From 58f33d2e90271a2f72e9954370ecff481161bfc0 Mon Sep 17 00:00:00 2001 From: Michele Locati Date: Mon, 23 Dec 2019 08:55:33 +0100 Subject: [PATCH] Abort if expandPackagesToBeInstalled fails Test: gd --- install-php-extensions | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/install-php-extensions b/install-php-extensions index 3a34029..6350e9e 100755 --- a/install-php-extensions +++ b/install-php-extensions @@ -560,10 +560,19 @@ buildRequiredPackageLists() { esac if test -n "$buildRequiredPackageLists_persistent"; then PACKAGES_PERSISTENT="$(expandPackagesToBeInstalled $buildRequiredPackageLists_persistent)" + if test -s "$IPE_ERRFILE"; then + cat "$IPE_ERRFILE" >&2 + exit 1 + fi fi if test -n "$buildRequiredPackageLists_volatile"; then + buildRequiredPackageLists_packages="$(expandPackagesToBeInstalled $buildRequiredPackageLists_volatile)" + if test -s "$IPE_ERRFILE"; then + cat "$IPE_ERRFILE" >&2 + exit 1 + fi resetIFS - for buildRequiredPackageLists_package in $(expandPackagesToBeInstalled $buildRequiredPackageLists_volatile); do + for buildRequiredPackageLists_package in $buildRequiredPackageLists_packages; do if ! stringInList "$buildRequiredPackageLists_package" "$PACKAGES_PERSISTENT"; then PACKAGES_VOLATILE="$PACKAGES_VOLATILE $buildRequiredPackageLists_package" fi @@ -585,9 +594,9 @@ expandPackagesToBeInstalled() { alpine) expandPackagesToBeInstalled_log="$(apk add --simulate $@ 2>&1 || printf '\nERROR: apk failed\n')" if test -n "$(printf '%s' "$expandPackagesToBeInstalled_log" | grep -E '^ERROR:')"; then - printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >&2 - printf '%s ' "$@" >&2 - printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >&2 + printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >"$IPE_ERRFILE" + printf '%s ' "$@" >>"$IPE_ERRFILE" + printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >>"$IPE_ERRFILE" exit 1 fi IFS=' @@ -602,9 +611,9 @@ expandPackagesToBeInstalled() { debian) expandPackagesToBeInstalled_log="$(DEBIAN_FRONTEND=noninteractive apt-get install -sy $@ 2>&1 || printf '\nE: apt-get failed\n')" if test -n "$(printf '%s' "$expandPackagesToBeInstalled_log" | grep -E '^E:')"; then - printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >&2 - printf '%s ' "$@" >&2 - printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >&2 + printf 'FAILED TO LIST THE WHOLE PACKAGE LIST FOR\n' >"$IPE_ERRFILE" + printf '%s ' "$@" >"$IPE_ERRFILE" + printf '\n\nCOMMAND OUTPUT:\n%s\n' "$expandPackagesToBeInstalled_log" >"$IPE_ERRFILE" exit 1 fi expandPackagesToBeInstalled_inNewPackages=0 @@ -1120,6 +1129,8 @@ cleanup() { } resetIFS +mkdir -p /tmp/src +IPE_ERRFILE="$(mktemp -p /tmp/src)" PHP_MAJMIN_VERSION=$(getPHPMajorMinor) case "$PHP_MAJMIN_VERSION" in 506 | 700 | 701 | 702 | 703 | 704) ;;