flibcpp: add v1.0.1 and smoke test (#24050)

This commit is contained in:
Seth R. Johnson 2021-06-03 05:22:06 -04:00 committed by GitHub
parent f7c9e497f1
commit a478a8cf9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,8 +12,9 @@ class Flibcpp(CMakePackage):
homepage = "https://flibcpp.readthedocs.io/en/latest"
git = "https://github.com/swig-fortran/flibcpp.git"
url = "https://github.com/swig-fortran/flibcpp/archive/v0.3.1.tar.gz"
url = "https://github.com/swig-fortran/flibcpp/archive/v1.0.1.tar.gz"
version('1.0.1', sha256='8569c71eab0257097a6aa666a6d86bdcb6cd6e31244d32cc5b2478d0e936ca7a')
version('0.5.2', sha256='b9b4eb6431d5b56a54c37f658df7455eafd3d204a5534903b127e0c8a1c9b827')
version('0.5.1', sha256='76db24ce7893f19ab97ea7260c39490ae1bd1e08a4cc5111ad7e70525a916993')
version('0.5.0', sha256='94204198304ba4187815431859e5958479fa651a6f06f460b099badbf50f16b2')
@ -40,11 +41,40 @@ def die_without_fortran(self):
raise InstallError('Flibcpp requires a Fortran compiler')
def cmake_args(self):
from_variant = self.define_from_variant
fstd_key = ('FLIBCPP_Fortran_STANDARD' if self.version > Version('1.0.0')
else 'FLIBCPP_FORTRAN_STD')
return [
self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
self.define_from_variant('FLIBCPP_BUILD_DOCS', 'doc'),
self.define_from_variant('FLIBCPP_FORTRAN_STD', 'fstd'),
self.define_from_variant('FLIBCPP_USE_SWIG', 'swig'),
from_variant('BUILD_SHARED_LIBS', 'shared'),
from_variant('FLIBCPP_BUILD_DOCS', 'doc'),
from_variant(fstd_key, 'fstd'),
from_variant('FLIBCPP_USE_SWIG', 'swig'),
self.define('FLIBCPP_BUILD_TESTS', bool(self.run_tests)),
self.define('FLIBCPP_BUILD_EXAMPLES', bool(self.run_tests)),
]
examples_src_dir = 'example'
@run_after('install')
def setup_smoke_tests(self):
"""Copy the example source files after the package is installed to an
install test subdirectory for use during `spack test run`."""
self.cache_extra_test_sources([self.examples_src_dir])
def test(self):
example_src_dir = join_path(self.install_test_root,
self.examples_src_dir)
test_build_dir = join_path(self.test_suite.stage,
'build_example')
cmake_args = [
self.define('CMAKE_PREFIX_PATH', self.prefix),
self.define('CMAKE_Fortran_COMPILER', self.compiler.fc),
]
cmake_args.append(example_src_dir)
with working_dir(test_build_dir, create=True):
cmake(*cmake_args)
make()
self.run_test(join_path(example_src_dir, 'run-examples.sh'),
[], [], installed=False,
purpose='test: installation')