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

Announcing ...

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*

BOFH excuse #329: Server depressed, needs Prozak

Attachment: pgpg8RDqoANJE.pgp
Description: PGP signature

Reply to: