Package: yada
Version: 0.51
Severity: important
Tags: patch

There is problem with YADA if the package provides the shared library and the 
binary which uses the library.

I.e.:

Package: test
Install: sh
 yada install -lib test/libtest.so.0.1
 yada install -bin test/testbin
 yada make-shlibs

The result is the binary package with dependency on itself.

Package: test
Depends: libc6 (>= 2.3.6-6), test

it should be:

Package: test
Depends: libc6 (>= 2.3.6-6)

The provided patch modifies YADA, so it generates debian/shlibs.local file for 
currently processed binary package and makes that dpkg-shlibdeps ignores the 
shared libraries from this binary package.

-- 
 .''`.    Piotr Roszatycki
: :' :    mailto:[EMAIL PROTECTED]
`. `'     mailto:[EMAIL PROTECTED]
  `-
--- debian/yada	(revision 355)
+++ debian/yada	(local)
@@ -1604,11 +1604,17 @@
                   "\$\$LD_LIBRARY_PATH:debian/tmp-$pkg/lib:debian/tmp-$pkg/usr/lib";
                 foreach (sort {$binaryparanum{$a} <=> $binaryparanum{$b}} keys %binary)
                 {
-                    next if $_ eq $pkg;
-                    print OUT
-                      "\ttest -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs >> debian/shlibs.local || true\n"
-                      or die;
-                    $ldlp .= ":debian/tmp-$_/lib:debian/tmp-$_/usr/lib";
+                    if ($_ eq $pkg) {
+                        print OUT
+                          "\ttest -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs | while read lib ver pkg; do echo \$\$lib \$\$ver; done >> debian/shlibs.local || true\n"
+                          or die;
+                    }
+                    else {
+                        print OUT
+                          "\ttest -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs >> debian/shlibs.local || true\n"
+                          or die;
+                        $ldlp .= ":debian/tmp-$_/lib:debian/tmp-$_/usr/lib";
+                    }
                 }
                 print OUT
                   "\tLD_LIBRARY_PATH=\"$ldlp\" dpkg-shlibdeps -pshlibs:"
@@ -2674,10 +2680,16 @@
     if (@filelist) {
         &run('rm', '-f', 'debian/shlibs.local');
         for (sort {$binaryparanum{$a} <=> $binaryparanum{$b}} keys %binary) {
-            next if $_ eq $PACKAGE;
-            &run('sh', '-c',
-                "test -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs >> debian/shlibs.local || true"
-            );
+            if ($_ eq $PACKAGE) {
+                &run('sh', '-c',
+                    "test -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs | while read lib ver pkg; do echo \$lib \$ver; done >> debian/shlibs.local || true"
+                );
+            }
+            else {
+                &run('sh', '-c',
+                    "test -f debian/tmp-$_/DEBIAN/shlibs && cat debian/tmp-$_/DEBIAN/shlibs >> debian/shlibs.local || true"
+                );
+            }
         }
         &run("dpkg-shlibdeps", "-pshlibs:" . &normalise($PACKAGE),
             @ARGV, @filelist);

Reply via email to