[openwrt/openwrt] treewide: drop use of which

LEDE Commits lede-commits at lists.infradead.org
Mon Jan 17 00:15:30 PST 2022


aparcar pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/88204bfa82f982a986d2aa3e166a4c5946040308

commit 88204bfa82f982a986d2aa3e166a4c5946040308
Author: Ansuel Smith <ansuelsmth at gmail.com>
AuthorDate: Thu Nov 25 02:12:58 2021 +0100

    treewide: drop use of which
    
    Ubuntu started to flag which as deprecated and it
    seems which is not really standard and may vary
    across Distro.
    Drop the use of which and use the standard 'command -v'
    for this simple task.
    Which is still present in the prereq if some package/script
    still use which.
    A utility script called command_all.sh is implemented that
    will just mimic the output of which -a.
    
    Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
---
 Makefile                  |  2 +-
 include/bpf.mk            |  2 +-
 include/cmake.mk          |  2 +-
 include/prereq.mk         |  4 ++--
 scripts/command_all.sh    | 11 +++++++++++
 scripts/download.pl       |  4 +---
 scripts/feeds             |  2 +-
 scripts/ubinize-image.sh  |  2 +-
 target/sdk/files/Makefile |  2 +-
 9 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/Makefile b/Makefile
index 39ab3ae4a5..d85df6c3cf 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,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 $(TOPDIR)/scripts/command_all.sh pkg-config | grep -E '\/usr' | head -n 1)
 export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
 
 ifneq ($(OPENWRT_BUILD),1)
diff --git a/include/bpf.mk b/include/bpf.mk
index ce30e24434..7d0cfbd76d 100644
--- a/include/bpf.mk
+++ b/include/bpf.mk
@@ -10,7 +10,7 @@ ifneq ($(CONFIG_USE_LLVM_HOST),)
   else
     BPF_PATH:=$(PATH)
   endif
-  CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' which clang clang-13 clang-12 clang-11))
+  CLANG:=$(firstword $(shell PATH='$(BPF_PATH)' command -v clang clang-13 clang-12 clang-11))
   LLVM_VER:=$(subst clang,,$(notdir $(CLANG)))
 endif
 ifneq ($(CONFIG_USE_LLVM_PREBUILT),)
diff --git a/include/cmake.mk b/include/cmake.mk
index b9a7e36dee..9b169b0693 100644
--- a/include/cmake.mk
+++ b/include/cmake.mk
@@ -24,7 +24,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 23d5ded9b2..0033535e78 100644
--- a/include/prereq.mk
+++ b/include/prereq.mk
@@ -49,7 +49,7 @@ endef
 
 define RequireCommand
   define Require/$(1)
-    which $(1)
+    command -v $(1)
   endef
 
   $$(eval $$(call Require,$(1),$(2)))
@@ -103,7 +103,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 -v "$$$$$$$${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))"; \
diff --git a/scripts/command_all.sh b/scripts/command_all.sh
new file mode 100755
index 0000000000..452b66f092
--- /dev/null
+++ b/scripts/command_all.sh
@@ -0,0 +1,11 @@
+#! /bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Reduced version of which -a using command utility
+
+case $PATH in
+	(*[!:]:) PATH="$PATH:" ;;
+esac
+
+for ELEMENT in $(echo $PATH | tr ":" "\n"); do
+        PATH=$ELEMENT command -v "$@"
+done
diff --git a/scripts/download.pl b/scripts/download.pl
index 8e6463c007..ebb0d7af19 100755
--- a/scripts/download.pl
+++ b/scripts/download.pl
@@ -54,10 +54,8 @@ sub localmirrors {
 
 sub which($) {
 	my $prog = shift;
-	my $res = `which $prog`;
+	my $res = `command -v $prog`;
 	$res or return undef;
-	$res =~ /^no / and return undef;
-	$res =~ /not found/ and return undef;
 	return $res;
 }
 
diff --git a/scripts/feeds b/scripts/feeds
index bbfd832c45..f63b4f0951 100755
--- a/scripts/feeds
+++ b/scripts/feeds
@@ -14,7 +14,7 @@ chdir $ENV{TOPDIR};
 $ENV{GIT_CONFIG_PARAMETERS}="'core.autocrlf=false'";
 $ENV{GREP_OPTIONS}="";
 
-my $mk=`which gmake 2>/dev/null`;	# select the right 'make' program
+my $mk=`command -v gmake 2>/dev/null`;	# select the right 'make' program
 chomp($mk);		# trim trailing newline
 $mk or $mk = "make";	# default to 'make'
 
diff --git a/scripts/ubinize-image.sh b/scripts/ubinize-image.sh
index 0195695240..323eae547a 100755
--- a/scripts/ubinize-image.sh
+++ b/scripts/ubinize-image.sh
@@ -134,7 +134,7 @@ if [ ! -r "$rootfs" -a ! -r "$kernel" -a ! "$outfile" ]; then
 	exit 1
 fi
 
-ubinize="$( which ubinize )"
+ubinize="$( command -v ubinize )"
 if [ ! -x "$ubinize" ]; then
 	echo "ubinize tool not found or not usable"
 	exit 1
diff --git a/target/sdk/files/Makefile b/target/sdk/files/Makefile
index 2f89ce0cf8..a710ca5f51 100644
--- a/target/sdk/files/Makefile
+++ b/target/sdk/files/Makefile
@@ -14,7 +14,7 @@ export TOPDIR LC_ALL LANG SDK
 
 world:
 
-DISTRO_PKG_CONFIG:=$(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
+DISTRO_PKG_CONFIG:=$(shell $(TOPDIR)/scripts/command_all.sh pkg-config | grep -E '\/usr' | head -n 1)
 export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
 
 ifneq ($(OPENWRT_BUILD),1)



More information about the lede-commits mailing list