*/*: Clean PYTHON_COMPAT of obsolete impls
[gentoo.git] / sci-visualization / paraview / paraview-5.6.1.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=( python{2_7,3_6} )
7 inherit cmake-utils desktop gnome2-utils python-single-r1 qmake-utils toolchain-funcs
8
9 MAIN_PV=$(ver_cut 0-1)
10 MAJOR_PV=$(ver_cut 1-2)
11 MY_P="ParaView-v${PV}"
12
13 DESCRIPTION="Powerful scientific data visualization application"
14 HOMEPAGE="https://www.paraview.org"
15 SRC_URI="https://www.paraview.org/files/v${MAJOR_PV}/${MY_P}.tar.xz"
16
17 LICENSE="paraview GPL-2"
18 KEYWORDS="~amd64 ~x86"
19 SLOT="0"
20 IUSE="boost cg coprocessing development doc examples ffmpeg mpi mysql nvcontrol openmp offscreen plugins python +qt5 sqlite tcl test tk"
21
22 RESTRICT="mirror test"
23
24 # "vtksqlite, needed by vtkIOSQL" and "vtkIOSQL, needed by vtkIOMySQL"
25 REQUIRED_USE="python? ( mpi ${PYTHON_REQUIRED_USE} )
26         mysql? ( sqlite )
27         ?? ( offscreen qt5 )"
28
29 RDEPEND="
30         app-arch/lz4
31         dev-libs/expat
32         dev-libs/jsoncpp:=
33         dev-libs/libxml2:2
34         dev-libs/protobuf:=
35         dev-libs/pugixml
36         media-libs/freetype
37         media-libs/glew:0
38         media-libs/libpng:0
39         media-libs/libtheora
40         media-libs/tiff:0=
41         sci-libs/cgnslib
42         sci-libs/hdf5:=[mpi=]
43         >=sci-libs/netcdf-4.2[hdf5]
44         >=sci-libs/netcdf-cxx-4.2:3
45         sys-libs/zlib
46         virtual/glu
47         virtual/jpeg:0
48         x11-libs/libX11
49         x11-libs/libXext
50         x11-libs/libXmu
51         x11-libs/libXt
52         coprocessing? (
53                 plugins? (
54                         dev-python/PyQt5
55                         dev-qt/qtgui:5[-gles2]
56                 )
57         )
58         ffmpeg? ( virtual/ffmpeg )
59         mpi? ( virtual/mpi[cxx,romio] )
60         mysql? ( dev-db/mysql-connector-c )
61         offscreen? ( >=media-libs/mesa-18.3.6[osmesa] )
62         !offscreen? ( virtual/opengl )
63         python? (
64                 ${PYTHON_DEPS}
65                 dev-python/constantly[${PYTHON_USEDEP}]
66                 dev-python/incremental[${PYTHON_USEDEP}]
67                 dev-python/matplotlib[${PYTHON_USEDEP}]
68                 dev-python/numpy[${PYTHON_USEDEP}]
69                 dev-python/pygments[${PYTHON_USEDEP}]
70                 dev-python/sip[${PYTHON_USEDEP}]
71                 dev-python/six[${PYTHON_USEDEP}]
72                 || ( dev-python/twisted[${PYTHON_USEDEP}]
73                         dev-python/twisted-core[${PYTHON_USEDEP}]
74                 )
75                 dev-python/zope-interface[${PYTHON_USEDEP}]
76                 mpi? ( dev-python/mpi4py )
77                 qt5? ( dev-python/PyQt5[opengl,webkit,${PYTHON_USEDEP}] )
78         )
79         qt5? (
80                 dev-qt/designer:5
81                 dev-qt/qtgui:5[-gles2]
82                 dev-qt/qthelp:5
83                 dev-qt/qtopengl:5[-gles2]
84                 dev-qt/qtsql:5
85                 dev-qt/qttest:5
86                 dev-qt/qtwebengine:5[widgets]
87                 dev-qt/qtx11extras:5
88         )
89         sqlite? ( dev-db/sqlite:3 )
90         tcl? ( dev-lang/tcl:0= )
91         tk? ( dev-lang/tk:0= )"
92 DEPEND="${RDEPEND}
93         ${PYTHON_DEPS}
94         boost? ( dev-libs/boost[mpi?,${PYTHON_USEDEP}] )
95         doc? ( app-doc/doxygen )"
96
97 S="${WORKDIR}/${MY_P}"
98
99 PATCHES=(
100         "${FILESDIR}"/${PN}-4.0.1-xdmf-cstring.patch
101         "${FILESDIR}"/${PN}-5.3.0-fix_buildsystem.patch
102         "${FILESDIR}"/${PN}-5.5.0-allow_custom_build_type.patch
103         "${FILESDIR}"/${PN}-5.6.1-fix_openmp_4.0.patch
104 )
105
106 CMAKE_MAKEFILE_GENERATOR="emake" #579474
107
108 pkg_setup() {
109         [[ ${MERGE_TYPE} != "binary" ]] && use openmp && tc-check-openmp
110         python-single-r1_pkg_setup
111         PVLIBDIR=$(get_libdir)/${PN}-${MAJOR_PV}
112 }
113
114 src_prepare() {
115
116         # Bug #661812
117         mkdir -p Plugins/StreamLinesRepresentation/doc || die
118
119         cmake-utils_src_prepare
120
121         # lib64 fixes
122         sed -i \
123                 -e "s:/lib/python:/$(get_libdir)/python:g" \
124                 VTK/ThirdParty/xdmf3/vtkxdmf3/CMakeLists.txt || die
125         sed -i \
126                 -e "s:lib/paraview-:$(get_libdir)/paraview-:g" \
127                 ParaViewCore/ServerManager/SMApplication/vtkInitializationHelper.cxx || die
128 }
129
130 src_configure() {
131         if use qt5; then
132                 export QT_SELECT=qt5
133         fi
134
135         local mycmakeargs=(
136                 -DCMAKE_INSTALL_LIBDIR="${PVLIBDIR}"
137                 -DCMAKE_INSTALL_PREFIX="${EPREFIX}"/usr
138                 -DEXPAT_INCLUDE_DIR="${EPREFIX}"/usr/include
139                 -DEXPAT_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libexpat.so
140                 -DBUILD_SHARED_LIBS=ON
141                 -DCMAKE_VERBOSE_MAKEFILE=ON
142
143                 -DVTK_Group_StandAlone=ON
144                 -DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=TRUE
145
146                 -DVTK_USE_OGGTHEORA_ENCODER=TRUE
147                 -DVTK_USE_SYSTEM_CGNS=ON
148                 -DVTK_USE_SYSTEM_PUGIXML=ON
149                 -DVTK_USE_SYSTEM_EXPAT=ON
150                 -DVTK_USE_SYSTEM_FREETYPE=ON
151                 -DVTK_USE_SYSTEM_GL2PS=OFF # doesn't compile, requires modified sources
152                 -DVTK_USE_SYSTEM_GLEW=ON
153                 -DVTK_USE_SYSTEM_HDF5=ON
154                 -DVTK_USE_SYSTEM_JPEG=ON
155                 -DVTK_USE_SYSTEM_JSONCPP=ON
156                 -DVTK_USE_SYSTEM_LIBXML2=ON
157                 -DVTK_USE_SYSTEM_LZ4=ON
158                 -DVTK_USE_SYSTEM_NETCDF=ON
159                 -DVTK_USE_SYSTEM_PNG=ON
160                 -DVTK_USE_SYSTEM_PROTOBUF=ON
161                 -DVTK_USE_SYSTEM_TIFF=ON
162                 -DVTK_USE_SYSTEM_XDMF2=OFF # does not compile with sci-libs/xdmf2-1.0_p141226
163                 -DVTK_USE_SYSTEM_ZLIB=ON
164
165                 # boost
166                 -DModule_vtkInfovisBoost="$(usex boost)"
167
168                 # coprocessing
169                 -DPARAVIEW_ENABLE_CATALYST="$(usex coprocessing)"
170
171                 # doc
172                 -DBUILD_DOCUMENTATION="$(usex doc)"
173
174                 # examples
175                 -DBUILD_EXAMPLES="$(usex examples)"
176
177                 # ffmpeg
178                 -DPARAVIEW_ENABLE_FFMPEG="$(usex ffmpeg)"
179                 -DVTK_USE_FFMPEG_ENCODER="$(usex ffmpeg)"
180                 -DModule_vtkIOFFMPEG="$(usex ffmpeg)"
181
182                 # mpi
183                 -DPARAVIEW_USE_ICE_T="$(usex mpi)"
184                 -DPARAVIEW_USE_MPI_SSEND="$(usex mpi)"
185                 -DPARAVIEW_USE_MPI="$(usex mpi)"
186                 -DVTK_Group_MPI="$(usex mpi)"
187                 -DVTK_XDMF_USE_MPI="$(usex mpi)"
188                 -DXDMF_BUILD_MPI="$(usex mpi)"
189
190                 # mysql
191                 -DModule_vtkIOMySQL="$(usex mysql)"
192
193                 # offscreen
194                 -DVTK_USE_X=$(usex !offscreen)
195                 -DVTK_OPENGL_HAS_OSMESA=$(usex offscreen)
196                 -DVTK_OPENGL_HAS_OSMESA=$(usex offscreen)
197
198                 # plugins
199                 -DPARAVIEW_BUILD_PLUGIN_AdiosReader="$(usex plugins)"
200                 -DPARAVIEW_BUILD_PLUGIN_AnalyzeNIfTIIO="$(usex plugins)"
201                 -DPARAVIEW_BUILD_PLUGIN_ArrowGlyph="$(usex plugins)"
202                 -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting="$(usex plugins)"
203                 -DPARAVIEW_BUILD_PLUGIN_GMVReader="$(usex plugins)"
204                 -DPARAVIEW_BUILD_PLUGIN_Moments="$(usex plugins)"
205                 -DPARAVIEW_BUILD_PLUGIN_NonOrthogonalSource="$(usex plugins)"
206                 -DPARAVIEW_BUILD_PLUGIN_PacMan="$(usex plugins)"
207                 -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools="$(usex plugins)"
208                 -DPARAVIEW_BUILD_PLUGIN_SLACTools="$(usex plugins)"
209                 -DPARAVIEW_BUILD_PLUGIN_StreamingParticles="$(usex plugins)"
210                 -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC="$(usex plugins)"
211                 # these are always needed for plugins
212                 -DModule_vtkFiltersFlowPaths="$(usex plugins)"
213                 -DModule_vtkPVServerManagerApplication="$(usex plugins)"
214                 # force this module due to incorrect build system deps wrt bug 460528
215                 -DModule_vtkUtilitiesProcessXML=ON
216
217                 # python
218                 -DModule_pqPython="$(usex python)"
219                 -DModule_vtkmpi4py="$(usex python)"
220                 -DModule_vtkPython="$(usex python)"
221                 -DModule_vtkWrappingPythonCore="$(usex python)"
222                 -DPARAVIEW_ENABLE_PYTHON="$(usex python)"
223                 -DXDMF_WRAP_PYTHON="$(usex python)"
224
225                 # qt5
226                 -DPARAVIEW_INSTALL_DEVELOPMENT_FILES="$(usex development)"
227                 -DModule_vtkGUISupportQtSQL="$(usex qt5)"
228                 -DModule_vtkRenderingQt="$(usex qt5)"
229                 -DModule_vtkViewsQt="$(usex qt5)"
230                 -DPARAVIEW_BUILD_QT_GUI="$(usex qt5)"
231                 -DVTK_Group_ParaViewQt="$(usex qt5)"
232                 -DVTK_Group_Qt="$(usex qt5)"
233                 -DModule_pqPython="$(usex qt5 "$(usex python)" "off")"
234                 $(usex qt5 "-DPARAVIEW_QT_VERSION=5" "")
235                 -DVTK_USE_NVCONTROL="$(usex nvcontrol)"
236
237                 # sqlite
238                 -DModule_vtksqlite="$(usex sqlite)"
239
240                 # tcl
241                 -DModule_vtkTclTk="$(usex tcl)"
242
243                 # test
244                 -DBUILD_TESTING="$(usex test)"
245
246                 # tk
247                 -DVTK_Group_Tk="$(usex tk)"
248                 -DVTK_USE_TK="$(usex tk)"
249                 -DModule_vtkRenderingTk="$(usex tk)"
250         )
251
252         if use openmp; then
253                 mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP )
254         fi
255
256         if use python; then
257                 mycmakeargs+=(
258                         -DVTK_USE_SYSTEM_TWISTED=ON
259                         -DVTK_USE_SYSTEM_AUTOBAHN=ON
260                         -DVTK_USE_SYSTEM_ZOPE=ON
261                 )
262         fi
263
264         if use qt5; then
265                 mycmakeargs+=(
266                         -DVTK_USE_QVTK=ON
267                         -DOPENGL_gl_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGL.so
268                         -DOPENGL_glu_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGLU.so
269                         -DVTK_QT_VERSION=5
270                         -DQT_MOC_EXECUTABLE="$(qt5_get_bindir)/moc"
271                         -DQT_UIC_EXECUTABLE="$(qt5_get_bindir)/uic"
272                         -DQT_QMAKE_EXECUTABLE="$(qt5_get_bindir)/qmake"
273                         -DVTK_Group_Qt:BOOL=ON
274                 )
275         fi
276
277         cmake-utils_src_configure
278 }
279
280 src_install() {
281         cmake-utils_src_install
282
283                 # remove wrapper binaries and put the actual executable in place
284                 for i in {paraview-config,pvserver,pvdataserver,pvrenderserver,pvbatch,pvpython,paraview}; do
285                         if [ -f "${ED}"/usr/lib/"$i" ]; then
286                                 mv "${ED}"/usr/lib/"$i" "${ED}"/usr/bin/"$i" || die
287                         fi
288                 done
289
290                 # install libraries into correct directory respecting get_libdir:
291                 mv "${ED}"/usr/lib "${ED}"/usr/lib_tmp || die
292                 mkdir -p "${ED}"/usr/"${PVLIBDIR}" || die
293                 mv "${ED}"/usr/lib_tmp/* "${ED}"/usr/"${PVLIBDIR}" || die
294                 rmdir "${ED}"/usr/lib_tmp || die
295
296                 # set up the environment
297                 echo "LDPATH=${EPREFIX}/usr/${PVLIBDIR}" > "${T}"/40${PN} || die
298                 doenvd "${T}"/40${PN}
299
300                 newicon "${S}"/Applications/ParaView/pvIcon-32x32.png paraview.png
301                 make_desktop_entry paraview "Paraview" paraview
302
303                 use python && python_optimize "${D}"/usr/$(get_libdir)/${PN}-${MAJOR_PV}
304         }
305
306         pkg_postinst() {
307                 xdg_icon_cache_update
308         }
309
310         pkg_postrm() {
311                 xdg_icon_cache_update
312         }