1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# Copyright 2013-2019 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 Faodel(CMakePackage):
"""Flexible, Asynchronous, Object Data-Exchange Libraries"""
homepage = "https://github.com/faodel/faodel"
url = "https://github.com/faodel/faodel/archive/v1.1906.1.tar.gz"
git = "https://github.com/faodel/faodel.git"
maintainers = ['tkordenbrock', 'craigulmer']
version('1.1906.1', sha256='4b3caf469ae7db50e9bb8d652e4cb532d33d474279def0f8a483f69385648058')
version('1.1811.2', sha256='22feb502dad0f56fb8af492f6e2cdc53a97fd6c31f6fa3c655be0a6266c46996')
version('1.1811.1', sha256='8e95ee99b8c136ff687eb07a2481ee04560cb1526408eb22ab56cd9c60206916')
version('1.1803.1', sha256='70ce7125c02601e14abe5985243d67adf677ed9e7a4dd6d3eaef8a97cf281a16')
variant('shared', default=True, description='Build Faodel as shared libs')
variant('mpi', default=True, description='Enable MPI')
variant('cereal', default=False, description='Use Cereal to serialize NNTI data structures else XDR')
variant('hdf5', default=False, description="Build the HDF5-based IOM in Kelpie")
variant('tcmalloc', default=True, description='Use tcmalloc from gperftools in Lunasa, potentially other places')
variant('logging', default='stdout', values=('stdout', 'sbl', 'disabled'), description='Select where logging interface output is routed')
variant('network', default='nnti', values=('nnti', 'libfabric'), description='RDMA Network library to use for low-level communication')
depends_on('mpi', when='+mpi')
depends_on('boost@1.60.0:')
depends_on('cmake@3.8.0:', type='build')
depends_on('hdf5+mpi', when='+hdf5+mpi')
depends_on('hdf5~mpi', when='+hdf5~mpi')
depends_on('libfabric@1.5.3:', when='network=libfabric')
depends_on('googletest@1.7.0:', type='build')
# FAODEL requires C++11 support which starts with gcc 4.8.1
conflicts('%gcc@:4.8.0')
# Github issue #11267
# Requires master branch of `leveldb` which is not available in spack
# (only versions 1.20 and 1.18 are available).
# depends_on('leveldb', when='+leveldb')
# variant('leveldb', default=False,
# description='Build the LevelDB-based IOM in Kelpie')
# Only clang requires this patch, but it should be applied for all
patch('array.patch', when="@1.1803.1")
# FAODEL Github issue #4
patch('faodel_mpi.patch', when='@1.1811.1 ~mpi')
# FAODEL Github issue #5
patch('faodel_sbl.patch', when='@1.1811.1 logging=sbl')
def cmake_args(self):
spec = self.spec
args = [
'-DBUILD_SHARED_LIBS:BOOL={0}'.format(
'ON' if '+shared' in spec else 'OFF'),
'-DBUILD_TESTS:BOOL={0}'.format(
'ON' if '+mpi' in spec else 'OFF'),
'-DBOOST_ROOT:PATH={0}'.format(spec['boost'].prefix),
'-DGTEST_ROOT:PATH={0}'.format(spec['googletest'].prefix),
'-DBUILD_DOCS:BOOL=OFF',
'-DFaodel_ENABLE_IOM_HDF5:BOOL={0}'.format(
'ON' if '+hdf5' in spec else 'OFF'),
'-DFaodel_ENABLE_IOM_LEVELDB:BOOL={0}'.format(
'ON' if '+leveldb' in spec else 'OFF'),
'-DFaodel_ENABLE_MPI_SUPPORT:BOOL={0}'.format(
'ON' if '+mpi' in spec else 'OFF'),
'-DFaodel_ENABLE_TCMALLOC:BOOL={0}'.format(
'ON' if '+tcmalloc' in spec else 'OFF'),
'-DFaodel_LOGGING_METHOD:STRING={0}'.format(
spec.variants['logging'].value),
'-DFaodel_NETWORK_LIBRARY:STRING={0}'.format(
spec.variants['network'].value),
'-DFaodel_ENABLE_CEREAL:BOOL={0}'.format(
'ON' if '+cereal' in spec else 'OFF')
]
return args
|