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 |
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 |
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 > >
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 --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)
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(-)