summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2016-06-20 10:32:52 -0700
committerGitHub <noreply@github.com>2016-06-20 10:32:52 -0700
commitc09111bbef7b19071bf8e73a9b20804bd43f5e71 (patch)
tree62c777568c26d7b603d25ffa5a0d4fa244ddf806 /var
parent59318f47059a6a02542bd140fcc084ce7c385aaf (diff)
parent0e04e65ae0108437e6bf5d3e2233cdbc775fd136 (diff)
downloadspack-c09111bbef7b19071bf8e73a9b20804bd43f5e71.tar.gz
spack-c09111bbef7b19071bf8e73a9b20804bd43f5e71.tar.bz2
spack-c09111bbef7b19071bf8e73a9b20804bd43f5e71.tar.xz
spack-c09111bbef7b19071bf8e73a9b20804bd43f5e71.zip
Merge pull request #1053 from davydden/pkg/dealii_suite_update
update Petsc, Slepc, Trilinos, Superlu-dist and deal.II
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/dealii/package.py35
-rw-r--r--var/spack/repos/builtin/packages/petsc/package.py50
-rw-r--r--var/spack/repos/builtin/packages/slepc/package.py13
-rw-r--r--var/spack/repos/builtin/packages/superlu-dist/package.py47
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py5
5 files changed, 85 insertions, 65 deletions
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 54b6426d36..23ec74abed 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -80,8 +80,8 @@ class Dealii(Package):
depends_on("netcdf-cxx", when='+netcdf+mpi')
depends_on("oce", when='+oce')
depends_on("p4est", when='+p4est+mpi')
- depends_on("petsc+mpi", when='+petsc+mpi')
- depends_on("slepc", when='+slepc+petsc+mpi')
+ depends_on("petsc@:3.6.4+mpi", when='+petsc+mpi') # FIXME: update after 3.7 is supported upstream. # NOQA: ignore=E501
+ depends_on("slepc@:3.6.3", when='+slepc+petsc+mpi')
depends_on("trilinos", when='+trilinos+mpi')
# developer dependnecies
@@ -108,12 +108,11 @@ class Dealii(Package):
# of Spack's. Be more specific to avoid this.
# Note that both lapack and blas are provided in -DLAPACK_XYZ.
'-DLAPACK_FOUND=true',
- '-DLAPACK_INCLUDE_DIRS=%s;%s' %
- (spec['lapack'].prefix.include,
- spec['blas'].prefix.include),
- '-DLAPACK_LIBRARIES=%s;%s' %
- (spec['lapack'].lapack_shared_lib,
- spec['blas'].blas_shared_lib),
+ '-DLAPACK_INCLUDE_DIRS=%s;%s' % (
+ spec['lapack'].prefix.include, spec['blas'].prefix.include),
+ '-DLAPACK_LIBRARIES=%s;%s' % (
+ spec['lapack'].lapack_shared_lib,
+ spec['blas'].blas_shared_lib),
'-DMUPARSER_DIR=%s' % spec['muparser'].prefix,
'-DUMFPACK_DIR=%s' % spec['suite-sparse'].prefix,
'-DTBB_DIR=%s' % spec['tbb'].prefix,
@@ -168,14 +167,14 @@ class Dealii(Package):
if '+netcdf' in spec:
options.extend([
'-DNETCDF_FOUND=true',
- '-DNETCDF_LIBRARIES=%s;%s' %
- (join_path(spec['netcdf-cxx'].prefix.lib,
- 'libnetcdf_c++.%s' % dsuf),
- join_path(spec['netcdf'].prefix.lib,
- 'libnetcdf.%s' % dsuf)),
- '-DNETCDF_INCLUDE_DIRS=%s;%s' %
- (spec['netcdf-cxx'].prefix.include,
- spec['netcdf'].prefix.include),
+ '-DNETCDF_LIBRARIES=%s;%s' % (
+ join_path(spec['netcdf-cxx'].prefix.lib,
+ 'libnetcdf_c++.%s' % dsuf),
+ join_path(spec['netcdf'].prefix.lib,
+ 'libnetcdf.%s' % dsuf)),
+ '-DNETCDF_INCLUDE_DIRS=%s;%s' % (
+ spec['netcdf-cxx'].prefix.include,
+ spec['netcdf'].prefix.include),
])
else:
options.extend([
@@ -266,9 +265,9 @@ class Dealii(Package):
filter_file(r'(LA::SolverCG solver\(solver_control\);)', ('TrilinosWrappers::SolverDirect::AdditionalData data(false,"Amesos_Superludist"); TrilinosWrappers::SolverDirect solver(solver_control,data);'), 'step-40.cc') # NOQA: ignore=E501
filter_file(r'(LA::MPI::PreconditionAMG preconditioner;)',
(''), 'step-40.cc')
- filter_file(r'(LA::MPI::PreconditionAMG::AdditionalData data;)',
+ filter_file(r'(LA::MPI::PreconditionAMG::AdditionalData data;)', # NOQA: ignore=E501
(''), 'step-40.cc')
- filter_file(r'(preconditioner.initialize\(system_matrix, data\);)',
+ filter_file(r'(preconditioner.initialize\(system_matrix, data\);)', # NOQA: ignore=E501
(''), 'step-40.cc')
filter_file(r'(solver\.solve \(system_matrix, completely_distributed_solution, system_rhs,)', ('solver.solve (system_matrix, completely_distributed_solution, system_rhs);'), 'step-40.cc') # NOQA: ignore=E501
filter_file(r'(preconditioner\);)', (''), 'step-40.cc')
diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py
index 6456a1aabf..8dd1d8d2b9 100644
--- a/var/spack/repos/builtin/packages/petsc/package.py
+++ b/var/spack/repos/builtin/packages/petsc/package.py
@@ -28,13 +28,16 @@ from spack import *
class Petsc(Package):
"""
- PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications
- modeled by partial differential equations.
+ PETSc is a suite of data structures and routines for the scalable
+ (parallel) solution of scientific applications modeled by partial
+ differential equations.
"""
homepage = "http://www.mcs.anl.gov/petsc/index.html"
url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.5.3.tar.gz"
+ version('3.7.2', '50da49867ce7a49e7a0c1b37f4ec7b34')
+ version('3.6.4', '7632da2375a3df35b8891c9526dbdde7')
version('3.6.3', '91dd3522de5a5ef039ff8f50800db606')
version('3.5.3', 'd4fd2734661e89f18ac6014b5dd1ef2f')
version('3.5.2', 'ad170802b3b058b5deb9cd1f968e7e13')
@@ -69,10 +72,12 @@ class Petsc(Package):
depends_on('hdf5+mpi', when='+hdf5+mpi')
depends_on('parmetis', when='+metis+mpi')
# Hypre does not support complex numbers.
- # Also PETSc prefer to build it without internal superlu, likely due to conflict in headers
- # see https://bitbucket.org/petsc/petsc/src/90564b43f6b05485163c147b464b5d6d28cde3ef/config/BuildSystem/config/packages/hypre.py
+ # Also PETSc prefer to build it without internal superlu, likely due to
+ # conflict in headers see
+ # https://bitbucket.org/petsc/petsc/src/90564b43f6b05485163c147b464b5d6d28cde3ef/config/BuildSystem/config/packages/hypre.py # NOQA: ignore=E501
depends_on('hypre~internal-superlu', when='+hypre+mpi~complex')
- depends_on('superlu-dist', when='+superlu-dist+mpi')
+ depends_on('superlu-dist@:4.3', when='@:3.6.4+superlu-dist+mpi')
+ depends_on('superlu-dist@5.0.0:', when='@3.7:+superlu-dist+mpi')
depends_on('mumps+mpi', when='+mumps+mpi')
depends_on('scalapack', when='+mumps+mpi')
@@ -80,17 +85,17 @@ class Petsc(Package):
if '~mpi' in self.spec:
compiler_opts = [
'--with-cc=%s' % os.environ['CC'],
- '--with-cxx=%s' % (os.environ['CXX'] if self.compiler.cxx is not None else '0'),
- '--with-fc=%s' % (os.environ['FC'] if self.compiler.fc is not None else '0'),
+ '--with-cxx=%s' % (os.environ['CXX'] if self.compiler.cxx is not None else '0'), # NOQA: ignore=E501
+ '--with-fc=%s' % (os.environ['FC'] if self.compiler.fc is not None else '0'), # NOQA: ignore=E501
'--with-mpi=0'
]
- error_message_fmt = '\t{library} support requires "+mpi" to be activated'
+ error_message_fmt = '\t{library} support requires "+mpi" to be activated' # NOQA: ignore=E501
- # If mpi is disabled (~mpi), it's an error to have any of these enabled.
- # This generates a list of any such errors.
+ # If mpi is disabled (~mpi), it's an error to have any of these
+ # enabled. This generates a list of any such errors.
errors = [error_message_fmt.format(library=x)
- for x in ('hdf5', 'hypre', 'parmetis','mumps','superlu-dist')
- if ('+'+x) in self.spec]
+ for x in ('hdf5', 'hypre', 'parmetis', 'mumps', 'superlu-dist') # NOQA: ignore=E501
+ if ('+' + x) in self.spec]
if errors:
errors = ['incompatible variants given'] + errors
raise RuntimeError('\n'.join(errors))
@@ -105,26 +110,31 @@ class Petsc(Package):
options = ['--with-ssl=0']
options.extend(self.mpi_dependent_options())
options.extend([
- '--with-precision=%s' % ('double' if '+double' in spec else 'single'),
- '--with-scalar-type=%s' % ('complex' if '+complex' in spec else 'real'),
+ '--with-precision=%s' % ('double' if '+double' in spec else 'single'), # NOQA: ignore=E501
+ '--with-scalar-type=%s' % ('complex' if '+complex' in spec else 'real'), # NOQA: ignore=E501
'--with-shared-libraries=%s' % ('1' if '+shared' in spec else '0'),
'--with-debugging=%s' % ('1' if '+debug' in spec else '0'),
'--with-blas-lapack-dir=%s' % spec['lapack'].prefix
])
# Activates library support if needed
- for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis','mumps','scalapack'):
+ for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis',
+ 'mumps', 'scalapack'):
options.append(
- '--with-{library}={value}'.format(library=library, value=('1' if library in spec else '0'))
+ '--with-{library}={value}'.format(library=library, value=('1' if library in spec else '0')) # NOQA: ignore=E501
)
if library in spec:
options.append(
- '--with-{library}-dir={path}'.format(library=library, path=spec[library].prefix)
+ '--with-{library}-dir={path}'.format(library=library, path=spec[library].prefix) # NOQA: ignore=E501
)
- # PETSc does not pick up SuperluDist from the dir as they look for superlu_dist_4.1.a
+ # PETSc does not pick up SuperluDist from the dir as they look for
+ # superlu_dist_4.1.a
if 'superlu-dist' in spec:
options.extend([
- '--with-superlu_dist-include=%s' % spec['superlu-dist'].prefix.include,
- '--with-superlu_dist-lib=%s' % join_path(spec['superlu-dist'].prefix.lib, 'libsuperlu_dist.a'),
+ '--with-superlu_dist-include=%s' %
+ spec['superlu-dist'].prefix.include,
+ '--with-superlu_dist-lib=%s' %
+ join_path(spec['superlu-dist'].prefix.lib,
+ 'libsuperlu_dist.a'),
'--with-superlu_dist=1'
])
else:
diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py
index c148a579ec..d3739bf6a6 100644
--- a/var/spack/repos/builtin/packages/slepc/package.py
+++ b/var/spack/repos/builtin/packages/slepc/package.py
@@ -34,13 +34,16 @@ class Slepc(Package):
homepage = "http://www.grycap.upv.es/slepc"
url = "http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz"
+ version('3.7.1', '670216f263e3074b21e0623c01bc0f562fdc0bffcd7bd42dd5d8edbe73a532c2')
+ version('3.6.3', '384939d009546db37bc05ed81260c8b5ba451093bf891391d32eb7109ccff876')
version('3.6.2', '2ab4311bed26ccf7771818665991b2ea3a9b15f97e29fd13911ab1293e8e65df')
- variant('arpack', default=False, description='Enables Arpack wrappers')
+ variant('arpack', default=True, description='Enables Arpack wrappers')
- depends_on('petsc')
- depends_on('arpack-ng~mpi',when='+arpack^petsc~mpi')
- depends_on('arpack-ng+mpi',when='+arpack^petsc+mpi')
+ depends_on('petsc@3.7:', when='@3.7.1:')
+ depends_on('petsc@3.6.3:3.6.4', when='@3.6.2:3.6.3')
+ depends_on('arpack-ng~mpi', when='+arpack^petsc~mpi')
+ depends_on('arpack-ng+mpi', when='+arpack^petsc+mpi')
def install(self, spec, prefix):
# set SLEPC_DIR for installation
@@ -64,7 +67,7 @@ class Slepc(Package):
configure('--prefix=%s' % prefix, *options)
make('MAKE_NP=%s' % make_jobs, parallel=False)
- #FIXME:
+ # FIXME:
# make('test')
make('install')
diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py
index 6c06b5497c..e51d7224d9 100644
--- a/var/spack/repos/builtin/packages/superlu-dist/package.py
+++ b/var/spack/repos/builtin/packages/superlu-dist/package.py
@@ -25,50 +25,54 @@
from spack import *
import glob
+
class SuperluDist(Package):
- """A general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines."""
+ """A general purpose library for the direct solution of large, sparse,
+ nonsymmetric systems of linear equations on high performance machines."""
homepage = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/"
url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz"
version('5.0.0', '2b53baf1b0ddbd9fcf724992577f0670')
- # default to version 4.3 since petsc and trilinos are not tested with 5.0.
- version('4.3', 'ee66c84e37b4f7cc557771ccc3dc43ae', preferred=True)
+ version('4.3', 'ee66c84e37b4f7cc557771ccc3dc43ae')
version('4.2', 'ae9fafae161f775fbac6eba11e530a65')
version('4.1', '4edee38cc29f687bd0c8eb361096a455')
version('4.0', 'c0b98b611df227ae050bc1635c6940e0')
- depends_on ('mpi')
- depends_on ('blas')
- depends_on ('lapack')
- depends_on ('parmetis')
- depends_on ('metis@5:')
+ depends_on('mpi')
+ depends_on('blas')
+ depends_on('lapack')
+ depends_on('parmetis')
+ depends_on('metis@5:')
def install(self, spec, prefix):
makefile_inc = []
makefile_inc.extend([
'PLAT = _mac_x',
- 'DSuperLUroot = %s' % self.stage.source_path, #self.stage.path, prefix
+ 'DSuperLUroot = %s' % self.stage.source_path,
'DSUPERLULIB = $(DSuperLUroot)/lib/libsuperlu_dist.a',
'BLASDEF = -DUSE_VENDOR_BLAS',
- 'BLASLIB = -L%s -llapack %s -lblas' % (spec['lapack'].prefix.lib, spec['blas'].prefix.lib), # FIXME: avoid hardcoding blas/lapack lib names
+ 'BLASLIB = %s %s' %
+ (to_link_flags(spec['lapack'].lapack_shared_lib),
+ to_link_flags(spec['blas'].blas_shared_lib)),
'METISLIB = -L%s -lmetis' % spec['metis'].prefix.lib,
'PARMETISLIB = -L%s -lparmetis' % spec['parmetis'].prefix.lib,
'FLIBS =',
- 'LIBS = $(DSUPERLULIB) $(BLASLIB) $(PARMETISLIB) $(METISLIB)',
+ 'LIBS = $(DSUPERLULIB) $(BLASLIB) $(PARMETISLIB) $(METISLIB)', # NOQA: ignore=E501
'ARCH = ar',
'ARCHFLAGS = cr',
'RANLIB = true',
- 'CC = mpicc', # FIXME avoid hardcoding MPI compiler names
- 'CFLAGS = -fPIC -std=c99 -O2 -I%s -I%s' %(spec['parmetis'].prefix.include, spec['metis'].prefix.include),
+ 'CC = %s' % spec['mpi'].mpicc,
+ 'CFLAGS = -fPIC -std=c99 -O2 -I%s -I%s' %
+ (spec['parmetis'].prefix.include,
+ spec['metis'].prefix.include),
'NOOPTS = -fPIC -std=c99',
- 'FORTRAN = mpif77',
+ 'FORTRAN = %s' % spec['mpi'].mpif77,
'F90FLAGS = -O2',
- 'LOADER = mpif77',
+ 'LOADER = %s' % spec['mpi'].mpif77,
'LOADOPTS =',
'CDEFS = -DAdd_'
- ])
+ ])
- #with working_dir('src'):
with open('make.inc', 'w') as fh:
fh.write('\n'.join(makefile_inc))
@@ -83,9 +87,10 @@ class SuperluDist(Package):
mkdirp(headers_location)
mkdirp(prefix.lib)
- headers = glob.glob(join_path(self.stage.source_path, 'SRC','*.h'))
+ headers = glob.glob(join_path(self.stage.source_path, 'SRC', '*.h'))
for h in headers:
- install(h,headers_location)
+ install(h, headers_location)
- superludist_lib = join_path(self.stage.source_path, 'lib/libsuperlu_dist.a')
- install(superludist_lib,self.prefix.lib)
+ superludist_lib = join_path(self.stage.source_path,
+ 'lib/libsuperlu_dist.a')
+ install(superludist_lib, self.prefix.lib)
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 6913d79dcc..3a53ac5c01 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -45,6 +45,8 @@ class Trilinos(Package):
homepage = "https://trilinos.org/"
url = "http://trilinos.csbsju.edu/download/files/trilinos-12.2.1-Source.tar.gz"
+ version('12.6.3', '960f5f4d3f7c3da818e5a5fb4684559eff7e0c25f959ef576561b8a52f0e4d1e')
+ version('12.6.2', '0c076090508170ddee5efeed317745027f9418319720dc40a072e478775279f9')
version('12.6.1', 'adcf2d3aab74cdda98f88fee19cd1442604199b0515ee3da4d80cbe8f37d00e4')
version('12.4.2', '7c830f7f0f68b8ad324690603baf404e')
version('12.2.1', '6161926ea247863c690e927687f83be9')
@@ -89,7 +91,8 @@ class Trilinos(Package):
# work at the end. But let's avoid all this by simply using shared libs
depends_on('mumps@5.0:+mpi+shared', when='+mumps')
depends_on('scalapack', when='+mumps')
- depends_on('superlu-dist', when='+superlu-dist')
+ depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist')
+ depends_on('superlu-dist', when='@12.6.2:+superlu-dist')
depends_on('hypre~internal-superlu', when='+hypre')
depends_on('hdf5+mpi', when='+hdf5')
depends_on('python', when='+python')