A CFFI -ASDF integration bug

Ilya Perminov iperminov at gmail.com
Tue Aug 4 20:39:23 UTC 2020


On Tue, Aug 4, 2020 at 12:51 PM Robert Goldman <rpgoldman at sift.info> wrote:

> I don't claim to understand this process, but wouldn't it be possible for you to make your own input-files :around method for gather-operation that would collect the outputs from the process-op's and add them to what you want?

I think it is a reasonable option, at least I like it more than what
CFFI does now. input-files for gather-operation is defined on SYSTEM,
so the around method will have to fetch all WRAPPER-FILEs from a
system.
gather-type and probably some other functions, that the around method
will need, are not exported from ASDF though.

> That said, I can think of a simpler, and easier method, and that would be to override the operation-done-p method for the compile-op so that it knows that the .o and .so files are generated by the compile-op, and only pays attention to the relationship between bindings-file.lisp and bindings-file.fasl.

I do not think it will work, because up-to-date check happens outside
of operation-done-p. compute-action-stamp:
             (and all-present ;; if all filesystem effects are up-to-date
                  up-to-date-p
                  (operation-done-p o c) ;; and there's no invalidating reason.

> One thing you didn't say was what it means that the compile-op is done over and over -- is it only compiling the bindings-file, or is it doing something to the object files? I don't believe it should change the .o and .so files, because those are already compiled by process-op, right?

Yes, only the lisp file gets recompiled. compile-op does not do
anything to the .o and .so files, they are just its fake outputs.



More information about the asdf-devel mailing list