[pacman-dev] [PATCH] makepkg: fix sudo/su calling of pacman

Allan McRae allan at archlinux.org
Wed Jun 30 07:18:05 EDT 2010


This fixes two issues:

1) using "sudo -l" results in excess password asking under certian
configurations.  Revert to the pre 3.4 behaviour of always using
sudo if it is installed.

2) Properly escape the command so that that versioned dependencies,
such as "foo>4", do not get treated as output redirection.  This
also unifies the generation of the pacman line and its privilege
escalation.

Based on patches supplied by Andres P <aepd87 at gmail.com> with minor
adjustments for suitability for the maint branch.

Signed-off-by: Allan McRae <allan at archlinux.org>
---

This is a fix for the maint branch.  The reworking of the privilege
escalation to a configurable option will need to go on the master
branch at a later date.

 scripts/makepkg.sh.in |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index f3c7217..25bbc74 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -368,17 +368,15 @@ download_file() {
 }
 
 run_pacman() {
-	local ret=0
+	local cmd=$(printf "%q " "$PACMAN" $PACMAN_OPTS "$@")
 	if (( ! ASROOT )) && [[ $1 != "-T" && $1 != "-Qq" ]]; then
-		if [ "$(type -p sudo)" ] && sudo -l $PACMAN &>/dev/null; then
-			sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
+		if [ "$(type -p sudo)" ]; then
+			cmd="sudo $cmd"
 		else
-			su -c "$PACMAN $PACMAN_OPTS $*" || ret=$?
+			cmd="su -c '$cmd'"
 		fi
-	else
-		$PACMAN $PACMAN_OPTS "$@" || ret=$?
 	fi
-	return $ret
+	eval "$cmd"
 }
 
 check_deps() {
-- 
1.7.1



More information about the pacman-dev mailing list