[pacman-dev] [PATCH 2/2] makepkg: allow to specify an alternative pacman command
Allan McRae
allan at archlinux.org
Thu Nov 19 23:14:53 EST 2009
Cedric Staniewski wrote:
> If PACMAN environment variable is set, makepkg will try to use this
> command to check for installed dependencies and to install or remove
> packages. Otherwise, makepkg will fall back to pacman.
>
> Implements FS#13028.
>
> Signed-off-by: Cedric Staniewski <cedric at gmx.ca>
Looks good. A couple of comments below. We also need to document the
behaviour of the PACMAN environmental variable in the makepkg man page.
> ---
> scripts/makepkg.sh.in | 21 ++++++++++++---------
> 1 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 3b7966e..d05b608 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -333,10 +333,10 @@ download_file() {
>
> run_pacman() {
> local ret=0
> - if (( ! ASROOT )) && [[ $1 != "-T" ]]; then
> - sudo pacman $PACMAN_OPTS "$@" || ret=$?
> + if (( ! ASROOT )) && [[ $1 != "-T" ]] && sudo -l $PACMAN &>/dev/null; then
This change is behaviour in checking for sudo privileges needs to be a
separate patch.
> + sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
> else
> - pacman $PACMAN_OPTS "$@" || ret=$?
> + $PACMAN $PACMAN_OPTS "$@" || ret=$?
> fi
> return $ret
> }
> @@ -350,7 +350,7 @@ check_deps() {
> if (( ret == 127 )); then #unresolved deps
> echo "$pmout"
> elif (( ret )); then
> - error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout"
> + error "$(gettext "%s returned a fatal error (%i): %s")" "${PACMAN##*/}" "$ret" "$pmout"
Should we also strip any flags provided in the PACMAN variable? e.g. I
could set PACMAN="pacman -v" for verbose output. I guess some wrappers
might have flags that would be useful to specify.
> exit 1
> fi
> }
> @@ -372,7 +372,7 @@ handle_deps() {
> msg "$(gettext "Installing missing dependencies...")"
>
> if ! run_pacman -S --asdeps $deplist; then
> - error "$(gettext "Pacman failed to install missing dependencies.")"
> + error "$(gettext "%s failed to install missing dependencies.")" "${PACMAN##*/}"
> exit 1 # TODO: error code
> fi
> fi
> @@ -1100,9 +1100,9 @@ install_package() {
> (( ! INSTALL )) && return
>
> if (( ! SPLITPKG )); then
> - msg "$(gettext "Installing package ${pkgname} with pacman -U...")"
> + msg "$(gettext "Installing package %s with %s -U...")" "$pkgname" "$PACMAN"
> else
> - msg "$(gettext "Installing ${pkgbase} package group with pacman -U...")"
> + msg "$(gettext "Installing %s package group with %s -U...")" "$pkgbase" "$PACMAN"
> fi
>
> local pkglist
> @@ -1557,6 +1557,9 @@ if [[ -r ~/.makepkg.conf ]]; then
> source ~/.makepkg.conf
> fi
>
> +# set pacman command if not already defined
> +PACMAN=${PACMAN:-pacman}
> +
> # check if messages are to be printed using color
> unset ALL_OFF BOLD BLUE GREEN RED YELLOW
> if [[ -t 2 && ! $USE_COLOR = "n" && $(check_buildenv color) = "y" ]]; then
> @@ -1810,7 +1813,7 @@ if (( NODEPS || NOBUILD || REPKG )); then
> if (( NODEPS )); then
> warning "$(gettext "Skipping dependency checks.")"
> fi
> -elif [ $(type -p pacman) ]; then
> +elif [ $(type -p "$PACMAN") ]; then
> unset pkgdeps # Set by resolve_deps() and used by remove_deps()
> deperr=0
>
> @@ -1825,7 +1828,7 @@ elif [ $(type -p pacman) ]; then
> exit 1
> fi
> else
> - warning "$(gettext "pacman was not found in PATH; skipping dependency checks.")"
> + warning "$(gettext "%s was not found in PATH; skipping dependency checks.")" "$PACMAN"
> fi
>
> # ensure we have a sane umask set
More information about the pacman-dev
mailing list