pkgsrc-Bugs archive

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

pkg/46570: infelicities in pkglint

>Number:         46570
>Category:       pkg
>Synopsis:       infelicities in pkglint
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jun 09 20:50:00 +0000 2012
>Originator:     David A. Holland
>Release:        pkgsrc of 20120609

pkglint has a number of regrettable characteristics.

- It is written in perl and is thus difficult at best to maintain,
especially now that the original author has left the project.

- It is also 8500 lines of perl in a single file, which is a problem
in its own right.

- It does not understand USE_GAMESGROUP or its accompanying
paraphernalia, and issues a bucket of spurious warnings instead of
guiding correct usage. I looked into fixing this at one point and was
stopped by the first two issues.

- It has a system of permissions for make variable usage in various
contexts, which is fine, but when it warns about violations it reports
the permissions as single letters. The letters are not documented in
the man page. To find out what they mean, you need to UTSL (see points
1 and 2) or notice the -e option. It should use words in the
diagnostics, especially since we encourage novice packagers to use

- It will happily attempt to check gmake makefiles (which can appear
in a package's files/ directly) ... and then when it encounters gmake
syntax, which it doesn't understand, it doesn't even spew errors but

- If it encounters a file called Makefile.PL it expects it to be a
makefile (rather than a perl script) and *aborts* when it finds the
syntax confusing.

- It doesn't understand the .-include "file" syntax and *aborts* upon
encountering it in a makefile.

- Currently when run in ruby18-base it somehow imagines that it should
be looking at ruby19-base's patches and spews about six screenfuls of
completely nonsensical errors.

- It complains incorrectly about not being in -e mode if it encounters
a makefile recipe with a shell for loop, because of the semicolon in
the for loop syntax.

- It is slow. Running it on a significant portion of the tree takes
minutes (until it crashes out from one of the above issues) at 85-95%
CPU on a decently fast machine.

- There is quite a bit more wrong but the preceding is enough to start
with for now.


Run it a lot.


A good start would be rewriting it not in perl.

Home | Main Index | Thread Index | Old Index