Changes since 4.193.1:
Disabled unreliable check about possible typos in variable names. For
example, in pkgtools/url2pkg the variable TEST_DEPENDS was flagged even
though it is well-known.
Disabled unreliable check about unknown shell commands. For example, in
pkgtools/pkglint4 all commands from ${PREFIX} are ok, but were still
flagged.
Changes since 19.3.6:
Improved variable value alignment.
Fixed wrong warning about comment lines that were interpreted as shell
commands before.
Warn when the first category of a package doesn't correspond to the
path in the filesystem. This affects 603 packages.
No longer warn about deprecated BUILDLINK_TRANSFORM.${OPSYS}. The
deprecation warning was meant for BUILDLINK_TRANSFORM.${pkgbase}, but
since pkglint cannot distinguish between these, the warnings were wrong.
Some OS (e.g. Arch Linux) do not have hostname in their base set of
packages.
pkgsrc changes:
---------------
* Replace $(hostname) by $(uname -n).
Thanks jperkin@!
Changes since 19.3.5:
Improved indentation and alignment of multi-line variable assignments.
Improved indentation of multi-line shell commands.
Added warning for adding unquoted words to PKG_FAIL_REASON, which is a
list of messages, one per line.
Lines that start with tabs followed by a # are not shell commands, they
are comments. Bmake treats them in the same way.
Change the type of BROKEN to be a list of messages, instead of a single
message. This allows at least a bit of formatting in the error messages.
Changes since 19.3.4:
Variable uses in parentheses (such as $(VAR) instead of ${VAR}) are
treated the same. The ones in parentheses had less support before.
Improved the checks for options.mk files, adding support for options
that are defined using .for loops and those referring to other
variables.
Packages that set DISTFILES to an empty list no longer require a
distinfo file.
Patches whose filename contains the word CVE may patch more than one
target file.
Changes since 19.3.3:
In cases where the conditions for including buildlink3.mk files differ
between the package itself and its own buildlink3.mk file, explain how
to determine PKG_OPTIONS for dependencies.
Don't issue wrong warnings in options.mk files when the options are
handled in a .for loop.
Changes since 19.3.3:
The code that handles license names is the same for Python and Perl
modules.
Python packages that use distutils.extension can be handled. An example
package is devel/py-pysha3.
The DESCR file is filled from the package's README file.
The PLIST is generated with some comments providing further assistance.
Changes since 19.3.2:
The rationale for variables like BROKEN, GCC_REQD and for direct
inclusion of builtin.mk files may span multiple lines, and it may end
with an empty comment line.
Changes since 19.3.1:
* Pkglint no longer warns about a missing :Q modifier if there is also
a :D modifier, since the latter hides the original variable value
from the expression value.
* Variable names like .CURDIR are now allowed in the _VARGROUPS section.
* In dependency lines like "${_COOKIE.extract}:", pkglint no longer
warns about the unknown target. No matter whether this is a file name
or even a list of other targets, there's no chance for a typo here.
* If some dependencies are included conditionally, and the package
Makefile and buildlink3.mk disagree, and the conditions depend on
PKG_OPTIONS, pkglint outputs a helpful explanation.
* The check for including builtin.mk directly can be disabled by giving
a reason in a comment at the end of the line.
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.
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
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.
Start building FreeGLUT with GLUT compatibility on.
- GLUT's maintainance state is much worse than FreeGLUT's, with no
substanital commits since 2011.
- GLUT can no longer be consider a core component of Mesa or X11.
- Nobody except us seems to be using it...
Other vendors still shipping GLUT:
- GoboLinux, T2 SDE, PLD Linux
Revbump packages using GLUT or freeglut by default.
Be more tolerant of not finding PKGPATH, and basically attempt to skip
the package rather than treating it as a fatal error. (This was a
stray edit that I've been running with for a while.)
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.
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.
Changes since 5.7.20:
* PKG_OPTIONS that are handled using patterns are correctly identified.
* Simple R packages should follow the canonical variable order.
* Fixed some edge cases for aligning variable assignments.
* Improved detection of allowed values for USE_LANGUAGES.
maya:
detect meson
rillig:
refactor generation of Makefiles
rename local variables to match pkgsrc counterparts
make print_section simpler to use
run editor with line number only if supported
refactoring to make Makefile generation testable
make dist_subdir a local variable
initialize dist_subdir early
fix indentation
fix for p5-HTML-Quoted
fix parsing of mk/fetch/sites.mk