[asdf-devel] ASDF 2 questions
Robert Goldman
rpgoldman at sift.info
Sun Oct 10 17:53:55 UTC 2010
On 9/30/10 Sep 30 -1:05 PM, Didier Verna wrote:
> Faré <fahree at gmail.com> wrote:
>
>>> 5/ Finally, I would like confirmation that ASDF now handles outdated
>>> fasl's correctly, and we don't need to do the black magick
>>> ourselves.
>>>
>> I'm not sure what you mean, so I'd say probably not. If you have
>> "black magick" that you think should be part of ASDF, please submit it
>> here, and/or as an ASDF bug on launchpad.
>
> Sorry for being too vague. For ASDF 1, I had a plug to automatically
> recompile outdated fasls (I probably found it on the internet years ago;
> don't remember):
>
> (defmethod asdf:perform :around
> ((o asdf:load-op) (c asdf:cl-source-file))
> (handler-case (call-next-method o c)
> (#+sbcl sb-ext:invalid-fasl
> #+cmu ext:invalid-fasl
> #+allegro excl::file-incompatible-fasl-error
> #+lispworks conditions:fasl-error
> #-(or sbcl cmu allegro lispworks) error
> ()
> (asdf:perform (make-instance 'asdf:compile-op) c)
> (call-next-method))))
>
> ... and I was wondering if ASDF 2 did something like this on its own.
I'd love to see a version of this patch installed in ASDF2.
In its present form it seems a little yucky. Ideally, it seems to me,
the OPERATION-DONE-P test for the COMPILE-OP should fail on an
incompatible fasl. That's a lot cleaner than the solution that involves
a direct outside call to PERFORM, which really breaches the API. This
leads to a potential for error. For example, I'm pretty sure that the
the ASDF:COMPILE-OP instance here is not built correctly --- it should
be inheriting its initargs from the top-level operation instance, which
is the way things are normally done in ASDF.
That said, I do not know how to probe a file to test whether it has a
compatible FASL type, aside from trying to load it. Anyone know if this
is possible?
More information about the asdf-devel
mailing list