| 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
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}" >
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
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.
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
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.
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
>> 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.
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?
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
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}"