diff options
author | Florian Weimer <fw@deneb.enyo.de> | 2011-04-24 15:35:27 +0000 |
---|---|---|
committer | Florian Weimer <fw@deneb.enyo.de> | 2011-04-24 15:35:27 +0000 |
commit | 35d1160b6bd107b2026dbcb821b2dd95c1b6b2f7 (patch) | |
tree | f023eb3787612b031b9c7290a7aeca826da641d1 /bin/list-queue | |
parent | 5a01b8e733aee4fe146ed6916c618ea5f50684e1 (diff) |
bin/list-queue: remove dependency on debian_support
git-svn-id: svn+ssh://svn.debian.org/svn/secure-testing@16581 e39458fd-73e7-0310-bf30-c45bca0a0e42
Diffstat (limited to 'bin/list-queue')
-rwxr-xr-x | bin/list-queue | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/bin/list-queue b/bin/list-queue index c693ae3c9d..793f0aec9b 100755 --- a/bin/list-queue +++ b/bin/list-queue @@ -33,20 +33,14 @@ DIRECTORIES = ('/org/security-master.debian.org/queue/embargoed', # End Configuration ###################################################################### -import sys +import json import os.path -def setup_path(): - dirname = os.path.dirname - base = dirname(dirname(os.path.realpath(sys.argv[0]))) - sys.path.insert(0, os.path.join(base, "lib", "python")) -setup_path() - +import re import sqlite3 -import json +import sys -from debian.debfile import DebFile from debian.deb822 import Changes -import debian_support +from debian.debfile import DebFile def createdb(): cache = os.path.expanduser("~/.cache") @@ -100,7 +94,7 @@ def readpackages(db): result = {} for row in db.execute("SELECT * FROM package"): name, size, mtime = row[0:3] - pkg = debian_support.BinaryPackage(row[3:]) + pkg = tuple(row[3:]) result[name] = (size, mtime, pkg) return result @@ -131,6 +125,29 @@ def stripstat(data): for (key, value) in data.items(): data[key] = value[2:] +# See debian_support.BinaryPackage.loadtuple(). +def deb822totuple(data, re_source=re.compile( + r'^([a-zA-Z0-9.+-]+)(?:\s+\(([a-zA-Z0-9.+:~-]+)\))?$')): + """Turns an Deb822-like object into a 5-tuple. + + Returns (PACKAGE-NAME, VERSION, ARCHITECTURE, SOURCE, + SOURCE-VERSION).""" + + pkg = data["Package"] + version = data["Version"] + if "Source" in data: + source = data.get("Source", None) + match = re_source.match(source) + if match is None: + raise ValueError("invalid Source field: " + repr(source)) + src, src_version = match.groups() + if src_version is None: + src_version = version + else: + src = pkg + src_version = version + return (pkg, version, data["Architecture"], src, src_version) + def updatepackages(db, ondisk): "Updates the package table from the file system." indb = readpackages(db) @@ -141,10 +158,9 @@ def updatepackages(db, ondisk): def do_update(): for (path, stat) in need_update: deb = DebFile(path) - pkg = debian_support.BinaryPackage() - pkg.load822(deb.debcontrol()) + pkg = deb822totuple(deb.debcontrol()) indb[path] = stat + (pkg,) - yield (path,) + stat + pkg.astuple() + yield (path,) + stat + pkg db.executemany("INSERT INTO package VALUES (?, ?, ?, ?, ?, ?, ?, ?)", do_update()) @@ -194,7 +210,7 @@ def pkgwithdist(debs, dists): Returns a list of tuples (PACKAGE-NAME, VERSION, ARCHITECTURE, SOURCE-NAME, SOURCE-VERSION, TUPLE-OF-DISTRIBUTIONS). """ - return [pkg.astuple() + (sorted(dists.get(path, ())),) + return [pkg + (sorted(dists.get(path, ())),) for (path, (pkg,)) in debs.items()] def main(): |