aboutsummaryrefslogtreecommitdiffstats
path: root/layerindex/update_layer.py
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2016-09-28 14:24:53 -0500
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-10-18 16:42:16 +1300
commit9282cba99f1e9942737a03209d3f7e142cdf08fb (patch)
tree0185e98130fdd71ca43ba1fbf9e6a13cab6825a7 /layerindex/update_layer.py
parentb1375847d9fe4273f5c9e469d91125bf2931163e (diff)
downloadopenembedded-core-contrib-9282cba99f1e9942737a03209d3f7e142cdf08fb.tar.gz
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 <mark.hatle@windriver.com> Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com>
Diffstat (limited to 'layerindex/update_layer.py')
-rw-r--r--layerindex/update_layer.py19
1 files changed, 18 insertions, 1 deletions
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: