vapor: add new recipe (#40707)
This commit is contained in:
parent
dc715d9840
commit
ee8e40003b
132
var/spack/repos/builtin/packages/vapor/package.py
Normal file
132
var/spack/repos/builtin/packages/vapor/package.py
Normal file
@ -0,0 +1,132 @@
|
||||
# Copyright 2013-2023 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)
|
||||
|
||||
|
||||
import re
|
||||
|
||||
from spack.package 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/refs/tags/v3.9.0.tar.gz"
|
||||
git = "https://github.com/NCAR/VAPOR.git"
|
||||
|
||||
maintainers("vanderwb")
|
||||
|
||||
version("main", branch="main")
|
||||
version(
|
||||
"3.9.0",
|
||||
sha256="343ababe40b5824ef826f16c935a6dc1fb18e1a4c88ef967c8d64386f28a99a3",
|
||||
preferred=True,
|
||||
)
|
||||
|
||||
variant("doc", default=True, description="Build docs using Doxygen")
|
||||
variant("ospray", default=False, description="Enable OSPRay raytracing")
|
||||
|
||||
depends_on("cmake@3.17:", type="build")
|
||||
depends_on("python+ssl", type="build")
|
||||
depends_on("py-numpy@1.21", type="build")
|
||||
depends_on("py-scipy", type="build")
|
||||
depends_on("py-matplotlib", type="build")
|
||||
|
||||
depends_on("zlib-api")
|
||||
depends_on("gl")
|
||||
|
||||
depends_on("xz")
|
||||
depends_on("openssl")
|
||||
depends_on("expat")
|
||||
depends_on("curl")
|
||||
depends_on("mesa-glu")
|
||||
depends_on("libxtst")
|
||||
depends_on("libxcb")
|
||||
depends_on("xcb-util")
|
||||
depends_on("libxkbcommon")
|
||||
depends_on("libpng")
|
||||
depends_on("assimp")
|
||||
depends_on("netcdf-c~dap~byterange")
|
||||
depends_on("udunits")
|
||||
depends_on("freetype")
|
||||
depends_on("proj@:7")
|
||||
depends_on("libgeotiff")
|
||||
depends_on("glm")
|
||||
depends_on("qt+opengl+dbus@5")
|
||||
|
||||
depends_on("ospray~mpi", when="+ospray")
|
||||
depends_on("doxygen", when="+doc")
|
||||
|
||||
# These images are required but not provided by the source
|
||||
resource(
|
||||
name="map-images",
|
||||
url="https://stratus.ucar.edu/vapor-images/2023-Jun-images.tar.xz",
|
||||
sha256="3f0c6d40446abdb16d5aaaa314349a140e497b3be6f4971394b3e78f22d47c7d",
|
||||
placement="share/extras/images",
|
||||
)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
pyvers = spec["python"].version.up_to(2)
|
||||
pypath = "{}/python{}".format(spec.prefix.lib, pyvers)
|
||||
|
||||
args = [
|
||||
self.define_from_variant("BUILD_OSP", "ospray"),
|
||||
self.define_from_variant("BUILD_DOC", "doc"),
|
||||
self.define("BUILD_PYTHON", False),
|
||||
self.define("THIRD_PARTY_DIR", spec.prefix),
|
||||
self.define("THIRD_PARTY_LIB_DIR", spec.prefix.lib),
|
||||
self.define("THIRD_PARTY_INC_DIR", spec["python"].prefix.include),
|
||||
self.define("PYTHONVERSION", pyvers),
|
||||
self.define("PYTHONDIR", spec.prefix),
|
||||
self.define("PYTHONPATH", pypath),
|
||||
self.define("NUMPY_INCLUDE_DIR", pypath + "/site-packages/numpy/core/include"),
|
||||
self.define("MAP_IMAGES_PATH", "extras/images"),
|
||||
]
|
||||
|
||||
return args
|
||||
|
||||
# VAPOR depends on custom version of GeometryEngine that is
|
||||
# packaged with the source code - need to extract and move
|
||||
@run_before("cmake")
|
||||
def extract_gte(self):
|
||||
unzip = which("unzip")
|
||||
|
||||
with working_dir("buildutils"):
|
||||
unzip("GTE.zip")
|
||||
move("GTE", "../include")
|
||||
|
||||
# Build will use these optional site defaults which aren't
|
||||
# generally applicable to other sites
|
||||
@run_before("cmake")
|
||||
def clean_local_refs(self):
|
||||
force_remove("site_files/site.NCAR")
|
||||
|
||||
# Vapor wants all of the Python packages in its build path. This
|
||||
# somewhat objectionable code copies packages to the tree. It also
|
||||
# copies the Python library so that the site-library is found.
|
||||
@run_before("cmake")
|
||||
def copy_python_library(self):
|
||||
spec = self.spec
|
||||
mkdirp(spec.prefix.lib)
|
||||
pp = re.compile("py-[a-z0-9-]*")
|
||||
|
||||
for pydep in ["python"] + pp.findall(str(spec)):
|
||||
install_tree(spec[pydep].prefix.lib, spec.prefix.lib)
|
||||
|
||||
# The documentation will not be built without this target (though
|
||||
# it will try to install!)
|
||||
@property
|
||||
def build_targets(self):
|
||||
targets = []
|
||||
|
||||
if "+doc" in self.spec:
|
||||
targets.append("doc")
|
||||
|
||||
return targets + ["all"]
|
Loading…
Reference in New Issue
Block a user