Package: dpkg-dev
Version: 1.14.23
Severity: important
File: /usr/bin/dpkg-shlibdeps
Tags: patch

Hello,

when Build-Depends-Package is set in the symbols file, dpkg-shlibdeps always
combines main and all alternative dependency templates into resulting shlibs
substvar. It is done regardless which symbols with what dependency templates
actually matched. I'm marking this bug as important as it violates          
deb-symbols(5) specification and causes unexpected end result. The fix      
(attached) is very trivial 3-line fix though, it could even go to lenny.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (101, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.27-1-amd64 (SMP w/1 CPU core)
Locale: LANG=lt_LT.UTF-8, LC_CTYPE=lt_LT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages dpkg-dev depends on:
ii  binutils            2.18.1~cvs20080103-7 The GNU assembler, linker and bina
ii  bzip2               1.0.5-1              high-quality block-sorting file co
ii  cpio                2.9-14               GNU cpio -- a program to manage ar
ii  dpkg                1.14.23              Debian package management system
ii  libtimedate-perl    1.1600-9             Time and date functions for Perl
ii  lzma                4.43-14              Compression method of 7z format in
ii  make                3.81-5               The GNU version of the "make" util
ii  patch               2.5.9-5              Apply a diff file to an original
ii  perl [perl5]        5.10.0-18            Larry Wall's Practical Extraction 
ii  perl-modules        5.10.0-18            Core Perl modules

Versions of packages dpkg-dev recommends:
ii  build-essential               11.4       Informational list of build-essent
ii  gcc [c-compiler]              4:4.3.2-2  The GNU C compiler
ii  gcc-4.1 [c-compiler]          4.1.2-23   The GNU C compiler
ii  gcc-4.3 [c-compiler]          4.3.2-1    The GNU C compiler

Versions of packages dpkg-dev suggests:
pn  debian-keyring                <none>     (no description available)
ii  gnupg                         1.4.9-3    GNU privacy guard - a free PGP rep

-- no debconf information

>From 7a158372f1d19d5414525b72af2346f0a8d605ee Mon Sep 17 00:00:00 2001
From: Modestas Vainius <[EMAIL PROTECTED]>
Date: Sun, 30 Nov 2008 11:57:59 +0200
Subject: [PATCH] shlibdeps: do not combine all dependency templates when 
Build-Depends-Package is set.

Do not combine dependencies from main and all alternative templates
when Build-Depends-Package is set in the symbols file. The correct
behaviour is to update only existing dependencies with proper minver.

Signed-off-by: Modestas Vainius <[EMAIL PROTECTED]>
---
 scripts/dpkg-shlibdeps.pl |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl
index 82a9a01..e9e7a75 100755
--- a/scripts/dpkg-shlibdeps.pl
+++ b/scripts/dpkg-shlibdeps.pl
@@ -328,7 +328,7 @@ foreach my $file (keys %exec) {
            my $minver = get_min_version_from_deps($build_deps, $dev_pkg);
            if (defined $minver) {
                foreach my $dep ($symfile->get_dependencies($soname)) {
-                   update_dependency_version($dep, $minver);
+                   update_dependency_version($dep, $minver, 1);
                }
            }
        }
@@ -526,7 +526,7 @@ sub get_min_version_from_deps {
 }
 
 sub update_dependency_version {
-    my ($dep, $minver) = @_;
+    my ($dep, $minver, $existing_only) = @_;
     return if not defined($minver);
     foreach my $subdep (split /\s*,\s*/, $dep) {
        if (exists $dependencies{$cur_field}{$subdep} and
@@ -538,7 +538,7 @@ sub update_dependency_version {
            {
                $dependencies{$cur_field}{$subdep} = $minver;
            }
-       } else {
+       } elsif (!$existing_only) {
            $dependencies{$cur_field}{$subdep} = $minver;
        }
     }
-- 
1.5.6.5

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to