New module system landing soon


(Ben Boeckel) #1

Hi all,

VTK’s side of the new module system is landing in the next week or so. ParaView will follow shortly after.

The VTK announcement is here: https://public.kitware.com/pipermail/vtk-developers/2019-January/036648.html
Its merge request is here: https://gitlab.kitware.com/vtk/vtk/merge_requests/5020
The ParaView MR will be up once VTK merges, but the branch as-is can be seen here (updated sporadically): https://gitlab.kitware.com/ben.boeckel/paraview/tree/new-cmake-module

CMake changes:

  • PARAVIEW_BUILD_PLUGIN_XXXPARAVIEW_PLUGIN_ENABLE_XXX
  • CMake APIs for plugins, clients, and server manager XML files have been updated and made much more uniform. As with VTK, there is inline documentation with the code which will eventually be extracted and added to ParaView’s Doxygen documentation.
  • ClientServer wrapping uses the same patterns as Python and Java now (plugins still get it “for free”).
  • ServerManager XML files can now be attached to other modules (though this is not done right now). For example, ParaView can add a proxy to the VTK::IONetCDF module and it will be used properly. This is in contrast to the way it is done currently where the XML file is associated with ParaView::ServerManagerApplication and it just hopes that VTK::IONetCDF is available in some way for the ClientServer wrappings.
  • ServerManager, ClientServer, and plugins are built in such a way to provide targets for proper initialization (e.g., ParaView makes a paraview_server_manager target for all of its XML outputs). See the documentation for usage details.

The details for VTK are largely the same as for ParaView except:

  • Only a handful of plugins have been updated at the moment; the rest will be updated after the initial merge.
  • Examples are not updated yet.
  • The catalyze.py and the edition manifests are not yet updated.
  • VisItBridge needs updated for the new system (will likely be done in concert with https://gitlab.kitware.com/paraview/paraview/issues/18681).

Some other tasks that need to be done once it lands:

  • The ParaViewCore/Testing directory needs integrated. As far as I can tell, it isn’t used on master either.
  • The XML tests should be sorted a bit better.
  • ServerManager XML files should be split to be associated with the modules providing the classes behind the proxies (the new CMake API for this makes it much easier).
  • ParaView also has lots of unused .sha512 data files laying around. Whether to remove them from the repo or add tests to use them should be determined.
  • Some modules still have optional public dependencies. These should be resolved.

(Ben Boeckel) #2

The merge request is here: https://gitlab.kitware.com/paraview/paraview/merge_requests/2971

A superbuild followup MR will happen once this has landed.