Reproducibility: control "tools" as well
We currently use some system tools:
-
install_name_toolon macOS for changing@rpathafter building -
patchelfon Linux to changeRPATHafter building
These tools could potentially influence how reproducible the final binaries are. Ideally we get rid of these third-party tools and implement the functionality natively in Rust but that is no small feat. In the meantime it might be good to install them into their respective virtual environments and use them with a very specific version / lockfile and store that alongside the rendered recipe.
In fact, there is apparently a difference between cctools (from conda-forge) install_name_tool and Apple's version. The cctools one does automatic codesigning after modifying the binary.
First steps have been done and we have a system_tools section now in the recipe that records the versions of tools used. It might still be better and more appropriate to install these tools globally into their own environment though.