]> git.donarmstrong.com Git - wannabuild.git/blobdiff - lib/WB/QD.pm
Newer versions of Dpkg::Version export version_compare instead of vercmp.
[wannabuild.git] / lib / WB / QD.pm
index 16b030639a415dac11be23256c38fe473a82d43f..48ae97902b84e661ff9631f39b171e83af94afbd 100644 (file)
@@ -2,7 +2,13 @@ package WB::QD;
 
 use strict;
 use IO::Uncompress::AnyInflate qw(anyinflate);
-use Dpkg::Version qw(vercmp);
+use Dpkg::Version (); # import nothing
+if ( defined $Dpkg::Version::VERSION ) {
+    *vercmp = \&Dpkg::Version::version_compare;
+} else {
+    *vercmp = \&Dpkg::Version::vercmp;
+}
+use Dpkg::Arch qw(debarch_is);
 use Data::Dumper;
 
 sub readsourcebins {
@@ -14,15 +20,15 @@ sub readsourcebins {
 
     my $pas = {};
     local($/) = "\n";
-    open(PAS, '<', $pasfile);
-    while(<PAS>) {
+    open(my $pasf, '<', $pasfile);
+    while(<$pasf>) {
         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 $pasf;
 
     my $srcs = {};
     local($/) = ""; # read in paragraph mode
@@ -42,15 +48,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 +105,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;