Merge pull request #1855 from coolo/more_rebuildpacs

Fix rebuildpacs to trigger rpmlint-mini on polkit changes
This commit is contained in:
Stephan Kulow 2019-02-07 11:29:40 +01:00 committed by GitHub
commit 6d706a6a4b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,6 +25,7 @@ sub find_source_container($) {
for my $repodir (@repodirs) { for my $repodir (@repodirs) {
my @rpms = glob("$repodir/*-$pkg.rpm"); my @rpms = glob("$repodir/*-$pkg.rpm");
for my $rpm (@rpms) { for my $rpm (@rpms) {
# 1123 == Disturl # 1123 == Disturl
my %qq = Build::Rpm::rpmq( $rpm, qw{NAME 1123} ); my %qq = Build::Rpm::rpmq( $rpm, qw{NAME 1123} );
next if ( $qq{NAME}[0] ne $pkg ); next if ( $qq{NAME}[0] ne $pkg );
@ -86,6 +87,7 @@ my %parents = (
"kdebase4-openSUSE" => [qw(bundle-lang-kde)], "kdebase4-openSUSE" => [qw(bundle-lang-kde)],
"kernel-source" => [qw(perf)], "kernel-source" => [qw(perf)],
); );
# for subsets (staging projects) we need to remember which are ignored # for subsets (staging projects) we need to remember which are ignored
my %ignored; my %ignored;
@ -100,7 +102,8 @@ sub check_leaf_package($$) {
} }
my @lines = (); my @lines = ();
open( OSC, "osc api /build/$project/$repo/$arch/$package/_buildinfo?internal=1|" ); open( OSC,
"osc api /build/$project/$repo/$arch/$package/_buildinfo|" );
while (<OSC>) { while (<OSC>) {
chomp; chomp;
if (m/<subpack>(.*)</) { if (m/<subpack>(.*)</) {
@ -109,6 +112,7 @@ sub check_leaf_package($$) {
if (m/bdep name="([^"]*)"/) { if (m/bdep name="([^"]*)"/) {
my $parent = $leafed{$1}; my $parent = $leafed{$1};
if ( $parent && $parent ne "rpmlint-mini" ) { if ( $parent && $parent ne "rpmlint-mini" ) {
# I dislike grep # I dislike grep
unless ( grep { $_ eq $package } @{ $parents{$parent} } ) { unless ( grep { $_ eq $package } @{ $parents{$parent} } ) {
print "ADD $package to PARENT $parent!!\n"; print "ADD $package to PARENT $parent!!\n";
@ -141,8 +145,8 @@ sub check_leaf_package($$) {
} }
my %torebuild; my %torebuild;
check_leaf_package("rpmlint", \%torebuild);
check_leaf_package( "rpmlint-mini", \%torebuild ); check_leaf_package( "rpmlint-mini", \%torebuild );
check_leaf_package( "rpmlint", \%torebuild );
check_leaf_package( "branding-openSUSE", \%torebuild ); check_leaf_package( "branding-openSUSE", \%torebuild );
check_leaf_package( "glib2-branding-openSUSE", \%torebuild ); check_leaf_package( "glib2-branding-openSUSE", \%torebuild );
@ -156,7 +160,6 @@ check_leaf_package("bundle-lang-common", \%torebuild);
check_leaf_package( "bundle-lang-kde", \%torebuild ); check_leaf_package( "bundle-lang-kde", \%torebuild );
check_leaf_package( "bundle-lang-gnome", \%torebuild ); check_leaf_package( "bundle-lang-gnome", \%torebuild );
check_leaf_package( "installation-images-openSUSE", \%torebuild ); check_leaf_package( "installation-images-openSUSE", \%torebuild );
check_leaf_package("openSUSE-images", \%torebuild);
if (%torebuild) { if (%torebuild) {
my $api = "/build/$project?cmd=rebuild&repository=$repo&arch=$arch"; my $api = "/build/$project?cmd=rebuild&repository=$repo&arch=$arch";
for my $package ( sort keys %torebuild ) { for my $package ( sort keys %torebuild ) {
@ -167,7 +170,8 @@ if (%torebuild) {
system("osc api -X POST '$api'"); system("osc api -X POST '$api'");
} }
my $pfile = tempdir(CLEANUP => 1) . "/packages"; # the filename is important ;( my $pfile =
tempdir( CLEANUP => 1 ) . "/packages"; # the filename is important ;(
sub mirror_repo($$$) { sub mirror_repo($$$) {
@ -176,7 +180,8 @@ sub mirror_repo($$$) {
my $arch = shift; my $arch = shift;
# Old and new in single directory, but never deployed together. # Old and new in single directory, but never deployed together.
my $repodir = ($ENV{XDG_CACHE_HOME}||$ENV{HOME}."/.cache")."/openSUSE-release-tools/repository-meta/repo-$project-$repo-$arch"; my $repodir = ( $ENV{XDG_CACHE_HOME} || $ENV{HOME} . "/.cache" )
. "/openSUSE-release-tools/repository-meta/repo-$project-$repo-$arch";
mkdir($repodir); mkdir($repodir);
system( system(
@ -195,10 +200,8 @@ sub find_package_in_project($) {
return shift @packs; return shift @packs;
} }
# find a random package # find a random package
sub get_paths($$$) { sub get_paths($$$) {
my $project = shift; my $project = shift;
my $repo = shift; my $repo = shift;
@ -223,11 +226,17 @@ my @rpms;
for my $path (@$paths) { for my $path (@$paths) {
# openSUSE:Factory/ports is in the paths, but not a repo # openSUSE:Factory/ports is in the paths, but not a repo
if (system("osc api /build/$path->{'project'}/$path->{'repository'}/$arch > /dev/null 2>&1 ")) { if (
system(
"osc api /build/$path->{'project'}/$path->{'repository'}/$arch > /dev/null 2>&1 "
)
)
{
next; next;
} }
my $repodir = mirror_repo($path->{'project'}, $path->{'repository'}, $arch); my $repodir =
mirror_repo( $path->{'project'}, $path->{'repository'}, $arch );
push( @repodirs, $repodir ); push( @repodirs, $repodir );
push( @rpms, glob("$repodir/*.rpm") ); push( @rpms, glob("$repodir/*.rpm") );
} }
@ -274,15 +283,43 @@ while (<INSTALLCHECK>) {
s,(needed by [^ ]*)\-[^-]*\-[^-]*\.($rpmarch|noarch)$,$1,; s,(needed by [^ ]*)\-[^-]*\-[^-]*\.($rpmarch|noarch)$,$1,;
s,^\s*,,; s,^\s*,,;
# patterns are too spammy and rebuilding doesn't help # patterns are too spammy and rebuilding doesn't help
next if (grep { $_ eq $cproblem } qw( next
patterns-openSUSE patterns-base patterns-haskell if (
patterns-mate patterns-media patterns-yast grep { $_ eq $cproblem }
installation-images:Kubic fftw3:gnu-openmpi-hpc hdf5:mvapich2 qw(
hdf5:openmpi hdf5:serial scalapack:gnu-mvapich2-hpc fftw3:gnu-openmpi-hpc
scalapack:gnu-openmpi-hpc python-numpy:gnu-hpc hdf5:gnu-hpc
petsc:serial netcdf:serial netcdf:openmpi netcdf:gnu-hpc hdf5:gnu-mpich-hpc
netcdf:gnu-openmpi-hpc netcdf:gnu-mvapich2-hpc)); hdf5:gnu-mvapich2-hpc
hdf5:gnu-openmpi-hpc
hdf5:gnu-openmpi2-hpc
hdf5:gnu-openmpi3-hpc
hdf5:mvapich2
hdf5:openmpi
hdf5:serial
installation-images:Kubic
metis:gnu-hpc
netcdf:gnu-hpc
netcdf:gnu-mvapich2-hpc
netcdf:gnu-openmpi-hpc
netcdf:openmpi
netcdf:serial
patterns-base
patterns-haskell
patterns-mate
patterns-media
patterns-openSUSE
patterns-yast
petsc:serial
python-numpy:gnu-hpc
scalapack:gnu-mvapich2-hpc
scalapack:gnu-openmpi-hpc
warewulf:modules
python-scipy:gnu-hpc
)
);
$problems{$cproblem}->{$_} = 1; $problems{$cproblem}->{$_} = 1;
} }
@ -303,6 +340,7 @@ while (<PROBLEMS>) {
if (m,^$project/$repo/$arch/([^:]*):\s*(.*)$,) { if (m,^$project/$repo/$arch/([^:]*):\s*(.*)$,) {
my $package = $1; my $package = $1;
my $oproblem = $2; my $oproblem = $2;
# remember old problems for current project/repo # remember old problems for current project/repo
$oproblems{$package} = $oproblem; $oproblems{$package} = $oproblem;
} }
@ -332,6 +370,7 @@ for my $package (@packages) {
last if ( length($api) > 32767 ); last if ( length($api) > 32767 );
if ( !$problems{$package} ) { if ( !$problems{$package} ) {
# it can go # it can go
delete $oproblems{$package}; delete $oproblems{$package};
next; next;
@ -339,24 +378,24 @@ for my $package (@packages) {
my $oproblem = $oproblems{$package} || ''; my $oproblem = $oproblems{$package} || '';
if ( $problems{$package} eq $oproblem ) { if ( $problems{$package} eq $oproblem ) {
# rebuild won't help # rebuild won't help
next; next;
} }
$rebuildit = 1; $rebuildit = 1;
print "rebuild ", $package, ": ", print "rebuild ", $package, ": ", $problems{$package}, "\n";
$problems{ $package }, "\n";
$api .= "&package=" . uri_escape($package); $api .= "&package=" . uri_escape($package);
$oproblems{$package} = $problems{$package}; $oproblems{$package} = $problems{$package};
} }
open( PROBLEMS, ">problems" ); open( PROBLEMS, ">problems" );
# write all lines for other projects/repos as they are # write all lines for other projects/repos as they are
foreach (@other_problems) { foreach (@other_problems) {
print PROBLEMS $_, "\n"; print PROBLEMS $_, "\n";
} }
for my $package ( keys %oproblems ) { for my $package ( keys %oproblems ) {
print PROBLEMS "$project/$repo/$arch/" print PROBLEMS "$project/$repo/$arch/" . $package . ": "
. $package . ": "
. $oproblems{$package}, "\n"; . $oproblems{$package}, "\n";
} }
close(PROBLEMS); close(PROBLEMS);
@ -365,4 +404,3 @@ if ($rebuildit) {
print "API '$api'\n"; print "API '$api'\n";
system("osc api -X POST '$api'"); system("osc api -X POST '$api'");
} }