check_root function reexecute the running script with sudo (or su) and needs all arguments to be untouched. So we have to run it before args parsing, which may call shift. Thanks to Jan Steffens for reporting it. --- arch-nspawn.in | 3 ++- archbuild.in | 4 ++-- makechrootpkg.in | 4 ++-- mkarchroot.in | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index 4436a0e..f0517de 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -10,6 +10,8 @@ m4_include(lib/common.sh) +check_root "$0" "$@" + CHROOT_VERSION='v3' working_dir='' @@ -38,7 +40,6 @@ done shift $(($OPTIND - 1)) (( $# < 1 )) && die 'You must specify a directory.' -check_root "$0" "$@" working_dir=$(readlink -f "$1") shift 1 diff --git a/archbuild.in b/archbuild.in index ae2f511..e0e03ee 100644 --- a/archbuild.in +++ b/archbuild.in @@ -2,6 +2,8 @@ m4_include(lib/common.sh) +check_root "$0" "$@" + base_packages=(base-devel) makechrootpkg_args=(-c -n) @@ -40,8 +42,6 @@ done # Pass all arguments after -- right to makepkg makechrootpkg_args+=("${@:$OPTIND}") -check_root "$0" "$@" - if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then msg "Creating chroot for [${repo}] (${arch})..." diff --git a/makechrootpkg.in b/makechrootpkg.in index 97c7780..dbfe946 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -10,6 +10,8 @@ m4_include(lib/common.sh) +check_root "$0" "$@" + shopt -s nullglob makepkg_args='-s --noconfirm -L --holdver' @@ -81,8 +83,6 @@ while getopts 'hcur:I:l:nTD:d:' arg; do esac done -check_root "$0" "$@" - [[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.' # Canonicalize chrootdir, getting rid of trailing / diff --git a/mkarchroot.in b/mkarchroot.in index fb472bc..e0fbeef 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -10,6 +10,8 @@ m4_include(lib/common.sh) +check_root "$0" "$@" + CHROOT_VERSION='v3' working_dir='' @@ -37,8 +39,6 @@ shift $(($OPTIND - 1)) (( $# < 2 )) && die 'You must specify a directory and one or more packages.' -check_root "$0" "$@" - working_dir="$(readlink -f $1)" shift 1 -- Sébastien "Seblu" Luttringer