X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=4b2cff3ea157c8cc8f8b44b60b23d221b6ba68aa;hb=9301cf2b44c777913bcc110fe474831a8700f818;hp=1be7c21382818832bf133ba076751f9c03c26538;hpb=80214d25f2816972271b49a7f7955d4f839dde7f;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index 1be7c213..4b2cff3e 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -666,6 +666,7 @@ def do_new(upload, session): try: check_daily_lock() done = add_overrides (new, upload, session) + do_accept(upload, session) Logger.log(["NEW ACCEPT: %s" % (upload.pkg.changes_file)]) except CantGetLockError: print "Hello? Operator! Give me the number for 911!" @@ -816,36 +817,48 @@ def lock_package(package): finally: os.unlink(path) -def move_file_to_queue(to_q, f, session): - """mark a file as being in the unchecked queue""" - # update the queue_file entry for the existing queue - qf = session.query(QueueFile).filter_by(queueid=to_q.queueid, - filename=f.filename) - qf.queue = to_q +class clean_holding(object): + def __init__(self,pkg): + self.pkg = pkg + + def __enter__(self): + pass + + def __exit__(self, type, value, traceback): + h = Holding() + + for f in self.pkg.files.keys(): + if os.path.exists(os.path.join(h.holding_dir, f)): + os.unlink(os.path.join(h.holding_dir, f)) - # update the changes_pending_files row - f.queue = to_q -def changes_to_unchecked(changes, session): - """move a changes file to unchecked""" - unchecked = get_policy_queue('unchecked', session ); - changes.in_queue = unchecked - for f in changes.pkg.files: - move_file_to_queue(unchecked, f) +def changes_to_newstage(upload, session): + """move a changes file to newstage""" + new = get_policy_queue('new', session ); + newstage = get_policy_queue('newstage', session ); - # actually move files - changes.move_to_queue(unchecked) + chg = session.query(DBChange).filter_by(changesname=os.path.basename(upload.pkg.changes_file)).one() + chg.approved_for = newstage.policy_queue_id + + for f in chg.files: + # update the changes_pending_files row + f.queue = newstage + utils.move(os.path.join(new.path, f.filename), newstage.path, perms=int(newstage.perms, 8)) + + utils.move(os.path.join(new.path, upload.pkg.changes_file), newstage.path, perms=int(newstage.perms, 8)) + chg.in_queue = newstage + session.commit() -def _accept(upload): +def _accept(upload, session): if Options["No-Action"]: return (summary, short_summary) = upload.build_summaries() -# upload.accept(summary, short_summary, targetqueue) -# os.unlink(upload.pkg.changes_file[:-8]+".dak") - changes_to_unchecked(upload) + # upload.accept(summary, short_summary, targetqueue) -def do_accept(upload): + changes_to_newstage(upload, session) + +def do_accept(upload, session): print "ACCEPT" cnf = Config() if not Options["No-Action"]: @@ -859,7 +872,7 @@ def do_accept(upload): upload.Subst["__SUMMARY__"] = summary else: # Just a normal upload, accept it... - _accept(upload) + _accept(upload, session) def do_pkg(changes_file, session): new_queue = get_policy_queue('new', session ); @@ -881,44 +894,32 @@ def do_pkg(changes_file, session): files = u.pkg.files for deb_filename, f in files.items(): - package = re_package.sub(r'\1', deb_filename) - files[deb_filename]["package"] = package - - if deb_filename.endswith(".udeb"): - files[deb_filename]["dbtype"] = "udeb" - elif deb_filename.endswith(".deb"): - files[deb_filename]["dbtype"] = "deb" - else: - m = re_issource.match(deb_filename) - if not m: - continue - files[deb_filename]["package"] = m.group(1) - files[deb_filename]["version"] = m.group(2) - files[deb_filename]["type"] = m.group(3) - - files[deb_filename]["type"] = get_type(f, session) - entry = files[deb_filename] - - # Version and file overwrite checks - if entry["type"] == "deb": + if deb_filename.endswith(".udeb") or deb_filename.endswith(".deb"): + u.binary_file_checks(deb_filename, session) u.check_binary_against_db(deb_filename, session) - elif entry["type"] == "dsc": + else: + u.source_file_checks(deb_filename, session) u.check_source_against_db(deb_filename, session) - u.check_dsc_against_db(dsc_filename, session) + + u.pkg.changes["suite"] = copy.copy(u.pkg.changes["distribution"]) try: with lock_package(u.pkg.changes["source"]): - if not recheck(u, session): - return - - # FIXME: This does need byhand checks added! - print "files is %s" % (u.pkg.files) - print "changes is %s" % (u.pkg.changes) - new = determine_new(u.pkg.changes, files) - if new: - do_new(u, session) - else: - do_accept(u) + with clean_holding(u.pkg): + if not recheck(u, session): + return + + # FIXME: This does need byhand checks added! + new = determine_new(u.pkg.changes, files) + if new: + do_new(u, session) + else: + try: + check_daily_lock() + do_accept(u, session) + except CantGetLockError: + print "Hello? Operator! Give me the number for 911!" + print "Dinstall in the locked area, cant process packages, come back later" # (new, byhand) = check_status(files) # if new or byhand: # if new: