diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/lib/oe/recipeutils.py | 35 |
1 files changed, 28 insertions, 7 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: |