summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2023-05-20 00:20:41 +0200
committerLevente Polyak <anthraxx@archlinux.org>2023-05-20 00:20:41 +0200
commit41d4624879d01b1269d6af9c1440592a15ad7784 (patch)
tree51dddceb749e2cb8c8bfbe9138cc58fb604b0d94
parent4d3ab0b489f05565cec0a741564f8ba6ec57a9d6 (diff)
downloaddevtools-41d4624879d01b1269d6af9c1440592a15ad7784.tar.xz
fix(archroot): pass along the real command and argv by the caller1.0.0rc1
Before modularizing the repo layout, we used m4_include to assemble together sources into a single file. Now, we properly use a library layout without assembling multiple files, which means we cannot anymore rely on BASH_SOURCE inside the library file. Hence, pass along the actual command and argv from the check_root caller. Fixes: src: modularize repo layout into a library Signed-off-by: Morten Linderud <foxboron@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
-rw-r--r--src/arch-nspawn.in2
-rw-r--r--src/archbuild.in2
-rw-r--r--src/lib/archroot.sh5
-rw-r--r--src/makechrootpkg.in2
-rw-r--r--src/makerepropkg.in2
-rw-r--r--src/mkarchroot.in2
6 files changed, 8 insertions, 7 deletions
diff --git a/src/arch-nspawn.in b/src/arch-nspawn.in
index 77a27ad..b692817 100644
--- a/src/arch-nspawn.in
+++ b/src/arch-nspawn.in
@@ -46,7 +46,7 @@ done
shift $((OPTIND - 1))
(( $# < 1 )) && die 'You must specify a directory.'
-check_root
+check_root "" "${BASH_SOURCE[0]}" "$@"
working_dir=$(readlink -f "$1")
shift 1
diff --git a/src/archbuild.in b/src/archbuild.in
index a7e4231..2f3faf9 100644
--- a/src/archbuild.in
+++ b/src/archbuild.in
@@ -74,7 +74,7 @@ while getopts 'hcr:' arg; do
esac
done
-check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME
+check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME "${BASH_SOURCE[0]}" "$@"
# Pass all arguments after -- right to makepkg
makechrootpkg_args+=("${@:$OPTIND}")
diff --git a/src/lib/archroot.sh b/src/lib/archroot.sh
index d7917da..3f48dc1 100644
--- a/src/lib/archroot.sh
+++ b/src/lib/archroot.sh
@@ -9,13 +9,14 @@ CHROOT_VERSION='v4'
##
# usage : check_root $keepenv
##
-orig_argv=("${BASH_SOURCE[0]}" "$@")
check_root() {
local keepenv=$1
+ shift
+ local orig_argv=("$@")
(( EUID == 0 )) && return
if type -P sudo >/dev/null; then
- exec sudo --preserve-env=$keepenv -- "${orig_argv[@]}"
+ exec sudo --preserve-env="${keepenv}" -- "${orig_argv[@]}"
else
exec su root -c "$(printf ' %q' "${orig_argv[@]}")"
fi
diff --git a/src/makechrootpkg.in b/src/makechrootpkg.in
index 8d3d093..2cfd849 100644
--- a/src/makechrootpkg.in
+++ b/src/makechrootpkg.in
@@ -301,7 +301,7 @@ done
[[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.'
makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
-check_root SOURCE_DATE_EPOCH,BUILDTOOL,BUILDTOOLVER,GNUPGHOME,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER
+check_root SOURCE_DATE_EPOCH,BUILDTOOL,BUILDTOOLVER,GNUPGHOME,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER "${BASH_SOURCE[0]}" "$@"
# Canonicalize chrootdir, getting rid of trailing /
chrootdir=$(readlink -e "$passeddir")
diff --git a/src/makerepropkg.in b/src/makerepropkg.in
index f310c69..61ee9db 100644
--- a/src/makerepropkg.in
+++ b/src/makerepropkg.in
@@ -137,7 +137,7 @@ while getopts 'dM:c:l:h' arg; do
done
shift $((OPTIND - 1))
-check_root
+check_root "" "${BASH_SOURCE[0]}" "$@"
[[ -f PKGBUILD ]] || { error "No PKGBUILD in current directory."; exit 1; }
diff --git a/src/mkarchroot.in b/src/mkarchroot.in
index 6c8d8a2..610de16 100644
--- a/src/mkarchroot.in
+++ b/src/mkarchroot.in
@@ -52,7 +52,7 @@ shift $((OPTIND - 1))
(( $# < 2 )) && die 'You must specify a directory and one or more packages.'
-check_root
+check_root "" "${BASH_SOURCE[0]}" "$@"
working_dir="$(readlink -f "$1")"
shift 1