Patchwork linux-yocto: Use PACKAGE_ARCH in build dir

login
register
mail settings
Submitter Darren Hart
Date Feb. 6, 2014, 4:02 a.m.
Message ID <62909ce827461785e4f3f2ceaec04d08c7b47f17.1391659364.git.dvhart@linux.intel.com>
Download mbox | patch
Permalink /patch/66357/
State Accepted
Commit 5518885e41e884a98009310dbda174e6fbccb10e
Headers show

Comments

Darren Hart - Feb. 6, 2014, 4:02 a.m.
The current linux-yocto build dir (B) includes MACHINE. This has been
appropriate as kernels are typically built machine-specific. We have
recently introduced an intel-common type kernel which can be shared
across multiple machines sharing a common base (intel-core2-32,
intel-corei7-64). In these cases, the kernel is built for a something
more generic than MACHINE, and the current mechanism results in
something like this when building for MACHINE=sys940x (using intel-common):

tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-sys940x-noemgd-standard-build

Note the descrepancy between core2-32-intel-common and
linux-sys940x-noemgd-standard-build. This becomes counterintuitive at
the very least when switching to another machine and attempting to reuse
this build. This patch swaps MACHINE for PACKAGE_ARCH (which is
typically MACHINE_ARCH for linux-yocto), resulting in the following
build path:

tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-core2-32-intel-common-standard-build

The impact to existing MACHINEs is a replace of - with _ if MACHINE
contains one or more - charachters.

Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Cc: Bruce Ashfield <bruce.ashfield@windriver.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 meta/recipes-kernel/linux/linux-yocto.inc |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Bruce Ashfield - Feb. 6, 2014, 4:30 a.m.
On Wed, Feb 5, 2014 at 11:02 PM, Darren Hart <dvhart@linux.intel.com> wrote:
> The current linux-yocto build dir (B) includes MACHINE. This has been
> appropriate as kernels are typically built machine-specific. We have
> recently introduced an intel-common type kernel which can be shared
> across multiple machines sharing a common base (intel-core2-32,
> intel-corei7-64). In these cases, the kernel is built for a something
> more generic than MACHINE, and the current mechanism results in
> something like this when building for MACHINE=sys940x (using intel-common):
>
> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
> 3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-sys940x-noemgd-standard-build
>
> Note the descrepancy between core2-32-intel-common and
> linux-sys940x-noemgd-standard-build. This becomes counterintuitive at
> the very least when switching to another machine and attempting to reuse
> this build. This patch swaps MACHINE for PACKAGE_ARCH (which is
> typically MACHINE_ARCH for linux-yocto), resulting in the following
> build path:
>
> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
> 3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-core2-32-intel-common-standard-build
>
> The impact to existing MACHINEs is a replace of - with _ if MACHINE
> contains one or more - charachters.
>
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> Cc: Bruce Ashfield <bruce.ashfield@windriver.com>
> Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
>  meta/recipes-kernel/linux/linux-yocto.inc |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
> index 2bee042..4ed3188 100644
> --- a/meta/recipes-kernel/linux/linux-yocto.inc
> +++ b/meta/recipes-kernel/linux/linux-yocto.inc
> @@ -31,7 +31,7 @@ inherit kernel
>  inherit kernel-yocto
>  require linux-dtb.inc
>
> -B = "${WORKDIR}/linux-${MACHINE}-${LINUX_KERNEL_TYPE}-build"
> +B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"

But for truly machine specific kernel builds, won't this cause us collisions ?

Bruce

>
>  do_install_append(){
>         if [ -n "${KMETA}" ]; then
> --
> 1.7.9.5
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Darren Hart - Feb. 6, 2014, 5:20 a.m.
On 2/5/14, 20:30, "Bruce Ashfield" <bruce.ashfield@gmail.com> wrote:

>On Wed, Feb 5, 2014 at 11:02 PM, Darren Hart <dvhart@linux.intel.com>
>wrote:
>> The current linux-yocto build dir (B) includes MACHINE. This has been
>> appropriate as kernels are typically built machine-specific. We have
>> recently introduced an intel-common type kernel which can be shared
>> across multiple machines sharing a common base (intel-core2-32,
>> intel-corei7-64). In these cases, the kernel is built for a something
>> more generic than MACHINE, and the current mechanism results in
>> something like this when building for MACHINE=sys940x (using
>>intel-common):
>>
>> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
>> 
>>3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-sys940x-noemgd-standard-b
>>uild
>>
>> Note the descrepancy between core2-32-intel-common and
>> linux-sys940x-noemgd-standard-build. This becomes counterintuitive at
>> the very least when switching to another machine and attempting to reuse
>> this build. This patch swaps MACHINE for PACKAGE_ARCH (which is
>> typically MACHINE_ARCH for linux-yocto), resulting in the following
>> build path:
>>
>> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
>> 
>>3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-core2-32-intel-common-sta
>>ndard-build
>>
>> The impact to existing MACHINEs is a replace of - with _ if MACHINE
>> contains one or more - charachters.
>>
>> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
>> Cc: Bruce Ashfield <bruce.ashfield@windriver.com>
>> Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
>> ---
>>  meta/recipes-kernel/linux/linux-yocto.inc |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/meta/recipes-kernel/linux/linux-yocto.inc
>>b/meta/recipes-kernel/linux/linux-yocto.inc
>> index 2bee042..4ed3188 100644
>> --- a/meta/recipes-kernel/linux/linux-yocto.inc
>> +++ b/meta/recipes-kernel/linux/linux-yocto.inc
>> @@ -31,7 +31,7 @@ inherit kernel
>>  inherit kernel-yocto
>>  require linux-dtb.inc
>>
>> -B = "${WORKDIR}/linux-${MACHINE}-${LINUX_KERNEL_TYPE}-build"
>> +B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"
>
>But for truly machine specific kernel builds, won't this cause us
>collisions ?

I don't see how. Note the build paths above. For truly machine-specifc
builds, the WORKDIR is already machine-specific (because the PACKAGE_ARCH
is MACHINE_ARCH), so there is no need to specify the MACHINE in the S or B
dirs really at all. In fact, just calling this linux-build without any
other modifier would be fine I think. What I attempted here was in keeping
with the intent of the design: identify what we are building for in the B
dir.

--
Darren
Bruce Ashfield - Feb. 6, 2014, 5:27 a.m.
On Thu, Feb 6, 2014 at 12:20 AM, Darren Hart <dvhart@linux.intel.com> wrote:
> On 2/5/14, 20:30, "Bruce Ashfield" <bruce.ashfield@gmail.com> wrote:
>
>>On Wed, Feb 5, 2014 at 11:02 PM, Darren Hart <dvhart@linux.intel.com>
>>wrote:
>>> The current linux-yocto build dir (B) includes MACHINE. This has been
>>> appropriate as kernels are typically built machine-specific. We have
>>> recently introduced an intel-common type kernel which can be shared
>>> across multiple machines sharing a common base (intel-core2-32,
>>> intel-corei7-64). In these cases, the kernel is built for a something
>>> more generic than MACHINE, and the current mechanism results in
>>> something like this when building for MACHINE=sys940x (using
>>>intel-common):
>>>
>>> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
>>>
>>>3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-sys940x-noemgd-standard-b
>>>uild
>>>
>>> Note the descrepancy between core2-32-intel-common and
>>> linux-sys940x-noemgd-standard-build. This becomes counterintuitive at
>>> the very least when switching to another machine and attempting to reuse
>>> this build. This patch swaps MACHINE for PACKAGE_ARCH (which is
>>> typically MACHINE_ARCH for linux-yocto), resulting in the following
>>> build path:
>>>
>>> tmp/work/core2-32-intel-common-poky-linux/linux-yocto-dev/ \
>>>
>>>3.13++gitAUTOINC+e5d23e7879_889c6bec6b-r0/linux-core2-32-intel-common-sta
>>>ndard-build
>>>
>>> The impact to existing MACHINEs is a replace of - with _ if MACHINE
>>> contains one or more - charachters.
>>>
>>> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
>>> Cc: Bruce Ashfield <bruce.ashfield@windriver.com>
>>> Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
>>> ---
>>>  meta/recipes-kernel/linux/linux-yocto.inc |    2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/meta/recipes-kernel/linux/linux-yocto.inc
>>>b/meta/recipes-kernel/linux/linux-yocto.inc
>>> index 2bee042..4ed3188 100644
>>> --- a/meta/recipes-kernel/linux/linux-yocto.inc
>>> +++ b/meta/recipes-kernel/linux/linux-yocto.inc
>>> @@ -31,7 +31,7 @@ inherit kernel
>>>  inherit kernel-yocto
>>>  require linux-dtb.inc
>>>
>>> -B = "${WORKDIR}/linux-${MACHINE}-${LINUX_KERNEL_TYPE}-build"
>>> +B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"
>>
>>But for truly machine specific kernel builds, won't this cause us
>>collisions ?
>
> I don't see how. Note the build paths above. For truly machine-specifc
> builds, the WORKDIR is already machine-specific (because the PACKAGE_ARCH
> is MACHINE_ARCH), so there is no need to specify the MACHINE in the S or B
> dirs really at all. In fact, just calling this linux-build without any
> other modifier would be fine I think. What I attempted here was in keeping
> with the intent of the design: identify what we are building for in the B
> dir.

Right you are. For a machine specific kernel recipe, workdir will provide the
separation. I missed that. And yes, even though it is a bit redundant,
it is still
nice to keep that extra identifier in the buildir name.

So this is Ack'd from my side.

Bruce

>
> --
> Darren
>
>

Patch

diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 2bee042..4ed3188 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -31,7 +31,7 @@  inherit kernel
 inherit kernel-yocto
 require linux-dtb.inc
 
-B = "${WORKDIR}/linux-${MACHINE}-${LINUX_KERNEL_TYPE}-build"
+B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"
 
 do_install_append(){
 	if [ -n "${KMETA}" ]; then