5d63c24400
warnings are shown for this, as this would produce more than 20000 new warnings for the current pkgsrc tree. You need to specify -Wplist-depr (new) to see them. Of course, -Wall will work, too. - Updated the documentation and cleaned it up. |
||
---|---|---|
.. | ||
files | ||
DESCR | ||
Makefile | ||
PLIST | ||
README | ||
TODO |
$NetBSD: README,v 1.2 2006/02/15 18:12:37 rillig Exp $ == Current problems == The current pkglint architecture will not scale much further. What is needed next are parsers for nested, non-context-free languages (make(1), sh(1), sed(1)). The parsers should be able to recognize partial structures, as well as structures containing foreign parts. This is because most of pkgsrc is heavily based on preprocessors: - The .if and .for directives in Makefiles are preprocessed by make(1) before building dependencies and shell commands out of the remaining text. - make(1) assembles shell commands from literal text and variables like ${PKGNAME}. - Shell commands often use dynamic evaluation of variables. All this makes enhancing pkglint non-trivial. If you know of any academic papers that might be of help in this case, please tell me. Additionally, the Perl programming language is not well suited to this kind of tool. It does not provide: - Sufficient static checking (especially for names of methods) - A type system (you can apply almost any operator to any kind of data) - Object orientation (needed for the future advanced parsers) - Narrow scope for constants (it's just ugly) - Enumeration data types - Structured data types The pkglint source code is much too big for a single file. == The pkglint type system == The framework for defining data types in the makevars.map file is insufficient. It does not allow ACLs that specify which variables may be read or written by the various actors in pkgsrc. At the moment, the data type and the permissions are intermixed (see type Readonly). Actors: package -> the package author system -> the pkgsrc infrastructure include -> included make files bl3 -> buildlink3 files user -> the user via mk.conf cmdline -> the user via the command line Actions: default -> provide a default value for a variable append -> append to a list write -> create or overwrite a variable readpp -> read the value of a variable during preprocessing read -> read the value of a variable during execution of the shell commands