[yocto] [layerindex-web][PATCH v2 12/12] layerindex/update_layer.py: Preserve the recipedependency files

Liam R. Howlett Liam.Howlett at windriver.com
Fri Oct 7 08:57:21 PDT 2016


From: Mark Hatle <mark.hatle at windriver.com>

In order to keep primary keys from constantly changing, preverse the
exist keys as much as possible.

Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
Signed-off-by: Liam R. Howlett <Liam.Howlett at WindRiver.com>
---
 layerindex/update_layer.py | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py
index 27d4ebe..ec40806 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:
-- 
1.9.1




More information about the yocto mailing list