Patchwork [RFC] bitbake.conf: make OVERRIDES match what people expect

login
register
mail settings
Submitter Koen Kooi
Date May 24, 2011, 2:04 p.m.
Message ID <1306245860-12820-1-git-send-email-koen@dominion.thruhere.net>
Download mbox | patch
Permalink /patch/4677/
State New, archived
Headers show

Comments

Koen Kooi - May 24, 2011, 2:04 p.m.
In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.

The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.

'failfast' has been removed since it's not used anymore, just like 'local'
---
 meta/conf/bitbake.conf |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)
Richard Purdie - May 24, 2011, 2:16 p.m.
On Tue, 2011-05-24 at 16:04 +0200, Koen Kooi wrote:
> In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.
> 
> The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.
> 
> 'failfast' has been removed since it's not used anymore, just like 'local'

I've been thinking through the different use cases and briefly talked
with Koen offlist about this. I think the revised order makes sense with
what users would expect and am happy to remove local and fail-fast as
overrides since we don't have people using them (local is pretty
weak/useless and fail-fast has only ever been used by gcc recipes
afaik).

Its a potentially disruptive change but one I do think we need to make.
We don't have many double/stacked overrides so there shouldn't be much
impact to existing metadata.

Cheers,

Richard



> ---
>  meta/conf/bitbake.conf |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index a0af672..59238b8 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -602,15 +602,15 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
>  # 
>  # This means that an envionment variable named '<foo>_arm' overrides an
>  # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
> -# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
> -# '<foo>_arm' when ${MACHINE} is 'ramses'. 
> -# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
> -# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
> -# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
> +# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
> +# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
> +# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
> +# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
> +# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
>  #
>  # This works for  functions as well, they are really just environment variables.
>  # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
> -OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
> +OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
>  DISTROOVERRIDES ?= "${DISTRO}"
>  MACHINEOVERRIDES ?= "${MACHINE}"
>
Khem Raj - May 24, 2011, 2:58 p.m.
Sent from my iPad

On May 24, 2011, at 7:16 AM, Richard Purdie <richard.purdie@linuxfoundation.org> wrote:

> On Tue, 2011-05-24 at 16:04 +0200, Koen Kooi wrote:
>> In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.
>> 
>> The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.
>> 
>> 'failfast' has been removed since it's not used anymore, just like 'local'
> 
> I've been thinking through the different use cases and briefly talked
> with Koen offlist about this. I think the revised order makes sense with
> what users would expect and am happy to remove local and fail-fast as
> overrides since we don't have people using them (local is pretty
> weak/useless and fail-fast has only ever been used by gcc recipes
> afaik).
> 

Local is useful when one has to override a hard assignment say from distro.conf
In local.conf AFAIR it did not worm without local override

> Its a potentially disruptive change but one I do think we need to make.
> We don't have many double/stacked overrides so there shouldn't be much
> impact to existing metadata.
> 
> Cheers,
> 
> Richard
> 
> 
> 
>> ---
>> meta/conf/bitbake.conf |   12 ++++++------
>> 1 files changed, 6 insertions(+), 6 deletions(-)
>> 
>> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
>> index a0af672..59238b8 100644
>> --- a/meta/conf/bitbake.conf
>> +++ b/meta/conf/bitbake.conf
>> @@ -602,15 +602,15 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
>> # 
>> # This means that an envionment variable named '<foo>_arm' overrides an
>> # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
>> -# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
>> -# '<foo>_arm' when ${MACHINE} is 'ramses'. 
>> -# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
>> -# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
>> -# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
>> +# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
>> +# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
>> +# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
>> +# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
>> +# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
>> #
>> # This works for  functions as well, they are really just environment variables.
>> # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
>> -OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
>> +OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
>> DISTROOVERRIDES ?= "${DISTRO}"
>> MACHINEOVERRIDES ?= "${MACHINE}"
>> 
> 
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Phil Blundell - May 24, 2011, 3:03 p.m.
On Tue, 2011-05-24 at 15:16 +0100, Richard Purdie wrote:
> I've been thinking through the different use cases and briefly talked
> with Koen offlist about this. I think the revised order makes sense with
> what users would expect and am happy to remove local and fail-fast as
> overrides since we don't have people using them (local is pretty
> weak/useless and fail-fast has only ever been used by gcc recipes
> afaik).

I've certainly found local useful in the past, though admittedly that
might have been in the days when it was the highest rather than lowest
priority OVERRIDE.  You might be right that it isn't a great deal of use
as it stands.

I agree that fail-fast should probably go away, but there is an existing
reference to it in gcc-cross_csl-arm-2008q1.bb and I think the patch
that removes the OVERRIDE should probably address that usage at the same
time.

What's "forcevariable" for?  I don't think we ever had that in oe, and
there don't seem to be any obvious users of it in oe-core either.

p.
Richard Purdie - May 24, 2011, 3:07 p.m.
On Tue, 2011-05-24 at 16:03 +0100, Phil Blundell wrote:
> On Tue, 2011-05-24 at 15:16 +0100, Richard Purdie wrote:
> > I've been thinking through the different use cases and briefly talked
> > with Koen offlist about this. I think the revised order makes sense with
> > what users would expect and am happy to remove local and fail-fast as
> > overrides since we don't have people using them (local is pretty
> > weak/useless and fail-fast has only ever been used by gcc recipes
> > afaik).
> 
> I've certainly found local useful in the past, though admittedly that
> might have been in the days when it was the highest rather than lowest
> priority OVERRIDE.  You might be right that it isn't a great deal of use
> as it stands.
> 
> I agree that fail-fast should probably go away, but there is an existing
> reference to it in gcc-cross_csl-arm-2008q1.bb and I think the patch
> that removes the OVERRIDE should probably address that usage at the same
> time.
> 
> What's "forcevariable" for?  I don't think we ever had that in oe, and
> there don't seem to be any obvious users of it in oe-core either.

It was added to poky with the intent of doing what "_local" would have
done before it was broken.

I think its a little safer than using "local" as the override keyword,
I'm open to opinion on whether it should be kept but it probably has
uses.

Cheers,

Richard
Phil Blundell - May 24, 2011, 3:15 p.m.
On Tue, 2011-05-24 at 16:07 +0100, Richard Purdie wrote:
> It was added to poky with the intent of doing what "_local" would have
> done before it was broken.
> 
> I think its a little safer than using "local" as the override keyword,
> I'm open to opinion on whether it should be kept but it probably has
> uses.

Ah, I see.  I must admit that I wouldn't have guessed that from the
name.

Maybe we should just delete both _local and _forcevariable from the
default OVERRIDES on the basis that nothing in the metadata (as
distributed) uses either of them.  Anybody who wants to make use of them
from local.conf or whereever can always add them back to OVERRIDES in
the same place.

p.
Richard Purdie - May 24, 2011, 3:24 p.m.
On Tue, 2011-05-24 at 16:15 +0100, Phil Blundell wrote:
> On Tue, 2011-05-24 at 16:07 +0100, Richard Purdie wrote:
> > It was added to poky with the intent of doing what "_local" would have
> > done before it was broken.
> > 
> > I think its a little safer than using "local" as the override keyword,
> > I'm open to opinion on whether it should be kept but it probably has
> > uses.
> 
> Ah, I see.  I must admit that I wouldn't have guessed that from the
> name.
> 
> Maybe we should just delete both _local and _forcevariable from the
> default OVERRIDES on the basis that nothing in the metadata (as
> distributed) uses either of them.  Anybody who wants to make use of them
> from local.conf or whereever can always add them back to OVERRIDES in
> the same place.

I'm ok with that, it can also be done by the distro...

Cheers,

Richard
Jeremy Puhlman - May 24, 2011, 7:54 p.m.
>> Ah, I see.  I must admit that I wouldn't have guessed that from the
>> name.
>>
>> Maybe we should just delete both _local and _forcevariable from the
>> default OVERRIDES on the basis that nothing in the metadata (as
>> distributed) uses either of them.  Anybody who wants to make use of them
>> from local.conf or whereever can always add them back to OVERRIDES in
>> the same place.
> 
> I'm ok with that, it can also be done by the distro...

In my experiance when dealing with disperate groups of layers, having an
override that will always work(ala old _local) was useful for helping
others do custom work. Its obviously something you really wouldn't want
stuck in to any actual provided meta data, but the end user should be
able to always be able to shoot them selves in the foot, if they really
really want to.

OTOH leaving it it up to the distro's to add back in is fine.
Koen Kooi - May 26, 2011, 3:18 p.m.
Op 24 mei 2011, om 16:04 heeft Koen Kooi het volgende geschreven:

> In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.
> 
> The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.
> 
> 'failfast' has been removed since it's not used anymore, just like 'local'
> ---
> meta/conf/bitbake.conf |   12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index a0af672..59238b8 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -602,15 +602,15 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
> # 
> # This means that an envionment variable named '<foo>_arm' overrides an
> # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
> -# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
> -# '<foo>_arm' when ${MACHINE} is 'ramses'. 
> -# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
> -# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
> -# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
> +# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
> +# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
> +# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
> +# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
> +# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
> #
> # This works for  functions as well, they are really just environment variables.
> # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
> -OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
> +OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
> DISTROOVERRIDES ?= "${DISTRO}"
> MACHINEOVERRIDES ?= "${MACHINE}"

So what's the verdict on this one?
Richard Purdie - May 26, 2011, 11:37 p.m.
On Thu, 2011-05-26 at 17:18 +0200, Koen Kooi wrote:
> Op 24 mei 2011, om 16:04 heeft Koen Kooi het volgende geschreven:
> 
> > In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.
> > 
> > The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.
> > 
> > 'failfast' has been removed since it's not used anymore, just like 'local'
> > ---
> > meta/conf/bitbake.conf |   12 ++++++------
> > 1 files changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > index a0af672..59238b8 100644
> > --- a/meta/conf/bitbake.conf
> > +++ b/meta/conf/bitbake.conf
> > @@ -602,15 +602,15 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
> > # 
> > # This means that an envionment variable named '<foo>_arm' overrides an
> > # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
> > -# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
> > -# '<foo>_arm' when ${MACHINE} is 'ramses'. 
> > -# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
> > -# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
> > -# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
> > +# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
> > +# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
> > +# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
> > +# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
> > +# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
> > #
> > # This works for  functions as well, they are really just environment variables.
> > # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
> > -OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
> > +OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
> > DISTROOVERRIDES ?= "${DISTRO}"
> > MACHINEOVERRIDES ?= "${MACHINE}"
> 
> So what's the verdict on this one?

Its a major change so I'm leaving time for people to see it. I think the
discussion that was had has died out though.

Cheers,

Richard
Richard Purdie - May 30, 2011, 7:33 a.m.
On Tue, 2011-05-24 at 16:04 +0200, Koen Kooi wrote:
> In the current situation TARGET_ARCH will override MACHINE, which is counter intuitive since the machine is more specific than the arch.
> 
> The order is now pn-$PN} -> arch -> machine -> distro as the machine is a set of defaults and the distro is the ultimate policy.
> 
> 'failfast' has been removed since it's not used anymore, just like 'local'
> ---
>  meta/conf/bitbake.conf |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index a0af672..59238b8 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -602,15 +602,15 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
>  # 
>  # This means that an envionment variable named '<foo>_arm' overrides an
>  # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
> -# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
> -# '<foo>_arm' when ${MACHINE} is 'ramses'. 
> -# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
> -# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
> -# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
> +# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
> +# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
> +# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
> +# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
> +# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
>  #
>  # This works for  functions as well, they are really just environment variables.
>  # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
> -OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
> +OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
>  DISTROOVERRIDES ?= "${DISTRO}"
>  MACHINEOVERRIDES ?= "${MACHINE}"

Merged to master.

I left forcevariable in since otherwise I think distros would all end up
adding something anyway. If there are strong feelings it shouldn't be
there we can remove it.

Cheers,

Richard

Patch

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index a0af672..59238b8 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -602,15 +602,15 @@  AUTO_LIBNAME_PKGS = "${PACKAGES}"
 # 
 # This means that an envionment variable named '<foo>_arm' overrides an
 # environment variable '<foo>' (when ${TARGET_ARCH} is arm).
-# An environment variable '<foo>_ramses' overrides '<foo>' but doesn't override
-# '<foo>_arm' when ${MACHINE} is 'ramses'. 
-# If you use combination ie '<foo>_arm_ramses', then '<foo>_arm_ramses' will override 
-# '<foo>_arm' and then '<foo>' will be overriden with that value from '<foo>_arm'.
-# And finally '<foo>_local' overrides any standard variable, but with lowest priority.
+# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
+# '<foo>_arm' when ${MACHINE} is 'qemuarm'. 
+# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override 
+# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
+# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
 #
 # This works for  functions as well, they are really just environment variables.
 # Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
-OVERRIDES = "local:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}:forcevariable"
+OVERRIDES = "${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:forcevariable"
 DISTROOVERRIDES ?= "${DISTRO}"
 MACHINEOVERRIDES ?= "${MACHINE}"