Re: [yocto] COMPATIBLE_MACHINE not honored in native extended recipes

2018-01-12 Thread akuster808


On 01/12/2018 07:14 AM, Paulo Neves wrote:
> Hello I am having a problem where I want a recipe, along with its
> -native version to only be available when allowed by compatible
> machine.

 This change should go to the openembedded-core mailing list with a
particular subject line format.

please try:
git send-email -1 -M --to  openembedded-c...@lists.openembedded.org
--subject-prefix=PATCH

Thanks for the fix.

Regards,
Armin

> In the non native case, COMPATIBLE_MACHINE is correctly honored. But
> in the -native version the COMPATIBLE_MACHINE is not honored because
> in the native.bbclass there is:
>
> MACHINEOVERRIDES = ""
>
> This change was introduced in d09e6d883042e5d094cd08d829327c4bbbfae135.
> While the explanation provided by the commit is accurate for specific
> case mentioned it also breaks the COMPATIBLE_MACHINE mechanism which
> relies on the MACHINEOVERRIDES variable.
>
> Further evidence that this was not intended is that the exception text is 
> false:
>
> ERROR: Nothing PROVIDES 'x-filter-native'
> x-filter-native was skipped: incompatible with machine m1 (not in
> COMPATIBLE_MACHINE)
>
> And the x-filter-native'.bb recipe header contains:
>
> COMPATIBLE_MACHINE = "^m1$"
>
>
> So the exception uses ${MACHINE} to report that a ${MACHINEOVERRIDE}
> was not matched with the COMPATIBLE_MACHINE, which is a false
> statement.
>
> My solution is very simple and does not break the fix that
> d09e6d883042e5d094cd08d829327c4bbbfae135 did:
>
>

-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


[yocto] COMPATIBLE_MACHINE not honored in native extended recipes

2018-01-12 Thread Paulo Neves
Hello I am having a problem where I want a recipe, along with its
-native version to only be available when allowed by compatible
machine.

In the non native case, COMPATIBLE_MACHINE is correctly honored. But
in the -native version the COMPATIBLE_MACHINE is not honored because
in the native.bbclass there is:

MACHINEOVERRIDES = ""

This change was introduced in d09e6d883042e5d094cd08d829327c4bbbfae135.
While the explanation provided by the commit is accurate for specific
case mentioned it also breaks the COMPATIBLE_MACHINE mechanism which
relies on the MACHINEOVERRIDES variable.

Further evidence that this was not intended is that the exception text is false:

ERROR: Nothing PROVIDES 'x-filter-native'
x-filter-native was skipped: incompatible with machine m1 (not in
COMPATIBLE_MACHINE)

And the x-filter-native'.bb recipe header contains:

COMPATIBLE_MACHINE = "^m1$"


So the exception uses ${MACHINE} to report that a ${MACHINEOVERRIDE}
was not matched with the COMPATIBLE_MACHINE, which is a false
statement.

My solution is very simple and does not break the fix that
d09e6d883042e5d094cd08d829327c4bbbfae135 did:
From 8b78c81dc1d21bc23aeb1387c201e090f031a14a Mon Sep 17 00:00:00 2001
From: Paulo Neves 
Date: Fri, 12 Jan 2018 15:58:39 +0100
Subject: [PATCH 1/1] Fix COMPATIBLE_MACHINE for -native recipe variants.

Hello I am having a problem where I want a recipe, along
with its -native version to only be available when allowed
by compatible machine.

In the non native case, COMPATIBLE_MACHINE is correctly
honored. But in the -native version the COMPATIBLE_MACHINE
is not honored because in the native.bbclass there is:

MACHINEOVERRIDES = ""

This change was introduced in
d09e6d883042e5d094cd08d829327c4bbbfae135.
While the explanation provided by the commit is accurate for
specific case mentioned it also breaks the
COMPATIBLE_MACHINE mechanism which relies on the
MACHINEOVERRIDES variable.

Further evidence that this was not intended is that the
exception text is false:

ERROR: Nothing PROVIDES 'x-filter-native'
x-filter-native was skipped: incompatible with machine m1
(not in COMPATIBLE_MACHINE)

And the x-filter-native'.bb recipe header contains:

COMPATIBLE_MACHINE = "^m1$"

So the exception uses ${MACHINE} to report that a
${MACHINEOVERRIDE} was not matched with the
COMPATIBLE_MACHINE, which is a false statement.

This fix attempts to correct the issue with minimal
changes.

Change-Id: If5085e4e92550b8154033dd56149eb4e358ef266
---
 meta/classes/base.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index c3c2669939c6f0b9080727378a26a324072d7e51..b4051102d0eccfb576d8b76f6f47ce8cd763af55 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -473,7 +473,7 @@ python () {
 need_machine = d.getVar('COMPATIBLE_MACHINE', True)
 if need_machine:
 import re
-compat_machines = (d.getVar('MACHINEOVERRIDES', True) or "").split(":")
+compat_machines = (d.getVar('MACHINEOVERRIDES', True) or d.getVar('MACHINE', True)).split(":")
 for m in compat_machines:
 if re.match(need_machine, m):
 break
-- 
2.6.2

-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto