aboutsummaryrefslogtreecommitdiff
path: root/app/tasks/importtasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/tasks/importtasks.py')
-rw-r--r--app/tasks/importtasks.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py
index ff085cd..26e94f6 100644
--- a/app/tasks/importtasks.py
+++ b/app/tasks/importtasks.py
@@ -167,16 +167,27 @@ def updateMetaFromRelease(self, id, path):
package.provides.clear()
package.provides.extend(provides)
- for dep in package.dependencies:
- if dep.meta_package:
- db.session.delete(dep)
+ # Delete all meta package dependencies
+ package.dependencies.filter(Dependency.meta_package != None).delete()
- for meta in getMetaPackages(tree.fold("meta", "depends")):
+ # Get raw dependencies
+ depends = tree.fold("meta", "depends")
+ optional_depends = tree.fold("meta", "optional_depends")
+
+ # Filter out provides
+ for mod in provides:
+ depends.discard(mod)
+ optional_depends.discard(mod)
+
+ # Add dependencies
+
+ for meta in getMetaPackages(depends):
db.session.add(Dependency(package, meta=meta, optional=False))
- for meta in getMetaPackages(tree.fold("meta", "optional_depends")):
+ for meta in getMetaPackages(optional_depends):
db.session.add(Dependency(package, meta=meta, optional=True))
+
db.session.commit()
except MinetestCheckError as err: