plugin development commit

Hello

I’m upgrading the GenericIO plugin; it’s basically version 1.1 of the plugin I added in 2016/2017. Once everything is sorted out, I’d like 1.1 to be integrated into ParaView.

I used the github repo of paraview (master: GitHub - Kitware/ParaView: VTK-based Data Analysis and Visualization Application) to do my changes. Is that fine or should the changes be made to the superbuild? Also, how do I get the new plugin into ParaView? A merge request or something else …

Thanks

The superbuild will need changes to provide the newer GenericIO at least (BLOSC and sz are already there, so that should be pretty simple). There will need to be some tandem merging since I suspect either going first will cause the other to fail. We can set up the superbuild MR to build your paraview MR to test them together.

Which branch of the superbuild should I integrate it in? Is it master or something else?

Hi @zetwal

There is two things to do:

  1. Merge your changes into ParaView gitlab repository
  2. Update GenericIO in the ParaView superbuild

Lets focus on 1 for now.

First read this and follow the steps: https://gitlab.kitware.com/paraview/paraview/-/blob/master/Documentation/dev/git/develop.md

Then add your github repository as a new remote and checkout your branch.
Then push your branch to the gitlab remote
Then open a mr on gitlab.kitware.com/paraview/paraview and tag me on it.

Lets reconvene once we’ve reached that :slight_smile:

That sounds like a plan.

Version 1.1 of the plugin will require BLOSC and SZ. The genericIO reader just includes the source of BLOSC and SZ in its repo (using add_subdirectory in the CMakeLists.txt). However, Ben mentioned that this could cause issues and ParaView has these two. Are there examples where these two are used? I assume that I’ll be using find_package(SZ …), where should that point to?

Thanks

Just use find_package(SZ). It’s up to the builder (superbuild, vcpkg, etc.) to make the dependencies that should be used accessible.

I’m back to working on this. The code is at: https://gitlab.kitware.com/pascal/paraview/tree/dev

This is the part that I am unsure about: https://gitlab.kitware.com/pascal/paraview/-/blob/dev/Plugins/GenericIOReader/Readers/LANL/CMakeLists.txt

What should I do with the find_package and target_link_libraries ?

Do you have a more specific question? Things look OK right now. I think I’d recommend using find_package() over manual find_library() calls, but there’s no fundamental restriction. If this is intended for ParaView itself, I think vtk_module_find_package would be better.

My question is: what is the proper command to find the SZ, BLOSC, … that’s included in ParaView from CMakeLists? What I have currently does not find the correct BLOSC, … and hence does not compile! Is there an example that I can use?

ParaView doesn’t depend on blosc, sz, or zstd (directly), so find_package is correct here. For zlib, just use VTK::zlib and #include "vtk_zlib.h".

So I’ve push my changes to https://gitlab.kitware.com/pascal/paraview/-/tree/dev/Plugins/GenericIOReader but this does not compile anymore since it cannot find sz and blosc. How do I test that everything will be working?

The superbuild has those dependencies at least.

I’m having an issue with superbuild and qt

[ 91%] Performing configure step for 'qt5'
+ cd qtbase
+ /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/configure -top-level -opensource -confirm-license -release -prefix /home/pascal/projects/paraview-superbuild_build/install -I /home/pascal/projects/paraview-superbuild_build/install/include -L /home/pascal/projects/paraview-superbuild_build/install/lib -skip qtconnectivity -skip qtgamepad -skip qtlocation -skip qtsensors -skip qtserialport -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -nomake examples -nomake tests -no-dbus -no-icu -qt-libjpeg -qt-pcre -system-zlib -no-openssl -system-libpng -fontconfig -qt-xcb -xkbcommon
Preparing build tree...
Creating qmake...
In file included from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qendian.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:43:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h: In static member function ‘static constexpr QSpecialInteger<S> QSpecialInteger<S>::max()’:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:35: error: ‘numeric_limits’ is not a member of ‘std’
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                                   ^~~~~~~~~~~~~~
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:54: error: ‘::max’ has not been declared; did you mean ‘std::max’?
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                                                      ^~~
      |                                                      std::max
In file included from /usr/include/c++/11/algorithm:62,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qglobal.h:142,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qglobal.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qchar.h:43,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qchar.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:48,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qstring.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec_p.h:55,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:41:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: ‘std::max’ declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qendian.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:43:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:29: error: expected primary-expression before ‘(’ token
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                             ^
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:35: error: ‘numeric_limits’ is not a member of ‘std’
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                                   ^~~~~~~~~~~~~~
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:51: error: expected primary-expression before ‘>’ token
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                                                   ^
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:331:54: error: ‘::max’ has not been declared; did you mean ‘std::max’?
  331 |     { return QSpecialInteger(std::numeric_limits<T>::max()); }
      |                                                      ^~~
      |                                                      std::max
In file included from /usr/include/c++/11/algorithm:62,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qglobal.h:142,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qglobal.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qchar.h:43,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qchar.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:48,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qstring.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec_p.h:55,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:41:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: ‘std::max’ declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qendian.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:43:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h: In static member function ‘static constexpr QSpecialInteger<S> QSpecialInteger<S>::min()’:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:35: error: ‘numeric_limits’ is not a member of ‘std’
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                                   ^~~~~~~~~~~~~~
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:54: error: ‘::min’ has not been declared; did you mean ‘std::min’?
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                                                      ^~~
      |                                                      std::min
In file included from /usr/include/c++/11/algorithm:62,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qglobal.h:142,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qglobal.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qchar.h:43,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qchar.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:48,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qstring.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec_p.h:55,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:41:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note: ‘std::min’ declared here
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qendian.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:43:
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:29: error: expected primary-expression before ‘(’ token
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                             ^
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:35: error: ‘numeric_limits’ is not a member of ‘std’
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                                   ^~~~~~~~~~~~~~
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:51: error: expected primary-expression before ‘>’ token
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                                                   ^
/home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qendian.h:333:54: error: ‘::min’ has not been declared; did you mean ‘std::min’?
  333 |     { return QSpecialInteger(std::numeric_limits<T>::min()); }
      |                                                      ^~~
      |                                                      std::min
In file included from /usr/include/c++/11/algorithm:62,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/global/qglobal.h:142,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qglobal.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qchar.h:43,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qchar.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:48,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/include/QtCore/qstring.h:1,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec_p.h:55,
                 from /home/pascal/projects/paraview-superbuild_build/superbuild/qt5/src/qtbase/src/corelib/codecs/qutfcodec.cpp:41:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note: ‘std::min’ declared here
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
make[3]: *** [Makefile:382: qutfcodec.o] Error 1
CMake Error at /home/pascal/projects/paraview-superbuild_build/superbuild/sb-qt5-configure.cmake:47 (message):
  Failed with exit code 2


make[2]: *** [superbuild/CMakeFiles/qt5.dir/build.make:107: superbuild/qt5/stamp/qt5-configure] Error 1
make[1]: *** [CMakeFiles/Makefile2:2315: superbuild/CMakeFiles/qt5.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

This is my gcc version:

pascal@pn2035929:~/projects/paraview-superbuild_build$ gcc --version
gcc (Ubuntu 11.4.0-2ubuntu1~20.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

and this is from master:

pascal@pn2035929:~/projects/paraview-superbuild$ git branch
* master
pascal@pn2035929:~/projects/paraview-superbuild$ pwd
/home/pascal/projects/paraview-superbuild

What’s the fix for that?

Also, I talked to Cory at SC last week about this, and he recommended the superbuild as well. He showed me where BLOSC was but it seems that SZ is not available in paraview yet. This

Unless you want to package ParaView yourself, I’d suggest using your system qt.

It worked with the system qt

1 Like

I am now trying to use the superbuild. What is the correct way to include blosc?

blosc was build in superbuild and find adding find_package(blosc) results in

Could not find a package configuration file provided by "blosc" with any of
  the following names:

    bloscConfig.cmake
    blosc-config.cmake

as the latter do not exist in install/share

blosc seems to only have a .pc file. See ADIOS2’s Find module here: https://github.com/ornladios/ADIOS2/blob/master/cmake/FindBlosc2.cmake

Oh, this is relevant for Blosc2 (being added to the superbuild here).

GenericIO is relying on Blosc1, which it seems will be kept, which is good.

So, I now have find.cmake modules that works (for blosc: https://gitlab.kitware.com/pascal/paraview/-/blob/dev/Plugins/GenericIOReader/cmake/FindBlosc.cmake?ref_type=heads) and I’m testing using the superbuild. However, how do I automatically get the path to the install folder (paraview-superbuild_build/install) where the libraries are built?

Also, GenericIO uses SZ too. So, I made find.cmake module for SZ (using the one provided by Cmake failed to link against zstd though I pointed it to the superbuild’s version of zstd when I built SZ) but now I need ParaView to get and build the SZ compressor. How do I do that?