Check-Script: control-file Author: Marc 'HE' Brockschmidt Abbrev: dctl Type: source Unpack-Level: 1 Needs-Info: debfiles Info: This script checks debian/control files in source packages Tag: debian-control-file-uses-obsolete-national-encoding Severity: serious Certainty: certain Ref: policy 5.1 Info: The Debian control file should be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a control from an obsoleted encoding like ISO-8859-1; you may for example use "iconv" like this: . $ iconv -f ISO-8859-1 -t UTF-8 control > control.new $ mv control.new control Tag: build-info-in-binary-control-file-section Severity: important Certainty: certain Ref: policy 5.2 Info: The control file has a Build-Depends, Build-Depends-Indep, Build-Conflicts, or Build-Conflicts-Indep field in a binary section. These specify source package relationships, and should be in the source section of the control file. Tag: debian-control-with-duplicate-fields Severity: important Certainty: certain Info: One of the paragraphs of your debian/control contains the same field more than once. This can lead to an unexpected behaviour of dpkg and apt. Tag: debian-control-has-unusual-field-spacing Severity: pedantic Certainty: certain Ref: policy 5.1 Info: The field on this line of debian/control has whitespace other than a single space after the colon. This is explicitly permitted in the syntax of Debian control files, but as Policy says, it is conventional to put a single space after the colon. Tag: binary-control-field-duplicates-source Severity: wishlist Certainty: certain Info: In debian/control, this field for a binary package duplicates the value inherited from the source package paragraph. This doesn't hurt anything, but you may want to take advantage of the inheritance and set the value in only one place. It prevents missing duplicate places that need to be fixed if the value ever changes. Tag: debian-control-file-is-a-symlink Severity: normal Certainty: certain Info: The debian/control file is a symlink rather than a regular file. Using symlinks for required source package files is unnecessary and makes package checking and manipulation more difficult. If the control file should be available in the source package under multiple names, make debian/control the real file and the other names symlinks to it. Tag: no-section-field-for-source Severity: normal Certainty: certain Ref: policy 5.2 Info: The package does not have a "Section:" field in the source package section of its control file. The Section field is required for source packages at the request of the Debian ftp-masters. Tag: section-area-mismatch Severity: important Certainty: certain Info: The debian/control file places the indicated binary package in a different archive area (main, contrib, non-free) than its source package or other binary packages built from the same source package. The source package and any binary packages it builds must be in the same area of the archive, with the single exception that source packages in main may also build binary packages in contrib. Tag: xs-vcs-header-in-debian-control Severity: wishlist Certainty: certain Info: There is an XS-Vcs-* field in the debian/control file. As of dpkg 1.14.6, the XS- prefix is no longer necessary. dpkg now recognizes these headers and handles them correctly. Consider removing the XS- prefix for this field. Tag: stronger-dependency-implies-weaker Severity: normal Certainty: certain Ref: policy 7.2 Info: In the debian/control stanza for the given package, a stronger dependency field implies one of the dependencies in a weaker dependency field. In other words, the Depends field of the package requires that one of the packages listed in Recommends or Suggests be installed, or a package is listed in Recommends as well as Suggests. . Current versions of dpkg-gencontrol will silently fix this problem by removing the weaker dependency, but it may indicate a more subtle bug (misspelling or forgetting to remove the stronger dependency when it was moved to the weaker field). Tag: package-depends-on-itself Severity: normal Certainty: certain Ref: policy 7.2 Info: The given package declares a dependency on itself in its debian/control stanza. Current versions of dpkg-gencontrol will silently fix this problem by removing the dependency, but it may indicate a more subtle bug (misspelling or cutting and pasting the wrong package name). Tag: duplicate-short-description Severity: wishlist Certainty: possible Info: The listed binary packages all share the same short description (the first line of the Description control field). The package names may provide enough additional information to distinguish between the packages, but it's common to also add a word or two to the short description to clarify the difference. Tag: duplicate-long-description Severity: wishlist Certainty: certain Info: The listed binary packages all share the same extended description. Some additional information in the extended description explaining what is in each package and how it differs from the other packages is useful, particularly for users who aren't familiar with Debian's package naming conventions. Tag: missing-comma-after-substvar Severity: normal Certainty: possible Info: The given field in the debian/control file has a substvar (something of the form ${Variable}) that isn't followed by a comma. This is normally a lurking bug. As long as the variable isn't defined or expands to an empty string, the generated control file will be syntactically valid, but as soon as the variable has a non-empty value, the control file will have a syntax error. You probably meant to put a comma after the substvar expansion. Tag: missing-comma-between-items Severity: important Certainty: certain Info: The given field in the debian/control file contains a list of items separated by commas. It appears that when wrapping the list on multiple lines, a comma was missed at the end of a line. This can lead to bogus or incomplete dependencies, conflicts etc. Tag: package-depends-on-hardcoded-libc Severity: normal Certainty: certain Info: The given package declares a dependency on libc directly instead of using ${shlibs:Depends} in its debian/control stanza.