+def check_daily_lock():
+ """
+ Raises CantGetLockError if the dinstall daily.lock exists.
+ """
+
+ cnf = Config()
+ try:
+ os.open(cnf["Process-New::DinstallLockFile"],
+ os.O_RDONLY | os.O_CREAT | os.O_EXCL)
+ except OSError, e:
+ if e.errno == errno.EEXIST or e.errno == errno.EACCES:
+ raise CantGetLockError
+
+ os.unlink(cnf["Process-New::DinstallLockFile"])
+
+
+@contextlib.contextmanager
+def lock_package(package):
+ """
+ Lock C{package} so that noone else jumps in processing it.
+
+ @type package: string
+ @param package: source package name to lock
+ """
+
+ path = os.path.join(Config()["Process-New::LockDir"], package)
+ try:
+ fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDONLY)
+ except OSError, e:
+ if e.errno == errno.EEXIST or e.errno == errno.EACCES:
+ user = pwd.getpwuid(os.stat(path)[stat.ST_UID])[4].split(',')[0].replace('.', '')
+ raise AlreadyLockedError, user
+
+ try:
+ yield fd
+ finally:
+ os.unlink(path)
+
+# def move_to_dir (upload, dest, perms=0660, changesperms=0664):
+# utils.move (upload.pkg.changes_file, dest, perms=changesperms)
+# file_keys = upload.pkg.files.keys()
+# for f in file_keys:
+# utils.move (f, dest, perms=perms)
+
+# def is_source_in_queue_dir(qdir):
+# entries = [ x for x in os.listdir(qdir) if x.startswith(Upload.pkg.changes["source"])
+# and x.endswith(".changes") ]
+# for entry in entries:
+# # read the .dak
+# u = queue.Upload(Cnf)
+# u.pkg.changes_file = os.path.join(qdir, entry)
+# u.update_vars()
+# if not u.pkg.changes["architecture"].has_key("source"):
+# # another binary upload, ignore
+# continue
+# if Upload.pkg.changes["version"] != u.pkg.changes["version"]:
+# # another version, ignore
+# continue
+# # found it!
+# return True
+# return False
+
+# def move_to_holding(suite, queue_dir):
+# print "Moving to %s holding area." % (suite.upper(),)
+# if Options["No-Action"]:
+# return
+# Logger.log(["Moving to %s" % (suite,), Upload.pkg.changes_file])
+# Upload.dump_vars(queue_dir)
+# move_to_dir(queue_dir, perms=0664)
+# os.unlink(Upload.pkg.changes_file[:-8]+".dak")
+
+def _accept(upload):
+ if Options["No-Action"]:
+ return
+ (summary, short_summary) = upload.build_summaries()
+ upload.accept(summary, short_summary, targetdir=Config()["Dir::Queue::Newstage"])
+ os.unlink(upload.pkg.changes_file[:-8]+".dak")
+
+# def do_accept_stableupdate(upload,suite, q):
+# cnf = Config()
+# queue_dir = cnf["Dir::Queue::%s" % (q,)]
+# if not upload.pkg.changes["architecture"].has_key("source"):
+# # It is not a sourceful upload. So its source may be either in p-u
+# # holding, in new, in accepted or already installed.
+# if is_source_in_queue_dir(queue_dir):
+# # It's in p-u holding, so move it there.
+# print "Binary-only upload, source in %s." % (q,)
+# move_to_holding(suite, queue_dir)
+# elif Upload.source_exists(Upload.pkg.changes["source"],
+# Upload.pkg.changes["version"]):
+# # dak tells us that there is source available. At time of
+# # writing this means that it is installed, so put it into
+# # accepted.
+# print "Binary-only upload, source installed."
+# Logger.log([utils.getusername(), "PUNEW ACCEPT: %s" % (Upload.pkg.changes_file)])
+# _accept()
+# elif is_source_in_queue_dir(Cnf["Dir::Queue::Accepted"]):
+# # The source is in accepted, the binary cleared NEW: accept it.
+# print "Binary-only upload, source in accepted."
+# Logger.log([utils.getusername(), "PUNEW ACCEPT: %s" % (Upload.pkg.changes_file)])
+# _accept()
+# elif is_source_in_queue_dir(Cnf["Dir::Queue::New"]):
+# # It's in NEW. We expect the source to land in p-u holding
+# # pretty soon.
+# print "Binary-only upload, source in new."
+# move_to_holding(suite, queue_dir)
+# elif is_source_in_queue_dir(Cnf["Dir::Queue::Newstage"]):
+# # It's in newstage. Accept into the holding area
+# print "Binary-only upload, source in newstage."
+# Logger.log([utils.getusername(), "PUNEW ACCEPT: %s" % (Upload.pkg.changes_file)])
+# _accept()
+# else:
+# # No case applicable. Bail out. Return will cause the upload
+# # to be skipped.
+# print "ERROR"
+# print "Stable update failed. Source not found."
+# return
+# else:
+# # We are handling a sourceful upload. Move to accepted if currently
+# # in p-u holding and to p-u holding otherwise.
+# if is_source_in_queue_dir(queue_dir):
+# print "Sourceful upload in %s, accepting." % (q,)
+# _accept()
+# else:
+# move_to_holding(suite, queue_dir)
+
+def do_accept(upload):
+ print "ACCEPT"
+ cnf = Config()