From: Michael Tremer Date: Thu, 4 Mar 2021 22:51:05 +0000 (+0000) Subject: builder: Fall back into a shell if build fails X-Git-Tag: 0.9.28~1285^2~636 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb0a3b920d73f461440abd0196624e90790d71d4;p=pakfire.git builder: Fall back into a shell if build fails Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/builder.py b/src/pakfire/builder.py index e53ed4fbb..35918570f 100644 --- a/src/pakfire/builder.py +++ b/src/pakfire/builder.py @@ -46,7 +46,7 @@ log = logging.getLogger("pakfire.builder") from .system import system from .constants import * from .i18n import _ -from .errors import BuildError, Error +from .errors import * BUILD_LOG_HEADER = """ @@ -376,8 +376,19 @@ class BuilderContext(object): self.log.debug("Running stage '%s'" % stage) # Run it - self.pakfire.execute_script(script, logging_callback=self.log.log, - enable_network=False, interactive=False) + try: + self.pakfire.execute_script(script, logging_callback=self.log.log, + enable_network=False, interactive=False) + + # Handle if the build script failed + except CommandExecutionError as e: + # Drop into a shell if requested + if shell: + self.pakfire.execute(["/usr/bin/bash", "--login"], + environ=self.environ, enable_network=True, interactive=True) + + # Raise otherwise + raise e def shell(self, packages=[], install=None): archives = [] diff --git a/src/pakfire/errors.py b/src/pakfire/errors.py index 69ca8b872..ad33975e4 100644 --- a/src/pakfire/errors.py +++ b/src/pakfire/errors.py @@ -21,7 +21,10 @@ from .i18n import _ -from ._pakfire import DependencyError +from ._pakfire import ( + CommandExecutionError, + DependencyError, +) class commandTimeoutExpired(Exception): pass # XXX cannot be as is