The case for merging the minimakefile branch
Faré
fahree at gmail.com
Thu Jul 30 04:22:09 UTC 2015
What makes the minimakefile branch great:
* It provides a nicer test experience: the output is quieter and more
readable and makes it obvious which tests scripts succeeded or failed,
with a nicer summary at the end. All the verbose output is still
available in a clearly indicated log file.
* It has a nicer failure behavior: more detailed instructions are
printed when a test fails, and these instructions, being extracted
from the test command, are guaranteed to be in synch with the command,
whereas the shell script in the master branch often gets slightly out
of synch, and probably is out of synch right now.
* It has better-working release functions (for tarballing, making
debian packages, etc.) than the master branch. Actually, what's in
master currently fails, and I had to use minimakefile for the latest
release. A lot of the release scripts could be backported, since even
in master, the release is done by bin/asdf-builder which is already a
Lisp script — but that would be work.
* It is much easier to write and maintain than the shell scripts it
replaces; iterating over lists, filtering them, building lists of
files, ensuring that the list of files used to bootstrap asdf with
make is identical to the list used to bootstrap asdf with asdf, etc.
Higher-order functions with good scoping discipline beat shell
functions any day. run-tests.sh is an unkempt horror, and so are all
the little bits of Makefile magic.
* It removes any dependency on perl, sed, dirname, etc. Actually, it
removes dependency on any Unix utility, potentially even make, so the
tests could run on Windows (with make and a Unix shell, a new
./make.bat file to start asdf-tools might be required, though; on
Unix, a ./make.sh could replace make).
* You can run and debug all the ASDF tests and all the ASDF release
functions in subprocesses from the SLIME REPL instead of running them
from the shell. Particularly useful when debugging them with tracing,
stack inspection, etc.
* It has no change to asdf itself, only to the build, test and release
infrastructure.
Previously valid objections that have been addressed:
* Sure, Lisp scripting is a new thing, but even in master, that's what
the release script bin/asdf-builder is, with the same dependency on
inferior-shell. What the minimakefile does is generalize this
mechanism for tests and for all the things that the Makefile does.
* minimakefile uses many Lisp libraries as dependencies. But they have
all been added as git submodule's already, and so should actually
reduce the dependency on things outside source control, as opposed to
all the using utilities used in master (including sed and perl --
ouch).
* Sure, our Lisp dependencies themselves are moving targets and might
not have completely stable APIs, but by using git submodule, we are
protected from any future breakage — we can always keep versions that
are known to work for us (as they currently are), or revert to them if
we try to upgrade and fail.
* Sure this branch is bigger: git diff --stat master minimakefile says
there are 1455 insertions, 1199 deletions, which means the
asdf-specific code is 21% bigger — but it is also vastly more
documented that the Lisp and shell scripts it replaces, and does more
things. Actually, if
* Sure, writing it from scratch and dealing with the novelty of it
would be hard, but it's been done already, the kinks have been ironed
out, a few libraries have been spun off of it, and it's even running
on Windows.
Additionally, merging to master will save me the trouble of
maintaining the branch.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
One advantage of living abroad is that there is no pretense whatsoever
to represent me as I'm being taxed. TAXATION WITHOUT REPRESENTATION!
More information about the asdf-devel
mailing list