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.
The MASTER_SITE_GNU still uses http:// for downloading the distfiles.
Since typical URLs today use https://, ignore the protocol when matching
the given URL against the MASTER_SITE_* variables from mk/fetch/sites.mk.
The previous version of the code was largely work in progress. Now the code
has been grouped and sorted. A few bugs have been fixed on the way:
* If a PKGNAME had been added in the interactive editor session, it had
been overwritten before. This was because of a typo.
* The whole code has been grouped into classes, to clearly show the
dependencies between the parts.
* Generation of the initial Makefile has been split into smaller methods,
to make them individually testable and to reduce the scope of the local
variables.
* When creating a package in a directory pkgsrc/local/*, "local" is not
used as the primary category of the package.
* GNU configure and other configure scripts are also detected if they are
not placed directly in WRKSRC.
* Packages that contain *.po files will have USE_PKGLOCALEDIR=yes in the
package Makefile. Previously, only *.mo or *.gmo files triggered this
variable.
* When PKGNAME is based on DISTNAME, it is only written to the package
Makefile if there is an actual prefix or transformation.
The files DESCR and PLIST are no longer overwritten. They are only
created if they don't exist.
The GConf schemas detection had written the include line too often, once
for every schema file.
Changes since 19.3.0:
* Added an alternative url2pkg implementation in Python that will
eventually replace the Perl implementation. Reasons are:
* Perl is cumbersome to type with all the special characters
* Perl does not even have a Boolean type, after all the years
* Perl cannot check the number of arguments passed to subs
* Python does not suffer from the above limitations
* Python is available on as many platforms as Perl
* The two implementations will be kept in sync until all the features
have made it into the Python implementation, and everything has
automatic tests.
* Added the -v or --verbose command line option.
Changes since 5.7.24:
* There is no need to ask the dummy MAINTAINER from url2pkg whether
committing changes is ok.
* When autofixing a condition like !empty(PKGPATH:Mliteral), don't
generate unnecessary parentheses around ${PKGPATH} == literal.
* In a _VARGROUPS section, the public variables should be listed
before the private variables, to put important things first.
* When pkglint suggests to be run again with the -e, -fs or -F options,
repeat the whole command line, to allow for copy-and-paste.
* The checks for PKGPATH are fixed and enhanced. It is not a relative
path like in ../../category/package, but relative to the pkgsrc root.
* Unintended file globbing in sed commands such as s,.*,any, gets a
warning.
* MASTER_SITES should normally end with a slash, in rare cases an
equals sign or a colon are correct, too.
* Detect redundant directories in INSTALLATION_DIRS.
Changes since 2.37:
* Test dependencies in Perl MakeMaker modules are copied to the
package Makefile.
* Unknown dependencies in Perl MakeMaker modules no longer abort url2pkg
but instead are added as "# TODO" dependencies to the package Makefile.
* The license from Perl MakeMaker and Python modules is copied to the
package Makefile.
* The build dependencies, COMMENT and HOMEPAGE from Python setuptools
modules are copied to the package Makefile.
* No more "undefined $url" when running url2pkg in a directory that
already has a package Makefile and is extracted.
Changes since 2.36:
* Fixed generation of the package Makefile. Due to a typo, the line that
included bsd.pkg.mk had been omitted, making any generated package fail.
## Version 0.13.0 (2019-09-24)
* "pkgin upgrade" now upgrades all packages instead of only keep packages, and
essentially replaces "pkgin full-upgrade". Selective upgrades have always
been risky and provide no benefit, especially in light of refresh support.
"pkgin full-upgrade" is retained for compatibility but marked as deprecated.
* Refresh the local package repository when a forced update is requested, so
that a failed update can be repaired easily.
* Switch NetBSD default repository from ftp.netbsd.org to cdn.netbsd.org.
Changes since 5.7.23:
* Improved the _VARGROUPS check for ignored variables
* Removed wrong warnings for variable expressions like ${VAR:Dyes:Uno}
* Used correct terminology for the :Q modifier (it's not an operator)
Changes since 2.33:
* code cleanup in MakeMaker.pm
* don't create a PLIST for Perl packages
* allow Python dependencies from setup.py to use spaces around >=
* properly indented Python code according to PEP 8
* added mock for setuptools.find_package
* only try to migrate a package from GitHub to PyPI if it is really
a Python package on GitHub