Skip to content

Build ParaView plugins that are compatible with the ParaView binary distribution

License

Notifications You must be signed in to change notification settings

lhofmann/paraview-superbuild-docker

Repository files navigation

⛔️ Deprecated

As of ParaView v5.10.0, this project is deprecated in favor of the Kitware-supported docker images kitware/paraview_org-plugin-devel.

ParaView Superbuild Docker Image

License: MIT CI

Building ParaView plugins, that are compatible with the ParaView binary distribution, currently requires to reproduce the ParaView superbuild. This docker image contains ParaView superbuild binaries as well as their development headers, which allows external plugins to be built. Any plugin built in this environment can be distributed and used within the ParaView binary distribution.

Three variants for each version are provided: Qt5 GUI (no suffix), off-screen software rendering (OSMesa, suffix -osmesa) and hardware off-screen rendering (EGL, suffix -egl). The EGL variant requires libglvnd.

ParaView Release Docker Image
ParaView-5.10.0-MPI-Linux-Python3.9-x86_64 lhofmann/paraview-superbuild:5.10.0
ParaView-5.10.0-osmesa-MPI-Linux-Python3.9-x86_64 lhofmann/paraview-superbuild:5.10.0-osmesa
ParaView-5.10.0-egl-MPI-Linux-Python3.9-x86_64 lhofmann/paraview-superbuild:5.10.0-egl
ParaView-5.9.1-MPI-Linux-Python3.8-64bit lhofmann/paraview-superbuild:5.9.1
ParaView-5.9.1-osmesa-MPI-Linux-Python3.8-64bit lhofmann/paraview-superbuild:5.9.1-osmesa
ParaView-5.9.1-egl-MPI-Linux-Python3.8-64bit lhofmann/paraview-superbuild:5.9.1-egl
ParaView-5.8.0-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.8.0
ParaView-5.8.0-osmesa-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.8.0-osmesa
ParaView-5.8.0-egl-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.8.0-egl
ParaView-5.7.0-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0
ParaView-5.7.0-osmesa-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0-osmesa
ParaView-5.7.0-egl-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0-egl
ParaView-5.6.2-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.2
ParaView-5.6.2-osmesa-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.2-osmesa
ParaView-5.6.2-egl-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.2-egl

This docker images are partially based on the Dockerfiles found on the ParaView mailing list and in the ParaView superbuild repository. The CMake configuration is taken from the ParaView CDash, and ParaView superbuild Gitlab CI.

Usage

docker running in a Linux (or compatible) environment is required. All instructions assume, that your user is a member of the docker group.

Prebuilt docker images can be found on Docker Hub. If you want to build your own docker images, see the instructions below (building takes about three hours on a desktop machine).

Full working examples can be found in examples/, which are run by Github Actions.

The images have preset PATH, Qt5_DIR and CMAKE_PREFIX_PATH environment variables. In order to select gcc from the SCL, commands that run CMake need to be executed using scl enable devtoolset-8 (version 5.7.0 uses devltoolset-6 and version 5.6.0 uses devtoolset-4; you may also install your own toolset, see below).

Start a detached container with name build and directory ./shared/ mounted to /mnt/shared:

docker run -itd                              \
  --name build                               \
  --user "$(id -u ${USER}):$(id -g ${USER})" \
  --volume="$(pwd)/shared:/mnt/shared:ro"    \
  lhofmann/paraview-superbuild:5.10.0

Run CMake and build in /tmp/build:

docker exec build /usr/bin/scl enable devtoolset-8 -- cmake -B/tmp/build -H/mnt/shared/example
docker exec build cmake --build /tmp/build

The build artifacts are now in /tmp/build within the docker container. You may copy the required files to the host:

docker cp build:/tmp/build/libExamplePlugin.so .

Extending the docker images

The docker images run as non-root user paraview. If you need additional dependencies for your builds, create a derived docker image:

ARG paraview_version="5.10.0"
FROM lhofmann/paraview-superbuild:${paraview_version}
USER root

# install additional dependencies
# e.g.:
# RUN yum install -y ...

USER paraview

Building the docker images

This is a multi-stage Dockerfile with four stages: base, builder, default and package.

  • base contains the dependencies required for building the ParaView superbuild, including recent versions of cmake and the Qt5 binary distribution.
  • builder contains the fully built ParaView superbuild in /home/paraview/build, including all build artifacts.
  • default contains the base image and the directory /home/paraview/build/install, which contains the ParaView superbuild binaries.
  • package contains the default image and package-ready ParaView binaries in /home/paraview/package. These binaries can be distributed and approximately resemble those found in the ParaView binary distribution.

The docker images lhofmann/paraview-superbuild contain the default stage. To replicate these images, run

git clone https://github.com/lhofmann/paraview-superbuild-docker.git
./paraview-superbuild-docker/build.sh [osmesa|egl]

The script will create docker images with tag $USER/paraview-superbuild:5.10.0 for the default stage and $USER/paraview-superbuild:5.10.0-base, $USER/paraview-superbuild:5.10.0-builder, $USER/paraview-superbuild:5.10.0-package for the other stages.

Changelog

5.10.0

5.9.1

  • updated to Qt 5.12.9, CMake 3.18.6
  • ParaView EGL binaries now available from Kitware

5.8.0

5.7.0

  • changed build path to /home/paraview/buildbuildbuildbuildbuildbuildbuildbuildbuildbuildbuildbuildbuildbuild as workaround for issue #123
  • additionally define TBB_ROOT (fixes CMake sometimes failing)
  • updated extract-qt-installer to revision 2fa3063 of github.com/benlau/qtci
  • removed symlink to ospray include directory, as it is no longer needed

5.6.2

  • add symlink at build/install/include/paraview-5.6/ospray to build/install/include/ospray

5.7.0-RC1

  • use devtoolset-6 (gcc 6) instead of devtoolset-4
  • update to Qt 5.12.1
  • update to CMake 3.13.4

Old Releases

ParaView Release Docker Image
ParaView-5.7.0-RC2-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0-RC2
ParaView-5.7.0-RC2-osmesa-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0-RC2-osmesa
ParaView-5.7.0-RC2-egl-MPI-Linux-Python3.7-64bit lhofmann/paraview-superbuild:5.7.0-RC2-egl
ParaView-5.7.0-RC1-MPI-Linux-64bit lhofmann/paraview-superbuild:5.7.0-RC1
ParaView-5.7.0-RC1-osmesa-MPI-Linux-64bit lhofmann/paraview-superbuild:5.7.0-RC1-osmesa
ParaView-5.7.0-RC1-egl-MPI-Linux-64bit lhofmann/paraview-superbuild:5.7.0-RC1-egl
ParaView-5.6.0-295-g74fd1a6d5a-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0-295-g74fd1a6d5a
ParaView-5.6.0-295-g74fd1a6d5a-osmesa-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0-295-g74fd1a6d5a-osmesa
ParaView-5.6.0-295-g74fd1a6d5a-egl-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0-295-g74fd1a6d5a-egl
ParaView-5.6.0-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0
ParaView-5.6.0-osmesa-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0-osmesa
ParaView-5.6.0-egl-MPI-Linux-64bit lhofmann/paraview-superbuild:5.6.0-egl

About

Build ParaView plugins that are compatible with the ParaView binary distribution

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages