guru/dev-libs/StringiFor/StringiFor-1.1.1.ebuild
Sergey Torokhov 9228029843
dev-libs/StringiFor: new package
A KISS pure Fortran library providing astrings (class) manipulator
for modern (2003+) Fortran projects.

From developer's page (https://github.com/szaghi/StringiFor):

What is StringiFor?
Modern Fortran standards (2003+) have introduced a better support
for characters variables, but Fortraners still do not have the power
on dealing with strings of other more-rich-programmers, e.g. Pythoners.

Allocatable deferred length character variables are now quantum-leap
with respect the old inflexible Fortran characters,
but it is still not enough for many Fortraners.

Moreover, Fortran does not provide builtin methods
for widely used strings manipulations offered by other languages,
e.g. UPPER/lowercase transformation, tokenization, etc...
StringiFor attempts to fill this lack.

Signed-off-by: Sergey Torokhov <torokhov-s-a@yandex.ru>
2020-04-19 17:01:04 +03:00

102 lines
3.0 KiB
Bash

# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
FORTRAN_STANDARD=2003
inherit fortran-2 toolchain-funcs
# Unfortunately the releases don't have appropriate release-tags
# so there commits sha-1 checksum are used
StringiFor_sha="7f73f2682372201721f0fd670cf9c772d11b5268" # StringiFor-1.1.1 (27 jan 2020)
BeFoR64_sha="d2be41faa804c5b1b811351c5384cdb6c58ce431" # BeFoR-1.1.4 (11 sep 2019)
FACE_sha="e3700566a18e145f0f90ba6c89570b690526845b" # FACE-1.1.2 (11 sep 2019)
PENF_sha="d2b27d5652f48584b9468ebd0b11dd44b5fb1638" # PENF-1.2.2 (11 sep 2019)
DESCRIPTION="StringiFor, Strings Fortran Manipulator, yet another strings Fortran module"
HOMEPAGE="https://github.com/szaghi/StringiFor"
SRC_URI="
https://github.com/szaghi/${PN}/archive/"${StringiFor_sha}".tar.gz -> ${P}.tar.gz
https://github.com/szaghi/FACE/archive/"${FACE_sha}".tar.gz -> FACE-1.1.2.tar.gz
https://github.com/szaghi/PENF/archive/"${PENF_sha}".tar.gz -> PENF-1.2.2.tar.gz
https://github.com/szaghi/BeFoR64/archive/"${BeFoR64_sha}".tar.gz -> BeFoR64-1.1.4.tar.gz
"
S="${WORKDIR}/${PN}-${StringiFor_sha}"
# 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="!test? ( test )"
DEPEND="dev-util/FoBiS"
PATCHES=(
"${FILESDIR}/stringifor-1.1.1_fobos_soname.patch"
"${FILESDIR}/stringifor-1.1.1_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() {
mv -T "${WORKDIR}"/BeFoR64-"${BeFoR64_sha}" "${S}"/src/third_party/BeFoR64
mv -T "${WORKDIR}"/FACE-"${FACE_sha}" "${S}"/src/third_party/FACE
mv -T "${WORKDIR}"/PENF-"${PENF_sha}" "${S}"/src/third_party/PENF
default
if [ "${FFLAGS}" ] ; then
sed -i -e 's:\$OPTIMIZE = -O2:\$OPTIMIZE = '"${FFLAGS}"':' fobos || die
fi
}
src_compile() {
FoBiS.py build -verbose ${BUILD_MODE_SHARED}
use static-libs && FoBiS.py build -verbose ${BUILD_MODE_STATIC}
}
src_test() {
FoBiS.py build ${BUILD_MODE_TESTS}
for e in $( find ./exe/ -type f -executable -print ); do
if [ "$e" != "./exe/stringifor_test_parse_large_csv" ] ; then
echo " run test $e :" && $e
else
# The output of this test is too huge so it's cutted here
echo " run test $e :" && $e | tail -n 10
fi
done
}
src_install() {
mv lib/mod lib/stringifor
doheader -r lib/stringifor/
mv lib/libstringifor.so{,.1}
dosym libstringifor.so.1 /usr/$(get_libdir)/libstringifor.so
dolib.so lib/libstringifor.so.1
use static-libs && dolib.a lib/libstringifor.a
}