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:
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()
'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:
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))))