[OE-core] [RFC] don't run make clean on kernel_do_install

Koen Kooi koen at dominion.thruhere.net
Mon Apr 25 18:28:07 UTC 2011


Op 25 apr 2011, om 19:10 heeft Darren Hart het volgende geschreven:

> Hi Koen,
> 
> On 04/23/2011 07:47 AM, Koen Kooi wrote:
>> Hi,
>> 
>> Over the holidays I was trying to build some externel kernel modules
>> and they failed to build because linux/bounds.h wasn't in sysroots.
>> 
> 
> 
> According the the linux Makefile:
> 
> ###
> # Cleaning is done on three levels.
> # make clean     Delete most generated files
> #                Leave enough to build external modules
> 
> The kernel Makefile should not be deleting it.
> 
> And indeed:
> https://bugzilla.kernel.org/show_bug.cgi?id=11475
> 
> This was addressed by the following in 2.6.27:
> 7d3cc8b6d899e53222c22a78d98bb53a695f7962
> Don't clean bounds.h and asm-offsets.h
> 
> Later, bounds.h moved as well in 2.6.33:
> 01fc0ac198eabcbf460e1ed058860a935b6c2c9a
> kbuild: move bounds.h to include/generated
> 
> 
> Which kernel version are you attempting to build?

The 2.6.32 kernel from TI

> 
> We shouldn't add code to address a bug in a specific kernel version in a
> kernel base class. That belongs in the specific recipe. I suggest trying
> to add the 7d3cc8b6d899e53222c22a78d98bb53a695f7962 patch to your kernel
> recipe and see if that resolves the issue for you without resorting to
> recreating the clean process in the base class.

That's already in :(

koen at dominion:/OE/tentacle/build/tmp-angstrom_2010_x/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r99a+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git$ grep bound Kbuild 
# 1) Generate bounds.h
# 2) Generate asm-offsets.h (may need bounds.h)
# 1) Generate bounds.h
bounds-file := include/linux/bounds.h
always  := $(bounds-file)
targets := $(bounds-file) kernel/bounds.s
quiet_cmd_bounds = GEN     $@
define cmd_bounds
kernel/bounds.s: kernel/bounds.c FORCE
$(obj)/$(bounds-file): kernel/bounds.s Kbuild
	$(call cmd,bounds)
                                      $(obj)/$(bounds-file) FORCE
clean-files := $(addprefix $(objtree)/,$(filter-out $(bounds-file) $(offsets-file),$(targets)))

I'll dig a bit deeper to see why bounds.h is getting cleaned.

regards,

Koen


> 
> --
> Darren
> 
>> I did this quick hack to work around it:
>> 
>> --- a/meta-oe/classes/kernel.bbclass
>> +++ b/meta-oe/classes/kernel.bbclass
>> @@ -159,7 +159,8 @@ kernel_do_install() {
>>        # we clean the scripts dir while leaving the generated config
>>        # and include files.
>>        #
>> -       oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean
>> +       find $kerneldir -name "*.o" -delete
>> +       #oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}"
> clean
>>        make -C $kerneldir _mrproper_scripts
>>        find $kerneldir -path $kerneldir/scripts -prune -o -name
> "*.[csS]" -exec rm '{}' \;
>>        find $kerneldir/Documentation -name "*.txt" -exec rm '{}' \;
>> 
>> I'm not convinced that the above is the right way to solve it, but I
>> lack the required kbuild knowledge to come up with a better one. Does
>> anyone have a hint on how to approach this problem in a better way?
>> 
>> regards,
>> 
>> Koen
> 
> -- 
> Darren Hart
> Intel Open Source Technology Center
> Yocto Project - Linux Kernel





More information about the Openembedded-core mailing list