summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2013-09-07 21:24:15 +0200
committerHelmut Grohne <helmut@subdivi.de>2013-09-07 21:24:15 +0200
commitba9ae116e0bbb25e2df327ba48c82472ccfa2690 (patch)
tree74eb9d6780fe8fe0349d818e9a3fa5ce40726ca7
parent7f3d8c5098d23bb43b86e060700170cc41cd22aa (diff)
downloaddebian-dedup-ba9ae116e0bbb25e2df327ba48c82472ccfa2690.tar.gz
record multi-arch header in package table
-rw-r--r--dedup/debpkg.py9
-rwxr-xr-xreadyaml.py9
-rw-r--r--schema.sql2
3 files changed, 13 insertions, 7 deletions
diff --git a/dedup/debpkg.py b/dedup/debpkg.py
index d8cc22f..6d857ba 100644
--- a/dedup/debpkg.py
+++ b/dedup/debpkg.py
@@ -20,8 +20,13 @@ def process_control(control_contents):
depends = set(dep[0]["name"].encode("ascii")
for dep in control.relations.get("depends", ())
if len(dep) == 1)
- return dict(package=package, source=source, version=version,
- architecture=architecture, depends=depends)
+ ret = dict(package=package, source=source, version=version,
+ architecture=architecture, depends=depends)
+ try:
+ ret["multiarch"] = control["multi-arch"].encode("ascii")
+ except KeyError:
+ pass
+ return ret
class MultiHash(object):
def __init__(self, *hashes):
diff --git a/readyaml.py b/readyaml.py
index cd9e5db..6940f94 100755
--- a/readyaml.py
+++ b/readyaml.py
@@ -31,12 +31,13 @@ def readyaml(db, stream):
if pid is not None:
cur.execute("DELETE FROM content WHERE pid = ?;", (pid,))
cur.execute("DELETE FROM dependency WHERE pid = ?;", (pid,))
- cur.execute("UPDATE package SET version = ?, source = ? WHERE id = ?;",
- (metadata["version"], metadata["source"], pid))
+ cur.execute("UPDATE package SET version = ?, source = ?, multiarch = ? WHERE id = ?;",
+ (metadata["version"], metadata["source"],
+ metadata.get("multiarch"), pid))
else:
- cur.execute("INSERT INTO package (name, version, architecture, source) VALUES (?, ?, ?, ?);",
+ cur.execute("INSERT INTO package (name, version, architecture, source, multiarch) VALUES (?, ?, ?, ?, ?);",
(package, metadata["version"], metadata["architecture"],
- metadata["source"]))
+ metadata["source"], metadata.get("multiarch")))
pid = cur.lastrowid
cur.executemany("INSERT INTO dependency (pid, required) VALUES (?, ?);",
((pid, dep) for dep in metadata["depends"]))
diff --git a/schema.sql b/schema.sql
index 7098a71..30f6109 100644
--- a/schema.sql
+++ b/schema.sql
@@ -1,4 +1,4 @@
-CREATE TABLE package (id INTEGER PRIMARY KEY, name TEXT, version TEXT, architecture TEXT, source TEXT, UNIQUE (name, architecture));
+CREATE TABLE package (id INTEGER PRIMARY KEY, name TEXT, version TEXT, architecture TEXT, source TEXT, multiarch TEXT, UNIQUE (name, architecture));
CREATE TABLE content (id INTEGER PRIMARY KEY, pid INTEGER, filename TEXT, size INTEGER, FOREIGN KEY (pid) REFERENCES package(id) ON DELETE CASCADE);
CREATE TABLE function (id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, eqclass INTEGER);
INSERT INTO function (name, eqclass) VALUES ("sha512", 1), ("gzip_sha512", 1), ("png_sha512", 2), ("gif_sha512", 2);