that have multiple versions (eg, apache or emacs), so that the number
of packages loaded when generating the database will match the number
loaded from the database afterwards.
Curiously, reorganizing the code a little makes the stored database
about 20-25% smaller.
Old stored databases are still completely supported.
Jump to version 3.53.
Makefile variable parsing and lets "VARNAME=" override "VARNAME?="
definitions. This should also fix the current bogus warnings about
distinfo in the weekly pkgsrc output.
and X11BASE ("/usr/X11R6"), which, while they might not be right for
*every* system, are certainly more right than UNDEFINED.
Give lang/python/pyversion.mk a little help by stuffing the material
from PYTHON_VERSIONS_ACCEPTED into the two places it expects it (since
lintpkgsrc doesn't do .for loops), add support for the ${FOO:S/foo/&/}
construction, and tweak the .if handling for && and || bits.
This has the following effect on the -g output (as a simple measure):
% grep -c UNDEFINED before after
before:58
after:1
Jump to 3.47.
"database" that lintpkgsrc can use in lieu of scanning all the pkgsrc
Makefiles.
This has several nice effects, chiefly:
(1) Using any of -B, -O, -R, -S, -V, -d, -g, -i, -p, or -u, are now
*much* faster since reading the "database" takes at most 3 seconds on
my laptop, whereas reading all the Makefiles takes at least 3 minutes.
(2) One can now check for out-of-date packages on machines which do
not have an expanded pkgsrc tree simply by copying the "database"
over. Note that the database will inherently have some dependencies
on the environment of machine where it is generated (eg, mk.conf
settings, architecture type, etc).
Reviewed by the wiz.
- replace occurrences of "make" with @MAKE@
- add @MAKE@ to the list of variables to get sod (I never learned
properly how to conjugate "sed")
- warn about NO_PATCH, since it hinders more than it helps
- remove NO_PATCH from Makefile to quell new pkglint warning
punt and invoke "make show-vars VARNAMES=PKGNAME" and get make to tell
us.
This addresses the issue of:
Cannot extract digest-UNDEFINED version (/usr/pkgsrc/pkgtools/digest/Makefile)
Cannot extract pkg_install-UNDEFINED version (/usr/pkgsrc/pkgtools/pkg_install/Makefile)
Unknown package: 'digest' version 20010807
Unknown package: 'pkg_install' version 20021123
Patch reviewed by the wiz.
pkgsrc, require the new version instead of the one from pkgsrc.
This means there will be no more messages that look like
Version mismatch: 'pkg_install' 20020827 vs 20020723
Change reviewed by the wiz. :)
lintpkgsrc - if we find one valid match in a DEPENDS entry, don't
bitch about any others expanding to a non-existant package:
Example: postgresql-{6.5.3*,7.0*,lib-*}
With this lintpkgsrc -d now outputs six lines on current pkgsrc.
Note to self: When you use 'cvs c^[P' the second time in an
evening for the same package... its enough.
lintpkgsrc.pl:
Finally we parse {x,y,z} constructs in DEPENDS, plus handle a
few more make conditionals. Now most of the lintpkgsrc -d output
is related to versions of software no longer in pkgsrc...
Does the fun ever start?
Significant rototill of lintpkgsrc.pl, converting to a rather twisted
hierarchy of PkgVer Pkgs and PkgList objects with assorted arbitrary
methods, all based on existing usage rather than ideal design.
Actual fixes found along the way:
- Handle := in makefiles
- Better handle parenthesis and "" in make conditionals
- parse bsd.pkg.mk to extract _REQD values (hence the previous line)
- Add missing 'key' in hash iteration
- Do not repeat includes (evolution longer depends on jpeg 45 times)
Still have to handle such delightful constructs as
DEPENDS += {qt2-designer>=2.2.4,qt2-designer-kde>=2.3.1nb1} in a sane way
references of the pkglint package.
_PKGSRCDIR is an internal definition in bsd.pkg.mk, and a few packages
which would like to refer to other packages in the build tree. It should
not be set by users, but neither should it stop a user from building a
package if it is defined, so make it obvious that this is the case.
but "lintpkgsrc -d" output reduced from >7000 lines to ~700.
First part of diff fixes most ruby* complaints, second part the general
"Unknown package: 'UNDEFINED' version missing" message.