Placing the code into a main function allows the tests to source the file
without any side effects.
The LC_ALL=C environment variable is necessary on NetBSD/x86_64 8.0 in
the en_US.UTF-8 locale since otherwise R dumps core in the source(...)
call, deep inside towctrans.
Before, it was difficult to edit the R code since all dollars,
backslashes and backticks had to be escaped. Separating the code also
makes the R part testable on its own.
Changes since 0.6:
* Run properly even if TMPDIR is not set.
* Quote variables to prevent unintended interpolation.
* Write error messages to stderr instead of stdout.
Changes since 19.3.0:
* In buildlink3.mk files, the package identifier doesn't have to match
the PKGBASE from the package Makefile exactly. The PKGBASE may have a
leading "lib" (for libiconv and libgettext), as well as a trailing
number (for emacs20 and netatalk22).
* GITHUB_RELEASE is added to the variables that should appear in a fixed
order in the package Makefile.
* In the MASTER_SITE URLs, the transport protocol is irrelevant for
matching direct URLs to the predefined MASTER_SITE_* variables.
The motivation is to consider meson as an application, so there is only
one copy on the system, and as a python 3 program, it can build python 2
packages.
Changes since 19.3.2:
* Replaced the Perl implementation with the Python implementation.
* Improved detection of WRKSRC: only directories are candidates, regular
files are ignored.
* R packages are handled by R2pkg instead of url2pkg.
The Python implementation has received more bugfixes, new features and
handles all kinds of edge cases better. All previous features have been
either copied or intentionally omitted.
CFLAGS and LDFLAGS had been checked for GCC-style flags only. This didn't
make sense since wrong flags would be detected on the exotic platforms
anyway.
The experimental --autofix has been removed.
The check for "# used by" comments in Makefile.common has been removed.
Especially the --autofix could damage files.
The warnings for ICON_THEMES have been removed since they appear in
groups of thousands, and the old pkglint cannot issue warnings "once per
file" simply.
The warnings about variable permissions were not understandable enough to
be acted upon. The new pkglint does this better.
The languages that are allowed in USE_LANGUAGES are defined differently
in the pkgsrc infrastructure, thus the old parsing code does not work
anymore. Therefore all identifiers are allowed now.
Dependency patterns like 'package>=1.0<2.0' are no longer marked as
wrong.
The debatable warning about plural names is gone.
The order of variables in simple Makefiles is no longer checked. Some new
variables have been added in the meantime, and keeping the consistent
order is not of utmost importance to those pkgsrc developers who work
with pkglint4. They are experienced enough to know the rules.
Missing manual pages are no longer marked in the PLIST files. It's not
the job of pkgsrc to provide these files.
The warning about unnoticed errors in pipelines like 'find | xargs' has
been removed because the shell parser is unreliable. This is solved
better in the new pkglint.
The version number '4.193.0' had always been compared to the string
'pkglint4-4.193.0', which when interpreted as a version number, was:
(16, 11, 7, 12, 9, 14, 20, 4, 0, 193, 0, 0). This was always greater than
the (4, 0, 193, 0, 0).
Changes since 19.3.1 (only to the Python implementation):
* In Python packages, the variables LICENSE, HOMEPAGE and COMMENT are
filled from their counterparts in setup.py, no matter whether
the package uses setuptools or distutils.core.
* For buildlink3 dependencies, the variables BUILDLINK_DEPENDS and
BUILDLINK_API_DEPENDS are added to the package Makefile.
* The DESCR and PLIST files are only created if they are missing.
Existing files are not overwritten.
* Packages that contain .po files will set USE_PKGLOCALEDIR=yes.
Before, only packages that contained .mo or .gmo did that.
* More download URLs from SourceForge can be handled.
* SourceForge packages get their HOMEPAGE set correctly.
* When matching the URL against the MASTER_SITE_* variables, the
protocol is ignored. This allows https URLs to use the
MASTER_SITE_GNU, which still uses http.
* Python packages from GitHub only get their MASTER_SITES converted to
PyPI if they can be actually downloaded from there as well. This
check was missing before.