From 5f484893aa5d24eee8173e658ea4fda5fba05bd6 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 13:04:20 +0200
Subject: [PATCH 01/16] py-ebrains-kg-core: update version

---
 packages/py-ebrains-kg-core/package.py | 1 +
 spack.yaml                             | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/py-ebrains-kg-core/package.py b/packages/py-ebrains-kg-core/package.py
index c6eff2c9..cfe76f49 100644
--- a/packages/py-ebrains-kg-core/package.py
+++ b/packages/py-ebrains-kg-core/package.py
@@ -15,6 +15,7 @@ class PyEbrainsKgCore(PythonPackage):
 
     maintainers = ["ioannistsanaktsidis", "olinux"]
 
+    version('0.9.15', sha256='c672815ebcd6968f090620f68d85f0fbf282a83636c3a1845b078ef5ac5a06be')
     version('0.9.14', sha256='e898761abb999b09e5da49b25d13ffcadebaec7acd87ed079abe23f3bb12a5e7')
     version('0.9.13', sha256='25e155e9eb6c516dd33e29d9ff433c996630989a0f017c5920b66fe5334f2d82')
     version('0.9.12', sha256='244e52dffaec425bf65cf2d3d697969ec9036aaa028bf47fdddfb4911282f484')
diff --git a/spack.yaml b/spack.yaml
index f6590cb0..0a5c1b8d 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -20,7 +20,7 @@ spack:
     - py-bluepymm@0.7.65
     - py-bluepyopt@1.13.86
     - py-ebrains-drive@0.5.1
-    - py-ebrains-kg-core@0.9.14
+    - py-ebrains-kg-core@0.9.15
     - py-efel@4.0.4
     - py-elephant@0.13.0
     - py-fairgraph@0.11.1
-- 
GitLab


From e6ad617969c04acb580b4ae09d62c955a7fa8bd2 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 13:07:09 +0200
Subject: [PATCH 02/16] py-hbp-neuromorphic-platform: update version

---
 packages/py-hbp-neuromorphic-platform/package.py | 1 +
 spack.yaml                                       | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/py-hbp-neuromorphic-platform/package.py b/packages/py-hbp-neuromorphic-platform/package.py
index ef2ce85f..f68b345f 100644
--- a/packages/py-hbp-neuromorphic-platform/package.py
+++ b/packages/py-hbp-neuromorphic-platform/package.py
@@ -17,6 +17,7 @@ class PyHbpNeuromorphicPlatform(PythonPackage):
 
     maintainers = ['apdavison']
 
+    version('0.10.2', sha256='3e29175636385f2f561b8095e6225edc41be7f05c6a21232872ef662e6b7ce56')
     version('0.10.1', sha256='76b3acdbc63c901d158bad6d74e26f8a4ad7b10a261c1d51f1e9bf482766bae7')
     
     depends_on('python@3.5:')
diff --git a/spack.yaml b/spack.yaml
index f6590cb0..42e052b0 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -26,7 +26,7 @@ spack:
     - py-fairgraph@0.11.1
     - py-frites@0.4.4
     - py-hbp-archive@1.1.1
-    - py-hbp-neuromorphic-platform@0.10.1
+    - py-hbp-neuromorphic-platform@0.10.2
     - py-hbp-validation-client@0.8.2
     - py-hippounit@1.3.6
     - py-lfpy@2.3
-- 
GitLab


From 5adf7b6a1cca75e9b18f9c9a37535ef93a05fa0e Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 13:52:25 +0200
Subject: [PATCH 03/16] py-nestml: update version

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

diff --git a/packages/py-nestml/package.py b/packages/py-nestml/package.py
index 48dc4f84..7e3329d5 100644
--- a/packages/py-nestml/package.py
+++ b/packages/py-nestml/package.py
@@ -18,6 +18,7 @@ class PyNestml(PythonPackage):
 
     maintainers = ['clinssen', 'pnbabu', 'jougs']
 
+    version('5.3.0', sha256='8de543d7d3a166cd4d6a0d536a2d4e769513bbf8d7aeaf64458e9d9c21fe546e', expand=False)
     version('5.2.0', sha256='acb703bf9c7f70304bd5d547dccd6a6a219f8acb298a6412df779b808241eb14', expand=False)
 
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/spack.yaml b/spack.yaml
index f6590cb0..efca9bc3 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -33,7 +33,7 @@ spack:
     - py-lfpykit@0.5.1
     - py-libsonata@0.1.22
     - py-neo@0.12.0
-    - py-nestml@5.2.0
+    - py-nestml@5.3.0
     - py-netpyne@1.0.5
     - py-neurom@3.2.2
     - py-neuror@1.4.2
-- 
GitLab


From 9168bfac9babd94125de27f6331585a3c373e693 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 13:57:26 +0200
Subject: [PATCH 04/16] py-siibra: update version

---
 packages/py-siibra/package.py | 7 +++++++
 spack.yaml                    | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/packages/py-siibra/package.py b/packages/py-siibra/package.py
index a64b1773..b68c20d4 100644
--- a/packages/py-siibra/package.py
+++ b/packages/py-siibra/package.py
@@ -9,6 +9,13 @@ class PySiibra(PythonPackage):
 
     maintainers = ['x.gui@fz-juelich.de', 's.koehnen@fz-juelich.de', 't.dickscheid@fz-juelich.de']
 
+    version("0.4a66", sha256="75bd925159d2c4bc904b97824ab8d48a4162f07c11ae0ee4d358427bd3badccb")
+    version("0.4a64", sha256="651f3382c7e3407261ca71921614e3bf64f3205c1b7072ce0bb482d65fa73be3")
+    version("0.4a63", sha256="225c2cbf98ec57bee4063176f868a2a10ab153ac917e162843d8a26a38ba78b4")
+    version("0.4a62", sha256="4ff6f36e7bd12878d71c148cdf50ac3434c50248abe61d610cb01adad129eb52")
+    version("0.4a61", sha256="9ebb3402a4789935c3f75e7a812d8d2500c183187d4ae99cac9b554f4dbe84f3")
+    version("0.4a59", sha256="e878b424dfece6c379146674c2fe0875ec290811aa6a8323ef1404d25c0a9010")
+    version("0.4a58", sha256="f24660f094932628f088ef3f9575b196fd360bd74a1e1c8e2627d985ed35e210")
     version("0.4a57", sha256="53983c4baab84abe5dd6928c320ce87433cab02b5ed992995f0a17661c93dbff")
     version("0.4a56", sha256="4c03d8a94c73a233e216103fa7090d057db03b1806027fabde38e8f83b852d78")
     version("0.4a54", sha256="114765afe906383c7e6b930f1df7e26ddc15a6f295e2eab83a861eaba6d8f57f")
diff --git a/spack.yaml b/spack.yaml
index f6590cb0..e2ee5086 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -42,7 +42,7 @@ spack:
     - py-pyunicore@0.15.0
     - py-quantities-scidash@0.12.4.3
     - py-quantities@0.14.1
-    - py-siibra@0.4a57
+    - py-siibra@0.4a66
     - py-snudda@1.4.71
     - py-spynnaker@7.0.0
     - py-tvb-contrib@2.8.2
-- 
GitLab


From bee3518760d98da25612d9b75aa25bf8418c34c9 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 14:01:08 +0200
Subject: [PATCH 05/16] r-rgsl: update version

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

diff --git a/packages/r-rgsl/package.py b/packages/r-rgsl/package.py
index cd554986..d7796805 100644
--- a/packages/r-rgsl/package.py
+++ b/packages/r-rgsl/package.py
@@ -15,7 +15,8 @@ class RRgsl(RPackage):
 
     maintainers = ["akramer", "oliviaeriksson"]
 
-    version("0.1", sha256="dd6a14dda8731f4cf32149c8a9842e4e2ba424c8404f4d6839108153b20e4c3e")
+    version("0.1.1", sha256="a2d8fdbbb6c4f9937d6abaa56d912418b42931ae67067357e9bf5a032cc1a833")
+    version("0.1",   sha256="dd6a14dda8731f4cf32149c8a9842e4e2ba424c8404f4d6839108153b20e4c3e")
 
     # GNU Scientific Library: https://www.gnu.org/software/gsl
     # spack: https://spack.readthedocs.io/en/latest/package_list.html#gsl
diff --git a/spack.yaml b/spack.yaml
index f6590cb0..7162b620 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -54,7 +54,7 @@ spack:
     - py-tvb-storage@2.8.1
     - py-viziphant@0.3.0
     - pynn-brainscales@7.0-rc1
-    - r-rgsl@0.1
+    - r-rgsl@0.1.1
     - r-sbtabvfgen@0.1
     - r-uqsa@2.2
     - sda@7.3.3d
-- 
GitLab


From 6a8aab2aa41e1dd44e334033b062072ddf0ecbce Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sun, 24 Sep 2023 16:41:07 +0200
Subject: [PATCH 06/16] update bbp packages from upstream

---
 packages/py-libsonata/package.py  |  1 +
 packages/py-morph-tool/package.py | 12 ++++++++----
 packages/py-morphio/package.py    |  1 +
 packages/py-neuror/package.py     | 10 ++++++----
 spack.yaml                        |  4 ++--
 5 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/packages/py-libsonata/package.py b/packages/py-libsonata/package.py
index 7478f1d6..ed0644c3 100644
--- a/packages/py-libsonata/package.py
+++ b/packages/py-libsonata/package.py
@@ -18,6 +18,7 @@ class PyLibsonata(PythonPackage):
     submodules = True
 
     version("develop", branch="master", get_full_repo=True)
+    version("0.1.23", sha256="815aac5bdaa5d025b5f3558ac4d3acb9ebcb070594109af4c0844f47ec701c1d")
     version("0.1.22", sha256="4adbb32ed2fac5d3c74bde03a5e2adb319724d324318a2a7dc2ef3c30f817b2c")
     version("0.1.21", sha256="5b280d82cb21a745d9cdb736c00446e0209494c21d2d17a2c878fabf23a08b68")
     version("0.1.20", sha256="f2e63a26dcf045bb7424e236e12f9b9ef8c46c356e953d26555f313f5763651e")
diff --git a/packages/py-morph-tool/package.py b/packages/py-morph-tool/package.py
index f639ba21..dbe42d14 100644
--- a/packages/py-morph-tool/package.py
+++ b/packages/py-morph-tool/package.py
@@ -13,11 +13,14 @@ class PyMorphTool(PythonPackage):
 
     homepage = "https://github.com/BlueBrain/morph-tool"
     git = "https://github.com/BlueBrain/morph-tool.git"
-    pypi = "morph-tool/morph-tool-2.4.1.tar.gz"
+    pypi = "morph-tool/morph-tool-2.9.1.tar.gz"
 
     version("develop", branch="master")
+    version("2.9.1", sha256="305e9456c8047726588b23dfa070eb95ccbe5573e9fea3e0a83dc93eacdf61dc")
     version("2.9.0", sha256="c60d4010e17ddcc3f53c864c374fffee05713c8f8fd2ba4eed7706041ce1fa47")
 
+    variant("neuron", default=False, description="Enable additional neuron support")
+
     depends_on("py-setuptools", type=("build", "run"))
 
     depends_on("py-click@6.7:", type=("build", "run"))
@@ -28,9 +31,10 @@ class PyMorphTool(PythonPackage):
     depends_on("py-xmltodict@0.12:", type=("build", "run"))
 
     depends_on("py-plotly@4.1:", type=("build", "run"))
-    depends_on("py-dask+bag@2.19:", type=("build", "run"))
+    depends_on("py-dask@2.19:", type=("build", "run"))
     depends_on("neuron+python@7.8:", type=("build", "run"))
-    depends_on("py-bluepyopt@1.9.37:", type=("build", "run"))
+    depends_on("py-bluepyopt@1.9.37:", type=("build", "run"), when="+neuron")
 
     depends_on("py-neurom@3.0:3.999,develop", type=("build", "run"))
-    depends_on("py-morphio@3.0:3.999,develop", type=("build", "run"))
+    depends_on("py-morphio@3.3.6:3,develop", type=("build", "run"), when="@2.9.1:")
+    depends_on("py-morphio@3.0:3,develop", type=("build", "run"), when="@2.9.0")
diff --git a/packages/py-morphio/package.py b/packages/py-morphio/package.py
index 5a08dfe8..f1c61414 100644
--- a/packages/py-morphio/package.py
+++ b/packages/py-morphio/package.py
@@ -18,6 +18,7 @@ class PyMorphio(PythonPackage):
     version("develop", branch="master", submodules=True)
     version("unifurcation", branch="unifurcation", submodules=True)
 
+    version("3.3.6", sha256="0f2e55470d92a3d89f2141ae905ee104fd16257b93dafb90682d90171de2f4e6")
     version("3.3.5", sha256="9e6cfebaea32080131b2b08a4a32dfbe92b18427a3e557861e27c4131f7542ac")
     version("3.3.4", sha256="b70c6884e9b835560501f798c75c9cc7eaf3162cba1d930b5a9b854bb9ea60dc")
     version("3.3.3", sha256="f6d91970cfd734b2e5fb8f9239a0bfa00519fe082dd8e403e4cc204dbdf0a9fa")
diff --git a/packages/py-neuror/package.py b/packages/py-neuror/package.py
index b9273ee3..d84d202d 100644
--- a/packages/py-neuror/package.py
+++ b/packages/py-neuror/package.py
@@ -5,6 +5,7 @@
 #
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 
+
 from spack.package import *
 
 
@@ -16,17 +17,18 @@ class PyNeuror(PythonPackage):
     pypi = "neuror/NeuroR-1.2.3.tar.gz"
 
     version("develop", branch="master")
-    version("1.4.2", sha256="f5e18ebddf59a60ce650c24eb49042057cf97990d63aee3ceb58b7acff823255")
+    version("1.6.4", sha256="a65c0e1814c38326a344f03c1f5f92ab4db721c5541888b2acb9ffc5a7adac50")
 
     depends_on("py-setuptools", type=("build", "run"))
 
     depends_on("py-click@6.7:", type=("build", "run"))
+    depends_on("py-jsonschema", type=("build", "run"))
     depends_on("py-matplotlib@2.2.3:", type=("build", "run"))
     depends_on("py-morph-tool@2.9.0:2.999", type=("build", "run"))
-    depends_on("py-morphio@3.0:3.999", type=("build", "run"))
-    depends_on("py-neurom@3.0:3.999", type=("build", "run"))
+    depends_on("py-morphio@3.0.0:3.999", type=("build", "run"))
+    depends_on("py-neurom@3.0.1:3.999", type=("build", "run"))
     depends_on("py-numpy@1.19.2:", type=("build", "run"))
-    depends_on("py-nptyping@1.3.0:", type=("build", "run"))
+    depends_on("py-nptyping@2:", type=("build", "run"))
     depends_on("py-pandas@0.24.2:", type=("build", "run"))
     depends_on("py-pyquaternion@0.9.2:", type=("build", "run"))
     depends_on("py-scipy@1.2.0:", type=("build", "run"))
diff --git a/spack.yaml b/spack.yaml
index 3a3ab1aa..992f26fe 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -31,12 +31,12 @@ spack:
     - py-hippounit@1.3.6
     - py-lfpy@2.3
     - py-lfpykit@0.5.1
-    - py-libsonata@0.1.22
+    - py-libsonata@0.1.23
     - py-neo@0.12.0
     - py-nestml@5.2.0
     - py-netpyne@1.0.5
     - py-neurom@3.2.2
-    - py-neuror@1.4.2
+    - py-neuror@1.6.4
     - py-pdb2pqr@3.5.2
     - py-pynn@0.11.0 +mpi
     - py-pyunicore@0.15.0
-- 
GitLab


From 2cb3487ae75b440e854f3a98752b330dcef5349e Mon Sep 17 00:00:00 2001
From: Dennis Terhorst <d.terhorst@fz-juelich.de>
Date: Mon, 25 Sep 2023 16:03:51 +0200
Subject: [PATCH 07/16] Update to NEST 3.6-rc2

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

diff --git a/packages/nest/package.py b/packages/nest/package.py
index a14f74cd..3f571164 100644
--- a/packages/nest/package.py
+++ b/packages/nest/package.py
@@ -28,7 +28,7 @@ class Nest(CMakePackage):
     maintainers = ['terhorst']
 
     version('master', branch='master')
-    version('3.6_rc1',sha256='8a8693933180bd5f64e0032c175997bbe7ee3bc6b0d73a7a4a394c97fc93969d')
+    version('3.6-rc2',sha256='8508a9590ad49e6657809d1acfd02aa612b70fa8e5e7791a2ea261d891f181f7')
     version('3.5',    sha256='3cdf5720854a4d8a7d359f9de9d2fb3619a0be2e36932028d6940360741547bd')
     version('3.4',    sha256='c56699111f899045ba48e55e87d14eca8763b48ebbb3648beee701a36aa3af20')
     version('3.3',    sha256='179462b966cc61f5785d2fee770bc36f86745598ace9cd97dd620622b62043ed')
diff --git a/spack.yaml b/spack.yaml
index 00194e40..83560046 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -14,7 +14,7 @@ spack:
     - biobb-structure-checking@3.12.1
     - biobb-structure-utils@4.0.0
     - hxtorch@7.0-rc1
-    - nest@3.6_rc1 +sonata
+    - nest@3.6-rc2 +sonata
     - neuron@8.2.3 +mpi
     - py-bluepyefe@2.2.18
     - py-bluepymm@0.7.65
-- 
GitLab


From 27b50daf2df36e0c053d74a16ca82e071a0d238f Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Mon, 25 Sep 2023 21:01:59 +0200
Subject: [PATCH 08/16] fix py-ray import error

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

diff --git a/packages/py-ray/package.py b/packages/py-ray/package.py
index d17b5557..c687d7ee 100644
--- a/packages/py-ray/package.py
+++ b/packages/py-ray/package.py
@@ -46,6 +46,11 @@ class PyRay(PythonPackage):
     depends_on("py-typing-extensions", when="@2.0.1 ^python@:3.7", type=("build", "run"))
     depends_on("py-virtualenv", when="@2.0.1", type=("build", "run"))
 
+    # needed to fix import errors
+    depends_on("py-setproctitle", type=("build", "run"))
+    depends_on("py-colorama", type=("build", "run"))
+    depends_on("py-psutil", type=("build", "run"))
+
     with when("+default"):
         depends_on("py-aiohttp@3.7:", type=("build", "run"))
         depends_on("py-aiohttp-cors", type=("build", "run"))
-- 
GitLab


From 7bc692362b7640e86fe6a8de3b679f71b8938cb2 Mon Sep 17 00:00:00 2001
From: Robin De Schepper <robingilbert.deschepper@unipv.it>
Date: Tue, 26 Sep 2023 12:40:48 +0200
Subject: [PATCH 09/16] Add BSB package

---
 packages/py-bsb-hdf5/package.py | 22 ++++++++++++++
 packages/py-bsb/package.py      | 51 +++++++++++++++++++++++++++++++++
 packages/py-colour/package.py   | 18 ++++++++++++
 packages/py-errr/package.py     | 19 ++++++++++++
 packages/py-pynrrd/package.py   | 21 ++++++++++++++
 spack.yaml                      |  1 +
 6 files changed, 132 insertions(+)
 create mode 100644 packages/py-bsb-hdf5/package.py
 create mode 100644 packages/py-bsb/package.py
 create mode 100644 packages/py-colour/package.py
 create mode 100644 packages/py-errr/package.py
 create mode 100644 packages/py-pynrrd/package.py

diff --git a/packages/py-bsb-hdf5/package.py b/packages/py-bsb-hdf5/package.py
new file mode 100644
index 00000000..bd50769d
--- /dev/null
+++ b/packages/py-bsb-hdf5/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2023 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.package import *
+
+
+class PyBsbHdf5(PythonPackage):
+    """An HDF-5 based storage engine for the BSB framework."""
+
+    homepage = "https://github.com/dbbs-lab/bsb-hdf5"
+    url = "https://pypi.org/packages/py3/b/bsb_hdf5/bsb_hdf5-0.8.3-py3-none-any.whl"
+
+    maintainers = ["helveg"]
+
+    version('0.8.3', sha256="38162bfe9470b87cb30a2bff78dce68fc1b97f2df7d7e3b288c16b671f7579e5", expand=False)
+
+    depends_on("py-setuptools", type="build")
+    # depends_on("py-bsb@4.0.0a57:")
+    depends_on("py-shortuuid")
+    depends_on("py-h5py@3.0:")
diff --git a/packages/py-bsb/package.py b/packages/py-bsb/package.py
new file mode 100644
index 00000000..fad71af2
--- /dev/null
+++ b/packages/py-bsb/package.py
@@ -0,0 +1,51 @@
+# Copyright 2013-2023 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.package import *
+
+
+class PyBsb(PythonPackage):
+    """
+    The BSB is a component framework for neural modeling, which focuses on component
+    declarations to piece together a model.
+    """
+
+    homepage = "https://bsb.readthedocs.io"
+    url = "https://pypi.org/packages/py3/b/bsb/bsb-4.0.0a57-py3-none-any.whl"
+
+    maintainers = ["helveg"]
+
+    version("4.0.0a57", sha256="5da15799aa8994894ff5371561d534b43beffaa79461189c94080071359f4076", expand=False)
+
+    depends_on("python@3.8:", type=("build", "run"))
+    depends_on("py-setuptools", type="build")
+    depends_on("py-numpy@1.19:")
+    depends_on("py-scipy@1.5:")
+    depends_on("py-scikit-learn@1.0:")
+    depends_on("py-plotly")
+    depends_on("py-rtree@1.0:")
+    depends_on("py-psutil@5.8:")
+    depends_on("py-pynrrd@1.0:")
+    depends_on("py-toml")
+    depends_on("py-requests")
+    depends_on("py-appdirs@1.4:")
+    depends_on("py-neo")
+    depends_on("py-tqdm@4.50:")
+    depends_on("py-shortuuid")
+    depends_on("py-quantities")
+    depends_on("py-pyyaml@6.0:")
+    depends_on("py-morphio@3.3:")
+    depends_on("py-bsb-hdf5@0.8.3:")
+    depends_on("py-errr@1.2.0:")
+    depends_on("py-colour@0.1.5:")
+
+    def setup_build_environment(self, env):
+        env.set("SPATIALINDEX_C_LIBRARY", self.spec["libspatialindex"].libs[0])
+
+    def setup_run_environment(self, env):
+        self.setup_build_environment(env)
+
+    skip_modules = ['bsb.simulators.arbor', 'bsb.simulators.arbor.devices']
+    
diff --git a/packages/py-colour/package.py b/packages/py-colour/package.py
new file mode 100644
index 00000000..5a55b8f9
--- /dev/null
+++ b/packages/py-colour/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2023 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.package import *
+
+
+class PyColour(PythonPackage):
+    """Python color representations manipulation library (RGB, HSL, web, ...)"""
+
+    homepage = "https://github.com/vaab/colour"
+    pypi = "colour/colour-0.1.5.tar.gz"
+
+    maintainers = ["vaab"]
+
+    version("0.1.5", sha256="af20120fefd2afede8b001fbef2ea9da70ad7d49fafdb6489025dae8745c3aee")
+    depends_on("py-setuptools", type="build")
diff --git a/packages/py-errr/package.py b/packages/py-errr/package.py
new file mode 100644
index 00000000..1c699d0c
--- /dev/null
+++ b/packages/py-errr/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2023 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.package import *
+
+
+class PyErrr(PythonPackage):
+    """Elegant Python exception factories"""
+
+    homepage = "https://github.com/Helveg/errr"
+    pypi = "errr/errr-1.2.0.tar.gz"
+
+    maintainers = ["helveg"]
+
+    version("1.2.0", sha256="2824b83edbd1f61d354c60e36400b2e31ab83e2094acb837b86686892b866e76")
+
+    depends_on("py-setuptools", type="build")
diff --git a/packages/py-pynrrd/package.py b/packages/py-pynrrd/package.py
new file mode 100644
index 00000000..99093c34
--- /dev/null
+++ b/packages/py-pynrrd/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2023 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.package import *
+
+
+class PyPynrrd(PythonPackage):
+    """Python library for reading and writing NRRD files into and from numpy arrays"""
+
+    homepage = "https://github.com/mhe/pynrrd"
+    pypi = "pynrrd/pynrrd-0.4.0.tar.gz"
+
+    version("1.0.0", sha256="4eb4caba03fbca1b832114515e748336cb67bce70c7f3ae36bfa2e135fc990d2")
+
+    depends_on("py-setuptools", type="build")
+    depends_on("py-numpy@1.11.1:", type=("build", "run"))
+    depends_on("py-nptyping", type=("build", "run"))
+    depends_on("py-typing-extensions", type=("build", "run"))
+
diff --git a/spack.yaml b/spack.yaml
index 83560046..99109726 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -19,6 +19,7 @@ spack:
     - py-bluepyefe@2.2.18
     - py-bluepymm@0.7.65
     - py-bluepyopt@1.13.86
+    - py-bsb@4.0.0a57
     - py-ebrains-drive@0.5.1
     - py-ebrains-kg-core@0.9.15
     - py-efel@4.0.4
-- 
GitLab


From 7ac646b291a7c83350eb75c03da4cbb52047efb1 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 13:10:28 +0200
Subject: [PATCH 10/16] move apbs and py-bdb2pqr to meta-package

---
 packages/wf-protein-association-rates/package.py | 15 +++++++++++++++
 spack.yaml                                       |  1 +
 2 files changed, 16 insertions(+)
 create mode 100644 packages/wf-protein-association-rates/package.py

diff --git a/packages/wf-protein-association-rates/package.py b/packages/wf-protein-association-rates/package.py
new file mode 100644
index 00000000..a6a70883
--- /dev/null
+++ b/packages/wf-protein-association-rates/package.py
@@ -0,0 +1,15 @@
+from spack import *
+
+
+class WfProteinAssociationRates(BundlePackage):
+    """Meta-package to collect all dependencies for the "Molecular Tools: protein
+    association rates and binding sites" demos/workflows."""
+
+    homepage="https://wiki.ebrains.eu/bin/view/Collabs/computation-of-protein-association-rates/"
+
+    maintainers = ['thielblz', 'richtesn']
+
+    version("0.1")
+
+    depends_on("apbs")
+    depends_on("py-pdb2pqr")
diff --git a/spack.yaml b/spack.yaml
index 3a3ab1aa..ed56ebda 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -61,6 +61,7 @@ spack:
     # Workflows (meta-packages)
     - wf-biobb
     - wf-brainscales2-demos
+    - wf-protein-association-rates@0.1
     - wf-multi-area-model@v1.1.0
     - wf-uq-akar4@0.1
     #- py-cerebstats
-- 
GitLab


From 8e2132a1e8f70b02d0dc554896fa1a2fde29209a Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 16:48:30 +0200
Subject: [PATCH 11/16] make sure compiler isn't installed twice

---
 .gitlab-ci.yml       | 2 +-
 install_spack_env.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f38951c6..b037d2d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -254,7 +254,7 @@ sync-gitlab-spack-instance:
     # install compiler (if not already installed)
     - EBRAINS_SPACK_COMPILER=$(grep 'compiler' $CI_PROJECT_DIR/site-config/$SYSTEMNAME/packages.yaml | awk -F'[][]' '{ print $2 }')
     - spack compiler find
-    - spack install $EBRAINS_SPACK_COMPILER
+    - spack compiler list | grep -q $EBRAINS_SPACK_COMPILER || spack install $EBRAINS_SPACK_COMPILER
     - spack load $EBRAINS_SPACK_COMPILER
     - spack compiler find
     - spack compiler list
diff --git a/install_spack_env.sh b/install_spack_env.sh
index f4ba7847..d2ea8ceb 100644
--- a/install_spack_env.sh
+++ b/install_spack_env.sh
@@ -37,7 +37,7 @@ if [ $SYSTEMNAME == ebrainslab ]
 then
   EBRAINS_SPACK_COMPILER=$(grep 'compiler' $EBRAINS_REPO/site-config/$SYSTEMNAME/packages.yaml | awk -F'[][]' '{ print $2 }')
   spack compiler find
-  spack install $EBRAINS_SPACK_COMPILER
+  spack compiler list | grep -q $EBRAINS_SPACK_COMPILER || spack install $EBRAINS_SPACK_COMPILER
   spack load $EBRAINS_SPACK_COMPILER
 fi
 
-- 
GitLab


From ec6b8884f06a13f900c907cd5d9df0005d66c86d Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 17:42:13 +0200
Subject: [PATCH 12/16] biobb packages: fix versions

---
 packages/biobb-analysis/package.py           | 4 +++-
 packages/biobb-chemistry/package.py          | 4 +++-
 packages/biobb-common/package.py             | 4 +++-
 packages/biobb-gromacs/package.py            | 4 +++-
 packages/biobb-io/package.py                 | 4 +++-
 packages/biobb-model/package.py              | 4 +++-
 packages/biobb-structure-checking/package.py | 4 +++-
 packages/biobb-structure-utils/package.py    | 4 +++-
 8 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/packages/biobb-analysis/package.py b/packages/biobb-analysis/package.py
index bc47a809..f67ab8af 100644
--- a/packages/biobb-analysis/package.py
+++ b/packages/biobb-analysis/package.py
@@ -7,12 +7,14 @@ class BiobbAnalysis(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_analysis"
     git = 'https://github.com/bioexcel/biobb_analysis.git'
+    url = 'https://github.com/bioexcel/biobb_analysis/archive/refs/tags/v4.0.1.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.1', branch='master')
+    version('master', branch='master')
+    version('4.0.1', sha256='3d7190d0cae6af42b2e7c0ecf073930a609b699ef311e8b74afc1634958e09b0')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/biobb-chemistry/package.py b/packages/biobb-chemistry/package.py
index 47286633..13a412de 100644
--- a/packages/biobb-chemistry/package.py
+++ b/packages/biobb-chemistry/package.py
@@ -7,12 +7,14 @@ class BiobbChemistry(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_chemistry"
     git = 'https://github.com/bioexcel/biobb_chemistry.git'
+    url = 'https://github.com/bioexcel/biobb_chemistry/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='40f65b4a93dff24e19995265e41fd6821f5ac2f35199d938f1d00fa035883e64')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/biobb-common/package.py b/packages/biobb-common/package.py
index 10e8cc19..ae3ffc96 100644
--- a/packages/biobb-common/package.py
+++ b/packages/biobb-common/package.py
@@ -6,12 +6,14 @@ class BiobbCommon(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_common"
     git = 'https://github.com/bioexcel/biobb_common.git'
+    url = 'https://github.com/bioexcel/biobb_common/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='fff990dce42ded2af3d587567dbf5321b1498f12f24d04d62003f9869d6eb8fe')
 
     # Dependencies
     depends_on('py-setuptools')
diff --git a/packages/biobb-gromacs/package.py b/packages/biobb-gromacs/package.py
index c60afef1..f6003f6d 100644
--- a/packages/biobb-gromacs/package.py
+++ b/packages/biobb-gromacs/package.py
@@ -7,12 +7,14 @@ class BiobbGromacs(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_gromacs"
     git = 'https://github.com/bioexcel/biobb_gromacs.git'
+    url = 'https://github.com/bioexcel/biobb_gromacs/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='87f9079ec8b72ff43cd1b388a06fee5b1f64bb4080ffab110941f3c6d155ef0b')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/biobb-io/package.py b/packages/biobb-io/package.py
index a4f089d4..23f35199 100644
--- a/packages/biobb-io/package.py
+++ b/packages/biobb-io/package.py
@@ -7,12 +7,14 @@ class BiobbIo(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_io"
     git = 'https://github.com/bioexcel/biobb_io.git'
+    url = 'https://github.com/bioexcel/biobb_io/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='600a30f14b1a0e21f57775ba1be695e1595f5702237415fe90d7c531b5a0408a')
 
     # Dependencies
     depends_on('biobb-common')
diff --git a/packages/biobb-model/package.py b/packages/biobb-model/package.py
index 877be433..8e0147d8 100644
--- a/packages/biobb-model/package.py
+++ b/packages/biobb-model/package.py
@@ -7,12 +7,14 @@ class BiobbModel(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_model"
     git = 'https://github.com/bioexcel/biobb_model.git'
+    url = 'https://github.com/bioexcel/biobb_model/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='92387725b7ccd3f40d18c1d3e30a6169ca4204ba498ac72e25c9e701b1a89d91')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/biobb-structure-checking/package.py b/packages/biobb-structure-checking/package.py
index 8c528fd7..4cb782e7 100644
--- a/packages/biobb-structure-checking/package.py
+++ b/packages/biobb-structure-checking/package.py
@@ -8,12 +8,14 @@ class BiobbStructureChecking(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_structure_checking"
     git = 'https://github.com/bioexcel/biobb_structure_checking.git'
+    url = 'https://github.com/bioexcel/biobb_structure_checking/archive/refs/tags/v3.12.1.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('3.12.1', branch='master')
+    version('master', branch='master')
+    version('3.12.1', sha256='ef3e6fe5f7763e534c91fac00bf873c3d88bcca18be7a63c63608dceb36f3d40')
 
     # Dependencies
     depends_on('py-setuptools')
diff --git a/packages/biobb-structure-utils/package.py b/packages/biobb-structure-utils/package.py
index 9dd06b98..ab132e97 100644
--- a/packages/biobb-structure-utils/package.py
+++ b/packages/biobb-structure-utils/package.py
@@ -7,12 +7,14 @@ class BiobbStructureUtils(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/bioexcel/biobb_structure_utils"
     git = 'https://github.com/bioexcel/biobb_structure_utils.git'
+    url = 'https://github.com/bioexcel/biobb_structure_utils/archive/refs/tags/v4.0.0.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('4.0.0', branch='master')
+    version('master', branch='master')
+    version('4.0.0', sha256='f328eee2166631e1cc514118eb41187620c358c8024431ce2a0b0e4547692c47')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
-- 
GitLab


From 1ad6c983a6447b90b72fbfb9f9ee6d04d19c8e5d Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 17:57:19 +0200
Subject: [PATCH 13/16] biobb dependencies: fix urls

---
 packages/acpype/package.py     | 4 +++-
 packages/nglview/package.py    | 4 +++-
 packages/simpletraj/package.py | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/packages/acpype/package.py b/packages/acpype/package.py
index 39982da7..c1924871 100644
--- a/packages/acpype/package.py
+++ b/packages/acpype/package.py
@@ -7,12 +7,14 @@ class Acpype(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/alanwilter/acpype"
     git = 'https://github.com/alanwilter/acpype.git'
+    url = 'https://github.com/alanwilter/acpype/archive/refs/tags/2022.7.21.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('2022.7.21', branch='master')
+    version('master', branch='master')
+    version('2022.7.21', sha256='5f7e6162d9a0aed2f770b9ccf5617ac1398a423cca815ae37cbf66d4cd62ea2f')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/nglview/package.py b/packages/nglview/package.py
index a6dd6510..17f12084 100644
--- a/packages/nglview/package.py
+++ b/packages/nglview/package.py
@@ -7,12 +7,14 @@ class Nglview(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/nglviewer/nglview"
     git = 'https://github.com/nglviewer/nglview.git'
+    url = 'https://github.com/nglviewer/nglview/archive/refs/tags/v3.0.4.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('3.0.4', branch='master')
+    version('master', branch='master')
+    version('3.0.4', sha256='78b4413b796965a94045df0d584ec51e256c3dca5f366020439fe7e9744ce61b')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
diff --git a/packages/simpletraj/package.py b/packages/simpletraj/package.py
index 54d1ec72..d4981147 100644
--- a/packages/simpletraj/package.py
+++ b/packages/simpletraj/package.py
@@ -6,12 +6,14 @@ class Simpletraj(PythonPackage):
     # Homepage and download url
     homepage = "https://github.com/arose/simpletraj"
     git = 'https://github.com/arose/simpletraj.git'
+    url = 'https://github.com/arose/simpletraj/archive/refs/tags/v0.3.tar.gz'
 
     # Set the gitlab accounts of this package maintainers
     maintainers = ['dbeltran']
 
     # Versions
-    version('0.3', branch='master')
+    version('master', branch='master')
+    version('0.3', sha256='9ee9b5f3e387f8f8eb74b11f5c5d60bab6f601d190b40e38a7b31afddc3574d0')
 
     # Dependencies
     depends_on('python@3.8:', type=('build', 'run'))
-- 
GitLab


From 4c7f04e2d4d37e8c83087a5cee2236a23d2e6af3 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 20:24:41 +0200
Subject: [PATCH 14/16] adapt installation script to use in CI

---
 install_spack_env.sh | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/install_spack_env.sh b/install_spack_env.sh
index d2ea8ceb..38e74bcc 100644
--- a/install_spack_env.sh
+++ b/install_spack_env.sh
@@ -1,16 +1,17 @@
 #!/bin/bash
 
-# ===========================================================================================================
+# ===============================================================================================================================
 # title         : install_spack_env.sh
-# usage         : ./install_spack_env.sh $INSTALLATION_ROOT $SPACK_VERSION $EBRAINS_REPO $EBRAINS_SPACK_ENV
+# usage         : ./install_spack_env.sh $INSTALLATION_ROOT $SPACK_VERSION $EBRAINS_REPO $EBRAINS_SPACK_ENV $UPSTREAM_INSTANCE
 # description   : installs or updates the spack environment defined in the EBRAINS spack repo
 #                 (if the specified spack instance doesn't exist, it also creates it)
-# ===========================================================================================================
+# ===============================================================================================================================
 
 INSTALLATION_ROOT=$1  # where to set up the installation
 SPACK_VERSION=$2      # which spack version to use
 EBRAINS_REPO=$3       # location of ebrains-spack-builds repository
 EBRAINS_SPACK_ENV=$4  # name of EBRAINS Spack environment to be created/updated
+UPSTREAM_INSTANCE=$5  # path to Spack instance to use as upstream (optional)
 
 # specify location of .spack dir (by default in ~)
 # this is where cache and configuration settings are stored
@@ -29,26 +30,34 @@ then
   sed -i "s/self.file_like, \"w\"/self.file_like, \"a\"/g" $INSTALLATION_ROOT/spack/lib/spack/llnl/util/tty/log.py
 fi
 
+if [[ $UPSTREAM_INSTANCE ]]
+then
+  cat <<EOF > $INSTALLATION_ROOT/spack/etc/spack/defaults/upstreams.yaml
+upstreams:
+  upstream-spack-instance:
+    install_tree: $UPSTREAM_INSTANCE/spack/opt/spack
+EOF
+fi
+
 # activate Spack
 source $INSTALLATION_ROOT/spack/share/spack/setup-env.sh
 
+# add repo if it does not exist
+if [[ ! $(spack repo list | grep $EBRAINS_REPO) ]]
+then
+  spack repo add $EBRAINS_REPO
+fi
+
 # install platform compiler (extract version from packages.yaml)
 if [ $SYSTEMNAME == ebrainslab ]
 then
   EBRAINS_SPACK_COMPILER=$(grep 'compiler' $EBRAINS_REPO/site-config/$SYSTEMNAME/packages.yaml | awk -F'[][]' '{ print $2 }')
   spack compiler find
-  spack compiler list | grep -q $EBRAINS_SPACK_COMPILER || spack install $EBRAINS_SPACK_COMPILER
-  spack load $EBRAINS_SPACK_COMPILER
+  spack load $EBRAINS_SPACK_COMPILER || (spack install $EBRAINS_SPACK_COMPILER; spack load $EBRAINS_SPACK_COMPILER)
 fi
 
 spack compiler find
 
-# add repo if it does not exist
-if [[ ! $(spack repo list | grep $EBRAINS_REPO) ]]
-then
-  spack repo add $EBRAINS_REPO
-fi
-
 # create environment if it does not exist
 if [ ! -d "$SPACK_ROOT/var/spack/environments/$EBRAINS_SPACK_ENV" ]
 then
-- 
GitLab


From 97948b35053a7a42766d8db4216ef0446affc952 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 21:55:30 +0200
Subject: [PATCH 15/16] use installation script in CI

---
 .gitlab-ci.yml       | 80 +++++---------------------------------------
 install_spack_env.sh |  2 +-
 2 files changed, 10 insertions(+), 72 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b037d2d8..e2b1238f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -177,35 +177,13 @@ build-spack-env-on-runner:
   image: $GITLAB_BUILD_ENV_DOCKER_IMAGE
   variables:
     SPACK_DEV_ENV: ebrains-dev
-    SPACK_DEV_PATH: $CI_PROJECT_DIR/spack
-    SPACK_USER_CACHE_PATH: $CI_PROJECT_DIR/.spack
-    SPACK_USER_CONFIG_PATH: $CI_PROJECT_DIR/.spack
   script:
-    - git clone --depth 1 -c advice.detachedHead=false -c feature.manyFiles=true --branch $SPACK_VERSION https://github.com/spack/spack $SPACK_DEV_PATH
-    # SPACK PATCH: the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
-    # quick fix for that: (TODO: investigate more and open PR)
-    - sed -i "s/self.file_like, \"w\"/self.file_like, \"a\"/g" $SPACK_DEV_PATH/lib/spack/llnl/util/tty/log.py
-    - |
-      cat <<EOF > $SPACK_DEV_PATH/etc/spack/defaults/upstreams.yaml
-      upstreams:
-        ebrains-gitlab-spack-instance:
-          install_tree: $SPACK_PATH_GITLAB/spack/opt/spack
-      EOF
-    - . $SPACK_DEV_PATH/share/spack/setup-env.sh
-    - spack find
-    - spack load gcc@10.3.0
-    - spack compiler find
-    - spack repo add .
-    - spack env create $SPACK_DEV_ENV
-    - spack env activate $SPACK_DEV_ENV
-    - rm -rf $SPACK_ENV/site-config && cp -r site-config $SPACK_ENV
-    - spack-python site-config/ymerge.py spack.yaml site-config/$SYSTEMNAME/spack.yaml > /tmp/spack.yaml
-    - cp /tmp/spack.yaml $SPACK_ENV/
-    - spack install -y -j2 --fresh --test root
+    # run installation script
+    - . install_spack_env.sh $CI_PROJECT_DIR $SPACK_VERSION $CI_PROJECT_DIR $SPACK_DEV_ENV $SPACK_PATH_GITLAB
   after_script:
-    - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
+    - mkdir -p .R/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
       # for succesfully installed packages: keep the spack logs for any package modified during this CI job
-    - PKG_DIR=$SPACK_DEV_PATH/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
+    - PKG_DIR=$CI_PROJECT_DIR/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
     - if cd $PKG_DIR; then find . \( -name ".spack" -o -name ".build" -o -name ".spack_test_results" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi
       # for not succesfully installed packages: also keep the spack logs for any packages that failed
     - if cd /tmp/$(whoami)/spack-stage/; then find . -maxdepth 2 -name "*.txt" -exec cp --parents "{}" $CI_PROJECT_DIR/spack_logs/not_installed \;; fi
@@ -217,12 +195,6 @@ build-spack-env-on-runner:
   except:
     variables:
       - $CI_PIPELINE_SOURCE == "schedule"
-  # cache:
-  #   key: spack-cache-$CI_COMMIT_REF_SLUG
-  #   paths:
-  #     - "$SPACK_DEV_PATH"
-  #     - "$SPACK_USER_CONFIG_PATH"
-  #   when: always
 
 sync-gitlab-spack-instance:
   stage: build
@@ -232,51 +204,17 @@ sync-gitlab-spack-instance:
   image: $GITLAB_BUILD_ENV_DOCKER_IMAGE
   variables:
     SPACK_NFS_ENV: ebrains-runner-build
-    SPACK_PATH: $SPACK_PATH_GITLAB
-    SPACK_USER_CACHE_PATH: $SPACK_PATH/spack/.spack
-    SPACK_USER_CONFIG_PATH: $SPACK_PATH/spack/.spack
-    SPACK_REPO_PATH: $SPACK_PATH/ebrains-spack-builds
+    SPACK_REPO_PATH: $SPACK_PATH_GITLAB/ebrains-spack-builds
   script:
-    # clone spack if it doesn't exist
-    - |
-      if [ ! -d $SPACK_PATH/spack ]; then
-        git clone --depth 1 -c advice.detachedHead=false -c feature.manyFiles=true --branch $SPACK_VERSION https://github.com/spack/spack $SPACK_PATH/spack
-      fi
-    # SPACK PATCH: the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
-    # quick fix for that: (TODO: investigate more and open PR)
-    - sed -i "s/self.file_like, \"w\"/self.file_like, \"a\"/g" $SPACK_PATH/spack/lib/spack/llnl/util/tty/log.py
-    # activate spack
-    - . $SPACK_PATH/spack/share/spack/setup-env.sh
     # get latest state of EBRAINS repo
-    - rm -rf $SPACK_REPO_PATH && mkdir $SPACK_REPO_PATH && cp -r -t $SPACK_REPO_PATH $CI_PROJECT_DIR/{packages,repo.yaml}
-    - spack repo list | grep -q ebrains-spack-builds && echo "Repository registered already" || spack repo add $SPACK_REPO_PATH
-    - spack repo list
-    # install compiler (if not already installed)
-    - EBRAINS_SPACK_COMPILER=$(grep 'compiler' $CI_PROJECT_DIR/site-config/$SYSTEMNAME/packages.yaml | awk -F'[][]' '{ print $2 }')
-    - spack compiler find
-    - spack compiler list | grep -q $EBRAINS_SPACK_COMPILER || spack install $EBRAINS_SPACK_COMPILER
-    - spack load $EBRAINS_SPACK_COMPILER
-    - spack compiler find
-    - spack compiler list
-    # create environment, if it doesn't exist
-    - spack env list | grep -q $SPACK_NFS_ENV && echo "Environment created already" || spack env create $SPACK_NFS_ENV
-    # update environment site-configs
-    - rm -rf $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV/site-config && cp -r site-config $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV
-    # update spack.yaml: merge top-level and site-specific spack.yaml files
-    - spack-python site-config/ymerge.py spack.yaml site-config/$SYSTEMNAME/spack.yaml > /tmp/spack.yaml
-    - cp /tmp/spack.yaml $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV
-    # There is a known spack bug (https://github.com/spack/spack/issues/29447) in installing test dependencies for installation tests. The workaround suggested
-    # in the issue is to NOT concretize separately, but simply remove the .lock file and let the enironment be concretized by the spack install command:
-    - rm $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV/spack.lock || echo "No spack.lock file"
-    # then activate environment
-    - spack env activate $SPACK_NFS_ENV
-    - spack install -y -j2 --fresh --test root
-    - spack reindex
+    - rm -rf $SPACK_REPO_PATH && cp -r $CI_PROJECT_DIR $SPACK_REPO_PATH
+    # run installation script
+    - . install_spack_env.sh $SPACK_PATH_GITLAB $SPACK_VERSION $SPACK_REPO_PATH $SPACK_NFS_ENV
   after_script:
     - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
       # for succesfully installed packages: keep the spack logs for any package modified during this CI job
       # (we use repo.yaml, that is modified at each start of the pipeline, as a reference file)
-    - PKG_DIR=$SPACK_PATH/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
+    - PKG_DIR=$SPACK_PATH_GITLAB/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
     - if cd $PKG_DIR; then find . -newer $SPACK_REPO_PATH/repo.yaml \( -name ".spack" -o -name ".spack_test_results" -o -name ".build" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi
       # for not succesfully installed packages: also keep the spack logs for any packages that failed
     - if cd /tmp/$(whoami)/spack-stage/; then find . -maxdepth 2 -name "*.txt" -exec cp --parents "{}" $CI_PROJECT_DIR/spack_logs/not_installed \;; fi
diff --git a/install_spack_env.sh b/install_spack_env.sh
index 38e74bcc..758b7b5e 100644
--- a/install_spack_env.sh
+++ b/install_spack_env.sh
@@ -43,7 +43,7 @@ fi
 source $INSTALLATION_ROOT/spack/share/spack/setup-env.sh
 
 # add repo if it does not exist
-if [[ ! $(spack repo list | grep $EBRAINS_REPO) ]]
+if [[ ! $(spack repo list | grep ebrains-spack-builds$) ]]
 then
   spack repo add $EBRAINS_REPO
 fi
-- 
GitLab


From 7369afa3dd4e7fd55b3660e51b1a804c673148ec Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Tue, 26 Sep 2023 22:54:12 +0200
Subject: [PATCH 16/16] fix typo

---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e2b1238f..3abfbcc6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -181,7 +181,7 @@ build-spack-env-on-runner:
     # run installation script
     - . install_spack_env.sh $CI_PROJECT_DIR $SPACK_VERSION $CI_PROJECT_DIR $SPACK_DEV_ENV $SPACK_PATH_GITLAB
   after_script:
-    - mkdir -p .R/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
+    - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed
       # for succesfully installed packages: keep the spack logs for any package modified during this CI job
     - PKG_DIR=$CI_PROJECT_DIR/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0
     - if cd $PKG_DIR; then find . \( -name ".spack" -o -name ".build" -o -name ".spack_test_results" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi
-- 
GitLab