diff --git a/packages/genpybind/package.py b/packages/genpybind/package.py
index b33268c5cf400f5cf0cf203c93cca07bfd3a10fe..b2a639b8c0605f322bed8d3e3b0fa4ba9dda03cd 100644
--- a/packages/genpybind/package.py
+++ b/packages/genpybind/package.py
@@ -40,6 +40,7 @@ class Genpybind(WafPackage):
version('develop', branch='develop')
version('visions', branch='master', git='https://github.com/electronicvisions/genpybind')
+ version('ebrains', tag='ebrains_release-1-rc1', git='https://github.com/electronicvisions/genpybind')
depends_on(
'llvm+clang+python+visionary@5.0.0:',
@@ -52,7 +53,7 @@ class Genpybind(WafPackage):
def configure_args(self):
args = super(Genpybind, self).configure_args()
- if self.spec.satisfies("@visions"):
+ if self.spec.satisfies("@visions") or self.spec.satisfies("@ebrains"):
# currently only our HEAD supports the rename
# TODO: adapt once the change is upstream
args.append("--genpybind-disable-tests")
diff --git a/packages/meta-brainscales/package.py b/packages/meta-brainscales/package.py
index 4f1f7d72240c07c483cb8be6bac61f2a2fd22027..383159fe5c20cdfc8c067d71d4e2d65458d50a3d 100644
--- a/packages/meta-brainscales/package.py
+++ b/packages/meta-brainscales/package.py
@@ -35,7 +35,7 @@ class MetaBrainscales(Package):
depends_on('cereal')
depends_on('cppcheck')
depends_on('doxygen+graphviz')
- depends_on('genpybind@visions')
+ depends_on('genpybind@ebrains')
depends_on('gflags')
depends_on('googletest+gmock')
depends_on('intel-tbb') # ppu gdbserver
diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..470a2e5a6fd564b7c81c33715571a685448de0b3
--- /dev/null
+++ b/packages/pynn-brainscales/package.py
@@ -0,0 +1,76 @@
+# Copyright 2013-2021 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 PynnBrainscales(WafPackage):
+ """PyNN toplevel for the BrainScaleS-2 neuromorphic hardware systems"""
+
+ homepage = "https://github.com/electronicvisions/pynn-brainscales"
+ #url = "https://github.com/electronicvisions/pynn-brainscales/archive/v0.1.0.tar.gz"
+ git = "https://github.com/electronicvisions/pynn-brainscales.git"
+
+ version('waf', branch='waf')
+ depends_on('meta-brainscales', type=('build', 'link', 'run'))
+ extends('python')
+
+ def setup_build_environment(self, env):
+ """waf needs to find headers and libraries by itself (mostly `boost`
+ tool, but also `gtest`); it also needs to run executables during
+ configuration."""
+
+ include = []
+ for dep in self.spec.traverse(deptype='build'):
+ query = self.spec[dep.name]
+ try:
+ include.extend(query.headers.directories)
+ except:
+ pass
+
+ library = []
+ for dep in self.spec.traverse(deptype=('link', 'run')):
+ query = self.spec[dep.name]
+ try:
+ print("\nQUERY", query)
+ library.extend(query.libs.directories)
+ print(query.libs.directories, "\n")
+ except:
+ pass
+
+ path = []
+ for dep in self.spec.traverse(deptype=('build', 'link', 'run')):
+ query = self.spec[dep.name]
+ try:
+ path.append(query.prefix.bin)
+ except:
+ pass
+
+ # llvm might be built with ~shared_libs but still builds shared libs
+ if not any('llvm' in lib for lib in library):
+ library.append(self.spec['llvm'].prefix.lib)
+
+ env.set('CPATH', ':'.join(include))
+ env.set('C_INCLUDE_PATH', ':'.join(include))
+ env.set('CPLUS_INCLUDE_PATH', ':'.join(include))
+ env.set('LIBRARY_PATH', ':'.join(library))
+ env.set('LD_LIBRARY_PATH', ':'.join(library))
+ env.prepend_path('PATH', ':'.join(path))
+
+ # override configure step as we perform a project setup first
+ def configure(self, spec, prefix):
+ """Setup and configure the project."""
+
+ self.waf('setup', '--project=pynn-brainscales', '--without-grenade-ppu-support', '--without-munge',
+ '--project=grenade@ebrains_release-1-rc1',
+ '--project=hate@ebrains_release-1-rc1',
+ '--project=hxcomm@ebrains_release-1-rc1',
+ '--project=lib-rcf@ebrains_release-1-rc1',
+ '--project=visions-slurm@ebrains_release-1-rc1'
+ )
+
+ args = ['--prefix={0}'.format(self.prefix)]
+ args += self.configure_args()
+
+ self.waf('configure', *args)
diff --git a/spack.yaml b/spack.yaml
index a2aab4b9d366a646671b0df32ba00b2eb72f043b..a8f3e18f090aad71d3b94a0ff14e660caa2a475a 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -22,3 +22,4 @@ spack:
- tvb-storage ^binutils+ld+gold %gcc@10.3.0
- tvb-framework ^binutils+ld+gold %gcc@10.3.0
- meta-brainscales %gcc@10.3.0
+ - pynn-brainscales %gcc@10.3.0