philss / rustler_precompiled

Use precompiled NIFs from trusted sources in your Elixir code
181 stars 25 forks source link

build metadata without forcing full compilation #64

Open mlwilkerson opened 8 months ago

mlwilkerson commented 8 months ago

When the NIF compilation takes an especially long time, I find myself wishing that my CI workflow didn't have to do a final mix compile --force prior to mix rustler_precompiled.download.

As far as I can tell, all that's actually necessary at that point for rustler_precompiled.download to do its job, writing the checksums file, is for the metadata to be built and written. Normally that's done by build_metadata/1 when compiling.

Actually building the NIFs again at that point doesn't seem to be necessary. Is it?

Would it be possible to just build and write the metadata without going through the entire compilation?

philss commented 2 months ago

I don't think we can build the metadata from outside the build of the module. But how do you change the config in a way that needs to rebuild the metadata?

philss commented 1 month ago

@mlwilkerson I think you can force the recompilation of the module with the following:

$ mix run -e "Kernel.ParallelCompiler.compile([(YourNativeModuleHere).module_info(:compile)[:source]])"

This will trigger the recompilation of that module, but will skip what is already compiled. WDYT?