From 3531533c2f703693b87e074dfbe8951b9bef910f Mon Sep 17 00:00:00 2001 From: Allan McRae Date: Tue, 13 Nov 2012 13:04:21 +1000 Subject: makepkg: save path to PACMAN and test availability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After we install dependencies, we source /etc/profile so that new elements get added to the path. As this can override any local setting of PATH, we store the full path of the PACMAN variable passed to makepkg. Also, add a check for PACMAN availability if it is needed to deal with any dependency operations. Reported-by: Martin Panter Signed-off-by: Allan McRae --- scripts/makepkg.sh.in | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 6b29bea8..3556cab0 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -874,9 +874,9 @@ source_has_signatures() { run_pacman() { local cmd if [[ ! $1 = -@(T|Qq) ]]; then - cmd=("$PACMAN" $PACMAN_OPTS "$@") + cmd=("$PACMAN_PATH" $PACMAN_OPTS "$@") else - cmd=("$PACMAN" "$@") + cmd=("$PACMAN_PATH" "$@") fi if (( ! ASROOT )) && [[ ! $1 = -@(T|Qq) ]]; then if type -p sudo >/dev/null; then @@ -2108,6 +2108,14 @@ check_software() { # check for needed software local ret=0 + # check for PACMAN if we need it + if (( ! INFAKEROOT && ( ! NODEPS || DEP_BIN || RMDEPS || INSTALL ) )); then + if [[ -z $PACMAN_PATH ]]; then + error "$(gettext "Cannot find the %s binary required for dependency operations.")" "$PACMAN" + ret=1 + fi + fi + # check for sudo if we will need it during makepkg execution if (( ! ( ASROOT || INFAKEROOT ) && ( DEP_BIN || RMDEPS || INSTALL ) )); then if ! type -p sudo >/dev/null; then @@ -2464,6 +2472,8 @@ fi # set pacman command if not already defined PACMAN=${PACMAN:-pacman} +# save full path to command as PATH may change when sourcing /etc/profile +PACMAN_PATH=$(type -P $PACMAN) || true # check if messages are to be printed using color unset ALL_OFF BOLD BLUE GREEN RED YELLOW @@ -2738,7 +2748,7 @@ if (( NODEPS || (NOBUILD && !DEP_BIN ) )); then if (( NODEPS )); then warning "$(gettext "Skipping dependency checks.")" fi -elif type -p "$PACMAN" >/dev/null; then +else if (( RMDEPS && ! INSTALL )); then original_pkglist=($(run_pacman -Qq)) # required by remove_dep fi @@ -2766,8 +2776,6 @@ elif type -p "$PACMAN" >/dev/null; then error "$(gettext "Could not resolve all dependencies.")" exit 1 fi -else - warning "$(gettext "%s was not found in %s; skipping dependency checks.")" "$PACMAN" "PATH" fi # ensure we have a sane umask set -- cgit v1.2.3-70-g09d2