Juan Jose Garcia-Ripoll juanjose.garciaripoll@googlemail.com writes:
On Wed, Sep 22, 2010 at 4:35 PM, Robert Goldman rpgoldman@sift.info wrote:
On 9/22/10 Sep 22 -5:26 AM, Juan Jose Garcia-Ripoll wrote: > * The bootstrapping code can be different for a shipped asdf > (one that comes with the implementation) and for the asdf that > is loaded by users. This can be activated by an > implementation by choosing whether to use defpackage.lisp or > something else. Doing this with the monolithic asfd.lisp is a > hell. Can you explain this? I don't really get it. Presumably any implementation that wants to distribute ASDF can add its own "after hooks" in its own private copy. I'm clearly missing something here...
I am not only talking about hooks but about to-come features, such as dumping "executables", or creating monolithic fasl (a fasl made of multiple components). This can be done using separate files for each implementation, much like swank does, and requires implementation-dependent code which would be a nightmare to code via #+/#-. Same thing goes for the execution of commands via run-program or the like, or handling of configuration files -- to which implementations might wish to hook.
Perhaps a tool like shar, but preserving the loadability of the lisp sources would be what you need to be able to work efficiently with the asdf.lisp source:
http://git.informatimago.com/viewgit/index.php?a=viewblob&p=public/bin&a...
asdf.lisp could still be the main source, under DCVS and distributed as a single file, but to hack on it you could easily split it out in its components:
mkdir asdf cd asdf clar ../asdf.lisp emacs compile-op.lisp asdf-ecl.lisp clar ../asdf.lisp *.lisp
No. Why? I mean, the separate components are bundled into a single asdf.lisp and this process is automated (make -f GNUmakefile asdf.lisp). There is no new testing burden. I am just advocating for some common sense in the ASDF codebase, organizing it in a readable and separated way.
This is an alternative, indeed.
asdf.lisp: $(ASDF_SOURCES) clar asdf.lisp $(ASDF_SOURCES)