Hi! A friend of mine recently ran into this issue too, so I tried to come up with a quick & dirty patch to make hooks abort the build if they fail. I haven't tested it yet, mind you. In any case, patch is attached. When I hear back from either my friend, or from anyone reading this, that the patch works, I'll clean it up and resubmit.
-- |8]
From 2fc906196c67cb71fb79f8e517b28d830f59d4fc Mon Sep 17 00:00:00 2001 From: Gergely Nagy <alger...@madhouse-project.org> Date: Fri, 29 May 2015 09:01:24 +0200 Subject: [PATCH] Sbuild::Build: Abort when a hook fails Signed-off-by: Gergely Nagy <alger...@madhouse-project.org> --- lib/Sbuild/Build.pm | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/lib/Sbuild/Build.pm b/lib/Sbuild/Build.pm index cda5cf3..00513a7 100644 --- a/lib/Sbuild/Build.pm +++ b/lib/Sbuild/Build.pm @@ -367,9 +367,11 @@ sub run_chroot_session { # Run pre build external commands $self->check_abort(); - $self->run_external_commands("pre-build-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $returnval; + $returnval = $self->run_external_commands("pre-build-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); $self->check_abort(); if (!$session->begin_session()) { @@ -512,9 +514,10 @@ sub run_chroot_session_locked { # Run specified chroot setup commands $self->check_abort(); - $self->run_external_commands("chroot-setup-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $returnval = $self->run_external_commands("chroot-setup-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); $self->check_abort(); @@ -702,9 +705,11 @@ sub run_fetch_install_packages { # Run specified chroot cleanup commands $self->check_abort(); - $self->run_external_commands("chroot-cleanup-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $returnval = $self->run_external_commands("chroot-cleanup-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); + $self->check_abort(); if ($self->get('Pkg Status') eq "successful") { $self->log_subsection("Post Build"); @@ -715,9 +720,11 @@ sub run_fetch_install_packages { # Run post build external commands $self->check_abort(); - $self->run_external_commands("post-build-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $returnval = $self->run_external_commands("post-build-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); + $self->check_abort(); } }; @@ -1473,9 +1480,12 @@ sub build { return 0; } - $self->run_external_commands("starting-build-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $returnval; + $returnval = $self->run_external_commands("starting-build-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); + $self->check_abort(); $self->set('Build Start Time', time); $self->set('Build End Time', $self->get('Build Start Time')); @@ -1666,9 +1676,11 @@ sub build { $self->log("Build finished at $finish_date\n"); - $self->run_external_commands("finished-build-commands", - $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), - $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + my $retval = $self->run_external_commands("finished-build-commands", + $self->get_conf('LOG_EXTERNAL_COMMAND_OUTPUT'), + $self->get_conf('LOG_EXTERNAL_COMMAND_ERROR')); + $self->request_abort ("External command failed") if (!$returnval); + $self->check_abort(); my @space_files = ("$dscdir"); -- 2.1.4
signature.asc
Description: PGP signature