diff --git a/packages/bazel/package.py b/packages/bazel/package.py
index e3253b77a04fe12f8fd1dc06fc9bc1f1596d01fe..102bb5c5771ddec533b4c83dbfd65a0584e60186 100644
--- a/packages/bazel/package.py
+++ b/packages/bazel/package.py
@@ -413,8 +413,9 @@ class Bazel(Package):
         "required for most builds using bazel with spack",
     )
 
-    # to provide ld via GCC_HOST_COMPILER_PREFIX
+    # begin EBRAINS (added): to provide ld via GCC_HOST_COMPILER_PREFIX
     depends_on("binutils", type=("build"))
+    # end EBRAINS
 
     # https://bazel.build/install/compile-source#bootstrap-unix-prereq
     depends_on("java", type=("build", "run"))
@@ -439,7 +440,7 @@ class Bazel(Package):
     patch("cc_configure-0.3.0.patch", when="@0.3:0.4")
 
     # Set CC and CXX
-    # begin EBRAINS: modified, bring upstream after checking since when this is breaking the build
+    # begin EBRAINS (modified): bring upstream after checking since when this is breaking the build
     patch("compile-0.29.patch", when="@0.29:5.3")
     # end EBRAINS
     patch("compile-0.21.patch", when="@0.21:0.28")
@@ -514,8 +515,10 @@ class Bazel(Package):
 
         return url.format(version)
 
+    # begin EBRAINS (added)
     def setup_dependent_build_environment(self, env, dependent_spec):
         env.prepend_path("GCC_HOST_COMPILER_PREFIX", self.spec['binutils'].prefix.bin)
+    # end EBRAINS
 
     def setup_build_environment(self, env):
         # fix the broken linking (on power9)
@@ -529,7 +532,7 @@ class Bazel(Package):
             "--color=no --host_javabase=@local_jdk//:jdk"
             # Enable verbose output for failures
             " --verbose_failures"
-            # begin EBRAINS: modified, bring upstream after checking since when the compile-x.patch is breaking the build
+            # begin EBRAINS (modified): bring upstream after checking since when the compile-x.patch is breaking the build
             # expose CC and CXX (the spack compiler wrappers)
             " --action_env=CC"
             " --action_env=CXX"
diff --git a/packages/gcc/package.py b/packages/gcc/package.py
index 4a43a9cb4638adcd3090c2c0836f20059cd732e5..4eb88a25ac7f0e2f7ea8aeef333fb17a1e38cb48 100644
--- a/packages/gcc/package.py
+++ b/packages/gcc/package.py
@@ -483,11 +483,13 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
     patch("patch-f1feb74046e0feb0596b93bbb822fae02940a90e.patch", when="@11.1")
 
     # libstdc++: Fix inconsistent noexcept-specific for valarray begin/end
+    # begin EBRAINS (modified)
     patch(
         "https://github.com/gcc-mirror/gcc/commit/423cd47cfc9640ba3d6811b780e8a0b94b704dcb.patch?full_index=1",
         sha256="0d136226eb07bc43f1b15284f48bd252e3748a0426b5d7ac9084ebc406e15490",
         when="@9.5.0,10.4.0",
     )
+    # end EBRAINS
 
     build_directory = "spack-build"
 
diff --git a/packages/libvips/package.py b/packages/libvips/package.py
index fbea322a46cae28b3ca8d078223940df32b225be..ab8a88497809374429992e5176521e609fc2fee1 100644
--- a/packages/libvips/package.py
+++ b/packages/libvips/package.py
@@ -32,7 +32,9 @@ class Libvips(AutotoolsPackage):
 
     # TODO: Add more variants!
 
+    # begin EBRAINS (added)
     depends_on("pkgconfig", type="build")
+    # end EBRAINS
 
     depends_on("glib")
     depends_on("expat")
@@ -43,9 +45,9 @@ class Libvips(AutotoolsPackage):
     depends_on("libpng", when="+png")
     depends_on("poppler", when="+poppler")
 
-    # quick fix for build errors
+    # begin EBRAINS (added): to fix build errors
     depends_on("gobject-introspection")
     depends_on("cfitsio")
     depends_on("pango")
     depends_on("libtiff")
-
+    # end EBRAINS
diff --git a/packages/libxcb/package.py b/packages/libxcb/package.py
index 9f800be65d99921c212608b3079064fee829bcd8..2cb1418ce4ac18d221f7c2b0c3932692ae65c483 100644
--- a/packages/libxcb/package.py
+++ b/packages/libxcb/package.py
@@ -27,7 +27,9 @@ class Libxcb(AutotoolsPackage):
     depends_on("xcb-proto@1.14:", when="@1.14")
     depends_on("xcb-proto@1.13:", when="@1.13")
 
+    # begin EBRAINS (deleted): break cyclic dependency in python+tkinter
     # depends_on("python", type="build")
+    # end EBRAINS
     depends_on("pkgconfig", type="build")
     depends_on("util-macros", type="build")
 
diff --git a/packages/log4cxx/package.py b/packages/log4cxx/package.py
index 5809e12a72d0103d31af54a9f2e9cba9881ff220..13bfc90b22bfd846f4c865723eacffea379af6ec 100644
--- a/packages/log4cxx/package.py
+++ b/packages/log4cxx/package.py
@@ -22,10 +22,12 @@ class Log4cxx(CMakePackage):
     version("0.12.0", sha256="bd5b5009ca914c8fa7944b92ea6b4ca6fb7d146f65d526f21bf8b3c6a0520e44")
 
     variant("cxxstd", default="17", description="C++ standard", values=("11", "17"), multi=False)
+    # begin EBRAINS (added)
     variant("events_at_exit",
             default=False,
             description="Enable to use logging during the application termination"
             )
+    # end EBRAINS
 
     depends_on("cmake@3.13:", type="build")
 
@@ -39,5 +41,7 @@ class Log4cxx(CMakePackage):
         return [
             self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
             self.define("BUILD_TESTING", "off"),
+            # begin EBRAINS (added)
             self.define_from_variant("LOG4CXX_EVENTS_AT_EXIT", "events_at_exit"),
+            # end EBRAINS
         ]
diff --git a/packages/nanoflann/package.py b/packages/nanoflann/package.py
index 9861f3e89d1b85af2cefb806988fe8363e2e9901..7dd9d7f3ce9f4434bdef8cd060e5bb0f18fa622e 100644
--- a/packages/nanoflann/package.py
+++ b/packages/nanoflann/package.py
@@ -12,7 +12,7 @@ class Nanoflann(CMakePackage):
     homepage = "https://github.com/jlblancoc/nanoflann"
     url = "https://github.com/jlblancoc/nanoflann/archive/v1.2.3.tar.gz"
 
-    # begine EBRAINS: add version
+    # begin EBRAINS (added): add version
     version("1.5.4", sha256="a7f64d0bdff42614c561e52680b16de46c0edac9719f21f935c5e1f8b0654afc")
     # end EBRAINS
     version("1.4.3", sha256="cbcecf22bec528a8673a113ee9b0e134f91f1f96be57e913fa1f74e98e4449fa")
@@ -24,4 +24,3 @@ class Nanoflann(CMakePackage):
     def cmake_args(self):
         args = ["-DBUILD_SHARED_LIBS=ON"]
         return args
-
diff --git a/packages/netlib-xblas/package.py b/packages/netlib-xblas/package.py
index c24b4550de0c6599dc66d5d544820b008a83b864..cc65577f55f79342bf7bfe41ed27f6c55dac510e 100644
--- a/packages/netlib-xblas/package.py
+++ b/packages/netlib-xblas/package.py
@@ -30,7 +30,9 @@ class NetlibXblas(AutotoolsPackage):
 
     provides("blas", when="+plain_blas")
 
+    # begin EBRAINS (added)
     depends_on("m4", type="build")
+    # end EBRAINS
 
     @property
     def libs(self):
diff --git a/packages/open3d/package.py b/packages/open3d/package.py
index ef4c5843fd5ce1047ab1d8d5135bbd3340254f80..f3d2f6266e8331bd19b00fc753be1c21e985bffb 100644
--- a/packages/open3d/package.py
+++ b/packages/open3d/package.py
@@ -10,7 +10,6 @@ from llnl.util import filesystem
 from spack.package import *
 
 
-# begin EBRAINS: modified (based on spack/0.21.2)
 class Open3d(CMakePackage, CudaPackage):
     """Open3D: A Modern Library for 3D Data Processing."""
 
@@ -18,7 +17,7 @@ class Open3d(CMakePackage, CudaPackage):
     url = "https://github.com/isl-org/Open3D/archive/refs/tags/v0.13.0.tar.gz"
     git = "https://github.com/isl-org/Open3D.git"
 
-    # begin EBRAINS: added v0.18.0
+    # begin EBRAINS (added): add version
     version("0.18.0", tag="v0.18.0", submodules=True)
     # end EBRAINS
     version("0.13.0", tag="v0.13.0", submodules=True)
@@ -31,7 +30,7 @@ class Open3d(CMakePackage, CudaPackage):
     # https://github.com/isl-org/Open3D/issues/3762
     # https://github.com/isl-org/Open3D/issues/4570
     depends_on("llvm@7:+clang")
-    # begin EBRAINS: modified
+    # begin EBRAINS (modified)
     depends_on("eigen", type=("build"))
     depends_on("flann", when="@:0.13")
     # https://github.com/isl-org/Open3D/issues/4360
@@ -53,7 +52,7 @@ class Open3d(CMakePackage, CudaPackage):
     # depends_on('tinygltf')
     # depends_on('tinyobjloader')
 
-    # begin EBRAINS: added
+    # begin EBRAINS (added)
     depends_on("assimp", when="@0.15:")
     depends_on("jsoncpp", when="@0.15:")
     depends_on("msgpack-c", when="@0.15:")
@@ -71,10 +70,12 @@ class Open3d(CMakePackage, CudaPackage):
     depends_on("py-setuptools@40.8:", when="+python", type="build")
     depends_on("py-wheel@0.36:", when="+python", type="build")
     depends_on("py-numpy@1.18:", when="+python", type=("build", "run"))
+    # begin EBRAINS (added): add python dependencies
     depends_on("py-dash@2.6.0:", when="+python", type=("build", "run"))
     depends_on("py-nbformat@5.7.0:", when="+python", type=("build", "run"))
     depends_on("py-werkzeug@2.2.3:", when="+python", type=("build", "run"))
     depends_on("py-configargparse", when="+python", type=("build", "run"))
+    # end EBRAINS
     depends_on("py-pytest", when="+python", type="test")
     depends_on("cuda@10.1:", when="+cuda")
 
@@ -85,19 +86,23 @@ class Open3d(CMakePackage, CudaPackage):
     # LLVM must be built with the C++ library
     conflicts("^llvm libcxx=none")
 
+    # begin EBRAINS (added)
     patch("glew-no-glu.patch")
+    # end EBRAINS
 
     def patch(self):
         # Force Python libraries to be installed to self.prefix
+        # begin EBRAINS (modified)
         args = std_pip_args + ["--prefix=" + self.prefix]
         filter_file(
             "pip install",
             "pip " + " ".join(args),
             os.path.join("cpp", "pybind", "make_install_pip_package.cmake"),
         )
+        # end EBRAINS
 
     def cmake_args(self):
-        # begin EBRAINS: modified
+        # begin EBRAINS (modified)
         libcxx_paths = filesystem.find_libraries(
             "libc++", self.spec["llvm"].prefix, shared=True, recursive=True
         )
@@ -160,14 +165,14 @@ class Open3d(CMakePackage, CudaPackage):
         return args
 
     def check(self):
-        # begin EBRAINS: modified
+        # begin EBRAINS (modified)
         with working_dir(self.builder.build_directory):
         # end EBRAINS
             tests = Executable(os.path.join("bin", "tests"))
             tests()
 
     def install(self, spec, prefix):
-        # begin EBRAINS: modified
+        # begin EBRAINS (modified)
         with working_dir(self.builder.build_directory):
         # end EBRAINS
             make("install")
@@ -192,5 +197,3 @@ class Open3d(CMakePackage, CudaPackage):
                 purpose="checking import of open3d",
                 work_dir="spack-test",
             )
-# end EBRAINS
-
diff --git a/packages/openbabel/package.py b/packages/openbabel/package.py
index 46c7825e874e5acb2eab2af88c69b4f7512b178f..176415098af865c9e8b772907ad82bab4fb2092e 100644
--- a/packages/openbabel/package.py
+++ b/packages/openbabel/package.py
@@ -58,8 +58,10 @@ class Openbabel(CMakePackage):
     # Convert tabs to spaces. Allows unit tests to pass
     patch("testpdbformat-tabs-to-spaces.patch", when="@:2.4.1")
 
+    # begin EBRAINS (added)
     # CMake: fix time check typo (fixes build failure w/ GCC 12)
     patch("gcc12-cmake.patch", when="@:3.1.1")
+    # end EBRAINS
 
     def cmake_args(self):
         spec = self.spec
diff --git a/packages/py-astropy/package.py b/packages/py-astropy/package.py
index c5ca992b0d00ed7159c51591011b2bf886caa873..a58d9ebe434e49def4d70c3b52db48cdce77091f 100644
--- a/packages/py-astropy/package.py
+++ b/packages/py-astropy/package.py
@@ -17,7 +17,9 @@ class PyAstropy(PythonPackage):
     pypi = "astropy/astropy-4.0.1.post1.tar.gz"
     git = "https://github.com/astropy/astropy.git"
 
+    # begin EBRAINS (added): add version
     version("5.2.2", sha256="e6a9e34716bda5945788353c63f0644721ee7e5447d16b1cdcb58c48a96b0d9c")
+    # end EBRAINS
     version("5.1", sha256="1db1b2c7eddfc773ca66fa33bd07b25d5b9c3b5eee2b934e0ca277fa5b1b7b7e")
     version(
         "4.0.1.post1", sha256="5c304a6c1845ca426e7bc319412b0363fccb4928cb4ba59298acd1918eec44b5"
@@ -47,7 +49,9 @@ class PyAstropy(PythonPackage):
     depends_on("py-pyyaml@3.13:", when="@5.1:", type=("build", "run"))
     depends_on("py-pyerfa@2.0:", when="@5.1:", type=("build", "run"))
     depends_on("py-setuptools-scm@6.2:", when="@5.1:", type="build")
+    # begin EBRAINS (modified)
     depends_on("py-cython@0.29.30:", when="@5.1:", type="build")
+    # end EBRAINS
     depends_on("py-extension-helpers", when="@5.1:", type="build")
     depends_on("pkgconfig", type="build")
 
diff --git a/packages/py-autopep8/package.py b/packages/py-autopep8/package.py
index 3a5b973ed51c68acd70741743c4efcca17678560..e09fd53fc80ad1deb43e5753715efaadba83a7b1 100644
--- a/packages/py-autopep8/package.py
+++ b/packages/py-autopep8/package.py
@@ -13,7 +13,7 @@ class PyAutopep8(PythonPackage):
     homepage = "https://github.com/hhatto/autopep8"
     pypi = "autopep8/autopep8-1.2.4.tar.gz"
 
-    # begin EBRAINS (added): added new version
+    # begin EBRAINS (added): add version
     version("2.0.4", sha256="2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c")
     # end EBRAINS
     version("1.7.0", sha256="ca9b1a83e53a7fad65d731dc7a2a2d50aa48f43850407c59f6a1a306c4201142")
diff --git a/packages/py-bokeh/package.py b/packages/py-bokeh/package.py
index 51d5f8b40c4f2de7420d6798a4c389c62286a66f..5c92e1664b700818cd2b2d21723f599aac16e80b 100644
--- a/packages/py-bokeh/package.py
+++ b/packages/py-bokeh/package.py
@@ -1,5 +1,3 @@
-# this package was adapted from Spack upstream v0.20.0, to add missing nmp dependency
-
 # Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
 # Spack Project Developers. See the top-level COPYRIGHT file for details.
 #
@@ -23,7 +21,9 @@ class PyBokeh(PythonPackage):
 
     depends_on("py-setuptools", type="build", when="@1.3.4:")
 
+    # begin EBRAINS (added)
     depends_on("npm", type=("build", "run"))
+    # end EBRAINS
 
     depends_on("python@2.6:", type=("build", "run"), when="@0.12.2")
     depends_on("python@2.7:", type=("build", "run"), when="@1.3.4:")
diff --git a/packages/py-chex/package.py b/packages/py-chex/package.py
index 95a01b30679920e5e3dae81dd004a188611413a3..86c2f71a59cb584e63136046250c610aa2b467e3 100644
--- a/packages/py-chex/package.py
+++ b/packages/py-chex/package.py
@@ -6,7 +6,6 @@
 from spack.package import *
 
 
-# EBRAINS: based on spack/0.21.2
 class PyChex(PythonPackage):
     """Chex is a library of utilities for helping to write reliable JAX code."""
 
@@ -15,8 +14,8 @@ class PyChex(PythonPackage):
 
     # begin EBRAINS (added): bring upstream
     version("0.1.7", sha256="74ed49799ac4d229881456d468136f1b19a9f9839e3de72b058824e2a4f4dedd")
-    version("0.1.5", sha256="686858320f8f220c82a6c7eeb54dcdcaa4f3d7f66690dacd13a24baa1ee8299e")
     # end EBRAINS
+    version("0.1.5", sha256="686858320f8f220c82a6c7eeb54dcdcaa4f3d7f66690dacd13a24baa1ee8299e")
     version("0.1.0", sha256="9e032058f5fed2fc1d5e9bf8e12ece5910cf6a478c12d402b6d30984695f2161")
 
     depends_on("python@3.7:", type=("build", "run"))
diff --git a/packages/py-ipycanvas/package.py b/packages/py-ipycanvas/package.py
index 724d1df4272476869f05f6a351c49a0c73d38637..f9cd586a324cf1bbcbe531a1ad7babfb57a27c47 100644
--- a/packages/py-ipycanvas/package.py
+++ b/packages/py-ipycanvas/package.py
@@ -1,5 +1,3 @@
-# this package was adapted from Spack upstream v0.19.2, to add version 0.12.0
-
 # Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
 # Spack Project Developers. See the top-level COPYRIGHT file for details.
 #
@@ -14,13 +12,17 @@ class PyIpycanvas(PythonPackage):
     homepage = "https://github.com/martinRenou/ipycanvas"
     pypi = "ipycanvas/ipycanvas-0.9.0.tar.gz"
 
+    # begin EBRAINS (added): add version
     version("0.12.0", sha256="3984339cef0c15674e347dd65ffb0cd1edc62e37869cbb5efea46f3259e976f3")
+    # end EBRAINS
     version("0.10.2", sha256="a02c494834cb3c60509801172e7429beae837b3cb6c61d3becf8b586c5a66004")
     version("0.9.0", sha256="f29e56b93fe765ceace0676c3e75d44e02a3ff6c806f3b7e5b869279f470cc43")
 
     depends_on("python@3.5:", type=("build", "run"))
-    depends_on("python@3.6:", when="@10:", type=("build", "run"))
-    depends_on("python@3.7:", when="@11:", type=("build", "run"))
+    # begin EBRAINS (added)
+    depends_on("python@3.6:", when="@0.10:", type=("build", "run"))
+    depends_on("python@3.7:", when="@0.11:", type=("build", "run"))
+    # end EBRAINS
     depends_on("py-setuptools@40.8:", type="build")
     depends_on("py-jupyter-packaging@0.7", type="build")
     depends_on("py-jupyterlab@3.0:3", type="build")
diff --git a/packages/py-jax/package.py b/packages/py-jax/package.py
index c22488e4e079a5e4b1bcb46d8e46db3564516a5c..5d57d7ec983200b1c78adccb811608e4993b802a 100644
--- a/packages/py-jax/package.py
+++ b/packages/py-jax/package.py
@@ -6,7 +6,6 @@
 from spack.package import *
 
 
-# EBRAINS: based on spack/0.21.2
 class PyJax(PythonPackage):
     """JAX is Autograd and XLA, brought together for high-performance
     machine learning research. With its updated version of Autograd,
diff --git a/packages/py-jaxlib/package.py b/packages/py-jaxlib/package.py
index eb5ca0bda89c82231370ad27740befb4b5c3e0ed..20b2683ca313882e157298991835e8401ea498ec 100644
--- a/packages/py-jaxlib/package.py
+++ b/packages/py-jaxlib/package.py
@@ -8,7 +8,6 @@ import tempfile
 from spack.package import *
 
 
-# EBRAINS: based on spack/0.21.2
 class PyJaxlib(PythonPackage, CudaPackage):
     """XLA library for Jax"""
 
@@ -66,9 +65,26 @@ class PyJaxlib(PythonPackage, CudaPackage):
     depends_on("py-absl-py", when="@:0.3", type=("build", "run"))
     depends_on("py-flatbuffers@1.12:2", when="@0.1", type=("build", "run"))
 
+    conflicts(
+        "cuda_arch=none",
+        when="+cuda",
+        msg="Must specify CUDA compute capabilities of your GPU, see "
+        "https://developer.nvidia.com/cuda-gpus",
+    )
+
     def patch(self):
         self.tmp_path = tempfile.mkdtemp(prefix="spack")
         self.buildtmp = tempfile.mkdtemp(prefix="spack")
+        filter_file(
+            "build --spawn_strategy=standalone",
+            f"""
+# Limit CPU workers to spack jobs instead of using all HOST_CPUS.
+build --spawn_strategy=standalone
+build --local_cpu_resources={make_jobs}
+""".strip(),
+            ".bazelrc",
+            string=True,
+        )
         filter_file(
             'f"--output_path={output_path}",',
             'f"--output_path={output_path}",'
diff --git a/packages/py-meautility/package.py b/packages/py-meautility/package.py
deleted file mode 100644
index e27ef48d98334b51375f3f4357205d25572683cc..0000000000000000000000000000000000000000
--- a/packages/py-meautility/package.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# 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 PyMeautility(PythonPackage):
-    """Python package for multi-electrode array (MEA) handling and stimulation.
-    """
-
-    homepage = 'https://meautility.readthedocs.io'
-    pypi = "MEAutility/MEAutility-1.5.1.tar.gz"
-    git = 'https://github.com/alejoe91/MEAutility.git'
-
-    maintainers = ['alejoe91']
-
-    version('1.5.0', sha256='6bad687c2cb4d3668f15cddf247b06f4da56e9e4d80d6935977d003dbc1cb31b')
-    version('1.5.1', sha256='de12cc9c1772d3321e941af78e6bfb36cdcb5702a7b1272a852cc95f413bbfcb')
-
-    depends_on('python@3.8:', type=('build', 'run'))
-    depends_on('py-pip', type='build')
-    depends_on('py-matplotlib', type=('build', 'run'))
-    depends_on('py-numpy', type=('build', 'run'))
-    depends_on('py-pyyaml', type=('build', 'run'))
-    depends_on('py-setuptools', type=('build', 'run'))
-    depends_on('py-pytest', type='test')
diff --git a/packages/py-nose/package.py b/packages/py-nose/package.py
deleted file mode 100644
index 175d37f0449b680550c1a2e242c2fc39c6e4e5f0..0000000000000000000000000000000000000000
--- a/packages/py-nose/package.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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.package import *
-
-
-class PyNose(PythonPackage):
-    """nose extends the test loading and running features of unittest,
-    making it easier to write, find and run tests."""
-
-    url = "https://pypi.org/packages/py3/n/nose/nose-1.3.7-py3-none-any.whl"
-
-    version("1.3.7", sha256="9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac", expand=False)
-    version("1.3.6", sha256="e19b4f8a495681c367ab56c3c04f8bef30ddd7907ddfd9bee663a3f3286762b6", expand=False)
-    version("1.3.4", sha256="cc8aebdec5a5fb989912f157f77b3c21a5e2f2da623af90a7b476b106a834abf", expand=False)
-
-    # no need for setuptools when using wheels
-    # depends_on("py-setuptools@:57", type="build")
diff --git a/packages/py-numba/package.py b/packages/py-numba/package.py
index 27f1c6fce2a6a83b0bc6827b59ea3a064352edf7..6c0ee7b2394202d39a95506f2a7bd1707a659d64 100644
--- a/packages/py-numba/package.py
+++ b/packages/py-numba/package.py
@@ -57,4 +57,3 @@ class PyNumba(PythonPackage):
     # begin EBRAINS (added): numba>=0.57 requires at least version 14.0.0 of LLVM
     conflicts("llvm@:13", when="@0.57.0:")
     # end EBRAINS
-
diff --git a/packages/py-pycuda/package.py b/packages/py-pycuda/package.py
index 2eefc2d958b87225ca04c5d885a9d567ca5105de..98691d68595bc90fd4605519222a87d5c5003b8c 100644
--- a/packages/py-pycuda/package.py
+++ b/packages/py-pycuda/package.py
@@ -15,7 +15,7 @@ class PyPycuda(PythonPackage):
     homepage = "https://mathema.tician.de/software/pycuda/"
     pypi = "pycuda/pycuda-2019.1.2.tar.gz"
 
-    # begin EBRAINS (added): added new version
+    # begin EBRAINS (added): add version
     version("2023.1", sha256="175ff675f0cf10e38e9adc03ed5df3ed8d8abf7da5134c8dccec752e8a0a3e91")
     # end EBRAINS
     version("2021.1", sha256="ab87312d0fc349d9c17294a087bb9615cffcf966ad7b115f5b051008a48dd6ed")
diff --git a/packages/py-pyviz-comms/package.py b/packages/py-pyviz-comms/package.py
index be6aa81203f8a13aa2343af858f9615442ca39d3..0e6d6c84a0248e8839a10dc10fc117896ea87d84 100644
--- a/packages/py-pyviz-comms/package.py
+++ b/packages/py-pyviz-comms/package.py
@@ -1,5 +1,3 @@
-# this package was adapted from Spack upstream v0.20.0, to add version 2.3.2 (that supports setuptools>60)
-
 # Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
 # Spack Project Developers. See the top-level COPYRIGHT file for details.
 #
@@ -14,9 +12,13 @@ class PyPyvizComms(PythonPackage):
     homepage = "https://holoviz.org/"
     pypi = "pyviz_comms/pyviz_comms-2.2.1.tar.gz"
 
+    # begin EBRAINS (added): add version
     version("2.3.2", sha256="542a10fed8242d3a9d468ed0a14d6a2537e589c3f8a7986c79c374591254d6b4")
+    # end EBRAINS
     version("2.2.1", sha256="a26145b8ce43d2d934b3c6826d77b913ce105c528eb2e494c890b3e3525ddf33")
 
+    # begin EBRAINS (modified)
     depends_on("py-setuptools@40.8:", type="build")
     depends_on("py-setuptools@40.8:60", type="build", when="@:2.2.1")
+    # end EBRAINS
     depends_on("py-param", type=("build", "run"))
diff --git a/packages/py-ray/package.py b/packages/py-ray/package.py
index 535f9a6cfd03686cc41afc8dfe55f6d7fae2545c..453f371f51200cf69824f2ac31e92830fa23f5ad 100644
--- a/packages/py-ray/package.py
+++ b/packages/py-ray/package.py
@@ -42,7 +42,7 @@ class PyRay(PythonPackage):
     depends_on("python@3.6:3.8", when="@0.8.7", type=("build", "run"))
     # begin EBRAINS (modified): ECM relax constraint to allow newer bazel
     depends_on("bazel@4.2.2:5", when="@2.0.1", type="build")
-    # end EBRAINS (modified)
+    # end EBRAINS
     depends_on("bazel@3.2.0", when="@0.8.7", type="build")
     depends_on("npm", type="build")
     depends_on("py-setuptools", type="build")
diff --git a/packages/py-sympy/package.py b/packages/py-sympy/package.py
index 45a09ce12f535280fe5e0ddeb9ae9c25c85b0200..b7f5b90e9929484373843699a82c426c80cf196f 100644
--- a/packages/py-sympy/package.py
+++ b/packages/py-sympy/package.py
@@ -12,8 +12,10 @@ class PySympy(PythonPackage):
     pypi = "sympy/sympy-0.7.6.tar.gz"
 
     version("1.11.1", sha256="e32380dce63cb7c0108ed525570092fd45168bdae2faa17e528221ef72e88658")
+    # begin EBRAINS (added): add versions
     version("1.10.1", sha256="5939eeffdf9e152172601463626c022a2c27e75cf6278de8d401d50c9d58787b")
     version("1.9", sha256="c7a880e229df96759f955d4f3970d4cabce79f60f5b18830c08b90ce77cd5fdc")
+    # end EBRAINS
     version("1.8", sha256="1ca588a9f6ce6a323c5592f9635159c2093572826668a1022c75c75bdf0297cb")
     version("1.7.1", sha256="a3de9261e97535b83bb8607b0da2c7d03126650fafea2b2789657b229c246b2e")
     version("1.7", sha256="9104004669cda847f38cfd8cd16dd174952c537349dbae740fea5331d2b3a51b")
diff --git a/packages/sbml/package.py b/packages/sbml/package.py
index 051e045fec00d2952f695627aa493335773862f2..e1bfdcefb161463660f4b55f479b3dd29fb088a4 100644
--- a/packages/sbml/package.py
+++ b/packages/sbml/package.py
@@ -14,7 +14,9 @@ class Sbml(CMakePackage):
     homepage = "https://sbml.org"
     maintainers("rblake-llnl")
 
+    # begin EBRAINS (added): add version
     version("5.19.0", sha256="a7f0e18be78ff0e064e4cdb1cd86634d08bc33be5250db4a1878bd81eeb8b547")
+    # end EBRAINS
     version("5.18.0", sha256="6c01be2306ec0c9656b59cb082eb7b90176c39506dd0f912b02e08298a553360")
     version("5.17.0", sha256="189216e1472777e4464b791c506b79267d07a5454cb23ac991452711f8e0ed3a")
     version("5.16.0", sha256="c6855481434dd2a667fef73e1ff2feade509aa2f3a76d4d06e29022975ce1496")
@@ -116,7 +118,7 @@ class Sbml(CMakePackage):
         else:
             args.append("-DWITH_MATLAB:BOOL=OFF")
 
-        # fix issue with finding existing R libs/headers
+        # begin EBRAINS (added): fix issue with finding existing R libs/headers
         if "+r" in spec:
             args.extend(
                 [
@@ -124,13 +126,15 @@ class Sbml(CMakePackage):
                     "-DR_INCLUDE_DIRS=%s" % spec["r"].prefix.rlib.R.include
                 ]
             )
+        # end EBRAINS
 
         args.append(self.define_from_variant("WITH_OCTAVE", "octave"))
         args.append(self.define_from_variant("WITH_PERL", "perl"))
         args.append(self.define_from_variant("WITH_R", "r"))
         args.append(self.define_from_variant("WITH_RUBY", "ruby"))
 
-        # fix issue with finding existing libxml2
+        # begin EBRAINS (added): fix issue with finding existing libxml2
         args.append("-DLIBXML_INCLUDE_DIR=%s" % spec["libxml2"].prefix.include.libxml2)
+        # end EBRAINS
 
         return args
diff --git a/packages/xcb-proto/package.py b/packages/xcb-proto/package.py
index 50a7ceea8f3cbd63761866aab54242eecbad4d99..ea7c6a7ac07e5961cc27a19ef5e56ee357c5ebdd 100644
--- a/packages/xcb-proto/package.py
+++ b/packages/xcb-proto/package.py
@@ -20,7 +20,9 @@ class XcbProto(AutotoolsPackage):
     version("1.12", sha256="cfa49e65dd390233d560ce4476575e4b76e505a0e0bacdfb5ba6f8d0af53fd59")
     version("1.11", sha256="d12152193bd71aabbdbb97b029717ae6d5d0477ab239614e3d6193cc0385d906")
 
+    # begin EBRAINS (deleted): break cyclic dependency in python+tkinter
     # extends("python")
+    # end EBRAINS
 
     patch("xcb-proto-1.12-schema-1.patch", when="@1.12")