On 05/03/10 12:57, Ray Kohler wrote:
I just came across a nuisance with this patch: it warns about the use
of su both inside, and outside, of the fakeroot run. Here's another
version that checks INFAKEROOT before printing that, such that it'll
only do so outside of the fakeroot.

From 94840c1c5f1fc0f3b4699bcb174f615042ff1cf1 Mon Sep 17 00:00:00 2001
From: Ray Kohler<[email protected]>
Date: Sat, 20 Feb 2010 21:08:25 -0500
Subject: [PATCH] makepkg: fall back to su if sudo is not available

Signed-off-by: Ray Kohler<[email protected]>
---
  scripts/makepkg.sh.in |   15 ++++++++-------
  1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 5bd294c..75ce7e9 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -344,8 +344,12 @@ download_file() {

  run_pacman() {
        local ret=0
-       if (( ! ASROOT ))&&  [[ $1 != "-T" ]]&&  sudo -l $PACMAN&>/dev/null; 
then
-               sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
+       if (( ! ASROOT ))&&  [[ $1 != "-T" ]]; then
+               if [ "$(type -p sudo)" ]&&  sudo -l $PACMAN&>/dev/null; then
+                       sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
+               else
+                       su -c "$PACMAN $PACMAN_OPTS $*" || ret=$?
+               fi
        else
                $PACMAN $PACMAN_OPTS "$@" || ret=$?
        fi
@@ -1687,12 +1691,9 @@ else
  fi

  # check for sudo if we will need it during makepkg execution
-if (( ! ASROOT&&  ( DEP_BIN || RMDEPS || INSTALL ) )); then
+if (( ! ( ASROOT || INFAKEROOT )&&  ( DEP_BIN || RMDEPS || INSTALL ) )); then
        if [ ! "$(type -p sudo)" ]; then
-               error "$(gettext "Cannot find the sudo binary! Is sudo 
installed?")"
-               plain "$(gettext "Missing dependencies cannot be installed or
removed as a normal user")"
-               plain "$(gettext "without sudo; install and configure sudo to
auto-resolve dependencies.")"


That message looked a bit ugly in a standard 80 wide terminal so I changed it to:

"Sudo can not be found. Using su to acquire root privileges."


Otherwise, this looks fine.  Pulled to my working branch.

Allan

Reply via email to