summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oe/recipeutils.py35
-rw-r--r--scripts/lib/devtool/upgrade.py2
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
8import sys 8import sys
@@ -320,7 +320,7 @@ def patch_recipe(d, fn, varvalues, patch=False, relpath=''):
320 320
321 321
322 322
323def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True): 323def 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))