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
This commit is contained in:
Lyndon Brown 2020-02-22 14:33:01 +00:00 committed by Raphaël Hertzog
parent 37f0432e98
commit 7ee59d408e
13 changed files with 20 additions and 20 deletions

View File

@ -20,7 +20,7 @@ USAGE="lb {clean|config|build}"
case "${1}" in case "${1}" in
-h|--help) -h|--help)
if [ -x "$(which man 2>/dev/null)" ] if [ $(which man) ]
then then
man lb man lb
exit 0 exit 0
@ -75,7 +75,7 @@ case "${1}" in
then then
# User has live-build installed in the system # User has live-build installed in the system
SCRIPT=/usr/lib/live/build/"${COMMAND}" SCRIPT=/usr/lib/live/build/"${COMMAND}"
elif [ -x "$(which ${COMMAND} 2>/dev/null)" ] elif [ $(which "${COMMAND}") ]
then then
# User has live-build commands in path # User has live-build commands in path
SCRIPT="${COMMAND}" SCRIPT="${COMMAND}"

View File

@ -22,7 +22,7 @@
set -e set -e
if [ -x "$(which man 2>/dev/null)" ] if [ $(which man) ]
then then
man live-build man live-build
else else

View File

@ -49,7 +49,7 @@ Check_architectures ()
Check_crossarchitectures () Check_crossarchitectures ()
{ {
if [ -x /usr/bin/dpkg ] if [ $(which dpkg) ]
then then
HOST="$(dpkg --print-architecture)" HOST="$(dpkg --print-architecture)"
else else

View File

@ -13,7 +13,7 @@ New_configuration ()
## Runtime ## Runtime
# Image: Architecture # Image: Architecture
if [ -x "/usr/bin/dpkg" ] if [ $(which dpkg) ]
then then
CURRENT_IMAGE_ARCHITECTURE="$(dpkg --print-architecture)" CURRENT_IMAGE_ARCHITECTURE="$(dpkg --print-architecture)"
else else
@ -93,7 +93,7 @@ Set_defaults ()
LB_SYSTEM="${LB_SYSTEM:-live}" LB_SYSTEM="${LB_SYSTEM:-live}"
# Setting mode (currently: debian, progress-linux) # Setting mode (currently: debian, progress-linux)
if [ -x /usr/bin/lsb_release ] if [ $(which lsb_release) ]
then then
_DISTRIBUTOR="$(lsb_release -is | tr "[A-Z]" "[a-z]")" _DISTRIBUTOR="$(lsb_release -is | tr "[A-Z]" "[a-z]")"
@ -826,7 +826,7 @@ Check_defaults ()
{ {
case "${LB_BINARY_FILESYSTEM}" in case "${LB_BINARY_FILESYSTEM}" in
ntfs) ntfs)
if [ ! -x "$(which ntfs-3g 2>/dev/null)" ] if [ ! $(which ntfs-3g) ]
then then
Echo_error "Using ntfs as the binary filesystem is currently only supported if ntfs-3g is installed on the host system." Echo_error "Using ntfs as the binary filesystem is currently only supported if ntfs-3g is installed on the host system."

View File

@ -21,7 +21,7 @@ Lodetach ()
# Changes to block devices result in uevents which trigger rules which in # 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 # turn access the loop device (ex. udisks-part-id, blkid) which can cause
# a race condition. We call 'udevadm settle' to help avoid this. # a race condition. We call 'udevadm settle' to help avoid this.
if [ -x "$(which udevadm 2>/dev/null)" ] if [ $(which udevadm) ]
then then
udevadm settle udevadm settle
fi fi

View File

@ -10,7 +10,7 @@
Man () Man ()
{ {
if [ -x "$(which man 2>/dev/null)" ] if [ $(which man) ]
then then
man $(basename ${0}) man $(basename ${0})
exit 0 exit 0

View File

@ -24,7 +24,7 @@ Arguments "${@}"
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults Set_defaults
if [ ! -x "$(which debootstrap 2>/dev/null)" ] if [ ! $(which debootstrap) ]
then then
Echo_error "debootstrap - command not found" Echo_error "debootstrap - command not found"
Echo_verbose "debootstrap can be obtained from http://ftp.debian.org/debian/pool/main/d/debootstrap/" 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" DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --no-check-gpg"
fi fi
if [ -x "/usr/sbin/debootstrap" ] if [ $(which debootstrap) ]
then then
if [ "${LB_CACHE_PACKAGES}" = "true" ] if [ "${LB_CACHE_PACKAGES}" = "true" ]
then then
@ -126,6 +126,6 @@ then
# Creating stage file # Creating stage file
Create_stagefile .build/bootstrap Create_stagefile .build/bootstrap
else else
Echo_error "Can't process file /usr/bin/debootstrap (FIXME)" Echo_error "Can't find program debootstrap (FIXME)"
exit 1 exit 1
fi fi

View File

@ -242,7 +242,7 @@ case "${1}" in
cp -f cache/indices.bootstrap/*Release* chroot/var/lib/apt/lists cp -f cache/indices.bootstrap/*Release* chroot/var/lib/apt/lists
fi fi
if [ "${LB_APT}" = "aptitude" ] && [ ! -x /usr/bin/aptitude ] if [ "${LB_APT}" = "aptitude" ] && [ ! $(which aptitude) ]
then then
Chroot chroot "apt-get ${APT_OPTIONS} update" Chroot chroot "apt-get ${APT_OPTIONS} update"
Chroot chroot "apt-get ${APT_OPTIONS} install aptitude" Chroot chroot "apt-get ${APT_OPTIONS} install aptitude"
@ -260,7 +260,7 @@ case "${1}" in
fi fi
# Installing aptitude # Installing aptitude
if [ "${LB_APT}" = "aptitude" ] && [ ! -x /chroot/usr/bin/aptitude ] if [ "${LB_APT}" = "aptitude" ] && [ ! $(Chroot chroot "which aptitude") ]
then then
Chroot chroot "apt-get ${APT_OPTIONS} update" Chroot chroot "apt-get ${APT_OPTIONS} update"
Chroot chroot "apt-get ${APT_OPTIONS} install aptitude" Chroot chroot "apt-get ${APT_OPTIONS} install aptitude"

View File

@ -178,7 +178,7 @@ Local_arguments ()
case "${1}" in case "${1}" in
--dump) --dump)
# Dump version # Dump version
if [ -x "$(which dpkg-query 2>/dev/null)" ] if [ $(which dpkg-query) ]
then then
VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)" VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)"
fi fi

View File

@ -10,9 +10,9 @@
set -e set -e
if [ ! -e /usr/bin/grep-aptavail ] if [ ! $(which grep-aptavail) ]
then then
echo "E: /usr/bin/grep-aptavail: No such file." echo "E: program grep-aptavail not found!"
exit 1 exit 1
fi fi

View File

@ -8,7 +8,7 @@ set -e
. /live-build/config/binary . /live-build/config/binary
if [ -x /usr/bin/apt-file ] && [ "${LB_APT_INDICES}" = "true" ] if [ $(which apt-file) ] && [ "${LB_APT_INDICES}" = "true" ]
then then
apt-file update apt-file update
fi fi

View File

@ -8,7 +8,7 @@ set -e
# is not allowed to, and (b) it wants to build the index in the background which # 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. # will be racy in the context of live-build.
if [ -x /usr/sbin/update-apt-xapian-index ] if [ $(which update-apt-xapian-index) ]
then then
PYTHONDONTWRITEBYTECODE=1 /usr/sbin/update-apt-xapian-index --force --quiet PYTHONDONTWRITEBYTECODE=1 /usr/sbin/update-apt-xapian-index --force --quiet
fi fi

View File

@ -8,7 +8,7 @@ set -e
# means that if the live system is later installed to a hard disk then less # means that if the live system is later installed to a hard disk then less
# work will be required after installation. # work will be required after installation.
if [ -x /usr/bin/updatedb.mlocate ] if [ $(which updatedb.mlocate) ]
then then
updatedb.mlocate updatedb.mlocate
fi fi