[OE-core] [PATCH 1/1] utils.bbclass: make FILESEXTRAPATHS colon delimited

Richard Purdie richard.purdie at linuxfoundation.org
Fri May 27 15:45:18 UTC 2011


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 at linux.intel.com>
> >> Cc: Phil Blundell <pb at 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






More information about the Openembedded-core mailing list