]> err.no Git - dpkg/commitdiff
dpkg-shlibdeps: handle the case where the same binary is listed multiple times
authorRaphael Hertzog <hertzog@debian.org>
Tue, 15 Jan 2008 09:43:28 +0000 (10:43 +0100)
committerRaphael Hertzog <hertzog@debian.org>
Tue, 15 Jan 2008 09:43:28 +0000 (10:43 +0100)
* scripts/dpkg-shlibdeps.pl: When the same binary is passed
several times as parameters (associated to different fields),
associate it to the most important field.

ChangeLog
debian/changelog
scripts/dpkg-shlibdeps.pl

index 78f6ec8f617b64b0b2917e62ba71fc19d7f77b7b..6ae225575d7ce7233bd2bf2eacc10e7066ddc29b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
        duplicated dependencies in fields of lesser priority. Dependencies
        coming from shlibs files have no associated version and this case
        wasn't handled properly.
+       * scripts/dpkg-shlibdeps.pl: When the same binary is passed
+       several times as parameters (associated to different fields),
+       associate it to the most important field.
 
 2008-01-14  Raphael Hertzog  <hertzog@debian.org>
 
index e8452bfa1dbce745c9493e1708708cbbc8db87e7..5778f49f692e4bcb2cbb470994b79dfcda8c99af 100644 (file)
@@ -33,6 +33,8 @@ dpkg (1.14.16) UNRELEASED; urgency=low
   * Add support of Dm-Upload-Allowed field. Closes: #453400
   * Fix dpkg-shlibdeps's filtering of duplicated dependencies in fields of
     lesser priority (when -d is used).
+  * Fix behaviour of dpkg-shlibdeps when the same binary was passed multiple
+    times for use in different dependency fields (-d option).
 
   [ Updated manpages translations ]
   * Fix typo in French. Closes: #460021
index 4b6a6e9d9da84f945768841fa3cc5303f3fad854..3d68585cc6ae02e794d51e828cb7df1d918ff688 100755 (executable)
@@ -72,7 +72,14 @@ foreach (@ARGV) {
        defined($depstrength{$dependencyfield}) ||
            warning(_g("unrecognised dependency field \`%s'"), $dependencyfield);
     } elsif (m/^-e(.*)$/) {
-       $exec{$1} = $dependencyfield;
+       if (exists $exec{$1}) {
+           # Affect the binary to the most important field
+           if ($depstrength{$dependencyfield} > $depstrength{$exec{$1}}) {
+               $exec{$1} = $dependencyfield;
+           }
+       } else {
+           $exec{$1} = $dependencyfield;
+       }
     } elsif (m/^--ignore-missing-info$/) {
        $ignore_missing_info = 1;
     } elsif (m/^-t(.*)$/) {
@@ -84,7 +91,14 @@ foreach (@ARGV) {
     } elsif (m/^-/) {
        usageerr(_g("unknown option \`%s'"), $_);
     } else {
-       $exec{$_} = $dependencyfield;
+       if (exists $exec{$_}) {
+           # Affect the binary to the most important field
+           if ($depstrength{$dependencyfield} > $depstrength{$exec{$_}}) {
+               $exec{$_} = $dependencyfield;
+           }
+       } else {
+           $exec{$_} = $dependencyfield;
+       }
     }
 }