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 <[email protected]>


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


Reply via email to