From 5132cfcc63b640bbd40711564a03a8ee5ef5e8b9 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Wed, 29 Sep 2021 08:53:49 -0600 Subject: [PATCH] seacas: new release and fixes for metis/parmetis (#26310) * seacas: new release and fixes for metis/parmetis * Update to add sha256 checksum for latest seacas release * Updated the documentation strings with new applications * Fixed the metis/parmetis variants and logic depending on whether mpi is enabled/disabled. (There is still a zoltan issue I need to fix, but this will at least allow seacas to be built without metis/parmetis or with +mpi+parmetis. The ~mpi+metis still needs work elsewhere.) * Enable cpup, slice, zellij in +applications --- .../repos/builtin/packages/seacas/package.py | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py index c52595d8e9..4a6acc7cec 100644 --- a/var/spack/repos/builtin/packages/seacas/package.py +++ b/var/spack/repos/builtin/packages/seacas/package.py @@ -18,7 +18,7 @@ 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. + IOSS libraries and the io_shell, io_info, io_modify, struc_to_unstruc apps. """ homepage = "https://gsjaardema.github.io/seacas/" git = "https://github.com/gsjaardema/seacas.git" @@ -27,6 +27,7 @@ class Seacas(CMakePackage): # ###################### Versions ########################## version('master', branch='master') + version('2021-09-30', sha256='5d061e35e93eb81214da3b67ddda2829cf5efed38a566be6363a9866ba2f9ab3') version('2021-05-12', sha256='92663767f0317018d6f6e422e8c687e49f6f7eb2b92e49e837eb7dc0ca0ac33d') version('2021-04-05', sha256='76f66eec1fec7aba30092c94c7609495e6b90d9dcb6f35b3ee188304d02c6e04') version('2021-01-20', sha256='7814e81981d03009b6816be3eb4ed3845fd02cc69e006ee008a2cbc85d508246') @@ -47,9 +48,9 @@ class Seacas(CMakePackage): 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') + 'aprepro, conjoin, cpup, ejoin, epu, exo2mat, mat2exo, ' + 'exo_format, exodiff, explore, grepos, io_shell, io_info, ' + 'io_modify, nemslice, nemspread, zellij') variant('legacy', default=True, description='Build all "legacy" SEACAS applications. This includes' ' a debatable list of "legacy" applications: algebra, blot, ' @@ -90,8 +91,9 @@ class Seacas(CMakePackage): depends_on('adios2@develop~mpi', when='+adios2 ~mpi') depends_on('adios2@develop+mpi', when='+adios2 +mpi') depends_on('matio', when='+matio') - depends_on('metis+int64+real64', when='+metis ~mpi') - depends_on('parmetis+int64+real64', when='+metis +mpi') + with when('+metis'): + depends_on('metis+int64+real64') + depends_on('parmetis+int64', when='+mpi') # MPI related dependencies depends_on('mpi', when='+mpi') @@ -156,6 +158,7 @@ def cmake_args(self): '-DSEACASProj_ENABLE_SEACASAprepro:BOOL=ON', '-DSEACASProj_ENABLE_SEACASAprepro_lib:BOOL=ON', '-DSEACASProj_ENABLE_SEACASConjoin:BOOL=ON', + '-DSEACASProj_ENABLE_SEACASCpup:BOOL=ON', '-DSEACASProj_ENABLE_SEACASEjoin:BOOL=ON', '-DSEACASProj_ENABLE_SEACASEpu:BOOL=ON', '-DSEACASProj_ENABLE_SEACASExo2mat:BOOL=ON', @@ -168,6 +171,7 @@ def cmake_args(self): '-DSEACASProj_ENABLE_SEACASNemslice:BOOL=ON', '-DSEACASProj_ENABLE_SEACASNemspread:BOOL=ON', '-DSEACASProj_ENABLE_SEACASSlice:BOOL=ON', + '-DSEACASProj_ENABLE_SEACASZellij:BOOL=ON', ]) if '+legacy' in spec: @@ -198,7 +202,7 @@ def cmake_args(self): '-DNetCDF_ROOT:PATH=%s' % spec['netcdf-c'].prefix, ]) - if '+metis' in spec: + if '+parmetis' in spec: options.extend([ '-DTPL_ENABLE_METIS:BOOL=ON', '-DMETIS_LIBRARY_DIRS=%s' % spec['metis'].prefix.lib, @@ -212,6 +216,14 @@ def cmake_args(self): spec['parmetis'].prefix.include, spec['metis'].prefix.include) ]) + elif '+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=OFF', + ]) else: options.extend([ '-DTPL_ENABLE_METIS:BOOL=OFF',