diff options
author | Allan McRae <allan@archlinux.org> | 2010-06-30 12:42:30 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2010-07-01 07:23:20 +0200 |
commit | 622326bb37a9f7eb1db27ac0166e791d7a949e0c (patch) | |
tree | 5090c56497570fb5def7201f7ca5d8068788d3f6 | |
parent | 68dff73463dd06d2055bcbd48be9bc74e786be5c (diff) | |
download | pacman-622326bb37a9f7eb1db27ac0166e791d7a949e0c.tar.gz pacman-622326bb37a9f7eb1db27ac0166e791d7a949e0c.tar.xz |
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>
-rw-r--r-- | scripts/makepkg.sh.in | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index f3c72172..516e1d7c 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -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() { |