[pacman-dev] Ideas welcome?

Cedric Staniewski cedric at gmx.ca
Wed Jun 30 08:08:25 EDT 2010


Dependency handling is a really useful feature, but I don't like the whole sudo/su thing. How about removing explicit support for sudo/su and leave it to the user to properly configure it for his needs? It could look similar to this:

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index cbc344d..2599e3c 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -369,12 +369,8 @@ download_file() {
 
 run_pacman() {
 	local ret=0
-	if (( ! ASROOT )) && [[ $1 != "-T" && $1 != "-Qq" ]]; then
-		if type -p sudo >/dev/null && sudo -l $PACMAN &>/dev/null; then
-			sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
-		else
-			su -c "$PACMAN $PACMAN_OPTS $*" || ret=$?
-		fi
+	if [[ $1 = "-T" || $1 = "-Qq" ]]; then
+		$PACMANBIN $PACMAN_OPTS "$@" || ret=$?
 	else
 		$PACMAN $PACMAN_OPTS "$@" || ret=$?
 	fi
@@ -1631,7 +1627,8 @@ if [[ -r ~/.makepkg.conf ]]; then
 fi
 
 # set pacman command if not already defined
-PACMAN=${PACMAN:-pacman}
+PACMANBIN=${PACMANBIN:-pacman}
+PACMAN=${PACMAN:-sudo $PACMANBIN}
 
 # check if messages are to be printed using color
 unset ALL_OFF BOLD BLUE GREEN RED YELLOW
@@ -1734,13 +1731,6 @@ else
 	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
-		warning "$(gettext "Sudo can not be found. Will use su to acquire root privileges.")"
-	fi
-fi
-
 unset pkgname pkgbase pkgver pkgrel pkgdesc url license groups provides
 unset md5sums replaces depends conflicts backup source install changelog build
 unset makedepends optdepends options noextract
@@ -1896,7 +1886,7 @@ if (( NODEPS || ( (NOBUILD || REPKG) && !DEP_BIN ) )); then
 	if (( NODEPS || ( REPKG && PKGFUNC ) )); then
 		warning "$(gettext "Skipping dependency checks.")"
 	fi
-elif type -p "${PACMAN%% *}" >/dev/null; then
+else
 	if (( RMDEPS )); then
 		original_pkglist=($(run_pacman -Qq))    # required by remove_dep
 	fi
@@ -1916,8 +1906,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 PATH; skipping dependency checks.")" "${PACMAN%% *}"
 fi
 
 # ensure we have a sane umask set
-- 
1.7.1



More information about the pacman-dev mailing list