return None
sa_major_version = sqlalchemy.__version__[0:3]
-if sa_major_version in ["0.5", "0.6"]:
+if sa_major_version in ["0.5", "0.6", "0.7"]:
from sqlalchemy.databases import postgres
postgres.ischema_names['debversion'] = DebVersion
else:
- raise Exception("dak only ported to SQLA versions 0.5 and 0.6. See daklib/dbconn.py")
+ raise Exception("dak only ported to SQLA versions 0.5 to 0.7. See daklib/dbconn.py")
################################################################################
@rtype: text
@return: stanza text of the control section.
'''
- import apt_inst
+ import utils
fullpath = self.poolfile.fullpath
deb_file = open(fullpath, 'r')
- stanza = apt_inst.debExtractControl(deb_file)
+ stanza = utils.deb_extract_control(deb_file)
deb_file.close()
return stanza
# Prepare BuildQueueFile object
qf = BuildQueueFile()
qf.build_queue_id = self.queue_id
- qf.lastused = datetime.now()
qf.filename = poolfile_basename
targetpath = poolfile.fullpath
if suite != "any":
# source must exist in 'suite' or a suite that is enhanced by 'suite'
s = get_suite(suite, session)
- enhances_vcs = session.query(VersionCheck).filter(VersionCheck.suite==s).filter_by(check='Enhances')
- considered_suites = [ vc.reference for vc in enhances_vcs ]
- considered_suites.append(s)
+ if s:
+ enhances_vcs = session.query(VersionCheck).filter(VersionCheck.suite==s).filter_by(check='Enhances')
+ considered_suites = [ vc.reference for vc in enhances_vcs ]
+ considered_suites.append(s)
- q = q.filter(DBSource.suites.any(Suite.suite_id.in_([s.suite_id for s in considered_suites])))
+ q = q.filter(DBSource.suites.any(Suite.suite_id.in_([s.suite_id for s in considered_suites])))
if q.count() > 0:
continue
# Find source id
bin_sources = get_sources_from_name(entry["source package"], entry["source version"], session=session)
+
+ # If we couldn't find anything and the upload contains Arch: source,
+ # fall back to trying the source package, source version uploaded
+ # This maintains backwards compatibility with previous dak behaviour
+ # and deals with slightly broken binary debs which don't properly
+ # declare their source package name
+ if len(bin_sources) == 0:
+ if u.pkg.changes["architecture"].has_key("source") \
+ and u.pkg.dsc.has_key("source") and u.pkg.dsc.has_key("version"):
+ bin_sources = get_sources_from_name(u.pkg.dsc["source"], u.pkg.dsc["version"], session=session)
+
+ # If we couldn't find a source here, we reject
+ # TODO: Fix this so that it doesn't kill process-upload and instead just
+ # performs a reject. To be honest, we should probably spot this
+ # *much* earlier than here
if len(bin_sources) != 1:
raise NoSourceFieldError("Unable to find a unique source id for %s (%s), %s, file %s, type %s, signed by %s" % \
(bin.package, bin.version, entry["architecture"],
mapper(Architecture, self.tbl_architecture,
properties = dict(arch_id = self.tbl_architecture.c.id,
suites = relation(Suite, secondary=self.tbl_suite_architectures,
- order_by='suite_name',
- backref=backref('architectures', order_by='arch_string'))),
+ order_by=self.tbl_suite.c.suite_name,
+ backref=backref('architectures', order_by=self.tbl_architecture.c.arch_string))),
extension = validator)
mapper(Archive, self.tbl_archive,