On Tue, Aug 4, 2020 at 12:51 PM Robert Goldman rpgoldman@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.