From 66c6d288fd44b2f148860c7abbd1ed56b31a9238 Mon Sep 17 00:00:00 2001
From: Cedric Staniewski <cedric@gmx.ca>
Date: Wed, 2 Dec 2009 19:04:32 +0100
Subject: makepkg: allow to specify an alternative pacman command

If PACMAN environment variable is set, makepkg will try to use this
command to check for installed dependencies and to install or remove
packages. Otherwise, makepkg will fall back to pacman.

Implements FS#13028.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: move envvar section in manpage]
Signed-off-by: Dan McGee <dan@archlinux.org>
---
 doc/makepkg.8.txt     |  9 +++++++++
 scripts/makepkg.sh.in | 19 +++++++++++--------
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 18ee6ed2..7e89fa27 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -170,6 +170,15 @@ separate utility 'versionpkg'. See linkman:PKGBUILD[5] for details on how to
 set up a development PKGBUILD.
 
 
+Environment Variables
+---------------------
+*PACMAN*::
+	The command that will be used to check for missing dependencies and to
+	install and remove packages. Pacman's -U, -T, -S and -Rns operations
+	must be supported by this command. If the variable is not set or
+	empty, makepkg will fall back to `pacman'.
+
+
 Configuration
 -------------
 See linkman:makepkg.conf[5] for more details on configuring makepkg using the
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ba2758ba..ef884b76 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -344,9 +344,9 @@ download_file() {
 run_pacman() {
 	local ret=0
 	if (( ! ASROOT )) && [[ $1 != "-T" ]]; then
-		sudo pacman $PACMAN_OPTS "$@" || ret=$?
+		sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
 	else
-		pacman $PACMAN_OPTS "$@" || ret=$?
+		$PACMAN $PACMAN_OPTS "$@" || ret=$?
 	fi
 	return $ret
 }
@@ -360,7 +360,7 @@ check_deps() {
 	if (( ret == 127 )); then #unresolved deps
 		echo "$pmout"
 	elif (( ret )); then
-		error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout"
+		error "$(gettext "'%s' returned a fatal error (%i): %s")" "$PACMAN" "$ret" "$pmout"
 		exit 1
 	fi
 }
@@ -382,7 +382,7 @@ handle_deps() {
 		msg "$(gettext "Installing missing dependencies...")"
 
 		if ! run_pacman -S --asdeps $deplist; then
-			error "$(gettext "Pacman failed to install missing dependencies.")"
+			error "$(gettext "'%s' failed to install missing dependencies.")" "$PACMAN"
 			exit 1 # TODO: error code
 		fi
 	fi
@@ -1124,9 +1124,9 @@ install_package() {
 	(( ! INSTALL )) && return
 
 	if (( ! SPLITPKG )); then
-		msg "$(gettext "Installing package ${pkgname} with pacman -U...")"
+		msg "$(gettext "Installing package %s with %s -U...")" "$pkgname" "$PACMAN"
 	else
-		msg "$(gettext "Installing ${pkgbase} package group with pacman -U...")"
+		msg "$(gettext "Installing %s package group with %s -U...")" "$pkgbase" "$PACMAN"
 	fi
 
 	local pkglist
@@ -1592,6 +1592,9 @@ if [[ -r ~/.makepkg.conf ]]; then
 	source ~/.makepkg.conf
 fi
 
+# set pacman command if not already defined
+PACMAN=${PACMAN:-pacman}
+
 # check if messages are to be printed using color
 unset ALL_OFF BOLD BLUE GREEN RED YELLOW
 if [[ -t 2 && ! $USE_COLOR = "n" && $(check_buildenv color) = "y" ]]; then
@@ -1850,7 +1853,7 @@ if (( NODEPS || NOBUILD || REPKG )); then
 	if (( NODEPS )); then
 		warning "$(gettext "Skipping dependency checks.")"
 	fi
-elif [ $(type -p pacman) ]; then
+elif [ $(type -p "${PACMAN%% *}") ]; then
 	unset pkgdeps # Set by resolve_deps() and used by remove_deps()
 	deperr=0
 
@@ -1865,7 +1868,7 @@ elif [ $(type -p pacman) ]; then
 		exit 1
 	fi
 else
-	warning "$(gettext "pacman was not found in PATH; skipping dependency checks.")"
+	warning "$(gettext "%s was not found in PATH; skipping dependency checks.")" "${PACMAN%% *}"
 fi
 
 # ensure we have a sane umask set
-- 
cgit v1.2.3-70-g09d2