The actual fix as been done by "pkglint -F */*/buildlink3.mk", and was
reviewed manually.
There are some .include lines that still are indented with zero spaces
although the surrounding .if is indented. This is existing practice.
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
Mozilla's SpiderMonkey. I wish I knew about this sooner! I've tried
this out with elinks, and the javsascript support seems more reliable.
Thanks, OSSP! I vote for killing spidermonkey once we verify all packages
using it build with this.
Local modifications:
--Only build fdlibm into libjs if necessary. This follows
in the spirit of lang/spidermonkey, though someone with more
knowledge of this probably will want to change the list of
platforms in the Makefile.
--Following the aforementioned change, link the library against
-lm (and list -lm in js-config, etc.) only if required.
--Use pkgsrc-provided installation tools instead of shtool.
--Apply fix for __VA_COPY_USE_CPP.
Blurb (DESCR):
OSSP js is a stand-alone distribution of the JavaScript (JS)
programming language reference implementation from Mozilla -- aka
"JSRef" or "SpiderMonkey". This distribution provides a smart,
stand-alone and portable distribution of Mozilla JavaScript through a
GNU autotools-based build environment. Additionally,
the C API in "libjs" contains both the JavaScript engine and the
required Sun math library ("fdlibm") and with all internal symbols
carefully protected under the "js" namespace. Finally, a js-config(1)
utility and a pkg-config(1) specification is provided to allow
applications to easily build with the JavaScript C API.
OSSP js was created because for OSSP and similar pedantic C coding
projects a smart, stand-alone, portable, clean, powerful and
robust scripting language engine is required. JavaScript is a
great programming language and Mozilla JavaScript "SpiderMonkey"
definitely is an acceptable clean, powerful and robust implementation.
Unfortunately there is just a stand-alone distribution released from
time to time by Mozilla and it is far away from really being smart,
stand-alone and portable. OSSP js combines the best from two worlds:
the 1:1 repackaged JavaScript code base from Mozilla with the GNU
autotools-based build environment as always used by OSSP. Additionally,
this package provides stdio-based file object support and does not depend
upon the Mozilla NSPR library.