From 28215b754e19e2544b34abd0ab7fdbee8208960b Mon Sep 17 00:00:00 2001
From: Jakob Kaiser <jakob.kaiser@kip.uni-heidelberg.de>
Date: Wed, 27 Nov 2024 12:13:09 +0000
Subject: [PATCH 01/14] fix: install instructions in README

- adjust git clone command to clone correct spack version
- remove creation of enviroement (already present due to `spack.yaml`)
- provide a example for `SYSTEMNAME`
---
 README.md | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index 7f141bc3..6f01c63e 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ git clone --branch {branch-name} https://gitlab.ebrains.eu/ri/tech-hub/platform/
 
 Clone Spack. We currently use version v0.21.1:
 ```
-git clone --depth 1 -c advice.detachedHead=false -c feature.manyFiles=true --branch v0.20.0 https://github.com/spack/spack
+git clone --depth 1 -c advice.detachedHead=false -c feature.manyFiles=true --branch v0.21.1 https://github.com/spack/spack
 ```
 
 Activate Spack:
@@ -53,12 +53,7 @@ Add the project repository to your Spack environment:
 spack repo add ebrains-spack-builds
 ```
 
-Create the environment:
-```
-spack env create -d ebrains-spack-builds/
-```
-
-Define your site-specific configurations:
+Define your site-specific configurations, e.g. choose `ebrainslab`:
 ```
 export SYSTEMNAME=<your-system-name>
 mkdir ebrains-spack-builds/site-config/$SYSTEMNAME
-- 
GitLab


From 1821de84aa9ab2200638185327b6ee3b235433fe Mon Sep 17 00:00:00 2001
From: Jakob Kaiser <jakob.kaiser@kip.uni-heidelberg.de>
Date: Wed, 27 Nov 2024 12:33:29 +0000
Subject: [PATCH 02/14] fix: do not suggest anything for SYSTEMNAME

new SYSTEMNAME is chosen on purpose.
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 6f01c63e..1f567131 100644
--- a/README.md
+++ b/README.md
@@ -53,7 +53,7 @@ Add the project repository to your Spack environment:
 spack repo add ebrains-spack-builds
 ```
 
-Define your site-specific configurations, e.g. choose `ebrainslab`:
+Define your site-specific configurations:
 ```
 export SYSTEMNAME=<your-system-name>
 mkdir ebrains-spack-builds/site-config/$SYSTEMNAME
-- 
GitLab


From 4dd694bd2352f458fff934a431284ef6f9130b07 Mon Sep 17 00:00:00 2001
From: "C.A.P. Linssen" <charl@turingbirds.com>
Date: Mon, 25 Nov 2024 16:11:46 +0100
Subject: [PATCH 03/14] feat(py-nestml): add version 8.0.0-rc3

---
 packages/py-nestml/package.py | 3 ++-
 spack.yaml                    | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/packages/py-nestml/package.py b/packages/py-nestml/package.py
index 964295a4..85f3b931 100644
--- a/packages/py-nestml/package.py
+++ b/packages/py-nestml/package.py
@@ -13,11 +13,12 @@ class PyNestml(PythonPackage):
     """
 
     homepage = 'https://nestml.readthedocs.org/'
-    url      = 'https://pypi.org/packages/py3/N/NESTML/NESTML-7.0.2-py3-none-any.whl'
+    url      = 'https://pypi.org/packages/py3/N/NESTML/NESTML-8.0.0rc3-py3-none-any.whl'
     git      = 'https://github.com/nest/nestml/'
 
     maintainers = ['clinssen', 'pnbabu']
 
+    version('8.0.0rc3', sha256='f09d5b980d97eb8295571ff0b697cc236ed938d2e1e0375d7d8b90045ab7af10', expand=False)
     version('7.0.2', sha256='3611239ff8436bf1c74b878562564007285c6da5df0317c6cd52f65e6bcd3f8b', expand=False)
     version('7.0.1', sha256='38392bdd06c5be5af65050153f34fb78dee6032158b268b83599bd70aab5c030', expand=False)
     version('7.0.0', sha256='4e271048b4a9ad2c161dda98d3ee25e143537649a264d521deb0ff5543020d73', expand=False)
diff --git a/spack.yaml b/spack.yaml
index 4af3f816..ecfdadbf 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -36,7 +36,7 @@ spack:
     - py-libneuroml@0.4.1
     - py-libsonata@0.1.23
     - py-neo@0.13.3
-    - py-nestml@7.0.2
+    - py-nestml@8.0.0rc3
     - py-netpyne@1.0.6
     - py-neurom@3.2.2
     - py-neuror@1.6.4
-- 
GitLab


From 1ce3f284121e823dc0774e5dd96360dbc10eb372 Mon Sep 17 00:00:00 2001
From: Renan Oliveira Shimoura <r.shimoura@fz-juelich.de>
Date: Thu, 28 Nov 2024 12:31:31 +0100
Subject: [PATCH 04/14] feat: add wf-human-multi-area-model

---
 packages/py-nnmt/package.py                   | 34 ++++++++++
 packages/wf-human-multi-area-model/package.py | 68 +++++++++++++++++++
 spack.yaml                                    |  1 +
 3 files changed, 103 insertions(+)
 create mode 100644 packages/py-nnmt/package.py
 create mode 100644 packages/wf-human-multi-area-model/package.py

diff --git a/packages/py-nnmt/package.py b/packages/py-nnmt/package.py
new file mode 100644
index 00000000..7b722a7f
--- /dev/null
+++ b/packages/py-nnmt/package.py
@@ -0,0 +1,34 @@
+# 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)
+
+from spack import *
+
+
+class PyNnmt(PythonPackage):
+    """NNMT is an open-source, community centered Python package for collecting 
+    reusable implementations of analytical methods for neuronal network model analysis 
+    based on mean-field theory."""
+
+    homepage = "https://nnmt.readthedocs.io/en/latest/index.html"
+    pypi = "nnmt/nnmt-1.3.0.tar.gz"
+
+    maintainers = ["rshimoura", "terhorstd"]
+
+    version("1.3.0", sha256="0cb4f7c58e08520e383506b5b15fb0a9552801adc03fd1006b9e3dd17b1b636d")
+
+    depends_on("py-setuptools@23.1.0:", type="build")
+    depends_on("py-numpy@1.8:", type=("build", "run"))
+    depends_on("py-scipy@0.14:", type=("build", "run"))
+    depends_on("py-cython@0.20:", type=("build", "run"))
+    depends_on("py-h5py@2.5:", type=("build", "run"))
+    depends_on("py-matplotlib@2.0:", type=("build", "run"))
+    depends_on("py-pint", type=("build", "run"))
+    depends_on("py-pyyaml", type=("build", "run"))
+    depends_on("py-requests", type=("build", "run"))
+    depends_on("py-mpmath", type=("build", "run"))
+    depends_on("py-decorator", type=("build", "run"))
+    depends_on("py-pytest@5.4:", type=("build", "run"))
+    depends_on("py-pytest-mock@3.1:", type=("build", "run"))
+    depends_on("python@3:", type=("build", "run"))
diff --git a/packages/wf-human-multi-area-model/package.py b/packages/wf-human-multi-area-model/package.py
new file mode 100644
index 00000000..7cafb2c1
--- /dev/null
+++ b/packages/wf-human-multi-area-model/package.py
@@ -0,0 +1,68 @@
+# 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)
+
+from spack import *
+
+
+class WfHumanMultiAreaModel(Package):
+    """Meta-package to collect all dependencies of the Human Multi-Area-Model."""
+
+    git = "https://github.com/INM-6/human-multi-area-model"
+    maintainer = ["rshimoura", "terhorstd"]
+
+    version("2.0.1",  tag="v2.0.1")
+    version("master",  branch="master")
+
+    depends_on("nest@3.8:", type=("run", "test"))
+    depends_on("py-joblib@1.2.0:", type=("run", "test"))
+    depends_on("py-xlrd@2.0.1:", type=("run", "test"))
+    depends_on("py-matplotlib@3.7.3:", type=("run", "test"))
+    depends_on("py-pyyaml@6.0:", type=("run", "test"))
+    depends_on("py-numpy@1.23.5:", type=("run", "test"))
+    depends_on("py-seaborn@0.12.2:", type=("run", "test"))
+    depends_on("python@3.8:", type=("run", "test"))
+    depends_on("py-pandas@2.0.3:", type=("run", "test"))
+    depends_on("py-scipy@1.10.1:", type=("run", "test"))
+    depends_on("py-nnmt@1.3.0:", type=("run", "test"))
+    depends_on("py-dicthash@0.0.1:", type=("run", "test"))
+    depends_on("py-networkx@3.1:", type=("run", "test"))
+    depends_on("py-notebook@6.5.4:", type=("run", "test"))
+    depends_on("py-future@0.18.2:", type=("run", "test"))
+
+    def install(self, spec, prefix):
+        install_tree(".", join_path(prefix, "notebooks"))
+
+    def _nbconvert(self, nb, nb_out):
+        jupyter = Executable("jupyter")
+        args = [
+            "nbconvert",
+            "--ExecutePreprocessor.kernel_name=python3",
+            "--execute",
+            "--to",
+            "notebook",
+            nb,
+            "--output",
+            nb_out
+        ]
+        try:
+            # execute notebook and save
+            jupyter(*args)
+        except Exception as e:
+            # if the above fails, re-run notebook to produce output with error
+            jupyter(*(args+["--allow-errors"]))
+            raise
+
+    def _run_notebooks(self, output_dir):
+        mkdirp(output_dir)
+        self._nbconvert(join_path(self.prefix, "notebooks", "humam_tutorial.ipynb"), join_path(output_dir, "humam_tutorial.ipynb"))
+
+    @run_after("install")
+    @on_package_attributes(run_tests=True)
+    def installcheck(self):
+        self._run_notebooks(join_path(self.stage.path, ".install_time_tests"))
+        copy_tree(join_path(self.stage.path, ".install_time_tests"), join_path(self.prefix, '.build'))
+
+    def test_notebook(self):
+        self._run_notebooks(join_path(self.test_suite.stage, self.spec.format("out-{name}-{version}-{hash:7}")))
diff --git a/spack.yaml b/spack.yaml
index ecfdadbf..25b7a776 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -66,6 +66,7 @@ spack:
     - wf-brainscales2-demos@9.0-a7
     - wf-protein-association-rates@0.1
     - wf-multi-area-model@1.2.0
+    - wf-human-multi-area-model@2.0.1
     - wf-uq-akar4@0.1
     - wf-custom-python@0.1
     #- py-cerebstats
-- 
GitLab


From efa34d710d101c3565c4d232600760e9eeebc0f2 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Thu, 28 Nov 2024 13:33:18 +0100
Subject: [PATCH 05/14] fix: revert Spack commit causing hanging
 concretizations

---
 install_spack_env.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install_spack_env.sh b/install_spack_env.sh
index 1a120459..2a9dbf9b 100644
--- a/install_spack_env.sh
+++ b/install_spack_env.sh
@@ -15,7 +15,7 @@ EBRAINS_SPACK_ENV=$5  # name of EBRAINS Spack environment to be created/updated
 UPSTREAM_INSTANCE=$6  # path to Spack instance to use as upstream (optional)
 
 SPACK_REPO=https://gitlab.ebrains.eu/ri/tech-hub/platform/esd/spack.git
-SPACK_VERSION_EBRAINS=${SPACK_VERSION}_ebrains24.04
+SPACK_VERSION_EBRAINS=${SPACK_VERSION}_ebrains24.11
 
 # specify location of .spack dir (by default in ~)
 # this is where cache and configuration settings are stored
-- 
GitLab


From 1cc934985431d30c2f0934a10fa2bf14930fb367 Mon Sep 17 00:00:00 2001
From: Andrew Rowley <Andrew.Rowley@manchester.ac.uk>
Date: Thu, 28 Nov 2024 13:23:15 +0000
Subject: [PATCH 06/14] feat(py-spynnaker): add version 7.3.0

---
 packages/py-spalloc/package.py             |  9 ++++++--
 packages/py-spinnaker-pacman/package.py    | 13 ++++++++---
 packages/py-spinnfrontendcommon/package.py | 26 ++++++++++++++++------
 packages/py-spinnmachine/package.py        |  8 +++++--
 packages/py-spinnman/package.py            |  9 ++++++--
 packages/py-spinnutilities/package.py      |  5 ++++-
 packages/py-spynnaker/package.py           |  7 ++++--
 spack.yaml                                 |  2 +-
 8 files changed, 59 insertions(+), 20 deletions(-)

diff --git a/packages/py-spalloc/package.py b/packages/py-spalloc/package.py
index d915721c..e03a3937 100644
--- a/packages/py-spalloc/package.py
+++ b/packages/py-spalloc/package.py
@@ -13,8 +13,13 @@ class PySpalloc(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/spalloc"
     pypi = "spalloc/spalloc-1!7.0.0.tar.gz"
 
+    version('7.3.0', sha256='5664546187a57c87743c8bf1db812a2ab1c14db15fb0f44ee64f5f72d1cdedac')
     version('7.0.0', sha256='e141a0e661efd6fd634f3793752d8d6deef56ee37a21fa8e3d7208f4edd86f51')
 
-    depends_on("python@3.7:", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
+    depends_on("py-spinnutilities@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnutilities@7.0.0", type=("build", "run"), when="@7.0.0")
+
     depends_on("py-jsonschema", type=("build", "run"))
-    depends_on("py-spinnutilities@7.0.0", type=("build", "run"))
diff --git a/packages/py-spinnaker-pacman/package.py b/packages/py-spinnaker-pacman/package.py
index 632db170..b1b2f27f 100644
--- a/packages/py-spinnaker-pacman/package.py
+++ b/packages/py-spinnaker-pacman/package.py
@@ -13,9 +13,16 @@ class PySpinnakerPacman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/PACMAN"
     pypi = "SpiNNaker_PACMAN/SpiNNaker_PACMAN-1!7.0.0.tar.gz"
 
+    version("7.3.0", sha256="ef597e14aac9877c676181082e11e77ea3d4b0dfb5977b0d3ce78020229fb055")
     version("7.0.0", sha256="d9e7e620d02fda88f57a8cf157cc9421b5606d453230847f3d35985eae4c074d")
 
-    depends_on("python@3.7:", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
+    depends_on("py-spinnutilities@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnmachine@7.3.0", type=("build", "run"), when="@7.3.0")
+
+    depends_on("py-spinnutilities@7.0.0", type=("build", "run"), when="@7.0.0")
+    depends_on("py-spinnmachine@7.0.0", type=("build", "run"), when="@7.0.0")
+
     depends_on("py-jsonschema", type=("build", "run"))
-    depends_on("py-spinnutilities@7.0.0", type=("build", "run"))
-    depends_on("py-spinnmachine@7.0.0", type=("build", "run"))
diff --git a/packages/py-spinnfrontendcommon/package.py b/packages/py-spinnfrontendcommon/package.py
index be654d01..845ea008 100644
--- a/packages/py-spinnfrontendcommon/package.py
+++ b/packages/py-spinnfrontendcommon/package.py
@@ -6,8 +6,11 @@
 from spack.package import *
 
 
-_JAR_URL = "https://github.com/SpiNNakerManchester/JavaSpiNNaker/releases/download/7.0.0/spinnaker-exe.jar"
-_JAR_SHA256 = "2d909c7fb3aa15886acf26febb1bd48e25db0c347a231944aa6a5f86107bb55b"
+_JAR_URL_7_3_0 = "https://github.com/SpiNNakerManchester/JavaSpiNNaker/releases/download/7.3.0/spinnaker-exe.jar"
+_JAR_SHA256_7_3_0 = "8fea399e835d053eb9b9b8b6f4752475d19cc3995389ca544f3ad1758007edbf"
+
+_JAR_URL_7_0_0 = "https://github.com/SpiNNakerManchester/JavaSpiNNaker/releases/download/7.0.0/spinnaker-exe.jar"
+_JAR_SHA256_7_0_0 = "2d909c7fb3aa15886acf26febb1bd48e25db0c347a231944aa6a5f86107bb55b"
 
 class PySpinnfrontendcommon(PythonPackage):
     """This package provides utilities for specifying binary data
@@ -16,18 +19,27 @@ class PySpinnfrontendcommon(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNFrontEndCommon"
     pypi = "SpiNNFrontEndCommon/SpiNNFrontEndCommon-1!7.0.0.tar.gz"
 
+    version("7.3.0", sha256="c3aea0160525c4f08bc74244f219a9664a06aa70876cfb68944c7d6378daf161")
     version("7.0.0", sha256="07539734ed0105472d06d655bbd92e149ef44c77c388fcca28857558faa6dd10")
 
-    depends_on("python@3.7:", type=("build", "run"))
-    depends_on("py-spinnman@7.0.0", type=("build", "run"))
-    depends_on("py-spinnaker-pacman@7.0.0", type=("build", "run"))
-    depends_on("py-spalloc@7.0.0", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
+    depends_on("py-spinnman@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnaker-pacman@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spalloc@7.3.0", type=("build", "run"), when="@7.3.0")
+
+    depends_on("py-spinnman@7.0.0", type=("build", "run"), when="@7.0.0")
+    depends_on("py-spinnaker-pacman@7.0.0", type=("build", "run"), when="@7.0.0")
+    depends_on("py-spalloc@7.0.0", type=("build", "run"), when="@7.0.0")
+
     depends_on("py-scipy@0.16.0:", type=("build", "run"))
     depends_on("py-ebrains-drive@0.5.1:", type=("build", "run"))
 
     depends_on("java@11:")
 
-    resource(name="spinnaker-exe.jar", url=_JAR_URL, checksum=_JAR_SHA256, expand=False, placement="resource_root/JavaSpiNNaker/SpiNNaker-front-end/target")
+    resource(name="spinnaker-exe.jar", url=_JAR_URL_7_0_0, checksum=_JAR_SHA256_7_0_0, expand=False, placement="resource_root/JavaSpiNNaker/SpiNNaker-front-end/target", when="@7.0.0")
+    resource(name="spinnaker-exe.jar", url=_JAR_URL_7_3_0, checksum=_JAR_SHA256_7_3_0, expand=False, placement="resource_root/JavaSpiNNaker/SpiNNaker-front-end/target", when="@7.3.0")
 
     def install(self, spec, prefix):
         super(PySpinnfrontendcommon, self).install(spec, prefix)
diff --git a/packages/py-spinnmachine/package.py b/packages/py-spinnmachine/package.py
index 1c5c5892..64f151ba 100644
--- a/packages/py-spinnmachine/package.py
+++ b/packages/py-spinnmachine/package.py
@@ -13,7 +13,11 @@ class PySpinnmachine(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMachine"
     pypi = "SpiNNMachine/SpiNNMachine-1!7.0.0.tar.gz"
 
+    version("7.3.0", sha256="7c23def7deac54d56e23f4679c2317ddd053e6f6632c81ddf497fe021f37960c")
     version("7.0.0", sha256="5da374fd9208287799fbc324136fe5954dd1b370792ea81ea10d4537643272ad")
 
-    depends_on("python@3.7:", type=("build", "run"))
-    depends_on("py-spinnutilities@7.0.0", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
+    depends_on("py-spinnutilities@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnutilities@7.0.0", type=("build", "run"), when="@7.0.0")
diff --git a/packages/py-spinnman/package.py b/packages/py-spinnman/package.py
index 1ff4a268..0458d2b6 100644
--- a/packages/py-spinnman/package.py
+++ b/packages/py-spinnman/package.py
@@ -13,8 +13,13 @@ class PySpinnman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMan"
     pypi = "SpiNNMan/SpiNNMan-1!7.0.0.tar.gz"
 
+    version("7.3.0", sha256="8b4924ee31cae35845164da8d2da69391d306246772c706fdcd935e4ce8535db")
     version("7.0.0", sha256="61bc8934e4ad6798b48c02ff6c8a3ef5c8e080a5ee2f4b88fc9cd587ed1b1ae6")
 
-    depends_on("python@3.7:", type=("build", "run"))
-    depends_on("py-spinnmachine@7.0.0", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
+    depends_on("py-spinnmachine@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnmachine@7.0.0", type=("build", "run"), when="@7.0.0")
+
     depends_on("py-websocket-client", type=("build", "run"))
diff --git a/packages/py-spinnutilities/package.py b/packages/py-spinnutilities/package.py
index 6dfa0ca8..19e3fe2c 100644
--- a/packages/py-spinnutilities/package.py
+++ b/packages/py-spinnutilities/package.py
@@ -14,9 +14,12 @@ class PySpinnutilities(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNUtils"
     pypi = "SpiNNUtilities/SpiNNUtilities-1!7.0.0.tar.gz"
 
+    version("7.3.0", sha256="5343004fd2aeec0124267e91c2649356b20bf8f2a5d33c9d7cd5ea6cce7dd86b")
     version("7.0.0", sha256="662855395ec367008735047a66a7ca75d1e5070e309ca3aa6ba3a843fb722841")
 
-    depends_on("python@3.7:", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+
     depends_on("py-appdirs", type=("build", "run"))
     depends_on("py-numpy", type=("build", "run"))
     depends_on("py-pyyaml", type=("build", "run"))
diff --git a/packages/py-spynnaker/package.py b/packages/py-spynnaker/package.py
index 6f775aa1..126adc85 100644
--- a/packages/py-spynnaker/package.py
+++ b/packages/py-spynnaker/package.py
@@ -15,10 +15,13 @@ class PySpynnaker(PythonPackage):
 
     maintainers = ["rowley"]
 
+    version("7.3.0", sha256="f052a50b8a31b526f0249b7aa1f7fe77c2f34fc35838600bef17c43e9d3bf9a9")
     version("7.0.0", sha256="caeaa624e3fdbca3b938c9be7ea4c78a51a037e659389fb01952822f069664db")
 
-    depends_on("python@3.7:", type=("build", "run"))
-    depends_on("py-spinnfrontendcommon@7.0.0", type=("build", "run"))
+    depends_on("python@3.8:", type=("build", "run"), when="@7.3.0:")
+    depends_on("python@3.7:", type=("build", "run"), when="@7.0.0:")
+    depends_on("py-spinnfrontendcommon@7.3.0", type=("build", "run"), when="@7.3.0")
+    depends_on("py-spinnfrontendcommon@7.0.0", type=("build", "run"), when="@7.0.0")
     depends_on("py-matplotlib", type=("build", "run"))
     depends_on("py-quantities", type=("build", "run"))
     depends_on("py-pynn", type=("build", "run"))
diff --git a/spack.yaml b/spack.yaml
index 25b7a776..c041ec25 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -46,7 +46,7 @@ spack:
     - py-quantities@0.16.0
     - py-siibra@1.0a9
     - py-snudda@2.0.1
-    - py-spynnaker@7.0.0
+    - py-spynnaker@7.3.0
     - py-tvb-framework@2.9
     - py-tvb-contrib@2.9.1
     - py-tvb-library@2.9.1
-- 
GitLab


From 4c7eb07c33c8181a64201a16312a78c885630be2 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sat, 30 Nov 2024 20:57:43 +0100
Subject: [PATCH 07/14] fix(py-spynnaker): fix URL generation

spack does not support ! when parsing version in URL
---
 packages/py-spalloc/package.py             | 4 ++++
 packages/py-spinnaker-pacman/package.py    | 5 +++++
 packages/py-spinnfrontendcommon/package.py | 5 +++++
 packages/py-spinnmachine/package.py        | 5 +++++
 packages/py-spinnman/package.py            | 5 +++++
 packages/py-spinnutilities/package.py      | 5 +++++
 packages/py-spynnaker/package.py           | 5 +++++
 7 files changed, 34 insertions(+)

diff --git a/packages/py-spalloc/package.py b/packages/py-spalloc/package.py
index e03a3937..69ee89a2 100644
--- a/packages/py-spalloc/package.py
+++ b/packages/py-spalloc/package.py
@@ -13,6 +13,10 @@ class PySpalloc(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/spalloc"
     pypi = "spalloc/spalloc-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        url = "https://pypi.org/packages/source/s/spalloc/spalloc-1!{}.tar.gz"
+        return url.format(version)
+
     version('7.3.0', sha256='5664546187a57c87743c8bf1db812a2ab1c14db15fb0f44ee64f5f72d1cdedac')
     version('7.0.0', sha256='e141a0e661efd6fd634f3793752d8d6deef56ee37a21fa8e3d7208f4edd86f51')
 
diff --git a/packages/py-spinnaker-pacman/package.py b/packages/py-spinnaker-pacman/package.py
index b1b2f27f..47ead355 100644
--- a/packages/py-spinnaker-pacman/package.py
+++ b/packages/py-spinnaker-pacman/package.py
@@ -13,6 +13,11 @@ class PySpinnakerPacman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/PACMAN"
     pypi = "SpiNNaker_PACMAN/SpiNNaker_PACMAN-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnaker_pacman" if version >= Version("7.2.0") else "SpiNNaker_PACMAN"
+        url = "https://pypi.org/packages/source/s/SpiNNaker_PACMAN/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="ef597e14aac9877c676181082e11e77ea3d4b0dfb5977b0d3ce78020229fb055")
     version("7.0.0", sha256="d9e7e620d02fda88f57a8cf157cc9421b5606d453230847f3d35985eae4c074d")
 
diff --git a/packages/py-spinnfrontendcommon/package.py b/packages/py-spinnfrontendcommon/package.py
index 845ea008..dd9be1a3 100644
--- a/packages/py-spinnfrontendcommon/package.py
+++ b/packages/py-spinnfrontendcommon/package.py
@@ -19,6 +19,11 @@ class PySpinnfrontendcommon(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNFrontEndCommon"
     pypi = "SpiNNFrontEndCommon/SpiNNFrontEndCommon-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnfrontendcommon" if version >= Version("7.2.0") else "SpiNNFrontEndCommon"
+        url = "https://pypi.org/packages/source/s/SpiNNFrontEndCommon/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="c3aea0160525c4f08bc74244f219a9664a06aa70876cfb68944c7d6378daf161")
     version("7.0.0", sha256="07539734ed0105472d06d655bbd92e149ef44c77c388fcca28857558faa6dd10")
 
diff --git a/packages/py-spinnmachine/package.py b/packages/py-spinnmachine/package.py
index 64f151ba..5fcd3b90 100644
--- a/packages/py-spinnmachine/package.py
+++ b/packages/py-spinnmachine/package.py
@@ -13,6 +13,11 @@ class PySpinnmachine(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMachine"
     pypi = "SpiNNMachine/SpiNNMachine-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnmachine" if version >= Version("7.2.0") else "SpiNNMachine"
+        url = "https://pypi.org/packages/source/s/SpiNNMachine/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="7c23def7deac54d56e23f4679c2317ddd053e6f6632c81ddf497fe021f37960c")
     version("7.0.0", sha256="5da374fd9208287799fbc324136fe5954dd1b370792ea81ea10d4537643272ad")
 
diff --git a/packages/py-spinnman/package.py b/packages/py-spinnman/package.py
index 0458d2b6..f89d9ad7 100644
--- a/packages/py-spinnman/package.py
+++ b/packages/py-spinnman/package.py
@@ -13,6 +13,11 @@ class PySpinnman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMan"
     pypi = "SpiNNMan/SpiNNMan-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnman" if version >= Version("7.2.0") else "SpiNNMan"
+        url = "https://pypi.org/packages/source/s/SpiNNMan/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="8b4924ee31cae35845164da8d2da69391d306246772c706fdcd935e4ce8535db")
     version("7.0.0", sha256="61bc8934e4ad6798b48c02ff6c8a3ef5c8e080a5ee2f4b88fc9cd587ed1b1ae6")
 
diff --git a/packages/py-spinnutilities/package.py b/packages/py-spinnutilities/package.py
index 19e3fe2c..ede3fe0d 100644
--- a/packages/py-spinnutilities/package.py
+++ b/packages/py-spinnutilities/package.py
@@ -14,6 +14,11 @@ class PySpinnutilities(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNUtils"
     pypi = "SpiNNUtilities/SpiNNUtilities-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnutilities" if version >= Version("7.2.0") else "SpiNNUtilities"
+        url = "https://pypi.org/packages/source/s/SpiNNUtilities/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="5343004fd2aeec0124267e91c2649356b20bf8f2a5d33c9d7cd5ea6cce7dd86b")
     version("7.0.0", sha256="662855395ec367008735047a66a7ca75d1e5070e309ca3aa6ba3a843fb722841")
 
diff --git a/packages/py-spynnaker/package.py b/packages/py-spynnaker/package.py
index 126adc85..0e200cb3 100644
--- a/packages/py-spynnaker/package.py
+++ b/packages/py-spynnaker/package.py
@@ -15,6 +15,11 @@ class PySpynnaker(PythonPackage):
 
     maintainers = ["rowley"]
 
+    def url_for_version(self, version):
+        name = "spynnaker" if version >= Version("7.2.0") else "sPyNNaker"
+        url = "https://pypi.org/packages/source/s/sPyNNaker/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="f052a50b8a31b526f0249b7aa1f7fe77c2f34fc35838600bef17c43e9d3bf9a9")
     version("7.0.0", sha256="caeaa624e3fdbca3b938c9be7ea4c78a51a037e659389fb01952822f069664db")
 
-- 
GitLab


From 4592b69d02074c936e6d286829ca1c719a9e3aaf Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 10 Dec 2024 20:18:15 +0100
Subject: [PATCH 08/14] feat: replace oc with kubectl

---
 .gitlab-ci.yml | 31 ++++++++++++-------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1ae570a4..066ce6db 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,27 +7,25 @@ variables:
   SPACK_VERSION: v0.21.1
   SPACK_PATH_GITLAB: /mnt/spack_v0.21.1
   SYSTEMNAME: ebrainslab
-  OC_PROJECT: jupyterhub
 
 # ===================================================================
 # LAB DEPLOYMENTS
 # ===================================================================
 
-# start an OpenShift Job that will build the Spack environment
+# start a k8s Job that will build the Spack environment
 .deploy-build-environment:
   stage: build
   script:
-    # login and select project in openshift
-    - oc login "$OPENSHIFT_SERVER" --token="$OPENSHIFT_TOKEN"
-    - oc project $OC_PROJECT
+    # use the site-specific kubectl context
+    - kubectl config use-context $KUBE_CONTEXT
     # create job description file
     - chmod a+x create_job.sh
     - ./create_job.sh $CI_PIPELINE_ID $BUILD_ENV_DOCKER_IMAGE $INSTALLATION_ROOT $SPACK_VERSION $SPACK_ENV $CI_COMMIT_BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT
     - cat simplejob.yml
     # start the deploy job
-    - oc create -f simplejob.yml
+    - kubectl create -f simplejob.yml
     # wait for job to finish to get the logs
-    - while true; do sleep 300; x=$(oc get pods | grep simplejob${CI_PIPELINE_ID} | awk '{ print $3}'); if [ $x != "Running" ]; then break; fi; done 
+    - while true; do sleep 300; x=$(kubectl get pods | grep simplejob${CI_PIPELINE_ID} | awk '{ print $3}'); if [ $x != "Running" ]; then break; fi; done 
     # # copy logs of failed packages locally, to keep as job artifacts
     # - oc rsync $(oc get pods -l job-name=simplejob${CI_PIPELINE_ID} -o name):/tmp ./ --include="*/" --include="spack/spack-stage/*/*.txt" --exclude="*"
     # - mv tmp/spack/spack-stage spack_logs
@@ -36,10 +34,10 @@ variables:
     # - oc rsync $(oc get pods -l job-name=simplejob${CI_PIPELINE_ID} -o name):$LAB_KERNEL_PATH ./
     # - mv .$LAB_KERNEL_PATH kernel_specs
     # if spack install has failed, fail the pipeline
-    - oc logs jobs/simplejob${CI_PIPELINE_ID} | tee log.txt
+    - kubectl logs jobs/simplejob${CI_PIPELINE_ID} | tee log.txt
     - if [ $(cat log.txt | grep "No module available for package" | wc -l) -gt 0 ]; then exit 1; fi;
-    # delete the job from OpenShift as we have the logs here
-    - oc delete job simplejob${CI_PIPELINE_ID} || true
+    # delete the job, as we have the logs here
+    - kubectl delete job simplejob${CI_PIPELINE_ID} || true
   tags:
     - shell-runner
   # artifacts:
@@ -70,10 +68,8 @@ variables:
 .deploy-dev-server-cscs:
   extends: .deploy-dev-server
   variables:
-    OPENSHIFT_SERVER: $CSCS_OPENSHIFT_DEV_SERVER
-    OPENSHIFT_TOKEN: $CSCS_OPENSHIFT_DEV_TOKEN
+    KUBE_CONTEXT: cscs-dev
     BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
-    OC_PROJECT: jupyterhub-int
   resource_group: shared-NFS-mount-dev-cscs
   tags:             # this is just to ensure that the two jobs will run on different runners
     - read-write    # to avoid issues with common environment variables
@@ -83,8 +79,7 @@ variables:
 .deploy-prod-server-cscs:
   extends: .deploy-prod-server
   variables:
-    OPENSHIFT_SERVER: $CSCS_OPENSHIFT_PROD_SERVER
-    OPENSHIFT_TOKEN: $CSCS_OPENSHIFT_PROD_TOKEN
+    KUBE_CONTEXT: cscs-prod
     BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
   resource_group: shared-NFS-mount-prod-cscs
   tags:             # this is just to ensure that the two jobs will run on different runners
@@ -95,8 +90,7 @@ variables:
 .deploy-dev-server-cineca:
   extends: .deploy-dev-server
   variables:
-    OPENSHIFT_SERVER: $CINECA_K8S_DEV_SERVER
-    OPENSHIFT_TOKEN: $CINECA_K8S_DEV_TOKEN
+    KUBE_CONTEXT: cineca-int
   resource_group: shared-NFS-mount-dev-cineca
   tags:             # this is just to ensure that the two jobs will run on different runners
     - read-only     # to avoid issues with common environment variables
@@ -106,8 +100,7 @@ variables:
 .deploy-prod-server-jsc:
   extends: .deploy-prod-server
   variables:
-    OPENSHIFT_SERVER: $JSC_K8S_PROD_SERVER
-    OPENSHIFT_TOKEN: $JSC_K8S_PROD_TOKEN
+    KUBE_CONTEXT: jsc-prod
   resource_group: shared-NFS-mount-prod-jsc
   tags:             # this is just to ensure that the two jobs will run on different runners
     - read-only     # to avoid issues with common environment variables
-- 
GitLab


From 04f00603201f64c80d2f8fc287ae871f2433c7aa Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Fri, 13 Dec 2024 00:27:36 +0100
Subject: [PATCH 09/14] feat: use docker-runners for k8s build job submission

---
 .gitlab-ci.yml | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 066ce6db..29547d29 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,12 +15,17 @@ variables:
 # start a k8s Job that will build the Spack environment
 .deploy-build-environment:
   stage: build
+  tags:
+    - docker-runner
+    - read-only
+  image: alpine:3.21.0
+  before_script:
+    - apk add kubectl
   script:
     # use the site-specific kubectl context
     - kubectl config use-context $KUBE_CONTEXT
     # create job description file
-    - chmod a+x create_job.sh
-    - ./create_job.sh $CI_PIPELINE_ID $BUILD_ENV_DOCKER_IMAGE $INSTALLATION_ROOT $SPACK_VERSION $SPACK_ENV $CI_COMMIT_BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT
+    - sh create_job.sh $CI_PIPELINE_ID $BUILD_ENV_DOCKER_IMAGE $INSTALLATION_ROOT $SPACK_VERSION $SPACK_ENV $CI_COMMIT_BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT
     - cat simplejob.yml
     # start the deploy job
     - kubectl create -f simplejob.yml
@@ -38,8 +43,6 @@ variables:
     - if [ $(cat log.txt | grep "No module available for package" | wc -l) -gt 0 ]; then exit 1; fi;
     # delete the job, as we have the logs here
     - kubectl delete job simplejob${CI_PIPELINE_ID} || true
-  tags:
-    - shell-runner
   # artifacts:
   #   paths:
   #     - spack_logs
@@ -71,9 +74,6 @@ variables:
     KUBE_CONTEXT: cscs-dev
     BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
   resource_group: shared-NFS-mount-dev-cscs
-  tags:             # this is just to ensure that the two jobs will run on different runners
-    - read-write    # to avoid issues with common environment variables
-    - shell-runner
 
 # deploy to the prod lab environment at CSCS
 .deploy-prod-server-cscs:
@@ -82,9 +82,6 @@ variables:
     KUBE_CONTEXT: cscs-prod
     BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
   resource_group: shared-NFS-mount-prod-cscs
-  tags:             # this is just to ensure that the two jobs will run on different runners
-    - read-write    # to avoid issues with common environment variables
-    - shell-runner
 
 # deploy to the dev lab environment at CINECA
 .deploy-dev-server-cineca:
@@ -92,9 +89,6 @@ variables:
   variables:
     KUBE_CONTEXT: cineca-int
   resource_group: shared-NFS-mount-dev-cineca
-  tags:             # this is just to ensure that the two jobs will run on different runners
-    - read-only     # to avoid issues with common environment variables
-    - shell-runner
 
 # deploy to the prod lab environment at JSC
 .deploy-prod-server-jsc:
@@ -102,9 +96,6 @@ variables:
   variables:
     KUBE_CONTEXT: jsc-prod
   resource_group: shared-NFS-mount-prod-jsc
-  tags:             # this is just to ensure that the two jobs will run on different runners
-    - read-only     # to avoid issues with common environment variables
-    - shell-runner
 
 # -------------------------------------------------------------------
 # Release types: test, experimental and official releases
-- 
GitLab


From 7839168d2012467242d75d1196cbcc89657c43d3 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Fri, 13 Dec 2024 00:36:53 +0100
Subject: [PATCH 10/14] feat: add CINECA-prod to deployment targets and drop
 CSCS-dev

---
 .gitlab-ci.yml | 47 +++++++++++++++++++++++------------------------
 1 file changed, 23 insertions(+), 24 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 29547d29..5162ebdd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -67,13 +67,12 @@ variables:
     LAB_KERNEL_ROOT: /srv/jupyterlab_kernels/prod
     INSTALLATION_ROOT: /srv/main-spack-instance-2402
 
-# deploy to the dev lab environment at CSCS
-.deploy-dev-server-cscs:
+# deploy to the dev lab environment at CINECA
+.deploy-dev-server-cineca:
   extends: .deploy-dev-server
   variables:
-    KUBE_CONTEXT: cscs-dev
-    BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
-  resource_group: shared-NFS-mount-dev-cscs
+    KUBE_CONTEXT: cineca-int
+  resource_group: shared-NFS-mount-dev-cineca
 
 # deploy to the prod lab environment at CSCS
 .deploy-prod-server-cscs:
@@ -83,13 +82,6 @@ variables:
     BUILD_ENV_DOCKER_IMAGE: docker-registry.ebrains.eu/tc/ebrains-spack-build-env/okd:okd_23.06
   resource_group: shared-NFS-mount-prod-cscs
 
-# deploy to the dev lab environment at CINECA
-.deploy-dev-server-cineca:
-  extends: .deploy-dev-server
-  variables:
-    KUBE_CONTEXT: cineca-int
-  resource_group: shared-NFS-mount-dev-cineca
-
 # deploy to the prod lab environment at JSC
 .deploy-prod-server-jsc:
   extends: .deploy-prod-server
@@ -97,6 +89,13 @@ variables:
     KUBE_CONTEXT: jsc-prod
   resource_group: shared-NFS-mount-prod-jsc
 
+# deploy to the prod lab environment at CINECA
+.deploy-prod-server-cineca:
+  extends: .deploy-prod-server
+  variables:
+    KUBE_CONTEXT: cineca-prod
+  resource_group: shared-NFS-mount-prod-cineca
+
 # -------------------------------------------------------------------
 # Release types: test, experimental and official releases
 # -------------------------------------------------------------------
@@ -140,24 +139,12 @@ variables:
 # Lab deployment jobs
 # -------------------------------------------------------------------
 
-# deploy int release to dev environment at CSCS
-deploy-int-release-dev-cscs:
-  extends:
-    - .deploy-int-release
-    - .deploy-dev-server-cscs
-
 # deploy int release to dev environment at CINECA
 deploy-int-release-dev-cineca:
   extends:
     - .deploy-int-release
     - .deploy-dev-server-cineca
 
-# deploy exp release to dev environment at CSCS
-deploy-exp-release-dev-cscs:
-  extends:
-    - .deploy-exp-dev-release
-    - .deploy-dev-server-cscs
-
 # deploy exp release to dev environment at CINECA
 deploy-exp-release-dev-cineca:
   extends:
@@ -176,6 +163,12 @@ deploy-exp-release-prod-jsc:
     - .deploy-exp-prod-release
     - .deploy-prod-server-jsc
 
+# deploy exp release to prod environment at CINECA
+deploy-exp-release-prod-cineca:
+  extends:
+    - .deploy-exp-prod-release
+    - .deploy-prod-server-cineca
+
 # deploy prod release to prod environment at CSCS
 deploy-prod-release-prod-cscs:
   extends:
@@ -188,6 +181,12 @@ deploy-prod-release-prod-jsc:
     - .deploy-prod-release
     - .deploy-prod-server-jsc
 
+# deploy prod release to prod environment at CINECA
+deploy-prod-release-prod-cineca:
+  extends:
+    - .deploy-prod-release
+    - .deploy-prod-server-cineca
+
 # ===================================================================
 # GITLAB RUNNER DEPLOYMENTS
 # ===================================================================
-- 
GitLab


From 95de5971c000ca6f1c09ee3b272b54de75c89b11 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 15 Dec 2024 17:40:50 +0100
Subject: [PATCH 11/14] fix(log4cxx): update source url

---
 packages/log4cxx/package.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/packages/log4cxx/package.py b/packages/log4cxx/package.py
index 13bfc90b..0cf8f7a9 100644
--- a/packages/log4cxx/package.py
+++ b/packages/log4cxx/package.py
@@ -10,16 +10,16 @@ class Log4cxx(CMakePackage):
     """A C++ port of Log4j"""
 
     homepage = "https://logging.apache.org/log4cxx/latest_stable/"
-    url = "https://dlcdn.apache.org/logging/log4cxx/0.12.0/apache-log4cxx-0.12.0.tar.gz"
+    url = "https://github.com/apache/logging-log4cxx/archive/refs/tags/rel/v1.2.0.tar.gz"
 
     maintainers("nicmcd")
 
     # begin EBRAINS (added): bring upstream (ref. spack@0.21.2)
-    version("1.2.0",  sha256="09f4748aa5675ef5c0770bedbf5e00488668933c5a935a43ac5b85be2436c48a")
-    version("1.1.0",  sha256="1fc7d82697534184bc0f757348d969d24852b948f63d6b17283fd1ee29c2c28a")
+    version("1.2.0",  sha256="3e0af426011718c634194200cdd79b49ec13c322697bdcddef3d8b2ac9efd7b6")
+    version("1.1.0",  sha256="feb425ce35a391cf0927356bebb7da53f96c8a7aaf634aaf740e011203c732bb")
     # end EBRAINS
-    version("0.12.1", sha256="7bea5cb477f0e31c838f0e1f4f498cc3b30c2eae74703ddda923e7e8c2268d22")
-    version("0.12.0", sha256="bd5b5009ca914c8fa7944b92ea6b4ca6fb7d146f65d526f21bf8b3c6a0520e44")
+    version("0.12.1", sha256="567a4200c5b005a816c401e798d98294782950c7750eb3e285e851b970c8beed")
+    version("0.12.0", sha256="31730a17b8ff3f416256755b7aa6d7e95b167c670eb469eb9ff99aa006376e79")
 
     variant("cxxstd", default="17", description="C++ standard", values=("11", "17"), multi=False)
     # begin EBRAINS (added)
-- 
GitLab


From a1c0c2268b06a7f96f6cd8fc88d175b29cfd3815 Mon Sep 17 00:00:00 2001
From: Lia Domide <lia.domide@codemart.ro>
Date: Wed, 18 Dec 2024 14:08:08 +0100
Subject: [PATCH 12/14] fix(py-tvb-widgets): relax VTK version dependency

Pinned dependency on vtk@9.2.6 (that should be avoided anyway) conflicts with gcc@13. vtk@9 was selected as a lower limit to avoid using older versions since compatibility has not been tested.
---
 packages/py-tvb-widgets/package.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/packages/py-tvb-widgets/package.py b/packages/py-tvb-widgets/package.py
index 7ca3db0d..855ac583 100644
--- a/packages/py-tvb-widgets/package.py
+++ b/packages/py-tvb-widgets/package.py
@@ -47,8 +47,7 @@ class PyTvbWidgets(PythonPackage):
     depends_on('py-traitlets@5.7.1:', type=('build', 'run'))
     depends_on('py-toml', type=('build', 'run'))
     depends_on('py-bokeh', type=('build', 'run'))
-    depends_on('vtk@=9.2.6', type=('build', 'run'))
-
+    depends_on('vtk@9:9.3', type=('build', 'run'))
 
     depends_on('py-pytest', type='test')
     depends_on('py-pytest-mock', type='test')
-- 
GitLab


From ef2dccd7eedd65dd137528ddf3d01ffe3f97bb48 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eric=20M=C3=BCller?= <mueller@kip.uni-heidelberg.de>
Date: Fri, 20 Dec 2024 11:16:56 +0100
Subject: [PATCH 13/14] feat(BSS2): downgrade software state (regression!)

---
 packages/build-brainscales/package.py     | 8 ++++++++
 packages/oppulance/package.py             | 7 +++++++
 packages/wf-brainscales2-demos/package.py | 1 +
 spack.yaml                                | 8 ++++----
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/packages/build-brainscales/package.py b/packages/build-brainscales/package.py
index b80d0583..d8349c67 100644
--- a/packages/build-brainscales/package.py
+++ b/packages/build-brainscales/package.py
@@ -15,6 +15,13 @@ import spack.build_environment
 class BuildBrainscales(WafPackage):
     """Common stuff for BrainScaleS packages..."""
 
+    version(
+        "9.0-a8",
+        git="https://github.com/electronicvisions/releases-ebrains",
+        tag="ebrains-9.0-a8",
+        commit="44323be431da4b4b43890815f453c27207dee0b2",
+        submodules=True,
+    )
     version(
         "9.0-a7",
         git="https://github.com/electronicvisions/releases-ebrains",
@@ -45,6 +52,7 @@ class BuildBrainscales(WafPackage):
     )
 
     # common dependencies of BuildBrainscales-derived packages
+    depends_on('oppulance@9.0-a8', when='@9.0-a8', type=('build', 'link', 'run', 'test'))
     depends_on('oppulance@9.0-a7', when='@9.0-a7', type=('build', 'link', 'run', 'test'))
     depends_on('oppulance@9.0-a6', when='@9.0-a6', type=('build', 'link', 'run', 'test'))
     depends_on('oppulance@9.0-a5', when='@9.0-a5', type=('build', 'link', 'run', 'test'))
diff --git a/packages/oppulance/package.py b/packages/oppulance/package.py
index 9875947f..2249a8b4 100644
--- a/packages/oppulance/package.py
+++ b/packages/oppulance/package.py
@@ -21,6 +21,13 @@ class Oppulance(Package):
     depends_on('wget')
     depends_on('gmp')
 
+    version(
+        "9.0-a8",
+        git="https://github.com/electronicvisions/releases-ebrains",
+        tag="ebrains-9.0-a8",
+        commit="44323be431da4b4b43890815f453c27207dee0b2",
+        submodules=True,
+    )
     version(
         "9.0-a7",
         git="https://github.com/electronicvisions/releases-ebrains",
diff --git a/packages/wf-brainscales2-demos/package.py b/packages/wf-brainscales2-demos/package.py
index cdf482c7..9226c76a 100644
--- a/packages/wf-brainscales2-demos/package.py
+++ b/packages/wf-brainscales2-demos/package.py
@@ -16,6 +16,7 @@ class WfBrainscales2Demos(Package):
     maintainers = ["emuller", "muffgaga"]
 
     # ECM: we probably should build the ipynb file in this package
+    version("9.0-a8", tag="jupyter-notebooks-9.0-a8")
     version("9.0-a7", tag="jupyter-notebooks-9.0-a7")
     version("9.0-a6", tag="jupyter-notebooks-9.0-a6")
     version("9.0-a5", tag="jupyter-notebooks-9.0-a5")
diff --git a/spack.yaml b/spack.yaml
index c041ec25..a4a869ac 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -12,10 +12,10 @@ spack:
     - biobb-model@4.0.0
     - biobb-structure-checking@3.12.1
     - biobb-structure-utils@4.0.0
-    - hxtorch@9.0-a7
+    - hxtorch@9.0-a8
     - nest@3.8 +sonata
     - neuron@8.2.3 +mpi
-    - jaxsnn@9.0-a7
+    - jaxsnn@9.0-a8
     - py-bluepyefe@2.2.18
     - py-bluepymm@0.7.65
     - py-bluepyopt@1.13.86
@@ -56,14 +56,14 @@ spack:
     - py-tvb-ext-unicore
     - py-tvb-ext-xircuits@1.1.0
     - py-viziphant@0.4.0
-    - pynn-brainscales@9.0-a7
+    - pynn-brainscales@9.0-a8
     - r-rgsl@0.1.1
     - r-sbtabvfgen@0.1
     - r-uqsa@2.2
     - sda@7.3.3d
     # Workflows (meta-packages)
     - wf-biobb
-    - wf-brainscales2-demos@9.0-a7
+    - wf-brainscales2-demos@9.0-a8
     - wf-protein-association-rates@0.1
     - wf-multi-area-model@1.2.0
     - wf-human-multi-area-model@2.0.1
-- 
GitLab


From 3bf8636c2d3911dfe2d9a89cd655edda12eb74fe Mon Sep 17 00:00:00 2001
From: "C.A.P. Linssen" <charl@turingbirds.com>
Date: Wed, 18 Dec 2024 12:24:28 +0100
Subject: [PATCH 14/14] feat(py-nestml): add NESTML version 8.0.0

---
 packages/py-nestml/package.py | 4 ++--
 spack.yaml                    | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/packages/py-nestml/package.py b/packages/py-nestml/package.py
index 85f3b931..a5ea9b1b 100644
--- a/packages/py-nestml/package.py
+++ b/packages/py-nestml/package.py
@@ -13,12 +13,12 @@ class PyNestml(PythonPackage):
     """
 
     homepage = 'https://nestml.readthedocs.org/'
-    url      = 'https://pypi.org/packages/py3/N/NESTML/NESTML-8.0.0rc3-py3-none-any.whl'
+    url      = 'https://pypi.org/packages/py3/N/NESTML/NESTML-8.0.0-py3-none-any.whl'
     git      = 'https://github.com/nest/nestml/'
 
     maintainers = ['clinssen', 'pnbabu']
 
-    version('8.0.0rc3', sha256='f09d5b980d97eb8295571ff0b697cc236ed938d2e1e0375d7d8b90045ab7af10', expand=False)
+    version('8.0.0', sha256='bb2182fadd5f3ff7fa538e7f9865bafefb8be67938c83028174491768e88ef09', expand=False)
     version('7.0.2', sha256='3611239ff8436bf1c74b878562564007285c6da5df0317c6cd52f65e6bcd3f8b', expand=False)
     version('7.0.1', sha256='38392bdd06c5be5af65050153f34fb78dee6032158b268b83599bd70aab5c030', expand=False)
     version('7.0.0', sha256='4e271048b4a9ad2c161dda98d3ee25e143537649a264d521deb0ff5543020d73', expand=False)
diff --git a/spack.yaml b/spack.yaml
index a4a869ac..5f8217b5 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -36,7 +36,7 @@ spack:
     - py-libneuroml@0.4.1
     - py-libsonata@0.1.23
     - py-neo@0.13.3
-    - py-nestml@8.0.0rc3
+    - py-nestml@8.0.0
     - py-netpyne@1.0.6
     - py-neurom@3.2.2
     - py-neuror@1.6.4
-- 
GitLab