From 8dbf95cdd4858cccf43f7f176b44a0c1121df07b Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 13 Feb 2019 02:45:36 -0500 Subject: makechrootpkg: check truthiness using shell arithmetic Using the literal strings "true" and "false" is inaccurate and may result in uncertainty of whether it is set when doing string comparison, or simply rely on the shell implementation of treating the string as a command builtin, then executing the value as a shell command. Emulate makepkg, which makes heavy use of shell arithmetic for this purpose. Signed-off-by: Eli Schwartz Signed-off-by: Levente Polyak --- makechrootpkg.in | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/makechrootpkg.in b/makechrootpkg.in index 0d24ac2..d9369d4 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -17,17 +17,18 @@ shopt -s nullglob default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg) makepkg_args=("${default_makepkg_args[@]}") -keepbuilddir=false -update_first=false -clean_first=false -run_namcap=false -temp_chroot=false chrootdir= passeddir= makepkg_user= declare -a install_pkgs declare -i ret=0 +keepbuilddir=0 +update_first=0 +clean_first=0 +run_namcap=0 +temp_chroot=0 + bindmounts_ro=() bindmounts_rw=() @@ -167,7 +168,7 @@ install_packages() { } prepare_chroot() { - [[ $keepbuilddir = true ]] || rm -rf "$copydir/build" + (( keepbuilddir )) || rm -rf "$copydir/build" local builduser_uid builduser_gid builduser_uid="${SUDO_UID:-$UID}" @@ -206,7 +207,7 @@ EOF declare -p SOURCE_DATE_EPOCH 2>/dev/null || true printf '_chrootbuild "$@" || exit\n' - if [[ $run_namcap = true ]]; then + if (( run_namcap )); then declare -f _chrootnamcap printf '_chrootnamcap || exit\n' fi @@ -289,15 +290,15 @@ move_products() { while getopts 'hcur:I:l:nTD:d:U:' arg; do case "$arg" in - c) clean_first=true ;; + c) clean_first=1 ;; D) bindmounts_ro+=("--bind-ro=$OPTARG") ;; d) bindmounts_rw+=("--bind=$OPTARG") ;; - u) update_first=true ;; + u) update_first=1 ;; r) passeddir="$OPTARG" ;; I) install_pkgs+=("$OPTARG") ;; l) copy="$OPTARG" ;; - n) run_namcap=true; makepkg_args+=(--install) ;; - T) temp_chroot=true; copy+="-$$" ;; + n) run_namcap=1; makepkg_args+=(--install) ;; + T) temp_chroot=1; copy+="-$$" ;; U) makepkg_user="$OPTARG" ;; h|*) usage ;; esac @@ -326,10 +327,10 @@ makepkg_args+=("${@:$OPTIND}") # See if -R or -e was passed to makepkg for arg in "${makepkg_args[@]}"; do case ${arg%%=*} in - --repackage|--noextract) keepbuilddir=true; break ;; - --repackage|--noextract) keepbuilddir=true; break ;; + --repackage|--noextract) keepbuilddir=1; break ;; + --repackage|--noextract) keepbuilddir=1; break ;; --*) ;; - -*R*|-*e*) keepbuilddir=true; break ;; + -*R*|-*e*) keepbuilddir=1; break ;; esac done @@ -353,11 +354,11 @@ load_vars /etc/makepkg.conf # Lock the chroot we want to use. We'll keep this lock until we exit. lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy" -if [[ ! -d $copydir ]] || $clean_first; then +if [[ ! -d $copydir ]] || (( clean_first )); then sync_chroot "$chrootdir" "$copydir" "$copy" fi -$update_first && arch-nspawn "$copydir" \ +(( update_first )) && arch-nspawn "$copydir" \ "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \ pacman -Syu --noconfirm @@ -388,10 +389,10 @@ else (( ret += 1 )) fi -$temp_chroot && delete_chroot "$copydir" "$copy" +(( temp_chroot )) && delete_chroot "$copydir" "$copy" if (( ret != 0 )); then - if $temp_chroot; then + if (( temp_chroot )); then die "Build failed" else die "Build failed, check %s/build" "$copydir" -- cgit v1.2.3-70-g09d2