From 9a00bf144f6a3e67a23f40db13d3ad033a92795c Mon Sep 17 00:00:00 2001 From: Ben Kero Date: Mon, 16 May 2016 16:25:12 -0700 Subject: [PATCH] Revert "Revert "Properly fail/trap in eval_run_d"" and fix PIPESTATUS This reverts commit f07e33a2e9169265260f430a609baefa131f614c. This change reverts the revert while fixing the underlying issue -- $PIPESTATUS needed to be encapsulated in ${}s Change-Id: I1df06ffa7aecf4ea4b8e187dc756e9fc779786bc --- lib/common-functions | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/common-functions b/lib/common-functions index 0f1b25658..97305d602 100644 --- a/lib/common-functions +++ b/lib/common-functions @@ -113,12 +113,15 @@ function check_element () { # $1 is the hook to run # $2 is the regex to look for function eval_run_d () { - local TEMP=`run_d $1` - echo "$TEMP" - if [ `echo "$TEMP" | grep -s "$2"` ]; then - TEMP=`echo "$TEMP" | grep "$2"` - eval "$TEMP" - fi + local run_output=$(mktemp) + trap "rm -f $run_output; check_break after-error ${break_cmd:-bash}" ERR + run_d $1 $run_output + if grep -q "$2" $run_output; then + local temp=$(grep "$2" $run_output) + eval "$temp" + fi + rm $run_output + trap - ERR } # Usage: map_nbd $image @@ -194,9 +197,16 @@ function cleanup_image_dir () { # Run a directory of hooks outside the target (that is, no chrooting). function run_d() { check_element - check_break before-$1 bash + check_break before-$1 ${break_cmd:-bash} if [ -d ${TMP_HOOKS_PATH}/$1.d ] ; then - dib-run-parts ${TMP_HOOKS_PATH}/$1.d + if [ -n "$2" ]; then + dib-run-parts ${TMP_HOOKS_PATH}/$1.d | tee $2 + if [[ ${PIPESTATUS[0]} != 0 ]]; then + return 1 + fi + else + dib-run-parts ${TMP_HOOKS_PATH}/$1.d + fi fi check_break after-$1 bash }