[openwrt/openwrt] build: replace which with Bash command built-in

LEDE Commits lede-commits at lists.infradead.org
Mon Jan 4 13:32:41 EST 2021


ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c7aec47e5e3a3ff7b5fdaa11cd1e62cae6746acb

commit c7aec47e5e3a3ff7b5fdaa11cd1e62cae6746acb
Author: Petr Štetiar <ynezz at true.cz>
AuthorDate: Tue Dec 22 10:33:02 2020 +0100

    build: replace which with Bash command built-in
    
    `which` utility is not shipped by default for example on recent Arch
    Linux and then any steps relying on its presence fails, like for example
    following Python3 prereq build check:
    
     $ python3 --version
     Python 3.9.1
    
     $ make
     /bin/sh: line 1: which: command not found
     /bin/sh: line 1: which: command not found
     /bin/sh: line 1: which: command not found
     ...
     Checking 'python3'... failed.
     ...
    
    Fix this by switching to Bash builtin `command` which should provide
    same functionality.
    
    Fixes: FS#3525
    Signed-off-by: Petr Štetiar <ynezz at true.cz>
---
 Makefile          | 2 +-
 include/cmake.mk  | 2 +-
 include/prereq.mk | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 4ccbc20b85..f1577ad4d1 100644
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,7 @@ $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt dir
 
 world:
 
-DISTRO_PKG_CONFIG:=$(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
+DISTRO_PKG_CONFIG:=$(shell command -pv pkg-config | grep -E '\/usr' | head -n 1)
 export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
 
 ifneq ($(OPENWRT_BUILD),1)
diff --git a/include/cmake.mk b/include/cmake.mk
index 96c4d7df34..de8022ca57 100644
--- a/include/cmake.mk
+++ b/include/cmake.mk
@@ -15,7 +15,7 @@ MAKE_PATH = $(firstword $(CMAKE_BINARY_SUBDIR) .)
 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
   cmake_tool=$(TOOLCHAIN_DIR)/bin/$(1)
 else
-  cmake_tool=$(shell which $(1))
+  cmake_tool=$(shell command -v $(1))
 endif
 
 ifeq ($(CONFIG_CCACHE),)
diff --git a/include/prereq.mk b/include/prereq.mk
index 83ac21242c..6d14140792 100644
--- a/include/prereq.mk
+++ b/include/prereq.mk
@@ -52,7 +52,7 @@ endef
 
 define RequireCommand
   define Require/$(1)
-    which $(1)
+    command -pv $(1)
   endef
 
   $$(eval $$(call Require,$(1),$(2)))
@@ -106,7 +106,7 @@ define SetupHostCommand
 	           $(call QuoteHostCommand,$(11)) $(call QuoteHostCommand,$(12)); do \
 		if [ -n "$$$$$$$$cmd" ]; then \
 			bin="$$$$$$$$(PATH="$(subst $(space),:,$(filter-out $(STAGING_DIR_HOST)/%,$(subst :,$(space),$(PATH))))" \
-				which "$$$$$$$${cmd%% *}")"; \
+				command -pv "$$$$$$$${cmd%% *}")"; \
 			if [ -x "$$$$$$$$bin" ] && eval "$$$$$$$$cmd" >/dev/null 2>/dev/null; then \
 				mkdir -p "$(STAGING_DIR_HOST)/bin"; \
 				ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \



More information about the lede-commits mailing list