[Linux-kernel-mentees] [PATCH RFC] kbuild: use interpreters to invoke scripts

Ujjwal Kumar ujjwalkumar0501 at gmail.com
Thu Oct 1 13:47:22 UTC 2020


On 01/10/20 4:38 pm, Lukas Bulwahn wrote:
> 
> 
> On Thu, 1 Oct 2020, Ujjwal Kumar wrote:
> 
>> We cannot rely on execute bits to be set on files in the repository.
>> The build script should use the explicit interpreter when invoking any
>> script from the repository.
>>
>> Link: https://lore.kernel.org/lkml/20200830174409.c24c3f67addcce0cea9a9d4c@linux-foundation.org/
>> Link: https://lore.kernel.org/lkml/202008271102.FEB906C88@keescook/
>>
>> Suggested-by: Andrew Morton <akpm at linux-foundation.org>
>> Suggested-by: Kees Cook <keescook at chromium.org>
>> Suggested-by: Lukas Bulwahn <lukas.bulwahn at gmail.com>
>> Signed-off-by: Ujjwal Kumar <ujjwalkumar0501 at gmail.com>
>> ---
>>  Documentation/Makefile                           | 16 ++++++++--------
>>  Documentation/userspace-api/media/Makefile       |  6 +++---
>>  Makefile                                         |  4 ++--
>>  arch/arm64/kernel/vdso/Makefile                  |  2 +-
>>  arch/arm64/kernel/vdso32/Makefile                |  2 +-
>>  arch/ia64/Makefile                               |  4 ++--
>>  arch/nds32/kernel/vdso/Makefile                  |  2 +-
>>  .../comedi/drivers/ni_routing/tools/Makefile     |  6 +++---
>>  scripts/Makefile.build                           |  2 +-
>>  scripts/Makefile.package                         |  4 ++--
>>  tools/bootconfig/Makefile                        |  2 +-
>>  tools/bpf/Makefile.helpers                       |  2 +-
>>  tools/lib/bpf/Makefile                           |  2 +-
>>  tools/perf/Makefile.perf                         |  2 +-
>>  tools/power/cpupower/Makefile                    |  2 +-
>>  tools/testing/selftests/rcutorture/Makefile      |  2 +-
>>  tools/testing/selftests/rseq/Makefile            |  2 +-
>>  tools/testing/selftests/vm/Makefile              |  6 +++---
>>  tools/testing/selftests/wireguard/qemu/Makefile  |  4 ++--
>>  tools/testing/selftests/x86/Makefile             |  6 +++---
>>  20 files changed, 39 insertions(+), 39 deletions(-)
>>
> 
> You will probably need to split this patch into multiple patches, but the 
> discussion will show how to split it best.
> 
> Probably:
> 
>  - one for Documentation
>  - one for general kbuild, maybe including arch
>  - one for selftests
>  - one for the other tools
>  - one for the comedi driver
> 
> So, what did you do for testing your change?

First, I had to unset the execute bits on all files.
for i in $(find -executable -type f); do chmod -x $i; done

To test the changes, I invoked the make rule under which my current 
changes lie. And I could see a permission-denied whenever a script 
was invoked. After the patch, the make rule progressed without 
any permissions error.
I couldn't test each and every change, because some rules failed 
before invoking the script and others could not be invoked by me.

I successfully tested the changes under Documentation/ (and some others).

$ make htmldocs
make[1]: execvp: ./scripts/sphinx-pre-install: Permission denied
make[1]: *** [Documentation/Makefile:81: htmldocs] Error 127
make: *** [Makefile:1661: htmldocs] Error 2

Files that I tested my changes on:
Documentation/Makefile                           | 16 ++++++++--------
Documentation/userspace-api/media/Makefile       |  6 +++---
Makefile                                         |  4 ++--
tools/perf/Makefile.perf                         |  2 +-
tools/power/cpupower/Makefile                    |  2 +-


> 
> Did you check if CONFIG_SHELL is actually available in tools?

Yes, I did check.
To verify, I echo(ed) the variables under a make task. And invoked 
the task from srctree.

> 
> 
>> diff --git a/Documentation/Makefile b/Documentation/Makefile
>> index 6b12dd82f712..e74315074336 100644
>> --- a/Documentation/Makefile
>> +++ b/Documentation/Makefile
>> @@ -7,7 +7,7 @@ subdir- := devicetree/bindings
>>  
>>  # Check for broken documentation file references
>>  ifeq ($(CONFIG_WARN_MISSING_DOCUMENTS),y)
>> -$(shell $(srctree)/scripts/documentation-file-ref-check --warn)
>> +$(shell $(PERL) $(srctree)/scripts/documentation-file-ref-check --warn)
> 
> I guess you can drop shell, if you have added $(PERL).
> 
>>  endif
>>  
>>  # You can set these variables from the command line.
>> @@ -29,7 +29,7 @@ ifeq ($(HAVE_SPHINX),0)
>>  .DEFAULT:
>>  	$(warning The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed and in PATH, or set the SPHINXBUILD make variable to point to the full path of the '$(SPHINXBUILD)' executable.)
>>  	@echo
>> -	@$(srctree)/scripts/sphinx-pre-install
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install
>>  	@echo "  SKIP    Sphinx $@ target."
>>  
>>  else # HAVE_SPHINX
>> @@ -78,14 +78,14 @@ quiet_cmd_sphinx = SPHINX  $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
>>  	$(abspath $(BUILDDIR)/$3/$4)
>>  
>>  htmldocs:
>> -	@$(srctree)/scripts/sphinx-pre-install --version-check
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install --version-check
>>  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
>>  
>>  linkcheckdocs:
>>  	@$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var)))
>>  
>>  latexdocs:
>> -	@$(srctree)/scripts/sphinx-pre-install --version-check
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install --version-check
>>  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,latex,$(var),latex,$(var)))
>>  
>>  ifeq ($(HAVE_PDFLATEX),0)
>> @@ -97,7 +97,7 @@ pdfdocs:
>>  else # HAVE_PDFLATEX
>>  
>>  pdfdocs: latexdocs
>> -	@$(srctree)/scripts/sphinx-pre-install --version-check
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install --version-check
>>  	$(foreach var,$(SPHINXDIRS), \
>>  	   $(MAKE) PDFLATEX="$(PDFLATEX)" LATEXOPTS="$(LATEXOPTS)" -C $(BUILDDIR)/$(var)/latex || exit; \
>>  	   mkdir -p $(BUILDDIR)/$(var)/pdf; \
>> @@ -107,11 +107,11 @@ pdfdocs: latexdocs
>>  endif # HAVE_PDFLATEX
>>  
>>  epubdocs:
>> -	@$(srctree)/scripts/sphinx-pre-install --version-check
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install --version-check
>>  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,epub,$(var),epub,$(var)))
>>  
>>  xmldocs:
>> -	@$(srctree)/scripts/sphinx-pre-install --version-check
>> +	@$(PERL) $(srctree)/scripts/sphinx-pre-install --version-check
>>  	@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,xml,$(var),xml,$(var)))
>>  
>>  endif # HAVE_SPHINX
>> @@ -120,7 +120,7 @@ endif # HAVE_SPHINX
>>  # work or silently pass without Sphinx.
>>  
>>  refcheckdocs:
>> -	$(Q)cd $(srctree);scripts/documentation-file-ref-check
>> +	$(Q)cd $(srctree);$(PERL) scripts/documentation-file-ref-check
>>  
>>  cleandocs:
>>  	$(Q)rm -rf $(BUILDDIR)
>> diff --git a/Documentation/userspace-api/media/Makefile b/Documentation/userspace-api/media/Makefile
>> index 81a4a1a53bce..5919b3e749fe 100644
>> --- a/Documentation/userspace-api/media/Makefile
>> +++ b/Documentation/userspace-api/media/Makefile
>> @@ -13,11 +13,11 @@ FILES = audio.h.rst ca.h.rst dmx.h.rst frontend.h.rst net.h.rst video.h.rst \
>>  TARGETS := $(addprefix $(BUILDDIR)/, $(FILES))
>>  
>>  gen_rst = \
>> -	echo ${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions; \
>> -	${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
>> +	echo $(PERL) ${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions; \
>> +	$(PERL) ${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
>>  
>>  quiet_gen_rst = echo '  PARSE   $(patsubst $(srctree)/%,%,$<)'; \
>> -	${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
>> +	$(PERL) ${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
>>  
>>  silent_gen_rst = ${gen_rst}
>>  
>> diff --git a/Makefile b/Makefile
>> index f93dbae71248..5f1399a576d4 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1258,7 +1258,7 @@ include/generated/utsrelease.h: include/config/kernel.release FORCE
>>  PHONY += headerdep
>>  headerdep:
>>  	$(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \
>> -	$(srctree)/scripts/headerdep.pl -I$(srctree)/include
>> +	$(PERL) $(srctree)/scripts/headerdep.pl -I$(srctree)/include
>>  
>>  # ---------------------------------------------------------------------------
>>  # Kernel headers
>> @@ -1314,7 +1314,7 @@ PHONY += kselftest-merge
>>  kselftest-merge:
>>  	$(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
>>  	$(Q)find $(srctree)/tools/testing/selftests -name config | \
>> -		xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
>> +		xargs $(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
>>  	$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
>>  
>>  # ---------------------------------------------------------------------------
>> diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
>> index de981f7b4546..30fe93bb5488 100644
>> --- a/arch/arm64/kernel/vdso/Makefile
>> +++ b/arch/arm64/kernel/vdso/Makefile
>> @@ -65,7 +65,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
>>  # Generate VDSO offsets using helper script
>>  gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
>>  quiet_cmd_vdsosym = VDSOSYM $@
>> -      cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
>> +      cmd_vdsosym = $(NM) $< | $(CONFIG_SHELL) $(gen-vdsosym) | LC_ALL=C sort > $@
>>  
>>  include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
>>  	$(call if_changed,vdsosym)
>> diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
>> index 572475b7b7ed..4f8fe34bc75a 100644
>> --- a/arch/arm64/kernel/vdso32/Makefile
>> +++ b/arch/arm64/kernel/vdso32/Makefile
>> @@ -205,7 +205,7 @@ quiet_cmd_vdsomunge = MUNGE   $@
>>  gen-vdsosym := $(srctree)/$(src)/../vdso/gen_vdso_offsets.sh
>>  quiet_cmd_vdsosym = VDSOSYM $@
>>  # The AArch64 nm should be able to read an AArch32 binary
>> -      cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
>> +      cmd_vdsosym = $(NM) $< | $(CONFIG_SHELL) $(gen-vdsosym) | LC_ALL=C sort > $@
>>  
>>  # Install commands for the unstripped file
>>  quiet_cmd_vdso_install = INSTALL32 $@
>> diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
>> index 2876a7df1b0a..3e97ad2235d2 100644
>> --- a/arch/ia64/Makefile
>> +++ b/arch/ia64/Makefile
>> @@ -28,8 +28,8 @@ cflags-y	:= -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f12-f15,f32-f127 \
>>  		   -falign-functions=32 -frename-registers -fno-optimize-sibling-calls
>>  KBUILD_CFLAGS_KERNEL := -mconstant-gp
>>  
>> -GAS_STATUS	= $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
>> -KBUILD_CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
>> +GAS_STATUS	= $(shell $(CONFIG_SHELL) $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
>> +KBUILD_CPPFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
>>
> 
> That is duplicate. Drop shell.
>   
>>  ifeq ($(GAS_STATUS),buggy)
>>  $(error Sorry, you need a newer version of the assember, one that is built from	\
>> diff --git a/arch/nds32/kernel/vdso/Makefile b/arch/nds32/kernel/vdso/Makefile
>> index 55df25ef0057..e77d4bcfa7c1 100644
>> --- a/arch/nds32/kernel/vdso/Makefile
>> +++ b/arch/nds32/kernel/vdso/Makefile
>> @@ -39,7 +39,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
>>  # Generate VDSO offsets using helper script
>>  gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
>>  quiet_cmd_vdsosym = VDSOSYM $@
>> -      cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
>> +      cmd_vdsosym = $(NM) $< | $(CONFIG_SHELL) $(gen-vdsosym) | LC_ALL=C sort > $@
>>
> 
> I guess it is better to modify gen-vdsosym.

Do you mean something as follows:
gen-vdsosym := $(CONFIG_SHELL) $(srctree)/$(src)/gen_vdso_offsets.sh

If so, I have never seen that style in the build files. Infact, the current
style is followed at many places.
For instance,
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/scripts/Makefile.lib?h=next-20201001#n398
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm/tools/Makefile?h=next-20201001#n50

> 
>   
>>  include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
>>  	$(call if_changed,vdsosym)
>> diff --git a/drivers/staging/comedi/drivers/ni_routing/tools/Makefile b/drivers/staging/comedi/drivers/ni_routing/tools/Makefile
>> index 6e92a06a44cb..1d4635320fdb 100644
>> --- a/drivers/staging/comedi/drivers/ni_routing/tools/Makefile
>> +++ b/drivers/staging/comedi/drivers/ni_routing/tools/Makefile
>> @@ -42,14 +42,14 @@ ni_values.py: convert_c_to_py
>>  	./convert_c_to_py
>>  
>>  csv-files : ni_values.py comedi_h.py
>> -	./convert_py_to_csv.py
>> +	$(PYTHON3) ./convert_py_to_csv.py
>>  
>>  csv-blank :
>> -	./make_blank_csv.py
>> +	$(PYTHON3) ./make_blank_csv.py
>>  	@echo New blank csv signal table in csv/blank_route_table.csv
>>  
>>  c-files : comedi_h.py
>> -	./convert_csv_to_c.py --route_values --device_routes
>> +	$(PYTHON3) ./convert_csv_to_c.py --route_values --device_routes
>>  
>>  ROUTE_VALUES_SRC=$(wildcard ../ni_route_values/*.c)
>>  DEVICE_ROUTES_SRC=$(wildcard ../ni_device_routes/*.c)
>> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
>> index a467b9323442..893217ee4a17 100644
>> --- a/scripts/Makefile.build
>> +++ b/scripts/Makefile.build
>> @@ -104,7 +104,7 @@ else ifeq ($(KBUILD_CHECKSRC),2)
>>  endif
>>  
>>  ifneq ($(KBUILD_EXTRA_WARN),)
>> -  cmd_checkdoc = $(srctree)/scripts/kernel-doc -none $<
>> +  cmd_checkdoc = $(PERL) $(srctree)/scripts/kernel-doc -none $<
>>  endif
>>  
>>  # Compile C sources (.c)
>> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
>> index f952fb64789d..4fc16c4776cc 100644
>> --- a/scripts/Makefile.package
>> +++ b/scripts/Makefile.package
>> @@ -44,7 +44,7 @@ if test "$(objtree)" != "$(srctree)"; then \
>>  	echo >&2; \
>>  	false; \
>>  fi ; \
>> -$(srctree)/scripts/setlocalversion --save-scmversion; \
>> +$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion; \
>>  tar -I $(KGZIP) -c $(RCS_TAR_IGNORE) -f $(2).tar.gz \
>>  	--transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3); \
>>  rm -f $(objtree)/.scmversion
>> @@ -123,7 +123,7 @@ git --git-dir=$(srctree)/.git archive --prefix=$(perf-tar)/         \
>>  mkdir -p $(perf-tar);                                               \
>>  git --git-dir=$(srctree)/.git rev-parse HEAD > $(perf-tar)/HEAD;    \
>>  (cd $(srctree)/tools/perf;                                          \
>> -util/PERF-VERSION-GEN $(CURDIR)/$(perf-tar)/);              \
>> +$(CONFIG_SHELL) util/PERF-VERSION-GEN $(CURDIR)/$(perf-tar)/);              \
>>  tar rf $(perf-tar).tar $(perf-tar)/HEAD $(perf-tar)/PERF-VERSION-FILE; \
>>  rm -r $(perf-tar);                                                  \
>>  $(if $(findstring tar-src,$@),,                                     \
>> diff --git a/tools/bootconfig/Makefile b/tools/bootconfig/Makefile
>> index da5975775337..b6aee03a6ca9 100644
>> --- a/tools/bootconfig/Makefile
>> +++ b/tools/bootconfig/Makefile
>> @@ -21,7 +21,7 @@ $(OUTPUT)bootconfig: main.c $(LIBSRC)
>>  	$(CC) $(filter %.c,$^) $(CFLAGS) -o $@
>>  
>>  test: $(ALL_PROGRAMS) test-bootconfig.sh
>> -	./test-bootconfig.sh $(OUTPUT)
>> +	$(CONFIG_SHELL) ./test-bootconfig.sh $(OUTPUT)
>>  
>>  install: $(ALL_PROGRAMS)
>>  	install $(OUTPUT)bootconfig $(DESTDIR)$(bindir)
>> diff --git a/tools/bpf/Makefile.helpers b/tools/bpf/Makefile.helpers
>> index 854d084026dd..6f2b042ff719 100644
>> --- a/tools/bpf/Makefile.helpers
>> +++ b/tools/bpf/Makefile.helpers
>> @@ -35,7 +35,7 @@ man7: $(DOC_MAN7)
>>  RST2MAN_DEP := $(shell command -v rst2man 2>/dev/null)
>>  
>>  $(OUTPUT)$(HELPERS_RST): $(UP2DIR)../../include/uapi/linux/bpf.h
>> -	$(QUIET_GEN)$(UP2DIR)../../scripts/bpf_helpers_doc.py --filename $< > $@
>> +	$(QUIET_GEN)$(PYTHON3) $(UP2DIR)../../scripts/bpf_helpers_doc.py --filename $< > $@
>>  
>>  $(OUTPUT)%.7: $(OUTPUT)%.rst
>>  ifndef RST2MAN_DEP
>> diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
>> index f43249696d9f..8a3f7399568f 100644
>> --- a/tools/lib/bpf/Makefile
>> +++ b/tools/lib/bpf/Makefile
>> @@ -179,7 +179,7 @@ $(BPF_IN_STATIC): force elfdep zdep bpfdep $(BPF_HELPER_DEFS)
>>  	$(Q)$(MAKE) $(build)=libbpf OUTPUT=$(STATIC_OBJDIR)
>>  
>>  $(BPF_HELPER_DEFS): $(srctree)/tools/include/uapi/linux/bpf.h
>> -	$(QUIET_GEN)$(srctree)/scripts/bpf_helpers_doc.py --header \
>> +	$(QUIET_GEN)$(PYTHON3) $(srctree)/scripts/bpf_helpers_doc.py --header \
>>  		--file $(srctree)/tools/include/uapi/linux/bpf.h > $(BPF_HELPER_DEFS)
>>  
>>  $(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION)
>> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
>> index 6031167939ae..42f797e541d0 100644
>> --- a/tools/perf/Makefile.perf
>> +++ b/tools/perf/Makefile.perf
>> @@ -229,7 +229,7 @@ goals := $(filter-out all sub-make, $(MAKECMDGOALS))
>>  $(goals) all: sub-make
>>  
>>  sub-make: fixdep
>> -	@./check-headers.sh
>> +	$(Q)$(SHELL) ./check-headers.sh
>>  	$(Q)$(MAKE) FIXDEP=1 -f Makefile.perf $(goals)
>>  
>>  else # force_fixdep
>> diff --git a/tools/power/cpupower/Makefile b/tools/power/cpupower/Makefile
>> index c7bcddbd486d..b683e774f5e3 100644
>> --- a/tools/power/cpupower/Makefile
>> +++ b/tools/power/cpupower/Makefile
>> @@ -51,7 +51,7 @@ DESTDIR ?=
>>  # Package-related definitions. Distributions can modify the version
>>  # and _should_ modify the PACKAGE_BUGREPORT definition
>>  
>> -VERSION:=			$(shell ./utils/version-gen.sh)
>> +VERSION:=			$(shell $(CONFIG_SHELL) ./utils/version-gen.sh)
> 
> Duplicate shell.
> 
>>  LIB_MAJ=			0.0.1
>>  LIB_MIN=			0
>>  
>> diff --git a/tools/testing/selftests/rcutorture/Makefile b/tools/testing/selftests/rcutorture/Makefile
>> index 5202dc666206..011a6990e8ac 100644
>> --- a/tools/testing/selftests/rcutorture/Makefile
>> +++ b/tools/testing/selftests/rcutorture/Makefile
>> @@ -1,3 +1,3 @@
>>  # SPDX-License-Identifier: GPL-2.0+
>>  all:
>> -	( cd ../../../..; tools/testing/selftests/rcutorture/bin/kvm.sh --duration 10 --configs TREE01 )
>> +	( cd ../../../..; $(CONFIG_SHELL) tools/testing/selftests/rcutorture/bin/kvm.sh --duration 10 --configs TREE01 )
>> diff --git a/tools/testing/selftests/rseq/Makefile b/tools/testing/selftests/rseq/Makefile
>> index 2af9d39a9716..6b0ae924cc7e 100644
>> --- a/tools/testing/selftests/rseq/Makefile
>> +++ b/tools/testing/selftests/rseq/Makefile
>> @@ -17,7 +17,7 @@ TEST_GEN_PROGS = basic_test basic_percpu_ops_test param_test \
>>  
>>  TEST_GEN_PROGS_EXTENDED = librseq.so
>>  
>> -TEST_PROGS = run_param_test.sh
>> +TEST_PROGS = $(CONFIG_SHELL) run_param_test.sh
>>  
>>  TEST_FILES := settings
>>  
>> diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
>> index 30873b19d04b..a67a19a36cde 100644
>> --- a/tools/testing/selftests/vm/Makefile
>> +++ b/tools/testing/selftests/vm/Makefile
>> @@ -40,9 +40,9 @@ TEST_GEN_FILES += userfaultfd
>>  TEST_GEN_FILES += khugepaged
>>  
>>  ifeq ($(ARCH),x86_64)
>> -CAN_BUILD_I386 := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_32bit_program.c -m32)
>> -CAN_BUILD_X86_64 := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_64bit_program.c)
>> -CAN_BUILD_WITH_NOPIE := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_program.c -no-pie)
>> +CAN_BUILD_I386 := $(shell $(CONFIG_SHELL) ./../x86/check_cc.sh $(CC) ../x86/trivial_32bit_program.c -m32)
>> +CAN_BUILD_X86_64 := $(shell $(CONFIG_SHELL) ./../x86/check_cc.sh $(CC) ../x86/trivial_64bit_program.c)
>> +CAN_BUILD_WITH_NOPIE := $(shell $(CONFIG_SHELL) ./../x86/check_cc.sh $(CC) ../x86/trivial_program.c -no-pie)
>>  
>>  TARGETS := protection_keys
>>  BINARIES_32 := $(TARGETS:%=%_32)
>> diff --git a/tools/testing/selftests/wireguard/qemu/Makefile b/tools/testing/selftests/wireguard/qemu/Makefile
>> index 4bdd6c1a19d3..d24f3efb2633 100644
>> --- a/tools/testing/selftests/wireguard/qemu/Makefile
>> +++ b/tools/testing/selftests/wireguard/qemu/Makefile
>> @@ -255,8 +255,8 @@ $(KERNEL_BUILD_PATH)/.config: kernel.config arch/$(ARCH).config
>>  	printf 'CONFIG_NR_CPUS=$(NR_CPUS)\nCONFIG_INITRAMFS_SOURCE="$(BUILD_PATH)/init-cpio-spec.txt"\n' >> $(KERNEL_BUILD_PATH)/minimal.config
>>  	cat arch/$(ARCH).config >> $(KERNEL_BUILD_PATH)/minimal.config
>>  	$(MAKE) -C $(KERNEL_PATH) O=$(KERNEL_BUILD_PATH) ARCH=$(KERNEL_ARCH) allnoconfig
>> -	cd $(KERNEL_BUILD_PATH) && ARCH=$(KERNEL_ARCH) $(KERNEL_PATH)/scripts/kconfig/merge_config.sh -n $(KERNEL_BUILD_PATH)/.config $(KERNEL_BUILD_PATH)/minimal.config
>> -	$(if $(findstring yes,$(DEBUG_KERNEL)),cp debug.config $(KERNEL_BUILD_PATH) && cd $(KERNEL_BUILD_PATH) && ARCH=$(KERNEL_ARCH) $(KERNEL_PATH)/scripts/kconfig/merge_config.sh -n $(KERNEL_BUILD_PATH)/.config debug.config,)
>> +	cd $(KERNEL_BUILD_PATH) && ARCH=$(KERNEL_ARCH) $(CONFIG_SHELL) $(KERNEL_PATH)/scripts/kconfig/merge_config.sh -n $(KERNEL_BUILD_PATH)/.config $(KERNEL_BUILD_PATH)/minimal.config
>> +	$(if $(findstring yes,$(DEBUG_KERNEL)),cp debug.config $(KERNEL_BUILD_PATH) && cd $(KERNEL_BUILD_PATH) && ARCH=$(KERNEL_ARCH) $(CONFIG_SHELL) $(KERNEL_PATH)/scripts/kconfig/merge_config.sh -n $(KERNEL_BUILD_PATH)/.config debug.config,)
>>  
>>  $(KERNEL_BZIMAGE): $(KERNEL_BUILD_PATH)/.config $(BUILD_PATH)/init-cpio-spec.txt $(MUSL_PATH)/lib/libc.so $(IPERF_PATH)/src/iperf3 $(IPUTILS_PATH)/ping $(BASH_PATH)/bash $(IPROUTE2_PATH)/misc/ss $(IPROUTE2_PATH)/ip/ip $(IPTABLES_PATH)/iptables/xtables-legacy-multi $(NMAP_PATH)/ncat/ncat $(WIREGUARD_TOOLS_PATH)/src/wg $(BUILD_PATH)/init ../netns.sh $(WIREGUARD_SOURCES)
>>  	$(MAKE) -C $(KERNEL_PATH) O=$(KERNEL_BUILD_PATH) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
>> diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
>> index 6703c7906b71..eb2c1025def0 100644
>> --- a/tools/testing/selftests/x86/Makefile
>> +++ b/tools/testing/selftests/x86/Makefile
>> @@ -6,9 +6,9 @@ include ../lib.mk
>>  .PHONY: all all_32 all_64 warn_32bit_failure clean
>>  
>>  UNAME_M := $(shell uname -m)
>> -CAN_BUILD_I386 := $(shell ./check_cc.sh $(CC) trivial_32bit_program.c -m32)
>> -CAN_BUILD_X86_64 := $(shell ./check_cc.sh $(CC) trivial_64bit_program.c)
>> -CAN_BUILD_WITH_NOPIE := $(shell ./check_cc.sh $(CC) trivial_program.c -no-pie)
>> +CAN_BUILD_I386 := $(shell $(SHELL) ./check_cc.sh $(CC) trivial_32bit_program.c -m32)
>> +CAN_BUILD_X86_64 := $(shell $(SHELL) ./check_cc.sh $(CC) trivial_64bit_program.c)
>> +CAN_BUILD_WITH_NOPIE := $(shell $(SHELL) ./check_cc.sh $(CC) trivial_program.c -no-pie)
>>  
>>  TARGETS_C_BOTHBITS := single_step_syscall sysret_ss_attrs syscall_nt test_mremap_vdso \
>>  			check_initial_reg_state sigreturn iopl ioperm \
>> -- 
>> 2.26.2
>>
>>



More information about the Linux-kernel-mentees mailing list