From f91002b68120fc6855231a0b69deab5518ba1129 Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Tue, 25 Feb 2025 17:52:23 +0000 Subject: [PATCH] Abort execution on non-0 exit status from "after" scripts Failures in "after" scripts do not currently result in bootstrap failures since "find" ignores the exit code of commands that it executes. There are no simple options in "find" to both propagate non-0 exit statuses of executed commands and also abort its command execution sequence in such an event. As such, use "find" only for listing script names and otherwise use a simple loop to execute them. While at it, execute scripts in numerical order according to their basename. This gives consumers control over the execution order of their scripts. For example, 50-sign.sh will be executed before 51-upload.sh. --- steps/improve/after.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/steps/improve/after.sh b/steps/improve/after.sh index 16213a2a..4777bcb5 100644 --- a/steps/improve/after.sh +++ b/steps/improve/after.sh @@ -1,6 +1,7 @@ #!/bin/sh # # SPDX-FileCopyrightText: 2024 Gábor Stefanik +# SPDX-FileCopyrightText: 2025 Dor Askayo # # SPDX-License-Identifier: GPL-3.0-or-later # @@ -10,7 +11,10 @@ . /steps/env if [ -d /steps/after ]; then - find /steps/after -maxdepth 1 -name '*.sh' -exec bash {} \; + after_scripts=$(find /steps/after -maxdepth 1 -type f -name '*.sh' -printf '%f\t%p\n' | sort -k1 -n | cut -f2) + for script in $after_scripts; do + bash "$script" + done fi if [ "${INTERACTIVE}" = True ]; then