Beginner problem starting plugin writing, some help most appreciated

First question is about different types of plugins. “Plugin Howto” gives an impression that there are two options: either a python plugin without compilation or C++ or other language with compilation. If this is correct, can one reach same performance with huge data sets with lots of math operations to generate new parameters for studying with PV or is a compilation the only sensible way? My intention is to read the data from files into RAM with own code which creates necessary associations between arrays and reserve more arrays for the parameters to be calculated. Also, can any of the possible plugin types be handed over to colleagues without touching their Paraview installation? Does this have to do with static and shared library linking?

Second question is about failed installation of Paraview for building according to document “Building ParaView” in Windows 10. All prerequisites were found and loaded, others but Intel TBB installed. There was no instruction how to install it, it seems to be more like a library. Where should it be located?
Then command “cmake -GNinja -DPARAVIEW_…” gave lots of failure messages and some errors which I couldn’t solve, extracts from terminal below. Cmake also gave lots of failure messages but the file is very long and I can’t figure out how to add it as an attachment here.

Timo

...
CMake Warning at VTK/CMake/vtkSupportMacros.cmake:25 (message):
  The 'PARAVIEW_ENABLE_PYTHON' variable is deprecated for
  'PARAVIEW_USE_PYTHON'.
Call Stack (most recent call first):
  CMake/ParaViewOptions.cmake:91 (vtk_deprecated_setting)
  CMakeLists.txt:98 (include)
...

-- Performing Test Support for 64 bit file systems - Failed
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Failed
-- Checking whether long and __int64 are the same type - no
-- Checking whether C compiler has ssize_t in unistd.h - no
-- Checking whether C compiler has clock_gettime - no
-- Checking whether CXX compiler has setenv - no
-- Checking whether CXX compiler has unsetenv - no
-- Checking whether CXX compiler has utimes - no
-- Checking whether CXX compiler has utimensat - no
-- Checking whether CXX compiler struct stat has st_mtim member - no
-- Checking whether CXX compiler struct stat has st_mtimespec member - no
-- Looking for include files sys/types.h, ifaddrs.h - not found
-- Checking whether CXX compiler has rlimit64 - no
-- Checking whether <ext/stdio_filebuf.h> is available - no
-- Looking for pthread.h - not found
-- Looking for finite - not found
-- Looking for feenableexcept - not found
-- Looking for getsockname in socket - not found
-- Looking for SO_REUSEADDR - not found
-- Check size of off64_t - failed
-- Looking for unistd.h - not found
-- Performing Test HAVE_LD_VERSION_SCRIPT - Failed
-- Looking for dlfcn.h - not found
-- Looking for unistd.h - not found
-- Performing Test TIME_WITH_SYS_TIME - Failed
-- Looking for mmap - not found
-- Looking for strcasecmp - not found
-- Performing Test EIGEN_COMPILER_SUPPORT_CPP11 - Failed
-- Looking for strings.h - not found
-- Looking for byteswap.h - not found
-- Looking for sys/endian.h - not found
-- Could NOT find MPI_C (missing: MPI_C_LIB_NAMES MPI_C_HEADER_DIR MPI_C_WORKS)
-- Could NOT find MPI (missing: MPI_C_FOUND C)
CMake Error at VTK/CMake/vtkModule.cmake:4111 (message):
  Could not find the MPI external dependency.
Call Stack (most recent call first):
  VTK/CMake/vtkModule.cmake:4634 (vtk_module_find_package)
  VTK/Utilities/MPI/CMakeLists.txt:1 (vtk_module_third_party_external)
...

-- Configuring incomplete, errors occurred!
See also "C:/pv/pvb/CMakeFiles/CMakeOutput.log".
See also "C:/pv/pvb/CMakeFiles/CMakeError.log".

First question is about different types of plugins. “Plugin Howto” gives an impression that there are two options: either a python plugin without compilation or C++ or other language with compilation.

Correct, but there is no other languages, only C++ with compilation.

If this is correct, can one reach same performance with huge data sets with lots of math operations to generate new parameters for studying with PV or is a compilation the only sensible way?

No, C++ will always be more efficient

Also, can any of the possible plugin types be handed over to colleagues without touching their Paraview installation?

Python plugins can be handed over to colleagues as is.
C++ plugins either requires your colleagues to build ParaView or you need to build your plugin for a specific binary release of ParaView using https://gitlab.kitware.com/paraview/paraview-plugin-builder

Does this have to do with static and shared library linking?

Not at all

For the second question, I will have to check the document first and get back to you.

Many thanks Mathieu. Does this specific tool paraview-plugin-bulder concern also Windows environment? Readme discusses only about Centos.

Indeed, it is a linux specific tool.

Building a plugin for the windows release can be done directly from windows, but still requires deep knowledge of the build process at they are not automated tools to do it yet.

It can be done though and we can do it for you at Kitware.

Ok, I think I can manage if the compilation is done with Visual Studio or other sensible tool. However there are lots of parameters to be set and they tend to be VS version and code version dependent, like seen with Salome for which there are good presets to set the environment. How is Windows version compiled, with VS or other tools and are there suitable presets anywhere available?

The build is done using the https://gitlab.kitware.com/paraview/paraview-superbuild and the options visible here : https://open.cdash.org/buildSummary.php?buildid=6338603

But, for the time being, I would suggest you to concentrate on being able to build ParaView and your plugin first.

Looks like a command line compilation without VS help for debugging, right? Yes, you are correct, I have to get a “Hello World” plugin working, then I can take old code and make the real version. It means replacing many methods with Paraview’s own and rethinking the data arrays using VTK’s types if I guess correctly. Thanks for this question, the second one is to be solved since I can’t understand what goes wrong. You might get better view from Cmake’s error log but how to add it here as a attachment?

So about your issues with the build.

  • Ninja should indeed be dropped in C:/Windows/, I will add it to the guide.
  • MPI requires both packages to be downloaded and installed (msmpisetup.exe and
    msmpisdk.msi) from there : https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
  • Once you have installed both, you may want to reboot your computer and even remove all files from your build directory if it still fails to find it.
  • TBB is indeed just a library. I suggest you to use OpenMP instead. I will update the guide accordingly.

https://gitlab.kitware.com/paraview/paraview/merge_requests/3918