# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 FORTRAN_STANDARD=2003 PYTHON_COMPAT=( python3_{10..12} ) inherit fortran-2 python-any-r1 toolchain-funcs DESCRIPTION="StringiFor, Strings Fortran Manipulator, yet another strings Fortran module" HOMEPAGE="https://github.com/szaghi/StringiFor" SRC_URI="https://github.com/szaghi/StringiFor/releases/download/v${PV}/StringiFor.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/${PN}" # For FOSS projects: GPL-3 # For closed source/commercial projects: BSD 2-Clause, BSD 3-Clause, MIT LICENSE="GPL-3 BSD-2 BSD MIT" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="static-libs test" RESTRICT="mirror !test? ( test )" BDEPEND=" ${PYTHON_DEPS} $(python_gen_any_dep ' dev-build/FoBiS[${PYTHON_USEDEP}] ') " PATCHES=( "${FILESDIR}/stringifor-1.1.1_fobos_soname.patch" "${FILESDIR}/stringifor-1.1.3_fix_tests.patch" ) set_build_mode() { case $(tc-getFC) in *gfortran* ) BUILD_MODE_SHARED="-mode stringifor-shared-gnu" BUILD_MODE_STATIC="-mode stringifor-static-gnu" BUILD_MODE_TESTS="-mode tests-gnu" ;; *ifort* ) BUILD_MODE_SHARED="-mode stringifor-shared-intel" BUILD_MODE_STATIC="-mode stringifor-static-intel" BUILD_MODE_TESTS="-mode tests-intel" ;; * ) die "Sorry, GNU gfortran or Intel ifort are currently supported in the ebuild" ;; esac } pkg_setup() { fortran-2_pkg_setup set_build_mode } src_prepare() { default sed -i -e 's:\$OPTIMIZE = -O2:\$OPTIMIZE = '"${FFLAGS}"':' \ -e '/^\$LSHARED/s:$: '"${LDFLAGS}"':' fobos || die } src_compile() { ${EPYTHON} FoBiS.py build -verbose -compiler custom -fc $(tc-getFC) ${BUILD_MODE_SHARED} || die use static-libs && { ${EPYTHON} FoBiS.py build -verbose -compiler custom -fc $(tc-getFC) ${BUILD_MODE_STATIC} || die; } } src_test() { ${EPYTHON} FoBiS.py build -compiler custom -fc $(tc-getFC) ${BUILD_MODE_TESTS} || die for e in $( find ./exe/ -type f -executable -print ); do if [ "$e" != "./exe/stringifor_test_parse_large_csv" ] ; then echo " run test $e :" && { $e || die; } else # The output of this test is too huge so it's cutted here echo " run test $e :" && { $e | tail -n 10 || die; } fi done } src_install() { mv lib/mod lib/stringifor || die doheader -r lib/stringifor/ mv lib/libstringifor.so{,.1} || die dosym libstringifor.so.1 /usr/$(get_libdir)/libstringifor.so dolib.so lib/libstringifor.so.1 use static-libs && dolib.a lib/libstringifor.a }