--- builds_bin/update_repos 2014/10/11 16:43:16 1.78 +++ builds_bin/update_repos 2016/03/05 16:35:21 1.81 @@ -129,8 +129,8 @@ foreach my $ver ( sort { $a <=> $b } key %sources = (); %base = (); - @{$distrepo->{$ver}->{all_archs}} = ('noarch', @{$distrepo->{$ver}->{archs}}); - if ( grep $_ eq 'i386', @{$distrepo->{$ver}->{archs}} ) { + @{$distrepo->{$ver}->{all_archs}} = ('noarch', @{$distrepo->{$ver}->{'archs'}}); + if ( grep $_ eq 'i386', @{$distrepo->{$ver}->{'archs'}} ) { push @{$distrepo->{$ver}->{all_archs}}, ('i586', 'i686'); } @@ -139,7 +139,7 @@ foreach my $ver ( sort { $a <=> $b } key $bdir =~ s/~S/$distrepo->{$ver}->{repo}/; $bdir =~ s/~s/$ver/; $bdir =~ s/~C/$distrepo->{$ver}->{centos}/; - for my $arch ( @{$distrepo->{$ver}->{archs}}, 'SRPMS/' ) { + for my $arch ( @{$distrepo->{$ver}->{'archs'}}, 'SRPMS/' ) { my $adir = $bdir; if ( $arch eq 'SRPMS/' ) { $adir =~ s/~A.*//; @@ -162,13 +162,21 @@ foreach my $ver ( sort { $a <=> $b } key } next unless -d $adir; opendir DIR, $adir or next; - process_rpm("$adir$_", $ver, $baserepo->{$dir}) foreach readdir DIR; + my @txt = grep { /\.rpm$/ && -f "$adir/$_" } readdir DIR; closedir DIR; + if (scalar(@txt)) { + opendir DIR, $adir or next; + process_rpm("$adir$_", $ver, $baserepo->{$dir}) foreach readdir DIR; + closedir DIR; + } elsif ($baserepo->{$dir} eq 'epel') { + # EPEL 7 uses a structure with subfolders of first letter of package + find( { wanted => sub { process_rpm($_, $ver, $baserepo->{$dir}) if ($_ =~ m/\.rpm$/);}, no_chdir => 1, follow_fast => 1 }, $adir ); + } last unless $dir =~ m{~A}; } } - find( { wanted => sub { process_rpm($_, $ver, 'builds'); }, no_chdir => 1, follow_fast => 1 }, "$_" ) foreach @{$distrepo->{$ver}->{builds}}; - find( { wanted => sub { process_rpm($_, $ver, 'community'); }, no_chdir => 1, follow_fast => 1 }, $distrepo->{$ver}->{community} ) if $distrepo->{$ver}->{community}; + find( { wanted => sub { process_rpm($_, $ver, 'builds'); }, no_chdir => 1, follow_fast => 1 }, "$_" ) foreach @{$distrepo->{$ver}->{'builds'}}; + find( { wanted => sub { process_rpm($_, $ver, 'community'); }, no_chdir => 1, follow_fast => 1 }, $distrepo->{$ver}->{'community'} ) if $distrepo->{$ver}->{'community'}; foreach my $base ( sort keys %$rpms ) { next unless $rpms->{$base}->{rpms}; @@ -394,7 +402,7 @@ foreach my $ver ( sort { $a <=> $b } key foreach my $a ( keys %{$acnt->{$r}->{$p}} ) { if ( $a eq 'noarch' ) { my $p2 = ${$acnt->{$r}->{$p}->{$a}}[0]; - if ( ! $p2->{repos} && scalar @{$acnt->{$r}->{$p}->{$a}} != scalar @{$distrepo->{$ver}->{archs}} ) { + if ( ! $p2->{repos} && scalar @{$acnt->{$r}->{$p}->{$a}} != scalar @{$distrepo->{$ver}->{'archs'}} ) { $p2->{oldrepo} = $p2->{repo}; push @{$p2->{repos}}, $p2->{repo}; } @@ -452,7 +460,10 @@ foreach my $ver ( sort { $a <=> $b } key if ( $pkg->{src} ) { push @d, "${head}SRPMS/" . basename($pkg->{rpm}->filename); } elsif ( $pkg->{rpm}->arch eq 'noarch' ) { - push @d, map { "${head}$_/$tail" . basename($pkg->{rpm}->filename) } @{$distrepo->{$ver}->{archs}}; + push @d, map { "${head}$_/$tail" . basename($pkg->{rpm}->filename) } @{$distrepo->{$ver}->{'archs'}}; + } elsif ($ver>=10 && $pkg->{rpm}->arch =~ m{^(i[356]86)$} && $pkg->{arch} =~ m{^(x86_64)$} ) { + #add copy of i686 packages in x86_64 folder for SME>=10 + push @d, map { "${head}$_/$tail" . basename($pkg->{rpm}->filename) } @{$distrepo->{$ver}->{'archs'}}; } elsif ( $pkg->{rpm}->arch =~ m{^(i[356]86)$} ) { push @d, "${head}i386/$tail" . basename($pkg->{rpm}->filename); } else { @@ -496,7 +507,7 @@ foreach my $ver ( sort { $a <=> $b } key } foreach my $repo ( sort { $repos->{$b}->{prio} <=> $repos->{$a}->{prio} } keys %repochg ) { next if $repos->{$repo}->{orig} || $repos->{$repo}->{stage}; - foreach my $arch ( @{$distrepo->{$ver}->{archs}} ) { + foreach my $arch ( @{$distrepo->{$ver}->{'archs'}} ) { my $dir = $distrepo->{$ver}->{repo} . "$repo/$arch"; $dir = qx(readlink -f $dir); if ( $dir ) { @@ -527,11 +538,11 @@ foreach my $ver ( sort { $a <=> $b } key } } unless ( $opts{t} ) { - foreach (@{$distrepo->{$ver}->{builds}}) + foreach (@{$distrepo->{$ver}->{'builds'}}) { finddepth(sub{rmdir}, "$_") if -d "$_"; } - finddepth(sub{rmdir}, $distrepo->{$ver}->{community}) if -d "$distrepo->{$ver}->{community}"; + finddepth(sub{rmdir}, $distrepo->{$ver}->{'community'}) if -d "$distrepo->{$ver}->{'community'}"; } }