devtool: fix handling of BBCLASSEXTENDed recipes

If a recipe is BBCLASSEXTENDed (e.g. to -native), its PN value and the
name of the bbappend will be different; we were assuming them to be the
same when reading in the workspace, leading to us seeing the base recipe
name everywhere afterwards.

Also add a test so we ensure this doesn't regress in future.

Fixes [YOCTO #8157].

(From OE-Core rev: b63fca00c2e24ad0c8b8b3c492d93ee4372fa92d)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2015-08-17 11:10:13 +01:00
committed by Richard Purdie
parent 48bb9eca79
commit 677e8c8e97
3 changed files with 48 additions and 14 deletions

View File

@@ -104,15 +104,15 @@ def read_workspace():
_enable_workspace_layer(config.workspace_path, config, basepath)
logger.debug('Reading workspace in %s' % config.workspace_path)
externalsrc_re = re.compile(r'^EXTERNALSRC(_pn-[^ =]+)? =.*$')
externalsrc_re = re.compile(r'^EXTERNALSRC(_pn-([^ =]+))? *= *"([^"]*)"$')
for fn in glob.glob(os.path.join(config.workspace_path, 'appends', '*.bbappend')):
pn = os.path.splitext(os.path.basename(fn))[0].split('_')[0]
with open(fn, 'r') as f:
for line in f:
if externalsrc_re.match(line.rstrip()):
splitval = line.split('=', 2)
workspace[pn] = splitval[1].strip('" \n\r\t')
break
res = externalsrc_re.match(line.rstrip())
if res:
pn = res.group(2) or os.path.splitext(os.path.basename(fn))[0].split('_')[0]
workspace[pn] = {'srctree': res.group(3),
'bbappend': fn}
def create_workspace(args, config, basepath, workspace):
if args.layerpath: