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
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.
- lintpkgsrc: Set BSD_PKG_MK, and ensure .CURDIR is correct when running
with -D. Also remove an articulated lorry load of single quotes.
Many thanks to wiz who added PKGREVISION before I lamely managed to get
around to it :)
lintpkgsrc changes:
Add '-S' - List packages not in category 'SUBDIRS', rename experimental '-S'
to '-c'. Rework -h output to group by type. Fix poblem with handling certain
glob expressions for depends, clean up manpage.
odd numbers for 'development' versions...
lintpkgsrc:
Rename set_pkgsrcdir to parse_mk_conf, and also extract PACKAGES as well
as PKGSRCDIR. Update check_prebuilt_packages to handle the new package data
structure that allos mulitple versions of the same package to be valid
(for -current packages etc) - Missed in previous changes.
lintpkgsrc tried to break DEPENDS up into a packagename and version
section, so if the version did not match it could lookup the matching
packages and suggest valid versions. Unfortunately this excessive
helpfulness meant globs that cover both sides such as
'perl-{5.0*,5.6.0nb2,base-5.[6-9]*}' gave it a certain degree of
indigestion. It also didn't handle the '.if ${BINNAME} != common'
correctly in www/ns-plugger-common/Makefile.
I believe now that any outstanding -i or -d warnings are genuine...
Rework substitution handling to correctly deal with
${DISTNAME:S/-/-gnome-/:S/$/nb1/} and friends. I remember being
in something of a hurry when that code was fist written. Slight
cleanup to not completely blow up on DEPENDS such as
perl-{5.0*,5.6.0nb2,base-5.[6-9]*}, though we still do not
handle globbing that includes packagename and version.
Update to 2.22
Major changes: .include lines are honoured now, and FILESDIR, PATCHESDIR,
PKGDIR, SCRIPTSDIR, MD5_FILE, and PATCH_SUM_FILE aren't hardcoded anymore,
but the corresponding Makefile variables are used.
Adapt lintpkgsrc to the changes.
Step to 2.20 to mark the occasion.
Reviewed by hubertf.