fix(archroot): pass along the real command and argv by the caller
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>
This commit is contained in:
parent
4d3ab0b489
commit
41d4624879
|
@ -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
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue