diff --git a/packages/py-annarchy/package.py b/packages/py-annarchy/package.py
index bf672bb8aae2b0b1697eccde4f9bbb919dbbdcd8..4368d1e01bff0165b9c77550190780df1d4b3690 100644
--- a/packages/py-annarchy/package.py
+++ b/packages/py-annarchy/package.py
@@ -13,14 +13,16 @@ class PyAnnarchy(PythonPackage):
     """
 
     homepage = "https://annarchy.readthedocs.io/en/latest/"
-    pypi = 'ANNarchy/ANNarchy-4.7.2.5.tar.gz'
+    pypi = 'ANNarchy/annarchy-4.8.2.3.tar.gz'
 
     maintainers = ['dionperd', 'paulapopa', "ldomide"]
 
+    version('4.8.2.3', '25a4d09905983ce27f7c6b4dd67a54831ea233b6b28943cb67dafd3c351d1dde')
     version('4.7.2.5', 'b7ef91cc4415e078e386eb30e595922c9f0ef90ad1340a12dc5ca46e728a7bb2')
 
     # python_requires
-    depends_on('python@3.8:3.10', type=('build', 'run'))
+    depends_on('python@3.8:3.10', when='@:4.7.2', type=('build', 'run'))
+    depends_on('python@3.10:', when='@4.7.3:', type=('build', 'run'))
 
     # setup_requires
     depends_on('py-pip', type='build')
@@ -34,6 +36,8 @@ class PyAnnarchy(PythonPackage):
     depends_on('py-sympy', type=('build', 'run'))  # >= 1.6
     depends_on('py-matplotlib', type=('build', 'run'))  # >= 2.0
     depends_on('py-cython', type=('build', 'run'))  # >= 0.20
+    depends_on('py-tqdm', when='@4.8:', type=('build', 'run'))
+    depends_on('py-h5py', when='@4.8.2:', type=('build', 'run'))
 
     # Highly recommended:
     # pyqtgraph >= 0.9.8 (to visualize some of the provided examples. The OpenGL backend can also be needed)
diff --git a/packages/py-pyspike/cython3.patch b/packages/py-pyspike/cython3.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e3e62eaf93f854b4adfd2d784b6ce57cf2706324
--- /dev/null
+++ b/packages/py-pyspike/cython3.patch
@@ -0,0 +1,24 @@
+diff --git a/setup.py b/setup.py
+index 297746d..b52cf8b 100644
+--- a/setup.py
++++ b/setup.py
+@@ -21,11 +21,14 @@ else:
+     use_cython = True
+ 
+ 
+-class numpy_include(object):
+-    """Defers import of numpy until install_requires is through"""
+-    def __str__(self):
+-        import numpy
+-        return numpy.get_include()
++class numpy_include(os.PathLike):
++     """Defers import of numpy until install_requires is through"""
++     def __str__(self):
++         import numpy
++         return numpy.get_include()
++
++     def __fspath__(self):
++         return str(self)
+ 
+ 
+ if os.path.isfile("pyspike/cython/cython_add.c") and \
diff --git a/packages/py-pyspike/package.py b/packages/py-pyspike/package.py
index 9fbe4128e3df05c14f307085bfe6d3cb5e5b32c4..ddf17e7e28afbf190937694dbdbee31b1f486edb 100644
--- a/packages/py-pyspike/package.py
+++ b/packages/py-pyspike/package.py
@@ -12,15 +12,17 @@ class PyPyspike(PythonPackage):
     """
 
     homepage = "https://github.com/mariomulansky/PySpike"
-    pypi = 'pyspike/pyspike-0.7.0.tar.gz'
+    url = 'https://github.com/mariomulansky/PySpike/archive/refs/tags/0.8.0.tar.gz'
 
     maintainers = ['dionperd', 'paulapopa', "ldomide"]
 
-    version('0.8.0', '76137b861ed531608aaf55af1a5ebf8a586e98653dab2467b4c1da7b2d9aa4e5')
-    version('0.7.0', 'a5d1c1472d3e7c3ac85c8a4ce069d750cca02acf18f185677b29c0a757e78efe')
+    version('0.8.0', '199d41af097e0b6e6583e22d4a9c3cedab51ceba4da2d940682ffefe8120a414')
+    version('0.7.0', '47031ba10a5726845982b62dcae970449ca50c4be9985a1ed0d2a021456bf25a')
+
+    patch("cython3.patch", when="^py-cython@3:")
 
     # python_requires
-    depends_on('python@3.8:3.10', type=('build', 'run'))
+    depends_on('python@3.8:', type=('build', 'run'))
 
     # setup_requires
     depends_on('py-pip', type='build')
@@ -31,10 +33,10 @@ class PyPyspike(PythonPackage):
     depends_on('py-scipy', type=('build', 'run'))
     depends_on('py-matplotlib', type=('build', 'run'))
     depends_on('py-pytest', type=('build', 'run'))
-    depends_on('py-cython@:2', type=('build', 'run'))
+    depends_on('py-cython', type=('build', 'run'))
 
     # Test dependency
-    depends_on('py-pytest@:7.1', type='test')
+    depends_on('py-pytest', type='test')
     
     @run_after('install')
     @on_package_attributes(run_tests=True)
diff --git a/packages/py-ray/package.py b/packages/py-ray/package.py
index 82ba34c49b9369fdb272d674ace93d11f7f88390..f1bf4b7207ed9fe7a5a35f7e1649ca0b1cdcfb1e 100644
--- a/packages/py-ray/package.py
+++ b/packages/py-ray/package.py
@@ -15,7 +15,10 @@ class PyRay(PythonPackage):
 
     license("Apache-2.0")
 
-    # begin EBRAINS (added): ECM new node-js -> new react whatever -> new py-ray
+    # begin EBRAINS (added): new versions
+    # new version to allow building with newer bazel
+    version("2.30.0", sha256="854d549a77f0b0e810d1e9a18e7becf984279e2a0bfad5bed508f500ff770e34")
+    # ECM: new node-js -> new react whatever -> new py-ray
     version("2.4.0", sha256="b0110a84630b2f6d10cd13e8ac955875c3658373eb6cabcc77cf316de3c28066")
     # end EBRAINS
     version("2.0.1", sha256="b8b2f0a99d2ac4c001ff11c78b4521b217e2a02df95fb6270fd621412143f28b")
@@ -30,18 +33,20 @@ class PyRay(PythonPackage):
     conflicts("node-js@17:", when="@:2.0.1")
     # end EBRAINS
 
-    # begin EBRAINS (added): ElM add missing dependencies/constraints for added version 2.4.0
+    # begin EBRAINS (added): ElM add missing dependencies/constraints for added versions
+    depends_on("python@3.9:3.12", when="@2.30.0", type=("build", "run"))
     depends_on("python@3.6:3.11", when="@2.4.0", type=("build", "run"))
+    depends_on("bazel@6.5", when="@2.30.0", type="build")
     depends_on("bazel@5", when="@2.4.0", type="build")
-    depends_on("py-cython@0.29.32:", when="@2.4.0", type="build")
+    depends_on("py-cython@0.29.32:", when="@2.4.0:", type="build")
     depends_on("py-attrs", when="@2.4.0", type=("build", "run"))
-    depends_on("py-click@7.0:", when="@2.4.0", type=("build", "run"))
-    depends_on("py-grpcio@1.32:1.51.3", when="@2.4.0 ^python@:3.9", type=("build", "run"))
-    depends_on("py-grpcio@1.42:1.51.3", when="@2.4.0 ^python@3.10:", type=("build", "run"))
-    depends_on("py-protobuf@3.15.3:", when="@2.4.0", type=("build", "run"))
+    depends_on("py-click@7.0:", when="@2.4.0:", type=("build", "run"))
+    depends_on("py-grpcio@1.32:1.51.3", when="@2.4.0: ^python@:3.9", type=("build", "run"))
+    depends_on("py-grpcio@1.42:1.51.3", when="@2.4.0: ^python@3.10:", type=("build", "run"))
+    depends_on("py-protobuf@3.15.3:", when="@2.4.0:", type=("build", "run"))
     depends_on("py-frozenlist", when="@2.4.0", type=("build", "run"))
     depends_on("py-typing-extensions", when="@2.4.0 ^python@:3.7", type=("build", "run"))
-    depends_on("py-virtualenv@20.0.24:", when="@2.4.0", type=("build", "run"))
+    depends_on("py-virtualenv@20.0.24:", when="@2.4.0:", type=("build", "run"))
     # end EBRAINS
 
     depends_on("python@3.6:3.10", when="@2.0.1", type=("build", "run"))
@@ -113,7 +118,7 @@ class PyRay(PythonPackage):
     build_directory = "python"
 
     # begin EBRAINS (added): fix boost download url
-    patch("fix-url-boost.patch", when="@2.4.0:")
+    patch("fix-url-boost.patch", when="@2.4.0")
     # end EBRAINS
 
     def patch(self):
diff --git a/packages/py-tvb-multiscale/package.py b/packages/py-tvb-multiscale/package.py
index 7b78790a82f40291ab64dc1439b0b55a1bd353c0..b57b8f03b4376d6a3d5de7ec91522913ebd5e0c6 100644
--- a/packages/py-tvb-multiscale/package.py
+++ b/packages/py-tvb-multiscale/package.py
@@ -21,7 +21,7 @@ class PyTvbMultiscale(PythonPackage):
     patch('tvb-multiscale-2.1.0-version-pep440.patch', when='@2.1.0.ebrains')
 
     # python_requires
-    depends_on('python@3.8:3.10', type=('build', 'run'))
+    depends_on('python@3.8:3.11', type=('build', 'run'))
 
     # setup_requires
     depends_on('py-pip', type='build')
@@ -39,7 +39,7 @@ class PyTvbMultiscale(PythonPackage):
     depends_on('py-ray', type=('build', 'run'))
 
     # Test dependency
-    depends_on('py-pytest@:7.1', type='test')
+    depends_on('py-pytest', type='test')
     
     @run_after('install')
     @on_package_attributes(run_tests=True)
diff --git a/spack.yaml b/spack.yaml
index 738c774ac7c617eb57b6c82e27a3b07b1bc91600..e278c469b6a9fd72346c42ce00c6332f55c0f070 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -55,7 +55,7 @@ spack:
     - py-tvb-framework@2.9
     - py-tvb-contrib@2.9.1
     - py-tvb-library@2.9.2
-#    - py-tvb-multiscale@2.1.0.ebrains
+    - py-tvb-multiscale@2.1.0.ebrains
     - py-tvb-widgets@2.1.0
     - py-tvb-ext-bucket
     - py-tvb-ext-unicore