X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fupload.py;h=1683b8b0f4b152fe38c9641441d8ed1cef6ca4ef;hb=0b9068dfabb27498d868e61b9b7da0b9ecfc1349;hp=3d63c71e5345eec9d5c6535216a5effd5da4200b;hpb=11b25f20ef4be9493992b96dd7006ed7ca26bdd8;p=dak.git diff --git a/daklib/upload.py b/daklib/upload.py index 3d63c71e..1683b8b0 100644 --- a/daklib/upload.py +++ b/daklib/upload.py @@ -45,7 +45,13 @@ class InvalidHashException(Exception): self.expected = expected self.actual = actual def __str__(self): - return "Invalid {0} hash for {1}: expected {2}, but got {3}.".format(self.hash_name, self.filename, self.expected, self.actual) + return ("Invalid {0} hash for {1}:\n" + "According to the control file the {0} hash should be {2},\n" + "but {1} has {3}.\n" + "\n" + "If you did not include {1} in you upload, a different version\n" + "might already be known to the archive software.") \ + .format(self.hash_name, self.filename, self.expected, self.actual) class InvalidFilenameException(Exception): def __init__(self, filename): @@ -185,7 +191,9 @@ def parse_file_list(control, has_priority_and_section): continue (sha1sum, size, filename) = line.split() entry = entries.get(filename, None) - if entry.get('size', None) != long(size): + if entry is None: + raise InvalidChangesException('{0} is listed in Checksums-Sha1, but not in Files.'.format(filename)) + if entry is not None and entry.get('size', None) != long(size): raise InvalidChangesException('Size for {0} in Files and Checksum-Sha1 fields differ.'.format(filename)) entry['sha1sum'] = sha1sum @@ -195,8 +203,8 @@ def parse_file_list(control, has_priority_and_section): (sha256sum, size, filename) = line.split() entry = entries.get(filename, None) if entry is None: - raise InvalidChangesException('No sha256sum for {0}.'.format(filename)) - if entry.get('size', None) != long(size): + raise InvalidChangesException('{0} is listed in Checksums-Sha256, but not in Files.'.format(filename)) + if entry is not None and entry.get('size', None) != long(size): raise InvalidChangesException('Size for {0} in Files and Checksum-Sha256 fields differ.'.format(filename)) entry['sha256sum'] = sha256sum @@ -296,6 +304,13 @@ class Changes(object): self._source = Source(self.directory, source_files, self._keyrings, self._require_signature) return self._source + @property + def sourceful(self): + """C{True} if the upload includes source + @type: bool + """ + return "source" in self.architectures + @property def source_name(self): """source package name