Skip to content

[VTK] [package list]

VTK/9.2.6-cpeGNU-24.03 (VTK-9.2.6-cpeGNU-24.03.eb)

Install with the EasyBuild-user module:

eb VTK-9.2.6-cpeGNU-24.03.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module spider VTK/9.2.6-cpeGNU-24.03.

EasyConfig:

easyblock = 'CMakeMake'

local_VTK_version =          '9.2.6'         # https://vtk.org/download/

# Central stack
local_Boost_version =        '1.83.0'        # https://www.boost.org/
local_bzip2_version =        '1.0.8'         # http://www.bzip.org/downloads.html
local_FFmpeg_version =       '6.1.1'         # https://ffmpeg.org/download.html#releases
local_libpng_version =       '1.6.40'        # http://www.libpng.org/pub/png/libpng.html
local_expat_version =        '2.6.2'         # https://github.com/libexpat/libexpat/releases
local_freetype_version =     '2.13.2'        # https://download.savannah.gnu.org/releases/freetype/
local_libjpegturbo_version = '3.0.1'         # https://github.com/libjpeg-turbo/libjpeg-turbo/releases
local_libxml2_version =      '2.11.5'        # http://xmlsoft.org/sources/
local_libtiff_version =      '4.6.0'         # https://download.osgeo.org/libtiff/
local_zlib_version =         '1.3.1'         # https://zlib.net/
local_nlohmannjson_version = '3.11.3'        # https://github.com/nlohmann/json/releases
local_double_conv_version =  '3.3.0'         # https://github.com/google/double-conversion/releases
local_oneTBB_version =       '2021.13.0'     # https://github.com/uxlfoundation/oneTBB/releases
local_Eigen_version =        '3.4.0'         # https://gitlab.com/libeigen/eigen/-/releases
local_Qt5_version =          '5.15.15'       # https://download.qt.io/official_releases/qt/
local_PROJ_version =         '9.3.1'         # https://proj.org/download.html
# Contrib
local_Catalyst_version =     '2.0.0'         # https://gitlab.kitware.com/paraview/catalyst/-/tags
local_zfp_version =          '1.0.1'         # https://github.com/LLNL/zfp/releases

name = 'VTK'
version = local_VTK_version

homepage = 'https://www.vtk.org'

description = """
The Visualization Toolkit (VTK) is an open-source, freely available software
system for 3D computer graphics, image processing and visualization. VTK
consists of a C++ class library and several interpreted interface layers
including Tcl/Tk, Java, and Python. VTK supports a wide variety of visualization
algorithms including: scalar, vector, tensor, texture, and volumetric methods;
and advanced modeling techniques such as: implicit modeling, polygon reduction,
mesh smoothing, cutting, contouring, and Delaunay triangulation.
"""

toolchain = {'name': 'cpeGNU', 'version': '24.03'}
toolchainopts = {'usempi': True}

source_urls = ['https://www.vtk.org/files/release/%(version_major_minor)s']
sources =     [SOURCE_TAR_GZ]

patches = [
    'VTK-9.2.6_fix-gcc-13-compilation.patch',
    ('vtk-version.egg-info', '.'),
]

checksums = [
    {'VTK-9.2.6.tar.gz' : 
        '06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12'},
    {'VTK-9.2.6_fix-gcc-13-compilation.patch' : 
        '13c778bc1ff829baf8b505aa7a3e06759da8b3ab1e6f7967e0ffe919507c1865'},
    {'vtk-version.egg-info' : 
        '787b82415ae7a4a1f815b4db0e25f7abc809a05fc85d7d219627f3a7e5d3867b'},
]

builddependencies = [
    ('buildtools',        '%(toolchain_version)s', '', True),
    ('craype-accel-host', EXTERNAL_MODULE),
]

dependencies = [
    ('cray-hdf5-parallel',       EXTERNAL_MODULE),
    ('cray-netcdf-hdf5parallel', EXTERNAL_MODULE),
    ('cray-parallel-netcdf',     EXTERNAL_MODULE),
    ('cray-python',              EXTERNAL_MODULE),
    ('Eigen',                    local_Eigen_version, '', True),
    ('X11',                      '%(toolchain_version)s'),
    ('OpenGL',                   '%(toolchain_version)s'),
    ('Boost',                    local_Boost_version),
    ('bzip2',                    local_bzip2_version),
    ('FFmpeg',                   local_FFmpeg_version),
    ('libpng',                   local_libpng_version),
    ('expat',                    local_expat_version),
    ('freetype',                 local_freetype_version),
    ('libjpeg-turbo',            local_libjpegturbo_version),
    ('libxml2',                  local_libxml2_version),
    ('LibTIFF',                  local_libtiff_version),
    ('zlib',                     local_zlib_version),
    ('nlohmann-json',            local_nlohmannjson_version),
    ('double-conversion',        local_double_conv_version),
    ('zfp',                      local_zfp_version),
    ('Catalyst',                 local_Catalyst_version),
    ('oneTBB',                   local_oneTBB_version),
    ('Qt5',                      local_Qt5_version),
    ('PROJ',                     local_PROJ_version),
]

preconfigopts = ' && '.join([
    'module unload cray-libsci rocm',
    'export LIBRARY_PATH=$CRAY_PYTHON_PREFIX/lib:$LIBRARY_PATH',
    'export __EGL_VENDOR_LIBRARY_FILENAMES=${EBROOTOPENGL}/share/glvnd/egl_vendor.d/50_mesa.json',
]) + ' && '

configopts = ' '.join([
    '-D CMAKE_CXX_STANDARD=11',
    '-D OPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include',
    '-D OPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include',
    '-D OPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include',
    '-D OPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0',
    '-D OPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so',
    '-D OPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0',
    '-D OPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so',
    '-D OPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1',
    '-D OpenGL_GL_PREFERENCE=GLVND',
    '-D VTK_GROUP_ENABLE_MPI=WANT',
    '-D VTK_GROUP_ENABLE_Qt=WANT',
    '-D VTK_GROUP_ENABLE_Rendering=WANT',
    '-D VTK_QT_VERSION=5',
    '-D VTK_USE_MPI=ON',
    '-D VTK_WRAP_PYTHON=ON',
    '-D VTK_PYTHON_VERSION=3',
    '-D VTK_PYTHON_OPTIONAL_LINK=OFF',
    '-D CMAKE_INSTALL_RPATH=$CRAY_PYTHON_PREFIX/lib',
    '-D VTK_SMP_IMPLEMENTATION_TYPE=OpenMP',
    '-D VTK_MAX_THREADS=128',
    '-D VTK_USE_64BIT_IDS=ON',
    '-D VTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF',
    '-D VTK_OPENGL_HAS_EGL=ON',
    '-D VTK_OPENGL_HAS_OSMESA=OFF',
    '-D VTK_USE_X=OFF',
    '-D VTK_ENABLE_CATALYST=ON',
    '-D VTK_DEFAULT_EGL_DEVICE_INDEX=0',
    '-D VTK_MODULE_ENABLE_VTK_IOFFMPEG=YES',
    '-D VTK_MODULE_ENABLE_VTK_IOVideo=YES',
    '-D VTK_MODULE_ENABLE_VTK_DICOMParser=YES',
    '-D VTK_MODULE_ENABLE_VTK_FiltersReebGraph=YES',
    '-D VTK_MODULE_ENABLE_VTK_FiltersSMP=YES',
    '-D VTK_MODULE_ENABLE_VTK_FiltersSelection=YES',
    '-D VTK_MODULE_ENABLE_VTK_FiltersTopology=YES',
    '-D VTK_MODULE_ENABLE_VTK_FiltersTexture=YES',
    '-D VTK_MODULE_ENABLE_VTK_mpi4py=YES',
    '-D VTK_MODULE_ENABLE_VTK_GUISupportQt=YES',
    '-D VTK_MODULE_ENABLE_VTK_ViewsQt=YES',
    '-D VTK_MODULE_ENABLE_VTK_IONetCDF=YES',
    '-D VTK_MODULE_ENABLE_VTK_IOParallelNetCDF=YES',
    '-D VTK_MODULE_ENABLE_VTK_hdf5=YES',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_expat=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_freetype=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_hdf5=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_jpeg=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_libxml2=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_mpi4py=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_netcdf=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_png=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_tiff=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_zlib=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_doubleconversion=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_eigen=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_nlohmannjson=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_glew=ON',
    '-D VTK_MODULE_USE_EXTERNAL_VTK_libproj=ON',
])

preinstallopts = "export PYTHONPATH=%(installdir)s/lib64/python%(pyshortver)s/site-packages:$PYTHONPATH && "

local_egg_info_src = '%(builddir)s/VTK-%(version)s/vtk-version.egg-info'
local_egg_info_dest = '%(installdir)s/lib64/python%(pyshortver)s/site-packages/vtk-%(version)s.egg-info'

postinstallcmds = [
    'sed "s/#VTK_VERSION#/%%(version)s/" %s > %s' % (local_egg_info_src, local_egg_info_dest),
    'mkdir -p %(installdir)s/share/licenses/%(name)s',
    'cd ../%(name)s-%(version)s && cp CONTRIBUTING.md Copyright.txt README.md %(installdir)s/share/licenses/%(name)s',   
]

modextrapaths = {
    'PYTHONPATH': 'lib64/python%(pyshortver)s/site-packages',
}

local_vtk_exec = ['vtk%s-%%(version_major_minor)s' % x
                  for x in ['WrapPythonInit', 'WrapPython', 'WrapHierarchy']]
local_vtk_exec += ['vtkpython']

local_vtk_libs = ['CommonCore', 'IONetCDF', 'ParallelCore', 'RenderingOpenGL2']

sanity_check_paths = {
    'files': ['bin/%s' % x for x in local_vtk_exec] + ['include/vtk-%(version_major_minor)s/vtkMPI.h'] +
             ['lib/libvtk%s-%%(version_major_minor)s.%s' % (l, SHLIB_EXT) for l in local_vtk_libs],
    'dirs': ['lib/python%(pyshortver)s/site-packages/', 'include/vtk-%(version_major_minor)s'],
}

sanity_check_commands = [
    "python -c 'import %(namelower)s'",
    "python -c 'import pkg_resources; pkg_resources.get_distribution(\"vtk\")'",
]

moduleclass = 'vis'

[VTK] [package list]