pkgtools/pkglint: update to 5.7.23
Changes since 5.7.22:
* Added a warning for lines that look empty but are actually follow-up
lines from a previous line.
* Added notes for unusual placement of the continuation backslash. It
should always be preceded by a single space or tab, or be in column
73.
* Improved check for needlessly complicated !empty(PKGPATH:Mcat/pkg)
that is transformed into the simpler ${PKGPATH} == cat/pkg, even if
the package name contains hyphens, dots, plus or slashes.
* Added check for the _VARGROUPS section since that section contains
many redundancies that can easily be checked. For example, in
mk/compiler/gcc.mk the _VARGROUPS section is 67 lines long and
contains far more than 100 variables. It's tedious to manually check
this file for internal consistency. That's better left to pkglint.
* The empty variable is no longer flagged as "used but not defined".
It appears in expressions like ${:Ustring}.
* When --source is combined with --explain, don't unnecessarily
repeat the source code for a single line if there are several
diagnostics. Instead, even omit the empty line between the diagnostics
for the same line.

pkgtools/pkglint: update to 5.7.22
Changes since 5.7.21:
* The files from wip/mk do not belong to the main pkgsrc infrastructure.
Therefore, when loading the package Makefile to look for defined but
unused variables, parsing doesn't stop in these files.

pkgtools/pkglint: update to 5.7.17
Changes since 5.7.16:
* The warnings for doc/CHANGES are only enabled when the -Cglobal option
is given. This is to avoid warnings that are unrelated to the package
that is being checked.

pkgtools/pkglint: update to 5.7.16
Changes since 5.7.15:
* Completely rewrote the code for aligning multiple variable assignment
lines. It works on the actual lines of the file now instead of the
parsed lines. This provides more exact diagnostics and also makes the
handling of these lines easier so that future requirements can be
implemented more easily.
* Added support for exotic conditions in .if clauses. These conditions
are not seen in the wild though.
* Fixed wrong diagnostics for ALTERNATIVES files that appear
conditionally in the PLIST.
* As always: lots of refactorings and newly added tests.

pkgtools/pkglint: update to 5.7.15
Changes since 5.7.14:
* Added a check for packages that have been removed from the file system
but not been recorded in doc/CHANGES. This will help produce more
accurate release statistics.
* Small refactorings, as usual.

pkgtools/pkglint: update to 5.7.14
Changes since 5.7.13:
- Removed the -Cextra command line option since it didn't produce useful
warnings.
- Removed unwarranted warnings about _WRAP_EXTRA_ARGS.CC being used in
packages.
- Cleaned up the canonical order of variables in package Makefiles.
- Added a few commands to those that cannot fail, to reduce the number of
"at the left of the | operator" in shell programs.
- Fixed warnings about "-ggdb" being an unknown shell command.
- Reduced number of warnings about lists being used where a single value
is expected.
- Replaced unreliable check for invalid CFLAGS and LDFLAGS with a more
practical check.
- Renamed "RCS tag" to "CVS tag" to make the diagnostics more modern.
- Added warning when PKGNAME or PKGVERSION is used in MASTER_SITES.
- Reworded warning for missing or superfluous PLIST files.
- Lots of other detail changes, refactorings and automatic tests.

pkgtools/pkglint: updated to 5.7.13
Changes since 5.7.12:
* Fixed a warning in the variable permissions that previously said "this
variable should not be used at load time in this file, it would be ok
in .", with an empty list of alternative files.
* Lots of refactoring and new tests.

pkgtools/pkglint: update to 5.7.9
Changes since 5.7.8:
* Buildlink3.mk files are checked for typos in the identifier that is
used for BUILDLINK_TREE, to detect copy-and-paste mistakes.
* Having a rationale is recommended for some variables, especially those
that make a package fail to build or crash at runtime. This check is
only active when -Wextra is given, since it is still actively debated
whether such a check is actually useful.
* Files called Makefile.php can easily be mistaken to be PHP files.
Therefore the recommended naming convention is to have auxiliary files
called *.mk. There are already many more files called *.mk than those
being called Makefile.*.
* The check for unquoted sed substitution commands has been made more
detailed, but since it is completely disabled, there's nothing to see
for now.
* The definitions for MASTER_SITE_* are loaded directly from the pkgsrc
infrastructure instead of hard-coding them in pkglint.

pkgtools/pkglint: update to 5.7.8
Changes since 5.7.7:
Warn about definitions of NOT_FOR_* and ONLY_FOR_* which are missing a
rationale. When maintaining such packages it helps a lot to know why the
package cannot be built on a particular platform or with a particular
compiler or Python version.

pkgtools/pkglint: update to 5.7.7
Changes since 5.7.6:
Warn about packages that override user-settable variables. Packages that
define variables with the same value as the default value only get a
note instead of the warning since these definitions do not cause any
confusion.
Do not suppress technical error messages in autofix mode.
Do not warn about the package version being greater than the latest from
doc/CHANGES if the file defining the package version has been modified
locally and is about to be committed.

pkgtools/pkglint: update to 5.7.6
Changes since 5.7.5:
* The explanation for distfile hashes is only given when the distfiles
actually need to be downloaded. If they are already there, no
explanation is necessary.
* Makefile lines that are commented and have line continuations are
properly parsed. This affects the autofix for variable value
realignment.
* Variable permissions are not checked in hacks.mk since pkgsrc
developers who know about hacks.mk probably know what they are doing.
From hacks.mk files, builtin.mk files may be included directly, for
the same reason.
* Expressions of the form !empty(PKGPATH:Mpattern), when PKGPATH is not
a list variable and pattern has no wildcards, can be written in a
simpler form, and pkglint autofixes this. For example the above
expression is transformed into ${PKGPATH} == pattern. This
transformation reduces the amount of double negations (!empty) in the
code.
* Duplicate warnings about invalid relative ../package have been merged.
* TOOLS_ALIASES are properly resolved. The line USE_TOOLS=ggrep makes
the tools grep, egrep and fgrep known to pkglint, in the same way as
in the pkgsrc infrastructure.
* The diagnostics for missing or unnecessary distinfo files have been
improved to provide some guidance.
* Packages that use MESSAGE_SRC to build the message from multiple files
no longer produce a warning for malformed message files. These files
are simply skipped.

pkgtools/pkglint: update to 5.7.5
Changes since 5.7.4:
* Warn about invalid variable uses in directives like
.if and .for
* Do not warn when a package-settable variable is assigned using the ?=
operator before including bsd.prefs.mk. This warning only makes sense
for user-settable and system-provided variables.
* The parser for variable uses like ${VAR:@v@${v:Q}} is more robust now,
which reduces the number of parse errors and leads to more appropriate
diagnostics, in cases like ${URL:Mftp://*}, which should really be
${URL:Mftp\://*}.
* The valid values for OPSYS are now determined by the files in
mk/platform instead of allowing arbitrary identifiers. This catches a
few instances where "Solaris" is used instead of the correct "SunOS".
* Setting USE_LANGUAGES only has an effect if mk/compiler.mk has not yet
been included. In all other cases, pkglint warns now.
* Missing entries in doc/CHANGES produce a note now. This will lead to
more accurate statistics for the release notes.

pkgtools/pkglint: update to 5.7.4
Changes since 5.7.3:
* Warn about dependency patterns that are missing a version number,
such as ${PYPKGPREFIX}-sqlite3:../../databases/py-sqlite3.
* Suggest to replace the := assignment operator with the :sh modifier,
in some cases where the variable is not obviously used at load time.

pkgtools/pkglint: update to 5.7.3
Changes since 5.7.2:
PLIST files are checked for non-ASCII characters. Even though pkgsrc
sets up the environment with LC_ALL=C, there are still some cases
of encoding errors. The case discussed on the tech-pkg mailing list
was lang/go112.
The checks for variable permissions ("may not be set in this file")
have been reworked completely. Many of the variable permissions had
different rules for Makefile and Makefile.common. These different
rules tried to prevent accidental overwriting of variables. Starting
in July 2018, pkglint got a check for redundant variables that is
far more accurate than the previous variable permissions. Therefore
these fine-grained permissions are no longer necessary. This removes
a few hundred wrong warnings about insufficient permissions.
The check that adds missing SHA512 hashes to distinfo files has been
fixed to work correctly in DIST_SUBDIR cases.
Improved the checks regarding tools that are used by a package but
not added to USE_TOOLS. For example, the "make" tool is always
available, as are all tools that are added to TOOLS_CREATE.
Lots of small improvements, as always.

pkgtools/pkglint: update to 5.7.2
Changes since 5.7.1:
* Fixed detection of GNU_CONFIGURE=yes combined with USE_LANGUAGES
missing c. This combination tends to fail in the configure phase.
* When the distinfo doesn't contain all hashes for the downloaded
distfiles (typically SHA512 is missing) and the distfiles are actually
downloaded to ${PKGSRCDIR}/distfiles, pkglint can now add the missing
hashes. It only does this if there is at least one existing hash
and if all existing hashes are correct.
* The check for redundant variables has been improved considerably.
Before there were several situations in which pkglint didn't get the
redundant variable definitions right because its internal model only
mimicked reality. The model has been improved and so have the
diagnostics.
* Pkglint only warns about wrong permissions (for defining or using
a variable) when it knows the type of the variable and the permissions
for the current file. Before, it had also warned if the permissions
for the current file were not explicitly defined.
* CFLAGS and LDFLAGS may be appended in buildlink3.mk files. This
had been disallowed before, for no apparent reason. There are several
places in pkgsrc where especially CFLAGS.${OPSYS} is appended to.
* Cleaned up internal handling of relative paths. Previously pkglint
sometimes resolved relative paths using the wrong base directory,
which led to all kinds of wrong warnings and strange behavior.
* Fixed lots of edge cases when parsing Makefile lines. These cases
don't occur often but experience tells that the most fundamental code
must be as correct as possible (see the handling of relative paths
above).
* Lots of refactoring and housekeeping, as always.

pkgtools/pkglint: update to 5.7.0
Changes since 5.6.12:
* Many of the -C and -W command line options have been removed since
they are not used in practice. The -Wall and -Call options continue
to work though; these are the only options mentioned in the pkgsrc
guide.
* When a PLIST file contains redundant libtool libraries (.la and the
corresponding .so), there is only a single warning per file.
* Warnings about the package COMMENT are now strictly ordered from left
to right.
* The hashes for all distfiles must now contain the SHA512 hash. This
hash has been added to many distfiles in 2015. It's time now to
enforce it on all other distfiles as well.
* Makefile fragments that are included inside an .elif exists(...)
are not reported as missing.
* The check for redundant variables and accidentally overwritten
variables has been improved. Now the warning occurs at the later
definition. This especially applies to cases where a file is included
and after that, some of its variables are overridden. Variables in
unrelated files are no longer marked as redundant.
* When a package contains multiple definitions of a single variable
(typical for Makefile.common), the later definition overrides the
earlier definition. That way, the location of DISTINFO_FILE and
PATCHDIR is resolved correctly.

pkgtools/pkglint: update to 5.6.12
Changes since 5.6.11:
* In buildlink3.mk files, print the paths relative
to the line, not to the pkgsrc root.
* When explaining that a variable cannot be set/used because of wrong
permissions, list the permissions. This provides more transparency
than just stating that the desired action is not allowed.
* When pkglint checks a pkgsrc-wip package, don't warn about malformed
lines in doc/CHANGES-* since pkgsrc-wip users typically cannot do
anything about these errors.
* In profiling mode, not only the code coverage and the performance
statistics are dumped, the whole heap is also dumped to see which
parts of pkglint consume the most heap memory. Pkglint now needs
less heap memory than before, which mainly affects full scans.
* The checks for absolute pathnames have gone. They were of questionable
value since pkglint has failed to give proper advice on how to fix
them properly, at least for the last 12 years.
* The check that pkgsrc-wip packages should only use exact CVS Ids
(the unexpanded variant) has been disabled again. It occurred about
16000 times but even fixing it wouldn't improve anything since it
was mostly a formatting issue without any practical consequences.
* Warn about trailing variable modifiers like in ${VAR:S,from,to,extra}.
* Properly parse ${VAR:!command!}.
* Suggest to replace SUBST_SED with SUBST_VARS where possible, even
with complicated shell quoting. Pkglint can autofix most of these
overly verbose cases.
* Load builtin.mk whenever the corresponding buildlink3.mk file is
included. This fixes several warnings about undefined variables
(especially for packages using OpenSSL).
* Parse .for lines like bmake does since 2015, splitting words like
in brk_string.
* Optionally show a warning even if it cannot be autofixed by pkglint.
This is useful for the SUBST_VARS replacement since even when
pkglint cannot automatically replace the code, there are still cases
where it can warn at least.
* As always, several refactorings.

pkgtools/pkglint: update to 5.6.11
Changes since 5.6.10:
* Improved the wording of several warnings
* Fixed parsing of complicated dependency patterns such as
{ssh{,6}-[0-9]*,openssh-[0-9]*}. Pkglint still doesn't understand
them but at least it doesn't mark them as "unknown" anymore.
* Lots of refactoring, as usual. This is the last part of the big
refactoring, therefore future changes to pkglint are expected to be
smaller than in the previous 3 months.

pkgtools/pkglint: update to 5.6.9
Changes since 5.6.8:
* In addition to the pkglint binary, the whole pkglint code is installed as
a library, so that other packages can use the code for doing their own
checks on pkgsrc packages, Makefiles, shell programs, or the other file
types from pkgsrc.
* BUILDLINK_*.* may be used in all files.
* Lots of refactorings

pkgtools/pkglint: update to 5.6.8
Changes since 5.6.7:
In pkgsrc-wip, if the first line of a file contains an expanded CVS Id,
it is not an error but only a note that it should be an unexpanded CVS
Id. The autofix for this no longer inserts a new line but replaces the
existing line.
Several refactorings and small improvements to the existing diagnostics.

pkgtools/pkglint: update to 5.6.7
Changes since 5.6.6:
User-defined variables that are not yet added to BUILD_DEFS are only
reported once per file.
Unnecessary space after variable names is only worth a note instead of
a warning. Example:
MASTER_SITES = https://cdn.example.org/
All variable names that are defined in the pkgsrc infrastructure are
assumed to be available to the package Makefiles. This reduces the
number of wrong "used but not defined" warnings, at the expense of
Variable names that are used in other variable names are checked
whether they are defined somewhere. Example:
CFLAGS+= ${CFLAGS.${PARAM}} # PARAM is now checked
In SUBST_SED, when the pattern is s,@VAR@,${VAR}, or a slight variant
thereof, pkglint suggests to define SUBST_VARS instead, which frees the
package author from thinking about how to escape special characters and
is generally easier to read. Example:
SUBST_SED.class= s,@VAR@,${VAR:Q},
SUBST_VARS.class= VAR
Directives like .if !defined(...) are now handled the same whether or
not there is a space after before the (...).
The check for locally modified files now works independently of the
timezone.
As always, lots of refactorings have happened under the hood. Many small
bugs have been discovered and fixed accordingly.

pkgtools/pkglint: don't access the internet during the build
Pkglint needs goyacc, which is provided by devel/go-tools. But that
packages pulls in a lot of dependencies that are not needed for pkglint.
This includes a Perl interpreter and various cryptography packages.
Instead, during build, pkglint installs the only needed tool of that
collection (goyacc).
Since go-package.mk assumes that each pkgsrc package only downloads and
installs a single project, but pkglint now needs two of them (goyacc and
pkglint), most parts of go-package.mk had to be copied here and
implemented directly.

pkgtools/pkglint: update to 5.6.6
Changes since 5.6.5:
- Removed plist-clash since it had crashed unconditionally whenever it
was called. This means that in the last 3 years, nobody can have
used it in the originally intended way.
- Fixed interactions between the --source, --explain, --show-autofix,
--autofix and --only options.
- Fixed "defined but not used" and "used but not defined" for variables
from the pkgsrc infrastructure.
- Lots of small fixes and improvements found by the large pkglint code
review (12% done).

pkgtools/pkglint: update to 5.6.5
Changes since 5.6.4:
* GCC_REQD should only contain the major version. For GCC versions up to
4.x, this consists of the first two numbers, such as 4.8, while starting
with the 5.x series, the major version is only the first number, such as
7.

pkgtools/pkglint: update to 5.6.4
Changes since 5.6.3:
* Allow += for COMMENT
* Sync variable type definitions with reality
* Fix check for "used but not defined" variables. This check had been
broken since pkgtools/pkglint/files/pkglint.pl r1.776 from 2008-10-18
(3cd071958e63), which missed its 10-year anniversary by just 9 days.
After fixing this check, pkglint produces about 800 new warnings
spread all over pkgsrc, most of which are real typos.
* Detect used variables also in .if and .elif conditions. This is
closely related to the above fix and reduces the number of "defined
but not used" variables, while at the same time producing new warnings
because these variables are used at load time, where some of these
variables are not yet defined.
* Detect variables for which pkglint doesn't know the exact data type
by scanning all files under mk/ at startup. Currently there are about
470 of these variables. No "used but not defined" warnings are issued
for these variables anymore.
* To speed up pkglint when checking the whole pkgsrc tree at once, the
most often needed files are cached to reduce IO load. The checks for
USE_TOOLS are optimized now since they were a major bottleneck.
Together with other performance improvements this makes pkglint about
50% faster when checking the whole pkgsrc tree including pkgsrc-wip.

pkgtools/pkglint: Update to 5.6.3
Changes since 5.6.2:
* Add check for version patterns 1.5*, which should rather be 1.5.*
* Re-enable check for "set -e" and commands that may silently fail
because of missing error checking
* Lots of internal clean-up and tests

pkgtools/pkglint: update to 5.6.2
Changes since 5.6.1:
* Improved checks that depend on whether bsd.prefs.mk is included or
not.
* Improved checks for tools, whether they may be used at load time
or at run time.
* Improved tokenizer for shell commands. $| is not a variable but a
dollar followed by a pipe.
* Warnings about SUBST context are now shown by default.
* A warning is shown when a SUBST block is declared for *-configure
but the package has defined USE_CONFIGURE=no.
* Don't warn about USE_TOOLS:= ${USE_TOOLS:Ntool}.
* Don't warn about using the ?= operator in buildlink3.mk files before
including bsd.prefs.mk (for some more variables, but not all).
* Report an error for packages from main pkgsrc that have a TODO or
README file. Packages should be simple enough that they don't need
a README file and ready for production so that they don't need a TODO.
* Lots of small bug fixes and new tests.

pkgtools/pkglint: update to 5.6.1
Changes since 5.6.0:
* Fix output of relative paths in the diagnostics (thanks @wiz)
* Fix parsing of ${VAR:ts---}; it is now a syntax error
* Load more type definitions from mk/* instead of hard-coding them
* Lots of refactoring to improve test coverage, fixing several
small bugs as they were found

Update pkglint to 5.5.9
Changes since 5.5.8:
* Improved support for the "strip" tool, which has a special definition
and is not directly connected to the STRIP variable.
* Miscellaneous code cleanup and new tests.

pkgtools/pkglint: remove duplicate files
The definitions from globaldata.go had been moved to pkgsrc.go. Having
these definitions twice led to compile errors.
While here, the file package_test.go doesn't need to be patched anymore
since it gets its @VERSION@ from the constants defined in pkglint.go.

Update pkglint to 5.5.7
Changes since 5.5.6:
* When pkglint warns about files that are accidentally executable, it
offers to fix the file permissions.
* Warn about ${HOMEPAGE:=repository/}, since the := modifier should
only be used with MASTER_SITES.
* When the distinfo file is missing, suggest setting NO_CHECKSUM.
* Several refactorings.

pkgtools/pkglint: update to 5.5.6
Changes since 5.5.5:
* Only offer explanations if an explainable diagnostic has actually
been logged.
* Clean up code.
* Improve a few diagnostics.
* In any Makefile, treat documented variables as used. This prevents
warning about defined but unused variables.
* Add support for some variables not previously known to pkglint.

pkgtools/pkglint: update to 5.5.5
Changes since 5.5.3:
- Removed check for PERL5_PACKLIST, since it was not fixable by the
package author.
- Completely rewrote the check for ordering variables in simple
package Makefiles. Now it reports the variables in the correct order
instead of just saying "this above that" for a few variables.
- Lots of code cleanup and documentation.

pkgtools/pkglint: update to 5.5.3
Changes since 5.5.2:
* Fixed lots of bugs regarding autofixing variable assignments in
continuation lines.
* Fixed checking of MESSAGE files, which also get fixed now.
* In variable assignments, commented assignments are aligned too.
* Fixed a crash when checking an empty patch file.
* The :Q modifier is only checked on predefined variables, to prevent
the --autofix mode from removing :Q from user-defined variables.
* Fixed lots of bugs in PLIST autofixing: relevant lines had been
removed, and the sorting was not correct.

pkglint: Update to 5.5.1
Changes since 5.5:
* Allow filtering log messages by keyword (--only)
* In --autofix and --show-autofix mode, show only fixable diagnostics
* When called with --source, show the source below the diagnostics
* Don't warn about USE_LANGUAGES in ../../mk/compiler.mk
* Fix autofix for .gz in PLIST

pkglint: Update to 5.5
Changes since 5.4.26:
SUBST blocks are now checked correctly even if they contain conditionals
like .if ... .elif ... .endif.
AUTO_MKDIRS is only suggested for those directories that actually appear
in the PLIST since other directories are not affected by this variable.

Updated pkglint to 5.4.26.
Changes since 5.4.25:
* When autofixing a patch, fix the corresponding distinfo file as well.
* Properly parse ${VARNAME:[\#]};
the # was interpreted as a comment before.
* Don't add unnecessary :Q to PKG_OPTIONS and related variables.
* Don't warn about missing manual pages. While Debian and other
distributions do this work, pkgsrc keeps the packages as original as
possible.
* Autofix redundant ".gz" for manual pages in PLISTs.

Updated pkglint to 5.4.23.
Changes since 5.4.22:
Only autofix PLIST sorting in simple cases. Before this version, pkglint
sorted the PLIST even when it contained unresolved variable references like
${IMAKE_MAN_DIR}, which resulted in strange and unintuitive orders. These
complicated files are left for human inspection.

Updated pkglint to 5.4.22.
Changes since 5.4.21:
* Refactoring: moved packages line and linechecks back into main
* Fixed panic when autofixing package Makefiles
* Removed apache22
* Added a bit of inline documentation

Sprinkle CHECK_RELRO_SKIP on go packages.
go14 has no relro support AFAICT.
go-1.8.3 has if you use -buildmode=pie, but it claims it's not supported
on Linux.
Disable relro checking for go packages until bsiegert has time to
look at this.

Updated pkglint to 5.4.19.
Changes since 5.4.18:
* Added generated Go yacc source files to CVS, since starting with Go 1.8
the yacc tool is no longer part of the core distribution. The dependency
on yacc would pull in all the Go tools, which are quite a few, and some
of these do not currently build since they depend on go-crypto. See
https://mail-index.netbsd.org/tech-pkg/2017/03/17/msg017900.html

Cleaned up and refactored code.
The getopt and pkgver code have been extracted to separate packages to make
them reusable.
Several other functions have been moved to make the structure easier to
understand:
* dir.go and main.go have been moved to pkglint.go
* utility functions from pkglint.go have been moved to mkline.go
Now pkglint.go contains only high-level code.

Updated pkglint to 5.4.12.
Changes since 5.4.11:
* warn when PKGSRC_COMPILER is compared with "==", since it may be a chain
of compilers
* warn about listing Python .egg-info files directly in PLIST files, since
lang/python/egg.mk takes care of this
* code cleanup: unify Error{0,1,2,3} into Errorf to make understanding the
code easier; use interface{} for MkLine data; use regular expression
instead of handwritten matching code, since one line is easier to read
than 50

Updated pkglint to 5.4.11.
Changes since 5.4.10:
* Replaced regular expression with hand-written matching code, since
it is 30 times as fast.
* Reduced number of syscalls by remembering os.Lstat results and
CVS/Entries.
* Reduced number of syscalls by querying the current user only once.
* Added warning for comparing ${PKGSRC_COMPILER} == "clang", which
should rather be ${PKGSRC_COMPILER:Mclang}.
* Added variable definitions for NOT_PAX_ASLR_SAFE and NOT_PAX_MPROTECT_SAFE.

Updated pkglint to 5.4.10.
Changes since 5.4.9:
* Check for mismatch between conditional and unconditional includes
of other files (mostly depending on PKG_OPTIONS or OPSYS)
* Check that PLIST files contain "man" instead of "${PKGMANDIR}"

pkglint has hardcoded php55 referenced a couple times.
That package was removedi and caused pkglint errors like:
ERROR: ../../lang/php/ext.mk:25: Cannot read
"./../../lang/php55/Makefile.common".
So update to later php56.
I don't understand why the ChecklinesDistinfo function in distinfo.go
has an exception for the php patches directory but changed there too.
I received an okay on packages@ list.
Note that the make check for the pkglint package failed for me
but the pkglint worked for me in my tests of some php using packages.
Increase version of pkglint.

Updated pkglint to 5.4.9.
Changes since 5.4.8:
* Disallow lib/charset.alias in PLIST. This file may only be installed
by converters/libiconv. (That package is currently broken, since
it only touches that file when installing from source, not from a
binary package. But pkglint is prepared for it to be fixed.)

Updated pkglint to 5.4.5.
Changes since 5.4.4:
* Removed autofix for variables in BUILDLINK_TREE, since that change
affects multiple variables in the file and therefore cannot be done
automatically
* Fixed PLIST sorting to not lose lines

Updated pkglint to 5.4.3.
Changes since 5.4.2:
* Variables like ${VAR_${OTHER_VAR}} are no longer checked for
use/define mismatch
* The check for plural variable names has been removed
* The type of variables called *DESTDIR is no longer guessed to be a
directory name
* The check for unknown shell commands is disabled in Makefile
sections that depend on OPSYS
* The experimental hand-written shell parser has been replaced with
a Yacc-generated one
* Meta packages don't need a LICENSE
* When PKGNAME is defined in terms of ${DISTNAME:S/from/to/:tl}, more
modifiers (like :tl) are handled properly
* When the MAINTAINER or OWNER of a package is not the current user,
a warning is printed for modified files
* The check for share/applications/*.desktop has been disabled, since
pkglint would need to inspect the file's actual contents to see
whether desktopdb.mk must be included or not
* SUBST_CLASSES may also be SUBST_CLASSES.NetBSD
* Loosened the usage restrictions for several variables, e.g. many
variables that may be appended in a Makefile may also be set
unconditionally
* PKG_OPTIONS_VAR must be of the form PKG_OPTIONS.*

Updated pkglint to 5.4.1.
Changes since 5.4.0:
* PKG_SKIP_REASON is no longer marked as deprecated, since it still
has its value
* When PKG_SKIP_REASON is defined depending on OPSYS, suggest to
use NOT_FOR_PLATFORM instead.
* Check for ROOT_USER/ROOT_GROUP being used in special file
permissions; using REAL_ROOT_USER/REAL_ROOT_GROUP is better.

Updated pkglint to 5.4.0.
Changes since 5.3.7:
* Replaced the -D... debug options with a single -d
* Omitted duplicate diagnostics
* Marked the :Q operator unnecessary for some variables
* Improved detection of whether bsd.prefs.mk has been included,
which fixed unwarranted warnings about load time evaluation of
some variables like ${ECHO} and ${SED}
* Improved detection for $(VAR) with round parentheses
* Fixed allowed locations for several variables
* Improved detection for used variables (still not perfect)
* Added warning that MASTER_SITES should not be used in HOMEPAGE
* Fixed warning about manual patches not being in distinfo
* Added a check for missing MASTER_SITE_* variables
* Added a check for unfinished url2pkg work
* Fixed several wrong warnings

Updated pkglint to 5.3.3
Changes since 5.3.2:
* The -e, -fs, -F options are advertised even when no warnings and errors
occurred. In such a case, there were only notes, and some of these can
also be autofixed.
* Special handling for autoconf{,213} tools, since mentioning these in
USE_TOOLS makes available more than just one tool command.
* Downgrades from 1.0nb17 to 1.0 are no longer flagged as warnings.
* Files in /wip/mk/ are scanned like all other files, to prevent warnings
about undefined or unused variables.

Updated pkglint to 5.3.2
Changes since 5.3.1:
Alignment of variable values is no longer checked by single line, but by
the complete block (e.g. SUBST_*). Pkglint now checks that all variables
belonging to a block are indented consistently, so that their values are
aligned nicely.
Since pkglint does not report warnings, but only notes, and since it can
fix them automatically, the burden on the package developers will be very
low. Especially, since these notes are only printed when pkglint is called
with the -Wspace or -Wall options.
Also, pkglint supports running its unit tests now.

Updated pkglint to 5.3
Changes since 5.2.2.2:
* Makefile variables
The warnings about missing permissions sound more natural than before
and give a hint for alternative operators (e.g. set-default instead
of append), or an alternative file where setting this variable is
allowed instead (e.g. PKGREVISION may not be set in Makefile.common,
but in Makefile it is ok).
Warnings about "unknown" allowed permissions are not shown anymore,
since they didn't provide any benefit. To see them again, pkglint must
be run with the -Dunchecked option.
User-defined variables may be used by builtin.mk. They may also be
used during load time, not only during run time, under the assumption
that in most cases the bsd.prefs.mk has already been loaded.
Some individual variables may be defined or used in places where this
was not allowed before. CHECK_BUILTIN.*, BUILDLINK_TARGETS,
TOOLS_DEPENDS.*, BUILDLINK_DEPMETHOD.*, SUBST_CLASSES.
A new parser for Makefile expressions detects and reports more
mistakes than bmake itself. Currently it is only used to check the
basic syntax; more applications are possible.
* PLIST
In PLIST files, conditionals of the form ${PLIST.*} are recognized and
are not part of the pathname. This allows pkglint to better check for
missing manual pages and correctly sorted PLIST files.
In --autofix mode, pkglint can sort PLIST files, which makes these
rather annoying warnings easy to fix.
No more warnings for man pages whose filename doesn't match exactly
the section, e.g. man/man3/exit.3c.
* Patches
The code for checking patch files has been completely rewritten, so
that it is easier understandable and well-structured. As an additional
benefit, it also became faster. Support for context diffs has been
dropped to a minimum, since they are not popular anymore.
Pkglint no longer warns about missing trailing whitespace in a line,
since all patch programs can handle these lines. It also doesn't
request empty lines between multiple diffs in a single file, since
that is simply not necessary.
Pkglint is picky when a patch file continues after the diff with some
text that still looks like a diff, since that means the patch doesn't
do what it looks like on first sight
(example: audio/faad2/patches/patch-au).
* Distinfo
When a patch file listed in distinfo cannot be found in the
filesystem, this is reported clearly instead of complaining about
missing SHA512 hashes (example: audio/libopus).
The inter-package distinfo check that verifies whether a distfile has
different hashes has been enabled. It had been disabled before, but
unintentionally so.
* Misc
- The check for COMMENT has been updated to reflect the changed
default value from url2pkg.
- BUILDLINK_API_DEPENDS.* may be set in buildlink3.mk, even if the
package is not the current one. (The other variables may be only set
for the current package.)
- In shell commands, the escape sequence \. (and similar ones, which
are often seen in sed(1) commands) no longer produces a warning,
since the different shells handle these escape sequences
consistently. (It is the echo(1) implementations that actually
differ, therefore this warning was superfluous.)
- Compiler flags in backticks (typically `pkg-config --cflags`) are
properly recognized.
- Internal pkglint errors when parsing shell commands have been fixed.
- No more warnings about PKGCONFIG_FILE.* being defined but unused.
- Dependencies of the form pkgbase>=1.0<5.0 are recognized.
- Diagnostics use quotes more often to indicate the placeholders.
- The type of GENERATE_PLIST has been changed from List of ShellWord
to ShellCommands, since that is what the variable is really about.
- The type ShellCommand used to mean "a shell command line in a
Makefile", which was confusing. Now it means what the name says,
which reduces the wrong warnings for variables like CC (example:
x11/kdebase3/options.mk).
- Improved buildlink3.mk checks to generate more helpful diagnostics.
- Fixed the parsing of dependency patterns, so that all but the most
exotic ones are properly recognized.
- Fixed the parsing of shell variables of the form ${var%.c}.
- Updated the check for the default COMMENT from url2pkg.
- Many more small improvements.
- Performance has improved again, though only a little bit.
- Unit test coverage has increased from 64.2 % to 78.9 %.
This fixes most of the points mentioned in PR pkg/46570.

Updated pkglint to 5.0
Notable changes include:
* The whole code has been rewritten in Go
* It is much faster, especially in recursive mode
* The code has unit tests, providing examples of use
* Some new explanations for existing warnings
* Some adjustments to previous warnings

Removed the comment about updating the version from the Makefile
I had used the pkglint_current tag in the past to summarize the changes
whenever I bumped the version number. In the last 7 years, this hasn't
been done, so there seems to be no need for it.

Fixed a wrong warning for the HOMEPAGE variable
WARN: Makefile:9: Please use ${MASTER_SITE_GITHUB:=glmark2/glmark2}
instead of "https://github.com/glmark2/glmark2".
This warning is wrong because HOMEPAGE is neither a plural variable nor
does it contain a "fetch URL".
To fix this, there is a new data type FetchURL, which has one more check
than the existing data type URL, namely the MASTER_SITES abbreviation.
The existing definitions in makevars.map have been updated accordingly
to the appropriate data types.
Note: This patch is not perfect, since ideally only variables of type
"List of FetchURL" should be suggested to be replaced with MASTER_SITES,
but since currently all these variables are actually "List of FetchURL"
and not simply "FetchURL", this should be fine.

Bump for perl-5.20.0.
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.

Bump all packages for perl-5.18, that
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.

Respond to wiz's code review:
* In test, match the "make makesum" warning more loosely.
* In test, find packages to run against in $PKGSRCDIR explicitly.
* Bump version.
This is the last commit in a set developed for my "Rehabilitating
pkglint" talk at pkgsrcCon 2013.
Reviewed-at-pkgsrcCon-and-approved-during-the-freeze-by: wiz

Bag-compare all vartypes_basictypes, not just two.
pkglint greps itself (really) to generate this list of types. Test
exhaustively for all types in the list today, so that the tested
code can become more civilized tomorrow. Adds a test-time dependency
on Test::Deep for cmp_bag().

Subst paths for both test and install.
In the configure stage, tell pkglint to find *.map in ${FILESDIR}.
That lets tests run even when pkglint isn't installed (which means
it also makes the tests less wrong when pkglint is installed!).
In the install stage, tell pkglint to find *.map under ${PREFIX},
as before (no functional change to the installed package).
Specify USE_TOOLS=perl to quell pkglint. :-)

Extract PkgLint::* to files, then inline them.
These bits of non-main functionality are distracting to the casual
reader, and also to your intrepid refactorer. Since we recently
added some characterization tests that run the pkglint executable
against real packages, we can safely extract bits of code to separate
files and prove nothing broke in the move.
Instead of installing the new Perl modules where pkglint can find
them at runtime, I've added a build step to inline them right back
where they used to be (same order and everything). This is a little
annoying, but less annoying than suddenly needing to deal with Perl
runtime paths just for these few tiny modules. Also, loading modules
at runtime would affect pkglint's performance, and I don't yet have
performance tests to prove that this would be fine (or not), so I
can't safely do it.
No functional change intended.

Make it possible to easily write automated tests:
* minimally adapt pkglint(1) into a "modulino" for testability
* verify it still runs normally as a program
* create a test script with a few very simple test cases
* hook it up to 'make test'
* verify that the tests really fail if I go breaking the code under test
Meta-addresses PR pkg/46570. New BUILD_DEPENDS, but no functional
change, so no PKGREVISION bump. Approved by wiz@.

Update "pkglint" package to version 4.102. Changes since version 4.101:
Allow "@" as a character for directories in "${WRKSRC}". This stop bogus
warnings for the "phpmyadmin" package which contains directory names
like "locale/sr@latin/LC_MESSAGES".
Change suggested by Thomas Klausner in private e-mail.

Updated pkglint to 4.91.
Important changes since 4.90:
- Fixed some issues with "package has been downgraded" warnings.
- The doc/CHANGES-* files can be checked individually now.
- Emit a warning if a package does not define PKG_DESTDIR_SUPPORT.
- In patch files, warnings about absolute pathnames, CPP macros and the
like are only emitted if the line starts with a "+". If the -Wextra
option is given, the context lines (starting with a " ") are also
checked.
- Added support for the new buildlink3.mk format.

update pkglint to 4.86 - necessary bu not sufficient to handle OWNER in
Makefiles. As a first pass make MAINTAINER optional and add an optional
OWNER directly after it in the same section. This will pass valid
OWNER/MAINTAINER combinations but not reject some invalid ones.
Full fix (hopefully) coming soon...

Updated pkglint to 4.84.
Changes since 4.82:
- Whenever a Makefile.common is included by another file, that file should
be mentioned in the Makefile.common.
- Added spell checker for .if directives.
- Added warnings for uncommented patches (only for -Wstyle).
- Added spell checker for invalid macro names, like __NetBSD_Version.
- Deprecated INSTALLATION_DIRS_FROM_PLIST in favor of AUTO_MKDIRS.
- Many more small things.

Updated pkglint to 4.80.
Important changes since 4.79:
- Fixed some internal errors.
- Adjusted pkglint to changes in the pkgsrc infrastructure: SUBST_VARS.*,
PKG_USERS_VARS, PKG_GROUPS_VARS.
- Improved the parser for shell code.
- Cleaned up the handling of the :Q operator, so that pkglint warns about
it places where it is not required.
- ${RUN} has deprecated ${_PKG_SILENT}${_PKG_DEBUG}.

Removed USE_TOOLS+=perl:run, since Perl is not used as a tool, only as a
dependency which is included automatically by the various Perl modules.
I wonder why the PERL5 variable is still defined without perl being in
USE_TOOLS.

Before using any variables in .if conditionaly, bsd.prefs.mk should be
included. In the special case of the BATCH variable, this does not make
a difference, since it is set via an environment variable.

Update pkgtools/pkglint to 4.71 - lintpkgsrc changes:
- Handle 'badly named' patch files
- In the event of a distint checksum mismatch, report the affected file
as well as package
- If we need to call out to make to parse a makefile and it returns any
errors, ensure we prefix the error output with the Makefile path
- run through perltidy. Ugly, but consistent

Updated pkglint to 4.69.
Changes since 4.68:
- Improved the checks for BUILD_DEFS.
- Improved the shell word parser.
- Improved the heuristics for detecting absolute pathnames.
- The :M* operator is only required with GNU configure scripts.
Committed during the freeze to have a unique version number that includes
the features from the last days.

Updated pkglint to 4.68.
Changes since 4.67:
- Adjusted to the ongoing changes in the pkgsrc infrastructure.
- Many small improvements in the makevars.map file.
- Stricter checking of dependency patterns, to catch foo-*.
- Small improvement on the use of stack space due to complicated regular
expressions.
- Many more absolute pathnames are found in patch files, no matter which
type of file is patched.
- All user-defined variables that are used should be added to BUILD_DEFS.
- All packages that set GNU_CONFIGURE are assumed to need a C compiler.
- Instead of ${TOOL}, tool may be used directly, since the tool wrappers
are installed very early in the build process.
- Removed the --debug option.
... and many more.

Updated pkglint to 4.67.
Changes since 4.66:
- Fixed the stack overflow in Perl in long variable assignment lines.
- Improved the SUBST check.
- For all files in bin/ and sbin/, pkglint now complains if the package
does not have a manual page, too. (Only with -Wextra)
- Lists of pathnames may be used in .for loops, since they are _assumed_
to not contain any additional white-space.
- Some more small improvements.

Updated pkglint to 4.66.
This change includes all the things I thought of during the freeze of
2006Q2.
Some variables have disappeared from pkgsrc without notice. Marked them
deprecated to help the package authors at least a bit.
Renamed some ACL abbreviations in makevars.map and adjusted the variable
definitions.
Added the command line options -Dtrace, -Dunchecked and -Dunused.
Some variables may contain unexpected white-space and therefore should
not be used in .for loops.
The -Dmisc option replaces the --verbose option (and the log_info
subroutine), which does not exist any longer. This eliminates all
instances of "OK:" from the output, which I didn't like from the
beginning. The -Dmisc option also takes over many warnings that have
been issued by --debug before.
Improved the check for absolute pathnames. Especially, everything that
follows ${DESTDIR} or $(DESTDIR) in a Makefile is considered an absolute
pathname. This reveals many wrong uses of DESTDIR (as defined by the GNU
coding standards), for example $(DESTDIR)/$(prefix), which should be
$(DESTDIR)$(prefix) instead.
Almost every use of a make(1) variable is checked for spelling mistakes.
Before, only the definitions of variables have been checked.
Restricted the use of variables to specific files, which are defined in
makevars.map. This catches especially buildlink3.mk files with
unexpected side effects.
In shell commands, neither "echo" nor "echo -n" or "${ECHO} -n" should
be used. Since the INSTALL_*_DIR commands can only handle one directory
at a time, suggest to use INSTALLATION_DIRS instead.
Greatly improved the checks for dependency specifications, especially to
find foo-*, which should rather be foo-[0-9]*.
Fixed the incorrect handling of LICENSE_FILE (now using $line->text
instead of $line).
Improved the wording of the "plural names" warnings, so that for known
variables it is "The += operator should only be used with lists." now.
In buildlink3.mk files the uppercase and lowercase names of the package
should correspond with the package name. This catches many
copy-and-paste mistakes. Fixed many null pointer exceptions as well. In
addition, every buildlink3.mk file needs a definition of
BUILDLINK_API_DEPENDS.
In patch files, absolute pathnames and unportable macro names are
checked not only in added lines, but also in the context lines.
In the pkgsrc root directory and the category directories, the Makefiles
are checked like every other Makefile, too.
Fixed the place where the global variables for the package context are
defined and later undefined.
Variables that are mentioned in EVAL_PREFIX may be used in the current
file and are not flagged as "used but not defined".
When parsing shell words in Makefiles, recognize $<, $@, $^ and $/.
(The latter is used extensively by openoffice to represent a directory
separator.)
Fixed some minor bugs:
* $makevar had been defined unintentionally by using the -> operator.

Updated pkglint to 4.65.
Changes since 4.64:
- Many refinements of quoting checks and variable type definitions.
- Improved the wording of diagnostics and added some explanations.
- Adjusted pkglint to the many recent changes in the infrastructure part.
- Improved detection of absolute pathnames.
Updated during the freeze because the version number has not changed for
two weeks, but many features were added. Therefore the old version
number was not reliable for determining the real functionality of
pkglint exactly.

Updated pkglint to 4.64.
Changes since 4.63:
- Many diagnostics for the :Q operator have been wrong. They are currently
left out, but will be re-added later. In the mean time, no diagnostics
are better than wrong ones.
- Made defining the permissions for variables easier by providing a way to
define "permission constants".

Updated pkglint to 4.63.
Changes since 4.62:
- Improved checking of variable permissions.
- Improved detection of unused variables, for spell checking.
- Added warnings for variables that are used at load time but should not.
- Much code cleanup.

Updated pkglint to 4.60.
Changes since 4.59:
- For many variables the :Q operator is not needed (by definition), for
example some pathnames, user names, group names.
- Improved the diagnostics for planned package updates.
- Various catch-ups to recent changes in the infrastructure, among them
BUILDLINK_ABI_DEPENDS and gettext.mk.
- When the PLIST contains a libtool archive, the *.a and *.so files don't
have to be mentioned explicitly.

Updated pkglint to 4.59.
Changes since 4.58:
- Improved checking of patch files.
- Adjusted the variable names to the recent pkgsrc changes.
- Print a note if the pkglint version does not match the one from the
checked pkgsrc tree.

Updated pkglint to 4.58.
Changes since 4.57:
- New parser for patch files.
- New command line options -Wplist-depr and -Wstyle.
- Variable assignments are no longer allowed in variables that should only
contain identifiers.
- builtin.mk files must not be included directly.
- Better checks for sed commands.
- Some commands like ktrace should never appear in Makefiles.
- The package version is compared to the requested update in file doc/TODO.

Updated pkglint to 4.57.
Changes since 4.56:
- Added warnings for variables that are defined, but not used. This is a
simple spell-checker.
- Variables that appear as a single shell word should be quoted unless they
have the type "List of something".
- Many small enhancements.

Updated pkglint to 4.56.
Changes since 4.55:
- Avoided false positive warnings about bsd.prefs.mk being required before
using buildlink3.mk files.
- Restricted the files that are checked for absolute pathnames in patch
files.
- Some tools that are often used as ${TOOLNAME} need to be explicitly
added to the USE_TOOLS variable. When complaning about their direct
use, add a proper advice.
- Readded all the deprecated variables. The warnings will have to stay
longer than just three months.

Updated pkglint to 4.55.
Changes since 4.54:
- -Wvarorder works now as expected.
- distinfo files are checked more strictly.
- Reduced the number of false positives.
- Make(1) variables of the form $(...) are detected properly.

Updated pkglint to 4.54.
Changes since 4.53:
- Added about 50 new variables to be type-checked.
- For unknown variables, the type is guessed from the variable name.
- In patch files that patch Makefiles, added lines are checked for
absolute pathnames.
- Replaced the -Wdebug option with --debug, so that the debugging warnings
don't show up when using -Wall.
- Many minor improvements.

Updated pkglint to 4.53.
Changes since 4.52:
- New warning categories "debug", "space", "quoting" that can be selected
independently.
- Improved the parsers for shell commands and shell words.
- Added warning for using $(...) in shell programs, as the Solaris /bin/sh
doesn't support it.
- Added some warnings about quoting.
- Some other minor changes.

Updated pkglint to 4.52.
Changes since 4.51:
- The occurence of a symlink other than work* inside the pkgsrc tree is
not an error, just a warning.
- SUBST_MESSAGE should not be quoted.
- If -Wextra is enabled, all make variables that are used in shell commands
are checked for proper quoting.
- Improved the parser for shell commands.
- Some other minor changes.

Updated pkglint to 4.51. Welcome to the Fahrenheit release.
Changes since 4.50:
- Extended the quoting checks for make variables to shell commands.
- Added a check for unquoted shell variables (only with -Wextra).
- Some other minor changes.

Updated pkglint to 4.49.
Changes since 4.48:
- Added a check for .include lines in all Makefiles and *.mk files to make
sure that only existant files are referenced and that pkgsrc packages do
not contain references to packages in pkgsrc-wip.
- Extended the --autofix option to all Makefile* and *.mk files. Before, only the
package Makefile could be fixed.
- Rewrote the detection of direct use of tool names.
- Append-only lists may be initialized using the "?=" operator.
- The typical form of ShellWords for CONFIGURE_ARGS, --foo=${FOODIR}, is checked for
quoting errors.
- All PKG_OPTIONs are checked whether they are documented in mk/defaults/\
options.description.
- Many small fixes and improvements.

Updated pkglint to 4.47.
Changes since 4.46:
- Made the --explain command line option work.
- Added many explanations for existing diagnostics.
- Improved the diagnostics.
- In --autofix mode, no backup files are created anymore.
- Temporarily disabled the check for direct use of tool names.
- Fixed some false positive warnings.
- Added a check for the use of absolute pathnames in shell commands.

Updated pkglint to 4.46.3.
- Added the $line->replace() method for a convenient way to achieve simple
autofix tasks.
- When autofixing, no backup file is created (it had been created before).
1. Usually "cvs diff" is available.
2. All current autofixed changes are trivial.
3. The fixed file is first written to disk in a new file and then renamed
to the original file, greatly reducing the risk of data loss.
- Fixed a bug in checkdir_package(): In the call to load_package_Makefile(),
the last parameter had not been passed by reference, but by value.
Luckily this had not influenced any other part of pkglint.
- While there, I noticed that it is not necessary to pass some subroutines
the lines of all included Makefiles, so I removed that parameter.

Updated pkglint to 4.46.
Changes since 4.45:
- Added the type ShellWord.
- Added quoting checks for variables that are appended to a
List of ShellWord.
- Multiple -v increase the verbosity.
- The --autofix option is no longer undocumented, but still experimental,
as this is the only part of pkglint that can modify external files.
- Added an --explain option that provides additional help for the
diagnostics.
- Added checks for unportable CPP macro names in patches.
- Updated the documentation.

Updated pkglint to 4.45.3.
- Added detection of redirection operators and comments to the
regex_shellword constant.
- Changed the naming conventions for list data types. Now List simply
means a list. List+ means a list that should only be modified using
"+=", not "=". List! means an internal list. And List!+ is the
combination of both.
The distinction is necessary because of the introduction of
redirection operators in the regex_shellword. When checking the data
type of list elements, the lists are split up into shell words instead
of simply using split(). This leads to much better results.
- When splitting a variable value or shell command into words, anchor the
regular expression at the beginning of the string.

Updated pkglint to 4.45.1.
- Added a new type ShellWord that is used for MAKE_ENV and the like to
check for invalid FOO="${VALUE}" additions. They really should be
FOO=${VALUE:Q}, as they may already contain embedded quotes. This is
especially important for CPPFLAGS and CFLAGS.

Updated pkglint to 4.44.
Changes since 4.43:
- Removed the remaining code that had been imported from FreeBSD's
portlint.
- Removed the (undocumented) -Wvague option.
- Removed the -Wexec and -Wparen options. The latter had no effect at all,
and the former cannot lead to false positives, so it is always enabled.
- Variable names starting with an underscore are reserved for internal
pkgsrc use.
- Added some more type checks.

Updated pkglint to 4.43.2.
- Renamed the type Dependency to DependencyWithPath.
- Added new types Dependency, PlatformTuple and RelativePkgDir.
- Added some of the common variables to the list of typed variables.

Updated pkglint to 4.43.
Changes since 4.42:
- Reduced the number of duplicate diagnostics when checking multiple files.
Only diagnostics concerning the current package are printed.
- Added checks for EXTRACT_SUFX and PKG_INSTALLATION_TYPES.
- Added a work-around for the PHP patches warnings.
- PERL5_PACKLIST should not contain references to other variables.
- Added the -s|--source command line option to show the code along with the
diagnostics.
- Fixed a bug in get_logical_line(); logical lines have not had their
physical lines attached.
- Deprecated variables are not only checked when they are defined but also
when they are used.

Updated pkglint to 4.42.2.
- Added a check that PERL5_PACKLIST does not contain references to other
variables. Some packages have ${PERL5_SITEARCH} in it, which results in
a double slash, and the CHECK_FILES framework cannot handle this.

The exitcode from running pkglint in the post-install target is ignored,
since the pkglint Makefile sets MANINSTALL but shouldn't, as this
variable is intended to be user-defined. This is only a work-around,
which needs to be addressed properly for the other packages setting
MANINSTALL, too.

Updated pkglint to 4.39.
Changes since 4.38:
- Disabled the check on Makefile variable order, as the discussion on
tech-pkg has not finished yet.
- Improved detection of valid tool names.
- Improved detection of direct use of tool names. (Less false positives.)
- Improved the diagnostics for direct use of tool names.

Updated pkglint to 4.38.1.
- It is an error if packages define a variable whose name starts with an
underscore.
- Removed the (vague) "wip" check, as it has been replaced by special checks for
DEPENDS and .include directives.
- Disabled the check for variable ordering until the discussion on tech-pkg
has led to any results.

Updated pkglint to 4.38.
- PKGNAME is checked for being a valid package name.
- PLIST files should not contain filenames that match */CVS/*.
- Completely rewrote the check for variable ordering. The new code
operates on a data structure that's easily understandable and
extendable (see the source for an example). It also generates greatly
improved diagnostics. As the old code had been enabled only when
checking with -Wvague or -Wall, it has been seldom used anyway.

Updated pkglint to 4.36.1.
- Added many of the variables found in pkgsrc/mk/* to makevars.map.
- Added the function log_fatal, whose output goes to stderr instead of
stdout.
- All files in pkgsrc/mk/ are excluded from checking, as they may use
private variables and do other questionable things.
- Removed the Language type, as it is a simple enumeration.
- Added the Userdefined type to distinguish user-definable and read-only
variables.

Updated pkglint to 4.34.
Fixed the --autofix handling of category Makefiles. Added an --import
option that helps importing packages from pkgsrc-wip. When checked with
--import, the package is checked as if it weren't part of pkgsrc-wip.

Updated pkglint to 4.33.1.
Fixed undefined behavior when reading a file that ends in a continuation
line. Any use of ${WRKSRC}/.. is considered an error, as ${WRKSRC} is
meant to point to the top of the build directories. A proper combination
of WRKSRC, CONFIGURE_DIRS and BUILD_DIRS should be used instead. Sorted
the makevars.map file and added SUBST_CLASSES.

Updated pkglint to 4.32.
The --autofix support has been rewritten to be more easily usable.
Automatic fixes are currently restricted to the sort order of SUBDIR
entries in category Makefiles. It had been the complete category
Makefile before. Added a new diagnostic, prefixed with "NOTE:", that is
used for important informational diagnostics, for example autofixed
files.

When checking Makefiles, get rid of the "physical" lines as soon as
possible and base all other checks on the logical lines. The physical
source lines are saved literally to make implementing the --autofix
option easier.

Updated pkglint to 4.31.
Changed the names of the datatypes (Yes_Or_Undefined => Yes, Boolean =>
YesNo, Integer => PkgRevision) in makevars.map. It is now an error if
PKGREVISION appears outside a package Makefile. Improved detection of
Makefile.common. Improved wording of the warning for relative
directories in the form ../package.

Updated pkglint to 4.30.
Rewrote the typechecking code for Makefile variables. The variable
definitions are extracted from logical lines instead of physical lines,
comments are separated from actual values, for Lists of something, each
something is checked. All URLs are subject to MASTER_SITES expansion.
MASTER_SITES is checked to be a List of URLs.

Updated pkglint to 4.29.1.
Added CONFLICT to the list of deprecated variables (actually it's a
typo). Added PLIST_SUBST to makevars.map as a List. Allow comments after
a YES/yes/NO/no value of variables.

Updated pkglint to 4.29.
Fixed the detection of list variables that are modified with operators
other than "+=". Added *_SKIP to the list of plural variable names.
Removed some unused variables from main(). (This change include
white-space changes.)

Updated pkglint to 4.28.2.
Added a data type Readonly for variables that must not be given any
value at all by the package Makefile. Marked PKGBASE and PKGVERSION
read-only, because leaving them read-write would make the way PKGNAME is
calculated too complex. Made the check for the "+=" operator independent
of the data type. Added more patterns for accepted variable names for
lists.

Updated pkglint to 4.25.
Improved heuristics for packages that use some common Makefiles,
reducing the number of false diagnostics in -Wvague mode. Moved checks
for SVR4_PKGNAME out of -Wvague mode. Added check for misspelled
NO_{SRC,BIN}_ON_{FTP,CDROM}.

Updated pkglint to 4.21.4.
The last change introduced some false positive diagnostics. If a
distinfo file contains the checksum for a patch that does not exist,
this is not considered to be an error, but only a warning, as the
additional checksums do not influence the package.

Updated pkglint to 4.21.2.
Changed the file name pattern for patch files to avoid false positives
for DISTFILES that start with "patch-" (requested by salo). Added a
warning for invalid patch file names.

This is pkglint-4.21.
Changes since 4.20 include:
- In the diagnostics, FATAL is replaced with ERROR.
- The command line option -g changes the format of the diagnostics to be
similar to the one of gcc.
- Removed false warnings when checking if PLISTS are ordered.
- Removed the check for contiguous blank lines.
- Added a check to PLISTs that man pages are not installed in share/man.
- pkglint -r allows to recursively check directories.
- The pkgsrc root directory can be checked.
- Removed false warnings for patches that contain "---" lines.
- Switched to checking logical lines instead of physical lines.
Diagnostics for logical lines contain the range of physical lines
instead of a single line number.
- Some ../.. path components are stripped from the diagnostics.
- When checking for the direct use of tool names, only the context of the
use, not the whole shell command is output.
- Patches that contain RCS Ids should not have the -ko CVS mode anymore.
- Variables that are modified using the "+=" operator are considered to be
lists, so they should have a name indicating a plural.

This is pkglint-4.20. Changes since 4.19 include:
- Very much code cleanup
- Introduction of the --autofix flag for category Makefiles
- Rewrite of the code to check the DISTNAME section in package Makefiles
- Rewrite of the code to check category Makefiles

Drop support for TOOLS_DEPMETHOD.<tool>. The new way to specify a
run-time dependency (DEPENDS) on a tool is to append a ":run" modifier
to the tool name, e.g.,
USE_TOOLS+= perl:run
Tools without modifiers or with an explicit ":build" modifier will
cause build dependencies (BUILD_DEPENDS) on those tools to be added.
This makes the notation a bit more compact.

Don't warn on empty scripts/ directories, which may occur during CVS
updates. Don't write logging messages for Makefiles that are being read
but for Makefiles that are included and for those whose inclusion is
skipped. Skip include files that contain Make variables. When checking
for direct use of shell commands, don't print the line continuation,
that is the trailing white-space and backslash. These changes lead to
pkglint-4.18.

Fixed man page handling on platforms that don't have the mandoc macros.
Together will all the other changes of the last days, this makes up version
4.16. Most changes affected the elimination of false warnings.

Included the location of the warning or error in the messages for
everything except Makefiles. (Makefiles which will follow soon.) This makes
most warnings more useful. Together with the last few changes, we are
now at version 4.06. Approved by wiz.

Another fix for python and ruby packages, this time for installed ones.
Standardize the prefix so they can be compared with the packages
more easily (pkg_chk is better at this anyway, but since I fixed
the other cases already...).
Welcome to 4.00!

Update to 3.99:
Fix lintpkgsrc handling of python and ruby packages.
Remove invalid-dewey test that broke more things than it helped.
Add support for "pre" in version strings. Update comment about
recognised strings.

Ignore use of words which when used in make shell commands should
be used in variable-expansion version, e.g. `test' vs `${TEST}' in
settings of TEST_TARGET and ALL_TARGET. Gets rid of warning about
"test" in TEST_TARGET setting from lang/perl5/module.mk.
Bump package version.
Reviewed by wiz.

Update to 3.92:
Include each .include'd file only once. Solves the 'Out of memory!'
problem for big packages, and avoids repeated warnings about problems
coming from bl3 or Makefile.common files.
From Roland Illig in private mail.

* Make PKGSRC_TOPDIR a private variable by renaming it to _PKGSRC_TOPDIR,
as it's only used internally by bsd.prefs.mk.
* Make _PKGSRCDIR a public variable by renaming it to PKGSRCDIR.
Also, generate its value from ${_PKGSRC_TOPDIR} so it's less fragile
than the old method of stripping off the last two components of
${.CURDIR}. PKGSRCDIR may now be used after bsd.prefs.mk is defined.
* Change all references to _PKGSRCDIR to PKGSRCDIR.

Update to version 3.90. Lintpkgsrc package version comparison bug fix.
When comparing two version numbers vector the shorter one needs to be
extended with 0. Cf. src/usr.sbin/pkg_install/lib/str.c:vtest().
Previously lintpkgsrc considered that 'png-1.2.6', which version vector is
[1,0,2,0,6], is "less" than 'png-1.2.6rc1', which version vector is
[1,0,2,0,6,-1,1]. No wonder lintpksrc -V considered the package png-1.2.6
being vulnerable wrt the 'png<1.2.6rc1' entry in pkg-vulnerabilities files.
While here teach lintpkgsrc about the 'alpha' and 'beta' version elements.

Apply two patches from Roland Illig:
First two chunks of diff: Fix for perl-5.6.1; addresses PR 26718.
Remainder:
- made $category a local variable of checkfile_Makefile
- redefined the meaning of the return value of the check_* subs
(siehe Zeile 37 des Patches)
Welcome to 3.89.

Update pkglint 3.84
Parse Make .{if,endif,else,elif,include} directives which
contain a space between the . and the directive. Fix an include
path issue which this threw up. Now 'lintpkgsrc -d' correctly
extracts the PKGNAMEs for the gcc3 packages.
It still doesn't understand 'dewey' versions with alpha chars, or
some of the more interesting makefile constructs, but it looks closer
to reality.

Update pkglint to 3.83. Changes:
- made the program compile with "use strict"
- completely rewrote some subs to make the code more readable
- converted the global ("local") variables into local ("my") ones ;-)
- limited the scope of variables where possible
- added file and line number to the error messages where possible
Patch contributed by Roland Illig in private mail.

Update to 3.82, committing yesterday's changes from Roland Illig.
Changes:
- Handle a rarely used patch format correctly
- Do not output superflouus linebreaks anymore
- Check the contents of the COMMENT field only if it exists
- Handle invalid dependency specifications correctly
- Correctly handle Makefile variables ordering
- Output complete filename of absolute filenames
- Added a new scheme for loading text files into memory so that the
location of an error or warning can be given exactly (file + line) to
the user.
- Refactored the checkfile_patches_patch subprogram to use the new text
file processing and to make clearer what is checked.

Update pkglint to 3.81
- Rework undefined variable handling. Fixes issue introduces in 3.80
- Never run a pkg_info in pkgdistdir. Avoids a serious misfeature of
pkg_info whereby it looks for a package in the current directory
by default.

Update to pkglint 3.79
== functional changes ==
- prints the various "OK: ..." messages only when called with "-v".
- prints a summary after pkgsrc category checks
- fixed a bug for commented category entries (in line 1718)
- removed the option "-q". It has become unnecessary
== refactoring ==
- more consistent naming scheme for variables and functions
- replaced some "local" with "my" when possible
- clustered the variables that are processed by the ${SED} commands
- provided function prototypes for argument checking
- replaced the old perror by log_{error,warning,info}.
- Avoided the (implicit or explicit) use of $_ in many places
Patch contributed by Roland Illig via private mail.

Warn if a file is marked executable. Welcome to 3.77.
It's misleading to have uninstalled rc.d scripts in ${FILESDIR}
marked executable just because they were inadvertently committed
that way; they need to be processed by the install machinery in
order to work.
Since we set desired permissions at install time, it's generally
best to avoid having "executable" files in pkgsrc (with the notable
exception of pkglocate, which runs in place).
For files not yet committed, please correct the permissions before
committing. For files already in the repository, you'll need help
from an administrator.

pkglint now reports if sees etc/rc.d in Makefile or PLIST.
Should use RCD_SCRIPTS mechanism (which can automatically
install to ${RCD_SCRIPTS_EXAMPLEDIR}) which automatically
registers the rc.d script(s) in the PLIST.
New version is 3.73.

Update pkglint to 3.63:
perl 5.6.1 realpath() cannot handle files, only directories.
Handle this case, with the only downside that if the last component in
an include path is a symlink the 'performance boost' duplicate check
may not work. Reported by Todd Vierling

Update pkglint to 3.62:
lintpkgsrc - handle the buildlink include fest:
- Using realpath() to fix exclude of duplicate includes speeds
up 'lintpkgsrc -rp' on a PIII-500 from 40 minutes to 3
- Excluding buildlink[^/]*.mk files unless -d is specified further
speeds up to just under 1 minute

Update to version 3.58.
Teach pkglint about new rules related to info files handling.
- remove old checks of PLIST related to install-info.
- emit a FATAL error for "@exec install-info" and similar in PLIST.
- emit a FATAL error for inclusion of texinfo.mk.

Add some code to the "stored database" to deal with counting packages
that have multiple versions (eg, apache or emacs), so that the number
of packages loaded when generating the database will match the number
loaded from the database afterwards.
Curiously, reorganizing the code a little makes the stored database
about 20-25% smaller.
Old stored databases are still completely supported.
Jump to version 3.53.

Update pkglint to 3.50. This version does a (slightly) better job at
Makefile variable parsing and lets "VARNAME=" override "VARNAME?="
definitions. This should also fix the current bogus warnings about
distinfo in the weekly pkgsrc output.

Fill in default values for DESTDIR (empty), LOCALBASE ("/usr/pkg"),
and X11BASE ("/usr/X11R6"), which, while they might not be right for
*every* system, are certainly more right than UNDEFINED.
Give lang/python/pyversion.mk a little help by stuffing the material
from PYTHON_VERSIONS_ACCEPTED into the two places it expects it (since
lintpkgsrc doesn't do .for loops), add support for the ${FOO:S/foo/&/}
construction, and tweak the .if handling for && and || bits.
This has the following effect on the -g output (as a simple measure):
% grep -c UNDEFINED before after
before:58
after:1
Jump to 3.47.

Add -E and -I to lintpkgsrc for the "exporting" and "importing" of a
"database" that lintpkgsrc can use in lieu of scanning all the pkgsrc
Makefiles.
This has several nice effects, chiefly:
(1) Using any of -B, -O, -R, -S, -V, -d, -g, -i, -p, or -u, are now
*much* faster since reading the "database" takes at most 3 seconds on
my laptop, whereas reading all the Makefiles takes at least 3 minutes.
(2) One can now check for out-of-date packages on machines which do
not have an expanded pkgsrc tree simply by copying the "database"
over. Note that the database will inherently have some dependencies
on the environment of machine where it is generated (eg, mk.conf
settings, architecture type, etc).
Reviewed by the wiz.

Update to 3.41:
- replace occurrences of "make" with @MAKE@
- add @MAKE@ to the list of variables to get sod (I never learned
properly how to conjugate "sed")
- warn about NO_PATCH, since it hinders more than it helps
- remove NO_PATCH from Makefile to quell new pkglint warning

In the case that we really can't determine the PKGNAME properly, just
punt and invoke "make show-vars VARNAMES=PKGNAME" and get make to tell
us.
This addresses the issue of:
Cannot extract digest-UNDEFINED version (/usr/pkgsrc/pkgtools/digest/Makefile)
Cannot extract pkg_install-UNDEFINED version (/usr/pkgsrc/pkgtools/pkg_install/Makefile)
Unknown package: 'digest' version 20010807
Unknown package: 'pkg_install' version 20021123
Patch reviewed by the wiz.

Update pkglint to 3.20
lintpkgsrc - if we find one valid match in a DEPENDS entry, don't
bitch about any others expanding to a non-existant package:
Example: postgresql-{6.5.3*,7.0*,lib-*}
With this lintpkgsrc -d now outputs six lines on current pkgsrc.
Note to self: When you use 'cvs c^[P' the second time in an
evening for the same package... its enough.

Update pkglint to 3.19
lintpkgsrc.pl:
Finally we parse {x,y,z} constructs in DEPENDS, plus handle a
few more make conditionals. Now most of the lintpkgsrc -d output
is related to versions of software no longer in pkgsrc...
Does the fun ever start?

Update pkglint to 3.18:
Significant rototill of lintpkgsrc.pl, converting to a rather twisted
hierarchy of PkgVer Pkgs and PkgList objects with assorted arbitrary
methods, all based on existing usage rather than ideal design.
Actual fixes found along the way:
- Handle := in makefiles
- Better handle parenthesis and "" in make conditionals
- parse bsd.pkg.mk to extract _REQD values (hence the previous line)
- Add missing 'key' in hash iteration
- Do not repeat includes (evolution longer depends on jpeg 45 times)
Still have to handle such delightful constructs as
DEPENDS += {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1} in a sane way

Modify all references to PKGSRCDIR to _PKGSRCDIR, except in the external
references of the pkglint package.
_PKGSRCDIR is an internal definition in bsd.pkg.mk, and a few packages
which would like to refer to other packages in the build tree. It should
not be set by users, but neither should it stop a user from building a
package if it is defined, so make it obvious that this is the case.

Update pkglint to 3.15
- lintpkgsrc: Set BSD_PKG_MK, and ensure .CURDIR is correct when running
with -D. Also remove an articulated lorry load of single quotes.
Many thanks to wiz who added PKGREVISION before I lamely managed to get
around to it :)

Deprecate NO_WRKSUBDIR, replacing it with an explicit assignment of:
WRKSRC= ${WRKDIR}
This is much cleaner, much more indicative of what happens, and removes
another of the negative definitions (NO_.* = value).

Update pkglint to 2.40.
Now handles the digests other than md5. Expands variables in ${PKGNAME};
doesn't check Makefile comments or COMMENTs for use of reserved words;
and some minor cleanup. (Removes ~100 bogus warnings from lintpkgsrc -l).

Change COMMENT handling:
COMMENTs are now a variable in the Makefile instead of a pkg/COMMENT
file. The COMMENT var should be in the maintainer block after the
homepage.
Modify bsd.pkg.mk, pkglint, url2pkg, and port2pkg (last one untested)
for the new behaviour. Document new state in Packages.txt.
This should save lots of inodes, and lots of time when untarring/updating.
Idea by Alistair Crooks.
For the time being, accept pkg/COMMENT instead of a COMMENT var to avoid
a flag day.

Update pkglint to 2.25. If this keeps on I'm going to have to start using
odd numbers for 'development' versions...
lintpkgsrc:
Rename set_pkgsrcdir to parse_mk_conf, and also extract PACKAGES as well
as PKGSRCDIR. Update check_prebuilt_packages to handle the new package data
structure that allos mulitple versions of the same package to be valid
(for -current packages etc) - Missed in previous changes.

Update pkglint to 2.24:
lintpkgsrc tried to break DEPENDS up into a packagename and version
section, so if the version did not match it could lookup the matching
packages and suggest valid versions. Unfortunately this excessive
helpfulness meant globs that cover both sides such as
'perl-{5.0*,5.6.0nb2,base-5.[6-9]*}' gave it a certain degree of
indigestion. It also didn't handle the '.if ${BINNAME} != common'
correctly in www/ns-plugger-common/Makefile.
I believe now that any outstanding -i or -d warnings are genuine...

lintpkgsrc:
Rework substitution handling to correctly deal with
${DISTNAME:S/-/-gnome-/:S/$/nb1/} and friends. I remember being
in something of a hurry when that code was fist written. Slight
cleanup to not completely blow up on DEPENDS such as
perl-{5.0*,5.6.0nb2,base-5.[6-9]*}, though we still do not
handle globbing that includes packagename and version.
Update to 2.22

Add '-R' to list any RESTRICTED binary packages (should be useful for
ftp.netbsd.org), implement dewey-decimal version matching, and add
some comments. lintpkgsrc now qualifies as "very lightly commented"

Small change to make pkglint run on Linux, much the same as the change
used to make it run on Solaris - force the osname to be NetBSD, since
pkgsrc is the same on all these different operating systems.
Bump version number to 1.75 accordingly.

The Grand Homepagification:
- New, optional Makefile variable HOMEPAGE, specifies a URL for
the home page of the software if it has one.
- The value of HOMEPAGE is used to add a link from the
README.html files.
- pkglint updated to know about it. The "correct" location for
HOMEPAGE in the Makefile is after MAINTAINER, in that same
section.

Our portlint has diverged significantly from FreeBSD's, so
rename portlint to pkglint, and keep the sources right under files.
This makes it much easier to maintain and keep up with changes to out
package system.