makepkg: fix sudo/su calling of pacman

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 when using
su.  This also unifies the generation of the pacman line and its
privilege escalation.

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

Original-work-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2010-06-30 20:42:30 +10:00 committed by Dan McGee
parent 68dff73463
commit 622326bb37
1 changed files with 6 additions and 7 deletions

View File

@ -368,17 +368,16 @@ download_file() {
}
run_pacman() {
local ret=0
local cmd
printf -v cmd "%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() {