Sorry for all these emails, but this trivial case reproduces the recompilation, 
so it isn’t osicat specific.

https://github.com/jetmonk/test-grovel <https://github.com/jetmonk/test-grovel>





> On Apr 14, 2020, at 4:31 PM, JTK <jetm...@gmail.com> wrote:
> 
> 
> A followup:  this behavior stops when I comment out 
>  (:cffi-wrapper-file "wrappers" :soname "libosicat”) 
> in osicat’s asd file.
> 
> I understand that wrappers are to generate functions from C macros, 
> necessitating a C compilation step to build a dynamic library that is then 
> loaded.
> 
> For example in libosicat, the following line appears to turn a C macro into a 
> function
> 
>  (defwrapper* "s_isreg" ("int" :boolean) ((mode ("mode_t" mode)))
>   "return S_ISREG(mode);”)
> 
> 
> Apparently wrappers.lisp becomes wrappers.processed-wrapper-file, which, 
> despite not changing upon
> reload of osicat system, is recompiled anyway, resulting in a new 
> wrappers.fasl.
> 
> The dynamic library resulting from this (libosicat.dylib on OSX) is not 
> rebuilt, however.
> 
> In short, :CFFI-WRAPPER-FILE seems to trigger unnecessary recompilation of an 
> intermediate lisp
> file processed from the original lisp source, but not creation of this 
> intermediate file, nor the recompilation
> of the dynamic library.
> 
> Using the latest git version of CFFI doesn’t seem to help.
> 
> 
> 
> 
> 
>> On Apr 14, 2020, at 1:06 PM, JTK <jetm...@gmail.com 
>> <mailto:jetm...@gmail.com>> wrote:
>> 
>> 
>> Hello,
>> 
>> Sorry if this is the wrong place to ask ...
>> 
>> I’m using the ‘osicat’ package ( https://common-lisp.net/project/osicat/ 
>> <https://common-lisp.net/project/osicat/>   and  
>> https://github.com/osicat/osicat <https://github.com/osicat/osicat> ) in 
>> SBCL on OSX.
>> 
>> whenever I do ‘(asdf:load-system “osicat”) it seems to recompile the 
>> cffi-grovel-files and their dependencies.
>> 
>> Is this normal, or is there some way to make it behave like asdf usually 
>> does, that it recompiles only when a file has changed?
>> 
>> I know that this issue has 3 components (asdf, cffi, and osicat), but I 
>> thought I’d first check whether this is an unavoidable feature of using 
>> grovel files.
>> If not,  I can try to fix osicat.   
>> 
>> Here are some of the compilation messages: https://pastebin.com/GKArFCWc 
>> <https://pastebin.com/GKArFCWc> 
>> 
>> JK
>> 
>> 
>> 
> 

Reply via email to