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 18:05:39 +0100 |
| commit | 677e8c8e97ec377c5919943a9ca7257787b6ab81 (patch) | |
| tree | 1af3878ca71d1058e84a65bcd5dabfa5b9b18be9 /scripts/lib | |
| parent | 48bb9eca790c354eb6505b02ce940398a6efa8a1 (diff) | |
| download | poky-677e8c8e97ec377c5919943a9ca7257787b6ab81.tar.gz | |
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>
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): | |||
| 430 | if not rd: | 430 | if not rd: |
| 431 | return 1 | 431 | return 1 |
| 432 | recipefile = rd.getVar('FILE', True) | 432 | recipefile = rd.getVar('FILE', True) |
| 433 | appendname = os.path.splitext(os.path.basename(recipefile))[0] | ||
| 434 | if args.wildcard: | ||
| 435 | appendname = re.sub(r'_.*', '_%', appendname) | ||
| 436 | appendpath = os.path.join(config.workspace_path, 'appends') | ||
| 437 | appendfile = os.path.join(appendpath, appendname + '.bbappend') | ||
| 438 | if os.path.exists(appendfile): | ||
| 439 | raise DevtoolError("Another variant of recipe %s is already in your " | ||
| 440 | "workspace (only one variant of a recipe can " | ||
| 441 | "currently be worked on at once)" | ||
| 442 | % args.recipename) | ||
| 433 | 443 | ||
| 434 | _check_compatible_recipe(args.recipename, rd) | 444 | _check_compatible_recipe(args.recipename, rd) |
| 435 | 445 | ||
| @@ -467,14 +477,8 @@ def modify(args, config, basepath, workspace): | |||
| 467 | srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] | 477 | srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] |
| 468 | srctree = os.path.join(srctree, srcsubdir) | 478 | srctree = os.path.join(srctree, srcsubdir) |
| 469 | 479 | ||
| 470 | appendpath = os.path.join(config.workspace_path, 'appends') | ||
| 471 | if not os.path.exists(appendpath): | 480 | if not os.path.exists(appendpath): |
| 472 | os.makedirs(appendpath) | 481 | os.makedirs(appendpath) |
| 473 | |||
| 474 | appendname = os.path.splitext(os.path.basename(recipefile))[0] | ||
| 475 | if args.wildcard: | ||
| 476 | appendname = re.sub(r'_.*', '_%', appendname) | ||
| 477 | appendfile = os.path.join(appendpath, appendname + '.bbappend') | ||
| 478 | with open(appendfile, 'w') as f: | 482 | with open(appendfile, 'w') as f: |
| 479 | f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n\n') | 483 | f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n\n') |
| 480 | f.write('inherit externalsrc\n') | 484 | f.write('inherit externalsrc\n') |
| @@ -777,7 +781,7 @@ def update_recipe(args, config, basepath, workspace): | |||
| 777 | else: | 781 | else: |
| 778 | mode = args.mode | 782 | mode = args.mode |
| 779 | 783 | ||
| 780 | srctree = workspace[args.recipename] | 784 | srctree = workspace[args.recipename]['srctree'] |
| 781 | 785 | ||
| 782 | if mode == 'srcrev': | 786 | if mode == 'srcrev': |
| 783 | _update_recipe_srcrev(args, srctree, rd, tinfoil.config_data) | 787 | _update_recipe_srcrev(args, srctree, rd, tinfoil.config_data) |
| @@ -793,7 +797,7 @@ def status(args, config, basepath, workspace): | |||
| 793 | """Entry point for the devtool 'status' subcommand""" | 797 | """Entry point for the devtool 'status' subcommand""" |
| 794 | if workspace: | 798 | if workspace: |
| 795 | for recipe, value in workspace.iteritems(): | 799 | for recipe, value in workspace.iteritems(): |
| 796 | print("%s: %s" % (recipe, value)) | 800 | print("%s: %s" % (recipe, value['srctree'])) |
| 797 | else: | 801 | else: |
| 798 | 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') | 802 | 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') |
| 799 | return 0 | 803 | return 0 |
