X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lib%2FWB%2FQD.pm;h=8391fc3066d05f3547c35d01e78524b71f564b25;hb=4572e2d58812a9c5f422a8c2e2401c441d528bb;hp=16b030639a415dac11be23256c38fe473a82d43f;hpb=cb018bafa2daf315b94f07b5adcad1d59292ade0;p=wannabuild.git diff --git a/lib/WB/QD.pm b/lib/WB/QD.pm index 16b0306..8391fc3 100644 --- a/lib/WB/QD.pm +++ b/lib/WB/QD.pm @@ -3,6 +3,7 @@ package WB::QD; use strict; use IO::Uncompress::AnyInflate qw(anyinflate); use Dpkg::Version qw(vercmp); +use Dpkg::Arch qw(debarch_is); use Data::Dumper; sub readsourcebins { @@ -14,15 +15,15 @@ sub readsourcebins { my $pas = {}; local($/) = "\n"; - open(PAS, '<', $pasfile); - while() { + open(my $pas, '<', $pasfile); + while(<$pas>) { chomp; s,\s*#.*,,; next unless $_; my ($p, $c) = split(/:\s*/); $pas->{$p} = { arch => [ split(/\s+/, $c) ], mode => substr($c, 0, 1) ne '!' }; } - close PAS; + close $pas; my $srcs = {}; local($/) = ""; # read in paragraph mode @@ -42,15 +43,18 @@ sub readsourcebins { next unless $p->{'name'} and $p->{'version'}; next if $p->{'arch'} eq 'all'; - # TODO: respect the architecture - or not / we already respect it via P-a-s + 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'}}) { next if (vercmp($srcs->{$p->{'name'}}->{'version'}, $p->{'version'}) > 0); } - my @a = split(/,? /, $p->{'binary'}) if $p->{'binary'}; - $p->{'binary'} = \@a; + if ($p->{'binary'}) { + $p->{'binary'} = [ split(/,? /, $p->{'binary'}) ]; + } $srcs->{$p->{'name'}} = $p; } close $S; @@ -96,9 +100,15 @@ sub readsourcebins { } delete $srcs->{$k}->{'compiled'}; $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'; + } + delete $srcs->{$k}->{'for-us'}; - $srcs->{$k}->{'version'} = $srcs->{$k}->{'version'}."+b".$srcs->{$k}->{'binnmu'} if $srcs->{$k}->{'binnmu'}; - + #my $p = $pas->{$k}; + #$p ||= $pas->{'%'.$k}; + #$srcs->{$k}->{'status'} = 'not-for-us' if pasignore($p, $arch); if (pasignore($pas->{'%'.$k}, $arch)) { $srcs->{$k}->{'status'} = 'not-for-us'; next;