Hi all, For the past number of months, I've been toiling away in my cave working on my Evil Project[tm]. Some of you who frequent the #debian-devel channel on OPN may have seen snippets from it and such. Basically, it's a lintian replacement. In Python. Now now, before you all start jumping up and down, one thing that was pointed out by Brendan O'Dea, is that Shaleh has been threatening to rewrite lintian in Python for quite some time. At the moment, linda (as I've coined it, with kudos to aj) performs about 90 checks, in about 1,030 lines of Python, which includes unpacking, and other stuff I've detailed below. I've found it to be much faster than lintian. Results, using a purposely broken package are below. steven@broken:~$ time linda xringd_1.20-16_i386.changes E: xringd; Control file does not have a Maintainer: field. E: xringd; Package conforms to an ancient (2.2.0) version of Policy. E: xringd; Uses debhelper, but does not Build-Depend on it. E: xringd; Select without Choices: in templates. E: xringd; Package does not depend on a recent enough version of debconf. E: xringd; The changelog.Debian file contains emacs settings. E: xringd; Package does not contain a copyright file. E: xringd; Package contains a compressed copyright file. real 0m1.746s user 0m1.010s sys 0m0.240s steven@broken:~$ time lintian xringd_1.20-16_i386.changes W: xringd source: ancient-standards-version 2.2.0 E: xringd source: no-maintainer-field E: xringd source: package-uses-debhelper-but-lacks-build-depends E: xringd: copyright-file-compressed E: xringd: select-without-choices xringd/modem-device W: xringd: multiselect-without-dependency E: xringd: no-maintainer-field E: xringd: depends-on-essential-package-without-using-version debianutils E: xringd: debian-changelog-file-contains-user-emacs-settings real 0m8.188s user 0m5.190s sys 0m0.880s As that above shows that linda is *much* faster, but lacks some of the checks of lintian. Also, as pointed out at LCA when I presented this, even when linda has the same number of checks as lintian, it should be approximately a factor of 3 faster. Linda also has a plug-in architecture that maintainers can take advantage of. You can have your package drop a check (say perl_bin2.py) into /usr/share/linda/checks, and a desc (perl_bin2.desc) into /usr/share/linda/desc, and they will automagically picked up by linda when it's next run. All exceptions are caught from the checks, so you don't have to worry about linda dying fatally from your own code. I haven't put the code up the on the net yet, it's still sitting in my private CVS repository. I may organize linda.debian.net, but that may have to wait a little while. *dons flameproof suit* -- Steve BOFH excuse #329: Server depressed, needs Prozak
Attachment:
pgpxOE2m_nqvU.pgp
Description: PGP signature