In the presence of depwaits, the same source package may appear in both
%interesting_packages and %interesting_packages_depwait, leading to two
entries in dose-builddebcheck's input.  We must take care to keep these
distinct, otherwise dose-builddebcheck will fail.

This mostly restores previous name mangling which I had mistakenly
believed to be unnecessary when converting to dose-builddebcheck.
---
 bin/wanna-build | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/bin/wanna-build b/bin/wanna-build
index 9c1e161..2a6aeb1 100755
--- a/bin/wanna-build
+++ b/bin/wanna-build
@@ -1659,7 +1659,7 @@ sub explain_dose_dependency {
         $desc = 'depends on';
         $target = $dep->{'depends'};
     }
-    if ($pkg =~ s/^src://) {
+    if ($pkg =~ s/^src:(?:(?:source|depwait)---)?//) {
         return "$pkg build-$desc:\n- $target\n";
     } else {
         return "$pkg $desc:\n- $target\n";
@@ -1818,7 +1818,9 @@ sub call_dose_builddebcheck {
     my ($SOURCES, $tmpfile) = tempfile( $tmpfile_pattern, UNLINK => 1 );
     for my $key (keys %interesting_packages) {
        my $pkg = $db->{$key};
-       print $SOURCES "Package: $key\n";
+       # Prefix "source---" to make sure these are distinct from depwaits;
+       # the same source package may be present in both.
+       print $SOURCES "Package: source---$key\n";
        print $SOURCES "Version: $pkg->{'version'}\n";
         my $t = $srcs->{$key}{'dep'} || $srcs->{$key}{'depends'};
         my $tt = $pkg->{'extra_depends'};
@@ -1833,7 +1835,10 @@ sub call_dose_builddebcheck {
     }
     for my $key (keys %interesting_packages_depwait) {
        my $pkg = $db->{$key};
-       print $SOURCES "Package: $key\n";
+       # Prefix "depwait---" to make sure these are distinct from
+       # non-depwait checks; the same source package may be present in
+       # both.
+       print $SOURCES "Package: depwait---$key\n";
        print $SOURCES "Version: $pkg->{'version'}\n";
        print $SOURCES "Build-Depends: $pkg->{'depends'}\n";
        print $SOURCES "Architecture: all\n";
@@ -1844,17 +1849,19 @@ sub call_dose_builddebcheck {
     return if $simulate_dose;
     my $doseresults = wb_dose_builddebcheck({'arch' => $args->{'arch'}, 'pkgs' 
=> $args->{'pkgs'}, 'src' => $tmpfile});
     if (ref($doseresults) eq 'HASH') {
-        foreach my $key (keys %$doseresults) {
-               my $found = 0;
+        foreach my $key (grep { $_ =~ /^source---/ } keys %$doseresults) {
+               $key =~ s/^source---//;
                if (exists $interesting_packages{$key}) {
-                   $found = 1;
-                   $interesting_packages{$key} = $doseresults->{$key};
+                   $interesting_packages{$key} = 
$doseresults->{"source---".$key};
+               } else {
+                   #print "TODO: dose reported a package we do not care about 
now\n" if $verbose;
                }
+        }
+        foreach my $key (grep { $_ =~ /^depwait---/ } keys %$doseresults) {
+               $key =~ s/^depwait---//;
                if (exists $interesting_packages_depwait{$key}) {
-                   $found = 1;
-                   $interesting_packages_depwait{$key} = $doseresults->{$key};
-               }
-               unless ($found) {
+                   $interesting_packages_depwait{$key} = 
$doseresults->{"depwait---".$key};
+               } else {
                    #print "TODO: dose reported a package we do not care about 
now\n" if $verbose;
                }
         }
-- 
1.8.4.rc3


-- 
To UNSUBSCRIBE, email to debian-wb-team-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131002094627.gb24...@riva.ucam.org

Reply via email to