Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
@ 2011-05-25 23:05 Darren Hart
  2011-05-25 23:05 ` [PATCH 1/1] " Darren Hart
  0 siblings, 1 reply; 6+ messages in thread
From: Darren Hart @ 2011-05-25 23:05 UTC (permalink / raw)
  To: openembedded-core; +Cc: Darren Hart

In trying to fix the broken FILESEXTRAPATHS breakage in meta-intel, Phil
Blundell noted that the space delimiting of FILESEXTRAPATHS was sub-optimal. I
didn't want to fix meta-intel twice, so this patch converts FILESEXTRAPATHS to
being colon delimited.

This patch applies cleanly to oe-core and poky.

The following changes since commit 1607d7b6809eb3f0aa8d09713a4e467a1f4585a2:

  IMAGE_ROOTFS_SIZE: Cleanup machine conf files (2011-05-25 14:07:37 -0700)

are available in the git repository at:
  git://git.pokylinux.org/poky-contrib dvhart/filesextrapaths
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dvhart/filesextrapaths

Darren Hart (1):
  utils.bbclass: make FILESEXTRAPATHS colon delimited

 meta/classes/utils.bbclass |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
  2011-05-25 23:05 [PATCH 0/1] utils.bbclass: make FILESEXTRAPATHS colon delimited Darren Hart
@ 2011-05-25 23:05 ` Darren Hart
  2011-05-26 23:46   ` Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Darren Hart @ 2011-05-25 23:05 UTC (permalink / raw)
  To: openembedded-core; +Cc: Darren Hart

Fixes [YOCTO 1102]

Path variables are typically : delimited. White space is allowed in paths, so
is not a good choice for separating paths. Currently utils.bbclass performs the
following:

    extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()

This splits FILESEXTRAPATHS on whitespace. It later splits overrides on : and
reassembles them all together as : delimited.

There is only one user of FILESEXTRAPATHS in oe-core (qt4-tools-native, which
uses : anyway) and none in oe.

Change the split() in utils.bbclass to split on : instead of whitespace. When
splitting on a defined string (":") we must be careful to handle the empty
string case which returns [''] instead of [].

Tested building qt4-tools-native and core-image-minimal for surgarbay from
meta-intel with a couple extra layers with FILESEXTRAPATHS modifications added.

Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Cc: Phil Blundell <pb@pbcl.net>
---
 meta/classes/utils.bbclass |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index e103351..9930a24 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -331,8 +331,10 @@ def explode_deps(s):
 
 def base_set_filespath(path, d):
 	filespath = []
-	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
-	path = extrapaths + path
+	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "")
+	# Don't prepend empty strings to the path list
+	if extrapaths != "":
+		path = extrapaths.split(":") + path
 	# The ":" ensures we have an 'empty' override
 	overrides = (bb.data.getVar("OVERRIDES", d, 1) or "") + ":"
 	for p in path:
-- 
1.7.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
  2011-05-25 23:05 ` [PATCH 1/1] " Darren Hart
@ 2011-05-26 23:46   ` Richard Purdie
  2011-05-27  3:16     ` Darren Hart
  0 siblings, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2011-05-26 23:46 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer; +Cc: Darren Hart

On Wed, 2011-05-25 at 16:05 -0700, Darren Hart wrote:
> Fixes [YOCTO 1102]
> 
> Path variables are typically : delimited. White space is allowed in paths, so
> is not a good choice for separating paths. Currently utils.bbclass performs the
> following:
> 
>     extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> 
> This splits FILESEXTRAPATHS on whitespace. It later splits overrides on : and
> reassembles them all together as : delimited.
> 
> There is only one user of FILESEXTRAPATHS in oe-core (qt4-tools-native, which
> uses : anyway) and none in oe.
> 
> Change the split() in utils.bbclass to split on : instead of whitespace. When
> splitting on a defined string (":") we must be careful to handle the empty
> string case which returns [''] instead of [].
> 
> Tested building qt4-tools-native and core-image-minimal for surgarbay from
> meta-intel with a couple extra layers with FILESEXTRAPATHS modifications added.
> 
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> Cc: Phil Blundell <pb@pbcl.net>
> ---
>  meta/classes/utils.bbclass |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
> index e103351..9930a24 100644
> --- a/meta/classes/utils.bbclass
> +++ b/meta/classes/utils.bbclass
> @@ -331,8 +331,10 @@ def explode_deps(s):
>  
>  def base_set_filespath(path, d):
>  	filespath = []
> -	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> -	path = extrapaths + path
> +	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "")
> +	# Don't prepend empty strings to the path list
> +	if extrapaths != "":
> +		path = extrapaths.split(":") + path
>  	# The ":" ensures we have an 'empty' override
>  	overrides = (bb.data.getVar("OVERRIDES", d, 1) or "") + ":"
>  	for p in path:

This is being a little picky but I find the above hard to read and can't
we just do:

-	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
+	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split(":")

?

Cheers,

Richard




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
  2011-05-26 23:46   ` Richard Purdie
@ 2011-05-27  3:16     ` Darren Hart
  2011-05-27  9:37       ` Phil Blundell
  2011-05-27 15:45       ` Richard Purdie
  0 siblings, 2 replies; 6+ messages in thread
From: Darren Hart @ 2011-05-27  3:16 UTC (permalink / raw)
  To: Richard Purdie; +Cc: Patches and discussions about the oe-core layer



On 05/26/2011 04:46 PM, Richard Purdie wrote:
> On Wed, 2011-05-25 at 16:05 -0700, Darren Hart wrote:
>> Fixes [YOCTO 1102]
>>
>> Path variables are typically : delimited. White space is allowed in paths, so
>> is not a good choice for separating paths. Currently utils.bbclass performs the
>> following:
>>
>>     extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
>>
>> This splits FILESEXTRAPATHS on whitespace. It later splits overrides on : and
>> reassembles them all together as : delimited.
>>
>> There is only one user of FILESEXTRAPATHS in oe-core (qt4-tools-native, which
>> uses : anyway) and none in oe.
>>
>> Change the split() in utils.bbclass to split on : instead of whitespace. When
>> splitting on a defined string (":") we must be careful to handle the empty
>> string case which returns [''] instead of [].
>>
>> Tested building qt4-tools-native and core-image-minimal for surgarbay from
>> meta-intel with a couple extra layers with FILESEXTRAPATHS modifications added.
>>
>> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
>> Cc: Phil Blundell <pb@pbcl.net>
>> ---
>>  meta/classes/utils.bbclass |    6 ++++--
>>  1 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
>> index e103351..9930a24 100644
>> --- a/meta/classes/utils.bbclass
>> +++ b/meta/classes/utils.bbclass
>> @@ -331,8 +331,10 @@ def explode_deps(s):
>>  
>>  def base_set_filespath(path, d):
>>  	filespath = []
>> -	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
>> -	path = extrapaths + path
>> +	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "")
>> +	# Don't prepend empty strings to the path list
>> +	if extrapaths != "":
>> +		path = extrapaths.split(":") + path
>>  	# The ":" ensures we have an 'empty' override
>>  	overrides = (bb.data.getVar("OVERRIDES", d, 1) or "") + ":"
>>  	for p in path:
> 
> This is being a little picky but I find the above hard to read and can't
> we just do:
> 
> -	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> +	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split(":")

Unfortunately not (this is what I tried initially), python split() has a
rather annoying "feature", see:
http://docs.python.org/library/string.html

Where it states:
"
The behavior of split on an empty string depends on the value of sep. If
sep is not specified, or specified as None, the result will be an empty
list. If sep is specified as any string, the result will be a list
containing one element which is an empty string.
"

ie:
"".split() -> []
"".split(":") -> [""]

So by changing from split() to split(":") we change the behavior of
split when operating on empty strings, requiring us to special case the
output. Rather obnoxious wouldn't you say?

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
  2011-05-27  3:16     ` Darren Hart
@ 2011-05-27  9:37       ` Phil Blundell
  2011-05-27 15:45       ` Richard Purdie
  1 sibling, 0 replies; 6+ messages in thread
From: Phil Blundell @ 2011-05-27  9:37 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

On Thu, 2011-05-26 at 20:16 -0700, Darren Hart wrote:
> So by changing from split() to split(":") we change the behavior of
> split when operating on empty strings, requiring us to special case the
> output. Rather obnoxious wouldn't you say?

Yes, that is an annoying misfeature.  The other related thing to watch
out for is this:

>>> print " a b ".split()
['a', 'b']
>>> print ":a:b:".split(":")
['', 'a', 'b', '']
>>> 

... in other words, if you make the separator be anything other than a
space, you need to take special care to strip off any null elements that
might have been accidentally generated at the start and end.

p.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited
  2011-05-27  3:16     ` Darren Hart
  2011-05-27  9:37       ` Phil Blundell
@ 2011-05-27 15:45       ` Richard Purdie
  1 sibling, 0 replies; 6+ messages in thread
From: Richard Purdie @ 2011-05-27 15:45 UTC (permalink / raw)
  To: Darren Hart; +Cc: Patches and discussions about the oe-core layer

On Thu, 2011-05-26 at 20:16 -0700, Darren Hart wrote:
> 
> On 05/26/2011 04:46 PM, Richard Purdie wrote:
> > On Wed, 2011-05-25 at 16:05 -0700, Darren Hart wrote:
> >> Fixes [YOCTO 1102]
> >>
> >> Path variables are typically : delimited. White space is allowed in paths, so
> >> is not a good choice for separating paths. Currently utils.bbclass performs the
> >> following:
> >>
> >>     extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> >>
> >> This splits FILESEXTRAPATHS on whitespace. It later splits overrides on : and
> >> reassembles them all together as : delimited.
> >>
> >> There is only one user of FILESEXTRAPATHS in oe-core (qt4-tools-native, which
> >> uses : anyway) and none in oe.
> >>
> >> Change the split() in utils.bbclass to split on : instead of whitespace. When
> >> splitting on a defined string (":") we must be careful to handle the empty
> >> string case which returns [''] instead of [].
> >>
> >> Tested building qt4-tools-native and core-image-minimal for surgarbay from
> >> meta-intel with a couple extra layers with FILESEXTRAPATHS modifications added.
> >>
> >> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> >> Cc: Phil Blundell <pb@pbcl.net>
> >> ---
> >>  meta/classes/utils.bbclass |    6 ++++--
> >>  1 files changed, 4 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
> >> index e103351..9930a24 100644
> >> --- a/meta/classes/utils.bbclass
> >> +++ b/meta/classes/utils.bbclass
> >> @@ -331,8 +331,10 @@ def explode_deps(s):
> >>  
> >>  def base_set_filespath(path, d):
> >>  	filespath = []
> >> -	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> >> -	path = extrapaths + path
> >> +	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "")
> >> +	# Don't prepend empty strings to the path list
> >> +	if extrapaths != "":
> >> +		path = extrapaths.split(":") + path
> >>  	# The ":" ensures we have an 'empty' override
> >>  	overrides = (bb.data.getVar("OVERRIDES", d, 1) or "") + ":"
> >>  	for p in path:
> > 
> > This is being a little picky but I find the above hard to read and can't
> > we just do:
> > 
> > -	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split()
> > +	extrapaths = (bb.data.getVar("FILESEXTRAPATHS", d, True) or "").split(":")
> 
> Unfortunately not (this is what I tried initially), python split() has a
> rather annoying "feature", see:
> http://docs.python.org/library/string.html
> 
> Where it states:
> "
> The behavior of split on an empty string depends on the value of sep. If
> sep is not specified, or specified as None, the result will be an empty
> list. If sep is specified as any string, the result will be a list
> containing one element which is an empty string.
> "
> 
> ie:
> "".split() -> []
> "".split(":") -> [""]
> 
> So by changing from split() to split(":") we change the behavior of
> split when operating on empty strings, requiring us to special case the
> output. Rather obnoxious wouldn't you say?

Horrible but merged to master ;-).

Cheers,

Richard





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-05-27 15:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-25 23:05 [PATCH 0/1] utils.bbclass: make FILESEXTRAPATHS colon delimited Darren Hart
2011-05-25 23:05 ` [PATCH 1/1] " Darren Hart
2011-05-26 23:46   ` Richard Purdie
2011-05-27  3:16     ` Darren Hart
2011-05-27  9:37       ` Phil Blundell
2011-05-27 15:45       ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox