diff --git a/checkcore.pl b/checkcore.pl index 3904b59b..5455ea52 100755 --- a/checkcore.pl +++ b/checkcore.pl @@ -11,7 +11,7 @@ my $baseurl = "https://build.opensuse.org"; my %ringed; my %toignore; -for my $i (qw(kernel-syms kernel-xen glibc.i686 openSUSE-release kernel-desktop kernel-default kernel-pae)) { +for my $i (qw(kernel-syms kernel-xen glibc.i686 openSUSE-release kernel-desktop kernel-default kernel-pae Test-DVD-x86_64 kiwi-image-livecd-gnome.x86_64 kiwi-image-livecd-kde.x86_64 package-lists-kde.x86_64 package-lists-gnome.x86_64)) { $toignore{$i} = 1; } @@ -24,13 +24,12 @@ sub fetch_api($) { } sub fetch_prj($) { - my $prj = shift; my $packages = XMLin(fetch_api("/status/project/$prj"))->{package}; my %ret; for my $p (keys %${packages}) { - next if defined $toignore{$p}; + next if defined $toignore{$p} || $p =~ /AGGR/; $ret{$p} = $packages->{$p}->{verifymd5} || $packages->{$p}->{srcmd5}; } return \%ret; @@ -44,11 +43,12 @@ sub check_ring($) { my $ring = fetch_prj($ringprj); PACKAGE: for my $p (keys %${ring}) { + #print "checking $ringprj $p $ring->{$p} $fact->{$p}\n"; if ($ringed{$p}) { print "osc rdelete $ringprj $p -m 'in two rings'\n"; next; } - $ringed{$p} = 1; + $ringed{$p} = $ring->{$p}; if ($ring->{$p} ne $fact->{$p}) { eval { @@ -56,7 +56,14 @@ PACKAGE: for my $p (keys %${ring}) { my $rxml = XMLin(fetch_api("/source/$ringprj/$p?view=info")); next if ($fxml->{verifymd5} eq $rxml->{verifymd5}); + }; + if ($@) { + print "# $@"; + print "osc rdelete -m 'gone away' $ringprj $p\n"; + next; + } + eval { my @ftext = split(/\n/, fetch_api("/source/openSUSE:Factory/$p/$p.changes?expand=1")); my @rtext = split(/\n/, fetch_api("/source/$ringprj/$p/$p.changes?expand=1")); @@ -75,9 +82,10 @@ PACKAGE: for my $p (keys %${ring}) { next PACKAGE; } } + }; + warn $@ if $@; #system("osc rdiff openSUSE:Factory $p openSUSE:Factory:Core $p"); print "osc linkpac -f -c openSUSE:Factory $p $ringprj\n"; - }; } } } @@ -87,3 +95,21 @@ check_ring("openSUSE:Factory:Core"); check_ring("openSUSE:Factory:MainDesktops"); check_ring("openSUSE:Factory:DVD"); +sub check_package($$$) { + my $package = shift; + my $spkg = shift; + my $tpkg = shift; + + my $p1 = XMLin(fetch_api("/source/$spkg/$package?expand=1")); + my $p2 = XMLin(fetch_api("/source/$tpkg/$package?expand=1")); + + return if ($p1->{verifymd5} eq $p2->{verifymd5}); + print "osc linkpac -f -r $p1->{srcmd5} $spkg $package $tpkg\n"; +} + +check_package('Test-DVD-x86_64', 'openSUSE:Factory', 'openSUSE:Factory:Core'); +check_package('kiwi-image-livecd-gnome.x86_64', 'openSUSE:Factory:Live', 'openSUSE:Factory:MainDesktops'); +check_package('kiwi-image-livecd-kde.x86_64', 'openSUSE:Factory:Live', 'openSUSE:Factory:MainDesktops'); +check_package('package-lists-gnome.x86_64', 'openSUSE:Factory:Live', 'openSUSE:Factory:MainDesktops'); +check_package('package-lists-kde.x86_64', 'openSUSE:Factory:Live', 'openSUSE:Factory:MainDesktops'); +