# This file contains the preferences for versions and variants.
# Note that spack can deviate from these preferences for various reasons:
# - if explicitly requested in spack.yaml
# - if required to satisfy explicit requests
# - if reuse == true and build caches contain other versions/variants
#   (this is disabled by concretize:reuse:false in concretizer.yaml)
#
# The variants in packages:all:variants are overridden by package-specific 
# variants. Therefore, we use the pattern require:any_of:[+variant,@:]
# which sets the variant or doesn't do anything if not supported.
#
packages:
  all:
    require:
    - '%gcc'
    - any_of: [+ipo, '@:']
    - any_of: [build_system=cmake, '@:']
    - any_of: [build_type=Release, '@:']
  acts:
    require:
    - '%clang'
    - '@33.1.0'
    - cxxstd=20 +dd4hep +edm4hep +examples +fatras +geant4 +identification +json +onnx +podio +python +tgeo
  actsvg:
    require:
    - '@0.4.26'
    - +examples
  acts-dd4hep:
    require:
    - '@1.0.1'
  afterburner:
    require:
    - '@0.1.2'
    - +root +zlib
  algorithms:
    require:
    - '@git.9acce06e2b8b8d12ef527725e52eff35abd059f8'
  blas:
    require:
    - openblas
  boost:
    require:
    - '@1.84.0'
  cairo:
    require:
    - '@1.16.0'
    - +fc+ft+X+pdf+gobject
  catch2:
    require:
    - '@3.4.0'
    - -ipo
  cernlib:
    require:
    - '@2022.11.08.0-free'
    - -shared
  clhep:
    require:
    - '@2.4.6.4'
    - cxxstd=20
  cli11:
    require:
    - '@2.3.2'
  cmake:
    require:
    - '@3.30.5'
  cnpy:
    require:
    - '@master'
  cppcoro:
    require:
    - '@10bbcdbf2be3ad3aa56febcf4c7662d771460a99'
  dawn:
    require:
    - '@3_91a'
  dawncut:
    require:
    - '@1_54a'
  dbus:
    require:
    # Until 1.15.12, https://gitlab.freedesktop.org/dbus/dbus/-/commit/b104667bd7ec55dda057ff4ffdde848336f253f4,
    # the meson build assumes that the user name exists as a group name as well. Require 1.14.10 (only autotools).
    - '@1.14.10'
  dd4hep:
    require:
    - '@1.30'
    - +ddg4 +ddcad +hepmc3 +utilityapps +xercesc
    - any_of: [+ddeve, -ddeve]
  dpmjet:
    require:
    - '@19.3.5'
  east:
    require:
    - '@656aa3192b097a631ddd1e0380e80c26fd6644a7'
  edm4eic:
    require:
    - '@8.0.0' # EDM4EIC_VERSION
    - cxxstd=20
  edm4hep:
    require:
    - '@0.10.5'
    - cxxstd=20
  egl:
    buildable: False
    externals:
    - spec: egl@1.5.0
      prefix: /usr
  eic-smear:
    require:
    - '@1.1.12'
  eicrecon:
    require:
    - '%clang'
    - '@1.19.0' # EICRECON_VERSION
  eigen:
    require:
    - '@3.4.0'
  emacs:
    require:
    - '@28.2'
  epic:
    require:
    - 'artifacts=epic_craterlake'
  fastjet:
    require:
    - '@3.4.0'
    - plugins=cxx
  fjcontrib:
    require:
    - '@1.051'
  flame:
    require:
    - libflame
  fmt:
    require:
    - '@9.1.0'
    - +shared cxxstd=17
  freetype:
    require:
    - build_system=autotools
  gaudi:
    require:
    - '@38.1'
    - +aida +gaudialg
  gdb:
    require:
    - '@15.2'
    - +debuginfod
  g4ndl:
    buildable: False
    externals:
    - spec: g4ndl@4.7.1
      prefix: /opt/software/externals/g4ndl
  geant4:
    require:
    - '@11.2.2.east'
    - cxxstd=20 -vecgeom +threads -vtk
    - any_of: [+opengl +qt +x11, -opengl -qt -x11]
  gettext: 
    require:
    - +libxml2
  gfal2:
    require:
    - +file +xrootd
  gl:
    require:
    - glx
  gloo:
    require:
    - '@2023-12-03'
  graphviz:
    require:
    - '@12.1.0'
    - +expat +pangocairo
  hepmc3:
    require:
    - '@3.3.0'
    - +python +rootio
  hepmcmerger:
    require:
    - '@1.0.4'
  heppdt:
    require:
    - '@2.06.01'
  imagemagick:
    require:
    - '@7.1.1-11'
  intel-tbb:
    require:
    - '@2020.3'
  irt:
    require:
    - '@1.0.8'
  iwyu:
    require:
    - '@0.20'
  jana2:
    require:
    - '@2.3.2'
    - -ipo +podio +root +zmq
  juggler:
    require:
    - '@14.2.0' # JUGGLER_VERSION
    - cxxstd=20
  k4actstracking:
    require:
    - '@main'
  k4fwcore:
    require:
    - '@1.0pre19'
  lapack:
    require:
    - openblas
  lcov:
    require:
    - '@1.16'
  libglx:
    require:
    - opengl
  lhapdf:
    require:
    - '@6.5.4'
    - +python
  madx:
    require:
    - '@5.08.01'
  mesa:
    require:
    - '@23.3.6'
    - +glx +llvm +opengl +opengles +osmesa
  nlohmann-json:
    require:
    - '@3.11.2'
  nano:
    require:
    - '@7.2'
  node-js:
    require:
    # node-js@22.3: fails with gcc-12.2 in bookworm
    - '@20.15.0'
  nopayloadclient:
    require:
    - '@0.0.3'
  npsim:
    require:
    - '@1.4.1'
    - +http
    - any_of: [+geocad, -geocad]
  onnx:
    require:
    - '@1.15.0'
  opencascade:
    require:
    - '@7.8.1'
    - +application_framework -vtk
  opengl:
    buildable: False
    externals:
    - spec: opengl@4.6
      prefix: /usr
  osg-ca-certs:
    require:
    - '@1.119.igtf.1.128'
  pcre:
    require:
    - build_system=cmake
    - cflags=-fPIC cxxflags=-fPIC 
  phonebook-cli:
    require:
    - '@1.0.0'
  podio:
    require:
    - '@0.99'
    - cxxstd=20
  prmon:
    require:
    - '@3.0.2'
    - +plot
  protobuf:
    require:
    - '@3.21.12'
  pyrobird:
    require:
    - '@0.1.23'
    - +batch +xrootd
  pythia8:
    require:
    - '@8.312'
    - +fastjet +root
  python:
    require:
    - '@3.11.7'
  py-awkward:
    require:
    - '@2.1.1'
  py-bokeh:
    require:
    - '@3.3.1'
  py-boto3:
    require:
    - '@1.26.26'
  py-dask:
    require:
    - '@2023.4.1'
  py-epic-capybara:
    require:
    - '@git.c8d357028a96f72215bcba516000ea81db4842a6'
  py-hepunits:
    require:
    - '@2.3.2'
  py-hist:
    require:
    - '@2.6.1'
  py-histoprint:
    require:
    - '@2.4.0'
  py-ipython:
    require:
    - '@8.11.0'
  py-jinja2:
    require:
    - '@3.1.2'
  py-jinja2-cli:
    require:
    - '@0.8.2'
  py-jupyter-console:
    require:
    - '@6.4.4'
  py-jupyterlab:
    require:
    - '@3.4.8'
  py-lmfit:
    require:
    - '@1.0.2'
  py-lxml:
    require:
    - '@4.9.1'
  py-matplotlib:
    require:
    - '@3.7.1'
  py-mplhep:
    require:
    - '@0.3.26'
  py-htgettoken:
    require:
    - '@1.16-33-g3788bb4'
  py-numpy:
    require:
    - '@1.26.1'
  py-onnx:
    require:
    - '@1.15.0'
  py-onnxruntime:
    require:
    - '@1.17.1'
  py-pandas:
    require:
    - '@1.5.3'
  py-particle:
    require:
    - '@0.23.0'
  py-pip:
    require:
    - '@23.1.2'
  py-pre-commit:
    require:
    - '@3.3.3'
  py-protobuf:
    require:
    - '@4.21.9'
  py-pygithub:
    require:
    - '@2.1.1'
  py-pycairo:
    require:
    - '@1.20.0'
  py-pyyaml:
    require:
    - '@6.0'
  py-scipy:
    require:
    - '@1.11.3'
  py-seaborn:
    require:
    - '@0.12.2'
  py-toml:
    require:
    - '@0.10.2'
  py-torch:
    require:
    - '@2.5.1'
    - -mkldnn
  py-uproot:
    require:
    - '@5.0.5'
  py-vector:
    require:
    - '@1.4.1'
  py-wurlitzer:
    require:
    - '@3.0.2'
  py-yapf:
    require:
    - '@0.30.0'
  qmake:
    require:
    - qt-base
  qt:
    require:
    - '@5.15.12'
    - +opengl
  qt-base:
    require:
    - '@6.7.2'
    - +opengl
  root:
    require:
    - '@6.30.02'
    - cxxstd=20 +fftw +fortran +gdml +http -ipo +mlp +python +root7 +tmva +tmva-sofie +vc +xrootd +ssl
    - any_of: [+opengl +webgui +x, -opengl -webgui -x]
  simsipm:
    require:
    - '@2.0.2'
  snakemake:
    require:
    - '@8.5.2'
  py-snakemake-storage-plugin-fs:
    require:
    - '@0.2.0'
  py-snakemake-storage-plugin-http:
    require:
    - '@0.2.3'
  py-snakemake-storage-plugin-s3:
    require:
    - '@0.2.10'
  spdlog:
    require:
    - '@1.11.0'
  stow:
    require:
    - '@2.3.1'
  strace:
    require:
    - -mpers
  tensorflow-lite:
    require:
    - '@2.8.0'
    - -xnnpack
  valgrind:
    require:
    - '@3.20.0'
  xrootd:
    require:
    - '@5.7.0'
    - cxxstd=20 -davix +python +scitokens-cpp
  zlib-api:
    require:
    - zlib-ng
  zlib-ng:
    require:
    - '@2.1.4'
