Our contrib build graph was already expressed in contrib/Makefile,
so ASDF wasn't doing anything to determine an execution schedule.
The new make-contrib.lisp script can parse '.asd' files more-or-less as-is,
removing ASDF from the critical path. With blocklist=sb-simd, this change
decreased the time in parallelized make-target-contrib to under 5 seconds
for me (down from >10) when run on as many cores as there are contrib dirs.
All defsystems are treated as if containing ":serial t", and there are
two invented keywords to bind/assign special variables around compilation.
We still install '.asd' files in $SBCL_HOME/contrib, and build uiop and asdf
so there should be no observable difference to users.
Most build systems distinguish a failed build from a failed test run,
but make.sh has a hard time doing that because of the conflation of the two.
The whole regression suite should be run if you want to ensure a good build,
so that would be a good time to test contribs. Not only that, with ASDF
we obscured a ton of style-warnings, we lost sandboxing of input files,
the ability to use --evaluator-mode, automatic generation and cleanup of
scratch pathnames, and automatic sb-sprof profiling.
So convert contrib tests to use WITH-TEST except some that gave me trouble.
This makes the output a ton more readable, and makes bisection on seldom-used
configurations quicker, not to mention that SB-RT is very lame anyway.
And there is quite literally less code to maintain now. Go figure.
Record filesystem information during the build in debug information
relative to SYS, not to /home/kevin/sbcl or equivalent.
... change to core code: tiny if ugly;
... change to warm load: only to refer to files as lpns rather
than physical namestrings;
... change to vanilla-modules: tiny;
... change to asdf modules: well, erm, less tiny. I'm not pleased
by the need to duplicate similar logic in every .asd, but
I think it's a similar symptom to the duplication of the
TEST-OP logic in many of them: the coupling between asdf
and the rest of the system is slightly wrong.
(At startup, SYS by default has translations that refer back to
the build-time values; distributors may wish to alter this for
their binaries, for instance by setting translations to
distribution-known values when dumping any final image)
Add one more contrib
... SB-MD5, based on Pierre Mai's highly-frobbed implementation of
RFC1321;
... a couple of cosmetic changes to rotate-byte to accommodate the
demands of code that wants to use it.