* RFC: FOO_subtract, the logical antidote to FOO_append.
@ 2012-05-15 19:01 Peter Seebach
2012-05-15 20:46 ` Manuel Bessler
0 siblings, 1 reply; 9+ messages in thread
From: Peter Seebach @ 2012-05-15 19:01 UTC (permalink / raw)
To: openembedded-core@
There's a few cases where something is a huge list of space-separated
things, and it is desireable to remove one. The example currently
afflicting me is DISTRO_FEATURES_LIBC_DEFAULT; I want to end up with
the distro features including all but one of the words in it.
It seems to me that a counterpart to _append would make sense. Here
is my basic idea:
FOO_subtract = "..."
means that, when you expand FOO:
1. Fully expand it.
2. Fully expand FOO_subtract.
3. Remove any words in FOO_subtract from FOO.
4. Yield the result.
The rationale is that the semantics of things where we're using _append
seem to be consistently of the form "this is a space-separated set",
and being able to remove things from a set would be Super Handy.
So I'm proposing the semantics for consideration, and if people like
them, I will go try to implement it in my Copious Free Time.
-s
--
Listen, get this. Nobody with a good compiler needs to be justified.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-15 19:01 RFC: FOO_subtract, the logical antidote to FOO_append Peter Seebach
@ 2012-05-15 20:46 ` Manuel Bessler
2012-05-16 4:35 ` Saul Wold
0 siblings, 1 reply; 9+ messages in thread
From: Manuel Bessler @ 2012-05-15 20:46 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
Just a few minutes ago I was wondering if such a feature did exist...
I ran into a situation where I wanted to remove something from a .bbappend
that is added to a variable using VARIABLE_append = "this and that"
Manuel
On Tue, May 15, 2012 at 3:01 PM, Peter Seebach
<peter.seebach@windriver.com> wrote:
> There's a few cases where something is a huge list of space-separated
> things, and it is desireable to remove one. The example currently
> afflicting me is DISTRO_FEATURES_LIBC_DEFAULT; I want to end up with
> the distro features including all but one of the words in it.
>
> It seems to me that a counterpart to _append would make sense. Here
> is my basic idea:
>
> FOO_subtract = "..."
>
> means that, when you expand FOO:
>
> 1. Fully expand it.
> 2. Fully expand FOO_subtract.
> 3. Remove any words in FOO_subtract from FOO.
> 4. Yield the result.
>
> The rationale is that the semantics of things where we're using _append
> seem to be consistently of the form "this is a space-separated set",
> and being able to remove things from a set would be Super Handy.
>
> So I'm proposing the semantics for consideration, and if people like
> them, I will go try to implement it in my Copious Free Time.
>
> -s
> --
> Listen, get this. Nobody with a good compiler needs to be justified.
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-15 20:46 ` Manuel Bessler
@ 2012-05-16 4:35 ` Saul Wold
2012-05-16 15:07 ` Mark Hatle
2012-05-16 16:58 ` Peter Seebach
0 siblings, 2 replies; 9+ messages in thread
From: Saul Wold @ 2012-05-16 4:35 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On 05/15/2012 11:46 PM, Manuel Bessler wrote:
> Just a few minutes ago I was wondering if such a feature did exist...
>
> I ran into a situation where I wanted to remove something from a .bbappend
> that is added to a variable using VARIABLE_append = "this and that"
>
My understanding is that a _subtract is fraught with danger, there all
sorts of ordering implications.
For what you are trying to do in a .bbappend, can be done by using
oe_filter_out() from utils.bbclass, it has to be done in anonymous code.
VARIABLE := "${@oe_filter_out('xxx', '${VARIABLE}', d)}"
This might be what you want.
Sau!
>
> Manuel
> On Tue, May 15, 2012 at 3:01 PM, Peter Seebach
> <peter.seebach@windriver.com> wrote:
>> There's a few cases where something is a huge list of space-separated
>> things, and it is desireable to remove one. The example currently
>> afflicting me is DISTRO_FEATURES_LIBC_DEFAULT; I want to end up with
>> the distro features including all but one of the words in it.
>>
>> It seems to me that a counterpart to _append would make sense. Here
>> is my basic idea:
>>
>> FOO_subtract = "..."
>>
>> means that, when you expand FOO:
>>
>> 1. Fully expand it.
>> 2. Fully expand FOO_subtract.
>> 3. Remove any words in FOO_subtract from FOO.
>> 4. Yield the result.
>>
>> The rationale is that the semantics of things where we're using _append
>> seem to be consistently of the form "this is a space-separated set",
>> and being able to remove things from a set would be Super Handy.
>>
>> So I'm proposing the semantics for consideration, and if people like
>> them, I will go try to implement it in my Copious Free Time.
>>
>> -s
>> --
>> Listen, get this. Nobody with a good compiler needs to be justified.
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-16 4:35 ` Saul Wold
@ 2012-05-16 15:07 ` Mark Hatle
2012-05-16 16:23 ` Chris Larson
2012-05-16 16:43 ` Phil Blundell
2012-05-16 16:58 ` Peter Seebach
1 sibling, 2 replies; 9+ messages in thread
From: Mark Hatle @ 2012-05-16 15:07 UTC (permalink / raw)
To: openembedded-core
On 5/15/12 11:35 PM, Saul Wold wrote:
> On 05/15/2012 11:46 PM, Manuel Bessler wrote:
>> Just a few minutes ago I was wondering if such a feature did exist...
>>
>> I ran into a situation where I wanted to remove something from a .bbappend
>> that is added to a variable using VARIABLE_append = "this and that"
>>
> My understanding is that a _subtract is fraught with danger, there all
> sorts of ordering implications.
>
> For what you are trying to do in a .bbappend, can be done by using
> oe_filter_out() from utils.bbclass, it has to be done in anonymous code.
>
> VARIABLE := "${@oe_filter_out('xxx', '${VARIABLE}', d)}"
>
> This might be what you want.
There are two issues I believe Peter is having.. the first is trying to figure
out how to filter stuff out of _append. I'm sure sure the above will be able to
do that.
But the real problem we keep struggling with is .conf load order.. you try to
set some nice value in local.conf, and some later configuration file adds to it,
or simply overwrites it. He'd like a way to strip out things like that.
I suspect the real answer though is fix the various configuration settings to
better allow them to be overridden, but I'm not sure exactly how.
--Mark
> Sau!
>
>>
>> Manuel
>> On Tue, May 15, 2012 at 3:01 PM, Peter Seebach
>> <peter.seebach@windriver.com> wrote:
>>> There's a few cases where something is a huge list of space-separated
>>> things, and it is desireable to remove one. The example currently
>>> afflicting me is DISTRO_FEATURES_LIBC_DEFAULT; I want to end up with
>>> the distro features including all but one of the words in it.
>>>
>>> It seems to me that a counterpart to _append would make sense. Here
>>> is my basic idea:
>>>
>>> FOO_subtract = "..."
>>>
>>> means that, when you expand FOO:
>>>
>>> 1. Fully expand it.
>>> 2. Fully expand FOO_subtract.
>>> 3. Remove any words in FOO_subtract from FOO.
>>> 4. Yield the result.
>>>
>>> The rationale is that the semantics of things where we're using _append
>>> seem to be consistently of the form "this is a space-separated set",
>>> and being able to remove things from a set would be Super Handy.
>>>
>>> So I'm proposing the semantics for consideration, and if people like
>>> them, I will go try to implement it in my Copious Free Time.
>>>
>>> -s
>>> --
>>> Listen, get this. Nobody with a good compiler needs to be justified.
>>>
>>> _______________________________________________
>>> Openembedded-core mailing list
>>> Openembedded-core@lists.openembedded.org
>>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>>
>>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-16 15:07 ` Mark Hatle
@ 2012-05-16 16:23 ` Chris Larson
2012-05-16 16:43 ` Phil Blundell
1 sibling, 0 replies; 9+ messages in thread
From: Chris Larson @ 2012-05-16 16:23 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Wed, May 16, 2012 at 8:07 AM, Mark Hatle <mark.hatle@windriver.com> wrote:
> On 5/15/12 11:35 PM, Saul Wold wrote:
>>
>> On 05/15/2012 11:46 PM, Manuel Bessler wrote:
>>>
>>> Just a few minutes ago I was wondering if such a feature did exist...
>>>
>>> I ran into a situation where I wanted to remove something from a
>>> .bbappend
>>> that is added to a variable using VARIABLE_append = "this and that"
>>>
>> My understanding is that a _subtract is fraught with danger, there all
>> sorts of ordering implications.
>>
>> For what you are trying to do in a .bbappend, can be done by using
>> oe_filter_out() from utils.bbclass, it has to be done in anonymous code.
>>
>> VARIABLE := "${@oe_filter_out('xxx', '${VARIABLE}', d)}"
>>
>> This might be what you want.
>
>
> There are two issues I believe Peter is having.. the first is trying to
> figure out how to filter stuff out of _append. I'm sure sure the above will
> be able to do that.
>
> But the real problem we keep struggling with is .conf load order.. you try
> to set some nice value in local.conf, and some later configuration file adds
> to it, or simply overwrites it. He'd like a way to strip out things like
> that.
>
> I suspect the real answer though is fix the various configuration settings
> to better allow them to be overridden, but I'm not sure exactly how.
One related thing that won't solve this, but is worth noting -- I
think ??= is a much more sane choice than ?= in almost all cases. We
should think about a janitorial task to switch to ??= after carefully
considering potential implications for each.
--
Christopher Larson
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-16 15:07 ` Mark Hatle
2012-05-16 16:23 ` Chris Larson
@ 2012-05-16 16:43 ` Phil Blundell
1 sibling, 0 replies; 9+ messages in thread
From: Phil Blundell @ 2012-05-16 16:43 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Wed, 2012-05-16 at 10:07 -0500, Mark Hatle wrote:
> But the real problem we keep struggling with is .conf load order.. you try to
> set some nice value in local.conf, and some later configuration file adds to it,
> or simply overwrites it. He'd like a way to strip out things like that.
OVERRIDES .= ":local"
VAR_local = "I rule"
Or you could use the existing "_forcevariable" override although I have
a feeling that was intended for something else.
p.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-16 4:35 ` Saul Wold
2012-05-16 15:07 ` Mark Hatle
@ 2012-05-16 16:58 ` Peter Seebach
2012-05-18 4:18 ` Chris Larson
1 sibling, 1 reply; 9+ messages in thread
From: Peter Seebach @ 2012-05-16 16:58 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Wed, 16 May 2012 07:35:45 +0300
Saul Wold <sgw@linux.intel.com> wrote:
> My understanding is that a _subtract is fraught with danger, there
> all sorts of ordering implications.
Yes.
But consider, if you will, the specific case of
DISTRO_FEATURES_LIBC_DEFAULT, and a libc which is just like eglibc
except that it lacks RPC.
Anything I do that isn't processed at the tail end of everything,
around the point where _appends are processed, will be unable to
cleanly obtain "the value that would have been set by default if
nothing else happened", and then remove a word from it. I can't set a
value in advance, because if I do the ?= won't fire and none of those
words will get set. I can't necessarily set a value later.
Overrides won't work either, because overrides also destroy the
existing values.
It seems to me that for a subtraction to work, it *must* be the very
last thing done.
Basically, the purpose of suggesting this as a formal behavior defined
to be The Very Last Thing is to minimize the complexity of the ordering
implications. You get exactly what you would have gotten otherwise,
with these words removed.
-s
--
Listen, get this. Nobody with a good compiler needs to be justified.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-16 16:58 ` Peter Seebach
@ 2012-05-18 4:18 ` Chris Larson
2012-05-18 6:25 ` Richard Purdie
0 siblings, 1 reply; 9+ messages in thread
From: Chris Larson @ 2012-05-18 4:18 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Wed, May 16, 2012 at 9:58 AM, Peter Seebach
<peter.seebach@windriver.com> wrote:
> On Wed, 16 May 2012 07:35:45 +0300
> Saul Wold <sgw@linux.intel.com> wrote:
>
>> My understanding is that a _subtract is fraught with danger, there
>> all sorts of ordering implications.
>
> Yes.
>
> But consider, if you will, the specific case of
> DISTRO_FEATURES_LIBC_DEFAULT, and a libc which is just like eglibc
> except that it lacks RPC.
>
> Anything I do that isn't processed at the tail end of everything,
> around the point where _appends are processed, will be unable to
> cleanly obtain "the value that would have been set by default if
> nothing else happened", and then remove a word from it. I can't set a
> value in advance, because if I do the ?= won't fire and none of those
> words will get set. I can't necessarily set a value later.
>
> Overrides won't work either, because overrides also destroy the
> existing values.
>
> It seems to me that for a subtraction to work, it *must* be the very
> last thing done.
>
> Basically, the purpose of suggesting this as a formal behavior defined
> to be The Very Last Thing is to minimize the complexity of the ordering
> implications. You get exactly what you would have gotten otherwise,
> with these words removed.
I agree. I think this is the only sane option for implementing this
given bitbake's current behavior. Clearly a -= would be extremely
problematic, and would have clear complications with variable
expansion, as we discussed on IRC. I'd be interested in seeing a
prototype implementation of this, to experiment with it and see how
viable it is.
--
Christopher Larson
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: RFC: FOO_subtract, the logical antidote to FOO_append.
2012-05-18 4:18 ` Chris Larson
@ 2012-05-18 6:25 ` Richard Purdie
0 siblings, 0 replies; 9+ messages in thread
From: Richard Purdie @ 2012-05-18 6:25 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Thu, 2012-05-17 at 21:18 -0700, Chris Larson wrote:
> On Wed, May 16, 2012 at 9:58 AM, Peter Seebach
> <peter.seebach@windriver.com> wrote:
> > On Wed, 16 May 2012 07:35:45 +0300
> > Saul Wold <sgw@linux.intel.com> wrote:
> >
> >> My understanding is that a _subtract is fraught with danger, there
> >> all sorts of ordering implications.
> >
> > Yes.
> >
> > But consider, if you will, the specific case of
> > DISTRO_FEATURES_LIBC_DEFAULT, and a libc which is just like eglibc
> > except that it lacks RPC.
> >
> > Anything I do that isn't processed at the tail end of everything,
> > around the point where _appends are processed, will be unable to
> > cleanly obtain "the value that would have been set by default if
> > nothing else happened", and then remove a word from it. I can't set a
> > value in advance, because if I do the ?= won't fire and none of those
> > words will get set. I can't necessarily set a value later.
> >
> > Overrides won't work either, because overrides also destroy the
> > existing values.
> >
> > It seems to me that for a subtraction to work, it *must* be the very
> > last thing done.
> >
> > Basically, the purpose of suggesting this as a formal behavior defined
> > to be The Very Last Thing is to minimize the complexity of the ordering
> > implications. You get exactly what you would have gotten otherwise,
> > with these words removed.
>
> I agree. I think this is the only sane option for implementing this
> given bitbake's current behavior. Clearly a -= would be extremely
> problematic, and would have clear complications with variable
> expansion, as we discussed on IRC. I'd be interested in seeing a
> prototype implementation of this, to experiment with it and see how
> viable it is.
The _subtract or _remove format of this might be a viable way of adding
this functionality. "-=" is the one I'd prefer to avoid as it will end
up confusing people which is why we've all effectively been against it
but the _xxxx syntax does match the behaviour/ordering of _append and
_prepend and hence could be added with less confusion.
So yes, I think this could be the best way to address some of these
cases. It has always bugged me that its near impossible to counteract an
_append other than with an override.
I also agree we should audit the system and change to ??= where it makes
sense which will reduce the need for this.
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-05-18 6:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-15 19:01 RFC: FOO_subtract, the logical antidote to FOO_append Peter Seebach
2012-05-15 20:46 ` Manuel Bessler
2012-05-16 4:35 ` Saul Wold
2012-05-16 15:07 ` Mark Hatle
2012-05-16 16:23 ` Chris Larson
2012-05-16 16:43 ` Phil Blundell
2012-05-16 16:58 ` Peter Seebach
2012-05-18 4:18 ` Chris Larson
2012-05-18 6:25 ` Richard Purdie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox