[asdf-devel] ASDF traverse changed behavior?

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Wed Mar 17 23:47:56 UTC 2010


On Thu, Mar 18, 2010 at 12:25 AM, Juan Jose Garcia-Ripoll <
juanjose.garciaripoll at googlemail.com> wrote:

> On Thu, Mar 18, 2010 at 12:21 AM, Juan Jose Garcia-Ripoll <
> juanjose.garciaripoll at googlemail.com> wrote:
>
>> Narrowing down the problem, TRAVERSE now adds the LIB-OP operation to all
>> components of a system. I added a method
>>
>> (defmethod perform ((operation lib-op) (c component))
>>   nil)
>>
>> but this method gets overriden by a more specific one which is provided by
>> asdf.lisp
>>
>> (defmethod perform ((operation operation) (c source-file))
>>   (sysdef-error
>>    "~@<required method PERFORM not implemented ~
>>     for operation ~A, component ~A~@:>"
>>    (class-of operation) (class-of c)))
>>
>> This method was the cause of all problems.
>>
>
> There is obviously something awry going on here because now I realize that
> this is not more specific, but less -- lib-op <= operation Anyway, I will
> leave this for tomorrow as I am obviously not fit for this anymore.
>

This time I leave for bed, but while looking at the screen I think I found
the problem: packages. The two symbols, PERFORM in one and in another file
are different. I think this has to do with the way symbols are interned /
uninterned during the compilation phase itself. A symptom is that loading
the sources *.lisp everything works just fine. Another one is that the
debugger prints the offending method as #:PERFORM

Juanjo

-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://tream.dreamhosters.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20100318/6dfa2c2f/attachment.html>


More information about the asdf-devel mailing list