Lintian Fixes

The Kali Janitor regularly runs lintian-brush over all packages in the archive that are maintained in Git.

The resulting changes can be accessed on this site, or the Janitor can automatically propose them as merge requests on supported hosting sites (Salsa, GitHub, GitLab, Launchpad).

For a current list of open requests, see merge-proposals. For a list of generated changes that ready to be proposed or pushed, see ready (or grouped by lintian tag). For a list of packages that are candidates for fixes, see candidates.

At the moment, the Janitor's merge proposal are still triggered by a human (after manual review).

FAQ

How do I download the diff for a package?

There is a well-formed URL that can be used to download the diff for a specific package, if a diff has been generated:

https://janitor.kali.org/api/lintian-fixes/pkg/PACKAGE/diff

What kind of changes are made?

The janitor currently proposes changes that can be made by the lintian-brush tool. This includes fixes for the following issues flagged by lintian:

The bot is proposing an incorrect change. Where do I report this?

For issues with a fix that the bot has proposed, please just follow up on the merge proposal.

The bot is doing something else wrong. Where do I report this?

Please report issues in the Kali Janitor project on GitLab.

What do I do with out-of-date merge proposals?

The Janitor will automatically reschedule processing of packages with a conflicted merge proposal. Once a conflict appears, it may take a couple of hours before the merge proposal is updated.

It will also regularly rebase merge proposals on the packaging branch. It can take several days before this happens, since there is no mechanism to notify the janitor of new commits. You can manually trigger a rerun from the package-specific page linked from the merge proposal.

How do I run the fixers locally?

To run the collection of fixer scripts on a locally checked out package, simply run lintian-brush:

$ apt install lintian-brush
$ lintian-brush

This will report the fixers that were run and automatically commit the changes to the local repository.

How can I contribute more fixer scripts?

You can contribute scripts to the lintian-brush repository at https://salsa.debian.org/jelmer/lintian-brush. See the lintian-brush README file for details.

Consider also adding relevant lintian tags to lintian upstream. This allows silver-platter’s infrastructure to recognize which repositories it needs to process.

How can I automate interactions with the Janitor?

There is an JSON API that can be used to retrieve information about packages, to reschedule runs and trigger creation of merge proposals.

What technologies are used?

Lintian is responsible for finding the issues in packages.

UDD is used to find package VCS URLs and to retrieve the lintian results.

Breezy provides abstractions over the version control system (Git, Bazaar, Mercurial, Subversion) and the supported hosting platforms (GitHub, GitLab, Launchpad).

Lintian-brush is responsible for actually making changes to the packages.

Silver-Platter ties this all together; it trawls UDD to find packages that are affected by lintian tags that lintian-brush knows how to fix, clones the packaging branches, invokes lintian-brush and pushes back or creates merge proposals.