Skip to content

Build variants create inscrutable solver errors #252

Description

@h-vetinari

In feedstocks depending on openmpi variants, it's ~common to have dependencies of the kind.

    - hdf5
    - hdf5 * mpi_${{ mpi }}_*

However, the solver throws up over them for no apparent reason:

Details
Error:   × Failed to resolve dependencies: Cannot solve the request because of: hdf5
  │ * mpi_mpich_* cannot be installed because there are no viable options:
  │ └─ hdf5 1.10.4 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 |
  │ 1.10.5 would require
  │    └─ mpich >=3.2,<3.3.0a0, for which no candidates were found.
  │ The following packages are incompatible
  │ ├─ hdf5 * mpi_mpich_* cannot be installed because there are no viable
  │ options:
  │ │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.2, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.2, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.2, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ │  └─ hdf5 1.10.5, which conflicts with the versions reported above.
  │ └─ hdf5 1.14.6.* cannot be installed because there are no viable options:
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    ├─ hdf5 1.14.6, which conflicts with the versions reported above.
  │    └─ hdf5 1.14.6, which conflicts with the versions reported above.
  │ 
  ╰─▶ Cannot solve the request because of: hdf5 * mpi_mpich_* cannot be
      installed because there are no viable options:
      └─ hdf5 1.10.4 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 | 1.10.5 |
      1.10.5 would require
         └─ mpich >=3.2,<3.3.0a0, for which no candidates were found.
      The following packages are incompatible
      ├─ hdf5 * mpi_mpich_* cannot be installed because there are no viable
      options:
      │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.4, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.3, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.2, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.14.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.2, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.2, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.1, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.12.0, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.6, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  ├─ hdf5 1.10.5, which conflicts with the versions reported above.
      │  └─ hdf5 1.10.5, which conflicts with the versions reported above.
      └─ hdf5 1.14.6.* cannot be installed because there are no viable
      options:
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         ├─ hdf5 1.14.6, which conflicts with the versions reported above.
         └─ hdf5 1.14.6, which conflicts with the versions reported above.

It looks like it's trying first to search for hdf5 * mpi_mpich_*, which is just stupid because there's already a rich set of constraints to start off with

 │ │   Specs:
 │ │    - libblas 3.9.* *netlib
 │ │    - liblapack 3.9.* *netlib
 │ │    - cmake
 │ │    - mpich 4.*
 │ │    - yaml
 │ │    - libhwloc 2.11.2.*
 │ │    - metis 5.1.0.*
 │ │    - parmetis
 │ │    - libptscotch 7.0.6.*
 │ │    - scalapack
 │ │    - superlu
 │ │    - superlu_dist 9.*
 │ │    - libscotch 7.0.6.*
 │ │    - mumps-mpi 5.7.3.*
 │ │    - libamd 3.*
 │ │    - libcholmod 5.*
 │ │    - libklu 2.*
 │ │    - libspqr 4.*
 │ │    - libumfpack 6.*
 │ │    - hdf5 1.14.6.*
 │ │    - hdf5 * mpi_mpich_*
 │ │    - fftw 3.*
 │ │    - fftw * mpi_mpich_*
 │ │    - __osx >=10.13
 │ │    - libcxx >=19
 │ │    - libgfortran
 │ │    - libgfortran5 >=14.3.0

Listing all the incompatible hdf5 versions when it's already pinned to hdf5 1.14.6.* is just not helpful.

In the case of conda-forge/qe-feedstock#71 it completely obscured that there was a conflicting openmpi pin due to a missing migration. In conda-forge/petsc-feedstock#253 I cannot even tell what's going wrong, all builds are available AFAICT.

Activity

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

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