Allows you to specify an alternate command for running things as root,
such as OpenBSD's doas.

Signed-off-by: Drew DeVault <[email protected]>
---
 configure.ac          | 9 +++++++++
 scripts/Makefile.am   | 1 +
 scripts/makepkg.sh.in | 8 ++++----
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/configure.ac b/configure.ac
index 10e4415c..825b29b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -114,6 +114,12 @@ AC_ARG_WITH(scriptlet-shell,
                [set the full path to the shell used to run install 
scriptlets]),
        [SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=/bin/sh])
 
+# Help line for changing sudo command
+AC_ARG_WITH(sudo,
+       AS_HELP_STRING([--with-sudo=sudo],
+               [set the command used to run pacman as root]),
+       [SUDOCMD=$withval], [SUDOCMD=sudo])
+
 # Help line for ldconfig path
 AC_ARG_WITH(ldconfig,
        AS_HELP_STRING([--with-ldconfig=path],
@@ -509,6 +515,9 @@ AC_DEFINE_UNQUOTED([TEMPLATE_DIR], "$TEMPLATE_DIR", [The 
template directory used
 # Set makepkg split debugging symbol package suffix
 AC_SUBST(DEBUGSUFFIX)
 AC_DEFINE_UNQUOTED([DEBUGSUFFIX], "$DEBUGSUFFIX", [The suffix for debugging 
symbol packages used by makepkg])
+# Set sudo command
+AC_SUBST(SUDOCMD)
+AC_DEFINE_UNQUOTED([SUDOCMD], "$SUDOCMD", [The command used to run pacman as 
root])
 # Set shell used by install scriptlets
 AC_SUBST(SCRIPTLET_SHELL)
 AC_DEFINE_UNQUOTED([SCRIPTLET_SHELL], "$SCRIPTLET_SHELL", [The full path of 
the shell used to run install scriptlets])
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 4bb08a24..ccfe7384 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -148,6 +148,7 @@ edit = sed \
        -e 's|@BUILDSCRIPT[@]|$(BUILDSCRIPT)|g' \
        -e 's|@TEMPLATE_DIR[@]|$(TEMPLATE_DIR)|g' \
        -e 's|@DEBUGSUFFIX[@]|$(DEBUGSUFFIX)|g' \
+       -e 's|@SUDOCMD[@]|$(SUDOCMD)|g' \
        -e "s|@INODECMD[@]|$(INODECMD)|g" \
        -e "s|@OWNERCMD[@]|$(OWNERCMD)|g" \
        -e "s|@MODECMD[@]|$(MODECMD)|g" \
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 29408929..5128216a 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -212,8 +212,8 @@ run_pacman() {
                cmd=("$PACMAN_PATH" "$@")
        fi
        if [[ $1 != -@(T|Qq|Q) ]]; then
-               if type -p sudo >/dev/null; then
-                       cmd=(sudo "${cmd[@]}")
+               if type -p @SUDOCMD@ >/dev/null; then
+                       cmd=(@SUDOCMD@ "${cmd[@]}")
                else
                        cmd=(su root -c "$(printf '%q ' "${cmd[@]}")")
                fi
@@ -1015,8 +1015,8 @@ check_software() {
 
        # check for sudo if we will need it during makepkg execution
        if (( DEP_BIN || RMDEPS || INSTALL )); then
-               if ! type -p sudo >/dev/null; then
-                       warning "$(gettext "Cannot find the %s binary. Will use 
%s to acquire root privileges.")" "sudo" "su"
+               if ! type -p @SUDOCMD@ >/dev/null; then
+                       warning "$(gettext "Cannot find the %s binary. Will use 
%s to acquire root privileges.")" "@SUDOCMD@" "su"
                fi
        fi
 
-- 
2.12.0

Reply via email to