Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • VTK VTK
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 830
    • Issues 830
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 234
    • Merge requests 234
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VTKVTK
  • VTKVTK
  • Issues
  • #17881
Closed
Open
Issue created May 06, 2020 by badshah400@badshah400

Linking error when building VTK 9.0 due to missing python libraries

When building VTK 9 or paraview 5.8.0 on openSUSE, compilation fails at the linking stage for Python bindings because it doesn't explicitly link against libpython3.X.so or libpython3.Xm.so (for python < 3.8.0). We have to fix this by patching sources at various places, thus:

Index: VTK-9.0.0/Web/Core/CMakeLists.txt
===================================================================
--- VTK-9.0.0.orig/Web/Core/CMakeLists.txt
+++ VTK-9.0.0/Web/Core/CMakeLists.txt
@@ -1,3 +1,10 @@
+if ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR})
+else ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}m)
+endif ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+
+
 set(classes
   vtkDataEncoder
   vtkObjectIdMap
Index: VTK-9.0.0/Wrapping/PythonCore/CMakeLists.txt
===================================================================
--- VTK-9.0.0.orig/Wrapping/PythonCore/CMakeLists.txt
+++ VTK-9.0.0/Wrapping/PythonCore/CMakeLists.txt
@@ -1,3 +1,9 @@
+if ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR})
+else ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}m)
+endif ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+
 set(classes
   vtkPythonArgs
   vtkPythonCommand
Index: VTK-9.0.0/Utilities/PythonInterpreter/CMakeLists.txt
===================================================================
--- VTK-9.0.0.orig/Utilities/PythonInterpreter/CMakeLists.txt
+++ VTK-9.0.0/Utilities/PythonInterpreter/CMakeLists.txt
@@ -1,3 +1,9 @@
+if ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR})
+else ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}m)
+endif ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+
 set(classes
   vtkPythonInteractiveInterpreter
   vtkPythonInterpreter)
Index: VTK-9.0.0/CMake/vtkModuleWrapPython.cmake
===================================================================
--- VTK-9.0.0.orig/CMake/vtkModuleWrapPython.cmake
+++ VTK-9.0.0/CMake/vtkModuleWrapPython.cmake
@@ -88,6 +88,8 @@ function (vtk_module_python_default_dest
   endif ()
 
   set("${var}" "${destination}" PARENT_SCOPE)
+  set(VTK_PYTHON_VERSION_MAJOR "${Python${_vtk_module_python_MAJOR_VERSION}_VERSION_MAJOR}" PARENT_SCOPE)
+  set(VTK_PYTHON_VERSION_MINOR "${Python${_vtk_module_python_MAJOR_VERSION}_VERSION_MINOR}" PARENT_SCOPE)
 endfunction ()
 
 #[==[
Index: VTK-9.0.0/Parallel/MPI4Py/CMakeLists.txt
===================================================================
--- VTK-9.0.0.orig/Parallel/MPI4Py/CMakeLists.txt
+++ VTK-9.0.0/Parallel/MPI4Py/CMakeLists.txt
@@ -1,3 +1,9 @@
+if ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR})
+else ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+  link_libraries(python${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}m)
+endif ("${VTK_PYTHON_VERSION_MAJOR}.${VTK_PYTHON_VERSION_MINOR}" VERSION_GREATER "3.7")
+
 set(classes
   vtkMPI4PyCommunicator)
 

Is there a better solution to this, or perhaps this patch can be merged?

The full spec file I use to build is here: https://build.opensuse.org/package/view_file/home:badshah400:branches:science/vtk/vtk.spec

Thanks.

Assignee
Assign to
Time tracking