[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bits from the Lintian maintainers



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Topics:
  - 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
dependency is:

  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.

[LM#3.3] http://lintian.debian.org/manual/section-3.3.html

[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).

[LUTILS]
http://anonscm.debian.org/gitweb/?p=users/nthykier/lintian-utils.git;a=blob;f=checks/lintnil/apt-check;h=b357a886617ffe097ffbdb8dea21f5a20f660b94;hb=5ce1947e15a06b7e08301c90aa1c029efa861d3e
http://anonscm.debian.org/gitweb/?p=users/nthykier/lintian-utils.git;a=blob;f=checks/lintnil/apt-check.desc;h=decfa63916d309cc65106198324a80289b7c961b;hb=5ce1947e15a06b7e08301c90aa1c029efa861d3e

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
certain tags.

We have extended this feature with "Vendor specific data files", which
allows vendors to extend or override Lintian's data file for their
profile.

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
this looks:

$ 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.

[LM#2.4.2] http://lintian.debian.org/manual/section-2.4.html#section-2.4.2


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.

  * --[no-]user-dirs

    Whether to include user dirs ($HOME, $XDG_CONFIG_* and /etc) dirs.

  * --ignore-lintian-env

    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.

Optimizations <OPT>
===================

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
   calls.

 * 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
     systems.

 * 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
   this use-case.

   - 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
     (See #677874)
   - 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
     bottleneck.
   - 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
   text files.

   - 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
runs.


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:

    http://wiki.debian.org/Teams/Lintian

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)

iQIcBAEBCAAGBQJRcvEjAAoJEAVLu599gGRCrpYP/1cJwETtlKCiA0R+9AkDZns2
0fYdjsEBsLW8FY5leFk+2hqV1K94g5MJK1q47koIxFdqsSIQaO8Od3c5UpHiWnvY
aSIp8NgtLs98iZ92bvvggW18MfxoA1Tg7N5m3MCeglz69BaT5uwvrSLdNJbj0SKk
rntBiENE32pNyO178OJhna3tVJnpk/SFpyUSnnZEVQhcf5lhnSxpE+0GoDozZTqt
ss4BQ/v5mSxsAHy79Qrj1iRtmpdF/U4fjmxmFlaP9Wi5mbYqUYez2O2ygD3rxw44
/kvlg1+swK1soe3runNzLnfcAWPeqxqWyE5Crjoj+rMqme4W24m1JbFvgTaOSX0X
3dvLghEo4z4Dg6ZgPbg1dTCT2TaBl73cNrGAL6bdgYVF9LSCMKJVTXZpYUusMp7g
1HNQkkzRCwGySR/AgeUdloWdLUkMN83bTuvI/c/67LR8sr03iXLZlCx+XwxQJE9z
M7MSTuj5DDq4OM6J3wcXZaXBgqQGZnMBVzC0+rG41xGmPorxYRB8x8HRA6RcwKQ7
D/Xj1XZCoKTy8jdyfLHLPmRQvw1/K40bB2wWgyUSU7mGlssvmcNXEmlV0MRK5pXd
XDnyGLKhTuhAde8OyXIcNPNWLC/+7E6xgytN2Z5AgnRwceCMQupszSGkzEyP8vOX
v3HLExMkr5AivhCy2ie8
=WW2D
-----END PGP SIGNATURE-----


Reply to: