Cross package checks in Lintian

If you have been using Lintian you may also know that it has some limitations.  One of these are that Lintian always checks every package isolated from each other unlike other tools like piuparts.  It has its advantages (such as not requiring all dependencies being present) but it also has it disadvantages.

Currently Lintian emits a “binary-without-manpage”-tag if the package contains a binary without a manpage.  At first glance this appears reasonable, but it really is too simple (#512645).

Basically Lintian complains about the missing manpage even if the manpage will always be present.  A simple case is package foo depends on foo-data, the binary is in foo and the manpage is in foo-data.  A live example of this is gedit and gedit-common[1].

The problem is that Lintian does not know if a given package is going to processed or not.  Lintian does have a few cross package checks; namely binary checks can see the source package if it is available.  This can be done with a bit of clever sorting (quote from Lintian source code):

# [...] (the sort is to make sure that source packages are
# before the corresponding binary packages--this has the advantage that binary
# can use information from the source packages if these are unpacked)

This works rather well, but its scope is very limited.  Particularly it is no help, if we need to check if the manpage missing in foo might be in foo-data.  This is what #513663 is all about.

In January I branched the Lintian code and started working on grouping packages from the same source together.  Yesterday I finished refactoring Lintian to do just that.

However, this in itself is not very useful if the checks cannot take advantage of this.  So today I sat down and extended our manpages check a bit and posted the results to the Lintian mailing list.


This entry was posted in Debian, Lintian. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s