From: Marcus Hüwe Date: Thu, 15 Jan 2009 12:40:30 +0000 (+0000) Subject: - fixed #466047 (handle multiple packages of same name/arch in repo) X-Git-Tag: obs_2.0~291 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f65e840ef36b6a780a9a5475f126952b9be271c1;p=tools%2Fobs-build.git - fixed #466047 (handle multiple packages of same name/arch in repo) --- diff --git a/Susetags.pm b/Susetags.pm index f14f977..d927441 100644 --- a/Susetags.pm +++ b/Susetags.pm @@ -4,6 +4,16 @@ use strict; use warnings; use Data::Dumper; +sub addpkg { + my ($pkgs, $cur, $order, @arches) = @_; + if (defined($cur) && (!@arches || grep { /$cur->{'arch'}/ } @arches)) { + my $k = "$cur->{'name'}-$cur->{'version'}-$cur->{'release'}-$cur->{'arch'}"; + $pkgs->{$k} = $cur; + # keep order (or should we use Tie::IxHash?) + push @{$order}, $k if defined $order; + } +} + sub parse { my ($file, $tmap, $order, @arches) = @_; # if @arches is empty take all arches @@ -30,17 +40,14 @@ sub parse { push @{$cur->{$tmap->{$tag}}}, $_; } } elsif ($tag eq 'Pkg') { - $pkgs->{"$cur->{'name'}-$cur->{'arch'}"} = $cur if defined $cur && (!@arches || grep { /$cur->{'arch'}/ } @arches); - # keep order (or should we use Tie::IxHash?) - push @{$order}, "$cur->{'name'}-$cur->{'arch'}" if defined $order && defined $cur; + addpkg($pkgs, $cur, $order, @arches); $cur = {}; ($cur->{'name'}, $cur->{'version'}, $cur->{'release'}, $cur->{'arch'}) = split(' ', $data); } else { $cur->{$tmap->{$tag}} = $data; } } - $pkgs->{"$cur->{'name'}-$cur->{'arch'}"} = $cur if defined $cur && (!@arches || grep { /$cur->{'arch'}/ } @arches); - push @{$order}, "$cur->{'name'}-$cur->{'arch'}" if defined $order && defined $cur; + addpkg($pkgs, $cur, $order, @arches); close(F); return $pkgs; }