Skip to content

Switch to using strict channel priority during RAPIDS builds #84

Description

@vyasr

RAPIDS conda packages currently do not install successfully when using strict channel priority. This has caused some difficulty for users in the past. strict channel priority also in general leads to faster solves. The reason that RAPIDS requires flexible channel priority is that there are some packages that have historically been published to both the rapidsai[-nightly] and conda-forge channels. Typically this occurred because RAPIDS needed specific versions/builds of packages that were either not yet available on conda-forge. However, in recent years we have moved to a much stronger reliance on building and maintaining conda-forge packages as needed, so most of the packages that we've done this for in the past (ucx, nccl) are now made regularly available on conda-forge and no longer updated on the rapidsai[-nightly] channel.

We should clean out the old packages in the rapidsai[-nightly] channel that prevent strict solving from working. Rather than removing them altogether, we can move them under a new label so that old versions could still be installed with that label installed (although in general installing old versions will be quite challenging without a fully specified environment lock file anyway due to how conda-forge's global pinnings move and other packages on there are released).

Strict build checklist

Strict priority should be enabled at build time for the following repositories.

2025-03-18: Currently blocked by old versions of various dependencies in rapidsai-nightly (that are now available in conda-forge)
Removal requested in rapidsai/ops#3877 Resolved

2025-03-24: rapidsai/gha-tools#153 to remove rapidsai channel from non-release builds, as there are some leftover older packages in that channel that break strict channel dependency resolution.

"Base" repos (high priority, likely to work with little effort):

High priority, may require some effort:

Low priority, may have blockers:

Update 2025-03-21 (@gforsyth)

--

Certain builds (I think exclusively on cuda 11.8 on x86) require a version of libcufile that is only in the nvidia channel. Since many (but not all) versions of libcufile are also available on conda-forge, it is not possible to enable strict channel priority for these builds.

Representative error message:

ExplainedDependencyNeedsBuildingError: Unsatisfiable dependencies for platform linux-64: {MatchSpec("libcufile-dev==1.4.0.31=0"), MatchSpec("libcufile==1.4.0.31=0")}
Encountered problems while solving:
  - package libcufile-1.4.0.31-0 is excluded by strict repo priority
  - package libcufile-dev-1.4.0.31-0 is excluded by strict repo priority

Builds affected:

  • kvikio (conda-cpp-build / 11.8.0, 3.10, amd64, rockylinux8)

Followup items

Once strict builds are enabled (and the tooling is updated accordingly), we can also enforce installing with strict channel priority in CI. We'll want to enable strict channel priority (and the correct channel list) in C++ tests, Python tests, and docs builds.

  • Update gha-tools to set correct channels and enable strict channel priority
  • Update rapids-dependency solver to insert correct channels depending on build type.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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