]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'ansgar/description-md5' into merge
authorJoerg Jaspert <joerg@debian.org>
Sun, 4 Sep 2011 13:07:29 +0000 (15:07 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 4 Sep 2011 13:07:29 +0000 (15:07 +0200)
* ansgar/description-md5:
  Rename dakdb/update67.py -> dakdb/update69.py
  generate-packages-sources2: add --description-md5 option
  Include a trailing newline for the hash.
  generate-packages-sources2: Add support for Description-md5
  Add database support for Description-md5
  add TranslationFileWriter

Signed-off-by: Joerg Jaspert <joerg@debian.org>
dak/control_suite.py
dak/rm.py

index 57e43da6ac0b77418c8b4745d4c900ef9c4c8728..236e36aa4cfbd005679f5f22f6f21a6de7d5d429 100755 (executable)
@@ -216,32 +216,31 @@ def set_suite(file, suite, session, britney=False, force=False):
                              FROM binaries b, bin_associations ba, architecture a
                             WHERE ba.suite = :suiteid
                               AND ba.bin = b.id AND b.architecture = a.id""", {'suiteid': suite_id})
-    for i in q.fetchall():
-        key = " ".join(i[:3])
+    for i in q:
+        key = i[:3]
         current[key] = i[3]
 
-    q = session.execute("""SELECT s.source, s.version, sa.id
+    q = session.execute("""SELECT s.source, s.version, 'source', sa.id
                              FROM source s, src_associations sa
                             WHERE sa.suite = :suiteid
                               AND sa.source = s.id""", {'suiteid': suite_id})
-    for i in q.fetchall():
-        key = " ".join(i[:2]) + " source"
-        current[key] = i[2]
+    for i in q:
+        key = i[:3]
+        current[key] = i[3]
 
     # Build up a dictionary of what should be in the suite
-    desired = {}
+    desired = set()
     for line in lines:
         split_line = line.strip().split()
         if len(split_line) != 3:
             utils.warn("'%s' does not break into 'package version architecture'." % (line[:-1]))
             continue
-        key = " ".join(split_line)
-        desired[key] = ""
+        desired.add(tuple(split_line))
 
     # Check to see which packages need added and add them
-    for key in sorted(desired.keys(), cmp=cmp_package_version):
-        if not current.has_key(key):
-            (package, version, architecture) = key.split()
+    for key in sorted(desired, cmp=cmp_package_version):
+        if key not in current:
+            (package, version, architecture) = key
             version_checks(package, architecture, suite.suite_name, version, session, force)
             pkid = get_id (package, version, architecture, session)
             if not pkid:
@@ -252,18 +251,17 @@ def set_suite(file, suite, session, britney=False, force=False):
             else:
                 session.execute("""INSERT INTO bin_associations (suite, bin)
                                         VALUES (:suiteid, :pkid)""", {'suiteid': suite_id, 'pkid': pkid})
-            Logger.log(["added", key, pkid])
+            Logger.log(["added", " ".join(key), pkid])
 
     # Check to see which packages need removed and remove them
-    for key in current.keys():
-        if not desired.has_key(key):
-            (package, version, architecture) = key.split()
-            pkid = current[key]
+    for key, pkid in current.iteritems():
+        if key not in desired:
+            (package, version, architecture) = key
             if architecture == "source":
                 session.execute("""DELETE FROM src_associations WHERE id = :pkid""", {'pkid': pkid})
             else:
                 session.execute("""DELETE FROM bin_associations WHERE id = :pkid""", {'pkid': pkid})
-            Logger.log(["removed", key, pkid])
+            Logger.log(["removed", " ".join(key), pkid])
 
     session.commit()
 
index 3edeac3dc35c3ccdd4a9a736f135426b859461ba..03d12f0f8108012b459d835b4dd0c63e0523b031 100755 (executable)
--- a/dak/rm.py
+++ b/dak/rm.py
@@ -117,32 +117,24 @@ def reverse_depends_check(removals, suite, arches=None, session=None):
         'suite_id':     dbsuite.suite_id,
         'metakey_d_id': metakey_d.key_id,
         'metakey_p_id': metakey_p.key_id,
-        'arch_all_id' : get_architecture('all', session).arch_id,
     }
-    for architecture in all_arches:
+    for architecture in all_arches | set(['all']):
         deps = {}
         sources = {}
         virtual_packages = {}
         params['arch_id'] = get_architecture(architecture, session).arch_id
 
         statement = '''
-            WITH suite_binaries AS
-                (select b.id, b.package, b.source, b.file
-                    from binaries b WHERE b.id in
-                        (SELECT bin FROM bin_associations WHERE suite = :suite_id)
-                        AND b.architecture in (:arch_id, :arch_all_id))
             SELECT b.id, b.package, s.source, c.name as component,
-                bmd.value as depends, bmp.value as provides
-                FROM suite_binaries b
-                LEFT OUTER JOIN binaries_metadata bmd
-                    ON b.id = bmd.bin_id AND bmd.key_id = :metakey_d_id
-                LEFT OUTER JOIN binaries_metadata bmp
-                    ON b.id = bmp.bin_id AND bmp.key_id = :metakey_p_id
+                (SELECT bmd.value FROM binaries_metadata bmd WHERE bmd.bin_id = b.id AND bmd.key_id = :metakey_d_id) AS depends,
+                (SELECT bmp.value FROM binaries_metadata bmp WHERE bmp.bin_id = b.id AND bmp.key_id = :metakey_p_id) AS provides
+                FROM binaries b
+                JOIN bin_associations ba ON b.id = ba.bin AND ba.suite = :suite_id
                 JOIN source s ON b.source = s.id
                 JOIN files f ON b.file = f.id
                 JOIN location l ON f.location = l.id
-                JOIN component c ON l.component = c.id'''
-        session.rollback()
+                JOIN component c ON l.component = c.id
+                WHERE b.architecture = :arch_id'''
         query = session.query('id', 'package', 'source', 'component', 'depends', 'provides'). \
             from_statement(statement).params(params)
         for binary_id, package, source, component, depends, provides in query:
@@ -200,7 +192,7 @@ def reverse_depends_check(removals, suite, arches=None, session=None):
         for source, bindict in sorted(all_broken.items()):
             lines = []
             for binary, arches in sorted(bindict.items()):
-                if arches == all_arches:
+                if arches == all_arches or 'all' in arches:
                     lines.append(binary)
                 else:
                     lines.append('%s [%s]' % (binary, ' '.join(sorted(arches))))