]> err.no Git - dpkg/commitdiff
dpkg-shlibdeps: some accuracy improvements for warnings about unused libraries
authorRaphael Hertzog <hertzog@debian.org>
Sun, 3 Feb 2008 17:54:00 +0000 (18:54 +0100)
committerRaphael Hertzog <hertzog@debian.org>
Sun, 3 Feb 2008 17:54:00 +0000 (18:54 +0100)
* scripts/dpkg-shlibdeps.pl: Handle better the case when the
library found has a different soname than the one used to look up
the library file. Properly affect symbols coming from it to the
soname wanted by the binary, thus avoiding invalid warnings about
unused library.

ChangeLog
debian/changelog
scripts/dpkg-shlibdeps.pl

index 3b0d1c7af303c577bbe0e762e7df9131370bb1ab..25f865035322b745f89274a757dda768abf31668 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-03  Raphael Hertzog  <hertzog@debian.org>
+
+       * scripts/dpkg-shlibdeps.pl: Handle better the case when the
+       library found has a different soname than the one used to look up
+       the library file. Properly affect symbols coming from it to the
+       soname wanted by the binary, thus avoiding invalid warnings about
+       unused library.
+
 2008-01-31  Raphael Hertzog  <hertzog@debian.org>
 
        * scripts/dpkg-genchanges.pl: Always list all binary packages in
index 6d44911c36dffff898defdb315dfb67d996cc116..ae313fb608c97502492e695ccc9ed9be5fbe827e 100644 (file)
@@ -27,6 +27,8 @@ dpkg (1.14.17) UNRELEASED; urgency=low
     files. It's nice for reviewers and mentors.debian.net was using this field
     on source only uploads to display short description of what the package is
     about.
+  * Handle the case when the library has a different SONAME than the one used
+    to find it. Closes: #462413
 
   [ Frank Lichtenheld ]
   * Add a warning in dpkg-buildpackage if the build-dependencies are not
index 3d68585cc6ae02e794d51e828cb7df1d918ff688..e60ed7f582766abe0d3975514f8b0aa34020dc5b 100755 (executable)
@@ -125,6 +125,7 @@ foreach my $file (keys %exec) {
     my %libfiles;
     my %altlibfiles;
     my %soname_notfound;
+    my %alt_soname;
     foreach my $soname (@sonames) {
        my $lib = my_find_library($soname, $obj->{RPATH}, $obj->{format}, $file);
        unless (defined $lib) {
@@ -194,6 +195,10 @@ foreach my $file (keys %exec) {
            } else {
                # No symbol file found, fall back to standard shlibs
                my $id = $dumplibs_wo_symfile->parse($lib);
+               if ($id ne $soname) {
+                   warning(_g("%s has an unexpected SONAME (%s)"), $lib, $id);
+                   $alt_soname{$id} = $soname;
+               }
                push @soname_wo_symfile, $soname;
                my $libobj = $dumplibs_wo_symfile->get_object($id);
                # Only try to generate a dependency for libraries with a SONAME
@@ -262,6 +267,10 @@ foreach my $file (keys %exec) {
                    }
                }
            } else {
+               if (exists $alt_soname{$syminfo->{soname}}) {
+                   # Also count usage on alternate soname
+                   $used_sonames{$alt_soname{$syminfo->{soname}}}++;
+               }
                $used_sonames{$syminfo->{soname}}++;
            }
        }