diff mbox series

tools: Ignore errors from `which' when searching a GCC toolchain

Message ID 20220201093119.1713207-1-jean-philippe@linaro.org (mailing list archive)
State Accepted
Commit b7892f7d5cb2b8187c603dd8ea3a7c44059ccfc2
Delegated to: BPF
Headers show
Series tools: Ignore errors from `which' when searching a GCC toolchain | expand

Checks

Context Check Description
bpf/vmtest-bpf-next success VM_Test
bpf/vmtest-bpf-next-PR success PR summary
netdev/tree_selection success Not a local patch

Commit Message

Jean-Philippe Brucker Feb. 1, 2022, 9:31 a.m. UTC
When cross-building tools with clang, we run `which $(CROSS_COMPILE)gcc`
to detect whether a GCC toolchain provides the standard libraries. It is
only a helper because some distros put libraries where LLVM does not
automatically find them. On other systems, LLVM detects the libc
automatically and does not need this. There, it is completely fine not
to have a GCC at all, but some versions of `which' display an error when
the command is not found:

	which: no aarch64-linux-gnu-gcc in ($PATH)

Since the error can safely be ignored, throw it to /dev/null.

Fixes: cebdb7374577 ("tools: Help cross-building with clang")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
 tools/scripts/Makefile.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Nathan Chancellor Feb. 1, 2022, 4:01 p.m. UTC | #1
On Tue, Feb 01, 2022 at 09:31:20AM +0000, Jean-Philippe Brucker wrote:
> When cross-building tools with clang, we run `which $(CROSS_COMPILE)gcc`
> to detect whether a GCC toolchain provides the standard libraries. It is
> only a helper because some distros put libraries where LLVM does not
> automatically find them. On other systems, LLVM detects the libc
> automatically and does not need this. There, it is completely fine not
> to have a GCC at all, but some versions of `which' display an error when
> the command is not found:
> 
> 	which: no aarch64-linux-gnu-gcc in ($PATH)
> 
> Since the error can safely be ignored, throw it to /dev/null.
> 
> Fixes: cebdb7374577 ("tools: Help cross-building with clang")
> Reported-by: Nathan Chancellor <nathan@kernel.org>
> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

Thanks a lot for the quick fix!

Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>

It would be nice if this could go in via bpf, as cebdb7374577 was merged
in 5.17-rc1.

> ---
>  tools/scripts/Makefile.include | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
> index b0be5f40a3f1..79d102304470 100644
> --- a/tools/scripts/Makefile.include
> +++ b/tools/scripts/Makefile.include
> @@ -90,7 +90,7 @@ EXTRA_WARNINGS += -Wstrict-aliasing=3
>  
>  else ifneq ($(CROSS_COMPILE),)
>  CLANG_CROSS_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%))
> -GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)gcc))
> +GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)gcc 2>/dev/null))
>  ifneq ($(GCC_TOOLCHAIN_DIR),)
>  CLANG_CROSS_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
>  CLANG_CROSS_FLAGS += --sysroot=$(shell $(CROSS_COMPILE)gcc -print-sysroot)
> -- 
> 2.34.1
> 
>
patchwork-bot+netdevbpf@kernel.org Feb. 1, 2022, 10:10 p.m. UTC | #2
Hello:

This patch was applied to bpf/bpf.git (master)
by Daniel Borkmann <daniel@iogearbox.net>:

On Tue,  1 Feb 2022 09:31:20 +0000 you wrote:
> When cross-building tools with clang, we run `which $(CROSS_COMPILE)gcc`
> to detect whether a GCC toolchain provides the standard libraries. It is
> only a helper because some distros put libraries where LLVM does not
> automatically find them. On other systems, LLVM detects the libc
> automatically and does not need this. There, it is completely fine not
> to have a GCC at all, but some versions of `which' display an error when
> the command is not found:
> 
> [...]

Here is the summary with links:
  - tools: Ignore errors from `which' when searching a GCC toolchain
    https://git.kernel.org/bpf/bpf/c/b7892f7d5cb2

You are awesome, thank you!
diff mbox series

Patch

diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
index b0be5f40a3f1..79d102304470 100644
--- a/tools/scripts/Makefile.include
+++ b/tools/scripts/Makefile.include
@@ -90,7 +90,7 @@  EXTRA_WARNINGS += -Wstrict-aliasing=3
 
 else ifneq ($(CROSS_COMPILE),)
 CLANG_CROSS_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%))
-GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)gcc))
+GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)gcc 2>/dev/null))
 ifneq ($(GCC_TOOLCHAIN_DIR),)
 CLANG_CROSS_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
 CLANG_CROSS_FLAGS += --sysroot=$(shell $(CROSS_COMPILE)gcc -print-sysroot)