Checks on .changes files: * mandatory fields: "source", "binary", "architecture", "version", "distribution", "maintainer", "files", "changes", "description". * format of maintainer field is valid rfc822/2047 compatible. * closes field contains only numbers. * files field not empty. * check for a valid urgency. ... Checks on .deb files: * check that it is an ar archive. * check that it has exactly 3 chunks (although this may change once signed debs are accepted again). * check chunks are exactly: debian-binary, control.tar.gz and data.tar.gz. (or data.tar.bz2 if there's a correct Pre-Depends on dpkg, in the future data.tar.lzma will be added). * check for mandatory fields in the binary control file: "Package", "Architecture", "Version". * check that the package name matches the one from the .changes file. * check if the package name is valid. (as defined in the Debian policy) * chack if the version is valid. (as defined in the Debian policy) * check if it's a known architecture. * check for an empty depends field. ... Checks on .dsc files: * check for .changes files with multiple .dsc files. * source uploads must contain a .dsc file. * check for mandatory fields: "format", "source", "version", "binary", "maintainer", "architecture", "files". * check if the package name is valid. (as defined in the Debian policy) * chack if the version is valid. (as defined in the Debian policy) * check for an incompatible version in the format field produced by a broken dpkg version. * validate maintainer field. * validate build-dependecy fields. - check for invalid fields produced by a borken dpkg. * check that the source can be extracted. [ The following two are using by the version tracking stuff...] * check that the changelog exists. * check that the changelog format is parsable. ... Checks on files: * check that the filenames are correct. * if the section is byhand send to the byhand queue. * if there's a .deb, check if the control field can be opened. * check md5sums. * check for a valid timestamp. ...