diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2017-08-31 11:54:06 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-08-31 23:30:02 +0100 |
commit | 34580ac2872da6ae70d5269eb107d31cd5239ad7 (patch) | |
tree | f1165861a24b41a67d413b5357f0f554753c0a4f | |
parent | 24cfac526305e623f368152147497b39cb26044c (diff) | |
download | poky-34580ac2872da6ae70d5269eb107d31cd5239ad7.tar.gz |
devtool: upgrade: fix handling of non-absolute paths
If your BBLAYERS has non-absolute paths in it (e.g.
"${COREBASE}/../something") then none of the paths matched in
copy_recipe_files() with the result that no files got copied and you
ended up with an error later on because the recipe file couldn't be
found at the destination. Fix this as well as adding an explicit check
to see if no files got copied - error out earlier if so.
Fixes [YOCTO #10981].
(From OE-Core rev: 3861486ad06f90c8644ebab119bbc5ddb9e693ca)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/lib/oe/recipeutils.py | 8 | ||||
-rw-r--r-- | scripts/lib/devtool/upgrade.py | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index a7fdd36e40..b946128d78 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py | |||
@@ -334,11 +334,13 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | |||
334 | fetch.download() | 334 | fetch.download() |
335 | 335 | ||
336 | # Copy local files to target directory and gather any remote files | 336 | # Copy local files to target directory and gather any remote files |
337 | bb_dir = os.path.dirname(d.getVar('FILE')) + os.sep | 337 | bb_dir = os.path.abspath(os.path.dirname(d.getVar('FILE'))) + os.sep |
338 | remotes = [] | 338 | remotes = [] |
339 | copied = [] | 339 | copied = [] |
340 | includes = [path for path in d.getVar('BBINCLUDED').split() if | 340 | # Need to do this in two steps since we want to check against the absolute path |
341 | path.startswith(bb_dir) and os.path.exists(path)] | 341 | includes = [os.path.abspath(path) for path in d.getVar('BBINCLUDED').split() if os.path.exists(path)] |
342 | # We also check this below, but we don't want any items in this list being considered remotes | ||
343 | includes = [path for path in includes if path.startswith(bb_dir)] | ||
342 | for path in fetch.localpaths() + includes: | 344 | for path in fetch.localpaths() + includes: |
343 | # Only import files that are under the meta directory | 345 | # Only import files that are under the meta directory |
344 | if path.startswith(bb_dir): | 346 | if path.startswith(bb_dir): |
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 1f11d47e5a..24937dcd20 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
@@ -301,6 +301,9 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil | |||
301 | path = os.path.join(workspace, 'recipes', bpn) | 301 | path = os.path.join(workspace, 'recipes', bpn) |
302 | bb.utils.mkdirhier(path) | 302 | bb.utils.mkdirhier(path) |
303 | copied, _ = oe.recipeutils.copy_recipe_files(rd, path) | 303 | copied, _ = oe.recipeutils.copy_recipe_files(rd, path) |
304 | if not copied: | ||
305 | raise DevtoolError('Internal error - no files were copied for recipe %s' % bpn) | ||
306 | logger.debug('Copied %s to %s' % (copied, path)) | ||
304 | 307 | ||
305 | oldpv = rd.getVar('PV') | 308 | oldpv = rd.getVar('PV') |
306 | if not newpv: | 309 | if not newpv: |