trilinos: simplify some variants (#24820)

* trilinos: rename basker variant

The Basker solver is part of amesos2 but is clearer without the extra
scoping.

* trilinos: automatically enable teuchos and remove variant

Basically everything in trilinos needs teuchos

* trilinos: group top-level dependencies

* trilinos: update dependencies, removing unused

- GLM, X11 are unused (x11 lacks dependency specs too)
- Python variant is more like a TPL so rearrange that
- Gtest internal package shouldn't be compiled or exported
- Add MPI4PY requirement for pytrilinos

* trilinos: remove package meta-options

- XSDK settings and "all opt packages" are not used anywhere
- all optional packages are dangerous

* trilinos: Use hwloc iff kokkos

See #19119, also the HWLOC tpl name was misspelled so this was being ignored before.

* Flake

* Fix trilinos +netcdf~mpi

* trilinos: default to disabling external dependencies

* Remove teuchos from downstream dependencies

* fixup! trilinos: Use hwloc iff kokkos

* Add netcdf requirements to packages with ^trilinos+exodus

* trilinos: disable exodus by default

* fixup! Add netcdf requirements to packages with ^trilinos+exodus

* trilinos: only enable hwloc when @13: +kokkos

* xyce: propagate trilinos dependencies more simply

* dtk: fix missing boost dependency

* trilinos: remove explicit metis dependency

* trilinos: require metis/parmetis for zoltan

Disable zoltan by default to minimize default dependencies

* trilinos: mark mesquite disabled and fix kokkos arch

* xsdk: fix trilinos to also list zoltan [with zoltan2]

* ci: remove nonexistent variant from trilinos

* trilinos: add missing boost dependency

Co-authored-by: Satish Balay <balay@mcs.anl.gov>
This commit is contained in:
Seth R. Johnson 2021-07-16 14:36:06 -04:00 committed by GitHub
parent c56f2a935d
commit 624c72afae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 140 additions and 189 deletions

View File

@ -283,7 +283,7 @@ spack:
# - sz # - sz
# - tasmanian # - tasmanian
# - tau # - tau
#- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +teuchos +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long #- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +boost +superlu-dist gotype=long
# - turbine # - turbine
# - umap # - umap
# - unifyfs@0.9.1 # - unifyfs@0.9.1

View File

@ -284,7 +284,7 @@ spack:
- sz - sz
- tasmanian - tasmanian
- tau - tau
- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +teuchos +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long - trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +boost +superlu-dist gotype=long
- turbine - turbine
- umap - umap
- unifyfs@0.9.1 - unifyfs@0.9.1

View File

@ -20,7 +20,7 @@ class Camellia(CMakePackage):
variant('moab', default=True, description='Compile with MOAB to include support for reading standard mesh formats') variant('moab', default=True, description='Compile with MOAB to include support for reading standard mesh formats')
depends_on('trilinos+amesos+amesos2+belos+epetra+epetraext+exodus+ifpack+ifpack2+intrepid+intrepid2+kokkos+ml+muelu+sacado+shards+teuchos+tpetra+zoltan+mumps+superlu-dist+hdf5+zlib+pnetcdf@master,12.12.1:') depends_on('trilinos+amesos+amesos2+belos+epetra+epetraext+exodus+ifpack+ifpack2+intrepid+intrepid2+kokkos+ml+muelu+sacado+shards+tpetra+zoltan+mumps+superlu-dist+hdf5+zlib+mpi+netcdf+pnetcdf@master,12.12.1:')
depends_on('moab@:4', when='+moab') depends_on('moab@:4', when='+moab')
# Cameilla needs hdf5 but the description "hdf5@:1.8" is # Cameilla needs hdf5 but the description "hdf5@:1.8" is

View File

@ -27,9 +27,10 @@ class Datatransferkit(CMakePackage):
description='enable the build of shared lib') description='enable the build of shared lib')
depends_on('arborx@1.0:', when='+external-arborx') depends_on('arborx@1.0:', when='+external-arborx')
depends_on('boost')
depends_on('cmake', type='build') depends_on('cmake', type='build')
depends_on('trilinos+intrepid2+shards~dtk', when='+serial') depends_on('trilinos+intrepid2+shards~dtk')
depends_on('trilinos+intrepid2+shards+openmp~dtk', when='+openmp') depends_on('trilinos+openmp', when='+openmp')
depends_on('trilinos+stratimikos+belos', when='@master') depends_on('trilinos+stratimikos+belos', when='@master')
depends_on('trilinos@13:13.99', when='@3.1-rc2') depends_on('trilinos@13:13.99', when='@3.1-rc2')

View File

@ -210,16 +210,11 @@ class Dealii(CMakePackage, CudaPackage):
depends_on('symengine@0.6:', when='@9.2:+symengine') depends_on('symengine@0.6:', when='@9.2:+symengine')
depends_on('tbb', when='+threads') depends_on('tbb', when='+threads')
# do not require +rol to make concretization of xsdk possible # do not require +rol to make concretization of xsdk possible
depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos', depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado', when='+trilinos')
when='+trilinos+mpi~int64~cuda') depends_on('trilinos~hypre', when='+trilinos+int64')
depends_on('trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos~hypre',
when='+trilinos+mpi+int64~cuda')
# TODO: temporary disable Tpetra when using CUDA due to # TODO: temporary disable Tpetra when using CUDA due to
# namespace "Kokkos::Impl" has no member "cuda_abort" # namespace "Kokkos::Impl" has no member "cuda_abort"
depends_on('trilinos@master+amesos+aztec+epetra+ifpack+ml+muelu+rol+sacado+teuchos~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2', depends_on('trilinos@master+rol~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2', when='+trilinos+cuda')
when='+trilinos+mpi~int64+cuda')
depends_on('trilinos@master+amesos+aztec+epetra+ifpack+ml+muelu+rol+sacado+teuchos~hypre~amesos2~ifpack2~intrepid2~kokkos~tpetra~zoltan2',
when='+trilinos+mpi+int64+cuda')
# Explicitly provide a destructor in BlockVector, # Explicitly provide a destructor in BlockVector,
# otherwise deal.II may fail to build with Intel compilers. # otherwise deal.II may fail to build with Intel compilers.

View File

@ -55,7 +55,7 @@ class Fortrilinos(CMakePackage):
depends_on('trilinos@12.17.1', when='@2.0.dev1') depends_on('trilinos@12.17.1', when='@2.0.dev1')
# Baseline trilinos dependencies # Baseline trilinos dependencies
depends_on('trilinos+teuchos gotype=long_long') depends_on('trilinos gotype=long_long')
# Full trilinos dependencies # Full trilinos dependencies
depends_on('trilinos+amesos2+anasazi+belos+kokkos+ifpack2+muelu+nox+tpetra' depends_on('trilinos+amesos2+anasazi+belos+kokkos+ifpack2+muelu+nox+tpetra'
'+stratimikos', when='+hl') '+stratimikos', when='+hl')

View File

@ -52,19 +52,21 @@ class NaluWind(CMakePackage, CudaPackage):
depends_on('mpi') depends_on('mpi')
depends_on('yaml-cpp@0.5.3:') depends_on('yaml-cpp@0.5.3:')
depends_on('trilinos@master,develop ~cuda~wrapper+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre cxxstd=14', when='~cuda')
# Cannot build Trilinos as a shared library with STK on Darwin
# https://github.com/trilinos/Trilinos/issues/2994
depends_on('trilinos@master,develop ~cuda~wrapper+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre~shared cxxstd=14', when=(sys.platform == 'darwin'))
depends_on('openfast@master,develop +cxx', when='+openfast') depends_on('openfast@master,develop +cxx', when='+openfast')
depends_on('tioga@master,develop', when='+tioga') depends_on('tioga@master,develop', when='+tioga')
depends_on('hypre@develop,2.18.2: +int64+mpi~superlu-dist', when='+hypre') depends_on('hypre@develop,2.18.2: +int64+mpi~superlu-dist', when='+hypre')
depends_on('kokkos-nvcc-wrapper', type='build', when='+cuda') depends_on('kokkos-nvcc-wrapper', type='build', when='+cuda')
depends_on('trilinos@master,develop +exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre cxxstd=14')
# Cannot build Trilinos as a shared library with STK on Darwin
# https://github.com/trilinos/Trilinos/issues/2994
depends_on('trilinos~shared', when=(sys.platform == 'darwin'))
# Propagate cuda options to trilinos and hypre
depends_on('trilinos~cuda~wrapper', when='~cuda')
depends_on('trilinos+cuda+wrapper+cuda_rdc', when='+cuda')
depends_on('hypre@develop +cuda', when='+cuda')
for _arch in CudaPackage.cuda_arch_values: for _arch in CudaPackage.cuda_arch_values:
depends_on('trilinos@master,develop ~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist~superlu+hdf5+zlib+pnetcdf+shards~hypre+cuda+cuda_rdc+wrapper cxxstd=14 cuda_arch={0}'.format(_arch), depends_on('trilinos cuda_arch=' + _arch, when='+cuda cuda_arch=' + _arch)
when='+cuda cuda_arch={0}'.format(_arch)) depends_on('hypre cuda_arch=' + _arch, when='+hypre+cuda cuda_arch=' + _arch)
depends_on('hypre@develop +mpi+cuda+int64~superlu-dist cuda_arch={0}'.format(_arch),
when='+hypre+cuda cuda_arch={0}'.format(_arch))
depends_on('trilinos-catalyst-ioss-adapter', when='+catalyst') depends_on('trilinos-catalyst-ioss-adapter', when='+catalyst')
depends_on('fftw+mpi', when='+fftw') depends_on('fftw+mpi', when='+fftw')
depends_on('boost cxxstd=14', when='+boost') depends_on('boost cxxstd=14', when='+boost')

View File

@ -35,7 +35,7 @@ class Nalu(CMakePackage):
# Cannot build Trilinos as a shared library with STK on Darwin # Cannot build Trilinos as a shared library with STK on Darwin
# which is why we have a 'shared' variant for Nalu # which is why we have a 'shared' variant for Nalu
# https://github.com/trilinos/Trilinos/issues/2994 # https://github.com/trilinos/Trilinos/issues/2994
depends_on('trilinos+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='+shared') depends_on('trilinos+mpi+netcdf+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='+shared')
depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='~shared') depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+shards~hypre@master,develop', when='~shared')
# Optional dependencies # Optional dependencies
depends_on('tioga', when='+tioga+shared') depends_on('tioga', when='+tioga+shared')

View File

@ -41,7 +41,7 @@ class OmegaH(CMakePackage):
depends_on('gmsh', when='+examples', type='build') depends_on('gmsh', when='+examples', type='build')
depends_on('mpi', when='+mpi') depends_on('mpi', when='+mpi')
depends_on('trilinos +kokkos +teuchos', when='+trilinos') depends_on('trilinos +kokkos', when='+trilinos')
depends_on('zlib', when='+zlib') depends_on('zlib', when='+zlib')
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610

View File

@ -25,7 +25,7 @@ class Percept(CMakePackage):
depends_on('opennurbs@percept') depends_on('opennurbs@percept')
depends_on('boost+graph+mpi') depends_on('boost+graph+mpi')
depends_on('yaml-cpp+pic~shared@0.5.3:') depends_on('yaml-cpp+pic~shared@0.5.3:')
depends_on('trilinos~shared+exodus+tpetra+epetra+epetraext+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+aztec+sacado~openmp+shards+intrepid+cgns@master,12.14.1:') depends_on('trilinos~shared+exodus+netcdf+mpi+tpetra+epetra+epetraext+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf+aztec+sacado~openmp+shards+intrepid+cgns@master,12.14.1:')
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec

View File

@ -124,7 +124,7 @@ class Phist(CMakePackage):
depends_on('eigen', when='kernel_lib=eigen') depends_on('eigen', when='kernel_lib=eigen')
depends_on('ghost', when='kernel_lib=ghost') depends_on('ghost', when='kernel_lib=ghost')
depends_on('trilinos+anasazi+belos+teuchos', when='+trilinos') depends_on('trilinos+anasazi+belos', when='+trilinos')
depends_on('parmetis+int64', when='+parmetis+int64') depends_on('parmetis+int64', when='+parmetis+int64')
depends_on('parmetis~int64', when='+parmetis~int64') depends_on('parmetis~int64', when='+parmetis~int64')

View File

@ -21,7 +21,7 @@ class Quinoa(CMakePackage):
depends_on('hdf5+mpi') depends_on('hdf5+mpi')
depends_on("charmpp backend=mpi") depends_on("charmpp backend=mpi")
depends_on("trilinos+exodus") depends_on("trilinos+exodus+mpi+netcdf")
depends_on("boost") depends_on("boost")
depends_on("hypre~internal-superlu") depends_on("hypre~internal-superlu")
depends_on("random123") depends_on("random123")

View File

@ -60,8 +60,6 @@ class Trilinos(CMakePackage, CudaPackage):
# Other # Other
# not everyone has py-numpy activated, keep it disabled by default to avoid # not everyone has py-numpy activated, keep it disabled by default to avoid
# configure errors # configure errors
variant('python', default=False,
description='Build python wrappers')
# Build options # Build options
variant('complex', default=False, variant('complex', default=False,
@ -76,50 +74,42 @@ class Trilinos(CMakePackage, CudaPackage):
description='global ordinal type for Tpetra') description='global ordinal type for Tpetra')
variant('fortran', default=True, variant('fortran', default=True,
description='Compile with Fortran support') description='Compile with Fortran support')
variant('python', default=False,
description='Build PyTrilinos wrappers')
variant('wrapper', default=False, variant('wrapper', default=False,
description="Use nvcc-wrapper for CUDA build") description="Use nvcc-wrapper for CUDA build")
variant('cuda_rdc', default=False, variant('cuda_rdc', default=False,
description='turn on RDC for CUDA build') description='turn on RDC for CUDA build')
variant('cxxstd', default='11', values=['11', '14', '17'], multi=False) variant('cxxstd', default='11', values=['11', '14', '17'], multi=False)
variant('hwloc', default=False,
description='Enable hwloc')
variant('openmp', default=False, variant('openmp', default=False,
description='Enable OpenMP') description='Enable OpenMP')
variant('shared', default=True, variant('shared', default=True,
description='Enables the build of shared libraries') description='Enables the build of shared libraries')
variant('debug', default=False, variant('debug', default=False,
description='Enable runtime safety and debug checks') description='Enable runtime safety and debug checks')
variant('xsdkflags', default=False,
description='Compile using the default xSDK configuration')
# TPLs (alphabet order) # TPLs (alphabet order)
variant('boost', default=True, variant('boost', default=False,
description='Compile with Boost') description='Compile with Boost')
variant('cgns', default=False, variant('cgns', default=False,
description='Enable CGNS') description='Enable CGNS')
variant('adios2', default=False, variant('adios2', default=False,
description='Enable ADIOS2') description='Enable ADIOS2')
variant('glm', default=True, variant('hdf5', default=False,
description='Compile with GLM')
variant('gtest', default=False,
description='Compile with Gtest')
variant('hdf5', default=True,
description='Compile with HDF5') description='Compile with HDF5')
variant('hypre', default=True, variant('hypre', default=False,
description='Compile with Hypre preconditioner') description='Compile with Hypre preconditioner')
variant('matio', default=True, variant('matio', default=False,
description='Compile with Matio') description='Compile with Matio')
variant('metis', default=True,
description='Compile with METIS and ParMETIS')
variant('mpi', default=True, variant('mpi', default=True,
description='Compile with MPI parallelism') description='Compile with MPI parallelism')
variant('mumps', default=True, variant('mumps', default=False,
description='Compile with support for MUMPS solvers') description='Compile with support for MUMPS solvers')
variant('netcdf', default=True, variant('netcdf', default=False,
description='Compile with netcdf') description='Compile with netcdf')
variant('pnetcdf', default=False, variant('pnetcdf', default=False,
description='Compile with parallel-netcdf') description='Compile with parallel-netcdf')
variant('suite-sparse', default=True, variant('suite-sparse', default=False,
description='Compile with SuiteSparse solvers') description='Compile with SuiteSparse solvers')
variant('superlu-dist', default=False, variant('superlu-dist', default=False,
description='Compile with SuperluDist solvers') description='Compile with SuperluDist solvers')
@ -127,14 +117,10 @@ class Trilinos(CMakePackage, CudaPackage):
description='Compile with SuperLU solvers') description='Compile with SuperLU solvers')
variant('strumpack', default=False, variant('strumpack', default=False,
description='Compile with STRUMPACK solvers') description='Compile with STRUMPACK solvers')
variant('x11', default=False,
description='Compile with X11')
variant('zlib', default=False, variant('zlib', default=False,
description='Compile with zlib') description='Compile with zlib')
# Package options (alphabet order) # Package options (alphabet order)
variant('alloptpkgs', default=False,
description='Compile with all optional packages')
variant('amesos', default=True, variant('amesos', default=True,
description='Compile with Amesos') description='Compile with Amesos')
variant('amesos2', default=True, variant('amesos2', default=True,
@ -154,7 +140,8 @@ class Trilinos(CMakePackage, CudaPackage):
description='Compile with Epetra') description='Compile with Epetra')
variant('epetraext', default=True, variant('epetraext', default=True,
description='Compile with EpetraExt') description='Compile with EpetraExt')
variant('exodus', default=True, # Disable Exodus by default as it requires netcdf
variant('exodus', default=False,
description='Compile with Exodus from SEACAS') description='Compile with Exodus from SEACAS')
variant('ifpack', default=True, variant('ifpack', default=True,
description='Compile with Ifpack') description='Compile with Ifpack')
@ -200,20 +187,18 @@ class Trilinos(CMakePackage, CudaPackage):
description='Compile with Teko') description='Compile with Teko')
variant('tempus', default=False, variant('tempus', default=False,
description='Compile with Tempus') description='Compile with Tempus')
variant('teuchos', default=True,
description='Compile with Teuchos')
variant('tpetra', default=True, variant('tpetra', default=True,
description='Compile with Tpetra') description='Compile with Tpetra')
variant('trilinoscouplings', default=False, variant('trilinoscouplings', default=False,
description='Compile with TrilinosCouplings') description='Compile with TrilinosCouplings')
variant('zoltan', default=True, variant('zoltan', default=False,
description='Compile with Zoltan') description='Compile with Zoltan')
variant('zoltan2', default=True, variant('zoltan2', default=False,
description='Compile with Zoltan2') description='Compile with Zoltan2')
# Internal package options (alphabetical order) # Internal package options (alphabetical order)
variant('amesos2basker', default=False, variant('basker', default=False,
description='Compile with Basker in Amesos2') description='Compile with the Basker solver in Amesos2')
variant('epetraextbtf', default=False, variant('epetraextbtf', default=False,
description='Compile with BTF in EpetraExt') description='Compile with BTF in EpetraExt')
variant('epetraextexperimental', default=False, variant('epetraextexperimental', default=False,
@ -223,11 +208,11 @@ class Trilinos(CMakePackage, CudaPackage):
# External package options # External package options
variant('dtk', default=False, variant('dtk', default=False,
description='Enable DataTransferKit') description='Enable DataTransferKit (deprecated)')
variant('scorec', default=False, variant('scorec', default=False,
description='Enable SCOREC') description='Enable SCOREC')
variant('mesquite', default=False, variant('mesquite', default=False,
description='Enable Mesquite') description='Enable Mesquite (deprecated)')
resource(name='dtk', resource(name='dtk',
git='https://github.com/ornl-cees/DataTransferKit.git', git='https://github.com/ornl-cees/DataTransferKit.git',
@ -267,71 +252,58 @@ class Trilinos(CMakePackage, CudaPackage):
placement='packages/mesquite', placement='packages/mesquite',
when='+mesquite @develop') when='+mesquite @develop')
conflicts('+amesos2', when='~teuchos') # Epetra packages
conflicts('+amesos2', when='~tpetra') with when('~epetra'):
conflicts('+amesos', when='~epetra') conflicts('+amesos')
conflicts('+amesos', when='~teuchos') conflicts('+aztec')
conflicts('+anasazi', when='~teuchos') conflicts('+epetraext')
conflicts('+aztec', when='~epetra') conflicts('+ifpack')
conflicts('+belos', when='~teuchos') conflicts('+isorropia')
conflicts('+epetraext', when='~epetra') with when('~epetraext'):
conflicts('+epetraext', when='~teuchos') conflicts('+isorropia')
conflicts('+exodus', when='~netcdf') conflicts('+teko')
conflicts('+ifpack2', when='~belos') conflicts('+epetraextbtf')
conflicts('+ifpack2', when='~teuchos') conflicts('+epetraextexperimental')
conflicts('+ifpack2', when='~tpetra') conflicts('+epetraextgraphreorderings')
conflicts('+ifpack', when='~epetra')
conflicts('+ifpack', when='~teuchos')
conflicts('+intrepid2', when='~kokkos')
conflicts('+intrepid2', when='~shards')
conflicts('+intrepid2', when='~teuchos')
conflicts('+intrepid', when='~sacado')
conflicts('+intrepid', when='~shards')
conflicts('+intrepid', when='~teuchos')
conflicts('+isorropia', when='~epetra')
conflicts('+isorropia', when='~epetraext')
conflicts('+isorropia', when='~teuchos')
conflicts('+isorropia', when='~zoltan')
conflicts('+muelu', when='~teuchos')
conflicts('+nox', when='~teuchos')
conflicts('+phalanx', when='~kokkos')
conflicts('+phalanx', when='~sacado')
conflicts('+phalanx', when='~teuchos')
conflicts('+piro', when='~teuchos')
conflicts('+rol', when='~teuchos')
conflicts('+rythmos', when='~teuchos')
conflicts('+teko', when='~amesos') conflicts('+teko', when='~amesos')
conflicts('+teko', when='~anasazi') conflicts('+teko', when='~anasazi')
conflicts('+teko', when='~aztec') conflicts('+teko', when='~aztec')
conflicts('+teko', when='~epetraext')
conflicts('+teko', when='~ifpack') conflicts('+teko', when='~ifpack')
conflicts('+teko', when='~ml') conflicts('+teko', when='~ml')
# Tpetra packages
with when('~kokkos'):
conflicts('+cuda')
conflicts('+tpetra')
conflicts('+intrepid2')
conflicts('+phalanx')
with when('~tpetra'):
conflicts('+amesos2')
conflicts('+dtk')
conflicts('+ifpack2')
conflicts('+teko')
conflicts('+zoltan2')
conflicts('+basker', when='~amesos2')
conflicts('+exodus', when='~netcdf')
conflicts('+ifpack2', when='~belos')
conflicts('+intrepid', when='~sacado')
conflicts('+intrepid', when='~shards')
conflicts('+intrepid2', when='~shards')
conflicts('+isorropia', when='~zoltan')
conflicts('+phalanx', when='~sacado')
conflicts('+teko', when='~stratimikos') conflicts('+teko', when='~stratimikos')
conflicts('+teko', when='~teuchos')
conflicts('+teko', when='~tpetra')
conflicts('+teko', when='@:12 gotype=long') conflicts('+teko', when='@:12 gotype=long')
conflicts('+tempus', when='~nox') conflicts('+tempus', when='~nox')
conflicts('+tempus', when='~teuchos')
conflicts('+tpetra', when='~kokkos')
conflicts('+tpetra', when='~teuchos')
conflicts('+zoltan2', when='~teuchos')
conflicts('+zoltan2', when='~tpetra')
conflicts('+zoltan2', when='~zoltan') conflicts('+zoltan2', when='~zoltan')
conflicts('+epetraextbtf', when='~epetraext') # Only allow DTK with Trilinos 12.14 and develop
conflicts('+epetraextexperimental', when='~epetraext')
conflicts('+epetraextgraphreorderings', when='~epetraext')
conflicts('+amesos2basker', when='~amesos2')
conflicts('+dtk', when='~boost') conflicts('+dtk', when='~boost')
conflicts('+dtk', when='~intrepid2') conflicts('+dtk', when='~intrepid2')
conflicts('+dtk', when='~kokkos')
conflicts('+dtk', when='~teuchos')
conflicts('+dtk', when='~tpetra')
# Only allow DTK with Trilinos 12.14 and develop
conflicts('+dtk', when='@0:12.12.99,master') conflicts('+dtk', when='@0:12.12.99,master')
# Only allow Mesquite with Trilinos 12.12 and up, and develop # Only allow Mesquite with Trilinos 12.12 and up, and develop
conflicts('+mesquite', when='@0:12.10.99,master') conflicts('+mesquite', when='@0:12.10.99,master,develop')
# Can only use one type of SuperLU # Can only use one type of SuperLU
conflicts('+superlu-dist', when='+superlu') conflicts('+superlu-dist', when='+superlu')
# For Trilinos v11 we need to force SuperLUDist=OFF, since only the # For Trilinos v11 we need to force SuperLUDist=OFF, since only the
@ -346,7 +318,6 @@ class Trilinos(CMakePackage, CudaPackage):
# https://trilinos.org/pipermail/trilinos-users/2015-March/004802.html # https://trilinos.org/pipermail/trilinos-users/2015-March/004802.html
conflicts('+superlu-dist', when='+complex+amesos2') conflicts('+superlu-dist', when='+complex+amesos2')
conflicts('+strumpack', when='@:13.0.99') conflicts('+strumpack', when='@:13.0.99')
conflicts('+strumpack', when='~metis')
# PnetCDF was only added after v12.10.1 # PnetCDF was only added after v12.10.1
conflicts('+pnetcdf', when='@0:12.10.1') conflicts('+pnetcdf', when='@0:12.10.1')
# https://github.com/trilinos/Trilinos/issues/2994 # https://github.com/trilinos/Trilinos/issues/2994
@ -366,8 +337,7 @@ class Trilinos(CMakePackage, CudaPackage):
conflicts('cxxstd=14', when='+wrapper ^cuda@6.5.14:8.0.61') conflicts('cxxstd=14', when='+wrapper ^cuda@6.5.14:8.0.61')
conflicts('cxxstd=17', when='+wrapper ^cuda@6.5.14:10.2.89') conflicts('cxxstd=17', when='+wrapper ^cuda@6.5.14:10.2.89')
# SCOREC requires parmetis, shards, stk, and zoltan # SCOREC requires shards, stk, and zoltan
conflicts('+scorec', when='~metis')
conflicts('+scorec', when='~mpi') conflicts('+scorec', when='~mpi')
conflicts('+scorec', when='~shards') conflicts('+scorec', when='~shards')
conflicts('+scorec', when='~stk') conflicts('+scorec', when='~stk')
@ -385,26 +355,27 @@ class Trilinos(CMakePackage, CudaPackage):
# ###################### Dependencies ########################## # ###################### Dependencies ##########################
# Everything should be compiled position independent (-fpic)
depends_on('blas') depends_on('blas')
depends_on('lapack') depends_on('lapack')
depends_on('boost', when='+boost') depends_on('boost', when='+boost')
depends_on('glm', when='+glm')
depends_on('hdf5+hl', when='+hdf5') depends_on('hdf5+hl', when='+hdf5')
depends_on('matio', when='+matio') depends_on('matio', when='+matio')
depends_on('metis@5:', when='+metis')
depends_on('suite-sparse', when='+suite-sparse') depends_on('suite-sparse', when='+suite-sparse')
depends_on('zlib', when="+zlib") depends_on('zlib', when="+zlib")
# MPI related dependencies # MPI related dependencies
depends_on('mpi', when='+mpi') depends_on('mpi', when='+mpi')
depends_on('hdf5+mpi', when="+hdf5+mpi") depends_on('hdf5+mpi', when="+hdf5+mpi")
depends_on('netcdf-c', when="+netcdf")
depends_on('netcdf-c+mpi', when="+netcdf~pnetcdf+mpi") depends_on('netcdf-c+mpi', when="+netcdf~pnetcdf+mpi")
depends_on('netcdf-c+mpi+parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:") depends_on('netcdf-c+mpi+parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
depends_on('parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:") depends_on('parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
depends_on('parmetis', when='+metis+mpi') depends_on('metis', when='+zoltan')
depends_on('parmetis', when='+mpi +zoltan')
depends_on('parmetis', when='+scorec')
depends_on('cgns', when='+cgns') depends_on('cgns', when='+cgns')
depends_on('adios2', when='+adios2') depends_on('adios2', when='+adios2')
depends_on('boost', when='+minitensor')
# Trilinos' Tribits config system is limited which makes it very tricky to # Trilinos' Tribits config system is limited which makes it very tricky to
# link Amesos with static MUMPS, see # link Amesos with static MUMPS, see
# https://trilinos.org/docs/dev/packages/amesos2/doc/html/classAmesos2_1_1MUMPS.html # https://trilinos.org/docs/dev/packages/amesos2/doc/html/classAmesos2_1_1MUMPS.html
@ -430,11 +401,12 @@ class Trilinos(CMakePackage, CudaPackage):
depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre') depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre')
depends_on('hypre@develop~internal-superlu', when='@develop+hypre') depends_on('hypre@develop~internal-superlu', when='@develop+hypre')
depends_on('python', when='+python') depends_on('python', when='+python')
depends_on('py-mpi4py', when='+mpi +python', type=('build', 'run'))
depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('py-numpy', when='+python', type=('build', 'run'))
depends_on('swig', when='+python') depends_on('swig', when='+python')
depends_on('kokkos-nvcc-wrapper', when='+wrapper') depends_on('kokkos-nvcc-wrapper', when='+wrapper')
depends_on('hwloc', when='+hwloc') depends_on('hwloc', when='@13: +kokkos')
depends_on('hwloc +cuda', when='+hwloc+cuda') depends_on('hwloc+cuda', when='@13: +kokkos+cuda')
# Dependencies/conflicts when MPI is disabled # Dependencies/conflicts when MPI is disabled
depends_on('hdf5~mpi', when='+hdf5~mpi') depends_on('hdf5~mpi', when='+hdf5~mpi')
@ -493,24 +465,17 @@ def setup_build_environment(self, env):
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec
define = CMakePackage.define define = CMakePackage.define
define_from_variant = self.define_from_variant
def define_trilinos_enable(cmake_var, spec_var=None): def define_trilinos_enable(cmake_var, spec_var=None):
if spec_var is None: if spec_var is None:
spec_var = cmake_var.lower() spec_var = cmake_var.lower()
return self.define_from_variant( return define_from_variant('Trilinos_ENABLE_' + cmake_var, spec_var)
'Trilinos_ENABLE_' + cmake_var, spec_var)
def define_tpl_enable(cmake_var, spec_var=None): def define_tpl_enable(cmake_var, spec_var=None):
if spec_var is None: if spec_var is None:
spec_var = cmake_var.lower() spec_var = cmake_var.lower()
return self.define_from_variant('TPL_ENABLE_' + cmake_var, return define_from_variant('TPL_ENABLE_' + cmake_var, spec_var)
spec_var)
def define_prefix_enable(prefix, cmake_var, spec_var=None):
if spec_var is None:
spec_var = cmake_var.lower()
return self.define_from_variant(
'%s' % prefix, spec_var)
cxx_flags = [] cxx_flags = []
options = [] options = []
@ -522,15 +487,14 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
define('Trilinos_ENABLE_TESTS', False), define('Trilinos_ENABLE_TESTS', False),
define('Trilinos_ENABLE_EXAMPLES', False), define('Trilinos_ENABLE_EXAMPLES', False),
define('Trilinos_ENABLE_CXX11', True), define('Trilinos_ENABLE_CXX11', True),
self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
define_from_variant('BUILD_SHARED_LIBS', 'shared'),
define_trilinos_enable('DEBUG', 'debug'), define_trilinos_enable('DEBUG', 'debug'),
# The following can cause problems on systems that don't have # The following can cause problems on systems that don't have
# static libraries available for things like dl and pthreads # static libraries available for things like dl and pthreads
# for example when trying to build static libs # for example when trying to build static libs
# define('TPL_FIND_SHARED_LIBS', ( # define_from_variant('TPL_FIND_SHARED_LIBS', 'shared')
# 'ON' if '+shared' in spec else 'OFF')) # define('Trilinos_LINK_SEARCH_START_STATIC', '+shared' not in spec)
# define('Trilinos_LINK_SEARCH_START_STATIC', (
# 'OFF' if '+shared' in spec else 'ON'))
]) ])
# MPI settings # MPI settings
@ -549,7 +513,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
# ################## Trilinos Packages ##################### # ################## Trilinos Packages #####################
options.extend([ options.extend([
define_trilinos_enable('ALL_OPTIONAL_PACKAGES', 'alloptpkgs'),
define_trilinos_enable('Amesos'), define_trilinos_enable('Amesos'),
define_trilinos_enable('Amesos2'), define_trilinos_enable('Amesos2'),
define_trilinos_enable('Anasazi'), define_trilinos_enable('Anasazi'),
@ -582,22 +545,18 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
define_trilinos_enable('Stratimikos'), define_trilinos_enable('Stratimikos'),
define_trilinos_enable('Teko'), define_trilinos_enable('Teko'),
define_trilinos_enable('Tempus'), define_trilinos_enable('Tempus'),
define_trilinos_enable('Teuchos'),
define_trilinos_enable('Tpetra'), define_trilinos_enable('Tpetra'),
define_trilinos_enable('TrilinosCouplings'), define_trilinos_enable('TrilinosCouplings'),
define_trilinos_enable('Zoltan'), define_trilinos_enable('Zoltan'),
define_trilinos_enable('Zoltan2'), define_trilinos_enable('Zoltan2'),
define_prefix_enable('EpetraExt_BUILD_BTF', 'epetraextbtf'), define_from_variant('EpetraExt_BUILD_BTF', 'epetraextbtf'),
define_prefix_enable('EpetraExt_BUILD_EXPERIMENTAL', define_from_variant('EpetraExt_BUILD_EXPERIMENTAL',
'epetraextexperimental'), 'epetraextexperimental'),
define_prefix_enable('EpetraExt_BUILD_GRAPH_REORDERINGS', define_from_variant('EpetraExt_BUILD_GRAPH_REORDERINGS',
'epetraextgraphreorderings'), 'epetraextgraphreorderings'),
define_prefix_enable('Amesos2_ENABLE_Basker', 'amesos2basker'), define_from_variant('Amesos2_ENABLE_Basker', 'basker'),
]) ])
options.append(self.define_from_variant('USE_XSDK_DEFAULTS',
'xsdkflags'))
if '+dtk' in spec: if '+dtk' in spec:
options.extend([ options.extend([
define('Trilinos_EXTRA_REPOSITORIES', 'DataTransferKit'), define('Trilinos_EXTRA_REPOSITORIES', 'DataTransferKit'),
@ -656,15 +615,9 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
define('TPL_ENABLE_LAPACK', True), define('TPL_ENABLE_LAPACK', True),
define('LAPACK_LIBRARY_NAMES', lapack.names), define('LAPACK_LIBRARY_NAMES', lapack.names),
define('LAPACK_LIBRARY_DIRS', lapack.directories), define('LAPACK_LIBRARY_DIRS', lapack.directories),
define_tpl_enable('GLM'),
define_tpl_enable('Matio'), define_tpl_enable('Matio'),
define_tpl_enable('X11'),
define_trilinos_enable('Gtest', 'gtest'),
]) ])
if '+hwloc' in spec:
options.append(define_tpl_enable('hwloc'))
options.append(define_tpl_enable('Netcdf')) options.append(define_tpl_enable('Netcdf'))
if '+netcdf' in spec: if '+netcdf' in spec:
options.append(define('NetCDF_ROOT', spec['netcdf-c'].prefix)) options.append(define('NetCDF_ROOT', spec['netcdf-c'].prefix))
@ -715,14 +668,22 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
define('TPL_ENABLE_UMFPACK', False), define('TPL_ENABLE_UMFPACK', False),
]) ])
options.append(define_tpl_enable('METIS')) # METIS and ParMETIS mostly depend on transitive dependencies
options.append(define_tpl_enable('ParMETIS', 'metis')) # STRUMPACK and SuperLU-dist, so don't provide a separate variant for
if '+metis' in spec: # them.
have_metis = 'metis' in spec
options.append(define('TPL_ENABLE_METIS', have_metis))
if have_metis:
options.extend([ options.extend([
define('METIS_LIBRARY_DIRS', spec['metis'].prefix.lib), define('METIS_LIBRARY_DIRS', spec['metis'].prefix.lib),
define('METIS_LIBRARY_NAMES', 'metis'), define('METIS_LIBRARY_NAMES', 'metis'),
define('TPL_METIS_INCLUDE_DIRS', spec['metis'].prefix.include), define('TPL_METIS_INCLUDE_DIRS', spec['metis'].prefix.include),
define('TPL_ENABLE_ParMETIS', True), ])
have_parmetis = 'parmetis' in spec
options.append(define('TPL_ENABLE_ParMETIS', have_parmetis))
if have_parmetis:
options.extend([
define('ParMETIS_LIBRARY_DIRS', [ define('ParMETIS_LIBRARY_DIRS', [
spec['parmetis'].prefix.lib, spec['metis'].prefix.lib spec['parmetis'].prefix.lib, spec['metis'].prefix.lib
]), ]),
@ -777,7 +738,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
options.append(define_tpl_enable('STRUMPACK')) options.append(define_tpl_enable('STRUMPACK'))
if '+strumpack' in spec: if '+strumpack' in spec:
options.extend([ options.extend([
define('TPL_ENABLE_STRUMPACK', True),
define('Amesos2_ENABLE_STRUMPACK', True), define('Amesos2_ENABLE_STRUMPACK', True),
define('STRUMPACK_LIBRARY_DIRS', define('STRUMPACK_LIBRARY_DIRS',
spec['strumpack'].libs.directories[0]), spec['strumpack'].libs.directories[0]),
@ -808,12 +768,13 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
define('CGNS_LIBRARY_DIRS', spec['cgns'].prefix.lib), define('CGNS_LIBRARY_DIRS', spec['cgns'].prefix.lib),
]) ])
options.append(self.define_from_variant('TPL_ENABLE_ADIOS2', 'adios2')) options.append(define_from_variant('TPL_ENABLE_ADIOS2', 'adios2'))
options.append(define( if '@13: +kokkos' in spec:
"Kokkos_ARCH_" + options.append(define('TPL_ENABLE_HWLOC', True))
Kokkos.spack_micro_arch_map[spec.target.name].upper(), kkmarch = Kokkos.spack_micro_arch_map.get(spec.target.name, None)
True)) if kkmarch:
options.append(define("Kokkos_ARCH_" + kkmarch.upper(), True))
# ################# Miscellaneous Stuff ###################### # ################# Miscellaneous Stuff ######################
# CUDA # CUDA
@ -835,10 +796,6 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
if '+wrapper' in spec: if '+wrapper' in spec:
cxx_flags.extend(['--expt-extended-lambda']) cxx_flags.extend(['--expt-extended-lambda'])
# Set the C++ standard to use
options.append(self.define_from_variant(
"CMAKE_CXX_STANDARD", "cxxstd"))
# OpenMP # OpenMP
options.append(define_trilinos_enable('OpenMP')) options.append(define_trilinos_enable('OpenMP'))
if '+openmp' in spec: if '+openmp' in spec:
@ -861,21 +818,20 @@ def define_prefix_enable(prefix, cmake_var, spec_var=None):
'-L%s/ -lgfortran' % (libgfortran), '-L%s/ -lgfortran' % (libgfortran),
)) ))
float_s = '+float' in spec
complex_s = '+complex' in spec
if '+teuchos' in spec:
options.extend([
define('Teuchos_ENABLE_COMPLEX', complex_s),
define('Teuchos_ENABLE_FLOAT', float_s),
])
# Explicit Template Instantiation (ETI) in Tpetra # Explicit Template Instantiation (ETI) in Tpetra
# NOTE: Trilinos will soon move to fixed std::uint64_t for GO and # NOTE: Trilinos will soon move to fixed std::uint64_t for GO and
# std::int32_t or std::int64_t for local. # std::int32_t or std::int64_t for local.
options.append(self.define_from_variant( options.append(define_from_variant(
'Trilinos_ENABLE_EXPLICIT_INSTANTIATION', 'Trilinos_ENABLE_EXPLICIT_INSTANTIATION',
'explicit_template_instantiation')) 'explicit_template_instantiation'))
complex_s = spec.variants['complex'].value
float_s = spec.variants['float'].value
options.extend([
define('Teuchos_ENABLE_COMPLEX', complex_s),
define('Teuchos_ENABLE_FLOAT', float_s),
])
if '+explicit_template_instantiation' in spec and '+tpetra' in spec: if '+explicit_template_instantiation' in spec and '+tpetra' in spec:
options.extend([ options.extend([
define('Tpetra_INST_DOUBLE', True), define('Tpetra_INST_DOUBLE', True),

View File

@ -64,17 +64,17 @@ class Xsdk(BundlePackage):
depends_on('superlu-dist@5.2.2', when='@0.3.0') depends_on('superlu-dist@5.2.2', when='@0.3.0')
depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0') depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0')
depends_on('trilinos@develop+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus~dtk+intrepid2+shards+stratimikos gotype=int cxxstd=14', depends_on('trilinos@develop+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus~dtk+intrepid2+shards+stratimikos gotype=int cxxstd=14',
when='@develop +trilinos') when='@develop +trilinos')
depends_on('trilinos@13.0.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus~dtk+intrepid2+shards gotype=int', depends_on('trilinos@13.0.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus~dtk+intrepid2+shards gotype=int',
when='@0.6.0 +trilinos') when='@0.6.0 +trilinos')
depends_on('trilinos@12.18.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus+dtk+intrepid2+shards', depends_on('trilinos@12.18.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
when='@0.5.0 +trilinos') when='@0.5.0 +trilinos')
depends_on('trilinos@12.14.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan2+amesos2~exodus+dtk+intrepid2+shards', depends_on('trilinos@12.14.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2~exodus+dtk+intrepid2+shards',
when='@0.4.0 +trilinos') when='@0.4.0 +trilinos')
depends_on('trilinos@12.12.1+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus', depends_on('trilinos@12.12.1+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan~zoltan2~amesos2~exodus',
when='@0.3.0 +trilinos') when='@0.3.0 +trilinos')
depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus', depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan~zoltan2~amesos2~exodus',
when='@xsdk-0.2.0 +trilinos') when='@xsdk-0.2.0 +trilinos')
depends_on('datatransferkit@master', when='@develop +trilinos +datatransferkit') depends_on('datatransferkit@master', when='@develop +trilinos +datatransferkit')

View File

@ -44,19 +44,16 @@ class Xyce(CMakePackage):
# Xyce is built against an older version of Trilinos unlikely to be # Xyce is built against an older version of Trilinos unlikely to be
# used for any other purpose. # used for any other purpose.
depends_on('trilinos@12.12.1 +amesos+amesos2+anasazi+aztec+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+teuchos+trilinoscouplings+zoltan+stokhos+amesos2basker+epetraextbtf+epetraextexperimental+epetraextgraphreorderings gotype=all') depends_on('trilinos@12.12.1 +amesos+amesos2+anasazi+aztec+basker+belos+complex+epetra+epetraext+explicit_template_instantiation+fortran+hdf5+ifpack+isorropia+kokkos+nox+sacado+suite-sparse+trilinoscouplings+zoltan+stokhos+epetraextbtf+epetraextexperimental+epetraextgraphreorderings gotype=all')
# MPI options must be consistent with Trilinos # Propagate variants to trilinos:
depends_on('trilinos~mpi', when='~mpi') for _variant in ('mpi',):
depends_on('trilinos+mpi', when='+mpi') depends_on('trilinos~' + _variant, when='~' + _variant)
depends_on('trilinos+' + _variant, when='+' + _variant)
# The default settings for various Trilinos variants would require the # The default settings for various Trilinos variants would require the
# installation of many more packages than are needed for Xyce. # installation of many more packages than are needed for Xyce.
# The default variants in Trilinos have been set for several depends_on('trilinos~float~ifpack2~ml~muelu~zoltan2')
# applications, namely xSDK, deal.ii, and DTK. Future changes to the
# Trilinos recipe will disable all packages by default. At that
# point, these ~variants can be removed from the following recipes.
depends_on('trilinos~adios2~alloptpkgs~boost~cgns~chaco~cuda~cuda_rdc~debug~dtk~exodus~float~glm~gtest~hwloc~hypre~ifpack2~intrepid~intrepid2~ipo~matio~mesquite~metis~minitensor~ml~muelu~mumps~netcdf~openmp~phalanx~piro~pnetcdf~python~rol~rythmos~shards~shared~shylu~stk~stratimikos~strumpack~superlu~superlu-dist~teko~tempus~wrapper~x11~xsdkflags~zlib~zoltan2')
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec