On Wed, 23 Sep 2009, Robert Goldman wrote:
Daniel Herring wrote:
On the CCL front, I have an old ccl-init.lisp that contained
;;; Hook ASDF into REQUIRE (defun asdf::module-provide-asdf (name) (handler-bind ((style-warning #'muffle-warning)) (let* ((asdf::*verbose-out* (make-broadcast-stream)) (system (asdf:find-system name nil))) (when system (asdf:operate 'asdf:load-op name) t)))) (pushnew 'asdf::module-provide-asdf *module-provider-functions*)
I forget where I found this. What do you think about putting (something like) this into mainline ASDF?
I'm out of town at a conference, and am not able to check this right now, but I would suggest we proceed with caution here. I use Allegro a lot and I know that they have already hooked require into their proprietary extensions. I don't have any idea what would happen if we were to jump in there.
I also don't know how portable the means are to inject ASDF into require. *MODULE-PROVIDER-FUNCTIONS* isn't ANSI CL, is it?
In mainline ASDF, the above code snippet would be conditioned to only activate on CCL. If an equivalent is possible for Allegro, it would supplement the built-in methods, not replace them.
It's always bothered me a little to use REQUIRE and PROVIDE anyway, on aesthetic grounds, since they are officially deprecated.
IMO, REQUIRE and PROVIDE are a better API than asdf:do-something. The former are conceptually extensible (but unfortunately abandoned by ANSI); well-defined replacements could allow defsystems like ASDF to peacefully coexist with each other.
Enjoy your conference, Daniel