spack/var/spack/repos/spack_repo/builtin/packages/turbine/package.py
Harmen Stoppels b932c14008
builtin: use api v2.0 and update dir structure (#49275)
* Bump the package API of the `builtin` repo to `v2.0`
* Move `var/spack/repos/builtin` -> `var/spack/repos/spack_repo/builtin`
* Move test repos `var/spack/repos/{builtin.mock,tutorial,...}` -> `var/spack/test_repos/`
* Update package dir names to v2 format (`-` -> `_` etc)
* Change absolute imports `from spack.pkg.builtin.my_pkg ...` to relative imports `from ..my_pkg.package ...`

Users who have a repo on top of builtin should change imports from

```python
from spack.pkg.builtin.my_pkg import MyPkg
```

to

```python
from spack_repo.builtin.packages.my_pkg.package import MyPkg
```

and can configure their editors with

```
PYTHONPATH=$spack/lib/spack:$spack/var/spack/repos
```

[skip-verify-checksums]
2025-05-06 12:05:44 +02:00

87 lines
3.2 KiB
Python

# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
class Turbine(AutotoolsPackage):
"""Turbine: The Swift/T runtime"""
homepage = "http://swift-lang.org/Swift-T"
url = "https://swift-lang.github.io/swift-t-downloads/spack/turbine-1.3.0.tar.gz"
git = "https://github.com/swift-lang/swift-t.git"
version("master", branch="master")
version("1.3.0", sha256="9709e5dada91a7dce958a7967d6ff2bd39ccc9e7da62d05a875324b5089da393")
version("1.2.3", sha256="a3156c7e0b39e166da3de8892f55fa5d535b0c99c87a9add067c801098fe51ba")
variant("python", default=False, description="Enable calling python")
variant("r", default=False, description="Enable calling R")
variant("hdf5", default=False, description="Enable HDF5 support")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("adlbx")
depends_on("adlbx@master", when="@master")
depends_on("adlbx@:0.9.2", when="@1.2.3:1.2.99")
depends_on("tcl", type=("build", "run"))
depends_on("zsh", type=("build", "run"))
depends_on("swig", type="build")
depends_on("python", when="+python")
depends_on("r", when="+r")
depends_on("r-rinside", when="+r")
depends_on("hdf5", when="+hdf5")
depends_on("mpi")
depends_on("autoconf", type="build", when="@master")
depends_on("automake", type="build", when="@master")
depends_on("libtool", type="build", when="@master")
depends_on("m4", type=("build", "run"))
def setup_build_environment(self, env: EnvironmentModifications) -> None:
spec = self.spec
env.set("CC", spec["mpi"].mpicc)
env.set("CXX", spec["mpi"].mpicxx)
env.set("CXXLD", spec["mpi"].mpicxx)
@property
def configure_directory(self):
if self.version == Version("master"):
return "turbine/code"
else:
return "."
def configure_args(self):
args = [
"--with-c-utils=" + self.spec["exmcutils"].prefix,
"--with-adlb=" + self.spec["adlbx"].prefix,
"--with-tcl=" + self.spec["tcl"].prefix,
"--disable-static-pkg",
]
if self.spec.satisfies("^intel-oneapi-mpi"):
args.append("--with-mpi=" + self["intel-oneapi-mpi"].component_prefix)
else:
args.append("--with-mpi=" + self.spec["mpi"].prefix)
if "+hdf5" in self.spec:
args.append("--with-hdf5=ON")
else:
args.append("--with-hdf5=OFF")
if "+python" in self.spec:
args.append("--with-python-exe={0}".format(self.spec["python"].command.path))
if "+r" in self.spec:
r_location = "{0}/rlib/R".format(self.spec["r"].prefix)
if not os.path.exists(r_location):
rscript = which("Rscript")
if rscript is not None:
r_location = rscript("-e", "cat(R.home())", output=str)
else:
msg = "Could not locate Rscript on your PATH!"
raise RuntimeError(msg)
args.append("--with-r={0}".format(r_location))
return args