From f46404afdff1c3cc2457b314e39ee2700434d789 Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Sat, 31 Jul 2021 08:45:53 +0200 Subject: [PATCH] sys-cluster/fti: initial import Signed-off-by: Alessandro Barbieri --- sys-cluster/fti/Manifest | 1 + .../fti/files/fti-add-spinx-ext-autodoc.patch | 20 +++++ .../fti/files/fti-sionlib-includedir.patch | 11 +++ sys-cluster/fti/fti-1.6.ebuild | 85 +++++++++++++++++++ sys-cluster/fti/metadata.xml | 25 ++++++ 5 files changed, 142 insertions(+) create mode 100644 sys-cluster/fti/Manifest create mode 100644 sys-cluster/fti/files/fti-add-spinx-ext-autodoc.patch create mode 100644 sys-cluster/fti/files/fti-sionlib-includedir.patch create mode 100644 sys-cluster/fti/fti-1.6.ebuild create mode 100644 sys-cluster/fti/metadata.xml diff --git a/sys-cluster/fti/Manifest b/sys-cluster/fti/Manifest new file mode 100644 index 0000000000..ecb4bf5d45 --- /dev/null +++ b/sys-cluster/fti/Manifest @@ -0,0 +1 @@ +DIST fti-1.6.tar.gz 1752536 BLAKE2B 5e4757700a4911cd82cbd0a7426e39ef081c38809e39d4564a8aeea24e370ed9a87654c664ee14afaa95a394275db817271cf393d3b7febce9f578d5874e520e SHA512 068e43d6c433c57c88acd8b39a0f05a012e87084fa8e0a912216f8e9725310bfab46ba8a23b02560287e7408ccb1ed62ead61768deb9135d9eb1b3fd19bed290 diff --git a/sys-cluster/fti/files/fti-add-spinx-ext-autodoc.patch b/sys-cluster/fti/files/fti-add-spinx-ext-autodoc.patch new file mode 100644 index 0000000000..cc34e37194 --- /dev/null +++ b/sys-cluster/fti/files/fti-add-spinx-ext-autodoc.patch @@ -0,0 +1,20 @@ +From 65f203e50cd08489d2c49ec8a645d82f104c6b29 Mon Sep 17 00:00:00 2001 +From: Alessandro Barbieri +Date: Sat, 31 Jul 2021 08:11:00 +0200 +Subject: [PATCH] add sphinx.ext.autodoc to doc extensions + +--- + docs/source/conf.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/docs/source/conf.py ++++ b/docs/source/conf.py +@@ -31,7 +31,7 @@ + # Add any Sphinx extension module names here, as strings. They can be + # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom + # ones. +-extensions = ['breathe', 'sphinx.ext.autosectionlabel'] ++extensions = ['breathe', 'sphinx.ext.autosectionlabel', 'sphinx.ext.autodoc'] + + # Add any paths that contain templates here, relative to this directory. + templates_path = ['_templates'] diff --git a/sys-cluster/fti/files/fti-sionlib-includedir.patch b/sys-cluster/fti/files/fti-sionlib-includedir.patch new file mode 100644 index 0000000000..dab1df493c --- /dev/null +++ b/sys-cluster/fti/files/fti-sionlib-includedir.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -126,7 +126,7 @@ + # Library: SIONLib (Optional) + if(ENABLE_SIONLIB) + set(SIONLIBBASE "" CACHE FILEPATH "base path to SIONlib installation") +- set(SIONLIB_INCLUDE_DIR "${SIONLIBBASE}/include/") ++ set(SIONLIB_INCLUDE_DIR "/usr/include/sionlib") + + list(APPEND INC_PRIV ${SIONLIB_INCLUDE_DIR}) + find_library(SIONLIB_MPI NAMES "sionmpi_64" diff --git a/sys-cluster/fti/fti-1.6.ebuild b/sys-cluster/fti/fti-1.6.ebuild new file mode 100644 index 0000000000..fa294090dd --- /dev/null +++ b/sys-cluster/fti/fti-1.6.ebuild @@ -0,0 +1,85 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +DOCS_BUILDER="sphinx" +DOCS_DEPEND=" + dev-python/breathe + dev-python/sphinx_rtd_theme +" +DOCS_DIR="${S}/docs/source" +FORTRAN_NEEDED="fortran" +PYTHON_COMPAT=( python3_{8..10} pypy3 ) + +inherit cmake python-any-r1 docs fortran-2 + +DESCRIPTION="Fault Tolerance Interface" +HOMEPAGE="https://github.com/leobago/fti" +SRC_URI="https://github.com/leobago/fti/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64" +IUSE="doc examples fi-io hdf5 lustre fortran openssl sionlib test tutorial" + +RDEPEND=" + sys-libs/zlib + virtual/mpi + + hdf5? ( sci-libs/hdf5[mpi] ) + lustre? ( sys-cluster/lustre ) + openssl? ( dev-libs/openssl ) + sionlib? ( sys-cluster/sionlib ) +" +DEPEND="${RDEPEND}" +BDEPEND="doc? ( app-doc/doxygen )" + +PATCHES=( + "${FILESDIR}/${PN}-sionlib-includedir.patch" + "${FILESDIR}/${PN}-add-spinx-ext-autodoc.patch" +) +RESTRICT="!test? ( test )" + +pkg_setup() { + fortran-2_pkg_setup +} + +src_configure() { + local mycmakeargs=( + -DSIONLIBBASE="${EPREFIX}/usr/$(get_libdir)" + -DENABLE_COVERAGE=OFF + -DENABLE_IME_NATIVE=OFF + + -DENABLE_DOCU=$(usex doc) + -DENABLE_EXAMPLES=$(usex examples) + -DENABLE_FI_IO=$(usex fi-io) + -DENABLE_FORTRAN=$(usex fortran) + -DENABLE_HDF5=$(usex hdf5) + -DENABLE_LUSTRE=$(usex lustre) + -DENABLE_OPENSSL=$(usex openssl) + -DENABLE_SIONLIB=$(usex sionlib) + -DENABLE_TESTS=$(usex test) + -DENABLE_TUTORIAL=$(usex tutorial) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + docs_compile +} + +src_install() { + cmake_src_install + einstalldocs + if use examples; then + mkdir -p "${ED}/usr/libexec/${PN}" || die + mv "${ED}/usr/bin/examples" "${ED}/usr/libexec/${PN}/examples" || die + fi + if use tutorial; then + mkdir -p "${ED}/usr/libexec/${PN}" || die + mv "${ED}/usr/bin/tutorial" "${ED}/usr/libexec/${PN}/tutorial" || die + fi + find "${ED}" -name '*.a' -delete || die +} diff --git a/sys-cluster/fti/metadata.xml b/sys-cluster/fti/metadata.xml new file mode 100644 index 0000000000..1214879fe5 --- /dev/null +++ b/sys-cluster/fti/metadata.xml @@ -0,0 +1,25 @@ + + + + + lssndrbarbieri@gmail.com + Alessandro Barbieri + + + https://github.com/leobago/fti/issues + leobago/fti + + +FTI stands for Fault Tolerance Interface and is a library that aims to give computational scientists the means to perform fast and efficient multilevel checkpointing in large scale supercomputers. FTI leverages local storage plus data replication and erasure codes to provide several levels of reliability and performance. FTI is application-level checkpointing and allows users to select which datasets needs to be protected, in order to improve efficiency and avoid wasting space, time and energy. In addition, it offers a direct data interface so that users do not need to deal with files and/or directory names. All metadata is managed by FTI in a transparent fashion for the user. If desired, users can dedicate one process per node to overlap fault tolerance workload and scientific computation, so that post-checkpoint tasks are executed asynchronously. + + + To use the dev-libs/openssl MD5 rather than the built-in + Enables the build of a Fortran wrapper + Enables Lustre Support + Enables the parallel I/O sys-cluster/sionlib for FTI + Enables the HDF5 checkpoints for FTI + Enables the generation of tutorial files + Enables the I/O failure injection mechanism + Enables the generation of tests + +