Bits from the Lintian maintainers
-----BEGIN PGP SIGNED MESSAGE-----
- New features <FEAT>
- Support for third-party checks <FEAT-CHECKS>
- Vendor specific data files <FEAT-DATA>
- Override comments <FEAT-OVERCOM>
- Loading code from $HOME/user dirs <LOAD-CODE>
- Command-line/frontend changes <CLI>
- Optimizations <OPT>
- Help wanted <HELP>
New features <FEAT>
Since the last Lintian bits in August 2011, we added some new features
that you may like:
Support for third-party checks <FEAT-CHECKS>
With Lintian 2.5.12 we have decided to open up for supporting for
third-party checks. For more information see [LM#3.3] or the "API"
docs[API-DOC]. API stability not included, so packages should add
tight dependencies on Lintian accordingly. An example of such
lintian (>= 2.5.12~), lintian (<< 2.5.13~)
Please be very careful to remember the "~" in the upper bound as
Lintian is regularly backported to stable.
Since these checks are not restricted to all of the design choices of
Lintian itself, so it is (among other things) possible to (ab)use the
local APT cache[LUTILS].
For the early adopters, Lintian 2.5.12 includes a nice little
Test::Lintian module for some of the basic things to check.
[API-DOC] Generated via:
$ debian/rules api-doc
in the Lintian source. We recommend that you use the sources from the
Lintian git repository (fewer typos and more information available).
Vendor specific data files <FEAT-DATA>
Before the last bits we added "Vendor profiles", which was a method
for derivatives (or other vendors) to customize Lintian's handling of
We have extended this feature with "Vendor specific data files", which
allows vendors to extend or override Lintian's data file for their
This has allowed us to remove special casing for Ubuntu code names
based on version numbers. If you use Lintian on Debian for Ubuntu
packages, you will now need to pass --vendor ubuntu to Lintian.
Override comments <FEAT-OVERCOM>
Since 2.5.3, Lintian attempts to associate comments in the overrides
file to the relevant override(s). These comments are then printed
next the override when --show-overrides is used. As example of how
$ lintian --show-overrides lintian_2.5.12_amd64.changes
N: That is a comment reference to the license statement in a tag
N: description (and not the license itself).
O: lintian source: license-problem-json-evil checks/cruft.desc
N: We build-depend on cdbs for the test suite
O: lintian source: unused-build-dependency-on-cdbs
N: We build-depend on quilt for the test suite
O: lintian source: quilt-build-dep-but-no-series-file
N: We don't have a patch system for lintian itself
O: lintian source: patch-system-but-no-source-readme
The actual output format is not set in stone and may be changed in the
future. Particularly, we are looking at making these comments directly
available on the lintian.d.o pages (#512901).
Please refer to the Lintian Manual [LM#2.4.2] for more information.
Loading code from $HOME/user dirs <LOAD-CODE>
Currently third-party checks are only loaded from the LINTIAN_ROOT dir
or directories included via --include-dir (see <CLI> below). To
facilitate user specific and local checks we would like to load checks
from the "user dirs" by default as well. Note that "user dirs" is
likely to include XDG_DATA_HOME and XDG_DATA_DIRS (again see <CLI>)
These directories are currently disabled because we were informed that
aptdaemon are running Lintian with higher privileges. Once aptdaemon
has been audited / upgraded to cope with the future behaviour, we will
enable the user dirs by default.
Should you be aware of other tools using Lintian that may be adversely
affected by this change, please inform us about them.
Command-line/frontend changes <CLI>
We are happy to announce partial XDG support in Lintian 2.5.12.
Lintian will now also check XDG_CONFIG_HOME and XDG_CONFIG_DIRS for
the lintianrc file.
We have once again changed the arguments accepted by Lintian. There
following new command line options are now available (added/changed in
2.5.12 unless otherwise stated):
* --default-display-level and --no-display-experimental
Useful doing a check with default display settings without having
to disable the config file.
Whether to include user dirs ($HOME, $XDG_CONFIG_* and /etc) dirs.
Ignore environment variables starting with "LINTIAN_". Together
with --no-user-dirs, this will avoid most "indirect" influence
from the user and ease running Lintian with "higher privileges"
than normal. Note that TMPDIR/PATH/etc. are still used as-is.
* --include-dir DIR
Search for checks, profiles, code etc. in DIR in addition to
existing directories. See <FEAT-CHECKS>
The following arguments/features have changed semantics:
* --root (or setting LINTIAN_ROOT)
This option will now imply --no-user-dirs
* --tags, --tags-from-file
Tags requested explicitly with these options are now always
visible. It is no longer required to use -EIL +pedantic
together with these options.
Changed in 2.5.3
Please refer to the Lintian manpage for more details of the new/changed
options and semantics.
A number of optimizations have been applied to Lintian since 2.5.7.
In particular, we hope to have reduced the resources requirements
for "larger" packages significantly. Notable changes are:
* More aggressive use of xargs to reduce the number of fork/exec
* Compression of collected some data.
- This has reduced the storage requirements for us on lintian.d.o
by ~6 GB.
- If you have been relying on ad-hoc "grep -r" or "find | grep"
queries on lintian.d.o these may no longer work. If you need
help migrating your query, feel free to get in touch with us.
* Decompress gzip files via PerlIO gzip (when available) to reduce
the number of external fork/exec calls.
- Enable by installing libperlio-gzip-perl (Available in Wheezy)
- This may vastly improve the runtime of Lintian on some non-Linux
* Reduce the constant overhead in invoking Lintian's collections.
- This overhead can be substantial for source packages that build
many "small" binary packages. Examples include freebsd-utils
9.0+ds1-7, which nearly got its runtime halved. (See #699083)
Things we still have not been able to solve:
* Lintian is still slow on packages with a lot of manpages. The root
cause is running man on each manpage, which is not optimized for
- Symptom: checks/manpages is a bottleneck.
- Workaround: Consider using "-X man" for non-final package builds.
Using Lintian 2.5.11 (or newer) will reduce the overhead a bit
- Known examples: linux-manual and allegro4-doc
* Lintian is slow on packages compressed with "slow" decompressors.
- Symptom: collection/unpacked or/and collection/index is a
- Workaround: None (except choosing a faster decompressor if
possible/available). Using Lintian 2.5.11 can mitigate this for
source packages on "low end" systems.
- Known examples: src:wesnoth-1.10
* Lintian is slow on packages (usually source packages) with a lot
of text/source files. Lintian runs file(1) on all files in the
package and sometimes it spends a lot of time classifying these
- Symptom: collection/file-info is a bottleneck.
- Workaround: none that we are aware of.
- Known examples: src:eclipse and src:eclipse-cdt
You can check if one of these apply to you(r package) by running
Lintian with "-dd" (requires 2.5.10). When using "-dd", Lintian will
give you an estimated "wall time" for each collection and check it
Help wanted <HELP>
More hands are always welcome! Lintian is a nice project to work on
when one only has an hour or two, since a lot of the requested checks
do not require very much code. Work on the test suite is also much
appreciated and doesn't require a large time investment. If you want
to help out, take a look at the wiki page at:
We are also looking for someone who would like to work on updating the
Lintian manual. There is quite a bit about Lintian that is not
currently documented. If you're interested, let us know.
If you have any ideas for new tests that would be helpful to you,
please do submit them as wishlist bugs against the lintian package.
It's nice to have a large collection of ideas known to be useful to
someone to pick from when one has a few hours to work on Lintian.
~Niels, on behalf of the Lintian maintainers.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
-----END PGP SIGNATURE-----