- Added some variable types.
- For unknown variables, the type is guessed from the variable name.
- Added more checks for relative pathnames.
- Improved the shell parser once more.
When using non-native X11, xpkgwedge could be installed before imake
and host.def en up with just the xpkgwedge.def include. This means
that ProjectRoot as set by xorg's host.def is not used and wrong
path names are used. This run time dependency is the easiest way to
ensure proper order, but isn't perfect. Just providing a fixed host.def
and a secondary include file for Lesstif to modify breaks with
USE_XPKGWEDGE=NO, so keep the old approach.
Discussed with jlam@
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.
obsolete synonym for the pipe operator "|", so you must protect it with
quotes''. (Kernighan/Pike, The UNIX Programming Environment, 1984.)
- $@ is another well-known shell variable.
- All substitution arguments to ${SED} and ${PAX} should be quoted whether
they contain special characters or not.
are only shown in -Wdebug mode, as the diagnostic messages are too
cryptic.
- Added detection for the $(...) replacement for backticks, as the Solaris
/bin/sh cannot handle them.
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.
remove the quoting from the definitions in the Makefiles.
- When checking with -Wall, print warnings about possibly misquoted
variables in the various states of the shell word parser.
Fix libkver support for pkg_comp's build, auto and install targets,
Reported broken and fix tested by salo@.
Also ensure libkver is built, if needed, even before digest.
Approved by jmmv@
- if you have > db1 the probably you have db_185.h which means
that dbopen is really __db185_open, and we'll prefer that.
- else if you have db1, then you have db1/db.h and dbopen
- else if you have db.h, then this is either the one from db1 and it will
work with -ldb having dbopen, or it will not.
Note that the compatibility option on __db185_open() will actually not create
or update db1.85/1.86 files, but it will use the current format of the db
library. This compatibility layer is source code only.
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.
- Added warnings for imperfect quoting style inside double quotes.
- All shell commands are checked for correct quoting of make(1) variables
in shell assignments like --prefix=${PREFIX:Q} and TMPDIR=${WRKSRC:Q}.
Changes since 4.49:
- Added checks for shell commands whose exitcodes are ignored.
- Added checks for CFLAGS, CPPFLAGS and CXXFLAGS.
- Improved diagnostics.
- Various bugfixes.
Changes to lintpkgsrc:
- Avoided double occurrence of pkg_install.
- Rewrote the message formatting.
- The indentation of explanations is changed to be always a tabulator
character instead of depending on the last message.
- In verbose mode, statistics about the frequency of the individual
messages are printed before exiting.
- The command line option -Wextra enables additional warnings that are
not enabled by default because I have been told that Alistair would kill
me for them. :)
- Improved the shell tokenizer by recognizing parentheses.
- Improved checking of pkgsrc-internal files (mostly in pkgsrc/mk).
- Added a (trivial) spellchecker.
- Added checks for shell code that ignores the exitcode of commands.
- Added checks for CFLAGS, CPPFLAGS and CXXFLAGS.
- Avoided false positive warnings for absolute filenames in AWK code.
- Added checks for .for variables.
- Pkglint can check single files in directories that are three levels deep.
This is mostly useful for checking patch files.
Changes since 4.48:
- Added a check for .include lines in all Makefiles and *.mk files to make
sure that only existant files are referenced and that pkgsrc packages do
not contain references to packages in pkgsrc-wip.
- Extended the --autofix option to all Makefile* and *.mk files. Before, only the
package Makefile could be fixed.
- Rewrote the detection of direct use of tool names.
- Append-only lists may be initialized using the "?=" operator.
- The typical form of ShellWords for CONFIGURE_ARGS, --foo=${FOODIR}, is checked for
quoting errors.
- All PKG_OPTIONs are checked whether they are documented in mk/defaults/\
options.description.
- Many small fixes and improvements.
a "$" in the modifier part, as long as they don't contain references to
other variables.
- Removed checkline_mk_direct_tool_use().
- Renamed checkline_mk_shellcmd() to checkline_mk_shelltext(). This sub-
routine is also used for checking the right hand side of variable assign-
ments.
- Renamed direct_tools_ok_vars to non_shellcode_vars, which is more
appropriate. Added some variables to it that produced false positive
warnings.
checklines_package_Makefile(). Then, renamed
checklines_package_Makefile() to checklines_mk(), as it not only
applies to the main package Makefile.
- Fixed the regular expression for detecting ambiguous variables like
$f, which could mean either ${f} or $$f.
- When checking for deprecated variables, also mention the ones that
don't have modifiers.
- Moved the whole complicated code from checklines_package_Makefile() to
checkline_mk_shellcmd() and checkline_mk_varassign().
- Reenabled the -Wdirectcmd options by default.
- Added specialized subroutines for checking a single line.
- Removed checklines_Makefile_varuse().
- Removed checklines_direct_tools(), which has been replaced by the
specialized routines mentioned above.