summaryrefslogtreecommitdiff
path: root/autoimport.py
diff options
context:
space:
mode:
Diffstat (limited to 'autoimport.py')
-rwxr-xr-xautoimport.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/autoimport.py b/autoimport.py
index 6ce7146..a7ea5ff 100755
--- a/autoimport.py
+++ b/autoimport.py
@@ -8,6 +8,7 @@ import sys
import urllib
from debian import deb822
+from debian.debian_support import version_compare
def main():
urlbase = sys.argv[1]
@@ -22,7 +23,8 @@ def main():
for pkg in deb822.Packages.iter_paragraphs(io.BytesIO(pkglist)):
name = pkg["Package"]
distpkgs.add(name)
- if pkg["Version"] == knownpkgs.get(name, ()):
+ if name in knownpkgs and \
+ version_compare(pkg["Version"], knownpkgs[name]) <= 0:
continue
pkgurl = "%s/%s" % (urlbase, pkg["Filename"])
print("importing %s" % name)
@@ -33,9 +35,15 @@ def main():
if dl.wait():
print("curl failed")
+ delpkgs = set(knownpkgs) - distpkgs
+ print("clearing packages %s" % " ".join(delpkgs))
cur.execute("PRAGMA foreign_keys=1;")
+ cur.executemany("DELETE FROM content WHERE package = ?;",
+ ((pkg,) for pkg in delpkgs))
+ cur.executemany("DELETE FROM dependency WHERE package = ?;",
+ ((pkg,) for pkg in delpkgs))
cur.executemany("DELETE FROM package WHERE package = ?;",
- ((pkg,) for pkg in set(knownpkgs) - distpkgs))
+ ((pkg,) for pkg in delpkgs))
db.commit()
if __name__ == "__main__":