You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.4 KiB
167 lines
4.4 KiB
# Copyright 1999-2021 Gentoo Authors |
|
# Distributed under the terms of the GNU General Public License v2 |
|
|
|
EAPI=7 |
|
|
|
inherit flag-o-matic toolchain-funcs prefix |
|
|
|
DESCRIPTION="Analysis of functional, structural, and diffusion MRI brain imaging data" |
|
HOMEPAGE="https://www.fmrib.ox.ac.uk/fsl" |
|
SRC_URI="https://fsl.fmrib.ox.ac.uk/fsldownloads/${P}-sources.tar.gz -> ${P}.tar.gz" |
|
|
|
LICENSE="FSL BSD-2 newmat" |
|
SLOT="0" |
|
KEYWORDS="~amd64" |
|
IUSE="" |
|
|
|
DEPEND=" |
|
dev-libs/boost |
|
<dev-python/fslpy-3 |
|
media-gfx/graphviz |
|
media-libs/gd |
|
media-libs/glu |
|
media-libs/libpng:0= |
|
sci-libs/ciftilib |
|
sci-libs/nlopt |
|
sys-libs/zlib |
|
dev-lang/tcl:0= |
|
dev-lang/tk:0= |
|
>=virtual/lapack-3.8 |
|
>=virtual/blas-3.8 |
|
" |
|
RDEPEND="${DEPEND}" |
|
|
|
S=${WORKDIR}/${PN} |
|
UPSTREAM_FSLDIR="/usr/share/fsl" |
|
|
|
PATCHES=( |
|
"${FILESDIR}/${PN}"-6.0.2-gcc10_include.patch |
|
"${FILESDIR}/${PN}"-6.0.2-setup.patch |
|
"${FILESDIR}/${PN}"-6.0.2-template.patch |
|
"${FILESDIR}/${PN}"-6.0.2-no_xmlpp.patch |
|
"${FILESDIR}/${PN}"-5.0.11-niftiio_var_fix.patch |
|
"${FILESDIR}/${PN}"-5.0.11-ifstream_use.patch |
|
"${FILESDIR}/${PN}"-5.0.11-fslsurface_parallel_make.patch |
|
"${FILESDIR}/${PN}"-6.0.2-qstring_compat.patch |
|
"${FILESDIR}/${PN}"-5.0.9-headers.patch |
|
"${FILESDIR}/${PN}"-6.0.2-fsldir_redux-p1.patch |
|
"${FILESDIR}/${PN}"-6.0.2-fsldir_redux-p2.patch |
|
) |
|
|
|
src_prepare(){ |
|
default |
|
|
|
sed -i \ |
|
-e "s:@@GENTOO_RANLIB@@:$(tc-getRANLIB):" \ |
|
-e "s:@@GENTOO_CC@@:$(tc-getCC):" \ |
|
-e "s:@@GENTOO_CXX@@:$(tc-getCXX):" \ |
|
config/buildSettings.mk || die |
|
|
|
eprefixify $(grep -rl GENTOO_PORTAGE_EPREFIX src/*) \ |
|
etc/js/label-div.html |
|
|
|
# Disable mist-clean the hard way for now. |
|
rm -rf src/mist-clean |
|
|
|
makefilelist=$(find src/ -name Makefile) |
|
|
|
sed -i \ |
|
-e "s:-I\${INC_BOOST}::" \ |
|
-e "s:-I\${INC_ZLIB}::" \ |
|
-e "s:-I\${INC_GD}::" \ |
|
-e "s:-I\${INC_PNG}::" \ |
|
-e "s:-L\${LIB_GD}::" \ |
|
-e "s:-L\${LIB_PNG}::" \ |
|
-e "s:-L\${LIB_ZLIB}::" \ |
|
${makefilelist} || die |
|
|
|
sed -e "s:\${FSLDIR}/bin/::g" \ |
|
-e "s:\$FSLDIR/bin/::g" \ |
|
-i $(grep -rl "\${FSLDIR}/bin" src/*) \ |
|
-i $(grep -rl "\$FSLDIR/bin" src/*) \ |
|
$(grep -rl "\${FSLDIR}/bin" etc/matlab/*)\ |
|
$(grep -rl "\$FSLDIR/bin" etc/matlab/*) || die |
|
|
|
sed -e "s:\$FSLDIR/data:${EPREFIX}/usr/share/fsl/data:g" \ |
|
-e "s:\${FSLDIR}/data:${EPREFIX}/usr/share/fsl/data:g" \ |
|
-i $(grep -rl "\$FSLDIR/data" src/*) \ |
|
$(grep -rl "\${FSLDIR}/data" src/*) || die |
|
|
|
sed -e "s:\$FSLDIR/doc:${EPREFIX}/usr/share/fsl/doc:g" \ |
|
-e "s:\${FSLDIR}/doc:${EPREFIX}/usr/share/fsl/doc:g" \ |
|
-i $(grep -rl "\$FSLDIR/doc" src/*) \ |
|
$(grep -rl "\${FSLDIR}/doc" src/*) || die |
|
|
|
sed -e "s:/usr/share/fsl/doc:${EPREFIX}/usr/share/fsl/doc:g" \ |
|
-i $(grep -rl "/usr/share/fsl/doc" src/*) || die |
|
|
|
sed -e "s:\$FSLDIR/etc:${EPREFIX}/etc:g" \ |
|
-e "s:\${FSLDIR}/etc:${EPREFIX}/etc:g" \ |
|
-i $(grep -rlI "\$FSLDIR/etc" *) \ |
|
-i $(grep -rlI "\${FSLDIR}/etc" *) || die |
|
|
|
# Use generic blas/lapack rather than openblas |
|
sed -e "s:-lopenblas:-llapack -lblas:g" \ |
|
-i $(grep -rlI lopenblas *) || die |
|
|
|
# script wanting to have access to flsversion at buildtime |
|
sed -e "s:/etc/fslversion:${S}/etc/fslversion:g" \ |
|
-i ${makefilelist} || die |
|
} |
|
|
|
src_compile() { |
|
export FSLDIR=${WORKDIR}/${PN} |
|
export FSLCONDIR=${WORKDIR}/${PN}/config |
|
export FSLMACHTYPE=generic |
|
|
|
export USERLDFLAGS="${LDFLAGS}" |
|
export USERCFLAGS="${CFLAGS}" |
|
export USERCXXFLAGS="${CXXFLAGS}" |
|
|
|
export CIFTICFLAGS="$($(tc-getPKG_CONFIG) --cflags CiftiLib)" |
|
export CIFTILIBS="$($(tc-getPKG_CONFIG) --libs-only-l CiftiLib)" |
|
|
|
./build || die |
|
} |
|
|
|
src_install() { |
|
sed -i "s:\${FSLDIR}/tcl:/usr/libexec/fsl:g" \ |
|
$(grep -lI "\${FSLDIR}/tcl" bin/*) \ |
|
$(grep -l "\${FSLDIR}/tcl" tcl/*) || die |
|
sed -i "s:\$FSLDIR/tcl:/usr/libexec/fsl:g" \ |
|
$(grep -l "\$FSLDIR/tcl" tcl/*) || die |
|
|
|
dobin bin/* |
|
|
|
insinto /usr/share/${PN} |
|
doins -r data |
|
dodoc -r doc/. refdoc |
|
|
|
insinto /usr/libexec/fsl |
|
doins -r tcl/* |
|
|
|
insinto /etc/fslconf |
|
doins etc/fslconf/fsl.sh |
|
|
|
insinto /etc |
|
doins etc/fslversion |
|
doins -r etc/default_flobs.flobs etc/flirtsch etc/js etc/luts |
|
|
|
#the following is needed for FSL and depending programs to be able |
|
#to find its files, since FSL uses an uncommon installation path: |
|
#https://github.com/gentoo-science/sci/pull/612#r60289295 |
|
dosym ../../../etc ${UPSTREAM_FSLDIR}/etc |
|
dosym ../doc/${PF} ${UPSTREAM_FSLDIR}/doc |
|
dosym ../../bin ${UPSTREAM_FSLDIR}/bin |
|
|
|
doenvd "$(prefixify_ro "${FILESDIR}"/99fsl)" |
|
mv "${ED}"/usr/bin/{,fsl_}cluster || die |
|
} |
|
|
|
pkg_postinst() { |
|
echo |
|
einfo "Please run the following commands if you" |
|
einfo "intend to use fsl from an existing shell:" |
|
einfo "env-update && source /etc/profile" |
|
echo |
|
}
|
|
|