Changes since 2.0:
- Made the dependency detection for Perl modules work again. The code
does not assume to be run in a special directory anymore.
- Perl modules that use the prompt() function to query the user
interactively can be handled. All questions are assumed to be answered
by just pressing <enter>.
- Made url2pkg more robust when interpreting the output of MakeMaker.pm.
Many Perl modules write additional things to stdout during the
generation of the Makefile.
- The language for the *.f files is "fortran", not "f".
- Fixed the regular expression for prdownloads.sourceforge.net links, so
that the distfile name is properly extracted.
- 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
Rewrote url2pkg in Perl, enhancing it in several ways:
- Packages for Perl modules using MakeMaker can be generated almost
completely. The only thing that usually needs to be filled out after
running url2pkg is the DESCR file.
- USE_LANGUAGES is filled automatically.
- After generating the initial Makefile, the editor is run to let the
user edit the Makefile. These changes are preserved as much as
possible. (This had not been the case before.)
- Extending url2pkg has been made much easier by splitting the tasks that
do the "magic" into small subroutines and by adding a detailed
description of what these routines are supposed to do.
Set the version number to 2.0.
This avoids problem where the plist-man.awk script sees the empty
value for MANINSTALL and sets it to the default of 'maninstall catinstall'.
Fixes install/packaging problems on solaris.
Since many package fail to build in exotic environments because of that,
it is worth having this check even though we are currently in a freeze.
Improved the detection of absolute pathnames once more.
took about 300 MB of memory. Now it takes 27 MB, which is still much,
but quite better.
The cause for the memory leak was that I wrote
my ($result) = @_;
instead of
my ($result) = ($1);
after successfully matching a regular expression. That way, pkglint
created some cyclic data structures, and since Perl does not have
garbage collection, these didn't get cleaned up.
Added some checks so that this cannot easily happen again. Also fixed
some other instances where @_ appeared in the source code.
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.
- Sort dependencies properly so that, e.g., 2.10 is considered newer than 2.8.
This is still a hack and might fail in some cases, but is hopefully much
better than before.
reasonably well. In the first pass, all variables that are added to
BUILD_DEFS are collected, and in the second pass it is checked whether
any remaining user-defined variables are used but have not been added to
BUILD_DEFS. This way, it does not matter in which order the variables
appear in the files.
tiger instead. Also kill bogus NULL pointer handling in both algorithms:
passing null pointers as buffers (when len != 0) or context is a serious
programming error and should result in a segfault. Bump version to
20060826. OK agc@
shell parser to correctly handle ${WRKSRC.${d}}, which appears for
example in geography/epsg.
Avoided an internal fatal error for files that contain RCS conflicts.
- Intoduce fatal_later() and fatal_later_check() and use them to clean
up reporting unavailable package dependencies
- Remove unused references to opt_S (reported by bad@)
- Fix manpage reference DEPENDS_TARGET -> UPDATE_TARGET (reported by bad@)
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.
which helps for some Perl modules to get the correct package name, which
in turn influences whether the update requests from doc/TODO can be
shown or not.
Suggested by wiz.
some of the infrastructure files. This also allows checking the
Makefiles in htdocs.
Added GAMEOWN, GAMEGRP and GAMEDIRMODE to the list of user-defined
variables that don't need to be mentioned in BUILD_DEFS.
When looking for absolute pathnames in "other" files, don't require them
to have a second component. This produces warnings for /var and /tmp,
which had been hidden before.
When strings that are likely to be absolute pathnames appear in the form
$(VARIABLE)/bin or "+ '/bin'", don't print a warning. The latter is used
when "+" is a string concatenation operator.
The direct use of tools is only suggested in targets named
{pre,do,post}-*, since other ones may be invoked without the tool
directory being in the PATH.
saved in the line as extra fields.
When checking for absolute pathnames in "other" files, allow the form
${variable}/bin, as seen in www/apache2/patches/patch-ad. Noticed by
Matthias Scheler.
-D... options.
Removed the check for the :Q operator in C preprocessor macro
definitions, since we generally don't expect directory names with
embedded special characters in pkgsrc.
In buildlink3.mk files, the only BUILDLINK_* variables that may be set
are those of the current package.
The shell variables $@ and $? are now recognized. Since the shell parser
is able to parse the complete code in all pkgsrc packages, make parse
errors show in the normal pkglint output. These errors had been hidden
before.
Fixed the regular expressions in the shell parser to only match at the
beginning of the string. That way, when the shell command contains $$@,
the $@ is not removed, leaving a single $ behind.
Added some code to deal with the different parsing styles of bmake in
variable assignments and shell commands. For that, the PkgLint::Line
class has been extended to contain arbitrary additional data. This will
also allow to reduce the number of duplicate warnings later.
The assert() procedure has got a second parameter, the message to be
printed.
Variable assignment lines start start with a space character (\u0020)
are now recognized, but no warning is printed.
In pathnames and pathmasks, the '#' character is allowed, since some
packages need to remove the .#* files from CVS before installing.
- Resolve PR/31909 - use tr rather than fmt to avoid issue on Solaris
- Resolve PR/33370 - always show fatal messages to STDERR
- Resolve PR/32326 - Correctly extract PKG_DBDIR
Also, when -v is used display the state of all extracted variables at the
start of the run
simple commands (for example "cp") should be used, since the tools
framework provides wrappers for them. This applies only to the cases
where the tool variables appears as the first word in a shell command.
When doing substitutions in files that are later installed, the full
name should still be used.
-- instead, we just check "pkg_info", which should exist on all pkgsrc
platforms.
XXX Note that this may need to change when we later support other package
XXX system flavors.
Back out revision 1.79 of pkgtools/x11-links/Makefile which was only to
work around needing a C compiler for shlib-type to work.
'make package' (make; make package works): without this SHLIB_TYPE
is set to 'none' while doing 'make package', resulting in
mk/plist/shlib-none.awk being used hence missing PLIST entries.
XXX I suppose this may not really be the right fix (barrier
problem?) but for the time being 'pkg_comp makeroot' succeed
XXX What is this 'foo' target?
it for plurals support, but that is already handled correctly (FSVO
"correctly") by the pkgsrc/mk/tools/msgfmt.sh script.
Also remove _USE_GNU_GETTEXT definitions from pkgsrc/mk/platform/*.mk
files as that value has been unused by pkgsrc for quite some time
(going back several branches).
Fix uninitialized variable which was causing pkg_add -u to randomly
dump core. This may fix PR pkg/30292.
Also bump the pkgsrc PKGTOOLS_VERSION to 20060720.
had actually been ignoring LTCONFIG_OVERRIDE anyway and just using
the default LIBTOOL_OVERRIDE to replace libtool scripts in packages.
This just formalizes the fact that LTCONFIG_OVERRIDE is not used
meaningfully by pkgsrc.
recent buildlink3 check correct.
A buildlink3 file that appears in the package but not in the
buildlink3.mk file is not worth a warning, since there are legitimate
reasons for doing this, which is also documented in the buildlink3
documentation.
Makefile and the buildlink3.mk file differ, as this is most likely a bug
that has been introduced somewhere in the past when updating a package.
Suggested by Thomas Klausner.
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.
files from the bootstrap kit. This package is used during bootstrap to
properly register the installed *.mk files.
The bootstrap bmake(1) utility uses some customised .mk files in order
to pre-define certain definitions and targets, which guide the build
process. This package provides those *.mk files for the bmake(1)
utility.
the bootstrap process and which may be needed by pkg_install. This
is distinct from the net/tnftp package that is now a "normal" package.
Modify the bootstrap script to use pkgtools/tnftp instead, and clean up
some of the registration code.
into ${PKG_TOOLS_BIN}. This package is used in the case where pax is
a requirement for the pkg_install tools. The archivers/pax package is
now a normal package with no special PKG_PRESERVE flags set.
filenames and pathnames may appear in .for loops. (Of course, this only
works for "nice" filenames, but the amount of false positive warnings would
just be too high.)
Added another warning for dependency patterns like 2.3*, which are
likely to be wrong: They match 2.3, 2.3nb4 and 2.30, but not 2.20, which
lies in between them.
- Shell commands in Makefiles may have leading white-space before the
[@-]*.
- Replaced the obsolete MASTER_SITES_SUBDIR with DIST_SUBDIR in the
variable order check. The variables aren't the same, but the position
is fine.
handled automatically by pkgsrc.
- Rewrote the PLIST parser a little bit, which revealed that PLIST
directives like @dirrm may be prefixed with ${FOR_...} or
${NOTFOR_...}.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
- Added the -Cglobal option for inter-package checks (disabled by
default) that may consume a lot of memory.
- Adjusted pkglint to another change in the TOOLS framework which had
not been detected automatically.
- MD5 checksums are no longer deprecated, they are now obsolete.
The PKGDBDIR and PKGDBDIR.refcount directories are excluded from the
list of files to check, because for unprivileged pkgsrc, they are
subdirectories of PKGSRCDIR.
Removed the dependency on libnbcompat for NetBSD.
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.