formetis: add new package (#24048)
This commit is contained in:
parent
bb5fd5c567
commit
976a97f045
71
var/spack/repos/builtin/packages/formetis/package.py
Normal file
71
var/spack/repos/builtin/packages/formetis/package.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# 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)
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Formetis(CMakePackage):
|
||||||
|
"""Automated Fortran bindings to METIS and ParMETIS."""
|
||||||
|
|
||||||
|
homepage = "https://github.com/swig-fortran/formetis"
|
||||||
|
url = "https://github.com/swig-fortran/formetis/archive/refs/tags/v0.0.1.tar.gz"
|
||||||
|
|
||||||
|
maintainers = ['sethrj']
|
||||||
|
|
||||||
|
version('0.0.2', sha256='d0d778fd76185d395041f8bc0ecc2b1f3785cf55db31eb77323bd7cce741c5cb')
|
||||||
|
|
||||||
|
variant('mpi', default=False, description='Enable ParMETIS support')
|
||||||
|
variant('shared', default=True, description='Build shared libraries')
|
||||||
|
variant('swig', default=False,
|
||||||
|
description='Regenerate source files using SWIG')
|
||||||
|
|
||||||
|
depends_on('metis@5')
|
||||||
|
depends_on('parmetis', when='+mpi')
|
||||||
|
depends_on('mpi', when='+mpi')
|
||||||
|
depends_on('swig@4.0.2-fortran', when='+swig')
|
||||||
|
|
||||||
|
# Using non-standard int sizes requires regenerating the C/Fortran
|
||||||
|
# interface files with SWIG
|
||||||
|
conflicts('~swig', when='^metis+int64')
|
||||||
|
conflicts('~swig', when='^metis+real64')
|
||||||
|
|
||||||
|
def cmake_args(self):
|
||||||
|
from_variant = self.define_from_variant
|
||||||
|
args = [
|
||||||
|
from_variant('FORMETIS_USE_MPI', 'mpi'),
|
||||||
|
from_variant('BUILD_SHARED_LIBS', 'shared'),
|
||||||
|
from_variant('FORMETIS_USE_SWIG', 'swig'),
|
||||||
|
self.define('FORMETIS_BUILD_EXAMPLES', False),
|
||||||
|
]
|
||||||
|
return args
|
||||||
|
|
||||||
|
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),
|
||||||
|
self.define('METIS_ROOT', self.spec['metis'].prefix),
|
||||||
|
]
|
||||||
|
if '+mpi' in self.spec:
|
||||||
|
cmake_args.append(
|
||||||
|
self.define('ParMETIS_ROOT', self.spec['parmetis'].prefix))
|
||||||
|
cmake_args.append(example_src_dir)
|
||||||
|
with working_dir(test_build_dir, create=True):
|
||||||
|
cmake(*cmake_args)
|
||||||
|
make()
|
||||||
|
self.run_test('metis', [], [], installed=False,
|
||||||
|
purpose='test: installation')
|
Loading…
Reference in New Issue
Block a user