From: Joerg Jaspert Date: Sun, 4 Sep 2011 13:07:29 +0000 (+0200) Subject: Merge remote-tracking branch 'ansgar/description-md5' into merge X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=df984f92931b276da9e3ddb0b2fb6e7dc05d91d6;hp=d0328e7b4d2dc5baf38f7dd66eb9d6c5bcf5b55e;p=dak.git Merge remote-tracking branch 'ansgar/description-md5' into merge * 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 --- diff --git a/dak/control_suite.py b/dak/control_suite.py index 57e43da6..236e36aa 100755 --- a/dak/control_suite.py +++ b/dak/control_suite.py @@ -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() diff --git a/dak/rm.py b/dak/rm.py index 3edeac3d..03d12f0f 100755 --- 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))))