From 7ee59d408ed7681908966a5b2fb28e8f98116d31 Mon Sep 17 00:00:00 2001 From: Lyndon Brown Date: Sat, 22 Feb 2020 14:33:01 +0000 Subject: [PATCH] fix consistency in binary execution and existance checking - prefer using `which` over hard coded paths - it is redundant to check that the bin pointed to the return of `which` exists and is executable, `which` already gives us assurance of that if it returns true! - the redirection of output (`2>/dev/null`) seems to be unnecessary from my testing. the instances relatnig to fdisk and losetup in functions/defaults.sh have been left as they are since they get executed by `lb config` which can run without sudo elevation unlike `lb build` and in that case `which` would fail to find these binaries resulting in error. this also fixes a bug showing an error for missing debootstrap - this tool requires sudo privileges to run and thus is not found via a none elevated which search. Gbp-Dch: Short Closes: #952927 --- frontend/lb | 4 ++-- frontend/live-build | 2 +- functions/architectures.sh | 2 +- functions/defaults.sh | 6 +++--- functions/losetup.sh | 2 +- functions/man.sh | 2 +- scripts/build/bootstrap_debootstrap | 6 +++--- scripts/build/chroot_archives | 4 ++-- scripts/build/config | 2 +- share/bin/Packages | 4 ++-- share/hooks/normal/0400-update-apt-file-cache.hook.chroot | 2 +- share/hooks/normal/0410-update-apt-xapian-index.hook.chroot | 2 +- share/hooks/normal/0430-update-mlocate-database.hook.chroot | 2 +- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/frontend/lb b/frontend/lb index 0e826d989..f2015b033 100755 --- a/frontend/lb +++ b/frontend/lb @@ -20,7 +20,7 @@ USAGE="lb {clean|config|build}" case "${1}" in -h|--help) - if [ -x "$(which man 2>/dev/null)" ] + if [ $(which man) ] then man lb exit 0 @@ -75,7 +75,7 @@ case "${1}" in then # User has live-build installed in the system SCRIPT=/usr/lib/live/build/"${COMMAND}" - elif [ -x "$(which ${COMMAND} 2>/dev/null)" ] + elif [ $(which "${COMMAND}") ] then # User has live-build commands in path SCRIPT="${COMMAND}" diff --git a/frontend/live-build b/frontend/live-build index 52b843730..dfd1e4667 100755 --- a/frontend/live-build +++ b/frontend/live-build @@ -22,7 +22,7 @@ set -e -if [ -x "$(which man 2>/dev/null)" ] +if [ $(which man) ] then man live-build else diff --git a/functions/architectures.sh b/functions/architectures.sh index 7c6c48cff..393d217e8 100755 --- a/functions/architectures.sh +++ b/functions/architectures.sh @@ -49,7 +49,7 @@ Check_architectures () Check_crossarchitectures () { - if [ -x /usr/bin/dpkg ] + if [ $(which dpkg) ] then HOST="$(dpkg --print-architecture)" else diff --git a/functions/defaults.sh b/functions/defaults.sh index d254b079a..ed271ebc9 100755 --- a/functions/defaults.sh +++ b/functions/defaults.sh @@ -13,7 +13,7 @@ New_configuration () ## Runtime # Image: Architecture - if [ -x "/usr/bin/dpkg" ] + if [ $(which dpkg) ] then CURRENT_IMAGE_ARCHITECTURE="$(dpkg --print-architecture)" else @@ -93,7 +93,7 @@ Set_defaults () LB_SYSTEM="${LB_SYSTEM:-live}" # Setting mode (currently: debian, progress-linux) - if [ -x /usr/bin/lsb_release ] + if [ $(which lsb_release) ] then _DISTRIBUTOR="$(lsb_release -is | tr "[A-Z]" "[a-z]")" @@ -826,7 +826,7 @@ Check_defaults () { case "${LB_BINARY_FILESYSTEM}" in ntfs) - if [ ! -x "$(which ntfs-3g 2>/dev/null)" ] + if [ ! $(which ntfs-3g) ] then Echo_error "Using ntfs as the binary filesystem is currently only supported if ntfs-3g is installed on the host system." diff --git a/functions/losetup.sh b/functions/losetup.sh index 9d9b46e5d..cdf984b74 100755 --- a/functions/losetup.sh +++ b/functions/losetup.sh @@ -21,7 +21,7 @@ Lodetach () # Changes to block devices result in uevents which trigger rules which in # turn access the loop device (ex. udisks-part-id, blkid) which can cause # a race condition. We call 'udevadm settle' to help avoid this. - if [ -x "$(which udevadm 2>/dev/null)" ] + if [ $(which udevadm) ] then udevadm settle fi diff --git a/functions/man.sh b/functions/man.sh index 11366b7b4..7896f5a9c 100755 --- a/functions/man.sh +++ b/functions/man.sh @@ -10,7 +10,7 @@ Man () { - if [ -x "$(which man 2>/dev/null)" ] + if [ $(which man) ] then man $(basename ${0}) exit 0 diff --git a/scripts/build/bootstrap_debootstrap b/scripts/build/bootstrap_debootstrap index b4008de8a..9370c3986 100755 --- a/scripts/build/bootstrap_debootstrap +++ b/scripts/build/bootstrap_debootstrap @@ -24,7 +24,7 @@ Arguments "${@}" Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source Set_defaults -if [ ! -x "$(which debootstrap 2>/dev/null)" ] +if [ ! $(which debootstrap) ] then Echo_error "debootstrap - command not found" Echo_verbose "debootstrap can be obtained from http://ftp.debian.org/debian/pool/main/d/debootstrap/" @@ -76,7 +76,7 @@ then DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --no-check-gpg" fi -if [ -x "/usr/sbin/debootstrap" ] +if [ $(which debootstrap) ] then if [ "${LB_CACHE_PACKAGES}" = "true" ] then @@ -126,6 +126,6 @@ then # Creating stage file Create_stagefile .build/bootstrap else - Echo_error "Can't process file /usr/bin/debootstrap (FIXME)" + Echo_error "Can't find program debootstrap (FIXME)" exit 1 fi diff --git a/scripts/build/chroot_archives b/scripts/build/chroot_archives index 472b76785..f1166ae40 100755 --- a/scripts/build/chroot_archives +++ b/scripts/build/chroot_archives @@ -242,7 +242,7 @@ case "${1}" in cp -f cache/indices.bootstrap/*Release* chroot/var/lib/apt/lists fi - if [ "${LB_APT}" = "aptitude" ] && [ ! -x /usr/bin/aptitude ] + if [ "${LB_APT}" = "aptitude" ] && [ ! $(which aptitude) ] then Chroot chroot "apt-get ${APT_OPTIONS} update" Chroot chroot "apt-get ${APT_OPTIONS} install aptitude" @@ -260,7 +260,7 @@ case "${1}" in fi # Installing aptitude - if [ "${LB_APT}" = "aptitude" ] && [ ! -x /chroot/usr/bin/aptitude ] + if [ "${LB_APT}" = "aptitude" ] && [ ! $(Chroot chroot "which aptitude") ] then Chroot chroot "apt-get ${APT_OPTIONS} update" Chroot chroot "apt-get ${APT_OPTIONS} install aptitude" diff --git a/scripts/build/config b/scripts/build/config index aa275c6b9..e974bc73e 100755 --- a/scripts/build/config +++ b/scripts/build/config @@ -178,7 +178,7 @@ Local_arguments () case "${1}" in --dump) # Dump version - if [ -x "$(which dpkg-query 2>/dev/null)" ] + if [ $(which dpkg-query) ] then VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)" fi diff --git a/share/bin/Packages b/share/bin/Packages index fa6cbbaa2..185fba78d 100755 --- a/share/bin/Packages +++ b/share/bin/Packages @@ -10,9 +10,9 @@ set -e -if [ ! -e /usr/bin/grep-aptavail ] +if [ ! $(which grep-aptavail) ] then - echo "E: /usr/bin/grep-aptavail: No such file." + echo "E: program grep-aptavail not found!" exit 1 fi diff --git a/share/hooks/normal/0400-update-apt-file-cache.hook.chroot b/share/hooks/normal/0400-update-apt-file-cache.hook.chroot index 771e9032a..4634d4cf8 100755 --- a/share/hooks/normal/0400-update-apt-file-cache.hook.chroot +++ b/share/hooks/normal/0400-update-apt-file-cache.hook.chroot @@ -8,7 +8,7 @@ set -e . /live-build/config/binary -if [ -x /usr/bin/apt-file ] && [ "${LB_APT_INDICES}" = "true" ] +if [ $(which apt-file) ] && [ "${LB_APT_INDICES}" = "true" ] then apt-file update fi diff --git a/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot b/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot index dcb39b261..02f1a18f2 100755 --- a/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot +++ b/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot @@ -8,7 +8,7 @@ set -e # is not allowed to, and (b) it wants to build the index in the background which # will be racy in the context of live-build. -if [ -x /usr/sbin/update-apt-xapian-index ] +if [ $(which update-apt-xapian-index) ] then PYTHONDONTWRITEBYTECODE=1 /usr/sbin/update-apt-xapian-index --force --quiet fi diff --git a/share/hooks/normal/0430-update-mlocate-database.hook.chroot b/share/hooks/normal/0430-update-mlocate-database.hook.chroot index 6bfdb3d4f..df99386fe 100755 --- a/share/hooks/normal/0430-update-mlocate-database.hook.chroot +++ b/share/hooks/normal/0430-update-mlocate-database.hook.chroot @@ -8,7 +8,7 @@ set -e # means that if the live system is later installed to a hard disk then less # work will be required after installation. -if [ -x /usr/bin/updatedb.mlocate ] +if [ $(which updatedb.mlocate) ] then updatedb.mlocate fi