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> |