FAODEL: Add FAODEL package to spack (#11323)
* FAODEL: Add FAODEL package to spack FAODEL (Flexible, Asynchronous, Object Data-Exchange Libraries) is a collection of software libraries that are used to implement different data management services on high-performance computing (HPC) platforms. This project is part of the Advanced Technology Development and Mitigation (ATDM) effort for NNSA's ASC program at Sandia National Laboratories. (cherry picked from commit 6afe045d25b5c000b612116a5695aebbec56b61a) * FAODEL: Update FAODEL package Dependencies: set minimum versions for boost, cmake and libfabric Dependencies: add conflict for boost v1.59.0 Patch: add a patch for v1.1803.1 Patch: add a when= for the v1.1811.1 specific patches Compiler: check for C++11 support in gcc (cherry picked from commit fb6ed2b3cf20d7e4fff647cba5a70887a78f627f) * FAODEL: Update FAODEL package * replace previous maintainers with @tkordenbrock and @craigulmer * default to shared libs to meet Spack policy * increase min boost version to 1.60.0 and remove boost 1.59.0 conflict * replace complex version check with conflict for gcc <= 4.8.0 (C++11 support required) * set type=build for cmake * enable googletest for all versions with type=build * enable tests for for all versions except when MPI is disabled * FAODEL: Update FAODEL package * add version v1.1811.2 * limit comment line length
This commit is contained in:
parent
4c6fb4cefe
commit
dd3573b78d
4 changed files with 201 additions and 0 deletions
11
var/spack/repos/builtin/packages/faodel/array.patch
Normal file
11
var/spack/repos/builtin/packages/faodel/array.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
diff --git a/src/common/Configuration.cpp b/src/common/Configuration.cpp
|
||||
index f844488..70186cc 100644
|
||||
--- a/src/common/Configuration.cpp
|
||||
+++ b/src/common/Configuration.cpp
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
+#include <array>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
|
68
var/spack/repos/builtin/packages/faodel/faodel_mpi.patch
Normal file
68
var/spack/repos/builtin/packages/faodel/faodel_mpi.patch
Normal file
|
@ -0,0 +1,68 @@
|
|||
diff --git a/src/kelpie/CMakeLists.txt b/src/kelpie/CMakeLists.txt
|
||||
index f2e8ef6..7f957a7 100644
|
||||
--- a/src/kelpie/CMakeLists.txt
|
||||
+++ b/src/kelpie/CMakeLists.txt
|
||||
@@ -36,7 +36,7 @@ set( HEADERS
|
||||
pools/DHTPool/DHTPool.hh
|
||||
pools/PoolRegistry.hh
|
||||
pools/UnconfiguredPool/UnconfiguredPool.hh
|
||||
- services/PoolServerDriver.hh
|
||||
+
|
||||
)
|
||||
|
||||
set( SOURCES
|
||||
@@ -67,12 +67,17 @@ set( SOURCES
|
||||
pools/PoolBase.cpp
|
||||
pools/PoolRegistry.cpp
|
||||
pools/UnconfiguredPool/UnconfiguredPool.cpp
|
||||
- services/PoolServerDriver.cpp
|
||||
)
|
||||
|
||||
if( Faodel_ENABLE_MPI_SUPPORT )
|
||||
- LIST( APPEND HEADERS pools/RFTPool/RFTPool.hh)
|
||||
- LIST( APPEND SOURCES pools/RFTPool/RFTPool.cpp)
|
||||
+ LIST( APPEND HEADERS
|
||||
+ pools/RFTPool/RFTPool.hh
|
||||
+ services/PoolServerDriver.hh
|
||||
+ )
|
||||
+ LIST( APPEND SOURCES
|
||||
+ pools/RFTPool/RFTPool.cpp
|
||||
+ services/PoolServerDriver.cpp
|
||||
+ )
|
||||
endif( Faodel_ENABLE_MPI_SUPPORT )
|
||||
|
||||
|
||||
diff --git a/tools/kelpie-server/CMakeLists.txt b/tools/kelpie-server/CMakeLists.txt
|
||||
index 57f8a81..d05337b 100644
|
||||
--- a/tools/kelpie-server/CMakeLists.txt
|
||||
+++ b/tools/kelpie-server/CMakeLists.txt
|
||||
@@ -1,15 +1,16 @@
|
||||
+if( Faodel_ENABLE_MPI_SUPPORT )
|
||||
+ set(
|
||||
+ SOURCES
|
||||
+ kelpie_server_main.cpp
|
||||
+ )
|
||||
|
||||
-set(
|
||||
- SOURCES
|
||||
- kelpie_server_main.cpp
|
||||
-)
|
||||
+ add_executable( kelpie-server ${SOURCES} )
|
||||
+ set_target_properties( kelpie-server PROPERTIES LINKER_LANGUAGE CXX )
|
||||
|
||||
-add_executable( kelpie-server ${SOURCES} )
|
||||
-set_target_properties( kelpie-server PROPERTIES LINKER_LANGUAGE CXX )
|
||||
+ target_link_libraries( kelpie-server kelpie) #Faodel::kelpie )
|
||||
|
||||
-target_link_libraries( kelpie-server kelpie) #Faodel::kelpie )
|
||||
-
|
||||
-install(TARGETS kelpie-server
|
||||
- EXPORT faodelTargets
|
||||
- RUNTIME DESTINATION "${BINARY_INSTALL_DIR}" COMPONENT bin
|
||||
- )
|
||||
\ No newline at end of file
|
||||
+ install(TARGETS kelpie-server
|
||||
+ EXPORT faodelTargets
|
||||
+ RUNTIME DESTINATION "${BINARY_INSTALL_DIR}" COMPONENT bin
|
||||
+ )
|
||||
+endif()
|
35
var/spack/repos/builtin/packages/faodel/faodel_sbl.patch
Normal file
35
var/spack/repos/builtin/packages/faodel/faodel_sbl.patch
Normal file
|
@ -0,0 +1,35 @@
|
|||
diff --git a/src/faodel-common/LoggingInterface.cpp b/src/faodel-common/LoggingInterface.cpp
|
||||
index d15eb23..86bf0ef 100644
|
||||
--- a/src/faodel-common/LoggingInterface.cpp
|
||||
+++ b/src/faodel-common/LoggingInterface.cpp
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
|
||||
#if Faodel_LOGGINGINTERFACE_DISABLED==0 && Faodel_LOGGINGINTERFACE_USE_SBL==1
|
||||
-#include <sbl/sbl_logger.hpp>
|
||||
+#include <sbl/sbl_logger.hh>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#if Faodel_LOGGINGINTERFACE_USE_SBL==1
|
||||
|
||||
-#include <sbl/sbl_logger.hpp>
|
||||
+#include <sbl/sbl_logger.hh>
|
||||
|
||||
sbl::logger *faodel::LoggingInterface::sbl_logger=nullptr;
|
||||
|
||||
diff --git a/src/sbl/README_SBL.md b/src/sbl/README_SBL.md
|
||||
index d490f75..4eec0ee 100644
|
||||
--- a/src/sbl/README_SBL.md
|
||||
+++ b/src/sbl/README_SBL.md
|
||||
@@ -205,7 +205,7 @@ Example:
|
||||
#include <thread>
|
||||
#include <map>
|
||||
|
||||
- #include "sbl/sbl_logger.hpp"
|
||||
+ #include "sbl/sbl_logger.hh"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
87
var/spack/repos/builtin/packages/faodel/package.py
Normal file
87
var/spack/repos/builtin/packages/faodel/package.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
# 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.1811.2.tar.gz"
|
||||
git = "https://github.com/faodel/faodel.git"
|
||||
|
||||
maintainers = ['tkordenbrock', 'craigulmer']
|
||||
|
||||
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('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)
|
||||
]
|
||||
return args
|
Loading…
Reference in a new issue