aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Blin <dev@blino.org>2015-11-19 01:07:46 +0100
committerOlivier Blin <dev@blino.org>2015-11-19 01:07:46 +0100
commit308c3cbba0d90f7f5888feaba134dfa493339692 (patch)
tree8263f1a867251e56525b74d1ca79dafbb5663471
parent3088944f597db6a886a55b1cb9078b4fe6db3a85 (diff)
downloadiurt-308c3cbba0d90f7f5888feaba134dfa493339692.tar
iurt-308c3cbba0d90f7f5888feaba134dfa493339692.tar.gz
iurt-308c3cbba0d90f7f5888feaba134dfa493339692.tar.bz2
iurt-308c3cbba0d90f7f5888feaba134dfa493339692.tar.xz
iurt-308c3cbba0d90f7f5888feaba134dfa493339692.zip
ulri: on failure, check all target arches for .fail files
-rw-r--r--lib/Iurt/File.pm25
-rwxr-xr-xulri4
2 files changed, 22 insertions, 7 deletions
diff --git a/lib/Iurt/File.pm b/lib/Iurt/File.pm
index b91ec2c..71165c6 100644
--- a/lib/Iurt/File.pm
+++ b/lib/Iurt/File.pm
@@ -63,18 +63,33 @@ sub check_upload_tree {
}
sub cleanup_failed_build {
- my ($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $arch, $config) = @_;
+ my ($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $config) = @_;
+ my $fatal_failure;
my $mandatory_arch = get_mandatory_arch($config, $ent->{target});
- my $fatal_failure = member($arch, @$mandatory_arch) || $arch eq 'noarch';
+ my $arch_list = get_target_arch($config, $ent->{target});
+ my @failed_arches;
+ foreach my $arch (@$arch_list, "noarch") {
+ if (-f "$done_dir/${prefix}_$arch.fail") {
+ push @failed_arches, $arch;
+ if (member($arch, @$mandatory_arch, "noarch")) {
+ plog('DEBUG', "failure for mandatory arch $arch, aborting build");
+ $fatal_failure = 1;
+ } else {
+ plog('DEBUG', "failure for non-mandatory arch $arch");
+ }
+ }
+ }
+
+ return unless @failed_arches;
my ($failed_rpms, $kept_rpms);
if ($fatal_failure) {
- plog('DEBUG', "failure is for mandatory arch $arch, aborting build");
$failed_rpms = $ent->{rpms};
} else {
- plog('DEBUG', "failure is for non-mandatory arch $arch, keeping other builds going");
- ($failed_rpms, $kept_rpms) = partition { /\.$arch\.rpm$/ } @{$ent->{rpms}};
+ plog('DEBUG', "no fatal failure, keeping other builds going");
+ my $failed_arch_pattern = join("|", @failed_arches);
+ ($failed_rpms, $kept_rpms) = partition { /\.($failed_arch_pattern)\.rpm$/ } @{$ent->{rpms}};
}
foreach my $rpm (@$failed_rpms) {
diff --git a/ulri b/ulri
index 277f231..ee5980e 100755
--- a/ulri
+++ b/ulri
@@ -430,7 +430,7 @@ foreach my $prefix (keys %pkg_tree) {
ssh($remote, "rm -rf $prefix_dir");
if (-d "$fail_dir/$prefix") {
# Other arch had failed
- cleanup_failed_build($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $arch, $config);
+ cleanup_failed_build($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $config);
} else {
$something_finished = 1;
}
@@ -492,7 +492,7 @@ foreach my $prefix (keys %pkg_tree) {
$compildone->{$prefix}{$media}{$arch} = 0;
}
- cleanup_failed_build($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $arch, $config);
+ cleanup_failed_build($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $config);
# Notify user if build failed
#