X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lib%2FWB%2FQD.pm;h=83527bc5f9775010f7cdfd7654621d12a954566b;hb=246b04b67089feb618f0bcd5bb47fe9573ab1978;hp=6a1a067ba9bb110c2f9b5702f3d3b99f4eabf226;hpb=60ef83024a2b290ab1a92f103e5de52aa909a7a3;p=wannabuild.git diff --git a/lib/WB/QD.pm b/lib/WB/QD.pm index 6a1a067..83527bc 100644 --- a/lib/WB/QD.pm +++ b/lib/WB/QD.pm @@ -47,11 +47,9 @@ sub readsourcebins { /^Build-Conflicts:\s*(.*)$/mi and $p->{'conflicts'} = $1; next unless $p->{'name'} and $p->{'version'}; - next if $p->{'arch'} eq 'all'; foreach my $tarch (split(/\s+/, $p->{'arch'})) { $p->{'for-us'} = 1 if debarch_is($arch, $tarch); } - delete $p->{'arch'}; # ignore if package already exists with higher version if ($srcs->{$p->{'name'}}) { @@ -78,16 +76,28 @@ sub readsourcebins { /^Source:\s*(\S+)\s+\((\S+)\)$/mi and $p->{'source'} = $1 and $p->{'version'} = $2; # consider packages as non-existant if it's all but outdated + # arch:all and ver(binary) < ver(source) => skip next if $p->{'arch'} eq 'all' && $srcs->{$p->{'source'}} && $srcs->{$p->{'source'}}->{'version'} && vercmp($srcs->{$p->{'source'}}->{'version'}, $p->{'version'}) > 0; + # not for the current architecture or arch:all => skip next unless $p->{'arch'} eq 'all' || $p->{'arch'} eq ${arch}; - $binary->{$p->{'binary'}} = { 'version' => $p->{'version'}, 'arch' => $p->{'arch'}} unless $binary->{$p->{'binary'}} and vercmp($binary->{$p->{'binary'}}->{'version'}, $p->{'version'}) < 0; + # register the binary if there isn't a newer one in the hash yet + $binary->{$p->{'binary'}} = { 'version' => $p->{'version'}, 'arch' => $p->{'arch'}} + unless $binary->{$p->{'binary'}} and vercmp($binary->{$p->{'binary'}}->{'version'}, $p->{'version'}) < 0; #next if $pas->{$p->{'binary'}} && pasignore($pas->{$p->{'binary'}}, $arch); + + # only continue if it's arch-specific... next if $p->{'arch'} eq 'all'; + + # annotate the source package if present, continue otherwise next unless $srcs->{$p->{'source'}}; + $srcs->{$p->{'source'}}->{'compiled'} = 1; + + # TODO: ??? next unless $srcs->{$p->{'source'}}->{'version'} eq $p->{'version'}; $srcs->{$p->{'source'}}->{'installed'} = 1; + next unless $p->{'binnmu'}; next if ($srcs->{$p->{'source'}}->{'binnmu'}) && ($srcs->{$p->{'source'}}->{'binnmu'} > $p->{'binnmu'}); $srcs->{$p->{'source'}}->{'binnmu'} = $p->{'binnmu'}; @@ -113,9 +123,13 @@ sub readsourcebins { } delete $srcs->{$k}->{'for-us'}; - #my $p = $pas->{$k}; - #$p ||= $pas->{'%'.$k}; - #$srcs->{$k}->{'status'} = 'not-for-us' if pasignore($p, $arch); + if ($srcs->{$k}->{'arch'} eq 'all') { + $srcs->{$k}->{'status'} = 'arch-all-only'; + delete $srcs->{$k}->{'arch'}; + next; + } + delete $srcs->{$k}->{'arch'}; + if (pasignore($pas->{'%'.$k}, $arch)) { $srcs->{$k}->{'status'} = 'packages-arch-specific'; next;