[cffi-devel] CFFI-GROVEL ASDF integration
Faré
fahree at gmail.com
Sat Dec 8 04:23:26 UTC 2012
On Fri, Dec 7, 2012 at 7:37 PM, Mark Cox <markcox80 at gmail.com> wrote:
>> Right, it seems that for some reason ASDF is not picking up
>> basix-unixint's compile-time dependency on packages.lisp. Does that
>> seem like a plausible (if incomplete) explanation?
>
> Yes you are correct. The problem can be seen with ASDF::TRAVERSE returning the wrong plan:
>
>> (asdf::traverse (make-instance 'asdf:load-op) (asdf:find-system "osicat"))
>
> ((#<ASDF:LOAD-OP NIL {100793C8D3}>
> . #<ASDF:CL-SOURCE-FILE "osicat" "osicat-sys" "osicat-sys">)
> (#<ASDF:LOAD-OP NIL {100793C8D3}> . #<ASDF:MODULE "osicat" "osicat-sys">)
> (#<CFFI-GROVEL::PROCESS-OP NIL {10076A7263}>
> . #<CFFI-GROVEL:GROVEL-FILE "osicat" "posix" "basic-unixint">)
> (#<ASDF:LOAD-OP NIL {10077E2133}>
> . #<ASDF:CL-SOURCE-FILE "osicat" "posix" "packages">)
> (#<ASDF:COMPILE-OP NIL {1007609953}>
> . #<CFFI-GROVEL:GROVEL-FILE "osicat" "posix" "basic-unixint">)
> ....
>
> For some reason there exists a PROCESS-OP on "basic-unixint" before the LOAD-OP on "packages".
>
Did you define a method on component-depends-on, so that
process-op will depend on the load-op?
Something like that might do:
(defmethod component-depends-on ((o process-op) (c grovel-file))
`((load-op ,@(component-load-dependencies c))
,@(call-next-method)))
You might even skip the call-next-method.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Don't have good ideas if you aren't willing to be responsible for them.
— Alan Perlis
More information about the cffi-devel
mailing list