diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-10-31 16:59:45 +1300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-11-07 11:04:22 +0000 |
commit | 09754b41199f042dfd6937e1c4525fc320cb8684 (patch) | |
tree | 90e21adea599bdd4bfb9df7a783de9499d12abee /scripts/lib | |
parent | 452a1133ddadfb0750e930843d0e284185fca17c (diff) | |
download | poky-09754b41199f042dfd6937e1c4525fc320cb8684.tar.gz |
devtool: finish: fix error if destination layer is not in bblayers.conf
If devtool finish is run on a recipe where the recipe file itself is in
the workspace (e.g. where devtool add / devtool upgrade has been used)
and the specified destination layer is not in bblayers.conf, then we
need to avoid running bitbake -c clean at the end because the recipe has
been moved, but the bbappend is still present in the workspace layer at
that point and so if we do it will fail due to the dangling bbappend.
It's difficult to do the clean at the point we'd want to because tinfoil
is holding bitbake.lock for most of the time, but in any case cleaning
the recipe is less important than it used to be since we started
managing the sysroot contents more strictly, so just disable cleaning
under these circumstances to avoid the problem.
Fixes [YOCTO #10484].
(From OE-Core rev: c6980307d43632f4172e79d9607004203af4e9c8)
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 | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 8dfd538332..9511d5618c 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -1479,6 +1479,7 @@ def finish(args, config, basepath, workspace): | |||
1479 | 1479 | ||
1480 | check_workspace_recipe(workspace, args.recipename) | 1480 | check_workspace_recipe(workspace, args.recipename) |
1481 | 1481 | ||
1482 | no_clean = False | ||
1482 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) | 1483 | tinfoil = setup_tinfoil(basepath=basepath, tracking=True) |
1483 | try: | 1484 | try: |
1484 | rd = parse_recipe(config, tinfoil, args.recipename, True) | 1485 | rd = parse_recipe(config, tinfoil, args.recipename, True) |
@@ -1540,6 +1541,7 @@ def finish(args, config, basepath, workspace): | |||
1540 | if origlayerdir == config.workspace_path and destpath: | 1541 | if origlayerdir == config.workspace_path and destpath: |
1541 | # Recipe file itself is in the workspace - need to move it and any | 1542 | # Recipe file itself is in the workspace - need to move it and any |
1542 | # associated files to the specified layer | 1543 | # associated files to the specified layer |
1544 | no_clean = True | ||
1543 | logger.info('Moving recipe file to %s' % destpath) | 1545 | logger.info('Moving recipe file to %s' % destpath) |
1544 | recipedir = os.path.dirname(rd.getVar('FILE', True)) | 1546 | recipedir = os.path.dirname(rd.getVar('FILE', True)) |
1545 | for root, _, files in os.walk(recipedir): | 1547 | for root, _, files in os.walk(recipedir): |
@@ -1554,7 +1556,7 @@ def finish(args, config, basepath, workspace): | |||
1554 | tinfoil.shutdown() | 1556 | tinfoil.shutdown() |
1555 | 1557 | ||
1556 | # Everything else has succeeded, we can now reset | 1558 | # Everything else has succeeded, we can now reset |
1557 | _reset([args.recipename], no_clean=False, config=config, basepath=basepath, workspace=workspace) | 1559 | _reset([args.recipename], no_clean=no_clean, config=config, basepath=basepath, workspace=workspace) |
1558 | 1560 | ||
1559 | return 0 | 1561 | return 0 |
1560 | 1562 | ||