diff options
author | Olivier Cessenat <cessenat@gmail.com> | 2021-07-07 15:07:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-07 15:07:00 +0200 |
commit | 0e3f7ce0ed5099ddfc9aec0529ba69b9b7164ca1 (patch) | |
tree | d2009a4423afade1e89d397b9c685fd7da50ba38 | |
parent | e914e561ec4d65d5fb9433ed847c2fbea2c747b8 (diff) | |
download | spack-0e3f7ce0ed5099ddfc9aec0529ba69b9b7164ca1.tar.gz spack-0e3f7ce0ed5099ddfc9aec0529ba69b9b7164ca1.tar.bz2 spack-0e3f7ce0ed5099ddfc9aec0529ba69b9b7164ca1.tar.xz spack-0e3f7ce0ed5099ddfc9aec0529ba69b9b7164ca1.zip |
New Package: visit-ffp (#22903)
-rw-r--r-- | var/spack/repos/builtin/packages/visit-ffp/package.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/visit-ffp/package.py b/var/spack/repos/builtin/packages/visit-ffp/package.py new file mode 100644 index 0000000000..7d5f9213ef --- /dev/null +++ b/var/spack/repos/builtin/packages/visit-ffp/package.py @@ -0,0 +1,82 @@ +# Copyright 2013-2021 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 os +import re + +from spack import * + + +class VisitFfp(CMakePackage): + """This is the FFP Plug-In for VisIt. + Can be installed after VisIt is installed with/without the STRIPACK library. + """ + + # These settings are exactly those of VisIt + homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/" + git = "https://github.com/visit-dav/visit.git" + url = "https://github.com/visit-dav/visit/releases/download/v3.1.1/visit3.1.1.tar.gz" + + maintainers = ['cyrush', 'cessenat'] + + # Here we provide a local file that contains only the plugin in a flat directory + version('local', url='file://{0}/visit-ffp.tgz'.format(os.getcwd())) + # Below we copy the VisIt paths, ffp first shipment is with VisIt 3 + version('develop', branch='develop') + version('3.2.0', sha256='7328fd8592f9aaf17bf79ffcffd7eaec77773926b0843d9053f39c2190dbe1c0') + version('3.1.4', sha256='be20d9acf56f0599e3c511709f48d8d3b232a57425f69d2bd1e2df1eccb84c93') + version('3.1.1', sha256='0b60ac52fd00aff3cf212a310e36e32e13ae3ca0ddd1ea3f54f75e4d9b6c6cf0') + version('3.0.1', sha256='a506d4d83b8973829e68787d8d721199523ce7ec73e7594e93333c214c2c12bd') + + variant('stripack', default=True, + description='Enable STRIPACK unit sphere Delaunay meshing') + + depends_on('cmake', type='build') + depends_on('stripack', when='+stripack') + depends_on('visit') + + extends('visit') + + build_targets = ['VERBOSE=1'] + phases = ['cmake', 'build'] + extname = 'ffp' + + @property + def root_cmakelists_dir(self): + if '@local' not in self.spec: + return join_path('src', 'databases', self.extname) + else: + return '.' + + @property + def build_directory(self): + return self.root_cmakelists_dir + + @run_before('cmake') + def run_xml2cmake(self): + visit = self.spec['visit'] + args = ['-v', str(visit.version), '-clobber', '-public', self.extname + '.xml'] + with working_dir(self.root_cmakelists_dir): + # Regenerate the public cmake files + if os.path.exists("CMakeLists.txt"): + os.unlink('CMakeLists.txt') + which("xml2cmake")(*args) + # spack extension activate : alter VISIT_PLUGIN_DIR ; + # xml2cmake should have set it to visit prefix but it can + # happen the directory is an alias. + # In that case we match version/smth/plugins. + mstr = None + mstr1 = r'^SET[(]VISIT_PLUGIN_DIR\s+\"{0}(.+)\"[)]'.format(visit.prefix) + mstr2 = r'^SET[(]VISIT_PLUGIN_DIR\s+\".+({0}.+?{1})\"[)]'.format( + join_path(os.sep, visit.version, ''), join_path(os.sep, 'plugins')) + with open('CMakeLists.txt', 'r') as file: + for line in file: + if re.search(mstr1, line): + mstr = mstr1 + elif re.search(mstr2, line): + mstr = mstr2 + if mstr is not None: + filter_file(mstr, r'SET(VISIT_PLUGIN_DIR "{0}\1")'.format(prefix), + 'CMakeLists.txt') |