appear in an assignment of its own", since it had been misunderstood at
least once. Also, since the explanation is usually several lines long,
it does not hurt to add two extra empty lines to separate the
explanation from the actual warning.
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.
for lists of something, this can lead to unexpected behavior. Currently,
only the variables BUILDLINK_DEPENDS, BUILDLINK_PACKAGES and PKG_OPTIONS
may be looked at during load time.
This warning reveals the bad practice to "patch" CONFIGURE_ARGS at load
time, for example:
> CONFIGURE_ARGS:= ${CONFIGURE_ARGS:S/--disable-esd/--enable-esd/}
WARN: audio/bmp-esound/Makefile:14: CONFIGURE_ARGS should not be
evaluated at load time.
into a single subroutine, checkline_mk_varuse, which replaces the
various ad-hoc checks. Added the class PkgLint::VarUseContext that tries
to model the context in which a make(1) variable can appear. The checks
are much better now than before, but there's still work to do. Added a
new type FileMode for file permissions.
Currently no warnings are printed for untyped variables (that is,
user-defined and not following the common naming schemes). This includes
the iteration variables of .for loops. Since many of the warnings have
been overly strict, this is not a big loss.
deprecated.
- CONFLICT is just a spelling mistake and therefore should not appear
in the list of deprecated variables.
- Made handling of parameterized variables more uniform.
it will live with other "check" targets run after package installation.
Get rid of SHLIB_HANDLING, whose meaning had mutated over the years
from one thing to another. Currently, it is used to basically note
whether the system's "ldd" command can be usefully run on the package's
binaries and libraries. Rename this variable to CHECK_SHLIBS_SUPPORTED
for more clarity.
CHECK_SHLIBS is now a variable set exclusively by the user in /etc/mk.conf
to note whether the check for missing run-time search paths is performed
after a package is installed. It defaults to "no" unless PKG_DEVELOPER
is set.
data types and permissions.
- Changed the way that permissions are determined a bit, so that
unspecified permissions can be detected.
- Renamed -Wacl to -Wperm.
- When no applicable permissions are found, "?" is returned.
- When checking for unused variables, parameterized variables don't have to
be matched exactly but only by basename.
- Added an explanation for the permissions warning.
time, the !empty(BUILDLINK_DEPTH:M+) lines confused me, so I changed
them to be ${BUILDLINK_DEPTH} == "+", which has the same effect. Changed
the version number to 3.12.
- Renamed explain() to explain_warning() and added explain_info().
- Added some code to distinguish FOO from FOO.* in the makevars.map file.
- Allow an alternative form of checking the inclusion depth in
buildlink3.mk files.
- Added checks for deprecated and nonexistent licenses. (suggested by gdt)
- Added detection for /foo/s/bar/baz/ sed command that appears without a
leading "-e" in a SedCommands variable. (suggested by wiz)