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

Allan McRae allan at archlinux.org
Wed Jun 30 07:25:31 EDT 2010


On 30/06/10 21:18, Allan McRae wrote:
> 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 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() {



More information about the pacman-dev mailing list