sys-apps/gawk: stable 5.0.1 for ppc, bug #725374
[gentoo.git] / sci-libs / vtk / vtk-8.2.0.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 PYTHON_COMPAT=( python3_{6,7} )
7 WEBAPP_OPTIONAL=yes
8 WEBAPP_MANUAL_SLOT=yes
9
10 inherit flag-o-matic java-pkg-opt-2 python-single-r1 qmake-utils toolchain-funcs cmake-utils virtualx webapp
11
12 # Short package version
13 SPV="$(ver_cut 1-2)"
14
15 DESCRIPTION="The Visualization Toolkit"
16 HOMEPAGE="https://www.vtk.org/"
17 SRC_URI="
18         https://www.vtk.org/files/release/${SPV}/VTK-${PV}.tar.gz
19         doc? ( https://www.vtk.org/files/release/${SPV}/vtkDocHtml-${PV}.tar.gz )
20         examples? (
21                 https://www.vtk.org/files/release/${SPV}/VTKData-${PV}.tar.gz
22                 https://www.vtk.org/files/release/${SPV}/VTKLargeData-${PV}.tar.gz
23         )"
24
25 LICENSE="BSD LGPL-2"
26 KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
27 SLOT="0"
28 IUSE="
29         all-modules aqua boost doc examples imaging ffmpeg gdal java json mpi
30         odbc offscreen postgres python qt5 rendering tbb theora tk tcl
31         video_cards_nvidia views web R +X xdmf2"
32
33 REQUIRED_USE="
34         all-modules? ( python xdmf2 boost )
35         java? ( qt5 )
36         python? ( ${PYTHON_REQUIRED_USE} )
37         tcl? ( rendering )
38         examples? ( python )
39         tk? ( tcl )
40         web? ( python )
41         ^^ ( X aqua offscreen )"
42
43 RDEPEND="
44         app-arch/lz4
45         dev-libs/expat
46         dev-libs/jsoncpp:=
47         dev-libs/libxml2:2
48         >=media-libs/freetype-2.5.4
49         >=media-libs/libharu-2.3.0-r2
50         media-libs/libpng:0=
51         media-libs/libtheora
52         media-libs/mesa
53         media-libs/tiff:0
54         sci-libs/exodusii
55         sci-libs/hdf5:=
56         sci-libs/netcdf:0=
57         sci-libs/netcdf-cxx:3
58         sys-libs/zlib
59         virtual/jpeg:0
60         virtual/opengl
61         x11-libs/libX11
62         x11-libs/libXmu
63         x11-libs/libXt
64         boost? ( dev-libs/boost:=[mpi?] )
65         examples? (
66                 dev-qt/qtcore:5
67                 dev-qt/qtgui:5
68         )
69         ffmpeg? ( media-video/ffmpeg )
70         gdal? ( sci-libs/gdal )
71         java? ( >=virtual/jdk-1.7:* )
72         odbc? ( dev-db/unixODBC )
73         offscreen? ( media-libs/mesa[osmesa] )
74         postgres? ( dev-db/postgresql:= )
75         R? ( dev-lang/R )
76         tbb? ( dev-cpp/tbb )
77         tcl? ( dev-lang/tcl:0= )
78         tk? ( dev-lang/tk:0= )
79         video_cards_nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] )
80         web? (
81                 ${WEBAPP_DEPEND}
82                 $(python_gen_cond_dep '
83                         dev-python/autobahn[${PYTHON_MULTI_USEDEP}]
84                         dev-python/constantly[${PYTHON_MULTI_USEDEP}]
85                         dev-python/hyperlink[${PYTHON_MULTI_USEDEP}]
86                         dev-python/incremental[${PYTHON_MULTI_USEDEP}]
87                         dev-python/six[${PYTHON_MULTI_USEDEP}]
88                         dev-python/twisted[${PYTHON_MULTI_USEDEP}]
89                         dev-python/txaio[${PYTHON_MULTI_USEDEP}]
90                         dev-python/zope-interface[${PYTHON_MULTI_USEDEP}]
91                 ')
92         )
93         xdmf2? ( sci-libs/xdmf2 )
94         $(python_gen_cond_dep "
95                 mpi? (
96                         virtual/mpi[cxx,romio]
97                         python? ( dev-python/mpi4py[\${PYTHON_MULTI_USEDEP}] )
98                 )
99                 python? (
100                         ${PYTHON_DEPS}
101                         dev-python/sip[\${PYTHON_MULTI_USEDEP}]
102                 )
103                 qt5? (
104                         dev-qt/designer:5
105                         dev-qt/qtcore:5
106                         dev-qt/qtgui:5
107                         dev-qt/qtopengl:5
108                         dev-qt/qtsql:5
109                         dev-qt/qtx11extras:5
110                         python? ( dev-python/PyQt5[\${PYTHON_MULTI_USEDEP}] )
111                 )
112         ")"
113 DEPEND="${RDEPEND}
114         doc? ( app-doc/doxygen )"
115
116 S="${WORKDIR}"/VTK-${PV}
117
118 PATCHES=(
119         "${FILESDIR}"/vtk-8.1.0-openmpi-4-compatibility.patch
120 )
121
122 RESTRICT="test"
123
124 pkg_setup() {
125         use java && java-pkg-opt-2_pkg_setup
126         use python && python-single-r1_pkg_setup
127         use web && webapp_pkg_setup
128 }
129
130 src_prepare() {
131         default
132
133         local x
134         # missing: VPIC freerange libproj4 mrmpi sqlite utf8 verdict xmdf2 xmdf3
135         for x in expat freetype hdf5 jpeg jsoncpp libharu libxml2 lz4 netcdf png tiff zlib; do
136                 ebegin "Dropping bundled ${x}"
137                 rm -r ThirdParty/${x}/vtk${x} || die
138                 eend $?
139         done
140
141         if use doc; then
142                 einfo "Removing .md5 files from documents."
143                 rm -f "${WORKDIR}"/html/*.md5 || die "Failed to remove superfluous hashes"
144                 sed -e "s|\${VTK_BINARY_DIR}/Utilities/Doxygen/doc|${WORKDIR}|" \
145                         -i Utilities/Doxygen/CMakeLists.txt || die
146         fi
147
148         cmake-utils_src_prepare
149 }
150
151 src_configure() {
152         # general configuration
153         local mycmakeargs=(
154                 -Wno-dev
155                 -DVTK_DIR="${S}"
156                 -DVTK_INSTALL_LIBRARY_DIR=$(get_libdir)
157                 -DVTK_INSTALL_PACKAGE_DIR="$(get_libdir)/cmake/${PN}-${SPV}"
158                 -DVTK_INSTALL_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}"
159                 -DVTK_DATA_ROOT="${EPREFIX}/usr/share/${PN}/data"
160                 -DVTK_CUSTOM_LIBRARY_SUFFIX=""
161                 -DBUILD_SHARED_LIBS=ON
162                 -DVTK_USE_SYSTEM_AUTOBAHN=ON
163                 -DVTK_USE_SYSTEM_EXPAT=ON
164                 -DVTK_USE_SYSTEM_FREETYPE=ON
165                 -DVTK_USE_SYSTEM_FreeType=ON
166                 # Use bundled gl2ps (bundled version is a patched version of 1.3.9. Post 1.3.9 versions should be compatible)
167                 -DVTK_USE_SYSTEM_GL2PS=OFF
168                 -DVTK_USE_SYSTEM_HDF5=ON
169                 -DVTK_USE_SYSTEM_JPEG=ON
170                 -DVTK_USE_SYSTEM_LIBPROJ=OFF
171                 -DVTK_USE_SYSTEM_LIBXML2=ON
172                 -DVTK_USE_SYSTEM_LibXml2=ON
173                 -DVTK_USE_SYSTEM_NETCDF=ON
174                 -DVTK_USE_SYSTEM_OGGTHEORA=ON
175                 -DVTK_USE_SYSTEM_PNG=ON
176                 -DVTK_USE_SYSTEM_TIFF=ON
177                 -DVTK_USE_SYSTEM_TWISTED=ON
178                 -DVTK_USE_SYSTEM_XDMF2=OFF
179                 -DVTK_USE_SYSTEM_XDMF3=OFF
180                 -DVTK_USE_SYSTEM_ZLIB=ON
181                 -DVTK_USE_SYSTEM_ZOPE=ON
182                 -DVTK_USE_SYSTEM_LIBRARIES=ON
183                 # Use bundled diy2 (no gentoo package / upstream does not provide a Finddiy2.cmake or diy2Config.cmake / diy2-config.cmake)
184                 -DVTK_USE_SYSTEM_DIY2=OFF
185                 -DVTK_USE_GL2PS=ON
186                 -DVTK_USE_LARGE_DATA=ON
187                 -DVTK_USE_PARALLEL=ON
188                 -DVTK_EXTRA_COMPILER_WARNINGS=ON
189                 -DVTK_Group_StandAlone=ON
190                 -DBUILD_DOCUMENTATION=$(usex doc)
191                 -DBUILD_EXAMPLES=$(usex examples)
192                 -DBUILD_VTK_BUILD_ALL_MODULES_FOR_TESTS=off
193                 -DVTK_BUILD_ALL_MODULES=$(usex all-modules)
194                 -DUSE_DOCUMENTATION_HTML_HELP=$(usex doc)
195                 -DVTK_Group_Imaging=$(usex imaging)
196                 -DVTK_Group_MPI=$(usex mpi)
197                 -DVTK_Group_Rendering=$(usex rendering)
198                 -DVTK_Group_Tk=$(usex tk)
199                 -DVTK_Group_Views=$(usex views)
200                 -DVTK_Group_Web=$(usex web)
201                 -DVTK_SMP_IMPLEMENTATION_TYPE="$(usex tbb TBB Sequential)"
202                 -DVTK_WWW_DIR="${ED}/${MY_HTDOCSDIR}"
203                 -DVTK_WRAP_JAVA=$(usex java)
204                 -DVTK_WRAP_PYTHON=$(usex python)
205                 -DVTK_WRAP_PYTHON_SIP=$(usex python)
206                 -DVTK_WRAP_TCL=$(usex tcl)
207                 -DVTK_USE_BOOST=$(usex boost)
208                 -DUSE_VTK_USE_BOOST=$(usex boost)
209                 -DModule_vtkInfovisBoost=$(usex boost)
210                 -DModule_vtkInfovisBoostGraphAlgorithms=$(usex boost)
211                 -DVTK_USE_ODBC=$(usex odbc)
212                 -DModule_vtkIOODBC=$(usex odbc)
213                 -DVTK_USE_OFFSCREEN=$(usex offscreen)
214                 -DVTK_OPENGL_HAS_OSMESA=$(usex offscreen)
215                 -DVTK_USE_OGGTHEORA_ENCODER=$(usex theora)
216                 -DVTK_USE_NVCONTROL=$(usex video_cards_nvidia)
217                 -DModule_vtkFiltersStatisticsGnuR=$(usex R)
218                 -DVTK_USE_X=$(usex X)
219         # IO
220                 -DVTK_USE_FFMPEG_ENCODER=$(usex ffmpeg)
221                 -DModule_vtkIOGDAL=$(usex gdal)
222                 -DModule_vtkIOGeoJSON=$(usex json)
223                 -DModule_vtkIOXdmf2=$(usex xdmf2)
224                 -DBUILD_TESTING=$(usex examples)
225         # Apple stuff, does it really work?
226                 -DVTK_USE_COCOA=$(usex aqua)
227         )
228
229         if use java; then
230                 local javacargs=$(java-pkg_javac-args)
231                 mycmakeargs+=( -DJAVAC_OPTIONS=${javacargs// /;} )
232         fi
233
234         if use mpi; then
235                 mycmakeargs+=( -DVTK_USE_SYSTEM_MPI4PY=ON )
236         fi
237
238         if use python; then
239                 mycmakeargs+=(
240                         -DVTK_INSTALL_PYTHON_MODULE_DIR="$(python_get_sitedir)"
241                         -DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
242                         -DPYTHON_LIBRARY="$(python_get_library_path)"
243                         -DSIP_PYQT_DIR="${EPREFIX}/usr/share/sip"
244                         -DSIP_INCLUDE_DIR="$(python_get_includedir)"
245                         -DVTK_PYTHON_INCLUDE_DIR="$(python_get_includedir)"
246                         -DVTK_PYTHON_LIBRARY="$(python_get_library_path)"
247                         -DVTK_PYTHON_SETUP_ARGS:STRING="--prefix=${EPREFIX} --root=${D}"
248                         -DVTK_USE_SYSTEM_SIX=ON
249                 )
250         fi
251
252         if use qt5; then
253                 mycmakeargs+=(
254                         -DVTK_USE_QVTK=ON
255                         -DVTK_USE_QVTK_OPENGL=ON
256                         -DVTK_USE_QVTK_QTOPENGL=ON
257                         -DQT_WRAP_CPP=ON
258                         -DQT_WRAP_UI=ON
259                         -DVTK_INSTALL_QT_DIR="$(basename $(qt5_get_libdir))/qt5/plugins/designer"
260                         -DDESIRED_QT_VERSION=5
261                         -DVTK_QT_VERSION=5
262                         -DQT_MOC_EXECUTABLE="$(qt5_get_bindir)/moc"
263                         -DQT_UIC_EXECUTABLE="$(qt5_get_bindir)/uic"
264                         -DQT_INCLUDE_DIR="${EPREFIX}/usr/include/qt5"
265                         -DQT_QMAKE_EXECUTABLE="$(qt5_get_bindir)/qmake"
266                         -DVTK_Group_Qt:BOOL=ON
267                         -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebKitWidgets=ON
268                 )
269         fi
270
271         if use R; then
272                 mycmakeargs+=(
273                         -DR_LIBRARY_BLAS=/usr/$(get_libdir)/R/lib/libR.so
274                         -DR_LIBRARY_LAPACK=/usr/$(get_libdir)/R/lib/libR.so
275                 )
276         fi
277
278         append-cppflags -D__STDC_CONSTANT_MACROS -D_UNICODE
279
280         use java && export JAVA_HOME="${EPREFIX}/etc/java-config-2/current-system-vm"
281
282         if use mpi; then
283                 export CC=mpicc
284                 export CXX=mpicxx
285                 export FC=mpif90
286                 export F90=mpif90
287                 export F77=mpif77
288         fi
289
290         cmake-utils_src_configure
291 }
292
293 src_install() {
294         use web && webapp_src_preinst
295
296         cmake-utils_src_install
297
298         use java && java-pkg_regjar "${ED}"/usr/$(get_libdir)/${PN}.jar
299
300         # Stop web page images from being compressed
301         use doc && docompress -x /usr/share/doc/${PF}/doxygen
302
303         if use tcl; then
304                 # install Tcl docs
305                 docinto vtk_tcl
306                 docinto .
307         fi
308
309         # install examples
310         if use examples; then
311                 einfo "Installing examples"
312                 mv -v {E,e}xamples || die
313                 dodoc -r examples
314                 docompress -x /usr/share/doc/${PF}/examples
315         fi
316
317         # environment
318         cat >> "${T}"/40${PN} <<- EOF || die
319                 VTK_DATA_ROOT=${EPREFIX}/usr/share/${PN}/data
320                 VTK_DIR=${EPREFIX}/usr/$(get_libdir)/${PN}-${SPV}
321                 VTKHOME=${EPREFIX}/usr
322                 EOF
323         doenvd "${T}"/40${PN}
324
325         use web && webapp_src_install
326 }
327
328 # webapp.eclass exports these but we want it optional #534036
329 pkg_postinst() {
330         use web && webapp_pkg_postinst
331 }
332
333 pkg_prerm() {
334         use web && webapp_pkg_prerm
335 }