From 942e23f14bb9cc0d416e57bac31a1bd3aa4fd4f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Thu, 22 Feb 2024 12:53:02 +0100 Subject: [PATCH 1/2] [backend] patchinfo: allow to skip updateinfo.xml generation To be able collect binaries without creating update meta information. OBS-298 --- docs/api/api/patchinfo.rng | 1 + src/backend/BSSched/BuildJob/Patchinfo.pm | 6 ++++-- src/backend/BSVerify.pm | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/api/api/patchinfo.rng b/docs/api/api/patchinfo.rng index 754dbd3f9d1..47a97c98fb8 100644 --- a/docs/api/api/patchinfo.rng +++ b/docs/api/api/patchinfo.rng @@ -133,6 +133,7 @@ optional feature ptf + no_updateinfo diff --git a/src/backend/BSSched/BuildJob/Patchinfo.pm b/src/backend/BSSched/BuildJob/Patchinfo.pm index c95e61071dc..7cb5d50ec27 100644 --- a/src/backend/BSSched/BuildJob/Patchinfo.pm +++ b/src/backend/BSSched/BuildJob/Patchinfo.pm @@ -719,8 +719,10 @@ sub build { }; $update->{'pkglist'} = {'collection' => [ $col ] }; $update->{'patchinforef'} = "$projid/$packid"; # deleted in publisher... - writexml("$jobdatadir/updateinfo.xml", undef, {'update' => [$update]}, $BSXML::updateinfo); - $bininfo->{'updateinfo.xml'} = genbininfo($jobdatadir, 'updateinfo.xml'); + if ($category ne 'no_updateinfo') { + writexml("$jobdatadir/updateinfo.xml", undef, {'update' => [$update]}, $BSXML::updateinfo); + $bininfo->{'updateinfo.xml'} = genbininfo($jobdatadir, 'updateinfo.xml'); + }; writestr("$jobdatadir/logfile", undef, "update built succeeded ".localtime($now)."\n"); $updateinfodata = { 'packages' => \@tocopy, diff --git a/src/backend/BSVerify.pm b/src/backend/BSVerify.pm index 2b60dd9c316..17a1e5419b6 100644 --- a/src/backend/BSVerify.pm +++ b/src/backend/BSVerify.pm @@ -111,7 +111,7 @@ sub verify_patchinfo { # This verifies the absolute minimum required content of a patchinfo file my $p = $_[0]; verify_filename($p->{'name'}) if defined($p->{'name'}); - my %allowed_categories = map {$_ => 1} qw{security recommended optional feature ptf}; + my %allowed_categories = map {$_ => 1} qw{security recommended optional feature ptf no_updateinfo}; die("Invalid category defined in _patchinfo\n") if defined($p->{'category'}) && !$allowed_categories{$p->{'category'}}; for my $rt (@{$p->{'releasetarget'} || []}) { verify_projid($rt->{'project'}); From 6e995214816b573b88464e9d6caaf3f9bbaefd81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Thu, 22 Feb 2024 14:18:04 +0100 Subject: [PATCH 2/2] [backend] patchinfo: add option to build on all schedulers --- docs/api/api/patchinfo.rng | 7 ++++++- src/backend/BSSched/BuildJob/Patchinfo.pm | 8 ++++++-- src/backend/BSXML.pm | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/api/api/patchinfo.rng b/docs/api/api/patchinfo.rng index 47a97c98fb8..b8060450d1b 100644 --- a/docs/api/api/patchinfo.rng +++ b/docs/api/api/patchinfo.rng @@ -75,7 +75,12 @@ - + + + + + + diff --git a/src/backend/BSSched/BuildJob/Patchinfo.pm b/src/backend/BSSched/BuildJob/Patchinfo.pm index 7cb5d50ec27..7b651d94d7a 100644 --- a/src/backend/BSSched/BuildJob/Patchinfo.pm +++ b/src/backend/BSSched/BuildJob/Patchinfo.pm @@ -110,10 +110,14 @@ sub check { my $myarch = $gctx->{'arch'}; my @archs = @{$repo->{'arch'}}; return ('broken', 'missing archs') unless @archs; # can't happen - my $buildarch = $archs[0]; # always build in first arch + my $patchinfo = $pdata->{'patchinfo'}; + if (exists $patchinfo->{'seperate_build_arch'}) { + # build on all schedulers, but don't take content from each other + @archs = ($myarch); + }; + my $buildarch = $archs[0]; my $reporoot = $gctx->{'reporoot'}; my $markerdir = "$reporoot/$prp/$buildarch/$packid"; - my $patchinfo = $pdata->{'patchinfo'}; my $projpacks = $gctx->{'projpacks'}; my $proj = $projpacks->{$projid} || {}; diff --git a/src/backend/BSXML.pm b/src/backend/BSXML.pm index 0698ba455ff..dab57db1fd2 100644 --- a/src/backend/BSXML.pm +++ b/src/backend/BSXML.pm @@ -268,6 +268,7 @@ our $patchinfo = [ 'packager', 'retracted', 'stopped', + 'seperate_build_arch', # for builds on each scheduler arch 'zypp_restart_needed', 'reboot_needed', 'relogin_needed',