From 9282cba99f1e9942737a03209d3f7e142cdf08fb Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Wed, 28 Sep 2016 14:24:53 -0500 Subject: layerindex/update_layer.py: Preserve the recipedependency files In order to keep primary keys from constantly changing, preserve the existing keys as much as possible. Signed-off-by: Mark Hatle Signed-off-by: Liam R. Howlett --- layerindex/update_layer.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'layerindex/update_layer.py') diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py index 4f6e16012b..cec1ea39e9 100644 --- a/layerindex/update_layer.py +++ b/layerindex/update_layer.py @@ -88,13 +88,30 @@ def update_recipe_file(tinfoil, data, path, recipe, layerdir_start, repodir): if depstr.startswith(layerdir_start) and not depstr.endswith('/conf/layer.conf'): filedeps.append(os.path.relpath(depstr, repodir)) from layerindex.models import RecipeFileDependency - RecipeFileDependency.objects.filter(recipe=recipe).delete() + + recipedeps_delete = [] + + recipedeps = RecipeFileDependency.objects.filter(recipe=recipe) + + for values in recipedeps.values('path'): + if 'path' in values: + recipedeps_delete.append(values['path']) + for filedep in filedeps: + if filedep in recipedeps_delete: + recipedeps_delete.remove(filedep) + continue + # New item, add it... recipedep = RecipeFileDependency() recipedep.layerbranch = recipe.layerbranch recipedep.recipe = recipe recipedep.path = filedep recipedep.save() + + for filedep in recipedeps_delete: + logger.debug('%s: removing %s' % (recipe.layerbranch, filedep)) + recipedeps.filter(path=filedep).delete() + except KeyboardInterrupt: raise except BaseException as e: -- cgit 1.2.3-korg