summaryrefslogtreecommitdiffstats
path: root/bin/list-queue
diff options
context:
space:
mode:
authorFlorian Weimer <fw@deneb.enyo.de>2011-04-24 15:35:27 +0000
committerFlorian Weimer <fw@deneb.enyo.de>2011-04-24 15:35:27 +0000
commit5fe4dd90b6583eff17ac8625854e9182a28356bb (patch)
treefc8fb67183070395aaf2daef47944b17b42cf226 /bin/list-queue
parentc840a7ae8d26e21bf67db23b250aff805807b3f0 (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-xbin/list-queue46
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():

© 2014-2024 Faster IT GmbH | imprint | privacy policy