[Linux-kernel-mentees] [PATCH] kconfig: Prepend interpeters when calling scripts

Lukas Bulwahn lukas.bulwahn at gmail.com
Sat Sep 26 05:54:23 UTC 2020

On Sat, 26 Sep 2020, Ujjwal Kumar wrote:
> To unset the executable bit I ran following command:
> for i in $(find -executable -type f); do chmod -x $i; done
> One thing that I noticed is, once we initiate a kernel build some 
> programs are compiled and removing their executable bit is not desirable.
> Even after performing "make clean" some of those programs still persist and 
> removing their executable bit fails any further attempt to build the kernel.
> For instance, tools/objtool/objtool file. In my case I had a total of 19 
> files remaining after performing make clean.

Good observation.

You can properly clean your build with make mrproper, but maybe that is 
not even enough... all generated files might not mean _all generated 
tools_, such as objtool, etc.

$ make help

Cleaning targets:
  clean		  - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper	  - Remove all generated files + config + various backup files
  distclean	  - mrproper + remove editor backup and patch files


After for i in $(find -executable -type f); do chmod -x $i; done:
I saw those failures (probably as you did as well):

*** Default configuration is based on 'x86_64_defconfig'
sh: 1: ./scripts/gcc-version.sh: Permission denied
init/Kconfig:34: syntax error
init/Kconfig:33: invalid statement
init/Kconfig:34: invalid statement
sh: 1: ./scripts/ld-version.sh: Permission denied
init/Kconfig:39: syntax error
init/Kconfig:38: invalid statement
sh: 1: ./scripts/clang-version.sh: Permission denied
init/Kconfig:49: syntax error
init/Kconfig:48: invalid statement
scripts/kconfig/Makefile:80: recipe for target 'defconfig' failed
make[1]: *** [defconfig] Error 1
Makefile:606: recipe for target 'defconfig' failed
make: *** [defconfig] Error 2

After your patch was applied, they disappear. So, it does the job.
More comments on the patch itself later.

make defconfig works.

make then fails:

HOSTCC   /home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool/fixdep.o
/bin/sh: 1: /home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool//fixdep: Permission denied
/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/build/Makefile.build:96: recipe for target 
'/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool/fixdep.o' failed
make[4]: *** [/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool/fixdep.o] Error 126
Makefile:43: recipe for target '/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool/fixdep-in.o' failed
make[3]: *** [/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/objtool/fixdep-in.o] Error 2
/home/lukas/repositories/kernel.org/pub/scm/linux/kernel/git/torvalds/linux/tools/build/Makefile.include:5: recipe for target 'fixdep' failed
make[2]: *** [fixdep] Error 2
Makefile:68: recipe for target 'objtool' failed
make[1]: *** [objtool] Error 2
Makefile:1885: recipe for target 'tools/objtool' failed
make: *** [tools/objtool] Error 2
make: *** Waiting for unfinished jobs....

The make target also goes into tools/build/ and requires some targets 
there and then uses those tools during the further build.

So, we need some more patches here as well.

Can you share the list of 19 files that remained even with make clean?

Then, we go through them and check if they disappear with make mrproper or 
with a different make target to clean them. Potentially, we also hook 
those identified targets up into make mrproper then.


More information about the Linux-kernel-mentees mailing list