sys-cluster/adios2: new package, add 2.8.1

Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2022-06-06 03:32:03 +02:00
parent 5888590f0a
commit 8b0667d8fb
5 changed files with 497 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST adios2-2.8.1.gh.tar.gz 5747375 BLAKE2B 1c2b2845db90be83fc911f53724ab8a72aca93562720a03c05084f61611e3247525160a00810c9f492cd9743e70ac7ad3db601771905a4ab53d089b943971416 SHA512 50001f73318a4deb63a487a817f0b151904f39bd3d9d3d0a04fe77e4323f639b625472fb82b32702fdfc990bf765aff65793ca6817f2798a5cf4b6c72f9a38d7

View File

@@ -0,0 +1,131 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
FORTRAN_NEEDED="fortran"
MYPN="${PN^^}"
PYTHON_COMPAT=( python3_{8..10} )
inherit cmake python-single-r1 fortran-2
DESCRIPTION="Next generation of ADIOS developed in the Exascale Computing Program"
HOMEPAGE="
https://csmd.ornl.gov/software/adios2
https://github.com/ornladios/adios2
"
SRC_URI="https://github.com/ornladios/${MYPN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
S="${WORKDIR}/${MYPN}-${PV}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE="blosc bzip2 endian-reverse examples fortran hdf5 mpi png profile python sodium sst szip test zeromq zfp"
RDEPEND="
dev-cpp/nlohmann_json
dev-cpp/yaml-cpp:=
dev-libs/atl
dev-libs/dill
>dev-libs/ffs-1.6.0
dev-libs/kwsys:=
dev-libs/perfstubs:=[timers]
dev-libs/pugixml
net-libs/enet
>sys-cluster/evpath-4.5.0
blosc? ( dev-libs/c-blosc:= )
bzip2? ( app-arch/bzip2 )
hdf5? ( sci-libs/hdf5:=[mpi=] )
mpi? ( virtual/mpi[cxx] )
png? ( media-libs/libpng:= )
python? (
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/numpy[${PYTHON_USEDEP}]
dev-python/pybind11[${PYTHON_USEDEP}]
')
mpi? ( $(python_gen_cond_dep 'dev-python/mpi4py[${PYTHON_USEDEP}]') )
)
sodium? ( dev-libs/libsodium:= )
sst? ( sys-block/libfabric:= )
szip? ( virtual/szip )
zeromq? ( net-libs/zeromq:= )
zfp? ( dev-libs/zfp )
"
DEPEND="
${RDEPEND}
test? ( dev-cpp/gtest )
"
BDEPEND="virtual/pkgconfig"
PATCHES=(
"${FILESDIR}/${P}-system-libs.patch"
"${FILESDIR}/${P}-sandbox.patch"
)
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
pkg_setup() {
use fortran && fortran-2_pkg_setup
use python && python-single-r1_pkg_setup
}
src_configure() {
local mycmakeargs=(
-DBUILD_SHARED_LIBS=ON
-DADIOS2_USE_BP5=OFF
-DADIOS2_USE_CUDA=OFF
-DADIOS2_USE_DataMan=OFF
-DADIOS2_USE_DataSpaces=OFF
-DADIOS2_USE_EXTERNAL_ATL=ON
-DADIOS2_USE_EXTERNAL_DEPENDENCIES=ON
-DADIOS2_USE_EXTERNAL_DILL=ON
-DADIOS2_USE_EXTERNAL_ENET=ON
-DADIOS2_USE_EXTERNAL_FFS=ON
-DADIOS2_USE_EXTERNAL_EVPATH=ON
-DADIOS2_USE_EXTERNAL_GTEST=ON
-DADIOS2_USE_EXTERNAL_NLOHMANN_JSON=ON
-DADIOS2_USE_EXTERNAL_PUGIXML=ON
-DADIOS2_USE_EXTERNAL_PYBIND11=ON
-DADIOS2_USE_EXTERNAL_YAMLCPP=ON
-DADIOS2_USE_IME=OFF
-DADIOS2_USE_LIBPRESSIO=OFF
-DADIOS2_USE_MGARD=OFF
-DADIOS2_BUILD_EXAMPLES="$(usex examples)"
-DADIOS2_BUILD_EXAMPLES_EXPERIMENTAL="$(usex examples)"
-DADIOS2_USE_Blosc="$(usex blosc)"
-DADIOS2_USE_BZip2="$(usex bzip2)"
-DADIOS2_USE_Endian_Reverse="$(usex endian-reverse)"
-DADIOS2_USE_Fortran="$(usex fortran)"
-DADIOS2_USE_HDF5="$(usex hdf5)"
-DADIOS2_USE_MPI="$(usex mpi)"
-DADIOS2_USE_PNG="$(usex png)"
-DADIOS2_USE_Profiling="$(usex profile)"
-DADIOS2_USE_Python="$(usex python)"
-DADIOS2_USE_Sodium="$(usex sodium)"
-DADIOS2_USE_SST="$(usex sst)"
-DADIOS2_USE_SZ="$(usex szip)"
-DADIOS2_USE_ZeroMQ="$(usex zeromq)"
-DADIOS2_USE_ZFP="$(usex zfp)"
-DBUILD_TESTING=$(usex test)
)
cmake_src_configure
}
src_prepare() {
rm -r thirdparty/{atl,dill,enet,EVPath,ffs,GTest,KWSys,mingw-w64,pugixml,pybind11,yaml-cpp} || die
rm -r thirdparty/nlohmann_json/nlohmann_json_wrapper/single_include || die
rm -r thirdparty/perfstubs/perfstubs || die
cmake_src_prepare
}
src_compile() {
cmake_src_compile
}
src_install() {
cmake_src_install
dodoc ReadMe.md
}

View File

@@ -0,0 +1,12 @@
--- a/cmake/install/pre/CMakeLists.txt
+++ b/cmake/install/pre/CMakeLists.txt
@@ -1,9 +1,3 @@
-install(CODE "
- message(\"Pre-installation cleanup of CMake files\")
- file(REMOVE_RECURSE \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}\")
-"
- COMPONENT adios2_core-development
-)
file(GLOB ADIOS2_MODULE_FILES
"${ADIOS2_SOURCE_DIR}/cmake/Find*.cmake"
"${ADIOS2_SOURCE_DIR}/cmake/CMake*.cmake"

View File

@@ -0,0 +1,307 @@
--- a/source/adios2/CMakeLists.txt
+++ b/source/adios2/CMakeLists.txt
@@ -127,7 +127,7 @@
$<BUILD_INTERFACE:${ADIOS2_SOURCE_DIR}/source>
$<BUILD_INTERFACE:${ADIOS2_BINARY_DIR}/source>
)
-target_link_libraries(adios2_core PRIVATE adios2sys_interface adios2::thirdparty::pugixml
+target_link_libraries(adios2_core PRIVATE -lkwsys adios2::thirdparty::pugixml
adios2::thirdparty::yaml-cpp adios2::thirdparty::nlohmann_json adios2::thirdparty::perfstubs-interface)
target_link_libraries(adios2_core PUBLIC ${CMAKE_THREAD_LIBS_INIT})
target_compile_features(adios2_core PUBLIC "$<BUILD_INTERFACE:${ADIOS2_CXX11_FEATURES}>")
@@ -151,7 +151,7 @@
toolkit/format/bp5/BP5Serializer.cpp
toolkit/format/bp5/BP5Deserializer.cpp toolkit/format/bp5/BP5Deserializer.tcc
)
- target_link_libraries(adios2_core PRIVATE ffs::ffs)
+ target_link_libraries(adios2_core PRIVATE ffs)
endif()
if(ADIOS2_HAVE_DAOS)
--- a/source/adios2/core/ADIOS.cpp
+++ b/source/adios2/core/ADIOS.cpp
@@ -19,7 +19,7 @@
#include "adios2/helper/adiosCommDummy.h"
#include "adios2/helper/adiosFunctions.h" //InquireKey, BroadcastFile
#include "adios2/operator/OperatorFactory.h"
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/SystemTools.hxx>
#include <adios2-perfstubs-interface.h>
@@ -53,7 +53,7 @@
#endif
if (!configFile.empty())
{
- if (!adios2sys::SystemTools::FileExists(configFile))
+ if (!kwsys::SystemTools::FileExists(configFile))
{
helper::Throw<std::logic_error>("Core", "ADIOS", "ADIOS",
"config file " + configFile +
--- a/source/adios2/core/IO.cpp
+++ b/source/adios2/core/IO.cpp
@@ -39,7 +39,7 @@
#include "adios2/helper/adiosComm.h"
#include "adios2/helper/adiosFunctions.h" //BuildParametersMap
#include "adios2/helper/adiosString.h"
-#include <adios2sys/SystemTools.hxx> // FileIsDirectory()
+#include <kwsys/SystemTools.hxx> // FileIsDirectory()
#ifdef ADIOS2_HAVE_DATAMAN // external dependencies
#include "adios2/engine/dataman/DataManReader.h"
@@ -559,13 +559,13 @@
else if ((mode_to_use == Mode::Read) ||
(mode_to_use == Mode::ReadRandomAccess))
{
- if (adios2sys::SystemTools::FileIsDirectory(name))
+ if (kwsys::SystemTools::FileIsDirectory(name))
{
char v = helper::BPVersion(name, comm, m_TransportsParameters);
engineTypeLC = "bp";
engineTypeLC.push_back(v);
}
- else if (adios2sys::SystemTools::FileIsDirectory(name + ".tier0"))
+ else if (kwsys::SystemTools::FileIsDirectory(name + ".tier0"))
{
engineTypeLC = "mhs";
}
--- a/source/adios2/helper/adiosDynamicBinder.cpp
+++ b/source/adios2/helper/adiosDynamicBinder.cpp
@@ -18,8 +18,8 @@
#include <stdexcept> // for runtime_error
#include <vector> // for vector
-#include <adios2sys/DynamicLoader.hxx>
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/DynamicLoader.hxx>
+#include <kwsys/SystemTools.hxx>
namespace adios2
{
@@ -28,7 +28,7 @@
struct DynamicBinder::Impl
{
- adios2sys::DynamicLoader::LibraryHandle m_LibraryHandle;
+ kwsys::DynamicLoader::LibraryHandle m_LibraryHandle;
};
DynamicBinder::DynamicBinder(std::string libName) : DynamicBinder(libName, "")
@@ -76,14 +76,14 @@
// ConvertToOutputPath() will change slashes if we're running on
// a Windows system
fileName =
- adios2sys::SystemTools::ConvertToOutputPath(fileName);
+ kwsys::SystemTools::ConvertToOutputPath(fileName);
}
else
{
fileName = prefix + libName + suffix;
}
m_Impl->m_LibraryHandle =
- adios2sys::DynamicLoader::OpenLibrary(fileName);
+ kwsys::DynamicLoader::OpenLibrary(fileName);
searchedLibs.push_back(fileName);
if (m_Impl->m_LibraryHandle)
{
@@ -110,13 +110,13 @@
DynamicBinder::~DynamicBinder()
{
- adios2sys::DynamicLoader::CloseLibrary(m_Impl->m_LibraryHandle);
+ kwsys::DynamicLoader::CloseLibrary(m_Impl->m_LibraryHandle);
}
DynamicBinder::VoidSymbolPointer
DynamicBinder::GetSymbol(std::string symbolName)
{
- return adios2sys::DynamicLoader::GetSymbolAddress(m_Impl->m_LibraryHandle,
+ return kwsys::DynamicLoader::GetSymbolAddress(m_Impl->m_LibraryHandle,
symbolName);
}
--- a/source/adios2/helper/adiosPluginManager.cpp
+++ b/source/adios2/helper/adiosPluginManager.cpp
@@ -17,7 +17,7 @@
#include "adios2/helper/adiosLog.h"
#include "adios2/helper/adiosString.h"
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/SystemTools.hxx>
#include <memory>
#include <stdexcept>
@@ -110,13 +110,13 @@
}
std::string allPluginPaths;
- adios2sys::SystemTools::GetEnv(pluginEnvVarName, allPluginPaths);
+ kwsys::SystemTools::GetEnv(pluginEnvVarName, allPluginPaths);
if (allPluginPaths.empty())
{
return OpenPlugin(pluginName, pluginLibrary, "");
}
auto pathsSplit =
- adios2sys::SystemTools::SplitString(allPluginPaths, ':', false);
+ kwsys::SystemTools::SplitString(allPluginPaths, ':', false);
bool loaded = false;
auto pathIt = pathsSplit.begin();
--- a/source/adios2/helper/adiosSystem.cpp
+++ b/source/adios2/helper/adiosSystem.cpp
@@ -13,7 +13,7 @@
#include <stdexcept> // std::runtime_error, std::exception
#include <system_error>
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/SystemTools.hxx>
#include "adios2/common/ADIOSTypes.h"
#include "adios2/helper/adiosComm.h"
@@ -37,7 +37,7 @@
bool CreateDirectory(const std::string &fullPath) noexcept
{
- return static_cast<bool>(adios2sys::SystemTools::MakeDirectory(fullPath));
+ return static_cast<bool>(kwsys::SystemTools::MakeDirectory(fullPath));
}
bool IsLittleEndian() noexcept
@@ -168,7 +168,7 @@
if (!comm.Rank())
{
std::string mmdFileName = name + PathSeparator + "mmd.0";
- if (adios2sys::SystemTools::PathExists(mmdFileName))
+ if (kwsys::SystemTools::PathExists(mmdFileName))
{
version = '5';
}
--- a/source/adios2/operator/plugin/PluginOperator.cpp
+++ b/source/adios2/operator/plugin/PluginOperator.cpp
@@ -21,7 +21,7 @@
#include "adios2/helper/adiosPluginManager.h"
#include "adios2/helper/adiosString.h"
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/SystemTools.hxx>
namespace adios2
{
--- a/source/utils/bpls/bpls.cpp
+++ b/source/utils/bpls/bpls.cpp
@@ -57,8 +57,8 @@
#include "adios2/helper/adiosString.h" // EndsWith
#include "adios2/helper/adiosSystem.h" //isHDF5File
-#include <adios2sys/CommandLineArguments.hxx>
-#include <adios2sys/SystemTools.hxx>
+#include <kwsys/CommandLineArguments.hxx>
+#include <kwsys/SystemTools.hxx>
#include <pugixml.hpp>
namespace adios2
@@ -202,8 +202,8 @@
bool option_help_was_called = false;
int optioncb_help(const char *argument, const char *value, void *call_data)
{
- // adios2sys::CommandLineArguments *arg =
- // static_cast<adios2sys::CommandLineArguments *>(call_data);
+ // kwsys::CommandLineArguments *arg =
+ // static_cast<kwsys::CommandLineArguments *>(call_data);
// printf("%s\n", arg->GetHelp());
display_help();
option_help_was_called = true;
@@ -431,7 +431,7 @@
void introspect_file(const char *filename) noexcept
{
- if (adios2sys::SystemTools::FileIsDirectory(filename))
+ if (kwsys::SystemTools::FileIsDirectory(filename))
{
if (!introspectAsBPDir(filename))
{
@@ -460,7 +460,7 @@
}
}
-int process_unused_args(adios2sys::CommandLineArguments &arg)
+int process_unused_args(kwsys::CommandLineArguments &arg)
{
int nuargs;
char **uargs;
@@ -541,9 +541,9 @@
init_globals();
- adios2sys::CommandLineArguments arg;
+ kwsys::CommandLineArguments arg;
arg.Initialize(argc, argv);
- typedef adios2sys::CommandLineArguments argT;
+ typedef kwsys::CommandLineArguments argT;
arg.StoreUnusedArguments(true);
arg.AddCallback("-v", argT::NO_ARGUMENT, optioncb_verbose, nullptr, "");
arg.AddCallback("--verbose", argT::NO_ARGUMENT, optioncb_verbose, nullptr,
@@ -1521,7 +1521,7 @@
if (verbose > 1)
printf("\nADIOS Open: read header info from %s\n", path);
- if (!adios2sys::SystemTools::FileExists(path))
+ if (!kwsys::SystemTools::FileExists(path))
{
fprintf(stderr, "\nError: input path %s does not exist\n", path);
return 4;
--- a/source/utils/CMakeLists.txt
+++ b/source/utils/CMakeLists.txt
@@ -11,7 +11,7 @@
# BPLS
add_executable(bpls ./bpls/bpls.cpp)
-target_link_libraries(bpls adios2_core adios2sys adios2::thirdparty::pugixml)
+target_link_libraries(bpls adios2_core -lkwsys adios2::thirdparty::pugixml)
target_include_directories(bpls PRIVATE ${PROJECT_BINARY_DIR})
set_property(TARGET bpls PROPERTY OUTPUT_NAME bpls${ADIOS2_EXECUTABLE_SUFFIX})
install(TARGETS bpls EXPORT adios2
@@ -30,7 +30,7 @@
# BPSPLIT
#add_executable(bpsplit ./bpsplit/bpsplit.cpp)
-#target_link_libraries(bpsplit adios2::cxx11 adios2sys_interface adios2::thirdparty::pugixml)
+#target_link_libraries(bpsplit adios2::cxx11 -lkwsys adios2::thirdparty::pugixml)
#install(TARGETS bpsplit EXPORT adios2
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
#)
--- a/thirdparty/CMakeLists.txt
+++ b/thirdparty/CMakeLists.txt
@@ -33,8 +33,6 @@
option(ADIOS2_USE_EXTERNAL_YAMLCPP
"Use an externally supplied yaml-cpp library" "${ADIOS2_USE_EXTERNAL_DEPENDENCIES}")
-add_subdirectory(KWSys)
-
add_subdirectory(perfstubs)
adios2_add_thirdparty_target(perfstubs-interface perfstubs-interface)
--- a/thirdparty/perfstubs/CMakeLists.txt
+++ b/thirdparty/perfstubs/CMakeLists.txt
@@ -1,12 +1,3 @@
-message_start_thirdparty()
-
-if (NOT WIN32 AND BUILD_SHARED_LIBS AND ADIOS2_HAVE_Profiling)
- set(PERFSTUBS_USE_TIMERS ON CACHE INTERNAL "")
- add_subdirectory(perfstubs)
-else()
- set(PERFSTUBS_USE_TIMERS OFF CACHE INTERNAL "")
-endif()
-
add_library(perfstubs-interface INTERFACE)
configure_file(
@@ -19,7 +10,6 @@
)
if (PERFSTUBS_USE_TIMERS)
+ find_package(perfstubs REQUIRED)
target_link_libraries(perfstubs-interface INTERFACE perfstubs)
endif()
-
-message_end_thirdparty()

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>lssndrbarbieri@gmail.com</email>
<name>Alessandro Barbieri</name>
</maintainer>
<upstream>
<bugs-to>https://github.com/ornladios/ADIOS2/issues</bugs-to>
<remote-id type="github">ornladios/ADIOS2</remote-id>
</upstream>
<longdescription lang="en">
This is ADIOS2: The Adaptable Input/Output (I/O) System.
ADIOS2 is developed as part of the United States Department of Energy's Exascale Computing Project. It is a framework for scientific data I/O to publish and subscribe to data when and where required.
ADIOS2 transports data as groups of self-describing variables and attributes across different media types (such as files, wide-area-networks, and remote direct memory access) using a common application programming interface for all transport modes. ADIOS2 can be used on supercomputers, cloud systems, and personal computers.
ADIOS2 focuses on:
Performance I/O scalability in high performance computing (HPC) applications.
Adaptability unified interfaces to allow for several modes of transport (files, memory-to-memory)
Ease of Use two-level application programming interface (APIs)
Full APIs for HPC applications: C++11, Fortran 90, C 99, Python 2 and 3
Simplified High-Level APIs for data analysis: Python 2 and 3, C++11, Matlab
In addition, ADIOS2 APIs are based on:
MPI Although ADIOS2 is MPI-based, it can also be used in non-MPI serial code.
Data Groups ADIOS2 favors a deferred/prefetch/grouped variables transport mode by default to maximize data-per-request ratios. Sync mode, one variable at a time, is treated as the special case.
Data Steps ADIOS2 follows the actual production/consumption of data using an I/O “steps” abstraction removing the need to manage extra indexing information.
Data Engines ADIOS2 Engine abstraction allows for reusing the APIs for different transport modes removing the need for drastic code changes.
</longdescription>
<use>
<flag name="blosc">Enable support for Blosc transforms</flag>
<flag name="endian-reverse">Enable support for Little/Big Endian Interoperability</flag>
<flag name="sodium">Enable support for Sodium for encryption</flag>
<flag name="sst">Enable support for SST</flag>
<flag name="zeromq">Enable support for ZeroMQ</flag>
<flag name="zfp">Enable support for ZFP transforms</flag>
</use>
</pkgmetadata>