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}.
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.
- lintpkgsrc.pl - less brokenly parse the contents of make conditionals
like "if empty(FOO)". Specifically handle the case where FOO
contains a :M modifier or a variable expansion.
Fixes 'lintpkgsrc -r' incorrectly deleting ruby18-base-1.8.6nb1 each time
Mmm... lintpkgsrc.pl needs to die
- 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
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.
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.
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.
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.
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.
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".
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.