# JH 2020

easyblock = 'CMakeMake'

name = 'ParaView'
version = '5.6.2'
versionsuffix = '-Python-%(pyver)s-mpi'

homepage = "https://www.paraview.org"
description = "ParaView is a scientific parallel visualizer."

toolchain = {'name': 'foss', 'version': '2020a'}
toolchainopts = {'pic': True, 'usempi': True}

local_download_suffix = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=all&downloadFile='
source_urls = ['https://www.paraview.org/paraview-downloads/%s' % local_download_suffix]
sources = ["ParaView-v%(version)s.tar.xz"]
checksums = ['1f3710b77c58a46891808dbe23dc59a1259d9c6b7bb123aaaeaa6ddf2be882ea']

dependencies = [
    ('Python', '3.7.8'),
    ('SciPy-bundle', '2020.03', '-Python-3.7.8'),
    ('XZ', '5.2.5'),
    ('HDF5', '1.10.6'),
    ('netCDF', '4.7.4'),
    ('libGLU', '9.0.1'),
    ('X11', '20200222'),
    ('Mesa', '18.1.1'), # Needen for libGL.so
    ('Qt5', '5.14.1'),
    ('zlib', '1.2.11'),
    ('FFmpeg', '4.2.2'),
    ('Szip', '2.1.1'),
]

builddependencies = [('CMake', '3.16.4')]

separate_build_dir = True

# Paraview
configopts = '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON -DBUILD_SHARED_LIBS=ON '
configopts += '-DPARAVIEW_QT_VERSION=5 -DQT_QMAKE_EXECUTABLE=$EBROOTQT5/bin/qmake '
configopts += '-DPARAVIEW_USE_MPI=ON '
configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
configopts += '-DPARAVIEW_ENABLE_PYTHON=ON '
configopts += '-Wno-dev '

# Python
configopts += "-DVTK_WRAP_PYTHON=ON "
configopts += "-DVTK_PYTHON_VERSION=%(pyver)s "
configopts += "-DPYTHON_INCLUDE_DIR=$EBROOTPYTHON/include/python%(pyshortver)sm "
configopts += "-DPYTHON_LIBRARY=$EBROOTPYTHON/lib/libpython%%(pyshortver)sm.%s " % SHLIB_EXT

# Third party libs
configopts += '-DVTK_USE_SYSTEM_MPI4PY=ON '
configopts += "-DVTK_USE_SYSTEM_LZMA=ON "
configopts += "-DVTK_USE_SYSTEM_HDF5=ON "
configopts += "-DVTK_USE_SYSTEM_NETCDF=ON "

# OpenGL & Mesa
configopts += '-DOPENGL_glu_LIBRARY=$EBROOTLIBGLU/lib/libGLU.%s ' % SHLIB_EXT
configopts += '-DOPENGL_INCLUDE_DIR=$EBROOTMESA/include -DOPENGL_gl_LIBRARY=$EBROOTMESA/lib/libGL.%s ' % SHLIB_EXT
configopts += '-DVTK_OPENGL_HAS_OSMESA=ON '
configopts += '-DOSMESA_INCLUDE_DIR=$EBROOTMESA/include -DOSMESA_LIBRARY=$EBROOTMESA/lib/libOSMesa.%s ' % SHLIB_EXT


# Without internet connection turn off testing (uncomment the following line)
# configopts += '-DBUILD_TESTING=OFF '
# Or consult https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
# and download ExternalData to $EASYBUILD_SOURCEPATH and adjust -DExternalData_OBJECT_STORES accordingly
# Without internet connection, comment the following two lines (configopts and prebuildopts)
configopts += '-DExternalData_OBJECT_STORES=%(builddir)s/ExternalData '

# The ParaView server can be cranky, test downloads are quite often failing, especially in the case
# of parallel downloads. Using ; insted of && gives a second chance to download the test files, if the
# first serial attempt would fail.
prebuildopts = 'make VTKData ;'

sanity_check_paths = {
    'files': ['bin/paraview'],
    'dirs': ['include/paraview-%(version_major_minor)s', 'lib'],
}

moduleclass = 'vis'
