The following commit has been merged in the master branch:
commit 5fd387999d92ef1f47560980cffb54565a72a96b
Author: Raphael Hertzog <[email protected]>
Date:   Sun Mar 8 16:11:53 2009 +0100

    dpkg-shlibdeps: don't fail on binaries outside of a package's dir
    
    Dpkg 1.15.0 introduced a regression by trying to deduce the target
    directory in order to adjust some warnings. This check failed when
    dpkg-shlibdeps was run on files not (yet) installed in the package's
    directory (debian/package/). Fix that and emit a warning so that
    maintainers are encouraged to analyze the binaries once they have
    been installed in their target directory.

diff --git a/debian/changelog b/debian/changelog
index 5804574..71fa2d9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,8 @@ dpkg (1.15.1) UNRELEASED; urgency=low
     quilt).
   * Call quilt only once to apply all patches instead of once per patch
     when building 3.0 (quilt) source packages. Closes: #518453
+  * Fix dpkg-shlibdeps so that it works again when analyzing binaries
+    outside of package's directory. Closes: #518687
 
   [ Updated dselect translations ]
   * German (Sven Joachim).
diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl
index 0483f12..8f4836d 100755
--- a/scripts/dpkg-shlibdeps.pl
+++ b/scripts/dpkg-shlibdeps.pl
@@ -280,8 +280,14 @@ foreach my $file (keys %exec) {
     # Disable warnings about missing symbols when we have not been able to
     # find all libs
     my $disable_warnings = scalar(keys(%soname_notfound));
-    my $parent_dir = "/" . dirname(relative_to_pkg_root($file));
-    my $in_public_dir = (grep { $parent_dir eq $_ } @librarypaths) ? 1 : 0;
+    my $in_public_dir = 1;
+    if (my $relname = relative_to_pkg_root($file)) {
+        my $parent_dir = "/" . dirname($relname);
+        $in_public_dir = (grep { $parent_dir eq $_ } @librarypaths) ? 1 : 0;
+    } else {
+        warning(_g("binaries to analyze should already be " .
+                   "installed in their package's directory."));
+    }
     foreach my $sym ($obj->get_undefined_dynamic_symbols()) {
        my $name = $sym->{name};
        if ($sym->{version}) {

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to