Check-Script: control-file
Author: Marc 'HE' Brockschmidt <marc@marcbrockschmidt.de>
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 &gt; 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-has-unusual-field-spacing
Severity: pedantic
Certainty: certain
Ref: policy 5.1
Info: The field on this line of <tt>debian/control</tt> 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 <tt>debian/control</tt>, 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 <tt>debian/control</tt> 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
 <tt>debian/control</tt> 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 <tt>debian/control</tt> 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 <tt>debian/control</tt> 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 <tt>debian/control</tt> 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 <tt>debian/control</tt> 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
 <tt>debian/control</tt> 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 <tt>debian/control</tt> file contains
 relations that are either identical or imply each other.  The less
 restrictive one can be removed.  This is done automatically by
 <tt>dpkg-source</tt> and <tt>dpkg-gencontrol</tt>, so this does not
 affect the generated package.

Tag: missing-separator-between-items
Severity: important
Certainty: certain
Info: The given field in the <tt>debian/control</tt> 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 "&lt;" and "&gt;" mean "&lt;=" and "&gt;=", not "&lt;&lt;"
 and "&gt;&gt;" 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 <tt>debian/control</tt> 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 <tt>(= ${binary:Version})</tt> 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 <tt>(&gt;=
 ${source:Upstream-Version}), (&lt;&lt;
 ${source:Upstream-Version}+1~)</tt>, possibly using
 <tt>${source:Version}</tt> 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 <tt>*.so</tt> 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.
