1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
6 PYTHON_COMPAT=( python{2_7,3_6} )
7 inherit cmake-utils desktop gnome2-utils python-single-r1 qmake-utils toolchain-funcs
10 MAJOR_PV=$(ver_cut 1-2)
11 MY_P="ParaView-v${PV}"
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"
17 LICENSE="paraview GPL-2"
18 KEYWORDS="~amd64 ~x86"
20 IUSE="boost cg coprocessing development doc examples ffmpeg mpi mysql nvcontrol openmp offscreen plugins python +qt5 sqlite tcl test tk"
22 RESTRICT="mirror test"
24 # "vtksqlite, needed by vtkIOSQL" and "vtkIOSQL, needed by vtkIOMySQL"
25 REQUIRED_USE="python? ( mpi ${PYTHON_REQUIRED_USE} )
43 >=sci-libs/netcdf-4.2[hdf5]
44 >=sci-libs/netcdf-cxx-4.2:3
55 dev-qt/qtgui:5[-gles2]
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 )
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}]
75 dev-python/zope-interface[${PYTHON_USEDEP}]
76 mpi? ( dev-python/mpi4py )
77 qt5? ( dev-python/PyQt5[opengl,webkit,${PYTHON_USEDEP}] )
81 dev-qt/qtgui:5[-gles2]
83 dev-qt/qtopengl:5[-gles2]
86 dev-qt/qtwebengine:5[widgets]
89 sqlite? ( dev-db/sqlite:3 )
90 tcl? ( dev-lang/tcl:0= )
91 tk? ( dev-lang/tk:0= )"
94 boost? ( dev-libs/boost[mpi?,${PYTHON_USEDEP}] )
95 doc? ( app-doc/doxygen )"
97 S="${WORKDIR}/${MY_P}"
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
106 CMAKE_MAKEFILE_GENERATOR="emake" #579474
109 [[ ${MERGE_TYPE} != "binary" ]] && use openmp && tc-check-openmp
110 python-single-r1_pkg_setup
111 PVLIBDIR=$(get_libdir)/${PN}-${MAJOR_PV}
117 mkdir -p Plugins/StreamLinesRepresentation/doc || die
119 cmake-utils_src_prepare
123 -e "s:/lib/python:/$(get_libdir)/python:g" \
124 VTK/ThirdParty/xdmf3/vtkxdmf3/CMakeLists.txt || die
126 -e "s:lib/paraview-:$(get_libdir)/paraview-:g" \
127 ParaViewCore/ServerManager/SMApplication/vtkInitializationHelper.cxx || die
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
143 -DVTK_Group_StandAlone=ON
144 -DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=TRUE
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
166 -DModule_vtkInfovisBoost="$(usex boost)"
169 -DPARAVIEW_ENABLE_CATALYST="$(usex coprocessing)"
172 -DBUILD_DOCUMENTATION="$(usex doc)"
175 -DBUILD_EXAMPLES="$(usex examples)"
178 -DPARAVIEW_ENABLE_FFMPEG="$(usex ffmpeg)"
179 -DVTK_USE_FFMPEG_ENCODER="$(usex ffmpeg)"
180 -DModule_vtkIOFFMPEG="$(usex ffmpeg)"
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)"
191 -DModule_vtkIOMySQL="$(usex mysql)"
194 -DVTK_USE_X=$(usex !offscreen)
195 -DVTK_OPENGL_HAS_OSMESA=$(usex offscreen)
196 -DVTK_OPENGL_HAS_OSMESA=$(usex offscreen)
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
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)"
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)"
238 -DModule_vtksqlite="$(usex sqlite)"
241 -DModule_vtkTclTk="$(usex tcl)"
244 -DBUILD_TESTING="$(usex test)"
247 -DVTK_Group_Tk="$(usex tk)"
248 -DVTK_USE_TK="$(usex tk)"
249 -DModule_vtkRenderingTk="$(usex tk)"
253 mycmakeargs+=( -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP )
258 -DVTK_USE_SYSTEM_TWISTED=ON
259 -DVTK_USE_SYSTEM_AUTOBAHN=ON
260 -DVTK_USE_SYSTEM_ZOPE=ON
267 -DOPENGL_gl_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGL.so
268 -DOPENGL_glu_LIBRARY="${EPREFIX}"/usr/$(get_libdir)/libGLU.so
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
277 cmake-utils_src_configure
281 cmake-utils_src_install
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
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
296 # set up the environment
297 echo "LDPATH=${EPREFIX}/usr/${PVLIBDIR}" > "${T}"/40${PN} || die
298 doenvd "${T}"/40${PN}
300 newicon "${S}"/Applications/ParaView/pvIcon-32x32.png paraview.png
301 make_desktop_entry paraview "Paraview" paraview
303 use python && python_optimize "${D}"/usr/$(get_libdir)/${PN}-${MAJOR_PV}
307 xdg_icon_cache_update
311 xdg_icon_cache_update