Description
I think the majority of us are in agreement that omnia should start to migrate to the excellent conda-forge build system. Even continuum has officially embraced this. However, we need to do this migration in a manner that is not majorly disruptive.
Why can't I just move my recipe to conda-forge right now?
For linux
builds, omnia uses a Docker-based build image based on the CentOS 5-based holy build box, which uses an old version of glibc
that is maximally compatible with older linux
installations still found on many HPC clusters. On the other hand, conda-forge uses a Docker-based build image based on CentOS 6.
As a result, packages built with the conda-forge CentOS 6 build image will fail to run on the omnia CentoOS 5 build image, causing problems for omnia recipes that want to use these as dependencies. For now, this means that any omnia recipes using compiled code must also be built on omnia.
What is the migration plan?
This is certainly open for discussion, but the current migration plan is to get to a point where recipe maintainers can begin to migrate to the conda-forge build infrastructure. This involves the following steps:
- Update the
omnia-build-box
Dockerfiles and docker images to a CentOS 6-based image. This would allow us to build packages using the sameglibc
version as conda-forge. There are some difficulties with this, described in more detail below. - At this point, we can adopt one of two options: (1) copy packages from the
conda-forge
to theomnia
channel using the anaconda CLI, though this process can potentially be automated; (2) add theconda-forge
channel to the conda build environment, and recommend users ofomnia
include both channels in their environment. - Eventually, we will no longer add new recipes to omnia, but we would maintain the existing packages for reproducibility of published work. We may want to discuss long-term maintenance to ensure reproducibility in a separate thread.
Why haven't we already migrated to a CentOS 6 based build system for conda-forge compatibility?
To support OpenMM, the omnia-build-box
image includes some specially-installed build tools:
- CUDA 8.0
- AMD APP SDK 3.0
- clang 3.8
- TeXLive (and some additions)
None of these tools are available in the current conda-forge linux-anvil
build image, so we can't use this directly.
The simplest path to updating to CentOS 6 at first appeared to be to update to the new holy-build-box
CentOS 6 base image once this PR was completed. It's not yet clear if this process is stalled or if work was simply suspended for the holidays.
As an alternative, I've started on a different approach that layers these tools on top of the conda-forge linux-anvil
. This is incomplete, as additional troubleshooting is needed. But this may present a viable alternative once someone has put the effort in.
What do we need to do now?
I am in the process of restoring the mdtraj 1.8.0 recipe so we can still build packages that depend on mdtraj, like pyemma.