]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_new.py
Merge branch 'master' of ftpmaster's dak repository
[dak.git] / dak / process_new.py
index b40ca6eccca7672cd212777b641deb48f638e63d..3dd93ada1a68ba480c2dcf6c6a9d186e09ef7da4 100755 (executable)
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+# vim:set et ts=4 sw=4:
 
 # Handles NEW and BYHAND packages
 # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006  James Troup <james@nocrew.org>
@@ -819,9 +820,9 @@ def is_source_in_queue_dir(qdir):
     for entry in entries:
         # read the .dak
         u = queue.Upload(Cnf)
-        u.pkg.changes_file = entry
+        u.pkg.changes_file = os.path.join(qdir, entry)
         u.update_vars()
-        if not changes["architecture"].has_key("source"):
+        if not u.pkg.changes["architecture"].has_key("source"):
             # another binary upload, ignore
             continue
         if Upload.pkg.changes["version"] != u.pkg.changes["version"]:
@@ -833,36 +834,59 @@ def is_source_in_queue_dir(qdir):
 
 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)
     os.unlink(Upload.pkg.changes_file[:-8]+".dak")
 
+def _accept():
+    if Options["No-Action"]:
+        return
+    (summary, short_summary) = Upload.build_summaries()
+    Upload.accept(summary, short_summary)
+    os.unlink(Upload.pkg.changes_file[:-8]+".dak")
+
 def do_accept_stableupdate(suite, q):
     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_qdir(queue_dir):
+        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 is_source_in_qdir(Cnf["Dir::Queue::New"]):
-            # It's in NEW.  We expect the source to land in p-u holding
-            # pretty soon.
-            move_to_holding(suite, queue_dir)
-        elif is_source_in_qdir(Cnf["Dir::Queue::Accepted"]):
-            # The source is in accepted, the binary cleared NEW: accept it.
-            Upload.accept(summary, short_summary)
-            os.unlink(Upload.pkg.changes_file[:-8]+".dak")
         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.
-            Upload.accept(summary, short_summary)
-            os.unlink(Upload.pkg.changes_file[:-8]+".dak")
-       return
-    move_to_holding(suite, queue_dir)
+            print "Binary-only upload, source installed."
+            _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."
+            _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)
+        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():
     print "ACCEPT"
@@ -887,8 +911,7 @@ def do_accept():
                     continue
                 return do_accept_stableupdate(suite, q)
             # Just a normal upload, accept it...
-            Upload.accept(summary, short_summary)
-            os.unlink(Upload.pkg.changes_file[:-8]+".dak")
+            _accept()
     finally:
         if not Options["No-Action"]:
             os.unlink(Cnf["Process-New::AcceptedLockFile"])