Newer
Older
# 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"
depends_on('meta-brainscales', type=('build', 'link', 'run'))
depends_on('py-pyyaml', type=('build'))
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)
print('headers:', query.headers.directories, "\n")
except:
pass
library = []
for dep in self.spec.traverse(deptype=('link', 'run')):
query = self.spec[dep.name]
try:
library.extend(query.libs.directories)
print('libs:', 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)
print('bin:', query.prefix.bin, "\n")
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))
def setup_run_environment(self, env):
env.prepend_path('PYTHONPATH', self.prefix.lib)
# override configure step as we perform a project setup first
def configure(self, spec, prefix):
"""Setup and configure the project."""
self.waf('setup', '--repo-db-url=https://github.com/electronicvisions/projects', '--without-grenade-ppu-support', '--without-munge',
'--project=pynn-brainscales@ebrains_release-2-rc1',
'--project=haldls@ebrains_release-2-rc1',
'--project=grenade@ebrains_release-2-rc1',
'--project=code-format@ebrains_release-2-rc1',
'--project=logger@ebrains_release-2-rc1',
'--project=halco@ebrains_release-2-rc1',
'--project=hate@ebrains_release-2-rc1',
'--project=fisch@ebrains_release-2-rc1',
'--project=ztl@ebrains_release-2-rc1',
'--project=hxcomm@ebrains_release-2-rc1',
'--project=rant@ebrains_release-2-rc1',
'--project=pywrap@ebrains_release-2-rc1',
'--project=lib-boost-patches@ebrains_release-2-rc1',
'--project=sctrltp@ebrains_release-2-rc1',
'--project=hwdb@ebrains_release-2-rc1',
'--project=visions-slurm@ebrains_release-2-rc1',
'--project=flange@ebrains_release-2-rc1',
'--project=lib-rcf@ebrains_release-2-rc1',
'--project=bss-hw-params@ebrains_release-2-rc1'
args = ['--prefix={0}'.format(self.prefix)]
args += self.configure_args()
self.waf('configure', *args)