X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fchecks.py;h=e17a191e39472b112e50f24a00442da161c65970;hb=6b05407646140b4ce2b16463bb96bf471dd5e646;hp=86040268ac7d3bc0d5ac458cd84952621ffda40a;hpb=64d9673cf98a8adb330f5de673c471d55999457c;p=dak.git diff --git a/daklib/checks.py b/daklib/checks.py index 86040268..e17a191e 100644 --- a/daklib/checks.py +++ b/daklib/checks.py @@ -287,7 +287,6 @@ class BinaryCheck(Check): """Check binary packages for syntax errors.""" def check(self, upload): debug_deb_name_postfix = "-dbgsym" - debug_deb_section = "debug" # XXX: Handle dynamic debug section name here for binary in upload.changes.binaries: @@ -297,14 +296,17 @@ class BinaryCheck(Check): for binary in upload.changes.binaries} for name, binary in binaries.items(): - if binary.section == debug_deb_section: - # If we have a Binary package in the Debug section, we + if name in upload.changes.binary_names: + # Package is listed in Binary field. Everything is good. + pass + elif daklib.utils.is_in_debug_section(binary.control): + # If we have a binary package in the debug section, we # can allow it to not be present in the Binary field # in the .changes file, so long as its name (without # -dbgsym) is present in the Binary list. if not name.endswith(debug_deb_name_postfix): - raise Reject('Package {0} is in the Debug section, but ' - 'does not end in -dbgsym.'.format(name)) + raise Reject('Package {0} is in the debug section, but ' + 'does not end in {1}.'.format(name, debug_deb_name_postfix)) # Right, so, it's named properly, let's check that # the corresponding package is in the Binary list @@ -314,15 +316,10 @@ class BinaryCheck(Check): "Debug package {debug}'s corresponding binary package " "{origin} is not present in the Binary field.".format( debug=name, origin=origin_package_name)) - - # So, now we're sure the package is named correctly, and - # we have the other package. Lets let this slide through. - continue - - if name not in upload.changes.binary_names: + else: # Someone was a nasty little hacker and put a package # into the .changes that isn't in debian/control. Bad, - # Bad hacker. + # bad person. raise Reject('Package {0} is not mentioned in Binary field in changes'.format(name)) return True @@ -721,6 +718,8 @@ class NoSourceOnlyCheck(Check): if not allow_no_arch_indep_uploads \ and 'all' not in changes.architectures \ and 'experimental' not in changes.distributions \ + and 'unstable' not in changes.distributions \ + and 'sid' not in changes.distributions \ and changes.source.package_list.has_arch_indep_packages(): raise Reject('Uploads not including architecture-independent packages are not allowed.') @@ -800,6 +799,14 @@ class SourceFormatCheck(Check): if query.first() is None: raise Reject('source format {0} is not allowed in suite {1}'.format(source_format, suite.suite_name)) +class SuiteCheck(Check): + def per_suite_check(self, upload, suite): + if not suite.accept_source_uploads and upload.changes.source is not None: + raise Reject('The suite "{0}" does not accept source uploads.'.format(suite.suite_name)) + if not suite.accept_binary_uploads and len(upload.changes.binaries) != 0: + raise Reject('The suite "{0}" does not accept binary uploads.'.format(suite.suite_name)) + return True + class SuiteArchitectureCheck(Check): def per_suite_check(self, upload, suite): session = upload.session