The `which` command is not standard, may not exist on the build host,
or may not behave as expected by the build system. It is recommended
to use `command -v` to find out if a command exist and have its path,
and it's part of a POSIX shell standard (at least, it seems to be
mandatory since IEEE Std 1003.1-2008, but was optional before).
Fixes: c8a8645f1efe ("xen/build: Automatically locate a suitable python interpreter")
Fixes: 3b47bcdb6d38 ("xen/build: Use a distro version of figlet")
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit:
f93629b18b528a5ab1b1092949c5420069c7226c
master date: 2024-02-19 12:45:48 +0100
endif
# Best effort attempt to find a python interpreter, defaulting to Python 3 if
-# available. Fall back to just `python` if `which` is nowhere to be found.
-PYTHON_INTERPRETER := $(word 1,$(shell which python3 python python2 2>/dev/null) python)
+# available. Fall back to just `python`.
+PYTHON_INTERPRETER := $(word 1,$(shell command -v python3 || command -v python || command -v python2) python)
export PYTHON ?= $(PYTHON_INTERPRETER)
export CHECKPOLICY ?= checkpolicy
quiet_cmd_banner = BANNER $@
define cmd_banner
- if which figlet >/dev/null 2>&1 ; then \
+ if command -v figlet >/dev/null 2>&1 ; then \
echo " Xen $(XEN_FULLVERSION)" | figlet -f $< > $@.tmp; \
else \
echo " Xen $(XEN_FULLVERSION)" > $@.tmp; \