packages:
  all:
    providers:
      mpi: [openmpi, intel-oneapi-mpi]
      jpeg: [libjpeg]
    require:
      - spec: ^intel-oneapi-mpi
        when: '%oneapi ^mpi'

      - spec: ^openmpi
        when: '%gcc ^mpi'

      - spec: ^openmpi
        when: '%aocc ^mpi'

      - spec: ^nvhpc+mpi
        when: '%nvhpc ^mpi'

      - spec: "^cuda%gcc@13.2.0"
        when: '%gcc@13.2.0 ^cuda'

      - spec: "^cuda%oneapi"
        when: '%oneapi ^cuda'

      - spec: "+ipo"
        when: '%gcc'

  # ----------------------------------------------------------------------------
  # Requirements
  # ----------------------------------------------------------------------------
  cuda:
    require:
    - spec: '@12.4.0'

  hdf5:
    variants: +hl +threadsafe +szip +cxx +fortran

  libfabric:
    require:
    - spec: fabrics=mlx,mrail,psm3,verbs,udp,tcp,sockets,shm

  openmpi:
    require:
    - spec: '@5.0.3 fabrics=ofi,ucx,verbs schedulers=slurm ~rsh +romio romio-filesystem=gpfs'
    - spec: ^ucx +cuda
      when: +cuda

  python:
    require:
    - spec: +optimizations
      when: '%gcc'

  ucx:
    require:
    - spec: +rdmacm +rc +dc +ud +cma +verbs
    - spec: +gdrcopy
      when: +cuda

  # ----------------------------------------------------------------------------
  # System dependencies
  # ----------------------------------------------------------------------------
  rdma-core:
    buildable: false
    externals:
    - spec: 'rdma-core@44.1'
      prefix: /usr
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  slurm:
    buildable: false
    externals:
    - spec: 'slurm@23-11-0-1'
      prefix: /usr
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  pmix:
    buildable: false
    externals:
    - spec: 'pmix@5.0.1'
      prefix: /usr
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  # ----------------------------------------------------------------------------
  # Core compiler packages
  # ----------------------------------------------------------------------------
  autoconf:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  automake:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  autotools:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  ca-certificates-mozilla:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  cmake:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  diffutils:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  expat:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  findutils:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  freetype:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  gettext:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  glibc:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  gmake:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  gnuplot:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  libevent:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  m4:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  ncurses:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  openssl:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  pcre:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  perl:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  pkgconf:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  readline:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  sqlite:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  texinfo:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'

  zlib-ng:
    require:
    - spec: '%gcc@11.4.1 arch=linux-rhel9-x86_64_v2'
