On Sep 23, 2009, at 2:17 AM, Daniel Herring wrote: > 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?
Right now, there's code in the CCL trunk that uses ASDF to provide modules. http://trac.clozure.com/openmcl/changeset/12260 I would certainly prefer to see something like that in ASDF itself, rather than having code in CCL looking up symbols at run-time. If that is added to ASDF (which would be fine with me), I would like for the user to have some sort of way to tell ASDF not to provide modules. That could be via a function, a special variable, whatever. The user's init file could contain something like this: (require 'asdf) (asdf:provide-modules) ;or some better name ;; or else (setq asdf:*provide-modules* nil) ;or whatever If it does it automatically, I would prefer to see MODULE-PROVIDE-ASDF added to the end of CCL:*MODULE-PROVIDER-FUNCTIONS* rather than to the front. >> >> 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. > _______________________________________________ asdf-devel mailing list [email protected] http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
