]> git.decadent.org.uk Git - dak.git/blobdiff - dak/process_unchecked.py
Merge upstream
[dak.git] / dak / process_unchecked.py
index d33408cfa229d1829a6a91694d8bb1943a11cd61..498eb49f0dd6a21da49cd2d76bb0e052c3efbf26 100755 (executable)
@@ -44,6 +44,7 @@ re_valid_pkg_name = re.compile(r"^[\dA-Za-z][\dA-Za-z\+\-\.]+$")
 re_changelog_versions = re.compile(r"^\w[-+0-9a-z.]+ \([^\(\) \t]+\)")
 re_strip_revision = re.compile(r"-([^-]+)$")
 re_strip_srcver = re.compile(r"\s+\(\S+\)$")
+re_spacestrip = re.compile('(\s)')
 
 ################################################################################
 
@@ -461,6 +462,16 @@ def check_files():
             if depends == '':
                 reject("%s: Depends field is empty." % (file))
 
+            # Sanity-check the Provides field
+            provides = re_spacestrip.sub('', control.Find("Provides"))
+            if provides == '':
+                reject("%s: Provides field is empty." % (file))
+            prov_list = provides.split(",")
+            for prov in prov_list:
+                if not re_valid_pkg_name.match(prov):
+                    reject("%s: Invalid Provides field content %s." % (file, prov))
+
+
             # Check the section & priority match those given in the .changes (non-fatal)
             if control.Find("Section") and files[file]["section"] != "" and files[file]["section"] != control.Find("Section"):
                 reject("%s control file lists section as `%s', but changes file has `%s'." % (file, control.Find("Section", ""), files[file]["section"]), "Warning: ")
@@ -1072,8 +1083,12 @@ def check_signed_by_key():
         if uid_name == "": sponsored = 1
     else:
         sponsored = 1
-        if daklib.utils.is_email_alias(uid_email):
-            changes["sponsoremail"] = uid_email
+        if ("source" in changes["architecture"] and
+            daklib.utils.is_email_alias(uid_email)):
+            sponsor_addresses = daklib.utils.gpg_get_key_addresses(changes["fingerprint"])
+            if (changes["maintaineremail"] not in sponsor_addresses and
+                changes["changedbyemail"] not in sponsor_addresses):
+                changes["sponsoremail"] = uid_email
 
     if sponsored and not may_sponsor: 
         reject("%s is not authorised to sponsor uploads" % (uid))