Gentoo Archives: gentoo-commits

From: Andrew Ammerlaan <andrewammerlaan@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: sci-biology/fsl/
Date: Fri, 14 Jan 2022 20:36:31
Message-Id: 1642192581.ea391932cb773a0305bcb60273dca6b59dfc331f.andrewammerlaan@gentoo
1 commit: ea391932cb773a0305bcb60273dca6b59dfc331f
2 Author: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jan 14 20:36:21 2022 +0000
4 Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
5 CommitDate: Fri Jan 14 20:36:21 2022 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=ea391932
7
8 sci-biology/fsl: add version 6.0.5
9
10 No keywords, compile fails, need patches
11
12 Package-Manager: Portage-3.0.30, Repoman-3.0.3
13 Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>
14
15 sci-biology/fsl/fsl-6.0.5.ebuild | 220 +++++++++++++++++++++++++++++++++++++++
16 1 file changed, 220 insertions(+)
17
18 diff --git a/sci-biology/fsl/fsl-6.0.5.ebuild b/sci-biology/fsl/fsl-6.0.5.ebuild
19 new file mode 100644
20 index 000000000..c51a9d30e
21 --- /dev/null
22 +++ b/sci-biology/fsl/fsl-6.0.5.ebuild
23 @@ -0,0 +1,220 @@
24 +# Copyright 1999-2022 Gentoo Authors
25 +# Distributed under the terms of the GNU General Public License v2
26 +
27 +EAPI=8
28 +
29 +inherit cuda toolchain-funcs prefix
30 +
31 +DESCRIPTION="Analysis of functional, structural, and diffusion MRI brain imaging data"
32 +HOMEPAGE="https://www.fmrib.ox.ac.uk/fsl"
33 +SRC_URI="https://fsl.fmrib.ox.ac.uk/fsldownloads/${P}-sources.tar.gz -> ${P}.tar.gz"
34 +S="${WORKDIR}/${PN}"
35 +
36 +LICENSE="FSL BSD-2 newmat"
37 +SLOT="0"
38 +KEYWORDS=""
39 +IUSE="cuda"
40 +
41 +DEPEND="
42 + dev-cpp/libxmlpp:=
43 + dev-cpp/tbb
44 + dev-db/sqlite
45 + dev-libs/boost
46 + dev-libs/libfmt
47 + dev-libs/libxml2
48 + dev-libs/pugixml
49 + >=dev-python/fslpy-3.7.0
50 + media-gfx/graphviz
51 + media-libs/gd
52 + media-libs/glu
53 + media-libs/libpng:0=
54 + sci-libs/gsl
55 + sci-libs/ciftilib
56 + sci-libs/fftw
57 + sci-libs/nlopt
58 + sci-libs/vtk
59 + sys-libs/zlib
60 + dev-lang/tcl:0=
61 + dev-lang/tk:0=
62 + >=virtual/lapack-3.8
63 + >=virtual/blas-3.8
64 + cuda? (
65 + || (
66 + ( =dev-util/nvidia-cuda-toolkit-11* =sys-devel/gcc-9*:* )
67 + )
68 + )
69 + "
70 +RDEPEND="${DEPEND}"
71 +
72 +UPSTREAM_FSLDIR="/usr/share/fsl"
73 +
74 +PATCHES=(
75 +# "${FILESDIR}/${PN}"-6.0.4-gcc10_include.patch
76 + "${FILESDIR}/${PN}"-6.0.4-setup.patch
77 +# "${FILESDIR}/${PN}"-6.0.2-no_xmlpp.patch
78 +# "${FILESDIR}/${PN}"-5.0.11-niftiio_var_fix.patch
79 +# "${FILESDIR}/${PN}"-5.0.11-fslsurface_parallel_make.patch
80 +# "${FILESDIR}/${PN}"-6.0.2-qstring_compat.patch
81 +# "${FILESDIR}/${PN}"-5.0.9-headers.patch
82 + "${FILESDIR}/${PN}"-6.0.4-flameo_std.patch
83 + "${FILESDIR}/${PN}"-6.0.4-melodic_std.patch
84 + "${FILESDIR}/${PN}"-6.0.4-remove_fslpy_collisions-p1.patch
85 + "${FILESDIR}/${PN}"-6.0.4-remove_fslpy_collisions-p2.patch
86 +# "${FILESDIR}/${PN}"-6.0.4-fdt_cuda.patch
87 +)
88 +
89 +src_prepare() {
90 + default
91 +
92 + sed -i \
93 + -e "s:@@GENTOO_RANLIB@@:$(tc-getRANLIB):" \
94 + -e "s:@@GENTOO_CC@@:$(tc-getCC):" \
95 + -e "s:@@GENTOO_CXX@@:$(tc-getCXX):" \
96 + config/buildSettings.mk || die
97 +
98 + eprefixify $(grep -rl GENTOO_PORTAGE_EPREFIX src/*) \
99 + etc/js/label-div.html
100 +
101 +# # Disable mist the hard way for now.
102 +# rm -r src/mist || die
103 +#
104 +# # Disable ptx2 for now
105 +# rm -r src/ptx2 || die
106 +#
107 + makefilelist=$(find src/ -name Makefile)
108 +
109 +# sed -i \
110 +# -e "s:-I\${INC_BOOST}::" \
111 +# -e "s:-I\${INC_ZLIB}::" \
112 +# -e "s:-I\${INC_GD}::" \
113 +# -e "s:-I\${INC_PNG}::" \
114 +# -e "s:-L\${LIB_GD}::" \
115 +# -e "s:-L\${LIB_PNG}::" \
116 +# -e "s:-L\${LIB_ZLIB}::" \
117 +# ${makefilelist} || die
118 +
119 + sed -e "s:\${FSLDIR}/bin/::g" \
120 + -e "s:\$FSLDIR/bin/::g" \
121 + -i $(grep -rl "\${FSLDIR}/bin" src/*) \
122 + -i $(grep -rl "\$FSLDIR/bin" src/*) \
123 + $(grep -rl "\${FSLDIR}/bin" etc/matlab/*)\
124 + $(grep -rl "\$FSLDIR/bin" etc/matlab/*) || die
125 +
126 + sed -e "s:\$FSLDIR/data:${EPREFIX}/usr/share/fsl/data:g" \
127 + -e "s:\${FSLDIR}/data:${EPREFIX}/usr/share/fsl/data:g" \
128 + -i $(grep -rl "\$FSLDIR/data" src/*) \
129 + $(grep -rl "\${FSLDIR}/data" src/*) || die
130 +
131 + sed -e "s:\$FSLDIR/doc:${EPREFIX}/usr/share/fsl/doc:g" \
132 + -e "s:\${FSLDIR}/doc:${EPREFIX}/usr/share/fsl/doc:g" \
133 + -i $(grep -rl "\$FSLDIR/doc" src/*) \
134 + $(grep -rl "\${FSLDIR}/doc" src/*) || die
135 +
136 + sed -e "s:/usr/share/fsl/doc:${EPREFIX}/usr/share/fsl/doc:g" \
137 + -i $(grep -rl "/usr/share/fsl/doc" src/*) || die
138 +
139 + sed -e "s:\$FSLDIR/etc:${EPREFIX}/etc:g" \
140 + -e "s:\${FSLDIR}/etc:${EPREFIX}/etc:g" \
141 + -i $(grep -rlI "\$FSLDIR/etc" *) \
142 + -i $(grep -rlI "\${FSLDIR}/etc" *) || die
143 +
144 + # Use generic blas/lapack rather than openblas
145 + sed -e "s:-lopenblas:-llapack -lblas:g" \
146 + -i $(grep -rlI lopenblas *) || die
147 +
148 + # script wanting to have access to fslversion at buildtime
149 + sed -e "s:/etc/fslversion:${S}/etc/fslversion:g" \
150 + -i ${makefilelist} || die
151 +
152 + if use cuda; then
153 + einfo
154 +
155 + gcc_ver=`gcc-fullversion`
156 + einfo "GCC version: ${gcc_ver}"
157 +
158 + cuda_gcc=`cuda_gccdir`
159 + cuda_NVCC_flags=`cuda_gccdir -f`
160 + einfo "CUDA GCC path: ${cuda_gcc}"
161 + einfo " ${cuda_NVCC_flags}"
162 +
163 + CUDA_INSTALLATION="/opt/cuda"
164 + CUDAVER=`cuda_toolkit_version`
165 +
166 + eapply "${FILESDIR}/${PN}-6.0.4-eddy_cuda.patch"
167 + eapply "${FILESDIR}/${PN}-6.0.4-cuda_buildsettings.patch"
168 +
169 + sed -i \
170 + -e "s:@@GENTOO_NVCC_FLAGS@@:${cuda_NVCC_flags}:" \
171 + src/eddy/Makefile || die
172 +
173 + cuda_sanitize
174 + fi
175 +}
176 +
177 +src_compile() {
178 + export FSLDIR=${WORKDIR}/${PN}
179 + export FSLCONDIR=${WORKDIR}/${PN}/config
180 + export FSLMACHTYPE=generic
181 +
182 + # define the default build system to match upstream official standard
183 + # -> individual projects may overwrite the '-std=' flag
184 + export ANSI_CFLAGS="-std=c99"
185 + export ANSI_CXXFLAGS="-std=c++98"
186 +
187 + export USERLDFLAGS="${LDFLAGS}"
188 + export USERCFLAGS="${CFLAGS}"
189 + export USERCPPFLAGS="${CPPFLAGS}"
190 + export USERCXXFLAGS="${CXXFLAGS}"
191 +
192 + export CIFTICFLAGS="$($(tc-getPKG_CONFIG) --cflags CiftiLib)"
193 + export CIFTILIBS="$($(tc-getPKG_CONFIG) --libs-only-l CiftiLib)"
194 +
195 + if use cuda; then
196 + einfo "CUDA_INSTALLATION: ${CUDA_INSTALLATION}"
197 + einfo "CUDAVER: ${CUDAVER}"
198 + fi
199 +
200 + ./build || die
201 +}
202 +
203 +src_install() {
204 + sed -i "s:\${FSLDIR}/tcl:/usr/libexec/fsl:g" \
205 + $(grep -lI "\${FSLDIR}/tcl" bin/*) \
206 + $(grep -l "\${FSLDIR}/tcl" tcl/*) || die
207 + sed -i "s:\$FSLDIR/tcl:/usr/libexec/fsl:g" \
208 + $(grep -l "\$FSLDIR/tcl" tcl/*) || die
209 +
210 + dobin bin/*
211 +
212 + insinto /usr/share/${PN}
213 + doins -r data
214 + dodoc -r doc/. refdoc
215 +
216 + insinto /usr/libexec/fsl
217 + doins -r tcl/*
218 +
219 + insinto /etc/fslconf
220 + doins etc/fslconf/fsl.sh
221 +
222 + insinto /etc
223 + doins etc/fslversion
224 + doins -r etc/default_flobs.flobs etc/flirtsch etc/js etc/luts
225 +
226 + #the following is needed for FSL and depending programs to be able
227 + #to find its files, since FSL uses an uncommon installation path:
228 + #https://github.com/gentoo-science/sci/pull/612#r60289295
229 + dosym ../../../etc ${UPSTREAM_FSLDIR}/etc
230 + dosym ../doc/${PF} ${UPSTREAM_FSLDIR}/doc
231 + dosym ../../bin ${UPSTREAM_FSLDIR}/bin
232 +
233 + doenvd "$(prefixify_ro "${FILESDIR}"/99fsl)"
234 + mv "${ED}"/usr/bin/{,fsl_}cluster || die
235 +}
236 +
237 +pkg_postinst() {
238 + echo
239 + einfo "Please run the following commands if you"
240 + einfo "intend to use fsl from an existing shell:"
241 + einfo "env-update && source /etc/profile"
242 + echo
243 +}