Following up on this discussion about CxxWrap.jl I would like to discuss some of the choices that can be made regarding binary dependencies:
- Build from source or download binaries?
- Central or per-package installation prefix?
- Role of distribution package managers?
- Role of external package managers such as Conda or Homebrew?
Regarding 1, ideally the user should be able to set a global default option on what he prefers. The default could also depend on the Julia version in use, e.g. use BinaryBuilder-provided binaries if the official Julia binary is running, or prefer building from source if a built-from-source Julia is running. The setting could be as simple as an environment variable, or something more involved.
For 2, if there are inter-dependent binary packages, having a per-package installation prefix can be a pain, so having the option to use a central prefix shared by all binary packages would be nice, from my perspective. I’m not sure if that gives rise to unresolvable conflicts, however.
For 3 and 4, I think that if Julia is available from a package manager, binary dependencies should be provided using the same system if possible.
One concrete use case I have on our CentOS cluster is that we compile a whole series of high-performance libraries with a built-from-source GCC, and it would be ideal if those binaries could be reused from within a built-from-source Julia, without needing separate config of each package.