The following commit has been merged in the master branch:
commit 5ee2d60084f43f1b51907e77dd9f07dc4d810618
Author: Raphael Hertzog <[email protected]>
Date:   Sun Mar 8 19:13:49 2009 +0100

    dpkg-shlibdeps: make shlibs.local override symbols files too
    
    As discussed in http://lists.debian.org/debian-devel/2009/03/msg00428.html
    dropping the shlibs.local package override for symbols files was not
    necessarily a good idea. So this commit makes dpkg-shlibdeps skip
    the symbols files for a library if it detects that the relevant dependency
    is available in the shlibs.local file.

diff --git a/man/dpkg-shlibdeps.1 b/man/dpkg-shlibdeps.1
index 7a37db6..06fbb9f 100644
--- a/man/dpkg-shlibdeps.1
+++ b/man/dpkg-shlibdeps.1
@@ -35,7 +35,8 @@ Then, for each library, it looks up either the
 .I symbols
 file, or the
 .I shlibs
-file (if the former doesn't exist). Both files are supposed to be provided
+file (if the former doesn't exist or if debian/shlibs.local contains
+the relevant dependency). Both files are supposed to be provided
 by the library package and should thus be available as
 /var/lib/dpkg/info/\fIpackage\fR.\fIsymbols\fR
 or /var/lib/dpkg/info/\fIpackage\fR.\fIshlibs\fR. The package name is
diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl
index 8f4836d..1356451 100755
--- a/scripts/dpkg-shlibdeps.pl
+++ b/scripts/dpkg-shlibdeps.pl
@@ -199,8 +199,15 @@ foreach my $file (keys %exec) {
        # Load symbols/shlibs files from packages providing libraries
        foreach my $pkg (@{$file2pkg->{$lib}}) {
            my $symfile_path;
-           if ($packagetype eq "deb") {
+            my $haslocaldep = 0;
+            if (-e $shlibslocal and
+                defined(extract_from_shlibs($soname, $shlibslocal)))
+            {
+                $haslocaldep = 1;
+            }
+            if ($packagetype eq "deb" and not $haslocaldep) {
                # Use fine-grained dependencies only on real deb
+                # and only if the dependency is not provided by shlibs.local
                $symfile_path = find_symbols_file($pkg, $soname, $lib);
             }
             if (defined($symfile_path)) {

-- 
dpkg's main repository


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

Reply via email to