[asdf-devel] updating ccl's bundled asdf
R. Matthew Emerson
rme at clozure.com
Wed Sep 23 16:05:56 UTC 2009
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.
>
More information about the asdf-devel
mailing list