[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