Lintian Fixes

The Debian Janitor regularly runs lintian-brush over all packages in the archive that 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 opt in?

Propose a change to the policy that adds an entry for the relevant maintainer or package.

Alternatively, you can send me an e-mail (jelmer@debian.org).

I don’t find this useful. How do I stop it?

If you ignore or close the first merge proposal, there won't be any more for the same maintainer.

You can also just comment on the merge proposal that you don't want any automated merge proposals.

It would be great if you can also give us an idea of what specifically you don’t appreciate about these merge proposals, and if there’s anything that can be done to improve them.

Alternatively, propose a change to the policy on Salsa.

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.debian.net/api/lintian-fixes/pkg/PACKAGE/diff

E.g. for gunicorn, the URL would be https://janitor.debian.net/api/lintian-fixes/pkg/gunicorn/diff.

This is great. How do I get it to automatically push improvements to my repository?

Simply give the bot commit access to your repository, and it will push fixes rather than proposing them.

How are repositories located?

The bot uses the Vcs-Git and Vcs-Bzr fields in source packages in unstable to locate repositories.

What repositories are supported?

Repositories on the following hosting platforms are supported:

Work is under way to also support Mercurial. Subversion support may also be an option, though I have yet to work out what the equivalent of pull requests in Subversion would be.

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:

How do I prevent the janitor from making certain changes?

You can tweak the behaviour of the janitor for a package by editing the configuration file (debian/lintian-brush.conf) in the package. For example, to prevent any changes that are incompatible with oldstable, add the following contents:

compat-release = oldstable

(the default compat-release is stable)

For a full list of supported options, see the lintian-brush.conf(5) manual page.

These configuration options can also be set on a per-maintainer basis; please send me a message if you'd like me to do that.

Won’t this mean I get a pull request for each bit of trailing whitespace?

Some lintian tags are considered to be “add-on only”. Fixes for these lintian tags are only included in a pull request if there were other fixes as well.

Tags currently considered add-on only are:

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.

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.

Would it be possible to run the Debian Janitor on the Ubuntu archive?

The Debian Janitor already supports creating merge proposals for Ubuntu packaging branches on Launchpad. However, there is currently no easy mechanism for these merge proposals to be merged and they do not yet appear on the Sponsoring Overview page.

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.