aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Iurt/File.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Iurt/File.pm')
-rw-r--r--lib/Iurt/File.pm25
1 files changed, 20 insertions, 5 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) {