X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2FWB%2FQD.pm;h=83527bc5f9775010f7cdfd7654621d12a954566b;hb=246b04b67089feb618f0bcd5bb47fe9573ab1978;hp=01eea54354c1cb19862ff1543716447981462e3a;hpb=2864a2509a9a0f102182ffb3d5295f7563611fa0;p=wannabuild.git diff --git a/lib/WB/QD.pm b/lib/WB/QD.pm index 01eea54..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'}; @@ -109,15 +119,19 @@ sub readsourcebins { $srcs->{$k}->{'status'} = 'installed' if $srcs->{$k}->{'arch'} && $srcs->{$k}->{'arch'} eq 'all'; if (!$srcs->{$k}->{'for-us'} && $srcs->{$k}->{'status'} ne 'installed') { - $srcs->{$k}->{'status'} = 'auto-not-for-us'; + $srcs->{$k}->{'status'} = 'arch-not-in-arch-list'; } 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'} = 'not-for-us'; + $srcs->{$k}->{'status'} = 'packages-arch-specific'; next; } for my $bin (@{$srcs->{$k}->{'binary'}}) { @@ -127,11 +141,9 @@ sub readsourcebins { next SRCS; } if ($srcs->{$k}->{'pas'}) { - $srcs->{$k}->{'status'} = 'not-for-us'; - $srcs->{$k}->{'notes'} = 'packages-arch-specific'; + $srcs->{$k}->{'status'} = 'packages-arch-specific'; } else { - $srcs->{$k}->{'status'} = 'auto-not-for-us'; - $srcs->{$k}->{'notes'} = 'overwritten-by-arch-all'; + $srcs->{$k}->{'status'} = 'overwritten-by-arch-all'; } delete $srcs->{$k}->{'pas'}; }