New package: ForTrilinos (#18456)

Remove prior built-in Trilinos subrepository.

Added a Trilinos conflict discovered while documenting ForTrilinos:
```
   ***
   *** ERROR: Setting Trilinos_ENABLE_SEACASExodus=OFF which was 'ON' because SEACASExodus has a required library dependence on disabled TPL Netcdf!
   ***
```
This commit is contained in:
Seth R. Johnson 2020-09-02 08:14:20 -04:00 committed by GitHub
parent d9b945f663
commit 9e51b8d165
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 10 deletions

View File

@ -0,0 +1,62 @@
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Fortrilinos(CMakePackage):
"""ForTrilinos provides a set of Fortran-2003 wrappers to the Trilinos
solver library.
Note that most properties are *transitive* from the underlying Trilinos
configuration. For example, MPI is enabled if and only if the linked
Trilinos version has it, so this package does not provide an indepdent
variant. Instead, use ``fortrilinos ^trilinos~mpi`` to disable MPI support.
Since Trilinos enables a bunch of upstream dependencies by default, it
might be worthwhile to disable them::
spack install fortrilinos \
^trilinos@12.18.1+nox+stratimikos \
~boost~exodus~glm~gtest~hdf5~hypre~matio~metis~mumps~netcdf~suite-sparse
"""
homepage = "https://trilinos.github.io/ForTrilinos/"
url = "https://github.com/trilinos/ForTrilinos/archive/v2.0.0-dev1.tar.gz"
git = "https://github.com/trilinos/ForTrilinos.git"
maintainers = ['sethrj', 'aprokop']
version('2.0.0-dev2', sha256='2a55c668b3fe986583658d272eab2dc076b291a5f2eb582a02602db86a32030b')
version('2.0.0-dev1', sha256='ab664ce2d7fe75c524d7ff6b1efffa3e459ab5739a916e6ea810ae40f39ca4f4')
version('master', branch='master')
variant('hl', default=True, description='Build high-level Trilinos wrappers')
variant('shared', default=True, description='Build shared libraries')
# Trilinos version dependencies
depends_on('trilinos@12.18.1', when='@2.0.0-dev2')
depends_on('trilinos@12.17.1', when='@2.0.0-dev1')
# Baseline trilinos dependencies
depends_on('trilinos+teuchos gotype=long_long')
# Full trilinos dependencies
depends_on('trilinos+amesos2+anasazi+belos+kokkos+ifpack2+muelu+nox+tpetra'
'+stratimikos', when='+hl')
@run_before('cmake')
def die_without_fortran(self):
# Until we can pass variants such as +fortran through virtual
# dependencies, require Fortran compiler to
# avoid delayed build errors in dependents.
if (self.compiler.f77 is None) or (self.compiler.fc is None):
raise InstallError('ForTrilinos requires a Fortran compiler')
def cmake_args(self):
return [
self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
self.define('ForTrilinos_EXAMPLES', self.run_tests),
self.define('ForTrilinos_TESTING', self.run_tests),
]

View File

@ -198,8 +198,6 @@ class Trilinos(CMakePackage):
# External package options
variant('dtk', default=False,
description='Enable DataTransferKit')
variant('fortrilinos', default=False,
description='Enable ForTrilinos')
variant('mesquite', default=False,
description='Enable Mesquite')
@ -220,11 +218,6 @@ class Trilinos(CMakePackage):
placement='DataTransferKit',
submodules=True,
when='+dtk @develop')
resource(name='fortrilinos',
git='https://github.com/trilinos/ForTrilinos.git',
tag='develop',
placement='packages/ForTrilinos',
when='+fortrilinos')
resource(name='mesquite',
url='https://github.com/trilinos/mesquite/archive/trilinos-release-12-12-1.tar.gz',
sha256='e0d09b0939dbd461822477449dca611417316e8e8d8268fd795debb068edcbb5',
@ -250,6 +243,7 @@ class Trilinos(CMakePackage):
conflicts('+belos', when='~teuchos')
conflicts('+epetraext', when='~epetra')
conflicts('+epetraext', when='~teuchos')
conflicts('+exodus', when='~netcdf')
conflicts('+ifpack2', when='~belos')
conflicts('+ifpack2', when='~teuchos')
conflicts('+ifpack2', when='~tpetra')
@ -297,9 +291,6 @@ class Trilinos(CMakePackage):
conflicts('+dtk', when='~tpetra')
# Only allow DTK with Trilinos 12.14 and develop
conflicts('+dtk', when='@0:12.12.99,master')
conflicts('+fortrilinos', when='~fortran')
conflicts('+fortrilinos', when='@:99')
conflicts('+fortrilinos', when='@master')
# Only allow Mesquite with Trilinos 12.12 and up, and develop
conflicts('+mesquite', when='@0:12.10.99,master')
# Can only use one type of SuperLU