fix createyastdeps for rpm3 packages files
authorLudwig Nussel <ludwig.nussel@suse.de>
Thu, 15 Jan 2009 13:16:41 +0000 (13:16 +0000)
committerLudwig Nussel <ludwig.nussel@suse.de>
Thu, 15 Jan 2009 13:16:41 +0000 (13:16 +0000)
createyastdeps

index 077441b..0e796c9 100755 (executable)
@@ -21,12 +21,7 @@ sub print_pkg($)
          0);
   print sprintf('F:%s%ssuse/%s/%s',$id,$pkg->{'baseurl'},
     $pkg->{'arch'}, $pkg->{'location'}), "\n";
-
-  if(!$pkg->{'provides'}) # happens in 8.1 packages file
-  {
-    $pkg->{'provides'} = sprintf("%s = %s-%s", $pkg->{'name'}, $pkg->{'ver'}, $pkg->{'rel'});
-  }
-
+  
   print "P:$id".$pkg->{'provides'}."\n";
   print "R:$id".$pkg->{'requires'}."\n";
 
@@ -70,8 +65,15 @@ while (@ARGV)
   my $pkgs = Susetags::parse($packages, { 'Loc' => 'location', 'Prv' => 'provides', 'Req' => 'requires', 'Tim' => 'buildtime' }, \@order);
   foreach (@order) {
     my $pkg = $pkgs->{$_};
+    $pkg->{'provides'} = [] unless exists $pkg->{'provides'};
+    # add self provides (rpm3 misses that)
+    my $n = $pkg->{'name'};
+    if(substr($pkg->{'arch'}, -3) ne 'src' && !scalar grep(/^\Q$n\E( =.*)?$/,@{$pkg->{'provides'}}))
+    {
+      push @{$pkg->{'provides'}}, sprintf("%s = %s-%s", $pkg->{'name'}, $pkg->{'version'}, $pkg->{'release'});
+    }
     $pkg->{'provides'} = join(' ', @{$pkg->{'provides'}});
-    $pkg->{'requires'} = join(' ', @{$pkg->{'requires'}});
+    $pkg->{'requires'} = join(' ', @{$pkg->{'requires'}}) if $pkg->{'requires'};
     $pkg->{'baseurl'} = $url;
     my @data = split(' ', $pkg->{'location'});
     # multi cd support hack