"""Sort by source name, source, version, 'have source', and
finally by filename."""
# Sort by source version
- q = apt_pkg.VersionCompare(a["version"], b["version"])
+ q = apt_pkg.version_compare(a["version"], b["version"])
if q:
return -q
__all__.append('sg_compare')
-def sort_changes(changes_files, session):
+def sort_changes(changes_files, session, binaries = None):
"""Sort into source groups, then sort each source group by version,
have source, filename. Finally, sort the source groups by have
note, time of oldest upload of each source upload."""
# Determine oldest time and have note status for each source group
for source in per_source.keys():
q = session.query(DBSource).filter_by(source = source).all()
- per_source[source]["source_in_database"] = len(q)>0
+ per_source[source]["source_in_database"] = binaries and -(len(q)>0) or len(q)>0
source_list = per_source[source]["list"]
first = source_list[0]
oldest = os.stat(first["filename"])[stat.ST_MTIME]
"""Move a changes file to a different queue and mark as approved for the
source queue"""
- chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one()
- chg.approved_for = srcqueue.policy_queue_id
+ try:
+ chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one()
+ except NoResultFound:
+ return False
+
+ chg.approved_for_id = srcqueue.policy_queue_id
for f in chg.files:
# update the changes_pending_files row
f.queue = destqueue
- utils.move(os.path.join(srcqueue.path, f.filename), destqueue.path, perms=int(destqueue.perms, 8))
+ # Only worry about unprocessed files
+ if not f.processed:
+ utils.move(os.path.join(srcqueue.path, f.filename), destqueue.path, perms=int(destqueue.perms, 8))
utils.move(os.path.join(srcqueue.path, upload.pkg.changes_file), destqueue.path, perms=int(destqueue.perms, 8))
chg.in_queue = destqueue
session.commit()
+ return True
+
__all__.append('changes_to_queue')
def new_accept(upload, dry_run, session):
cnf = Config()
(summary, short_summary) = upload.build_summaries()
+ destqueue = get_policy_queue('newstage', session)
- # XXX: mhy: I think this is wrong as these are all attributes on the
- # build and policy queues now
- if cnf.FindB("Dinstall::SecurityQueueHandling"):
- upload.dump_vars(cnf["Dir::Queue::Embargoed"])
- upload.move_to_queue(get_policy_queue('embargoed'))
- upload.queue_build("embargoed", cnf["Dir::Queue::Embargoed"])
- # Check for override disparities
- upload.Subst["__SUMMARY__"] = summary
- else:
- # Just a normal upload, accept it...
- (summary, short_summary) = upload.build_summaries()
+ srcqueue = get_policy_queue_from_path(upload.pkg.directory, session)
+
+ if not srcqueue:
+ # Assume NEW and hope for the best
srcqueue = get_policy_queue('new', session)
- destqueue = get_policy_queue('newstage', session)
- changes_to_queue(upload, srcqueue, destqueue, session)
+ changes_to_queue(upload, srcqueue, destqueue, session)
__all__.append('new_accept')