diff options
Diffstat (limited to 'autoimport.py')
-rwxr-xr-x | autoimport.py | 12 |
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__": |