[Linux-kernel-mentees] [PATCH] kconfig: Prepend interpeters when calling scripts
ujjwalkumar0501 at gmail.com
Sat Sep 26 09:23:35 UTC 2020
On 26/09/20 11:24 am, Lukas Bulwahn wrote:
> 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):
Yes these are the same errors that I received.
> *** 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: *** [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.
Yes, these errors appeared when we unset executable bits on files after
performing 'make clean' and then perform a kernel build.
> 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: *** [/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: *** [/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: *** [fixdep] Error 2
> Makefile:68: recipe for target 'objtool' failed
> make: *** [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?
After performing a make clean, the files that persist are:
After performing 'make mrproper'/'make distclean' the files that persist
> 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.
Is it appropriate to include the files here:
Or should it be included inside tools/objtool/Makefile here:
In the second link, it appears to me that the files are already included for
clean task but still they are not cleaned.
More information about the Linux-kernel-mentees