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.
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 inrapidsai-nightly(that are now available in conda-forge)Removal requested in rapidsai/ops#3877Resolved2025-03-24: rapidsai/gha-tools#153 to remove
rapidsaichannel 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):
rapids-cmakeno conda anymore: refactor(conda): remove unused conda package and associated CI resources rapids-cmake#810High priority, may require some effort:
rattler-build& use strict channel priority cucim#864Low priority, may have blockers:
cuspatialUpdate 2025-03-21 (@gforsyth)
--
Certain builds (I think exclusively on cuda 11.8 on x86) require a version of
libcufilethat is only in thenvidiachannel. Since many (but not all) versions oflibcufileare also available onconda-forge, it is not possible to enable strict channel priority for these builds.Representative error message:
Builds affected:
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.
gha-toolsto set correct channels and enable strict channel priorityrapids-dependencysolver to insert correct channels depending on build type.