diff options
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | lib/Iurt/Queue.pm | 11 | ||||
-rwxr-xr-x | ulri | 5 |
3 files changed, 14 insertions, 4 deletions
@@ -1,3 +1,5 @@ +- ulri: only fail succesful arches if previous failure was from a mandatory + arch - emi: skip all posts for non finishers instead of hardcoding a list 0.6.27 diff --git a/lib/Iurt/Queue.pm b/lib/Iurt/Queue.pm index f6907e6..3f552b9 100644 --- a/lib/Iurt/Queue.pm +++ b/lib/Iurt/Queue.pm @@ -12,6 +12,7 @@ use strict; our @EXPORT = qw( get_upload_tree_state cleanup_failed_build + check_if_mandatory_arch_failed ); sub apply_to_upload_tree { @@ -52,7 +53,15 @@ sub apply_to_upload_tree { } } } - + +sub check_if_mandatory_arch_failed { + my ($done_dir, $prefix, $ent, $config) = @_; + my $mandatory_arch = get_mandatory_arch($config, $ent->{target}); + foreach my $arch (@$mandatory_arch) { + return 1 if -f "${done_dir}/${prefix}_${arch}.fail"; + } +} + sub cleanup_failed_build { my ($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $arch, $config) = @_; @@ -36,7 +36,7 @@ use MDK::Common qw(any cat_ if_ find); use Iurt::Config qw(config_usage get_date config_init get_author_email check_arch check_noarch); use Iurt::File qw(create_file); use Iurt::Process qw(check_pid); -use Iurt::Queue qw(cleanup_failed_build get_upload_tree_state); +use Iurt::Queue qw(check_if_mandatory_arch_failed cleanup_failed_build get_upload_tree_state); use Iurt::Mail qw(sendmail); use Iurt::Util qw(plog_init plog ssh_setup ssh sout sget sput); use Iurt::Ulri qw(build_package warn_about_failure); @@ -384,8 +384,7 @@ foreach my $prefix (keys %pkg_tree) { make_path("$done_dir/$prefix"); sget($remote, "$prefix_dir/log/*", "$done_dir/$prefix"); ssh($remote, "rm -rf $prefix_dir"); - if (-d "$fail_dir/$prefix") { - # Other arch had failed + if (check_if_mandatory_arch_failed($done_dir, $prefix, $ent, $config)) { cleanup_failed_build($todo_dir, $done_dir, $fail_dir, $prefix, $ent, $arch, $config); } else { $something_finished = 1; |