MantisBT - Doomseeker
View Issue Details
0003242Doomseeker[All Projects] Bugpublic2017-09-01 15:392018-10-27 22:53
WubTheCaptain 
Blzut3 
normalminoralways
closedfixed 
x86_64Debian GNU/Linuxbuster/sid
1.1 
1.21.2 
0003242: libwadseeker: Doesn't distinguish version from ELF shared object filename, ABI cannot safely change
Libwadseeker builds into a shared object named libwadseeker.so. For compatibility and to avoid breaking some systems with multiple versions of Libwadseeker, the shared object should be named according to its version e.g. libwadseeker.so.1 and/or libwadseeker.so.1.1, alternatively libwadseeker-1.1.so and/or libwadseeker-1.so.

Lintian warning tag: shlib-without-versioned-soname (severity normal, certainty possible)
Present in debian.drdteam.org binary builds and debuild source builds at /usr/lib/libwadseeker.so (tested with Doomseeker source).
I'm not entirely sure if this is an upstream issue of development practice, a packaging issue which downstream should always handle or me not calling CMake or debuild correctly.

'https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-depends [^]'

'https://www.debian.org/doc/debian-policy/ch-files.html#s-libraries [^]'

'https://lintian.debian.org/tags/shlib-without-versioned-soname.html [^]'
No tags attached.
related to 0003546closed Blzut3 DRD Team's Debian Package Repository: Lintian warning package-name-doesnt-match-sonames libwadseeker1 
child of 0003246acknowledged  Debian packaging 
log readelf.log (3,971) 2017-09-01 15:51
https://zandronum.com/tracker/file_download.php?file_id=2187&type=bug
Issue History
2017-09-01 15:39WubTheCaptainNew Issue
2017-09-01 15:45WubTheCaptainNote Added: 0018211
2017-09-01 15:51WubTheCaptainFile Added: readelf.log
2017-09-01 16:03WubTheCaptainNote Added: 0018212
2017-09-01 16:30ZalewaRelationship addedchild of 0003246
2017-09-18 07:50ZalewaNote Added: 0018310
2017-10-05 01:48WubTheCaptainStatusnew => acknowledged
2017-10-12 07:25WubTheCaptainNote Added: 0018544
2017-10-12 07:27WubTheCaptainNote Edited: 0018544bug_revision_view_page.php?bugnote_id=18544#r11136
2018-02-26 06:01Blzut3Assigned To => Blzut3
2018-02-26 06:01Blzut3Statusacknowledged => assigned
2018-02-26 06:01Blzut3Target Version => 1.2
2018-02-26 06:21Blzut3Note Added: 0019088
2018-02-26 06:21Blzut3Statusassigned => needs review
2018-02-26 06:56WubTheCaptainNote Added: 0019089
2018-02-26 07:00WubTheCaptainNote Added: 0019090
2018-02-26 07:00WubTheCaptainNote Edited: 0019090bug_revision_view_page.php?bugnote_id=19090#r11430
2018-02-26 07:03Blzut3Note Added: 0019091
2018-03-03 06:38WubTheCaptainStatusneeds review => needs testing
2018-03-03 06:42WubTheCaptainNote Added: 0019101
2018-03-03 06:42WubTheCaptainStatusneeds testing => needs review
2018-03-03 09:36Blzut3Note Added: 0019102
2018-03-03 16:53WubTheCaptainStatusneeds review => needs testing
2018-03-03 20:53ZalewaNote Added: 0019118
2018-03-03 21:00WubTheCaptainNote Added: 0019120
2018-03-03 21:00WubTheCaptainStatusneeds testing => resolved
2018-03-03 21:00WubTheCaptainFixed in Version => 1.2
2018-03-03 21:00WubTheCaptainResolutionopen => fixed
2018-10-08 09:23WubTheCaptainRelationship addedrelated to 0003546
2018-10-27 22:53WubTheCaptainStatusresolved => closed

Notes
(0018211)
WubTheCaptain   
2017-09-01 15:45   
Also the SONAME, not just the filename.
(0018212)
WubTheCaptain   
2017-09-01 16:03   
Engine libraries are also affected, but not yet caught by lintian because they live in /usr/share/doomseeker/engines instead of /usr/lib (issue 0003232).
(0018310)
Zalewa   
2017-09-18 07:50   
I think it will also be necessary to lock all exported symbols in Wadseeker namespace.
(0018544)
WubTheCaptain   
2017-10-12 07:25   
(edited on: 2017-10-12 07:27)
It may not be elegant, but a quick fix (without extensive testing) to this would be:

- set_target_properties(wadseeker PROPERTIES AUTOMOC ON)
+ set_target_properties(wadseeker PROPERTIES AUTOMOC ON VERSION 1.2)


in src/wadseeker/CMakeLists.txt. This created libwadseeker.so to be a symlink to libwadseeker.so.1.2 with the appropriate SONAME.

I tried VERSION and SOVERSION in project() and set() too, that had no effect (despite me setting CMP0048 policy to NEW).

(0019088)
Blzut3   
2018-02-26 06:21   
'https://bitbucket.org/Doomseeker/doomseeker/commits/7ec904eabfa2c49d25e29b3d64251704198dcacb [^]'

Since your earlier note, the plugins have been moved to lib and lintian still doesn't care. Are you sure that the plugins need an SOVERSION? Right now Doomseeker implements its own cross platform ABI versioning check, so we wouldn't be doing anything with it anyway.
(0019089)
WubTheCaptain   
2018-02-26 06:56   
I'll have to check again, but at least earlier debuild(1) didn't use CPackDeb but the regular building process by default.
(0019090)
WubTheCaptain   
2018-02-26 07:00   
-	set(CPACK_DEBIAN_DOOMSEEKER_PACKAGE_DEPENDS "libwadseeker" PARENT_SCOPE)
+	#set(CPACK_DEBIAN_DOOMSEEKER_PACKAGE_DEPENDS "libwadseeker1" PARENT_SCOPE)


Both "#" and depends name change intended or not?

(0019091)
Blzut3   
2018-02-26 07:03   
The removal of the line yes (should be picked up by dpkg-shlibdep now that the SOVERSION is in place), the fact that I didn't actually remove the line no.
(0019101)
WubTheCaptain   
2018-03-03 06:42   
See Zalewa's comment on BitBucket on VERSION_STRING from WADSEEKER_LIBVERSION.
(0019102)
Blzut3   
2018-03-03 09:36   
Frankly I couldn't possibly care less about that style change. If Zalewa wants to change it to be done that way he can, but would suggest doing it next time versions are bumped.

I mean there is a reason I did it the way I did, but since the two forms are functionally identical it's not even worth debating since it could be decoupled later if the scenario I'm thinking of is even remotely relevant.
(0019118)
Zalewa   
2018-03-03 20:53   
Compiled this in Docker and 'readelf -d' says SONAME is libwadseeker.so.1

Lib and symlinks also appear to be correct:

root@30376b026750:/doomseeker# ls -la /usr/local/lib/x86_64-linux-gnu/ | grep wadseeker
lrwxrwxrwx 1 root root 17 Mar 3 20:48 libwadseeker.so -> libwadseeker.so.1
lrwxrwxrwx 1 root root 19 Mar 3 20:48 libwadseeker.so.1 -> libwadseeker.so.1.2
-rw-r--r-- 1 root root 925077 Mar 3 20:47 libwadseeker.so.1.2


So I think we can consider this as "tested".
(0019120)
WubTheCaptain   
2018-03-03 21:00   
I trust your test should be enough, Zalewa. I can't see why it wouldn't be with SONAME and filenames. Thank you.