diff options
| -rw-r--r-- | meta/lib/oe/recipeutils.py | 35 | ||||
| -rw-r--r-- | scripts/lib/devtool/upgrade.py | 2 |
2 files changed, 29 insertions, 8 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py index b946128d78..c8570acf9e 100644 --- a/meta/lib/oe/recipeutils.py +++ b/meta/lib/oe/recipeutils.py | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | # | 2 | # |
| 3 | # Some code borrowed from the OE layer index | 3 | # Some code borrowed from the OE layer index |
| 4 | # | 4 | # |
| 5 | # Copyright (C) 2013-2016 Intel Corporation | 5 | # Copyright (C) 2013-2017 Intel Corporation |
| 6 | # | 6 | # |
| 7 | 7 | ||
| 8 | import sys | 8 | import sys |
| @@ -320,7 +320,7 @@ def patch_recipe(d, fn, varvalues, patch=False, relpath=''): | |||
| 320 | 320 | ||
| 321 | 321 | ||
| 322 | 322 | ||
| 323 | def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | 323 | def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True, all_variants=False): |
| 324 | """Copy (local) recipe files, including both files included via include/require, | 324 | """Copy (local) recipe files, including both files included via include/require, |
| 325 | and files referred to in the SRC_URI variable.""" | 325 | and files referred to in the SRC_URI variable.""" |
| 326 | import bb.fetch2 | 326 | import bb.fetch2 |
| @@ -328,10 +328,31 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | |||
| 328 | 328 | ||
| 329 | # FIXME need a warning if the unexpanded SRC_URI value contains variable references | 329 | # FIXME need a warning if the unexpanded SRC_URI value contains variable references |
| 330 | 330 | ||
| 331 | uris = (d.getVar('SRC_URI') or "").split() | 331 | uri_values = [] |
| 332 | fetch = bb.fetch2.Fetch(uris, d) | 332 | localpaths = [] |
| 333 | if download: | 333 | def fetch_urls(rdata): |
| 334 | fetch.download() | 334 | # Collect the local paths from SRC_URI |
| 335 | srcuri = rdata.getVar('SRC_URI') or "" | ||
| 336 | if srcuri not in uri_values: | ||
| 337 | fetch = bb.fetch2.Fetch(srcuri.split(), rdata) | ||
| 338 | if download: | ||
| 339 | fetch.download() | ||
| 340 | for pth in fetch.localpaths(): | ||
| 341 | if pth not in localpaths: | ||
| 342 | localpaths.append(pth) | ||
| 343 | uri_values.append(srcuri) | ||
| 344 | |||
| 345 | fetch_urls(d) | ||
| 346 | if all_variants: | ||
| 347 | # Get files for other variants e.g. in the case of a SRC_URI_append | ||
| 348 | localdata = bb.data.createCopy(d) | ||
| 349 | variants = (localdata.getVar('BBCLASSEXTEND') or '').split() | ||
| 350 | if variants: | ||
| 351 | # Ensure we handle class-target if we're dealing with one of the variants | ||
| 352 | variants.append('target') | ||
| 353 | for variant in variants: | ||
| 354 | localdata.setVar('CLASSOVERRIDE', 'class-%s' % variant) | ||
| 355 | fetch_urls(localdata) | ||
| 335 | 356 | ||
| 336 | # Copy local files to target directory and gather any remote files | 357 | # Copy local files to target directory and gather any remote files |
| 337 | bb_dir = os.path.abspath(os.path.dirname(d.getVar('FILE'))) + os.sep | 358 | bb_dir = os.path.abspath(os.path.dirname(d.getVar('FILE'))) + os.sep |
| @@ -341,7 +362,7 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): | |||
| 341 | includes = [os.path.abspath(path) for path in d.getVar('BBINCLUDED').split() if os.path.exists(path)] | 362 | 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 | 363 | # 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)] | 364 | includes = [path for path in includes if path.startswith(bb_dir)] |
| 344 | for path in fetch.localpaths() + includes: | 365 | for path in localpaths + includes: |
| 345 | # Only import files that are under the meta directory | 366 | # Only import files that are under the meta directory |
| 346 | if path.startswith(bb_dir): | 367 | if path.startswith(bb_dir): |
| 347 | if not whole_dir: | 368 | if not whole_dir: |
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 24937dcd20..297d646f55 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
| @@ -300,7 +300,7 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, workspace, tinfoil | |||
| 300 | bpn = rd.getVar('BPN') | 300 | bpn = rd.getVar('BPN') |
| 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, all_variants=True) |
| 304 | if not copied: | 304 | if not copied: |
| 305 | raise DevtoolError('Internal error - no files were copied for recipe %s' % bpn) | 305 | raise DevtoolError('Internal error - no files were copied for recipe %s' % bpn) |
| 306 | logger.debug('Copied %s to %s' % (copied, path)) | 306 | logger.debug('Copied %s to %s' % (copied, path)) |
