]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
Merge remote-tracking branch 'ansgar/add-missing-source-checksums' into merge
[dak.git] / dak / process_new.py
index 014dab9026d9562dda8ca09b96a35076e527b4bc..1c2231a305709baf6ff7379fd55fbbe9868ce1d0 100755 (executable)
@@ -42,8 +42,6 @@
 
 ################################################################################
 
 
 ################################################################################
 
-from __future__ import with_statement
-
 import copy
 import errno
 import os
 import copy
 import errno
 import os
@@ -337,33 +335,29 @@ def edit_overrides (new, upload, session):
 ################################################################################
 
 def check_pkg (upload):
 ################################################################################
 
 def check_pkg (upload):
+    save_stdout = sys.stdout
     try:
     try:
-        less_fd = os.popen("less -R -", 'w', 0)
-        stdout_fd = sys.stdout
-        try:
-            sys.stdout = less_fd
-            changes = utils.parse_changes (upload.pkg.changes_file)
-            print examine_package.display_changes(changes['distribution'], upload.pkg.changes_file)
-            files = upload.pkg.files
-            for f in files.keys():
-                if files[f].has_key("new"):
-                    ftype = files[f]["type"]
-                    if ftype == "deb":
-                        print examine_package.check_deb(changes['distribution'], f)
-                    elif ftype == "dsc":
-                        print examine_package.check_dsc(changes['distribution'], f)
-        finally:
-            print examine_package.output_package_relations()
-            sys.stdout = stdout_fd
-    except IOError, e:
+        sys.stdout = os.popen("less -R -", 'w', 0)
+        changes = utils.parse_changes (upload.pkg.changes_file)
+        print examine_package.display_changes(changes['distribution'], upload.pkg.changes_file)
+        files = upload.pkg.files
+        for f in files.keys():
+            if files[f].has_key("new"):
+                ftype = files[f]["type"]
+                if ftype == "deb":
+                    print examine_package.check_deb(changes['distribution'], f)
+                elif ftype == "dsc":
+                    print examine_package.check_dsc(changes['distribution'], f)
+        print examine_package.output_package_relations()
+    except IOError as e:
         if e.errno == errno.EPIPE:
             utils.warn("[examine_package] Caught EPIPE; skipping.")
         if e.errno == errno.EPIPE:
             utils.warn("[examine_package] Caught EPIPE; skipping.")
-            pass
         else:
         else:
+            sys.stdout = save_stdout
             raise
     except KeyboardInterrupt:
         utils.warn("[examine_package] Caught C-c; skipping.")
             raise
     except KeyboardInterrupt:
         utils.warn("[examine_package] Caught C-c; skipping.")
-        pass
+    sys.stdout = save_stdout
 
 ################################################################################
 
 
 ################################################################################
 
@@ -396,7 +390,7 @@ def add_overrides (new, upload, session):
             type_id = get_override_type(new[pkg]["type"]).overridetype_id
             priority_id = new[pkg]["priority id"]
             section_id = new[pkg]["section id"]
             type_id = get_override_type(new[pkg]["type"]).overridetype_id
             priority_id = new[pkg]["priority id"]
             section_id = new[pkg]["section id"]
-            Logger.log(["%s overrides" % (srcpkg), suite, new[pkg]["component"], new[pkg]["type"], new[pkg]["priority"], new[pkg]["section"]])
+            Logger.log(["%s (%s) overrides" % (pkg, srcpkg), suite, new[pkg]["component"], new[pkg]["type"], new[pkg]["priority"], new[pkg]["section"]])
             session.execute("INSERT INTO override (suite, component, type, package, priority, section, maintainer) VALUES (:sid, :cid, :tid, :pkg, :pid, :sectid, '')",
                             { 'sid': suite_id, 'cid': component_id, 'tid':type_id, 'pkg': pkg, 'pid': priority_id, 'sectid': section_id})
             for f in new[pkg]["files"]:
             session.execute("INSERT INTO override (suite, component, type, package, priority, section, maintainer) VALUES (:sid, :cid, :tid, :pkg, :pid, :sectid, '')",
                             { 'sid': suite_id, 'cid': component_id, 'tid':type_id, 'pkg': pkg, 'pid': priority_id, 'sectid': section_id})
             for f in new[pkg]["files"]:
@@ -432,9 +426,10 @@ def do_new(upload, session):
 
     # The main NEW processing loop
     done = 0
 
     # The main NEW processing loop
     done = 0
+    new = {}
     while not done:
         # Find out what's new
     while not done:
         # Find out what's new
-        new, byhand = determine_new(upload.pkg.changes_file, changes, files, dsc=dsc, session=session)
+        new, byhand = determine_new(upload.pkg.changes_file, changes, files, dsc=dsc, session=session, new=new)
 
         if not new:
             break
 
         if not new:
             break
@@ -614,13 +609,16 @@ def check_daily_lock():
 
     cnf = Config()
     try:
 
     cnf = Config()
     try:
-        os.open(cnf["Process-New::DinstallLockFile"],
+        lockfile = cnf.get("Process-New::DinstallLockFile",
+                           os.path.join(cnf['Dir::Lock'], 'processnew.lock'))
+
+        os.open(lockfile,
                 os.O_RDONLY | os.O_CREAT | os.O_EXCL)
                 os.O_RDONLY | os.O_CREAT | os.O_EXCL)
-    except OSError, e:
+    except OSError as e:
         if e.errno == errno.EEXIST or e.errno == errno.EACCES:
             raise CantGetLockError
 
         if e.errno == errno.EEXIST or e.errno == errno.EACCES:
             raise CantGetLockError
 
-    os.unlink(cnf["Process-New::DinstallLockFile"])
+    os.unlink(lockfile)
 
 
 @contextlib.contextmanager
 
 
 @contextlib.contextmanager
@@ -632,13 +630,16 @@ def lock_package(package):
     @param package: source package name to lock
     """
 
     @param package: source package name to lock
     """
 
-    path = os.path.join(Config()["Process-New::LockDir"], package)
+    cnf = Config()
+
+    path = os.path.join(cnf.get("Process-New::LockDir", cnf['Dir::Lock']), package)
+
     try:
         fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDONLY)
     try:
         fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDONLY)
-    except OSError, e:
+    except OSError as e:
         if e.errno == errno.EEXIST or e.errno == errno.EACCES:
             user = pwd.getpwuid(os.stat(path)[stat.ST_UID])[4].split(',')[0].replace('.', '')
         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
+            raise AlreadyLockedError(user)
 
     try:
         yield fd
 
     try:
         yield fd
@@ -687,6 +688,7 @@ def do_pkg(changes_full_path, session):
         u.Subst["__BCC__"] = bcc
 
     files = u.pkg.files
         u.Subst["__BCC__"] = bcc
 
     files = u.pkg.files
+    u.check_distributions()
     for deb_filename, f in files.items():
         if deb_filename.endswith(".udeb") or deb_filename.endswith(".deb"):
             u.binary_file_checks(deb_filename, session)
     for deb_filename, f in files.items():
         if deb_filename.endswith(".udeb") or deb_filename.endswith(".deb"):
             u.binary_file_checks(deb_filename, session)
@@ -716,7 +718,7 @@ def do_pkg(changes_full_path, session):
                         print "Hello? Operator! Give me the number for 911!"
                         print "Dinstall in the locked area, cant process packages, come back later"
 
                         print "Hello? Operator! Give me the number for 911!"
                         print "Dinstall in the locked area, cant process packages, come back later"
 
-    except AlreadyLockedError, e:
+    except AlreadyLockedError as e:
         print "Seems to be locked by %s already, skipping..." % (e)
 
 def show_new_comments(changes_files, session):
         print "Seems to be locked by %s already, skipping..." % (e)
 
 def show_new_comments(changes_files, session):
@@ -786,8 +788,8 @@ def main():
 
     if not Options["No-Action"]:
         try:
 
     if not Options["No-Action"]:
         try:
-            Logger = daklog.Logger(cnf, "process-new")
-        except CantOpenError, e:
+            Logger = daklog.Logger("process-new")
+        except CantOpenError as e:
             Options["Trainee"] = "True"
 
     Sections = Section_Completer(session)
             Options["Trainee"] = "True"
 
     Sections = Section_Completer(session)