summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorGreg Sjaardema <gsjaardema@gmail.com>2018-12-17 11:57:31 -0700
committerAdam J. Stewart <ajstewart426@gmail.com>2018-12-17 12:57:31 -0600
commitccce3b79ab22952becc946d953dab0f501d47afd (patch)
tree1cb2bb6f46966e8c252b47c04e6b43ac362aa5ec /var
parentf979b974a5521e4595ea910e189668dbcab49c59 (diff)
downloadspack-ccce3b79ab22952becc946d953dab0f501d47afd.tar.gz
spack-ccce3b79ab22952becc946d953dab0f501d47afd.tar.bz2
spack-ccce3b79ab22952becc946d953dab0f501d47afd.tar.xz
spack-ccce3b79ab22952becc946d953dab0f501d47afd.zip
SEACAS: Add preliminary support for seacas package (#9972)
* SEACAS: Add preliminary support for seacas package * Eliminate leftover from package I copied from. * And remove another stray line Sorry, thought I had checked this better... * SEACAS: Shorten long lines; fixup indentation * SEACAS: Remove unused os import * Add PLASMA version 18.11.0 and Lua variant (#9689) * Add PLASMA 18.11.1 with optional Lua and test for headers * New versions for a few python modules (#9969) * py-jupyter-console: Add version 5.2.0 * py-jupyter-core: add version 4.4.0 * py-lxml: add version 4.2.5 * py-zmq: add version 17.1.2 * py-terminado: add version 0.8.1 * py-pexpect: add version 4.6.0 * py-pytables: add version 3.4.4 * SEACAS: Default to mpi on * SEACAS: Modify to reduce variants Instead of using an `allpkgs` or explicitly specifying each individual subset, changed to minimize variants: * By default, the exodus and IOSS libraries are built and a few executables directly related to the IOSS library. * variant `common` defaults to True and builds the "common" seacas applications. This is based on my definition, so there may be could be some discussion on what belongs here. * variant `legacy` defaults to True and builds the remainder of the seacas applications. These are still used, but mainly in more esoteric areas. Might be better to default to False, but I wanted default to just build everything which is what other SEACAS builds always do... Removed the `kokkos` variants for now as I need to do some more thinking on how best to support this. Not often used currently, so shouldn't be an issue. Cleaned up other issues raised by Adam and found by me. * SEACAS: Address flake8 issues * SEACAS: Clean up variant package logic Fixed package variant logic. Consolidated some other variant handling logic Other minor refactors for hopefully better readability * SEACAS: Fix flake8 error Missing whitespace around operator fixed.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/seacas/package.py249
1 files changed, 249 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py
new file mode 100644
index 0000000000..fae91e9809
--- /dev/null
+++ b/var/spack/repos/builtin/packages/seacas/package.py
@@ -0,0 +1,249 @@
+# Copyright 2013-2018 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)
+
+import sys
+from spack import *
+from spack.operating_systems.mac_os import macos_version
+
+#
+# Need to add:
+# KOKKOS support using an external (i.e. spack-supplied) kokkos library.
+# Data Warehouse (FAODEL) enable/disable
+
+
+class Seacas(CMakePackage):
+ """The SEACAS Project contains the Exodus and IOSS libraries and a
+ collection of applications which create, query, modify, or
+ translate exodus databases. Default is to build the exodus and
+ IOSS libraries and the io_shell, io_info, struc_to_unstruc apps.
+ """
+ homepage = "http://gsjaardema.github.io/seacas/"
+ git = "https://github.com/gsjaardema/seacas.git"
+
+ maintainers = ['gsjaardema']
+
+ # ###################### Versions ##########################
+ version('master', branch='master')
+
+ # ###################### Variants ##########################
+ # Package options
+ # The I/O libraries (exodus, IOSS) are always built
+ # -- required of both applications and legacy variants.
+ variant('applications', default=True,
+ description='Build all "current" SEACAS applications. This'
+ ' includes a debatable list of essential applications: '
+ 'aprepro, conjoin, ejoin, epu, exo2mat, mat2exo, '
+ 'exo_format, exodiff, explore, grepos, '
+ 'nemslice, nemspread')
+ variant('legacy', default=True,
+ description='Build all "legacy" SEACAS applications. This includes'
+ ' a debatable list of "legacy" applications: algebra, blot, '
+ 'exomatlab, exotxt, fastq, gen3d, genshell, gjoin, mapvar, '
+ 'mapvar-kd, numbers, txtexo, nemesis')
+
+ # Build options
+ variant('fortran', default=True,
+ description='Compile with Fortran support')
+ variant('shared', default=True,
+ description='Enables the build of shared libraries')
+ variant('mpi', default=True, description='Enables MPI parallelism.')
+
+ variant('thread_safe', default=False,
+ description='Enable thread-safe exodus and IOSS libraries')
+
+ # TPLs (alphabet order)
+ variant('cgns', default=True,
+ description='Enable CGNS')
+ variant('matio', default=True,
+ description='Compile with matio (MatLab) support')
+ variant('metis', default=False,
+ description='Compile with METIS and ParMETIS')
+ variant('x11', default=True,
+ description='Compile with X11')
+
+ # ###################### Dependencies ##########################
+
+ # Everything should be compiled position independent (-fpic)
+
+ depends_on('netcdf@4.6.2+mpi+parallel-netcdf', when='+mpi')
+ depends_on('netcdf@4.6.2~mpi', when='~mpi')
+ depends_on('cgns@develop+mpi+scoping', when='+cgns +mpi')
+ depends_on('cgns@develop~mpi+scoping', when='+cgns ~mpi')
+ depends_on('matio', when='+matio')
+ depends_on('metis+int64+real64', when='+metis ~mpi')
+ depends_on('parmetis+int64+real64', when='+metis +mpi')
+
+ # MPI related dependencies
+ depends_on('mpi', when='+mpi')
+
+ depends_on('cmake@3.1:', type='build')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ options = []
+
+ # #################### Base Settings #######################
+
+ if '+mpi' in spec:
+ options.extend([
+ '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,
+ '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx,
+ '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc,
+ '-DTPL_ENABLE_MPI:BOOL=ON',
+ '-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix,
+ ])
+
+ options.extend([
+ '-DSEACASProj_ENABLE_TESTS:BOOL=ON',
+ '-DSEACASProj_ENABLE_CXX11:BOOL=ON',
+ '-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=%s' % (
+ 'ON' if '+shared' in spec else 'OFF'),
+ '-DBUILD_SHARED_LIBS:BOOL=%s' % (
+ 'ON' if '+shared' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_Kokkos:BOOL=OFF',
+ '-DSEACASProj_HIDE_DEPRECATED_CODE:BOOL=OFF',
+ '-DSEACASExodus_ENABLE_THREADSAFE:BOOL=%s' % (
+ 'ON' if '+thread_safe' in spec else 'OFF'),
+ '-DSEACASIoss_ENABLE_THREADSAFE:BOOL=%s' % (
+ 'ON' if '+thread_safe' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_Fortran:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DTPL_ENABLE_X11:BOOL=%s' % (
+ 'ON' if '+x11' in spec else 'OFF'),
+ ])
+
+ # ########## What applications should be built #############
+ # Check whether they want everything; if so, do the easy way...
+ if '+applications' in spec and '+legacy' in spec:
+ options.extend([
+ '-DSEACASProj_ENABLE_ALL_PACKAGES:BOOL=ON',
+ '-DSEACASProj_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON',
+ '-DSEACASProj_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON',
+ ])
+ else:
+ # Don't want everything; handle the subsets:
+ options.extend([
+ '-DSEACASProj_ENABLE_ALL_PACKAGES:BOOL=OFF',
+ '-DSEACASProj_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF',
+ '-DSEACASProj_ENABLE_SECONDARY_TESTED_CODE:BOOL=OFF',
+ '-DSEACASProj_ENABLE_SEACASIoss:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExodus:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExodus_for:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASExoIIv2for32:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ ])
+
+ if '+applications' in spec:
+ options.extend([
+ '-DSEACASProj_ENABLE_SEACASAprepro:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASAprepro_lib:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASConjoin:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASEjoin:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASEpu:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExo2mat:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExo_format:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExodiff:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASExplore:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASGrepos:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASMat2exo:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASNemslice:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASNemspread:BOOL=ON',
+ ])
+
+ if '+legacy' in spec:
+ options.extend([
+ '-DSEACASProj_ENABLE_SEACASAlgebra:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASBlot:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASEx1ex2v2:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASEx2ex1v2:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASExomatlab:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASExotec2:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASExotxt:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASFastq:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASGen3D:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASGenshell:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASGjoin:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASMapvar:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASMapvar-kd:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASNemesis:BOOL=ON',
+ '-DSEACASProj_ENABLE_SEACASNumbers:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ '-DSEACASProj_ENABLE_SEACASTxtexo:BOOL=%s' % (
+ 'ON' if '+fortran' in spec else 'OFF'),
+ ])
+
+ # ##################### Dependencies ##########################
+ # Always need NetCDF
+ options.extend([
+ '-DTPL_ENABLE_Netcdf:BOOL=ON',
+ '-DNetCDF_ROOT:PATH=%s' % spec['netcdf'].prefix,
+ ])
+
+ if '+metis' in spec:
+ options.extend([
+ '-DTPL_ENABLE_METIS:BOOL=ON',
+ '-DMETIS_LIBRARY_DIRS=%s' % spec['metis'].prefix.lib,
+ '-DMETIS_LIBRARY_NAMES=metis',
+ '-DTPL_METIS_INCLUDE_DIRS=%s' % spec['metis'].prefix.include,
+ '-DTPL_ENABLE_ParMETIS:BOOL=ON',
+ '-DParMETIS_LIBRARY_DIRS=%s;%s' % (
+ spec['parmetis'].prefix.lib, spec['metis'].prefix.lib),
+ '-DParMETIS_LIBRARY_NAMES=parmetis;metis',
+ '-DTPL_ParMETIS_INCLUDE_DIRS=%s;%s' % (
+ spec['parmetis'].prefix.include,
+ spec['metis'].prefix.include)
+ ])
+ else:
+ options.extend([
+ '-DTPL_ENABLE_METIS:BOOL=OFF',
+ '-DTPL_ENABLE_ParMETIS:BOOL=OFF',
+ ])
+
+ if '+matio' in spec:
+ options.extend([
+ '-DTPL_ENABLE_Matio:BOOL=ON',
+ '-DMatio_ROOT:PATH=%s' % spec['matio'].prefix
+ ])
+ else:
+ options.extend([
+ '-DTPL_ENABLE_Matio:BOOL=OFF'
+ ])
+
+ if '+cgns' in spec:
+ options.extend([
+ '-DTPL_ENABLE_CGNS:BOOL=ON',
+ '-DCGNS_ROOT:PATH=%s' % spec['cgns'].prefix,
+ ])
+ else:
+ options.extend([
+ '-DTPL_ENABLE_CGNS:BOOL=OFF'
+ ])
+
+ # ################# RPath Handling ######################
+ if sys.platform == 'darwin' and macos_version() >= Version('10.12'):
+ # use @rpath on Sierra due to limit of dynamic loader
+ options.append('-DCMAKE_MACOSX_RPATH:BOOL=ON')
+ else:
+ options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s' %
+ self.prefix.lib)
+
+ return options