Bug#630698: lintian: package-name-doesnt-match-sonames check does not look in /lib/${DEB_HOST_MULTIARCH}
Package: lintian
Version: 2.5.1
Severity: normal
Tags: patch
With ncurses built for multiarch (no public branch for that available
yet -- sorry), lintian spits out this warning:
,----
| W: libncurses5: package-name-doesnt-match-sonames libform5 libmenu5 libpanel5 libtic5
| N:
| N: The package name of a library package should usually reflect the soname
| N: of the included library. The package name can determined from the
| N: library file name with the following code snippet:
| N:
| N: $ objdump -p /path/to/libfoo-bar.so.1.2.3 | sed -n -e's/^[[:space:]]*SONAME[[:space:]]*//p' | sed -e's/\([0-9]\)\.so\./\1-/; s/\.so\.//'
| N:
| N: Refer to Debian Library Packaging Guide chapter 5 (shared library
| N: packages) for details.
| N:
| N: Severity: normal, Certainty: possible
| N:
| N: Check: binaries, Type: binary, udeb
| N:
`----
Note that the libraries lintian complains about are in
/usr/lib/i386-linux-gnu, while libncurses5 is in /lib/i386-linux-gnu:
,----
| $ dpkg-deb -c libncurses5_5.9-2_i386.deb
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./lib/
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./lib/i386-linux-gnu/
| -rw-r--r-- root/root 252780 2011-06-16 11:44 ./lib/i386-linux-gnu/libncurses.so.5.9
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/lib/
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/
| -rw-r--r-- root/root 51444 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libtic.so.5.9
| -rw-r--r-- root/root 10740 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libpanel.so.5.9
| -rw-r--r-- root/root 28884 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libmenu.so.5.9
| -rw-r--r-- root/root 57964 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libform.so.5.9
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/share/
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/share/doc/
| drwxr-xr-x root/root 0 2011-06-16 11:44 ./usr/share/doc/libncurses5/
| -rw-r--r-- root/root 530 2011-06-13 15:49 ./usr/share/doc/libncurses5/TODO.Debian
| -rw-r--r-- root/root 2371 2011-06-13 15:49 ./usr/share/doc/libncurses5/FAQ
| -rw-r--r-- root/root 6366 2011-06-13 15:49 ./usr/share/doc/libncurses5/copyright
| -rw-r--r-- root/root 17282 2011-06-13 15:49 ./usr/share/doc/libncurses5/changelog.Debian.gz
| -rw-r--r-- root/root 160818 2011-06-13 15:49 ./usr/share/doc/libncurses5/changelog.gz
| lrwxrwxrwx root/root 0 2011-06-16 11:44 ./lib/i386-linux-gnu/libncurses.so.5 -> libncurses.so.5.9
| lrwxrwxrwx root/root 0 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libmenu.so.5 -> libmenu.so.5.9
| lrwxrwxrwx root/root 0 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libpanel.so.5 -> libpanel.so.5.9
| lrwxrwxrwx root/root 0 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libtic.so.5 -> libtic.so.5.9
| lrwxrwxrwx root/root 0 2011-06-16 11:44 ./usr/lib/i386-linux-gnu/libform.so.5 -> libform.so.5.9
`----
If libncurses.so.5.9 is moved to /usr/lib/i386-linux-gnu as well, the
warning disappears.
It seems this happens because lib_soname_path (in checks/binaries) only
looks in /usr/lib/${DEB_HOST_MULTIARCH} and not
/lib/${DEB_HOST_MULTIARCH}. The following patch works for me:
--8<---------------cut here---------------start------------->8---
diff --git a/checks/binaries b/checks/binaries
index 7f1fa74..f70b7a8 100644
--- a/checks/binaries
+++ b/checks/binaries
@@ -189,6 +189,7 @@ sub lib_soname_path {
return 1 if $path =~ m%^(?:\.?/)?lib/[^/]+$%;
return 1 if $path =~ m%^(?:\.?/)?usr/lib/[^/]+$%;
return 1 if $path =~ m%^(?:\.?/)?usr/X11R6/lib/[^/]+$%;
+ return 1 if defined $dir && $path =~ m%(?:\.?/)?lib/$dir/[^/]++$%;
return 1 if defined $dir && $path =~ m%(?:\.?/)?usr/lib/$dir/[^/]++$%;
}
return 0;
--8<---------------cut here---------------end--------------->8---
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (101, 'experimental')
Architecture: i386 (x86_64)
Kernel: Linux 3.0.0-rc3-nouveau (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages lintian depends on:
ii binutils 2.21.52.20110606-2 The GNU assembler, linker and bina
ii bzip2 1.0.5-6 high-quality block-sorting file co
ii diffstat 1.54-1 produces graph of changes introduc
ii file 5.04-5+b1 Determines file type using "magic"
ii gettext 0.18.1.1-3 GNU Internationalization utilities
ii intltool-debian 0.35.0+20060710.1 Help i18n of RFC822 compliant conf
ii libapt-pkg-perl 0.1.24+b2 Perl interface to libapt-pkg
ii libclass-accessor-per 0.34-1 Perl module that automatically gen
ii libdigest-sha-perl 5.62-1 Perl extension for SHA-1/224/256/3
ii libdpkg-perl 1.16.1 Dpkg perl modules
ii libemail-valid-perl 0.184-1 Perl module for checking the valid
ii libipc-run-perl 0.89-1 Perl module for running processes
ii libparse-debianchange 1.2.0-1 parse Debian changelogs and output
ii libtimedate-perl 1.2000-1 collection of modules to manipulat
ii liburi-perl 1.58-1 module to manipulate and access UR
ii locales 2.13-7 Embedded GNU C Library: National L
ii man-db 2.6.0.2-1 on-line manual pager
ii perl [libdigest-sha-p 5.12.3-7+b1 Larry Wall's Practical Extraction
ii unzip 6.0-4 De-archiver for .zip files
lintian recommends no packages.
Versions of packages lintian suggests:
pn binutils-multiarch <none> (no description available)
ii dpkg-dev 1.16.1 Debian package development tools
ii libhtml-parser-perl 3.68-1+b1 collection of modules that parse H
ii libtext-template-perl 1.45-2 Text::Template perl module
ii man-db 2.6.0.2-1 on-line manual pager
ii xz-utils 5.0.0-2 XZ-format compression utilities
-- no debconf information
Reply to: