]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_upload.py
Adding install-info-used-in-maintainer-script to the non-fatal
[dak.git] / dak / process_upload.py
index a4dcc2d21030e1bbcc4be7f4560662675a8f5c7e..f74993ce3e7e1dbc185509d320ef3bcc5adecfb9 100755 (executable)
@@ -176,6 +176,7 @@ from daklib.urgencylog import UrgencyLog
 from daklib.summarystats import SummaryStats
 from daklib.holding import Holding
 from daklib.config import Config
+from daklib.regexes import re_match_expired
 
 ###############################################################################
 
@@ -206,6 +207,8 @@ def byebye():
 
 
 def action(u, session):
+    global Logger
+
     cnf = Config()
     holding = Holding()
 
@@ -258,7 +261,7 @@ def action(u, session):
             for s in u.pkg.changes["distribution"].keys():
                 suite = get_suite(s, session)
                 if suite.policy_queue:
-                    if not chg or chg.approved_for_id != su.policy_queue.policy_queue_id:
+                    if not chg or chg.approved_for_id != suite.policy_queue.policy_queue_id:
                         # This routine will check whether the upload is a binary
                         # upload when the source is already in the target suite.  If
                         # so, we skip the policy queue, otherwise we go there.
@@ -292,7 +295,8 @@ def action(u, session):
         u.do_reject(0, pi)
     elif answer == 'A':
         if not chg:
-            chg = u.pkg.add_known_changes(holding.holding_dir, session=session)
+            chg = u.pkg.add_known_changes(holding.holding_dir, session=session, logger=Logger)
+        session.commit()
         u.accept(summary, short_summary, session)
         u.check_override()
         chg.clean_from_queue()
@@ -300,13 +304,13 @@ def action(u, session):
         u.remove()
     elif answer == 'P':
         if not chg:
-            chg = u.pkg.add_known_changes(holding.holding_dir, session=session)
+            chg = u.pkg.add_known_changes(holding.holding_dir, session=session, logger=Logger)
         package_to_queue(u, summary, short_summary, policyqueue, chg, session)
         session.commit()
         u.remove()
     elif answer == queuekey:
         if not chg:
-            chg = u.pkg.add_known_changes(holding.holding_dir, session=session)
+            chg = u.pkg.add_known_changes(holding.holding_dir, session=session, logger=Logger)
         QueueInfo[qu]["process"](u, summary, short_summary, chg, session)
         session.commit()
         u.remove()
@@ -377,6 +381,12 @@ def process_it(changes_file, session):
         if u.pkg.changes["fingerprint"]:
             valid_changes_p = u.load_changes(changespath)
         else:
+            for reason in rejects:
+                if re_match_expired.match(reason):
+                    # Hrm, key expired. Lets see if we can still parse the .changes before
+                    # we reject. Then we would be able to mail the maintainer, instead of
+                    # just silently dropping the upload.
+                    u.load_changes(changespath)
             valid_changes_p = False
             u.rejects.extend(rejects)
 
@@ -386,8 +396,9 @@ def process_it(changes_file, session):
             valid_dsc_p = u.check_dsc(not Options["No-Action"])
             if valid_dsc_p and not Options["No-Action"]:
                 u.check_source()
-                u.check_lintian()
             u.check_hashes()
+            if valid_dsc_p and not Options["No-Action"] and not len(u.rejects):
+                u.check_lintian()
             u.check_urgency()
             u.check_timestamps()
             u.check_signed_by_key()
@@ -458,7 +469,7 @@ def main():
             log_urgency = True
             UrgencyLog()
 
-    Logger = daklog.Logger(cnf, "process-upload", Options["No-Action"])
+    Logger = daklog.Logger("process-upload", Options["No-Action"])
 
     # If we have a directory flag, use it to find our files
     if cnf["Dinstall::Options::Directory"] != "":
@@ -492,6 +503,13 @@ def main():
                                                 utils.size_type(int(summarystats.accept_bytes)))
         Logger.log(["total", summarystats.accept_count, summarystats.accept_bytes])
 
+    if summarystats.reject_count:
+        sets = "set"
+        if summarystats.reject_count > 1:
+            sets = "sets"
+        print "Rejected %d package %s." % (summarystats.reject_count, sets)
+        Logger.log(["rejected", summarystats.reject_count])
+
     byebye()
 
     if not Options["No-Action"]: