Skip to content

Commit

Permalink
New Package: visit-ffp (spack#22903)
Browse files Browse the repository at this point in the history
  • Loading branch information
cessenat authored Jul 7, 2021
1 parent e914e56 commit 0e3f7ce
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions var/spack/repos/builtin/packages/visit-ffp/package.py
Original file line number Diff line number Diff line change
@@ -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')

0 comments on commit 0e3f7ce

Please sign in to comment.