Gentoo Archives: gentoo-commits

From: Horea Christian <horea.christ@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: sci-biology/fsl/files/, sci-biology/fsl/
Date: Thu, 17 Sep 2020 15:15:52
Message-Id: 1600355665.21789df887204e7b98393fb115982ee36a71d8c1.chymera@gentoo
1 commit: 21789df887204e7b98393fb115982ee36a71d8c1
2 Author: AbstractMethod <paul.polak <AT> med-image <DOT> info>
3 AuthorDate: Mon Sep 14 23:55:04 2020 +0000
4 Commit: Horea Christian <horea.christ <AT> gmail <DOT> com>
5 CommitDate: Thu Sep 17 15:14:25 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=21789df8
7
8 Changes for fsl CUDA support
9
10 Package-Manager: Portage-3.0.6, Repoman-3.0.1
11 Signed-off-by: Horea Christian <chr <AT> chymera.eu>
12
13 .../fsl/files/fsl-6.0.2-cuda_buildsettings.patch | 12 ++
14 sci-biology/fsl/files/fsl-6.0.2-eddy_cuda.patch | 21 +++
15 sci-biology/fsl/fsl-6.0.2-r1.ebuild | 202 +++++++++++++++++++++
16 sci-biology/fsl/metadata.xml | 3 +
17 4 files changed, 238 insertions(+)
18
19 diff --git a/sci-biology/fsl/files/fsl-6.0.2-cuda_buildsettings.patch b/sci-biology/fsl/files/fsl-6.0.2-cuda_buildsettings.patch
20 new file mode 100644
21 index 000000000..a3872acf0
22 --- /dev/null
23 +++ b/sci-biology/fsl/files/fsl-6.0.2-cuda_buildsettings.patch
24 @@ -0,0 +1,12 @@
25 +diff -Naur fsl.orig/config/buildSettings.mk fsl/config/buildSettings.mk
26 +--- fsl.orig/config/buildSettings.mk 2020-07-23 15:43:42.277064365 -0400
27 ++++ fsl/config/buildSettings.mk 2020-07-23 15:45:17.705069496 -0400
28 +@@ -141,7 +141,7 @@
29 + # CUDA development environment
30 + CUDAVER := $(or $(CUDAVER),9.1)
31 + #$(info $$CUDAVER is [${CUDAVER}])
32 +-CUDA_INSTALLATION = /opt/cuda-${CUDAVER}
33 ++CUDA_INSTALLATION = /opt/cuda
34 + GENCODE_FLAGS = $(shell ${FSLDIR}/config/common/supportedGencodes.sh ${CUDA_INSTALLATION})
35 + LIB_CUDA = ${CUDA_INSTALLATION}/lib64
36 + INC_CUDA = ${CUDA_INSTALLATION}/include
37
38 diff --git a/sci-biology/fsl/files/fsl-6.0.2-eddy_cuda.patch b/sci-biology/fsl/files/fsl-6.0.2-eddy_cuda.patch
39 new file mode 100644
40 index 000000000..40409ec08
41 --- /dev/null
42 +++ b/sci-biology/fsl/files/fsl-6.0.2-eddy_cuda.patch
43 @@ -0,0 +1,21 @@
44 +diff -Naur fsl.orig/src/eddy/Makefile fsl/src/eddy/Makefile
45 +--- fsl.orig/src/eddy/Makefile 2020-07-30 14:30:06.414884410 -0400
46 ++++ fsl/src/eddy/Makefile 2020-07-30 14:33:03.400889914 -0400
47 +@@ -29,6 +29,8 @@
48 + TMPCXXFLAGS_2=
49 + TMPNAME_1=
50 + TMPNAME_2=
51 ++cuda=1
52 ++cpu=1
53 +
54 + ifndef cuda
55 + ifndef cpu #Default single cpu, no threading
56 +@@ -74,7 +75,7 @@
57 + ifdef NVCC11
58 + NVCC=${NVCC11}
59 + endif
60 +-NVCCFLAGS=-c -DCOMPILE_GPU -O3 -m 64 -std=c++11
61 ++NVCCFLAGS=-c -DCOMPILE_GPU -O3 -m 64 -std=c++11 @@GENTOO_NVCC_FLAGS@@
62 + ifeq ($(CLOBBER_CLANG),1)
63 + NVCCFLAGS+= -DCLOBBER_CLANG
64 + endif
65
66 diff --git a/sci-biology/fsl/fsl-6.0.2-r1.ebuild b/sci-biology/fsl/fsl-6.0.2-r1.ebuild
67 new file mode 100644
68 index 000000000..0cadd4e4b
69 --- /dev/null
70 +++ b/sci-biology/fsl/fsl-6.0.2-r1.ebuild
71 @@ -0,0 +1,202 @@
72 +# Copyright 1999-2020 Gentoo Authors
73 +# Distributed under the terms of the GNU General Public License v2
74 +
75 +EAPI=7
76 +
77 +inherit cuda flag-o-matic toolchain-funcs prefix
78 +
79 +DESCRIPTION="Analysis of functional, structural, and diffusion MRI brain imaging data"
80 +HOMEPAGE="http://www.fmrib.ox.ac.uk/fsl"
81 +SRC_URI="https://fsl.fmrib.ox.ac.uk/fsldownloads/${P}-sources.tar.gz -> ${P}.tar.gz"
82 +
83 +LICENSE="FSL BSD-2 newmat"
84 +SLOT="0"
85 +KEYWORDS="~amd64"
86 +IUSE="cuda"
87 +
88 +DEPEND="
89 + dev-libs/boost
90 + dev-python/fslpy
91 + media-gfx/graphviz
92 + media-libs/gd
93 + media-libs/glu
94 + media-libs/libpng:0=
95 + sci-libs/ciftilib
96 + sci-libs/nlopt
97 + sys-libs/zlib
98 + dev-lang/tcl:0=
99 + dev-lang/tk:0=
100 + >=virtual/lapack-3.8
101 + >=virtual/blas-3.8
102 +
103 + cuda? (
104 + || (
105 + ( =dev-util/nvidia-cuda-toolkit-10* =sys-devel/gcc-8* )
106 + ( =dev-util/nvidia-cuda-toolkit-11* =sys-devel/gcc-9* )
107 + )
108 + )
109 + "
110 +RDEPEND="${DEPEND}"
111 +
112 +S=${WORKDIR}/${PN}
113 +UPSTREAM_FSLDIR="/usr/share/fsl"
114 +
115 +PATCHES=(
116 + "${FILESDIR}/${PN}"-6.0.2-gcc10_include.patch
117 + "${FILESDIR}/${PN}"-6.0.2-setup.patch
118 + "${FILESDIR}/${PN}"-6.0.2-template.patch
119 + "${FILESDIR}/${PN}"-6.0.2-no_xmlpp.patch
120 + "${FILESDIR}/${PN}"-5.0.11-niftiio_var_fix.patch
121 + "${FILESDIR}/${PN}"-5.0.11-ifstream_use.patch
122 + "${FILESDIR}/${PN}"-5.0.11-fslsurface_parallel_make.patch
123 + "${FILESDIR}/${PN}"-6.0.2-qstring_compat.patch
124 + "${FILESDIR}/${PN}"-5.0.9-headers.patch
125 + "${FILESDIR}/${PN}"-6.0.2-fsldir_redux.patch
126 +)
127 +
128 +src_prepare() {
129 + default
130 +
131 + sed -i \
132 + -e "s:@@GENTOO_RANLIB@@:$(tc-getRANLIB):" \
133 + -e "s:@@GENTOO_CC@@:$(tc-getCC):" \
134 + -e "s:@@GENTOO_CXX@@:$(tc-getCXX):" \
135 + config/buildSettings.mk || die
136 +
137 + eprefixify $(grep -rl GENTOO_PORTAGE_EPREFIX src/*) \
138 + etc/js/label-div.html
139 +
140 + # Disable mist-clean the hard way for now.
141 + rm -rf src/mist-clean
142 +
143 + makefilelist=$(find src/ -name Makefile)
144 +
145 + sed -i \
146 + -e "s:-I\${INC_BOOST}::" \
147 + -e "s:-I\${INC_ZLIB}::" \
148 + -e "s:-I\${INC_GD}::" \
149 + -e "s:-I\${INC_PNG}::" \
150 + -e "s:-L\${LIB_GD}::" \
151 + -e "s:-L\${LIB_PNG}::" \
152 + -e "s:-L\${LIB_ZLIB}::" \
153 + ${makefilelist} || die
154 +
155 + sed -e "s:\${FSLDIR}/bin/::g" \
156 + -e "s:\$FSLDIR/bin/::g" \
157 + -i $(grep -rl "\${FSLDIR}/bin" src/*) \
158 + -i $(grep -rl "\$FSLDIR/bin" src/*) \
159 + $(grep -rl "\${FSLDIR}/bin" etc/matlab/*)\
160 + $(grep -rl "\$FSLDIR/bin" etc/matlab/*) || die
161 +
162 + sed -e "s:\$FSLDIR/data:${EPREFIX}/usr/share/fsl/data:g" \
163 + -e "s:\${FSLDIR}/data:${EPREFIX}/usr/share/fsl/data:g" \
164 + -i $(grep -rl "\$FSLDIR/data" src/*) \
165 + $(grep -rl "\${FSLDIR}/data" src/*) || die
166 +
167 + sed -e "s:\$FSLDIR/doc:${EPREFIX}/usr/share/fsl/doc:g" \
168 + -e "s:\${FSLDIR}/doc:${EPREFIX}/usr/share/fsl/doc:g" \
169 + -i $(grep -rl "\$FSLDIR/doc" src/*) \
170 + $(grep -rl "\${FSLDIR}/doc" src/*) || die
171 +
172 + sed -e "s:/usr/share/fsl/doc:${EPREFIX}/usr/share/fsl/doc:g" \
173 + -i $(grep -rl "/usr/share/fsl/doc" src/*) || die
174 +
175 + sed -e "s:\$FSLDIR/etc:${EPREFIX}/etc:g" \
176 + -e "s:\${FSLDIR}/etc:${EPREFIX}/etc:g" \
177 + -i $(grep -rlI "\$FSLDIR/etc" *) \
178 + -i $(grep -rlI "\${FSLDIR}/etc" *) || die
179 +
180 + # Use generic blas/lapack rather than openblas
181 + sed -e "s:-lopenblas:-llapack -lblas:g" \
182 + -i $(grep -rlI lopenblas *) || die
183 +
184 + # script wanting to have access to flsversion at buildtime
185 + sed -e "s:/etc/fslversion:${S}/etc/fslversion:g" \
186 + -i ${makefilelist} || die
187 +
188 + if use cuda; then
189 + einfo
190 +
191 + gcc_ver=`gcc-fullversion`
192 + einfo "GCC version: ${gcc_ver}"
193 +
194 + cuda_gcc=`cuda_gccdir`
195 + cuda_NVCC_flags=`cuda_gccdir -f`
196 + einfo "CUDA GCC path: ${cuda_gcc}"
197 + einfo " ${cuda_NVCC_flags}"
198 +
199 + CUDA_INSTALLATION="/opt/cuda"
200 + CUDAVER=`cuda_toolkit_version`
201 +
202 + eapply "${FILESDIR}/${PN}-6.0.2-eddy_cuda.patch"
203 + eapply "${FILESDIR}/${PN}-6.0.2-cuda_buildsettings.patch"
204 +
205 + sed -i \
206 + -e "s:@@GENTOO_NVCC_FLAGS@@:${cuda_NVCC_flags}:" \
207 + src/eddy/Makefile || die
208 +
209 + cuda_sanitize
210 + fi
211 +}
212 +
213 +src_compile() {
214 + export FSLDIR=${WORKDIR}/${PN}
215 + export FSLCONDIR=${WORKDIR}/${PN}/config
216 + export FSLMACHTYPE=generic
217 +
218 + export USERLDFLAGS="${LDFLAGS}"
219 + export USERCFLAGS="${CFLAGS}"
220 + export USERCXXFLAGS="${CXXFLAGS}"
221 +
222 + export CIFTICFLAGS="$($(tc-getPKG_CONFIG) --cflags CiftiLib)"
223 + export CIFTILIBS="$($(tc-getPKG_CONFIG) --libs-only-l CiftiLib)"
224 +
225 + if use cuda; then
226 + einfo "CUDA_INSTALLATION: ${CUDA_INSTALLATION}"
227 + einfo "CUDAVER: ${CUDAVER}"
228 + fi
229 +
230 + ./build || die
231 +}
232 +
233 +src_install() {
234 + sed -i "s:\${FSLDIR}/tcl:/usr/libexec/fsl:g" \
235 + $(grep -lI "\${FSLDIR}/tcl" bin/*) \
236 + $(grep -l "\${FSLDIR}/tcl" tcl/*) || die
237 + sed -i "s:\$FSLDIR/tcl:/usr/libexec/fsl:g" \
238 + $(grep -l "\$FSLDIR/tcl" tcl/*) || die
239 +
240 + dobin bin/*
241 +
242 + insinto /usr/share/${PN}
243 + doins -r data
244 + dodoc -r doc/. refdoc
245 +
246 + insinto /usr/libexec/fsl
247 + doins -r tcl/*
248 +
249 + insinto /etc/fslconf
250 + doins etc/fslconf/fsl.sh
251 +
252 + insinto /etc
253 + doins etc/fslversion
254 + doins -r etc/default_flobs.flobs etc/flirtsch etc/js etc/luts
255 +
256 + #the following is needed for FSL and depending programs to be able
257 + #to find its files, since FSL uses an uncommon installation path:
258 + #https://github.com/gentoo-science/sci/pull/612#r60289295
259 + dosym ../../../etc ${UPSTREAM_FSLDIR}/etc
260 + dosym ../doc/${PF} ${UPSTREAM_FSLDIR}/doc
261 + dosym ../../bin ${UPSTREAM_FSLDIR}/bin
262 +
263 + doenvd "$(prefixify_ro "${FILESDIR}"/99fsl)"
264 + mv "${ED}"/usr/bin/{,fsl_}cluster || die
265 +}
266 +
267 +pkg_postinst() {
268 + echo
269 + einfo "Please run the following commands if you"
270 + einfo "intend to use fsl from an existing shell:"
271 + einfo "env-update && source /etc/profile"
272 + echo
273 +}
274
275 diff --git a/sci-biology/fsl/metadata.xml b/sci-biology/fsl/metadata.xml
276 index d3788686e..9d12c769d 100644
277 --- a/sci-biology/fsl/metadata.xml
278 +++ b/sci-biology/fsl/metadata.xml
279 @@ -8,4 +8,7 @@
280 <longdescription>
281 FSL is a comprehensive library of analysis tools for FMRI, MRI and DTI brain imaging data.
282 </longdescription>
283 + <use>
284 + <flag name="cuda">Add support for CUDA</flag>
285 + </use>
286 </pkgmetadata>