diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2015-08-17 11:10:13 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-08-19 17:57:54 +0100 |
commit | b63fca00c2e24ad0c8b8b3c492d93ee4372fa92d (patch) | |
tree | 0303010a44cf81f163292b6a7d7cf10e73147fe6 /scripts/lib | |
parent | 2062c88726400e09599aff51af95799a866b90c9 (diff) | |
download | openembedded-core-b63fca00c2e24ad0c8b8b3c492d93ee4372fa92d.tar.gz openembedded-core-b63fca00c2e24ad0c8b8b3c492d93ee4372fa92d.tar.bz2 openembedded-core-b63fca00c2e24ad0c8b8b3c492d93ee4372fa92d.zip |
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].
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/devtool/standard.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 658076c048..e85e1ad860 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -430,6 +430,16 @@ def modify(args, config, basepath, workspace): if not rd: return 1 recipefile = rd.getVar('FILE', True) + appendname = os.path.splitext(os.path.basename(recipefile))[0] + if args.wildcard: + appendname = re.sub(r'_.*', '_%', appendname) + appendpath = os.path.join(config.workspace_path, 'appends') + appendfile = os.path.join(appendpath, appendname + '.bbappend') + if os.path.exists(appendfile): + raise DevtoolError("Another variant of recipe %s is already in your " + "workspace (only one variant of a recipe can " + "currently be worked on at once)" + % args.recipename) _check_compatible_recipe(args.recipename, rd) @@ -467,14 +477,8 @@ def modify(args, config, basepath, workspace): srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] srctree = os.path.join(srctree, srcsubdir) - appendpath = os.path.join(config.workspace_path, 'appends') if not os.path.exists(appendpath): os.makedirs(appendpath) - - appendname = os.path.splitext(os.path.basename(recipefile))[0] - if args.wildcard: - appendname = re.sub(r'_.*', '_%', appendname) - appendfile = os.path.join(appendpath, appendname + '.bbappend') with open(appendfile, 'w') as f: f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n\n') f.write('inherit externalsrc\n') @@ -777,7 +781,7 @@ def update_recipe(args, config, basepath, workspace): else: mode = args.mode - srctree = workspace[args.recipename] + srctree = workspace[args.recipename]['srctree'] if mode == 'srcrev': _update_recipe_srcrev(args, srctree, rd, tinfoil.config_data) @@ -793,7 +797,7 @@ def status(args, config, basepath, workspace): """Entry point for the devtool 'status' subcommand""" if workspace: for recipe, value in workspace.iteritems(): - print("%s: %s" % (recipe, value)) + print("%s: %s" % (recipe, value['srctree'])) else: logger.info('No recipes currently in your workspace - you can use "devtool modify" to work on an existing recipe or "devtool add" to add a new one') return 0 |