Implements FS#13028. Signed-off-by: Cedric Staniewski <cedric@gmx.ca> --- doc/makepkg.conf.5.txt | 6 ++++++ scripts/makepkg.sh.in | 20 ++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt index 704dccc..617ec84 100644 --- a/doc/makepkg.conf.5.txt +++ b/doc/makepkg.conf.5.txt @@ -178,6 +178,12 @@ Options *PKGEXT*, *SRCEXT*:: Do not touch these unless you know what you are doing. +*PACMAN*:: + The command which will be used to check for missing dependencies and to + install and remove packages. Pacman's -U, -T, -S and -Rns operations + must be supported by this command. If no command is specified, makepkg + will fall back to `pacman'. + See Also -------- diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 125b4e0..9463601 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -77,6 +77,7 @@ SPLITPKG=0 # when dealing with svn/cvs/etc PKGBUILDs. FORCE_VER="" +PACMAN= PACMAN_OPTS= ### SUBROUTINES ### @@ -331,9 +332,9 @@ download_file() { run_pacman() { local ret=0 if (( ! ASROOT )); then - sudo pacman $PACMAN_OPTS "$@" || ret=$? + sudo $PACMAN $PACMAN_OPTS "$@" || ret=$? else - pacman $PACMAN_OPTS "$@" || ret=$? + $PACMAN $PACMAN_OPTS "$@" || ret=$? fi return $ret } @@ -347,7 +348,7 @@ check_deps() { if [ $ret -eq 127 ]; then #unresolved deps echo "$pmout" elif [ $ret -ne 0 ]; then - error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout" + error "$(gettext "%s returned a fatal error (%i): %s")" "$PACMAN" "$ret" "$pmout" exit 1 fi } @@ -369,7 +370,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 @@ -1097,9 +1098,9 @@ install_package() { [ "$INSTALL" -eq 0 ] && return if [ "$SPLITPKG" -eq 0 ]; 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 @@ -1550,6 +1551,9 @@ if [ -r ~/.makepkg.conf ]; then source ~/.makepkg.conf fi +# set pacman command if not defined in config files +PACMAN=${PACMAN:-pacman} + # check if messages are to be printed using color unset ALL_OFF BOLD BLUE GREEN RED YELLOW if [ -t 2 -a ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then @@ -1796,7 +1800,7 @@ if [ "$NODEPS" -eq 1 -o "$NOBUILD" -eq 1 -o "$REPKG" -eq 1 ]; then if [ "$NODEPS" -eq 1 ]; 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 @@ -1811,7 +1815,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 -- 1.6.5.2