Skip to content

conda-forge compatibility and eventual migration #666

Open
@jchodera

Description

@jchodera

cc: #662 #634 #645

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 same glibc 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 the omnia channel using the anaconda CLI, though this process can potentially be automated; (2) add the conda-forge channel to the conda build environment, and recommend users of omnia 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions