
* SEACAS: Update package.py to handle new SEACAS project name The base project name for the SEACAS project has changed from "SEACASProj" to "SEACAS" as of @2022-10-14, so the package needed to be updated to use the new project name when needed. The refactor also changes several: "-DSome_CMAKE_Option:BOOL=ON" to define("Some_CMAKE_Option", True) * SEACAS, EXODUSII: New version; deprecate older versions; better variant descriptions * [@spackbot] updating style on behalf of gsjaardema * Fix long lines reported by flake8 --------- Co-authored-by: gsjaardema <gsjaardema@users.noreply.github.com>
202 lines
7.7 KiB
Python
202 lines
7.7 KiB
Python
# Copyright 2013-2024 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 sys
|
|
|
|
from spack.operating_systems.mac_os import macos_version
|
|
from spack.package import *
|
|
|
|
is_windows = sys.platform == "win32"
|
|
|
|
|
|
class Exodusii(CMakePackage):
|
|
"""Exodus II is a C++/Fortran library developed to store and retrieve
|
|
data for finite element analyses. It's used for preprocessing
|
|
(problem definition), postprocessing (results visualization), and
|
|
data transfer between codes. An Exodus II data file is a random
|
|
access, machine independent, binary file that is written and read
|
|
via C, C++, or Fortran API routines. This package *only* installs
|
|
the C and optionally Fortran library for exodus. If you want the full
|
|
suite of exodus-releated tools including the IOSS library, install
|
|
the seacas package instead of this package.
|
|
"""
|
|
|
|
homepage = "https://sandialabs.github.io/seacas/"
|
|
git = "https://github.com/sandialabs/seacas.git"
|
|
url = "https://github.com/sandialabs/seacas/archive/refs/tags/v2019-08-20.zip"
|
|
maintainers("gsjaardema")
|
|
|
|
license("BSD-3-Clause")
|
|
|
|
version("master", branch="master")
|
|
version(
|
|
"2024-04-03", sha256="72b095bae64b2b6c232630f79de763c6ade00c9b1199fc6980800891b2ab3751"
|
|
)
|
|
version(
|
|
"2024-03-11", sha256="5d417aa652e4ec8d66e27714c63b8cb5a7f878fb7b2ec55f629636fcff7c0f00"
|
|
)
|
|
version(
|
|
"2023-11-27", sha256="00c444b2def2c9cf5694bee5bb0284ce289e83f7c84ac28c6701c746cfde9a4c"
|
|
)
|
|
version(
|
|
"2023-05-30", sha256="d2cbd43596ed3ad77186f865fe8aa81a2efe389ff345b24622ac76c16614b532"
|
|
)
|
|
version(
|
|
"2022-10-14", sha256="a96f29de3b69e7e3f5f344396c8cf791fe277dab0217fc0b90b02e38e75bbdc1"
|
|
)
|
|
version(
|
|
"2022-08-01", sha256="c12a677ba2178cf5161d63fef3b1da4d3888622199cea3e611f59649085681dc"
|
|
)
|
|
version(
|
|
"2022-05-16", sha256="80f6b0dee91766ab207a366b8eea546cc1afa33cea24deebaa6583f283d80fab"
|
|
)
|
|
version(
|
|
"2022-03-04", sha256="b2e09f0f64d75634b7d3f9844c2cea7acbc877c4ceebb6b91e8e494bb3653166"
|
|
)
|
|
version(
|
|
"2022-02-16", sha256="e1907f6831d9a0dd2c65879ca5746b9a0ef57d7ccce0036d55c0c6c5628ac981"
|
|
)
|
|
version(
|
|
"2022-01-27", sha256="d21c14b9b30f773cef8e2029773f3cc35da021eebe9060298231f95021eb814f"
|
|
)
|
|
version(
|
|
"2021-10-11",
|
|
sha256="5c04d252e1c4a10b037aa352b89487e581ec6b52bdb46e9e85f101bbdcd9c388",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2021-04-05",
|
|
sha256="f40d318674753287b8b28d2b4e5cca872cd772d4c7383af4a8f3eeb48fcc7ec0",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2021-04-02",
|
|
sha256="811037a68eaff0daf9f34bd31b2ab1c9b8f028dfcb998ab01fbcb80d9458257c",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2021-01-20",
|
|
sha256="6ff7c3f0651138f2e2305b5270108ca45f96346a739b35a126a0a260c91cbe64",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2021-01-06",
|
|
sha256="69cafef17d8e624c2d9871f3a281ff3690116a6f82162fe5c1507bb4ecd6a32a",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2020-08-13",
|
|
sha256="5b128a8ad9b0a69cff4fe937828d6d1702f1fe8aa80d4751e6522939afe62957",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2020-05-12",
|
|
sha256="0402facf6cf23d903d878fb924b5d57e9f279dead5b92cf986953a6b91a6e81f",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2020-03-16",
|
|
sha256="ed1d42c8c657931ecd45367a465cf9c00255772d9cd0811fc9baacdb67fc71fa",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2020-01-16",
|
|
sha256="db69dca25595e88a40c00db0ccf2afed1ecd6008ba30bb478a4e1c5dd61998b8",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2019-12-18",
|
|
sha256="88a71de836aa26fd63756cf3ffbf3978612edc5b6c61fa8de32fe9d638007774",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2019-10-14",
|
|
sha256="f143d90e8a7516d25979d1416e580dea638332db723f26ae94a712dfe4052e8f",
|
|
deprecated=True,
|
|
)
|
|
version("2016-08-09", commit="2ffeb1bd39454ad5aa230e12969ce976f3d1c92b", deprecated=True)
|
|
|
|
patch("Fix-ioss-tpl.patch", when="@2021-10-11:")
|
|
|
|
# Build options
|
|
variant("fortran", default=False, description="Compile with Fortran support")
|
|
variant("shared", default=True, description="Enables the build of shared libraries")
|
|
variant("mpi", default=True, description="Enables MPI parallelism.")
|
|
variant("thread_safe", default=False, description="Enable thread-safe exodus library")
|
|
|
|
depends_on("cmake@3.22:", when="@2023-10-24:", type="build")
|
|
depends_on("cmake@3.17:", when="@:2023-05-30", type="build")
|
|
depends_on("mpi", when="+mpi")
|
|
|
|
# Always depends on netcdf-c
|
|
depends_on("netcdf-c@4.8.0:+mpi+parallel-netcdf", when="+mpi")
|
|
depends_on("netcdf-c@4.8.0:~mpi", when="~mpi")
|
|
depends_on("hdf5+hl~mpi", when="~mpi")
|
|
depends_on("hdf5+hl+mpi", when="+mpi")
|
|
|
|
depends_on("python@3.0:")
|
|
conflicts("+shared", when="platform=windows")
|
|
|
|
def setup_run_environment(self, env):
|
|
env.prepend_path("PYTHONPATH", self.prefix.lib)
|
|
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
from_variant = self.define_from_variant
|
|
define = self.define
|
|
|
|
if self.spec.satisfies("@2022-10-14:"):
|
|
project_name_base = "Seacas"
|
|
else:
|
|
project_name_base = "SEACASProj"
|
|
|
|
options = []
|
|
|
|
# #################### Base Settings #######################
|
|
# Only want to enable the Exodus library. If want anything else, use the seacas package.
|
|
options.extend(
|
|
[
|
|
define(project_name_base + "_ENABLE_ALL_PACKAGES", False),
|
|
define(project_name_base + "_ENABLE_ALL_OPTIONAL_PACKAGES", False),
|
|
define(project_name_base + "_ENABLE_SECONDARY_TESTED_CODE", False),
|
|
define(project_name_base + "_ENABLE_SEACASExodus", True),
|
|
from_variant(project_name_base + "_ENABLE_SEACASExodus_for", "fortran"),
|
|
from_variant(project_name_base + "_ENABLE_SEACASExoIIv2for32", "fortran"),
|
|
define(project_name_base + "_HIDE_DEPRECATED_CODE", False),
|
|
from_variant("CMAKE_INSTALL_RPATH_USE_LINK_PATH", "shared"),
|
|
from_variant("BUILD_SHARED_LIBS", "shared"),
|
|
from_variant("SEACASExodus_ENABLE_THREADSAFE", "thread_safe"),
|
|
from_variant("TPL_ENABLE_Pthread", "thread_safe"),
|
|
from_variant(project_name_base + "_ENABLE_Fortran", "fortran"),
|
|
]
|
|
)
|
|
if "~shared" in self.spec and not is_windows:
|
|
options.append(self.define(project_name_base + "_EXTRA_LINK_FLAGS", "z;dl"))
|
|
options.append(from_variant("TPL_ENABLE_MPI", "mpi"))
|
|
if "+mpi" in spec and not is_windows:
|
|
options.extend(
|
|
[
|
|
define("CMAKE_C_COMPILER", spec["mpi"].mpicc),
|
|
define("CMAKE_CXX_COMPILER", spec["mpi"].mpicxx),
|
|
define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc),
|
|
define("MPI_BASE_DIR", spec["mpi"].prefix),
|
|
]
|
|
)
|
|
|
|
# ##################### Dependencies ##########################
|
|
# Always need NetCDF-C
|
|
options.extend(
|
|
[define("TPL_ENABLE_Netcdf", True), define("NetCDF_ROOT", spec["netcdf-c"].prefix)]
|
|
)
|
|
|
|
# ################# RPath Handling ######################
|
|
if sys.platform == "darwin" and macos_version() >= Version("10.12"):
|
|
# use @rpath on Sierra due to limit of dynamic loader
|
|
options.append(define("CMAKE_MACOSX_RPATH", True))
|
|
else:
|
|
options.append(define("CMAKE_INSTALL_NAME_DIR", self.prefix.lib))
|
|
|
|
return options
|