103 lines
3.7 KiB
Python
103 lines
3.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 llnl.util.tty as tty
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Sarus(CMakePackage):
|
|
"""Sarus is an OCI-compliant container engine for HPC systems."""
|
|
|
|
homepage = "https://github.com/eth-cscs/sarus"
|
|
url = "https://github.com/eth-cscs/sarus/archive/1.3.3.tar.gz"
|
|
git = "https://github.com/eth-cscs/sarus.git"
|
|
maintainers("Madeeks", "taliaga", "teonnik")
|
|
|
|
license("BSD-3-Clause")
|
|
|
|
version("develop", branch="develop")
|
|
version("master", branch="master")
|
|
version("1.4.1", commit="a73f6ca9cafb768f3132cfcef8c826af34eeff94")
|
|
version("1.4.0", commit="c6190faf45d5e0ff5348c70c2d4b1e49b2e01039")
|
|
version("1.3.3", commit="f2c000caf3d6a89ea019c70e2703da46799b0e9c")
|
|
version("1.3.2", commit="ac6a1b8708ec402bbe810812d8af41d1b7bf1860")
|
|
version("1.3.1", commit="5117a0da8d2171c4bf9ebc6835e0dd6b73812930")
|
|
version("1.3.0", commit="f52686fa942d5fc2b1302011e9a081865285357b")
|
|
version("1.2.0", commit="16d27c0c10366dcaa0c72c6ec72331b6e4e6884d")
|
|
version("1.1.0", commit="ed5b640a45ced6f6a7a2a9d295d3d6c6106f39c3")
|
|
version("1.0.1", commit="abb8c314a196207204826f7b60e5064677687405")
|
|
version("1.0.0", commit="d913b1d0ef3729f9f41ac5bd06dd5615c407ced4")
|
|
|
|
variant(
|
|
"ssh",
|
|
default=False,
|
|
description="Build and install the SSH hook and custom SSH software "
|
|
"to enable connections inside containers."
|
|
"Requires a static version of the glibc libraries "
|
|
"(including libcrypt) to be available on the system",
|
|
)
|
|
|
|
depends_on("expat", type="build")
|
|
depends_on("squashfs", type=("build", "run"))
|
|
depends_on("boost@1.65.0: cxxstd=11 +program_options")
|
|
depends_on("cpprestsdk@2.10.0:")
|
|
depends_on("libarchive@3.4.1:")
|
|
depends_on("rapidjson@1.2.0-2021-08-13", type="build")
|
|
depends_on("runc")
|
|
depends_on("tini")
|
|
|
|
# autoconf is required to build Dropbear for the SSH hook
|
|
depends_on("autoconf", type="build")
|
|
|
|
# Python 3 is used to run integration tests
|
|
depends_on("python@3:", type="test", when="@develop")
|
|
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
args = [
|
|
"-DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_files/gcc.cmake",
|
|
"-DENABLE_SSH=%s" % ("+ssh" in spec),
|
|
]
|
|
|
|
if "@1.4.1:" in spec:
|
|
args.append(self.define("ENABLE_UNIT_TESTS", self.run_tests))
|
|
|
|
return args
|
|
|
|
def install(self, spec, prefix):
|
|
with working_dir(self.build_directory):
|
|
make(*self.install_targets)
|
|
mkdirp(prefix.var.OCIBundleDir)
|
|
|
|
@run_after("install")
|
|
def build_perms_script(self):
|
|
script_sh = join_path(self.spec.prefix, "configure_installation.sh")
|
|
tty.warn(
|
|
"""
|
|
To complete Sarus's configuration:
|
|
|
|
1. Make sure sarus and its dependencies (tini, squashfs) are in
|
|
PATH, for example do `spack load sarus`.
|
|
|
|
2. Execute the script {} with root privileges.
|
|
|
|
The script generates a basic working configuration. For more
|
|
details:
|
|
|
|
https://sarus.readthedocs.io/en/stable/config/basic_configuration.html
|
|
|
|
For production it is strongly recommended to install with
|
|
escalated privileges (sudo/root) in order to comply with Sarus'
|
|
internal security checks. For more information on these checks,
|
|
see :
|
|
|
|
https://sarus.readthedocs.io/en/stable/install/post-installation.html#security-related
|
|
|
|
""".format(
|
|
script_sh
|
|
)
|
|
)
|