[asdf-devel] create temporary Lisp files in fasl directory

Robert Brown robert.brown at gmail.com
Fri Aug 6 16:49:26 UTC 2010

On Fri, Aug 6, 2010 at 1:24 AM, Stelian Ionescu <sionescu at cddr.org> wrote:
> Try something like this:
> (defmethod asdf:perform ((op asdf:compile-op) (c protobuf-source-file))
>  (let* ((output-defaults (pathname (car (asdf:output-files op c))))
>         (generated-source-file (make-pathname :name (pathname-name
> (asdf:component-pathname c))
>                                               :type "lisp"
>                                               :defaults output-defaults)))
>    ))
> You need to call OUTPUT-FILES which will apply the output translations
> you've configured

Your suggestion does work, but it's a bit mysterious.  Note that you didn't
redefine INPUT-FILES for components of type PROTOBUF-SOURCE-FILE
and the suggestion involves copying PERFORM code from asdf.lisp into my
protobuf.asd file.

Also, your change appears to just affect compilation, but due to ASDF's
handling of so called "self dependencies" (at least I think this is the
your change also magically makes LOAD-OP function correctly.

I agree with Robert Goldman that it would be nice to pin down the semantics
of INPUT-FILES and OUTPUT-FILES.  Maybe the self-dependency code
can be eliminated or made more general.  Right now I think it's a special
case just used to make LOAD-OP capable of doing two things,
compiling and then loading the compiled products.

In any case, thanks for the suggestion.  It does indeed solve my problem.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20100806/058e754f/attachment.html>

More information about the asdf-devel mailing list