From be053c1ef4f64b106657902b3b37cd5e3c7ce22e Mon Sep 17 00:00:00 2001 From: Pascal Terjan Date: Tue, 11 Oct 2016 09:06:22 +0100 Subject: Fix reuse of {arch} part of the tree It is used by ulri for both builds in progress and already done, while emi expects it to be only for done ones. This causes to upload only part of mandatory arches and later reject the other. --- NEWS | 2 ++ lib/Iurt/Emi.pm | 4 ++-- lib/Iurt/Queue.pm | 4 ++-- t/emi_finisher.t | 4 ++-- t/emi_mandatory.t | 6 +++--- t/emi_non_mandatory.t | 10 +++++----- ulri | 4 +++- 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/NEWS b/NEWS index 3d92b62..c877321 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ - emi: fix a bug where genhdlist2 was skipped when doing a secondary upload containing a noarch at the same time as some other uploads +- fix reuse of {arch} part of the tree which is used by ulri for both builds + in progress and already done, while emi expects it to be only for done ones 0.6.26 - ulri: when failing to send a build to a machine do not try sending all the diff --git a/lib/Iurt/Emi.pm b/lib/Iurt/Emi.pm index b1bc619..a0ed76e 100644 --- a/lib/Iurt/Emi.pm +++ b/lib/Iurt/Emi.pm @@ -44,7 +44,7 @@ sub find_prefixes_ready_to_upload { foreach my $m (@wanted_archs, 'src') { $pkg_tree{$prefix}{media}{$media}{excluded_arch}{$m} and next; my $x = "yes"; - if (!$pkg_tree{$prefix}{media}{$media}{arch}{$m}) { + if (!$pkg_tree{$prefix}{media}{$media}{done_arch}{$m}) { $missing{$m} = 1; $x = "no"; $ok = 0; @@ -177,7 +177,7 @@ sub upload_prefix_in_media { # If we are here, mandatory arches are done, no need to check them my $mandatory_arch = get_mandatory_arch($config, $target); foreach my $arch (difference2(\@arch_list, $mandatory_arch)) { - next if $pkg_tree->{$prefix}{media}{$media}{arch}{$arch}; + next if $pkg_tree->{$prefix}{media}{$media}{done_arch}{$arch}; $all_done = 0; } } diff --git a/lib/Iurt/Queue.pm b/lib/Iurt/Queue.pm index bf1f4f6..f6907e6 100644 --- a/lib/Iurt/Queue.pm +++ b/lib/Iurt/Queue.pm @@ -181,7 +181,7 @@ sub get_upload_tree_state { plog('DEBUG', "found already built rpm $rpm ($prefix) for media $media"); $pkg_tree{$prefix}{target} = $f; if ($arch eq 'src') { - $pkg_tree{$prefix}{media}{$media}{arch}{src} = 1; + $pkg_tree{$prefix}{media}{$media}{done_arch}{src} = 1; } push @{$pkg_tree{$prefix}{media}{$media}{rpms}} , $rpm; push @{$pkg_tree{$prefix}{rpms}} , $rpm; @@ -189,7 +189,7 @@ sub get_upload_tree_state { my ($arch, $result) = ($1, $2); plog('DEBUG', "found .$result ($prefix) for $arch"); if ($result eq 'done') { - $pkg_tree{$prefix}{media}{$media}{arch}{$arch} = 1; + $pkg_tree{$prefix}{media}{$media}{done_arch}{$arch} = 1; } elsif ($result eq 'excluded') { $arch = $config->{arch_translation}{$arch} if $config->{arch_translation}{$arch}; $pkg_tree{$prefix}{media}{$media}{excluded_arch}{$arch} = 1; diff --git a/t/emi_finisher.t b/t/emi_finisher.t index b66a1be..8bfed63 100644 --- a/t/emi_finisher.t +++ b/t/emi_finisher.t @@ -12,7 +12,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'i586' => 1, 'x86_64' => 1, 'src' => 1 @@ -43,7 +43,7 @@ my %pkg_tree = ( 'media' => { 'core/release' => { 'uploaded' => 1, - 'arch' => { + 'done_arch' => { 'armv5tl' => 1, 'i586' => 1, 'x86_64' => 1, diff --git a/t/emi_mandatory.t b/t/emi_mandatory.t index e50d328..90ba2a2 100644 --- a/t/emi_mandatory.t +++ b/t/emi_mandatory.t @@ -12,7 +12,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'x86_64' => 1, 'src' => 1 }, @@ -34,7 +34,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'i586' => 1, 'x86_64' => 1, 'src' => 1 @@ -61,7 +61,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'x86_64' => 1, 'src' => 1 }, diff --git a/t/emi_non_mandatory.t b/t/emi_non_mandatory.t index 8aa2c94..44031f6 100644 --- a/t/emi_non_mandatory.t +++ b/t/emi_non_mandatory.t @@ -28,7 +28,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'armv5tl' => 1, 'x86_64' => 1, 'src' => 1 @@ -58,7 +58,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'armv5tl' => 1, 'i586' => 1, 'x86_64' => 1, @@ -93,7 +93,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'armv5tl' => 1, 'x86_64' => 1, 'src' => 1 @@ -127,7 +127,7 @@ my %pkg_tree = ( 'media' => { 'core/release' => { 'uploaded' => 1, - 'arch' => { + 'done_arch' => { 'armv5tl' => 1, 'i586' => 1, 'x86_64' => 1, @@ -154,7 +154,7 @@ my %pkg_tree = ( 'target' => 'cauldron', 'media' => { 'core/release' => { - 'arch' => { + 'done_arch' => { 'x86_64' => 1, 'src' => 1 }, diff --git a/ulri b/ulri index bd544b2..1e36f98 100755 --- a/ulri +++ b/ulri @@ -375,6 +375,7 @@ foreach my $prefix (keys %pkg_tree) { if ($done) { create_file("$done_dir/${prefix}_$arch.done", "$bot $host"); + $pkg_tree{$prefix}{media}{$media}{done_arch}{$arch} = 1; $success = 1; } @@ -491,9 +492,10 @@ foreach my $prefix (sort keys %pkg_tree) { # need to find a bot for each arch foreach my $arch (@arch_list) { # Skip this arch if the package is already building as noarch or for this arch - # or if it should not be built on this arch or it has already failed + # or if it should not be built on this arch or it has already failed or succeeded next if $pkg_tree{$prefix}{media}{$media}{arch}{noarch}; next if $pkg_tree{$prefix}{media}{$media}{arch}{$arch}; + next if $pkg_tree{$prefix}{media}{$media}{done_arch}{$arch}; next if $pkg_tree{$prefix}{media}{$media}{excluded_arch}{$arch}; next if $pkg_tree{$prefix}{media}{$media}{failed_arch}{$arch}; -- cgit v1.2.1