Merge pull request #442 from xjrc/features/mesh-packages

Add Mesh Packages: Crypto++, Exodus II, ndiff, TetGen, and Triangle
This commit is contained in:
Todd Gamblin 2016-02-17 13:14:31 -08:00
commit 9a5e0c59b0
7 changed files with 167 additions and 1 deletions

View File

@ -0,0 +1,31 @@
import glob
from spack import *
class Cryptopp(Package):
"""Crypto++ is an open-source C++ library of cryptographic schemes. The
library supports a number of different cryptography algorithms, including
authenticated encryption schemes (GCM, CCM), hash functions (SHA-1, SHA2),
public-key encryption (RSA, DSA), and a few obsolete/historical encryption
algorithms (MD5, Panama)."""
homepage = "http://www.cryptopp.com/"
url = "http://www.cryptopp.com/cryptopp563.zip"
version('5.6.3', '3c5b70e2ec98b7a24988734446242d07')
version('5.6.2', '7ed022585698df48e65ce9218f6c6a67')
def install(self, spec, prefix):
make()
mkdirp(prefix.include)
for hfile in glob.glob('*.h*'):
install(hfile, prefix.include)
mkdirp(prefix.lib)
install('libcryptopp.a', prefix.lib)
def url_for_version(self, version):
version_tuple = tuple(v for v in iter(version))
version_string = reduce(lambda vs, nv: vs + str(nv), version_tuple, "")
return "%scryptopp%s.zip" % (Cryptopp.homepage, version_string)

View File

@ -0,0 +1,12 @@
diff --git a/cmake-exodus b/cmake-exodus
index 787fd9d..ed073a2 100755
--- a/cmake-exodus
+++ b/cmake-exodus
@@ -1,4 +1,6 @@
-EXTRA_ARGS=$@
+#!/bin/bash
+
+EXTRA_ARGS=-DSEACASProj_ENABLE_CXX11=OFF
### Change this to point to the compilers you want to use
CC=gcc

View File

@ -0,0 +1,49 @@
from spack import *
# TODO: Add support for a C++11 enabled installation that filters out the
# TODO: "C++11-Disabled" flag (but only if the spec compiler supports C++11).
# TODO: Add support for parallel installation that uses MPI.
# TODO: Create installation options for NetCDF that support larger page size
# TODO: suggested by Exodus (see the repository "README" file).
class Exodusii(Package):
"""Exodus II is a C++/Fortran library developed to store and retrieve data for
finite element analyses. It's used for preprocessing (problem definition),
postprocessing (results visualization), and data transfer between codes.
An Exodus II data file is a random access, machine independent, binary
file that is written and read via C, C++, or Fortran API routines."""
homepage = "https://github.com/gsjaardema/seacas"
url = "https://github.com/gsjaardema/seacas/archive/master.zip"
version('2016-02-08', git='https://github.com/gsjaardema/seacas.git', commit='dcf3529')
# TODO: Make this a build dependency once build dependencies are supported
# (see: https://github.com/LLNL/spack/pull/378).
depends_on('cmake@2.8.7:')
depends_on('hdf5~shared~mpi')
depends_on('netcdf~mpi')
patch('exodus-cmake.patch')
def patch(self):
ff = FileFilter('cmake-exodus')
ff.filter('CMAKE_INSTALL_PREFIX:PATH=${ACCESS}',
'CMAKE_INSTALL_PREFIX:PATH=%s' % self.spec.prefix, string=True)
ff.filter('NetCDF_DIR:PATH=${TPL}',
'NetCDF_DIR:PATH=%s' % self.spec['netcdf'].prefix, string=True)
ff.filter('HDF5_ROOT:PATH=${TPL}',
'HDF5_ROOT:PATH=%s' % self.spec['hdf5'].prefix, string=True)
def install(self, spec, prefix):
mkdirp('build')
cd('build')
cmake_exodus = Executable('../cmake-exodus')
cmake_exodus()
make()
make('install')

View File

@ -42,6 +42,7 @@ class Hdf5(Package):
version('1.8.13', 'c03426e9e77d7766944654280b467289')
variant('debug', default=False, description='Builds a debug version of the library')
variant('shared', default=True, description='Builds a shared version of the library')
variant('cxx', default=True, description='Enable C++ support')
variant('fortran', default=True, description='Enable Fortran support')
@ -78,6 +79,11 @@ def install(self, spec, prefix):
else:
extra_args.append('--enable-production')
if '+shared' in spec:
extra_args.append('--enable-shared')
else:
extra_args.append('--enable-static-exec')
if '+unsupported' in spec:
extra_args.append("--enable-unsupported")
@ -119,7 +125,6 @@ def install(self, spec, prefix):
configure(
"--prefix=%s" % prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--enable-shared", # TODO : this should be enabled by default, remove it?
*extra_args)
make()
make("install")

View File

@ -0,0 +1,21 @@
from spack import *
class Ndiff(Package):
"""The ndiff tool is a binary utility that compares putatively similar files
while ignoring small numeric differernces. This utility is most often used
to compare files containing a lot of floating-point numeric data that
may be slightly different due to numeric error."""
homepage = "http://ftp.math.utah.edu/pub/ndiff/"
url = "http://ftp.math.utah.edu/pub/ndiff/ndiff-2.00.tar.gz"
version('2.00', '885548b4dc26e72c5455bebb5ba6c16d')
version('1.00', 'f41ffe5d12f36cd36b6311acf46eccdc')
def install(self, spec, prefix):
configure('--prefix=%s' % prefix)
mkdirp(prefix.bin)
mkdirp('%s/lib' % prefix.share)
make('install-exe', 'install-shrlib')

View File

@ -0,0 +1,28 @@
from spack import *
class Tetgen(Package):
"""TetGen is a program and library that can be used to generate tetrahedral
meshes for given 3D polyhedral domains. TetGen generates exact constrained
Delaunay tetrahedralizations, boundary conforming Delaunay meshes, and
Voronoi paritions."""
homepage = "http://www.tetgen.org"
url = "http://www.tetgen.org/files/tetgen1.4.3.tar.gz"
version('1.4.3', 'd6a4bcdde2ac804f7ec66c29dcb63c18')
# TODO: Make this a build dependency once build dependencies are supported
# (see: https://github.com/LLNL/spack/pull/378).
depends_on('cmake@2.8.7:', when='@1.5.0:')
def install(self, spec, prefix):
make('tetgen', 'tetlib')
mkdirp(prefix.bin)
install('tetgen', prefix.bin)
mkdirp(prefix.include)
install('tetgen.h', prefix.include)
mkdirp(prefix.lib)
install('libtet.a', prefix.lib)

View File

@ -0,0 +1,20 @@
from spack import *
class Triangle(Package):
"""Triangle is a two-dimensional mesh generator and Delaunay
triangulator. Triangle generates exact Delaunay triangulations,
constrained Delaunay triangulations, conforming Delaunay
triangulations, Voronoi diagrams, and high-quality triangular
meshes."""
homepage = "http://www.cs.cmu.edu/~quake/triangle.html"
url = "http://www.netlib.org/voronoi/triangle.zip"
version('1.6', '10aff8d7950f5e0e2fb6dd2e340be2c9')
def install(self, spec, prefix):
make()
mkdirp(prefix.bin)
install('triangle', prefix.bin)
install('showme', prefix.bin)