[OE-core] [PATCH 2/2] kernel.bbclass: Make tree available for cross building external modules

Khem Raj raj.khem at gmail.com
Wed Jul 11 14:25:30 UTC 2012


On Wed, Jul 11, 2012 at 3:30 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> On Tue, 2012-07-10 at 10:07 -0700, Khem Raj wrote:
>> We shave too much from kernel sources for making it work
>> for on device external kernel module development that cross
>> development of external modules wont work from same tree
>> anymore. This patch makes a copy of tree which will eventually
>> be staged for building external modules
>
> It sounds from the further discussion that there is more to the patch
> than just this. Firstly, a change like this needs a more precise
> description.
>
> Secondly, we're copying around *way* to much data in this approach. I'd
> like to suggest an improvement but can't since the description above is
> lacking, I can't even understand what the problem is you're trying to
> fix.

alright. There are tools (especially in scripts/) which are made for
buildhost when compiling the kernel irrespective of cross
or native. The tools like fixdep, recordmcount etc. which are needed
to run when you build kernel itself as well as external
modules. Now we do 'make _mproper_scripts' which cleans all those
binaries. We do this because we want to ship kernel-dev
and packaging binaries for different host wont be allowed in a target
package. So we chose to delete them and then on device
regenerate them ( ideally I would have preferred to generate them
cross candian when making for target)

Deleting these tools also renders the cross building of modules
useless. Since I want to ship the sources as reference only
meaning people may not have write access to the kernel sources they
can not run make inside the kernel sources to regenerate
those binaries before they start building their external modules.

>
> So more discussion is needed.
>
> I have a suspicion that this fix only "happens" to work when SDKMACHINE
> == NATIVEMACHINE.
>

yes, for a full solution we have to generate two versions of
kernel-tools 1 for target and 1 for SDKMACHINE
however this at least brings back what we had.

> Cheers,
>
> Richard
>
>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>>  meta/classes/kernel.bbclass |   15 +++++++++++++--
>>  1 files changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 81c334b..b2b6fcd 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -80,6 +80,7 @@ KERNEL_ALT_IMAGETYPE ??= ""
>>  # Define where the kernel headers are installed on the target as well as where
>>  # they are staged.
>>  KERNEL_SRC_PATH = "/usr/src/kernel"
>> +UNPRUNED_KERNEL_SRC_PATH = "/usr/src/kernel-unpruned"
>>
>>  KERNEL_IMAGETYPE_FOR_MAKE = "${@(lambda s: s[:-3] if s[-3:] == ".gz" else s)(d.getVar('KERNEL_IMAGETYPE', True))}"
>>
>> @@ -135,7 +136,9 @@ kernel_do_install() {
>>       # kernel source tree.
>>       #
>>       kerneldir=${D}${KERNEL_SRC_PATH}
>> +     unrprunedkerneldir=${D}${UNPRUNED_KERNEL_SRC_PATH}
>>       install -d $kerneldir
>> +     install -d $unrprunedkerneldir
>>
>>       #
>>       # Store the kernel version in sysroots for module-base.bbclass
>> @@ -176,7 +179,6 @@ kernel_do_install() {
>>       # and include files.
>>       #
>>       oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean
>> -     make -C $kerneldir _mrproper_scripts
>>       find $kerneldir -path $kerneldir/lib -prune -o -path $kerneldir/tools -prune -o -path $kerneldir/scripts -prune -o -name "*.[csS]" -exec rm '{}' \;
>>       find $kerneldir/Documentation -name "*.txt" -exec rm '{}' \;
>>
>> @@ -186,6 +188,9 @@ kernel_do_install() {
>>       if [ ${ARCH} = "powerpc" ]; then
>>               cp arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o
>>       fi
>> +     # make a copy of unpruned kernel tree
>> +     cp -fR $kerneldir/* $unrprunedkerneldir
>> +     make -C $kerneldir _mrproper_scripts
>>
>>       # Remove the following binaries which cause strip or arch QA errors
>>       # during do_package for cross-compiled platforms
>> @@ -197,8 +202,14 @@ kernel_do_install() {
>>       done
>>  }
>>
>> +PACKAGE_PREPROCESS_FUNCS += "kernel_package_preprocess"
>> +
>> +kernel_package_preprocess () {
>> +     rm -rf ${PKGD}/${UNPRUNED_KERNEL_SRC_PATH}
>> +}
>> +
>>  sysroot_stage_all_append() {
>> -     sysroot_stage_dir ${D}${KERNEL_SRC_PATH} ${SYSROOT_DESTDIR}${KERNEL_SRC_PATH}
>> +     sysroot_stage_dir ${D}${UNPRUNED_KERNEL_SRC_PATH} ${SYSROOT_DESTDIR}${KERNEL_SRC_PATH}
>>  }
>>
>>  kernel_do_configure() {
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




More information about the Openembedded-core mailing list