Meta: Factorize path resolution

This patch adds the `find_executable()` function that will hopefully
find executables in a distro-agnostic way and that is (hopefully as
well) easily upgradable.

The function uses some bash functionalities. So, we now require bash
for each script that includes `.shell_include.sh`.
This commit is contained in:
Lucas CHOLLET 2022-12-06 18:17:41 +01:00 committed by Linus Groh
parent b409d3cf88
commit 0fde7fe3c5
Notes: sideshowbarker 2024-07-17 08:43:11 +09:00
6 changed files with 35 additions and 39 deletions

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
# shellcheck disable=SC2034
# SC2034: "Variable appears unused. Verify it or export it."
# Those are intentional here, as the file is meant to be included elsewhere.
@ -16,3 +16,32 @@ die() {
echo "die: $*"
exit 1
}
find_executable() {
paths=("/usr/sbin" "/sbin")
if [ "$(uname -s)" = "Darwin" ]; then
paths+=("/usr/local/opt/e2fsprogs/bin" "/usr/local/opt/e2fsprogs/sbin")
paths+=("/opt/homebrew/opt/e2fsprogs/bin" "/opt/homebrew/opt/e2fsprogs/sbin")
fi
executable="${1}"
# Prefer tools from PATH over fallback paths
if command -v "${executable}"; then
return 0
fi
for path in "${paths[@]}"; do
if command -v "${path}/${executable}"; then
return 0
fi
done
# We return the executable's name back to provide meaningful messages on future failure
echo "${executable}"
}
FUSE2FS_PATH="$(find_executable fuse2fs)"
RESIZE2FS_PATH="$(find_executable resize2fs)"
E2FSCK="$(find_executable e2fsck)"

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
set -e

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
set -e

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
set -e

View file

@ -1,17 +1,4 @@
#!/bin/sh
# Note: This is done before `set -e` to let `command` fail if needed
FUSE2FS_PATH=$(command -v fuse2fs)
RESIZE2FS_PATH=$(command -v resize2fs)
if [ -z "$FUSE2FS_PATH" ]; then
FUSE2FS_PATH=/usr/sbin/fuse2fs
fi
if [ -z "$RESIZE2FS_PATH" ]; then
RESIZE2FS_PATH=/usr/sbin/resize2fs
fi
#!/usr/bin/env bash
set -e
SCRIPT_DIR="$(dirname "${0}")"
@ -42,26 +29,6 @@ else
: "${SUDO_UID:=0}" "${SUDO_GID:=0}"
fi
if [ "$(uname -s)" = "Darwin" ]; then
export PATH="/usr/local/opt/e2fsprogs/bin:$PATH"
export PATH="/usr/local/opt/e2fsprogs/sbin:$PATH"
export PATH="/opt/homebrew/opt/e2fsprogs/bin:$PATH"
export PATH="/opt/homebrew/opt/e2fsprogs/sbin:$PATH"
E2FSCK="e2fsck"
RESIZE2FS_PATH="resize2fs"
elif [ ! -f "$E2FSCK" ]; then
E2FSCK="$(command -v e2fsck)"
if [ ! -f "$E2FSCK" ]; then
E2FSCK="/usr/sbin/e2fsck"
if [ ! -f "$E2FSCK" ]; then
E2FSCK="/sbin/e2fsck"
fi
fi
fi
# Prepend the toolchain qemu directory so we pick up QEMU from there
PATH="$SCRIPT_DIR/../Toolchain/Local/qemu/bin:$PATH"

View file

@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
set -e