On 8/6/10 Aug 6 -11:49 AM, Robert Brown wrote:
On Fri, Aug 6, 2010 at 1:24 AM, Stelian Ionescu <sionescu@cddr.org mailto:sionescu@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
This example suggests a possible improvement to the API to avoid problems down the road.
I'd suggest we add a new exported function, ASDF:OUTPUT-FILE (singular), which has the same signature as ASDF:OUTPUT-FILES.
ASDF:OUTPUT-FILE should return the first element of the list returned by ASDF:OUTPUT-FILES, if this list is of length 1. If ASDF:OUTPUT-FILES returns a list of length != 1, ASDF:OUTPUT-FILE should raise an error.
This is for people who are writing some code that is correct under the assumption that there will be only a single output-file. I bet a lot of people call (first (asdf:output-files ...)), effectively just hoping that no one went around behind their backs and changed the number of output files.
best, r