treewide: drop use of which
authorAnsuel Smith <ansuelsmth@gmail.com>
Thu, 25 Nov 2021 01:12:58 +0000 (02:12 +0100)
committerPaul Spooren <mail@aparcar.org>
Mon, 17 Jan 2022 08:14:26 +0000 (09:14 +0100)
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@gmail.com>
Makefile
include/bpf.mk
include/cmake.mk
include/prereq.mk
scripts/command_all.sh [new file with mode: 0755]
scripts/download.pl
scripts/feeds
scripts/ubinize-image.sh
target/sdk/files/Makefile

index 39ab3ae4a52e5626dd45a3cd53903cebab05e34f..d85df6c3cf61073967c22b8e5f14a13b38b0aac8 100644 (file)
--- 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)
index ce30e244345b961e22224bd052aa5e32f006d277..7d0cfbd76db45ef17d0778ea817a1f74ebba6035 100644 (file)
@@ -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),)
index b9a7e36dee8ee7ed796694701eab476c63c6713b..9b169b069346f292c6ce9c5be83174e0c420a130 100644 (file)
@@ -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),)
index 23d5ded9b272b59e0c7700ed32ff4dd22b23dd22..0033535e782a71fd7f15aae96f832f957d2fa32e 100644 (file)
@@ -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 (executable)
index 0000000..452b66f
--- /dev/null
@@ -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
index 8e6463c007615e42f826f3f75d68ec8a039e4d19..ebb0d7af199fa14abf72f75a2e8ae31cec030e77 100755 (executable)
@@ -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;
 }
 
index bbfd832c45e394acdb238d89349752bf5cf2369d..f63b4f0951b9c97a32747eb6bd82833cd43652d5 100755 (executable)
@@ -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'
 
index 01956952409be481b2aa1a3c3faa8ae63a472644..323eae547abc1a9d4d3d5fca8dc52d8abbf06be8 100755 (executable)
@@ -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
index 2f89ce0cf85cd5ca5ff6e09579a1e630684046e1..a710ca5f5159fe9feab21da2acc47471d946f9d6 100644 (file)
@@ -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)