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!