from daklib.dbconn import *
from daklib import utils
from daklib.dak_exceptions import *
-from daklib.regexes import re_strip_source_version, re_build_dep_arch
+from daklib.regexes import re_strip_source_version, re_build_dep_arch, re_bin_only_nmu
import debianbts as bts
################################################################################
'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 = {}
statement = '''
SELECT b.id, b.package, s.source, c.name as component,
- bmd.value as depends, bmp.value as provides
+ (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
- 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
+ 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
- WHERE b.id in
- (SELECT bin FROM bin_associations WHERE suite = :suite_id)
- AND b.architecture in (:arch_id, :arch_all_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:
parsed_dep = []
try:
parsed_dep += apt_pkg.ParseDepends(deps[package])
- except ValueError, e:
+ except ValueError as e:
print "Error for package %s: %s" % (package, e)
for dep in parsed_dep:
# Check for partial breakage. If a package has a ORed
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))))
build_dep = re_build_dep_arch.sub("", build_dep)
try:
parsed_dep += apt_pkg.ParseDepends(build_dep)
- except ValueError, e:
+ except ValueError as e:
print "Error for source %s: %s" % (source, e)
for dep in parsed_dep:
unsat = 0
Subst_close_other = Subst_common
bcc = []
wnpp = utils.parse_wnpp_bug_file()
+ versions = list(set([re_bin_only_nmu.sub('', v) for v in versions]))
if len(versions) == 1:
Subst_close_other["__VERSION__"] = versions[0]
else: