[pacman-dev] [PATCH 02/10] makepkg: do not ignore errors from pacman when checking deps

Andres P aepd87 at gmail.com
Fri Jun 25 19:16:37 EDT 2010


As check_deps is run in a subshell, exit had the same meaning as return.
Since the intention is to halt makepkg when pacman throws an error other than
127, the enclosing function has to handle error control instead.

Fixes FS#19840

Signed-off-by: Andres P <aepd87 at gmail.com>
---
 scripts/makepkg.sh.in |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 07fc6d5..02d9df8 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -399,7 +399,7 @@ check_deps() {
 		echo "$pmout"
 	elif (( ret )); then
 		error "$(gettext "'%s' returned a fatal error (%i): %s")" "$PACMAN" "$ret" "$pmout"
-		exit 1
+		return "$ret"
 	fi
 }
 
@@ -439,14 +439,15 @@ resolve_deps() {
 	local R_DEPS_SATISFIED=0
 	local R_DEPS_MISSING=1
 
-	local deplist="$(check_deps $*)"
-	if [[ -z $deplist ]]; then
-		return $R_DEPS_SATISFIED
-	fi
+	# deplist cannot be declared like this: local deplist=$(foo)
+	# Otherwise, the return value will depend on the assignment.
+	local deplist
+	deplist="$(set +E; check_deps $*)" || exit 1
+	[[ -z $deplist ]] && return $R_DEPS_SATISFIED
 
 	if handle_deps $deplist; then
 		# check deps again to make sure they were resolved
-		deplist="$(check_deps $*)"
+		deplist="$(set +E; check_deps $*)" || exit 1
 		[[ -z $deplist ]] && return $R_DEPS_SATISFIED
 	elif (( DEP_BIN )); then
 		error "$(gettext "Failed to install all missing dependencies.")"
-- 
1.7.1



More information about the pacman-dev mailing list