Skip to content
Snippets Groups Projects
package.py 4.52 KiB
Newer Older
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
Eric Müller's avatar
Eric Müller committed
# 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('2.0-rc1', branch='waf')
Eric Müller's avatar
Eric Müller committed

    # PPU compiler dependencies
    depends_on('gettext')
    depends_on('zlib')
    depends_on('bison')
    depends_on('flex')
    depends_on('m4')
    depends_on('texinfo')
    depends_on('wget')
    conflicts('flex', when='@2.6.3', msg='Binutils 2.25 for Nux doesn\'t build with flex 2.6.3.')
Eric Müller's avatar
Eric Müller committed

    # host software dependencies
    depends_on('bitsery', type=('build', 'link', 'run'))
    depends_on('binutils+gold+ld+plugins', type=('build', 'link', 'run')) # specialize
    depends_on('boost@1.69.0: +graph+icu+mpi+python+numpy+coroutine+context cxxstd=17', type=('build', 'link', 'run')) # specialize boost (non-clingo, type=('build', 'link', 'run'))
    depends_on('cereal', type=('build', 'link', 'run'))
    depends_on('cppcheck', type=('build', 'link', 'run'))
    depends_on('doxygen+graphviz', type=('build', 'link', 'run'))
    depends_on('genpybind@ebrains', type=('build', 'link', 'run'))
    depends_on('gflags', type=('build', 'link', 'run'))
    depends_on('googletest@1.11.0: +gmock', type=('build', 'link', 'run')) # variadic templates needed
    depends_on('intel-tbb', type=('build', 'link', 'run'))  # ppu gdbserver
    depends_on('libelf', type=('build', 'link', 'run'))
    depends_on('liblockfile', type=('build', 'link', 'run'))
    depends_on('llvm', type=('build', 'link', 'run'))
    depends_on('log4cxx', type=('build', 'link', 'run'))
    depends_on('pkg-config', type=('build', 'link', 'run'))
    depends_on('python@3.7.0:', type=('build', 'link', 'run')) # BrainScaleS(-2, type=('build', 'link', 'run')) only supports Python >= 3.7
    depends_on('py-h5py', type=('build', 'link', 'run')) # PyNN tests need it
    depends_on('py-matplotlib', type=('build', 'link', 'run'))
    depends_on('py-nose', type=('build', 'link', 'run'))
    depends_on('py-numpy', type=('build', 'link', 'run'))
    depends_on('py-pybind11', type=('build', 'link', 'run'))
    depends_on('py-pybind11-stubgen', type=('build', 'link', 'run'))
    depends_on('py-pycodestyle', type=('build', 'link', 'run'))
    depends_on('py-pyelftools', type=('build', 'link', 'run'))
    depends_on('py-pylint', type=('build', 'link', 'run'))
    depends_on('py-pynn@0.9.4:', type=('build', 'link', 'run'))
    depends_on('py-pyyaml', type=('build', 'link', 'run'))
    depends_on('py-scipy', type=('build', 'link', 'run'))
    depends_on('py-sqlalchemy', type=('build', 'link', 'run'))
    depends_on('util-linux', type=('build', 'link', 'run'))
    depends_on('yaml-cpp+shared', type=('build', 'link', 'run'))
    extends('python')
Eric Müller's avatar
Eric Müller committed

Eric Müller's avatar
Eric Müller committed
    # override configure step as we perform a project setup first
    def configure(self, spec, prefix):
        """Setup and configure the project."""

Eric Müller's avatar
Eric Müller committed
        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'
Eric Müller's avatar
Eric Müller committed

        args = ['--prefix={0}'.format(self.prefix)]
        args += self.configure_args()

        self.waf('configure', *args)