[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.
Lukas
More information about the Linux-kernel-mentees
mailing list