diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/exodusii/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/exodusii/package.py | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py index 15fe1e89a6..67024673b2 100644 --- a/var/spack/repos/builtin/packages/exodusii/package.py +++ b/var/spack/repos/builtin/packages/exodusii/package.py @@ -27,10 +27,8 @@ 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). +# TODO: Use variant forwarding to forward the 'mpi' variant to the direct +# TODO: dependencies 'hdf5' and 'netcdf'. class Exodusii(Package): @@ -46,34 +44,43 @@ class Exodusii(Package): 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') + version('2016-08-09', git='https://github.com/gsjaardema/seacas.git', commit='2ffeb1b') - depends_on('cmake@2.8.7:', type='build') - depends_on('hdf5~shared~mpi') - depends_on('netcdf~mpi') + variant('mpi', default=True, description='Enables MPI parallelism.') - patch('exodus-cmake.patch') + depends_on('cmake@2.8.11:', type='build') + depends_on('mpi', when='+mpi') - def patch(self): - ff = FileFilter('cmake-exodus') + # https://github.com/gsjaardema/seacas/blob/master/NetCDF-Mapping.md + depends_on('netcdf maxdims=65536 maxvars=524288') + depends_on('hdf5+shared') - 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) + patch('cmake-exodus.patch') def install(self, spec, prefix): - mkdirp('build') - cd('build') + cc_path = spec['mpi'].mpicc if '+mpi' in spec else self.compiler.cc + cxx_path = spec['mpi'].mpicxx if '+mpi' in spec else self.compiler.cxx + + config_args = std_cmake_args[:] + config_args.extend([ + # General Flags # + '-DSEACASProj_ENABLE_CXX11:BOOL=OFF', + '-DSEACASProj_ENABLE_Zoltan:BOOL=OFF', + '-DHDF5_ROOT:PATH={0}'.format(spec['hdf5'].prefix), + '-DNetCDF_DIR:PATH={0}'.format(spec['netcdf'].prefix), + + # MPI Flags # + '-DTPL_ENABLE_MPI={0}'.format('ON' if '+mpi' in spec else 'OFF'), + '-DCMAKE_C_COMPILER={0}'.format(cc_path), + '-DCMAKE_CXX_COMPILER={0}'.format(cxx_path), + ]) + + build_directory = join_path(self.stage.source_path, 'spack-build') + source_directory = self.stage.source_path - cmake_exodus = Executable('../cmake-exodus') - cmake_exodus() + with working_dir(build_directory, create=True): + mcmake = Executable(join_path(source_directory, 'cmake-exodus')) + mcmake(*config_args) - make() - make('install') + make() + make('install') |