init.sh: Use readlink in pybin()

Use realpath only as a fallback.

Signed-off-by: Leah Rowe <leah@libreboot.org>
25.04_branch
Leah Rowe 2025-05-07 19:00:13 +01:00
parent 2f17c5be3b
commit 9ccfee43e7
2 changed files with 13 additions and 2 deletions

View File

@ -80,8 +80,7 @@ pybin()
# ideally, don't rely on PATH or hardcoded paths if python venv.
# use the *real*, direct executable linked to by the venv symlink
if [ $venv -gt 0 ] && [ -L "`command -v "$1" 2>/dev/null`" ]; then
# realpath isn't posix, but available mostly universally
pypath="$(realpath \
pypath="$(findpath \
"$(command -v "$1" 2>/dev/null)" 2>/dev/null || :)"
[ -e "$pypath" ] && [ ! -d "$pypath" ] && \
[ -x "$pypath" ] && printf "%s\n" "$pypath" && return 0; :

View File

@ -144,6 +144,18 @@ singletree()
return 1
}
findpath()
{
[ $# -gt 0 ] || err "findpath: No arguments provided"
while [ $# -gt 0 ]; do
found="`readlink -f "$1" 2>/dev/null`" || return 1; :
[ -n "$found" ] || found="`realpath "$1" 2>/dev/null`" || \
return 1; :
printf "%s\n" "$found"
shift 1
done
}
fx_()
{
fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd"