# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack import *


class Vapor(CMakePackage):
    """VAPOR is the Visualization and Analysis Platform for Ocean, Atmosphere,
       and Solar Researchers.

       VAPOR provides an interactive 3D visualization environment that can also
       produce animations and still frame images."""

    homepage = "https://www.vapor.ucar.edu/"
    url      = "https://github.com/NCAR/VAPOR/archive/3.3.0.tar.gz"

    maintainers = ['RemiLacroix-IDRIS']

    version('3.5.0', sha256='f055d488c6f5bda5174a63990b6b6600037f7ce73ac68d39ad0f371d67f2d685', deprecated=True)
    version('3.3.0', sha256='41c13d206cfcfa4146155d524106de2eb74e7b59af1e2f8c1c3056c15d508a93', deprecated=True)

    depends_on('gl')  # GUI
    depends_on('qt@5.13.2:+opengl+dbus')  # GUI
    depends_on('netcdf-c@4.7.0:')
    depends_on('udunits@2.2.26:')
    depends_on('freetype@2.10.1:')
    depends_on('libgeotiff@1.5.1:')
    depends_on('hdf5@1.10.5:')
    depends_on('jpeg@9c:')
    depends_on('glew@2.1.0:')  # GUI
    depends_on('assimp@4.1.0:')
    depends_on('libtiff@4.0.10:')
    depends_on('proj@6.1.1:7')
    depends_on('glm@0.9.9.1:')
    depends_on('python@3.6.9:3.6')
    depends_on('py-numpy')

    def cmake_args(self):
        with open('site.local', 'w') as f:
            python = self.spec['python']
            f.write('set (PYTHONVERSION {0})\n'.format(python.version.up_to(2)))
            f.write('set (PYTHONDIR {0})\n'.format(python.home))
            f.write('set (PYTHONPATH {0})\n'.format(python.package.platlib))
            # install expects the share/images directory to install below this path
            f.write('set (THIRD_PARTY_DIR {0})\n'.format(self.stage.source_path))
            numpy_include = join_path(
                self.spec['py-numpy'].prefix,
                self.spec['python'].package.platlib,
                'numpy', 'core', 'include')
            f.write('set (THIRD_PARTY_INC_DIR "{0}")\n'.format(numpy_include))

        args = ['-DBUILD_OSP=OFF']
        return args

    def setup_run_environment(self, env):
        # set VAPOR_HOME in the module file
        env.set('VAPOR_HOME', self.prefix)
