Check-Script: control-file Author: Marc 'HE' Brockschmidt Abbrev: dctl Type: source 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: serious 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: serious Certainty: certain Ref: policy 5.1 Info: One of the paragraphs of your debian/control contains the same field more than once. This can lead to unexpected behaviour in 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: xc-package-type-in-debian-control Severity: pedantic Certainty: certain Info: The debian/control file contains an XC-Package-Type field. As of dpkg-dev 1.15.7, the dpkg development utilities recognize Package-Type as an official field name and do not add it to binary packages (the previous concern with the dpkg-dev-supported Package-Type field). XC-Package-Type should generally now be replaced with Package-Type. 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: duplicate-in-relation-field Severity: pedantic Certainty: certain Info: The given field in the debian/control file contains relations that are either identical or imply each other. The less restrictive one can be removed. This is done automatically by dpkg-source and dpkg-gencontrol, so this does not affect the generated package. Tag: missing-separator-between-items Severity: important Certainty: certain Info: The given field in the debian/control file contains a list of items separated by commas and pipes. It appears a separator was missed between two items. This can lead to bogus or incomplete dependencies, conflicts etc. Tag: obsolete-relation-form-in-source Ref: policy 7.1 Severity: normal Certainty: certain Info: The forms "<" and ">" mean "<=" and ">=", not "<<" and ">>" as one might expect. These forms were marked obsolete and should no longer be used. Use the longer forms instead. 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. Tag: weak-library-dev-dependency Severity: important Certainty: possible Ref: policy 8.5 Info: The given package appears to be a shared library -dev package, but the dependency on what seems to be a corresponding shared library package does not force the same package version. To ensure that compiling and linking works properly, and that the symlinks in the -dev package point to the correct files in the shared library package, a -dev package should normally use (= ${binary:Version}) for the dependency on the shared library package. . Sometimes, such as for -dev packages that are architecture-independent to not break binNMUs or when one doesn't want to force a tight dependency, a weaker dependency is warranted. Something like (>= ${source:Upstream-Version}), (<< ${source:Upstream-Version}+1~), possibly using ${source:Version} instead, is the right apprach. The goal is to ensure that a new upstream version of the library package doesn't satisfy the -dev package dependency, since the minor version of the shared library may have changed, breaking the *.so links. Tag: syntax-error-in-control-file Severity: important Certainty: possible Info: The control file contains a syntax error. . This issue may hide other issues as Lintian skips some checks on the file in this case. Tag: control-file-contains-dh_make-vcs-comment Severity: normal Certainty: certain Info: The control file contains commented-out VCS-* lines, most probably a result of dh_make. These URLs should either be valid and uncommented, or removed.