diff --git a/sys-cluster/adios2/Manifest b/sys-cluster/adios2/Manifest new file mode 100644 index 0000000000..4dc9a3d55c --- /dev/null +++ b/sys-cluster/adios2/Manifest @@ -0,0 +1 @@ +DIST adios2-2.8.1.gh.tar.gz 5747375 BLAKE2B 1c2b2845db90be83fc911f53724ab8a72aca93562720a03c05084f61611e3247525160a00810c9f492cd9743e70ac7ad3db601771905a4ab53d089b943971416 SHA512 50001f73318a4deb63a487a817f0b151904f39bd3d9d3d0a04fe77e4323f639b625472fb82b32702fdfc990bf765aff65793ca6817f2798a5cf4b6c72f9a38d7 diff --git a/sys-cluster/adios2/adios2-2.8.1.ebuild b/sys-cluster/adios2/adios2-2.8.1.ebuild new file mode 100644 index 0000000000..5901f6ca00 --- /dev/null +++ b/sys-cluster/adios2/adios2-2.8.1.ebuild @@ -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 +} diff --git a/sys-cluster/adios2/files/adios2-2.8.1-sandbox.patch b/sys-cluster/adios2/files/adios2-2.8.1-sandbox.patch new file mode 100644 index 0000000000..d1d3db92a2 --- /dev/null +++ b/sys-cluster/adios2/files/adios2-2.8.1-sandbox.patch @@ -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" diff --git a/sys-cluster/adios2/files/adios2-2.8.1-system-libs.patch b/sys-cluster/adios2/files/adios2-2.8.1-system-libs.patch new file mode 100644 index 0000000000..86f2c89583 --- /dev/null +++ b/sys-cluster/adios2/files/adios2-2.8.1-system-libs.patch @@ -0,0 +1,307 @@ +--- a/source/adios2/CMakeLists.txt ++++ b/source/adios2/CMakeLists.txt +@@ -127,7 +127,7 @@ + $ + $ + ) +-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 "$") +@@ -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 ++#include + + #include + +@@ -53,7 +53,7 @@ + #endif + if (!configFile.empty()) + { +- if (!adios2sys::SystemTools::FileExists(configFile)) ++ if (!kwsys::SystemTools::FileExists(configFile)) + { + helper::Throw("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 // FileIsDirectory() ++#include // 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 // for runtime_error + #include // for vector + +-#include +-#include ++#include ++#include + + 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 ++#include + + #include + #include +@@ -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 // std::runtime_error, std::exception + #include + +-#include ++#include + + #include "adios2/common/ADIOSTypes.h" + #include "adios2/helper/adiosComm.h" +@@ -37,7 +37,7 @@ + + bool CreateDirectory(const std::string &fullPath) noexcept + { +- return static_cast(adios2sys::SystemTools::MakeDirectory(fullPath)); ++ return static_cast(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 ++#include + + 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 +-#include ++#include ++#include + #include + + 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(call_data); ++ // kwsys::CommandLineArguments *arg = ++ // static_cast(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() diff --git a/sys-cluster/adios2/metadata.xml b/sys-cluster/adios2/metadata.xml new file mode 100644 index 0000000000..f3fe0dc459 --- /dev/null +++ b/sys-cluster/adios2/metadata.xml @@ -0,0 +1,46 @@ + + + + + lssndrbarbieri@gmail.com + Alessandro Barbieri + + + https://github.com/ornladios/ADIOS2/issues + ornladios/ADIOS2 + + +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. + + + Enable support for Blosc transforms + Enable support for Little/Big Endian Interoperability + Enable support for Sodium for encryption + Enable support for SST + Enable support for ZeroMQ + Enable support for ZFP transforms + +