diff --git a/packages/quiggeldy/package.py b/packages/quiggeldy/package.py new file mode 100644 index 0000000000000000000000000000000000000000..999644d90430957e4ab8e8e40f05c2dd5322fbcf --- /dev/null +++ b/packages/quiggeldy/package.py @@ -0,0 +1,62 @@ +# 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) + +import os +import unittest.mock +import xml.etree.ElementTree as ET + +from spack import * +from spack.util.environment import EnvironmentModifications +import spack.build_environment + +import importlib +build_brainscales = importlib.import_module("spack.pkg.ebrains-spack-builds.build_brainscales") + + +class Quiggeldy(build_brainscales.BuildBrainscales): + """quiggeldy --- the low-latency/high-throughput BSS-2 nmhw resource scheduler""" + + homepage = "https://github.com/electronicvisions/hxcomm" + git = "https://github.com/electronicvisions/hxcomm" + + maintainers = ["emuller", "muffgaga"] + + # host software dependencies + depends_on('bitsery', type=('build', 'link', 'run', 'test')) + depends_on('binutils+gold+ld+plugins', type=('build', 'link', 'run')) # specialize + depends_on('boost@1.69.0: +graph+icu+mpi+numpy+coroutine+context+filesystem+python+serialization+system+thread+program_options cxxstd=17', type=('build', 'link', 'run', 'test')) + depends_on('cereal', type=('build', 'link', 'run', 'test')) + depends_on('cppcheck', 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('liblockfile', type=('build', 'link', 'run')) + depends_on('log4cxx@0.12.1:1.0', when="@:8.0-a3", type=('build', 'link', 'run')) + depends_on('log4cxx@1.1: +events_at_exit', when="@8.0-a4:", type=('build', 'link', 'run')) + depends_on('pkgconfig', type=('build', 'link', 'run')) + depends_on('psmisc', type=('run', 'test')) + depends_on('util-linux', type=('build', 'link', 'run')) + depends_on('yaml-cpp+shared', type=('build', 'link', 'run')) + + # override configure step as we only want to build quiggeldy from hxcomm + def configure(self, spec, prefix): + args = ['--prefix={0}'.format(self.prefix)] + args += self.configure_args() + + if spec.version >= Version("9"): + self.waf('setup', '--directory=hxcomm', '--repo-db-url=https://github.com/electronicvisions/projects') + self.waf('configure', '--build-profile=release', '--disable-doxygen', *args) + + def build_args(self): + args = super(BuildBrainscales, self).build_args() + args.append("--targets=quiggeldy") + return args + + def install_test(self): + with working_dir('spack-test', create=True): + old_pythonpath = os.environ.get('PYTHONPATH', '') + os.environ['PYTHONPATH'] = ':'.join([str(self.prefix.lib), old_pythonpath]) + bash = which("bash") + # ignore segfaults for now (exit code 139) + bash('-c', '(python -c "import hxtorch; print(hxtorch.__file__)" || ( test $? -eq 139 && echo "segfault")) || exit $?') diff --git a/spack.yaml b/spack.yaml index 6f22736623fcaff27f40367b43460cf56c03b6ad..aa0442180233cd4474a72f934ecb24948979b5a8 100644 --- a/spack.yaml +++ b/spack.yaml @@ -70,5 +70,7 @@ spack: #- py-cerebstats #- py-cerebunit #- py-morphounit@1.0.4 + # Services + - quiggeldy@9.0-a4 concretizer: unify: true