update_layer.py: fix up for bitbake API change

The multiconfig changes broke the calls here to loadDataFull(). To avoid
this being an issue in future, make use of tinfoil's new parse_recipe_file()
function (if available) to isolate the code here from any future changes to
bitbake's internal code.

Part of the fix for [YOCTO #10192].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Paul Eggleton 2016-08-30 17:05:52 +12:00
parent 3cc87cff77
commit 00bae9978d
2 changed files with 17 additions and 11 deletions

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python3
# Import OE-Classic recipe data into the layer index database # Import OE-Classic recipe data into the layer index database
# #
@ -27,11 +27,14 @@ import recipeparse
logger = utils.logger_create('LayerIndexUpdate') logger = utils.logger_create('LayerIndexUpdate')
def update_recipe_file(data, path, recipe, layerdir_start, repodir): def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir):
fn = str(os.path.join(path, recipe.filename)) fn = str(os.path.join(path, recipe.filename))
try: try:
logger.debug('Updating recipe %s' % fn) logger.debug('Updating recipe %s' % fn)
envdata = bb.cache.Cache.loadDataFull(fn, [], data) if hasattr(tinfoil, 'parse_recipe_file'):
envdata = tinfoil.parse_recipe_file(fn, appends=False, config_data=data)
else:
envdata = bb.cache.Cache.loadDataFull(fn, [], data)
envdata.setVar('SRCPV', 'X') envdata.setVar('SRCPV', 'X')
envdata.setVar('SRCDATE', 'X') envdata.setVar('SRCDATE', 'X')
envdata.setVar('SRCREV', 'X') envdata.setVar('SRCREV', 'X')
@ -182,7 +185,7 @@ def main():
recipe.layerbranch = layerbranch recipe.layerbranch = layerbranch
recipe.filename = filename recipe.filename = filename
recipe.filepath = filepath recipe.filepath = filepath
update_recipe_file(config_data_copy, root, recipe, layerdir_start, oeclassicpath) update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, oeclassicpath)
recipe.save() recipe.save()
layerbranch.vcs_last_fetch = datetime.now() layerbranch.vcs_last_fetch = datetime.now()

View File

@ -54,11 +54,14 @@ def split_recipe_fn(path):
pv = "1.0" pv = "1.0"
return (pn, pv) return (pn, pv)
def update_recipe_file(data, path, recipe, layerdir_start, repodir): def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir):
fn = str(os.path.join(path, recipe.filename)) fn = str(os.path.join(path, recipe.filename))
try: try:
logger.debug('Updating recipe %s' % fn) logger.debug('Updating recipe %s' % fn)
envdata = bb.cache.Cache.loadDataFull(fn, [], data) if hasattr(tinfoil, 'parse_recipe_file'):
envdata = tinfoil.parse_recipe_file(fn, appends=False, config_data=data)
else:
envdata = bb.cache.Cache.loadDataFull(fn, [], data)
envdata.setVar('SRCPV', 'X') envdata.setVar('SRCPV', 'X')
recipe.pn = envdata.getVar("PN", True) recipe.pn = envdata.getVar("PN", True)
recipe.pv = envdata.getVar("PV", True) recipe.pv = envdata.getVar("PV", True)
@ -356,7 +359,7 @@ def main():
recipe.filepath = newfilepath recipe.filepath = newfilepath
recipe.filename = newfilename recipe.filename = newfilename
recipe.save() recipe.save()
update_recipe_file(config_data_copy, os.path.join(layerdir, newfilepath), recipe, layerdir_start, repodir) update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, newfilepath), recipe, layerdir_start, repodir)
updatedrecipes.add(os.path.join(oldfilepath, oldfilename)) updatedrecipes.add(os.path.join(oldfilepath, oldfilename))
updatedrecipes.add(os.path.join(newfilepath, newfilename)) updatedrecipes.add(os.path.join(newfilepath, newfilename))
else: else:
@ -471,7 +474,7 @@ def main():
results = layerrecipes.filter(filepath=filepath).filter(filename=filename)[:1] results = layerrecipes.filter(filepath=filepath).filter(filename=filename)[:1]
if results: if results:
recipe = results[0] recipe = results[0]
update_recipe_file(config_data_copy, os.path.join(layerdir, filepath), recipe, layerdir_start, repodir) update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, filepath), recipe, layerdir_start, repodir)
recipe.save() recipe.save()
updatedrecipes.add(recipe.full_path()) updatedrecipes.add(recipe.full_path())
elif typename == 'machine': elif typename == 'machine':
@ -487,7 +490,7 @@ def main():
for recipe in dirtyrecipes: for recipe in dirtyrecipes:
if not recipe.full_path() in updatedrecipes: if not recipe.full_path() in updatedrecipes:
update_recipe_file(config_data_copy, os.path.join(layerdir, recipe.filepath), recipe, layerdir_start, repodir) update_recipe_file(tinfoil, config_data_copy, os.path.join(layerdir, recipe.filepath), recipe, layerdir_start, repodir)
else: else:
# Collect recipe data from scratch # Collect recipe data from scratch
@ -513,7 +516,7 @@ def main():
# Recipe still exists, update it # Recipe still exists, update it
results = layerrecipes.filter(id=v['id'])[:1] results = layerrecipes.filter(id=v['id'])[:1]
recipe = results[0] recipe = results[0]
update_recipe_file(config_data_copy, root, recipe, layerdir_start, repodir) update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir)
else: else:
# Recipe no longer exists, mark it for later on # Recipe no longer exists, mark it for later on
layerrecipes_delete.append(v) layerrecipes_delete.append(v)
@ -575,7 +578,7 @@ def main():
recipe.filename = os.path.basename(added) recipe.filename = os.path.basename(added)
root = os.path.dirname(added) root = os.path.dirname(added)
recipe.filepath = os.path.relpath(root, layerdir) recipe.filepath = os.path.relpath(root, layerdir)
update_recipe_file(config_data_copy, root, recipe, layerdir_start, repodir) update_recipe_file(tinfoil, config_data_copy, root, recipe, layerdir_start, repodir)
recipe.save() recipe.save()
for deleted in layerrecipes_delete: for deleted in layerrecipes_delete: