summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Stanavige <stanavige1@llnl.gov>2024-10-30 08:08:01 -0700
committerGitHub <noreply@github.com>2024-10-30 16:08:01 +0100
commit9d03170cb2d7fc78023947e2953727b3e7210fbf (patch)
treebb587b5a399c55829456ff4b76caa7d3d0c1656a
parent8892c878ce173022c0efb18b35f1b21afd7a072b (diff)
downloadspack-9d03170cb2d7fc78023947e2953727b3e7210fbf.tar.gz
spack-9d03170cb2d7fc78023947e2953727b3e7210fbf.tar.bz2
spack-9d03170cb2d7fc78023947e2953727b3e7210fbf.tar.xz
spack-9d03170cb2d7fc78023947e2953727b3e7210fbf.zip
scr: release v3.1.0, including components (#45737)
SCR and the SCR components have new releases - AXL v0.9.0 - MPI variant added to AXL package - ER v0.5.0 - KVTREE v1.5.0 - Rankstr v0.4.0 - Shuffile v0.4.0 - Spatha v0.4.0 - dtcmp v1.1.5 - lwgrp v1.0.6 - Redset v0.4.0 - New variants added to Redset - SCR v3.1.0 - Added Flux resourse manager - Added pthreads variant - Removed deprecated release candidates and references - Cleaned up component dependency versions - Updated versions within variants and cleaned up cmake_args
-rw-r--r--var/spack/repos/builtin/packages/axl/package.py8
-rw-r--r--var/spack/repos/builtin/packages/dtcmp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/er/package.py1
-rw-r--r--var/spack/repos/builtin/packages/kvtree/package.py1
-rw-r--r--var/spack/repos/builtin/packages/lwgrp/package.py1
-rw-r--r--var/spack/repos/builtin/packages/rankstr/package.py1
-rw-r--r--var/spack/repos/builtin/packages/redset/package.py15
-rw-r--r--var/spack/repos/builtin/packages/scr/package.py140
-rw-r--r--var/spack/repos/builtin/packages/shuffile/package.py1
-rw-r--r--var/spack/repos/builtin/packages/spath/package.py1
10 files changed, 87 insertions, 86 deletions
diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py
index 998cdc8cd1..119cf81da2 100644
--- a/var/spack/repos/builtin/packages/axl/package.py
+++ b/var/spack/repos/builtin/packages/axl/package.py
@@ -27,6 +27,7 @@ class Axl(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.9.0", sha256="da2d74092fb230754a63db3cd5ba72a233ee8153dec28cc604fa8465280299ba")
version("0.8.0", sha256="9fcd4eae143a67ff02622feda2a541b85e9a108749c039faeb473cbbc2330459")
version("0.7.1", sha256="526a055c072c85cc989beca656717e06b128f148fda8eb19d1d9b43a3325b399")
version("0.7.0", sha256="840ef61eadc9aa277d128df08db4cdf6cfa46b8fcf47b0eee0972582a61fbc50")
@@ -64,6 +65,9 @@ class Axl(CMakePackage):
validator=async_api_validator,
)
+ variant("mpi", default=True, description="Build with MPI support", when="@0.7.1:")
+ depends_on("mpi", when="@0.7.1: +mpi")
+
variant("pthreads", default=True, description="Enable Pthread support", when="@0.6:")
variant("bbapi", default=True, description="Enable IBM BBAPI support")
@@ -86,6 +90,10 @@ class Axl(CMakePackage):
args = []
args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix))
+ args.append(self.define_from_variant("MPI"))
+ if spec.satisfies("+mpi"):
+ args.append(self.define("MPI_C_COMPILER", spec["mpi"].mpicc))
+
if spec.satisfies("@:0.3.0"):
apis = list(spec.variants["async_api"].value)
if "daemon" in apis:
diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py
index 1fa7c28e1d..c331ea2ed3 100644
--- a/var/spack/repos/builtin/packages/dtcmp/package.py
+++ b/var/spack/repos/builtin/packages/dtcmp/package.py
@@ -17,6 +17,7 @@ class Dtcmp(AutotoolsPackage):
maintainers("gonsie", "camstan", "adammoody")
version("main", branch="main")
+ version("1.1.5", sha256="959c28999b8d1dd2e8703172db55392e38114fde0cd54dfad04555622c5e5974")
version("1.1.4", sha256="dd83d8cecd68e13b78b68e88675cc5847cde06742b7740e140b98f4a08127dd3")
version("1.1.3", sha256="90b32cadd0ff2f4fa7fc916f8dcfdbe6918e3e285e0292a2470772478ca0aab5")
version("1.1.2", sha256="76e1d1fed89bf6abf003179a7aed93350d5ce6282cb000b02a241ec802ec399d")
@@ -30,7 +31,8 @@ class Dtcmp(AutotoolsPackage):
depends_on("lwgrp")
depends_on("lwgrp@main", when="@main")
- depends_on("lwgrp@1.0.5", when="@1.1.4")
+ depends_on("lwgrp@1.0.3:", when="@1.1.2:")
+ depends_on("lwgrp@1.0.5:", when="@1.1.4:")
variant("shared", default=True, description="Build with shared libraries")
depends_on("lwgrp+shared", when="+shared")
diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py
index 499091390e..8dc7622d98 100644
--- a/var/spack/repos/builtin/packages/er/package.py
+++ b/var/spack/repos/builtin/packages/er/package.py
@@ -19,6 +19,7 @@ class Er(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.5.0", sha256="dbde4da1fe115b67334085446d413f7365ba94c0a34cb1c38b83944e8fba4d0b")
version("0.4.0", sha256="6cb5b6724ddac5c1f5ed6b326a5f3bf5d4eb1c6958a48218e6ca9bb7c02e48a8")
version("0.3.0", sha256="01bc71bfb2ebb015ccb948f2bb9138b70972a3e8be0e53f9a4844e46b106a36c")
version("0.2.0", sha256="9ddfe2b63682ed0e89685f9b7d5259ef82b802aba55c8ee78cc15a7adbad6bc0")
diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py
index 68328da197..865c712c14 100644
--- a/var/spack/repos/builtin/packages/kvtree/package.py
+++ b/var/spack/repos/builtin/packages/kvtree/package.py
@@ -20,6 +20,7 @@ class Kvtree(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("1.5.0", sha256="9617948bdb905615aeb0604d4998d92eb970ecd5c9c851116266972462f0b350")
version("1.4.0", sha256="48a36fd578f0d1198a9c1512d6446c830b915ace5bb97539eec615495bee5a51")
version("1.3.0", sha256="8281e075772d3534183c46133553d5765455d79ed98a895743663db891755ca9")
version("1.2.0", sha256="ecd4b8bc479c33ab4f23fc764445a3bb353a1d15c208d011f5577a32c182477f")
diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py
index 79a5506620..eb0dc95ed7 100644
--- a/var/spack/repos/builtin/packages/lwgrp/package.py
+++ b/var/spack/repos/builtin/packages/lwgrp/package.py
@@ -17,6 +17,7 @@ class Lwgrp(AutotoolsPackage):
maintainers("CamStan", "gonsie", "adammoody")
version("main", branch="main")
+ version("1.0.6", sha256="9f697978361b4bd9914beaaafffcee0b62a480a9a7dd3d75176910cebda81438")
version("1.0.5", sha256="16b579e13b8a5218f4fe1b8715f6aafb09133a0cefbcd6b2eaf73802955dee6b")
version("1.0.4", sha256="0c933df7658660a0225f8e3a940eb2621efa4421397859417c8d90d906d4e90a")
version("1.0.3", sha256="20b2fc3908bfdf04d1c177f86e227a147214cd155c548b3dd75e54c78e1c1c47")
diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py
index f9df699bcf..1fe8a9cf3e 100644
--- a/var/spack/repos/builtin/packages/rankstr/package.py
+++ b/var/spack/repos/builtin/packages/rankstr/package.py
@@ -19,6 +19,7 @@ class Rankstr(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.4.0", sha256="f33c920aa67b867d0fa2001d98f6762e90f59a41b2f66c27a63cff6bd6afeb1b")
version("0.3.0", sha256="5e6378a8fe155b4c6c5cf45db8aaf0562d88e93471d0e12c1e922252ffcce5e6")
version("0.2.0", sha256="a3f7fd8015156c1b600946af759a03e099e05c83e7b2da6bac394fe7c0d4efae")
version("0.1.0", sha256="b68239d67b2359ecc067cc354f86ccfbc8f02071e60d28ae0a2449f2e7f88001")
diff --git a/var/spack/repos/builtin/packages/redset/package.py b/var/spack/repos/builtin/packages/redset/package.py
index 6ef28e138e..b38e4b2f14 100644
--- a/var/spack/repos/builtin/packages/redset/package.py
+++ b/var/spack/repos/builtin/packages/redset/package.py
@@ -6,7 +6,7 @@
from spack.package import *
-class Redset(CMakePackage):
+class Redset(CMakePackage, CudaPackage):
"""Create MPI communicators for disparate redundancy sets"""
homepage = "https://github.com/ecp-veloc/redset"
@@ -19,6 +19,7 @@ class Redset(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.4.0", sha256="d278a5d3c1323915c379e2077dbfab1248044c86a04fc56faee6681c66380451")
version("0.3.0", sha256="007ca5e7e5f4400e22ad7bca82e366cd51c73f28067c955cc16d7d0ff0c06a1b")
version("0.2.0", sha256="0438b0ba56dafcd5694a8fceeb5a932901307353e056ab29817d30b8387f787f")
version("0.1.0", sha256="baa75de0d0d6de64ade50cff3d38ee89fd136ce69869182bdaefccf5be5d286d")
@@ -38,7 +39,11 @@ class Redset(CMakePackage):
depends_on("rankstr@:0.2.0", when="@:0.2.0")
depends_on("rankstr@0.3.0:", when="@0.3.0:")
- variant("shared", default=True, description="Build with shared libraries")
+ variant("cuda", default=False, description="Enable CUDA support", when="@0.4:")
+ variant("openmp", default=False, description="Enable OpenMP support", when="@0.4:")
+ variant("pthreads", default=False, description="Enable Pthread support", when="@0.4:")
+
+ variant("shared", default=True, description="Build with shared libraries", when="@0.1:")
depends_on("kvtree+shared", when="@0.1: +shared")
depends_on("kvtree~shared", when="@0.1: ~shared")
depends_on("rankstr+shared", when="@0.1: +shared")
@@ -51,7 +56,9 @@ class Redset(CMakePackage):
args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix))
args.append(self.define("WITH_RANKSTR_PREFIX", spec["rankstr"].prefix))
- if spec.satisfies("@0.1.0:"):
- args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
+ args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
+ args.append(self.define_from_variant("ENABLE_CUDA", "cuda"))
+ args.append(self.define_from_variant("ENABLE_OPENMP", "openmp"))
+ args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads"))
return args
diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py
index 9737365255..7ec48f4ac7 100644
--- a/var/spack/repos/builtin/packages/scr/package.py
+++ b/var/spack/repos/builtin/packages/scr/package.py
@@ -12,6 +12,8 @@ from spack.package import *
def detect_scheduler():
if which("aprun"):
return "APRUN"
+ if which("flux"):
+ return "FLUX"
if which("jsrun"):
return "LSF"
return "SLURM"
@@ -33,21 +35,12 @@ class Scr(CMakePackage):
version("legacy", branch="legacy")
version(
- "3.0.1",
- sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a",
+ "3.1.0",
+ sha256="ca1f37c84e0ff7a307e68f213c8cc868974d7fb30f16826853a711c7c3a55ffa",
preferred=True,
)
- version("3.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc")
- version(
- "3.0rc2",
- sha256="4b2a718af56b3683e428d25a2269c038e9452db734221d370e3023a491477fad",
- deprecated=True,
- )
- version(
- "3.0rc1",
- sha256="bd31548a986f050024429d8ee3644eb135f047f98a3d503a40c5bd4a85291308",
- deprecated=True,
- )
+ version("3.0.1", sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a")
+ version("3.0.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc")
version("2.0.0", sha256="471978ae0afb56a20847d3989b994fbd680d1dea21e77a5a46a964b6e3deed6b")
version(
"1.2.2",
@@ -79,39 +72,31 @@ class Scr(CMakePackage):
# SCR legacy is anything 2.x.x or earlier
# SCR components is anything 3.x.x or later
- depends_on("axl@0.7.1", when="@3.0.1")
- depends_on("er@0.2.0", when="@3.0.1")
- depends_on("kvtree@1.3.0", when="@3.0.1")
- depends_on("rankstr@0.1.0", when="@3.0.1")
- depends_on("redset@0.2.0", when="@3.0.1")
- depends_on("shuffile@0.2.0", when="@3.0.1")
- depends_on("spath@0.2.0 +mpi", when="@3.0.1")
- depends_on("dtcmp@1.1.4", when="@3.0.1")
-
- depends_on("axl@0.6.0", when="@3.0.0")
- depends_on("er@0.2.0", when="@3.0.0")
- depends_on("kvtree@1.3.0", when="@3.0.0")
- depends_on("rankstr@0.1.0", when="@3.0.0")
- depends_on("redset@0.2.0", when="@3.0.0")
- depends_on("shuffile@0.2.0", when="@3.0.0")
- depends_on("spath@0.2.0", when="@3.0.0")
- depends_on("dtcmp@1.1.4", when="@3.0.0")
-
- depends_on("axl@0.5.0:", when="@3.0rc2")
- depends_on("er@0.1.0:", when="@3.0rc2")
- depends_on("kvtree@1.2.0:", when="@3.0rc2")
- depends_on("rankstr@0.1.0:", when="@3.0rc2")
- depends_on("redset@0.1.0:", when="@3.0rc2")
- depends_on("shuffile@0.1.0:", when="@3.0rc2")
- depends_on("spath@0.1.0:", when="@3.0rc2")
-
- depends_on("axl@0.4.0", when="@3.0rc1")
- depends_on("er@0.0.4", when="@3.0rc1")
- depends_on("kvtree@1.1.1", when="@3.0rc1")
- depends_on("rankstr@0.0.3", when="@3.0rc1")
- depends_on("redset@0.0.5", when="@3.0rc1")
- depends_on("shuffile@0.0.4", when="@3.0rc1")
- depends_on("spath@0.0.2", when="@3.0rc1")
+ with when("@3.1.0"):
+ depends_on("axl@0.8.0: +mpi")
+ depends_on("er@0.5.0")
+ depends_on("kvtree@1.4.0:")
+ depends_on("rankstr@0.3.0:")
+ depends_on("redset@0.4.0")
+ depends_on("shuffile@0.3.0:")
+ depends_on("spath@0.3.0: +mpi")
+ depends_on("dtcmp@1.1.5")
+
+ with when("@3.0.1"):
+ depends_on("axl@0.7.1 +mpi")
+ depends_on("er@0.3.0")
+
+ with when("@3.0.0"):
+ depends_on("axl@0.6.0")
+ depends_on("er@0.2.0")
+
+ with when("@3.0.0:3.0.1"):
+ depends_on("kvtree@1.3.0")
+ depends_on("rankstr@0.2.0")
+ depends_on("redset@0.2.0")
+ depends_on("shuffile@0.2.0")
+ depends_on("spath@0.2.0 +mpi")
+ depends_on("dtcmp@1.1.4:")
# DTCMP is an optional dependency up until 3.x, required thereafter
variant(
@@ -127,14 +112,15 @@ class Scr(CMakePackage):
"libyogrt", default=True, description="Build SCR with libyogrt for get_time_remaining."
)
depends_on("libyogrt scheduler=slurm", when="+libyogrt resource_manager=SLURM")
+ depends_on("libyogrt scheduler=flux", when="+libyogrt resource_manager=FLUX")
depends_on("libyogrt scheduler=lsf", when="+libyogrt resource_manager=LSF")
depends_on("libyogrt", when="+libyogrt")
# PDSH required up to 3.0rc1, optional thereafter
# TODO spack currently assumes 3.0.0 = 3.0 = 3 < 3.0rc1 < 3.0rc2
- variant("pdsh", default=True, when="@3.0.0,3.0rc2:", description="Enable use of PDSH")
+ variant("pdsh", default=True, when="@3:", description="Enable use of PDSH")
depends_on("pdsh+static_modules", type=("build", "run"), when="+pdsh")
- depends_on("pdsh+static_modules", type=("build", "run"), when="@:2,3.0rc1")
+ depends_on("pdsh+static_modules", type=("build", "run"), when="@:2")
variant(
"scr_config",
@@ -154,7 +140,7 @@ class Scr(CMakePackage):
variant(
"resource_manager",
default=detect_scheduler(),
- values=("SLURM", "APRUN", "LSF", "NONE"),
+ values=("SLURM", "APRUN", "FLUX", "LSF", "NONE"),
multi=False,
description="Resource manager for which to configure SCR.",
)
@@ -169,32 +155,27 @@ class Scr(CMakePackage):
description="Asynchronous data transfer API to use with SCR.",
)
- variant("bbapi", default=True, when="@3.0rc2:", description="Enable IBM BBAPI support")
+ variant("pthreads", default=True, when="@3:", description="Enable Pthread support")
+ depends_on("axl+pthreads", when="+pthreads")
+
+ variant("bbapi", default=False, when="@3:", description="Enable IBM BBAPI support")
depends_on("axl+bbapi", when="+bbapi")
depends_on("axl~bbapi", when="~bbapi")
variant(
"bbapi_fallback",
default=False,
- when="@3:",
+ when="@3: +bbapi",
description="Using BBAPI, if source or destination don't support \
file extents then fallback to pthreads",
)
- depends_on("axl+bbapi_fallback", when="+bbapi_fallback")
- variant(
- "bbapi_fallback",
- default=False,
- when="@3.0rc2: +bbapi",
- description="Using BBAPI, if source or destination don't support \
- file extents then fallback to pthreads",
- )
- depends_on("axl+bbapi+bbapi_fallback", when="@3.0rc2: +bbapi_fallback")
+ depends_on("axl+bbapi+bbapi_fallback", when="@3: +bbapi_fallback")
- variant("dw", default=False, when="@3.0rc2:", description="Enable Cray DataWarp support")
+ variant("dw", default=False, when="@3:", description="Enable Cray DataWarp support")
depends_on("axl+dw", when="+dw")
depends_on("axl~dw", when="~dw")
- variant("examples", default=True, when="@3.0rc2:", description="Build SCR example programs")
+ variant("examples", default=True, when="@3:", description="Build SCR example programs")
variant(
"file_lock",
@@ -213,7 +194,7 @@ class Scr(CMakePackage):
# capturing SCR and syslog messages in a database')
# depends_on('mysql', when='+mysql')
- variant("shared", default=True, when="@3.0rc2:", description="Build with shared libraries")
+ variant("shared", default=True, when="@3:", description="Build with shared libraries")
depends_on("libyogrt+static", when="~shared")
for comp in cmpnts:
depends_on(comp + "+shared", when="+shared")
@@ -223,7 +204,7 @@ class Scr(CMakePackage):
# TODO: Expose `tests` and `resource_manager` variants in components and
# then propogate their setting through components.
- variant("tests", default=True, when="@3.0rc2:", description="Build with CTest included")
+ variant("tests", default=True, when="@3:", description="Build with CTest included")
# The default cache and control directories should be placed in tmpfs if available.
# On Linux, /dev/shm is a common tmpfs location. Other platforms, like macOS,
@@ -259,7 +240,17 @@ class Scr(CMakePackage):
spec = self.spec
args = []
+ args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
args.append(self.define_from_variant("ENABLE_FORTRAN", "fortran"))
+ args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi"))
+ args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw"))
+ args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples"))
+ args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt"))
+ # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql'))
+ args.append(self.define_from_variant("ENABLE_PDSH", "pdsh"))
+ args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads"))
+ args.append(self.define_from_variant("ENABLE_TESTS", "tests"))
+ args.append(self.define_from_variant("SCR_ASYNC_API", "async_api"))
args.append(self.define_from_variant("SCR_FILE_LOCK", "file_lock"))
args.append(self.define_from_variant("SCR_CACHE_BASE", "cache_base"))
args.append(self.define_from_variant("SCR_CNTL_BASE", "cntl_base"))
@@ -281,28 +272,15 @@ class Scr(CMakePackage):
cmpnts = ["axl", "dtcmp", "er", "kvtree", "rankstr", "redset", "shuffile", "spath"]
for comp in cmpnts:
args.append(self.define("WITH_" + comp.upper() + "_PREFIX", spec[comp].prefix))
- else:
- # dtcmp optional before this point
- if "+dtcmp" in spec:
- args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix))
-
- # Only used prior to version 3
- args.append(self.define_from_variant("SCR_ASYNC_API", "async_api"))
-
- if spec.satisfies("@3.0rc2:"):
- args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi"))
- args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw"))
- args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples"))
- args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt"))
- # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql'))
- args.append(self.define_from_variant("ENABLE_PDSH", "pdsh"))
- args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
- args.append(self.define_from_variant("ENABLE_TESTS", "tests"))
# PDSH optional from this point on
if "+pdsh" in spec:
args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix))
else:
+ # dtcmp optional before this point
+ if "+dtcmp" in spec:
+ args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix))
+
# PDSH required before this point
args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix))
diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py
index 116254b1fa..eab7201a42 100644
--- a/var/spack/repos/builtin/packages/shuffile/package.py
+++ b/var/spack/repos/builtin/packages/shuffile/package.py
@@ -19,6 +19,7 @@ class Shuffile(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.4.0", sha256="fc7116d8eaa1ab79480e6e3f04064750e517d2a8aeccbff90c73a2590f726378")
version("0.3.0", sha256="3463ad4a23fd31aa9a3426346ada04399fb9369dd1f40d22df9f19f9c0c1f8ae")
version("0.2.0", sha256="467ffef72214c109b69f09d03e42be5e9254f13751b09c71168c14fa99117521")
version("0.1.0", sha256="9e730cc8b7937517a9cffb08c031d9f5772306341c49d17b87b7f349d55a6d5e")
diff --git a/var/spack/repos/builtin/packages/spath/package.py b/var/spack/repos/builtin/packages/spath/package.py
index 037dfff2bc..c25b74b58e 100644
--- a/var/spack/repos/builtin/packages/spath/package.py
+++ b/var/spack/repos/builtin/packages/spath/package.py
@@ -19,6 +19,7 @@ class Spath(CMakePackage):
license("MIT")
version("main", branch="main")
+ version("0.4.0", sha256="469c9d36f9244826c6ec264a779eed870a772f467d6964030d336e509d3c9374")
version("0.3.0", sha256="cb155a31cebde8b7bf397123de3be290fd99d3863509b4ba9b0252caba660082")
version("0.2.0", sha256="2de8a25547b53ef064664d79b543141bc3020219f40ff0e1076f676e13a9e77a")
version("0.1.0", sha256="2cfc635b2384d3f92973c7aea173dabe47da112d308f5098e6636e4b2f4a704c")