diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdcba1b745083ef30a86730c4628ba7b885e5c08..e9047d8ee26343b545702508bb750084ae3adfc6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,7 +76,7 @@ deploy-prod-release-prod-cscs: RELEASE_NAME: EBRAINS-23.06 resource_group: shared-NFS-mount-prod-cscs rules: - - if: $CI_COMMIT_BRANCH =~ /ebrains/ + - if: $CI_COMMIT_BRANCH =~ /^ebrains/ when: manual # Deploy the production release of tools (manual pipeline) @@ -94,7 +94,7 @@ deploy-prod-release-prod-jsc: RELEASE_NAME: EBRAINS-23.06 resource_group: shared-NFS-mount-prod-jsc rules: - - if: $CI_COMMIT_BRANCH =~ /ebrains/ + - if: $CI_COMMIT_BRANCH =~ /^ebrains/ when: manual # Deploy the experimental release of tools (sheduled pipeline) @@ -203,23 +203,12 @@ build-spack-env-on-runner: - cp /tmp/spack.yaml $SPACK_ENV/ - spack install -y -j2 --fresh --test root after_script: - - mkdir spack_logs - - | - # succesfully installed packages: keep the spack logs for any package modified during this CI job - SPACK_PACKAGES_DIR=$SPACK_DEV_PATH/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0 - if cp --parents $SPACK_PACKAGES_DIR/*/.spack/*.txt $SPACK_PACKAGES_DIR/*/.spack_test_results/* ./; then - mv .$SPACK_PACKAGES_DIR spack_logs/installed - else - echo "No packages installed, so no logs to collect" - fi - # not succesfully installed packages: also keep the spack logs for any packages that failed - if cp --parents /tmp/$(whoami)/spack-stage/*/*.txt ./; then - # also collect all bss test results - cp --parents -r /tmp/$(whoami)/spack-stage/*/spack-src/build/test_results ./ || echo "" - mv ./tmp/$(whoami)/spack-stage spack_logs/not_installed - else - echo "No packages failed to build, so no logs to collect" - fi + - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed + # for succesfully installed packages: keep the spack logs for any package modified during this CI job + - PKG_DIR=$SPACK_DEV_PATH/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0 + - if cd $PKG_DIR; then find . \( -name ".spack" -o -name ".build" -o -name ".spack_test_results" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi + # for not succesfully installed packages: also keep the spack logs for any packages that failed + - if cd /tmp/$(whoami)/spack-stage/; then find . -maxdepth 2 -name "*.txt" -exec cp --parents "{}" $CI_PROJECT_DIR/spack_logs/not_installed \;; fi artifacts: paths: - spack_logs @@ -286,23 +275,13 @@ sync-gitlab-spack-instance: - spack install -y -j2 --fresh --test root - spack reindex after_script: - - mkdir spack_logs - - | - # succesfully installed packages: keep the spack logs for any package modified during this CI job + - mkdir -p $CI_PROJECT_DIR/spack_logs/installed $CI_PROJECT_DIR/spack_logs/not_installed + # for succesfully installed packages: keep the spack logs for any package modified during this CI job # (we use repo.yaml, that is modified at each start of the pipeline, as a reference file) - SPACK_PACKAGES_DIR=$SPACK_PATH/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0 - if find $SPACK_PACKAGES_DIR/*/.spack/*.txt -newer $SPACK_REPO_PATH/repo.yaml -exec cp --parents -r "{}" ./ \;; then - cp --parents -r $SPACK_PACKAGES_DIR/*/.spack_test_results/* ./ - mv .$SPACK_PACKAGES_DIR spack_logs/installed - else - echo "No packages installed, so no logs to collect" - fi - # not succesfully installed packages: also keep the spack logs for any packages that failed - if cp --parents /tmp/$(whoami)/spack-stage/*/*.txt ./; then - mv ./tmp/$(whoami)/spack-stage spack_logs/not_installed - else - echo "No packages failed to build, so no logs to collect" - fi + - PKG_DIR=$SPACK_PATH/spack/opt/spack/linux-ubuntu20.04-x86_64/gcc-10.3.0 + - if cd $PKG_DIR; then find . -newer $SPACK_REPO_PATH/repo.yaml \( -name ".spack" -o -name ".spack_test_results" -o -name ".build" \) -exec cp -r --parents "{}" $CI_PROJECT_DIR/spack_logs/installed \;; fi + # for not succesfully installed packages: also keep the spack logs for any packages that failed + - if cd /tmp/$(whoami)/spack-stage/; then find . -maxdepth 2 -name "*.txt" -exec cp --parents "{}" $CI_PROJECT_DIR/spack_logs/not_installed \;; fi artifacts: paths: - spack_logs diff --git a/packages/biobb-gromacs/package.py b/packages/biobb-gromacs/package.py index a682254412421657c5fe39adebd7412cdadf7245..c60afef13ff1559aebf227d626991c5afd765a04 100644 --- a/packages/biobb-gromacs/package.py +++ b/packages/biobb-gromacs/package.py @@ -8,6 +8,9 @@ class BiobbGromacs(PythonPackage): homepage = "https://github.com/bioexcel/biobb_gromacs" git = 'https://github.com/bioexcel/biobb_gromacs.git' + # Set the gitlab accounts of this package maintainers + maintainers = ['dbeltran'] + # Versions version('4.0.0', branch='master') diff --git a/packages/biobb-io/package.py b/packages/biobb-io/package.py index 6d8e4b07d0f236bfdc74e5b0d331edf2994bd219..a4f089d4e9d0c199f46baf075ae38ad812dc7c48 100644 --- a/packages/biobb-io/package.py +++ b/packages/biobb-io/package.py @@ -8,6 +8,9 @@ class BiobbIo(PythonPackage): homepage = "https://github.com/bioexcel/biobb_io" git = 'https://github.com/bioexcel/biobb_io.git' + # Set the gitlab accounts of this package maintainers + maintainers = ['dbeltran'] + # Versions version('4.0.0', branch='master') diff --git a/packages/biobb-model/package.py b/packages/biobb-model/package.py index 012732d6ec89cd4c598f774852d6746054854be3..877be433c85b0f28e2c0fedadde38b7508c66efa 100644 --- a/packages/biobb-model/package.py +++ b/packages/biobb-model/package.py @@ -8,6 +8,9 @@ class BiobbModel(PythonPackage): homepage = "https://github.com/bioexcel/biobb_model" git = 'https://github.com/bioexcel/biobb_model.git' + # Set the gitlab accounts of this package maintainers + maintainers = ['dbeltran'] + # Versions version('4.0.0', branch='master') diff --git a/packages/biobb-structure-checking/package.py b/packages/biobb-structure-checking/package.py index ab0862579ff1d1ba03c3207a649eb58a99037edb..8c528fd728f64192922fce64f25f38ae592d8649 100644 --- a/packages/biobb-structure-checking/package.py +++ b/packages/biobb-structure-checking/package.py @@ -9,6 +9,9 @@ class BiobbStructureChecking(PythonPackage): homepage = "https://github.com/bioexcel/biobb_structure_checking" git = 'https://github.com/bioexcel/biobb_structure_checking.git' + # Set the gitlab accounts of this package maintainers + maintainers = ['dbeltran'] + # Versions version('3.12.1', branch='master') diff --git a/packages/biobb-structure-utils/package.py b/packages/biobb-structure-utils/package.py index 9987467d22d8ce62e65d183a09e36827e85b0c5a..9dd06b981ff0c9bf8fc1c3b587849c0887d4036f 100644 --- a/packages/biobb-structure-utils/package.py +++ b/packages/biobb-structure-utils/package.py @@ -8,6 +8,9 @@ class BiobbStructureUtils(PythonPackage): homepage = "https://github.com/bioexcel/biobb_structure_utils" git = 'https://github.com/bioexcel/biobb_structure_utils.git' + # Set the gitlab accounts of this package maintainers + maintainers = ['dbeltran'] + # Versions version('4.0.0', branch='master') diff --git a/packages/hxtorch/package.py b/packages/hxtorch/package.py index ec8b209053a9105cac63c43630eb262bb7d64949..28aec2442e5cd0415be40a212bd0c247b2de7af6 100644 --- a/packages/hxtorch/package.py +++ b/packages/hxtorch/package.py @@ -11,24 +11,27 @@ class Hxtorch(WafPackage): """hxtorch --- a PyTorch-based toplevel for the BrainScaleS-2 neuromorphic hardware systems""" homepage = "https://github.com/electronicvisions/hxtorch" - # This repo provides a waf binary used for the build below + # This repo provides a custom waf binary used for the build below git = "https://github.com/electronicvisions/pynn-brainscales.git" - version('7.0-a1', branch='waf') + maintainers = ['emuller'] - # PPU compiler dependencies - depends_on('oppulance@7.0-a1') + version('7.0-rc1', branch='waf') + + # compiler for the BrainScaleS-2 embedded processor ("PPU"); needed for + # building/linking, at runtime and for testing + depends_on('oppulance@7.0-rc1', type=('build', 'link', 'run', 'test')) # host software dependencies - depends_on('bitsery', type=('build', 'link', 'run')) + 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')) # specialize boost (non-clingo, type=('build', 'link', 'run')) - depends_on('cereal', type=('build', 'link', 'run')) + 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('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('inja', type=('build', 'link', 'run')) # template engine for PPU source jit generation + depends_on('inja', type=('build', 'link', 'run', 'test')) # template engine for PPU source jit generation depends_on('intel-tbb', type=('build', 'link', 'run')) # ppu gdbserver depends_on('libelf', type=('build', 'link', 'run')) depends_on('liblockfile', type=('build', 'link', 'run')) @@ -36,7 +39,7 @@ class Hxtorch(WafPackage): depends_on('log4cxx@0.12.1:', type=('build', 'link', 'run')) depends_on('pkgconfig', type=('build', 'link', 'run')) depends_on('psmisc', type=('run', 'test')) - depends_on('python@3.7.0:', type=('build', 'link', 'run')) # BrainScaleS(-2, type=('build', 'link', 'run')) only supports Python >= 3.7 + depends_on('python@3.7.0:', type=('build', 'link', 'run')) # BrainScaleS-2 only supports Python >= 3.7 depends_on('py-h5py', type=('build', 'link', 'run')) # PyNN tests need it depends_on('py-jax@0.3.25:', type=('build', 'link', 'run')) depends_on('py-matplotlib', type=('build', 'link', 'run')) @@ -48,7 +51,7 @@ class Hxtorch(WafPackage): 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-torch@1.9.1:', type=('build', 'link', 'run')) + depends_on('py-torch@1.9.1:', type=('build', 'link', 'run', 'test')) depends_on('py-torchvision', type=('run')) # for demos depends_on('py-tree-math', type=('build', 'link', 'run')) depends_on('py-pyyaml', type=('build', 'link', 'run')) @@ -128,11 +131,27 @@ class Hxtorch(WafPackage): env.set('WAF_CONFIGURE_LD_LIBRARY_PATH', ':'.join(library)) env.prepend_path('PATH', ':'.join(path)) - def setup_dependent_build_environment(self, env, dependent_spec): + def _setup_common_env(self, env): + # TODO: use standard install layout for Python modules and extensions' + # shared objects => remove then env.prepend_path('PYTHONPATH', self.prefix.lib) + # grenade needs to find some libraries for the JIT-compilation of + # programs for BrainScaleS-2's embedded processor. + ppu_include_dirs = [] + ppu_dep_names = ['bitsery', 'boost', 'cereal'] + for ppu_dep_name in ppu_dep_names: + dep = self.spec[ppu_dep_name] + dep_include_dirs = set(dep.headers.directories) + ppu_include_dirs.extend(list(dep_include_dirs)) + env.set('C_INCLUDE_PATH', ':'.join(ppu_include_dirs)) + env.set('CPLUS_INCLUDE_PATH', ':'.join(ppu_include_dirs)) + + def setup_dependent_build_environment(self, env, dependent_spec): + self._setup_common_env(env) + def setup_run_environment(self, env): - env.prepend_path('PYTHONPATH', self.prefix.lib) + self._setup_common_env(env) # override configure step as we perform a project setup first def configure(self, spec, prefix): @@ -163,6 +182,7 @@ class Hxtorch(WafPackage): def build_test(self): self.builder.waf('build', '--test-execall') + copy_tree('build/test_results', join_path(self.prefix, '.build')) def install_args(self): args = ['--test-execnone'] @@ -172,7 +192,6 @@ class Hxtorch(WafPackage): with working_dir('spack-test', create=True): old_pythonpath = os.environ.get('PYTHONPATH', '') os.environ['PYTHONPATH'] = ':'.join([str(self.prefix.lib), old_pythonpath]) - python('-c', 'import hxtorch; print(hxtorch.__file__)') - # ignore exit code for now - cmd_true = which("true") - cmd_true() + 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/packages/libvips/package.py b/packages/libvips/package.py new file mode 100644 index 0000000000000000000000000000000000000000..c3ae509aaab4138d01b15c20556ad1ea8fb31d25 --- /dev/null +++ b/packages/libvips/package.py @@ -0,0 +1,49 @@ +# Copyright 2013-2023 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 Libvips(AutotoolsPackage): + """libvips is a demand-driven, horizontally threaded image processing + library. Compared to similar libraries, libvips runs quickly and uses + little memory.""" + + homepage = "https://libvips.github.io/libvips/" + url = "https://github.com/libvips/libvips/releases/download/v8.9.0/vips-8.9.0.tar.gz" + git = "https://github.com/libvips/libvips.git" + + version("8.13.3", sha256="4eff5cdc8dbe1a05a926290a99014e20ba386f5dcca38d9774bef61413435d4c") + version("8.10.5", sha256="a4eef2f5334ab6dbf133cd3c6d6394d5bdb3e76d5ea4d578b02e1bc3d9e1cfd8") + version("8.9.1", sha256="45633798877839005016c9d3494e98dee065f5cb9e20f4552d3b315b8e8bce91") + version("8.9.0", sha256="97334a5e70aff343d2587f23cb8068fc846a58cd937c89a446142ccf00ea0349") + + variant("fftw", default=True, description="Uses FFTW3 for fourier transforms.") + + variant("jpeg", default=False, description="Enable JPEG support") + + variant("tiff", default=False, description="Enable TIFF support") + + variant("png", default=False, description="Enable pngfile support") + + variant("poppler", default=False, description="Enable PDF rendering via poppler") + + # TODO: Add more variants! + + depends_on("glib") + depends_on("expat") + + depends_on("fftw", when="+fftw") + depends_on("libjpeg", when="+jpeg") + depends_on("libtiff", when="+tiff") + depends_on("libpng", when="+png") + depends_on("poppler", when="+poppler") + + # quick fix for build errors + depends_on("gobject-introspection") + depends_on("cfitsio") + depends_on("pango") + depends_on("libtiff") + diff --git a/packages/nest/package.py b/packages/nest/package.py index e7c870f75b1a94be49577df733164335663aaa18..3f571164da86fe7c344afb81e96af35b4cee649f 100644 --- a/packages/nest/package.py +++ b/packages/nest/package.py @@ -25,7 +25,10 @@ class Nest(CMakePackage): ] git = "https://github.com/nest/nest-simulator.git" + maintainers = ['terhorst'] + version('master', branch='master') + version('3.6-rc2',sha256='8508a9590ad49e6657809d1acfd02aa612b70fa8e5e7791a2ea261d891f181f7') version('3.5', sha256='3cdf5720854a4d8a7d359f9de9d2fb3619a0be2e36932028d6940360741547bd') version('3.4', sha256='c56699111f899045ba48e55e87d14eca8763b48ebbb3648beee701a36aa3af20') version('3.3', sha256='179462b966cc61f5785d2fee770bc36f86745598ace9cd97dd620622b62043ed') diff --git a/packages/neuron/package.py b/packages/neuron/package.py index fb66601f3d1c2e884ee2908d1006a8462899b9a4..313c8e6ed7abb064113e37af50e79e9e359709c1 100644 --- a/packages/neuron/package.py +++ b/packages/neuron/package.py @@ -16,10 +16,13 @@ class Neuron(CMakePackage): """ homepage = "https://www.neuron.yale.edu/" - url = "https://github.com/neuronsimulator/nrn/releases/download/8.2.2/full-src-package-8.2.2.tar.gz" + url = "https://github.com/neuronsimulator/nrn/releases/download/8.2.3/full-src-package-8.2.3.tar.gz" git = "https://github.com/neuronsimulator/nrn" + maintainers = ["kumbhar"] + version("develop", branch="master", submodules="True") + version("8.2.3", tag="8.2.3", submodules="True") version("8.2.2", tag="8.2.2", submodules="True") version("8.1.0", tag="8.1.0", submodules="True") version("8.0.0", tag="8.0.0", submodules="True") diff --git a/packages/npm/package.py b/packages/npm/package.py new file mode 100644 index 0000000000000000000000000000000000000000..0d6480f210428b035fb54eff79d7e8416e2dd399 --- /dev/null +++ b/packages/npm/package.py @@ -0,0 +1,131 @@ +# Copyright 2013-2023 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 shutil + +from spack.package import * + + +class Npm(Package): + """npm: A package manager for javascript.""" + + homepage = "https://github.com/npm/cli" + # base https://www.npmjs.com/ + + git = "https://github.com/npm/cli.git" + url = "https://registry.npmjs.org/npm/-/npm-9.3.1.tgz" + + version("9.3.1", sha256="41caa26a340b0562bc5429d28792049c980fe3e872b42b82cad94e8f70e37f40") + version("8.19.3", sha256="634bf4e0dc87be771ebf48a058629960e979a209c20a51ebdbc4897ca6a25260") + version("7.24.2", sha256="5b9eeea011f8bc3b76e55cc33339e87213800677f37e0756ad13ef0e9eaccd64") + version("6.14.18", sha256="c9b15f277e2a0b1b57e05bad04504296a27024555d56c2aa967f862e957ad2ed") + + version( + "6.14.9", + sha256="1e0e880ce0d5adf0120fb3f92fc8e5ea5bac73681d37282615d074ff670f7703", + deprecated=True, + ) + version( + "6.14.8", + sha256="fe8e873cb606c06f67f666b4725eb9122c8927f677c8c0baf1477f0ff81f5a2c", + deprecated=True, + ) + version( + "6.13.7", + sha256="6adf71c198d61a5790cf0e057f4ab72c6ef6c345d72bed8bb7212cb9db969494", + deprecated=True, + ) + version( + "6.13.4", + sha256="a063290bd5fa06a8753de14169b7b243750432f42d01213fbd699e6b85916de7", + deprecated=True, + ) + version( + "3.10.9", + sha256="fb0871b1aebf4b74717a72289fade356aedca83ee54e7386e38cb51874501dd6", + deprecated=True, + ) + version( + "3.10.5", + sha256="ff019769e186152098841c1fa6325e5a79f7903a45f13bd0046a4dc8e63f845f", + deprecated=True, + ) + + depends_on("node-js", type=("build", "run")) + depends_on("libvips") + + # npm 6.13.4 ships with node-gyp 5.0.5, which contains several Python 3 + # compatibility issues on macOS. Manually update to node-gyp 6.0.1 for + # full Python 3 support. + resource( + name="node-gyp", + destination="node-gyp", + url="https://registry.npmjs.org/node-gyp/-/node-gyp-6.0.1.tgz", + sha256="bbc0e137e17a63676efc97a0e3b1fcf101498a1c2c01c3341cd9491f248711b8", + when="@6", + ) + resource( + name="env-paths", + destination="env-paths", + url="https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + sha256="168b394fbca60ea81dc84b1824466df96246b9eb4d671c2541f55f408a264b4c", + when="@6", + ) + + @when("@6") + def patch(self): + shutil.rmtree("node_modules/node-gyp") + install_tree("node-gyp/package", "node_modules/node-gyp") + filter_file(r'"node-gyp": "\^5\..*"', '"node-gyp": "^6.0.1"', "package.json") + install_tree("env-paths/package", "node_modules/env-paths") + + @when("@:8") + def install(self, spec, prefix): + # `npm install .` doesn't work properly out of the box on npm up to 8, so we do + # what it would do manually. The only thing we seem to miss is docs. In + # particular, it will end up symlinking into the stage, which spack then + # deletes. You can avoid that with `npm install $(npm pack .)`, but `npm pack` + # also seems to fail when run from the tarball on macos. So we just copy manually. + to_install = [ + "LICENSE", + "README.md", + "bin", + "docs", + "index.js", + "lib", + "node_modules", + "package.json", + ] + + mkdirp(prefix.bin) + mkdirp(prefix.lib.node_modules.npm) + + # manually install all the files above (if they exist for a particular node version) + for filename in to_install: + if os.path.exists(filename): + install_fn = install if os.path.isfile(filename) else install_tree + install_fn(filename, os.path.join(prefix.lib.node_modules.npm, filename)) + + # set up symlinks in bin + node_modules_bin = os.path.relpath(prefix.lib.node_modules.npm.bin, prefix.bin) + symlink(os.path.join(node_modules_bin, "npm-cli.js"), prefix.bin.npm) + symlink(os.path.join(node_modules_bin, "npx-cli.js"), prefix.bin.npx) + + @when("@9:") + def install(self, spec, prefix): + # in npm 9, `npm install .` finally works within the repo, so we can just call it. + node = which("node", required=True) + node("bin/npm-cli.js", "install", "-ddd", "--global", f"--prefix={prefix}", ".") + + def setup_dependent_build_environment(self, env, dependent_spec): + npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix + if not os.path.isdir(npm_config_cache_dir): + mkdirp(npm_config_cache_dir) + env.set("npm_config_cache", npm_config_cache_dir) + + def setup_dependent_run_environment(self, env, dependent_spec): + npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix + env.set("npm_config_cache", npm_config_cache_dir) diff --git a/packages/oppulance/package.py b/packages/oppulance/package.py index 77a47abb3802426db600257743f259ce56491e16..c8525f3b94374a5c7dcf94e0db7ea12fd620ad5e 100644 --- a/packages/oppulance/package.py +++ b/packages/oppulance/package.py @@ -22,8 +22,8 @@ class Oppulance(Package): releases = [ { - 'version': '7.0-a1', - 'tag': 'ebrains-7.0-a1' + 'version': '7.0-rc1', + 'tag': 'ebrains-7.0-rc1' }, ] diff --git a/packages/py-ebrains-kg-core/package.py b/packages/py-ebrains-kg-core/package.py index c6eff2c94b78870eba090b3ae6584775943c1b42..cfe76f490abd501b0e14565e1f6bf3520dc6eefd 100644 --- a/packages/py-ebrains-kg-core/package.py +++ b/packages/py-ebrains-kg-core/package.py @@ -15,6 +15,7 @@ class PyEbrainsKgCore(PythonPackage): maintainers = ["ioannistsanaktsidis", "olinux"] + version('0.9.15', sha256='c672815ebcd6968f090620f68d85f0fbf282a83636c3a1845b078ef5ac5a06be') version('0.9.14', sha256='e898761abb999b09e5da49b25d13ffcadebaec7acd87ed079abe23f3bb12a5e7') version('0.9.13', sha256='25e155e9eb6c516dd33e29d9ff433c996630989a0f017c5920b66fe5334f2d82') version('0.9.12', sha256='244e52dffaec425bf65cf2d3d697969ec9036aaa028bf47fdddfb4911282f484') diff --git a/packages/py-elephant/package.py b/packages/py-elephant/package.py index 4c0b8ac4ad71b40f84d02b2a236ac57a4bf1ed4d..23d66ad74bf93804ac4f1a2b54985738c719c055 100644 --- a/packages/py-elephant/package.py +++ b/packages/py-elephant/package.py @@ -13,8 +13,7 @@ class PyElephant(PythonPackage): pypi = "elephant/elephant-0.11.0.tar.gz" git = "https://github.com/NeuralEnsemble/elephant.git" - # list of GitHub accounts to notify when the package is updated. - maintainers = ["Moritz-Alexander-Kern"] + maintainers = ["moritzkern"] version('develop', branch='master') version("0.13.0", sha256="2c6463cf9ace41631f2af196c5b80b468bf1c4b264d3a6b1ea0fb587d9e7dd67") diff --git a/packages/py-fairgraph/package.py b/packages/py-fairgraph/package.py index 2e0fd8e1d7a580f8a5087dfdd10b71f2ea049a63..0fc0945822a573489b3a69f5fca2c755de89a5fd 100644 --- a/packages/py-fairgraph/package.py +++ b/packages/py-fairgraph/package.py @@ -15,6 +15,7 @@ class PyFairgraph(PythonPackage): maintainers = ["apdavison"] + version("0.11.1", sha256="e4bc1737af032e7a9f693c8f12112e100762dd9597022aed012ae05d8196ebeb") version("0.11.0", sha256="ae87acf0d9f7e0c296a889056855e759705132f2fb88f77b08c708528f9823bb") version("0.10.0", sha256="4ad387549a12886323f149867c0940d2e3855f2fd9b3fb44af2ba312cc4975b7") version("0.9.0", sha256="8ed3dd3bc274d9c25408a2e971f317d4e3aa4400636e9f4b89716ad92b721d78") diff --git a/packages/py-frites/package.py b/packages/py-frites/package.py index 91414f628cb941fc0b011a517f05aca06aeda40a..2a1f3d0272c41c0fd8e2715e15c1af248a1b2cb8 100644 --- a/packages/py-frites/package.py +++ b/packages/py-frites/package.py @@ -14,9 +14,7 @@ class PyFrites(PythonPackage): homepage = "https://brainets.github.io/frites/" pypi = "frites/frites-0.4.2.tar.gz" - # FIXME: Add a list of GitHub accounts to - # notify when the package is updated. - # maintainers = ['github_user1', 'github_user2'] + maintainers = ['ecombrisson'] version('0.4.4', sha256='280ca9f3f711da0550eceec8ce94108b891369b63ea3cc1b8c960825ed20fb3f') version('0.4.3', sha256='41a0aa2414196f1a08b7668b3e6be5872eda0f6814171408ef33af4904619f3a') diff --git a/packages/py-hbp-validation-client/package.py b/packages/py-hbp-validation-client/package.py index d8e7de2ab45edb94e0b4091b96af77fb66041022..d946d464e31c96306d28f7cd1a5c670908c11b68 100644 --- a/packages/py-hbp-validation-client/package.py +++ b/packages/py-hbp-validation-client/package.py @@ -14,6 +14,8 @@ class PyHbpValidationClient(PythonPackage): pypi = "hbp_validation_framework/hbp_validation_framework-0.8.1.tar.gz" git = "https://github.com/HumanBrainProject/hbp-validation-client" + maintainers = ["apdavison"] + version("0.8.2", sha256="ba1cf2ecfc10de35e106884d2734faea069b939830990989f9ae08e43d6fde64") version("0.8.1", sha256="2afa96c07a5646e3e37528bacf103da4b352353ac45c10bf5948e4efbbbfb2a0") version("0.8.0", sha256="948fed2c83230cfab07416763b3d0e8adb0de1ee4c3a1a911697045025ff540f") diff --git a/packages/py-lfpykit/package.py b/packages/py-lfpykit/package.py index 36963978a9b558c8044db997b433592617fdfd70..fbf9a5cd61bf151afa5694cef13707f946ecd85f 100644 --- a/packages/py-lfpykit/package.py +++ b/packages/py-lfpykit/package.py @@ -14,6 +14,7 @@ class PyLfpykit(PythonPackage): version('0.4', sha256='ce92f5a987535ee72a76644bac90393eaa669d952f493dc388f3deb1c36f474d') version('0.5', sha256='9a7ae80ad905bb8dd0eeab8517b43c3d5b4fff2b8766c9d5a36320a7a67bd545') + version('0.5.1', sha256='a962029460c8173c4fec3923204e04d64c370b05740b64c2d07efbe29cbe63a6') depends_on('python@3.8:', type=('build', 'run')) depends_on('py-pip', type='build') diff --git a/packages/py-libsonata/package.py b/packages/py-libsonata/package.py index 7478f1d63e166e3e63795f427da0b5a8641b8b55..ed0644c33bb131b431d9cf0aaa833a975d278d6f 100644 --- a/packages/py-libsonata/package.py +++ b/packages/py-libsonata/package.py @@ -18,6 +18,7 @@ class PyLibsonata(PythonPackage): submodules = True version("develop", branch="master", get_full_repo=True) + version("0.1.23", sha256="815aac5bdaa5d025b5f3558ac4d3acb9ebcb070594109af4c0844f47ec701c1d") version("0.1.22", sha256="4adbb32ed2fac5d3c74bde03a5e2adb319724d324318a2a7dc2ef3c30f817b2c") version("0.1.21", sha256="5b280d82cb21a745d9cdb736c00446e0209494c21d2d17a2c878fabf23a08b68") version("0.1.20", sha256="f2e63a26dcf045bb7424e236e12f9b9ef8c46c356e953d26555f313f5763651e") diff --git a/packages/py-morph-tool/package.py b/packages/py-morph-tool/package.py index f639ba217f767de0cd13367ae8b69825080652fa..dbe42d14c6490c7328e7b8ac5bf90b067bd33671 100644 --- a/packages/py-morph-tool/package.py +++ b/packages/py-morph-tool/package.py @@ -13,11 +13,14 @@ class PyMorphTool(PythonPackage): homepage = "https://github.com/BlueBrain/morph-tool" git = "https://github.com/BlueBrain/morph-tool.git" - pypi = "morph-tool/morph-tool-2.4.1.tar.gz" + pypi = "morph-tool/morph-tool-2.9.1.tar.gz" version("develop", branch="master") + version("2.9.1", sha256="305e9456c8047726588b23dfa070eb95ccbe5573e9fea3e0a83dc93eacdf61dc") version("2.9.0", sha256="c60d4010e17ddcc3f53c864c374fffee05713c8f8fd2ba4eed7706041ce1fa47") + variant("neuron", default=False, description="Enable additional neuron support") + depends_on("py-setuptools", type=("build", "run")) depends_on("py-click@6.7:", type=("build", "run")) @@ -28,9 +31,10 @@ class PyMorphTool(PythonPackage): depends_on("py-xmltodict@0.12:", type=("build", "run")) depends_on("py-plotly@4.1:", type=("build", "run")) - depends_on("py-dask+bag@2.19:", type=("build", "run")) + depends_on("py-dask@2.19:", type=("build", "run")) depends_on("neuron+python@7.8:", type=("build", "run")) - depends_on("py-bluepyopt@1.9.37:", type=("build", "run")) + depends_on("py-bluepyopt@1.9.37:", type=("build", "run"), when="+neuron") depends_on("py-neurom@3.0:3.999,develop", type=("build", "run")) - depends_on("py-morphio@3.0:3.999,develop", type=("build", "run")) + depends_on("py-morphio@3.3.6:3,develop", type=("build", "run"), when="@2.9.1:") + depends_on("py-morphio@3.0:3,develop", type=("build", "run"), when="@2.9.0") diff --git a/packages/py-morphio/package.py b/packages/py-morphio/package.py index 5a08dfe86cd4d14b5fa96af724ea937da59bcbea..f1c6141484b924bacbee3c263351171efd044a49 100644 --- a/packages/py-morphio/package.py +++ b/packages/py-morphio/package.py @@ -18,6 +18,7 @@ class PyMorphio(PythonPackage): version("develop", branch="master", submodules=True) version("unifurcation", branch="unifurcation", submodules=True) + version("3.3.6", sha256="0f2e55470d92a3d89f2141ae905ee104fd16257b93dafb90682d90171de2f4e6") version("3.3.5", sha256="9e6cfebaea32080131b2b08a4a32dfbe92b18427a3e557861e27c4131f7542ac") version("3.3.4", sha256="b70c6884e9b835560501f798c75c9cc7eaf3162cba1d930b5a9b854bb9ea60dc") version("3.3.3", sha256="f6d91970cfd734b2e5fb8f9239a0bfa00519fe082dd8e403e4cc204dbdf0a9fa") diff --git a/packages/py-neo/package.py b/packages/py-neo/package.py index 829731d1703567a54347bab7ef8d4d65ef67a1c4..dd3d5b2ff8914f7659258228a75029d691c110a2 100644 --- a/packages/py-neo/package.py +++ b/packages/py-neo/package.py @@ -14,6 +14,8 @@ class PyNeo(PythonPackage): homepage = "https://neuralensemble.org/neo" pypi = "neo/neo-0.4.1.tar.gz" + maintainers = ["apdavison"] + version('0.12.0', sha256='3b6ca4fc05dfdb4e953e253e70994bfbbc8fe2e90958fbda7fa5860caf3fa63a') version('0.11.1', sha256='f4a206044b332ad00b10072b0dc7a70b359fa365ec786f92ab757ef4ae588474') version('0.11.0', sha256='cdf8e1324a3fbbd1efd5618dcd37cfc497b1997923bd710b598472c1d846674a') diff --git a/packages/py-netpyne/package.py b/packages/py-netpyne/package.py index 15137fb06f6fad5d3ee43ec0cb35e6f5ea180df6..60d84b685f30dccf6b07d36056a94f3c1ccbe93f 100644 --- a/packages/py-netpyne/package.py +++ b/packages/py-netpyne/package.py @@ -10,12 +10,13 @@ class PyNetpyne(PythonPackage): """NetPyNE (Networks using Python and NEURON) is a Python package to facilitate the development, simulation, parallelization, analysis, and optimization of biological neuronal networks using the NEURON simulator.""" homepage = "netpyne.org" - url = "https://github.com/suny-downstate-medical-center/netpyne/archive/refs/tags/v1.0.4.2.tar.gz" + url = "https://github.com/suny-downstate-medical-center/netpyne/archive/refs/tags/v1.0.5.tar.gz" git = "https://github.com/suny-downstate-medical-center/netpyne.git" # list of GitHub accounts to notify when the package is updated. maintainers = ["salvadord", "vvbragin"] + version("1.0.5", sha256="482ceceef87afd587c5df5ae62e31993fcb2f68c9f09fe2b1548a94e7797a3e3") version("1.0.4.2", sha256="4191464386bbc2ecad3b224302c19edb9a26fe0da57c0d9b234cb9c2dd918c8d") version("1.0.4.1", sha256="2ed12807f9b3d3e3a8ba9910f8d22c5c17635e0cdea0af09fa3a230e68876df6") diff --git a/packages/py-neuror/package.py b/packages/py-neuror/package.py index b9273ee334a89cc84c867a93a420a377100da4f8..d84d202d063b5189676bf3d5159b048d32e07b1e 100644 --- a/packages/py-neuror/package.py +++ b/packages/py-neuror/package.py @@ -5,6 +5,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + from spack.package import * @@ -16,17 +17,18 @@ class PyNeuror(PythonPackage): pypi = "neuror/NeuroR-1.2.3.tar.gz" version("develop", branch="master") - version("1.4.2", sha256="f5e18ebddf59a60ce650c24eb49042057cf97990d63aee3ceb58b7acff823255") + version("1.6.4", sha256="a65c0e1814c38326a344f03c1f5f92ab4db721c5541888b2acb9ffc5a7adac50") depends_on("py-setuptools", type=("build", "run")) depends_on("py-click@6.7:", type=("build", "run")) + depends_on("py-jsonschema", type=("build", "run")) depends_on("py-matplotlib@2.2.3:", type=("build", "run")) depends_on("py-morph-tool@2.9.0:2.999", type=("build", "run")) - depends_on("py-morphio@3.0:3.999", type=("build", "run")) - depends_on("py-neurom@3.0:3.999", type=("build", "run")) + depends_on("py-morphio@3.0.0:3.999", type=("build", "run")) + depends_on("py-neurom@3.0.1:3.999", type=("build", "run")) depends_on("py-numpy@1.19.2:", type=("build", "run")) - depends_on("py-nptyping@1.3.0:", type=("build", "run")) + depends_on("py-nptyping@2:", type=("build", "run")) depends_on("py-pandas@0.24.2:", type=("build", "run")) depends_on("py-pyquaternion@0.9.2:", type=("build", "run")) depends_on("py-scipy@1.2.0:", type=("build", "run")) diff --git a/packages/py-pynn/package.py b/packages/py-pynn/package.py index 358c7d3aa2494a01ef0acbc200a54a10a43d3449..0366f2aab09328f9368096a7f60884fd5e4afbc0 100644 --- a/packages/py-pynn/package.py +++ b/packages/py-pynn/package.py @@ -15,6 +15,8 @@ class PyPynn(PythonPackage): pypi = "PyNN/PyNN-0.10.0.tar.gz" git = "https://github.com/NeuralEnsemble/PyNN.git" + maintainers = ["apdavison"] + version('0.11.0', sha256='eab6ef281e0a00180c8b31ffb65984f54216c68464db363a5c09832fec91f952') version('0.10.1', sha256='03fbafeddd64ae7163e2b557b2760380b6eceb52469f1b3f4cc203bbb80f0cde') version('0.10.0', sha256='04120fe0e03260d664b337e0ac29d985c3fb3684ef35b1add93a66739891c98f') diff --git a/packages/py-pyunicore/package.py b/packages/py-pyunicore/package.py index 470f1e1c499471835d43f622096e2c5cbe29fd37..39fb8d9ea803210ce2117026762a61d5c58c7959 100644 --- a/packages/py-pyunicore/package.py +++ b/packages/py-pyunicore/package.py @@ -10,10 +10,11 @@ class PyPyunicore(PythonPackage): """Python library for using the UNICORE REST API""" homepage = "https://github.com/HumanBrainProject/pyunicore" - pypi = "pyunicore/pyunicore-0.14.1.tar.gz" + pypi = "pyunicore/pyunicore-0.15.0.tar.gz" - maintainers = ['bschulle', 'elmath'] + maintainers = ['bschulle'] + version('0.15.0', sha256='dc57ef05b1681b20471e8a4a72067671f74b4d41601099fe80324293439175d5') version('0.14.1', sha256='7efd4784d55ef02c4da4431232b54505814666577165c0f320c922ed2b32af01') version('0.14.0', sha256='8197aea4009ceb150bc4e341f660c942e424dca5025bc0253c8729328835a0c0') version('0.12.0', sha256='a1d7a63528cb0065d5ad58a42bc00adcf48614e16c2337dd815c8ac4d81b60cb') diff --git a/packages/py-quantities-scidash/package.py b/packages/py-quantities-scidash/package.py index c18a6d47f572600f3c8c8398a199c35df6a5a675..1854bc7162f01ab7c7d94bfb496445c4f474e64e 100644 --- a/packages/py-quantities-scidash/package.py +++ b/packages/py-quantities-scidash/package.py @@ -14,6 +14,8 @@ class PyQuantitiesScidash(PythonPackage): pypi = "quantities-scidash/quantities-scidash-0.12.4.3.tar.gz" git = "https://github.com/python-quantities/python-quantities.git" + maintainers = ["apdavison"] + version('0.12.4.3', sha256='c281383b989ae19bfe1526c09e452c82880b633a735f9494d8bb469412a33ea2') depends_on('python@3.6.9:') diff --git a/packages/py-ray/package.py b/packages/py-ray/package.py new file mode 100644 index 0000000000000000000000000000000000000000..c687d7eef4d8bc9379de9f63218967b1db4118f8 --- /dev/null +++ b/packages/py-ray/package.py @@ -0,0 +1,96 @@ +# Copyright 2013-2022 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 PyRay(PythonPackage): + """Ray provides a simple, universal API for building distributed applications.""" + + homepage = "https://github.com/ray-project/ray" + url = "https://github.com/ray-project/ray/archive/ray-0.8.7.tar.gz" + + version("2.0.1", sha256="b8b2f0a99d2ac4c001ff11c78b4521b217e2a02df95fb6270fd621412143f28b") + version("0.8.7", sha256="2df328f1bcd3eeb4fa33119142ea0d669396f4ab2a3e78db90178757aa61534b") + + variant("default", default=False, description="Install default extras", when="@2.0.1") + + depends_on("python@3.6:3.10", when="@2.0.1", type=("build", "run")) + depends_on("python@3.6:3.8", when="@0.8.7", type=("build", "run")) + depends_on("bazel@4.2.2:", when="@2.0.1", type="build") + depends_on("bazel@3.2.0", when="@0.8.7", type="build") + depends_on("npm", type="build") + depends_on("py-setuptools", type="build") + depends_on("py-cython@0.29.26:", when="@2.0.1", type="build") + depends_on("py-cython@0.29.14:", when="@0.8.7", type="build") + depends_on("py-attrs", when="@2.0.1", type=("build", "run")) + depends_on("py-click@7:8.0.4", when="@2.0.1", type=("build", "run")) + depends_on("py-click@7.0:", when="@0.8.7", type=("build", "run")) + depends_on("py-dataclasses", when="@2.0.1 ^python@:3.6", type=("build", "run")) + depends_on("py-filelock", type=("build", "run")) + depends_on("py-grpcio@1.32:1.43.0", when="@2.0.1 ^python@:3.9", type=("build", "run")) + depends_on("py-grpcio@1.42:1.43.0", when="@2.0.1 ^python@3.10:", type=("build", "run")) + depends_on("py-grpcio@1.28.1:", when="@0.8.7", type=("build", "run")) + depends_on("py-jsonschema", type=("build", "run")) + depends_on("py-msgpack@1", type=("build", "run")) + depends_on("py-numpy@1.16:", when="^python@:3.8", type=("build", "run")) + depends_on("py-numpy@1.19.3:", when="^python@3.9:", type=("build", "run")) + depends_on("py-protobuf@3.15.3:3", when="@2.0.1", type=("build", "run")) + depends_on("py-protobuf@3.8.0:", when="@0.8.7", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-frozenlist", when="@2.0.1", type=("build", "run")) + depends_on("py-requests", type=("build", "run")) + depends_on("py-typing-extensions", when="@2.0.1 ^python@:3.7", type=("build", "run")) + depends_on("py-virtualenv", when="@2.0.1", type=("build", "run")) + + # needed to fix import errors + depends_on("py-setproctitle", type=("build", "run")) + depends_on("py-colorama", type=("build", "run")) + depends_on("py-psutil", type=("build", "run")) + + with when("+default"): + depends_on("py-aiohttp@3.7:", type=("build", "run")) + depends_on("py-aiohttp-cors", type=("build", "run")) + depends_on("py-colorful", type=("build", "run")) + depends_on("py-py-spy@0.2:", type=("build", "run")) + depends_on("py-gpustat@1:", type=("build", "run")) + depends_on("py-opencensus", type=("build", "run")) + depends_on("py-pydantic", type=("build", "run")) + depends_on("py-prometheus-client@0.7.1:0.13", type=("build", "run")) + depends_on("py-smart-open", type=("build", "run")) + + # Historical dependencies + with when("@0.8.7"): + depends_on("py-aiohttp", type=("build", "run")) + depends_on("py-aioredis", type=("build", "run")) + depends_on("py-colorama", type=("build", "run")) + depends_on("py-colorful", type=("build", "run")) + depends_on("py-google", type=("build", "run")) + depends_on("py-gpustat", type=("build", "run")) + depends_on("py-py-spy@0.2.0:", type=("build", "run")) + depends_on("py-redis@3.3.2:3.4", type=("build", "run")) + depends_on("py-opencensus", type=("build", "run")) + depends_on("py-prometheus-client@0.7.1:", type=("build", "run")) + # If not guarded by SKIP_THIRDPARTY_INSTALL, those dependencies + # would be automatically installed via pip by the setup.py script. + depends_on("py-setproctitle", type=("build", "run")) + depends_on("py-psutil", type=("build", "run")) + # If not detected during install, the following dependency would + # be automatically downloaded and installed by the setup.py script. + depends_on("py-pickle5", when="^python@:3.8.1", type=("build", "run")) + + build_directory = "python" + + def setup_build_environment(self, env): + env.set("SKIP_THIRDPARTY_INSTALL", "1") + + # Compile the dashboard npm modules included in the project + @run_before("install") + def build_dashboard(self): + with working_dir(join_path("python", "ray", "dashboard", "client")): + npm = which("npm") + npm("ci") + npm("run", "build") diff --git a/packages/py-snudda/package.py b/packages/py-snudda/package.py index dca3202ff6e969283199865f00b52affa7966346..1678b1a00577884b791be5c8087e00339c26502f 100644 --- a/packages/py-snudda/package.py +++ b/packages/py-snudda/package.py @@ -7,7 +7,7 @@ class PySnudda(PythonPackage): homepage = "https://pypi.org/project/snudda/" pypi = "snudda/snudda-1.4.71.tar.gz" - maintainers = ["hjorth", "elmath"] + maintainers = ["hjorth"] version("1.4.71", "563fcd816ad8a5c44b3185759e179c68", url="https://files.pythonhosted.org/packages/f7/d2/3f7b50f01f4d18578e15fb15deee9de0abebaa2006d0738714241d0359a5/snudda-1.4.71-py3-none-any.whl", expand=False) version("1.4.0", "55f9b398b01b34bf3cec28c8a3aebc78") diff --git a/packages/py-spynnaker/package.py b/packages/py-spynnaker/package.py index af39aa3a3b913adb0b8d5d89af194ce9480238f5..6af7b1e2f441a5025acc2f531958f5f140f99486 100644 --- a/packages/py-spynnaker/package.py +++ b/packages/py-spynnaker/package.py @@ -13,6 +13,8 @@ class PySpynnaker(PythonPackage): homepage = "https://github.com/SpiNNakerManchester/sPyNNaker" pypi = "sPyNNaker/sPyNNaker-1!7.0.0.tar.gz" + maintainers = ["rowley"] + version("7.0.0", sha256="caeaa624e3fdbca3b938c9be7ea4c78a51a037e659389fb01952822f069664db") depends_on("python@3.7:", type=("build", "run")) diff --git a/packages/py-tvb-contrib/package.py b/packages/py-tvb-contrib/package.py index 1c528d746d5fe1d69d36d2d343df0cb6220e714c..5ce35d7daf775cf9993947f389f7c4b28274cf36 100644 --- a/packages/py-tvb-contrib/package.py +++ b/packages/py-tvb-contrib/package.py @@ -12,10 +12,11 @@ class PyTvbContrib(PythonPackage): """ homepage = "https://www.thevirtualbrain.org/" - pypi = 'tvb-contrib/tvb-contrib-2.8.1.tar.gz' + pypi = 'tvb-contrib/tvb-contrib-2.8.2.tar.gz' maintainers = ['dionperd', 'paulapopa', "ldomide"] + version('2.8.2', 'ff5990e979cf1f87046d7bed2c265f9dec50f9d817abaabdf5df7ec4482b5063') version('2.8.1', '0b9bc5f837913f1cba007d25ae94c9df51bf43bf19c9fb2af14a90cb6a1e1a66') # python_requires diff --git a/packages/py-tvb-data/package.py b/packages/py-tvb-data/package.py index fffa2aad60d948d19e8c8a91b05bdd88b8277f03..8dae50884557a25b1361a53521841e7c724e3b90 100644 --- a/packages/py-tvb-data/package.py +++ b/packages/py-tvb-data/package.py @@ -11,11 +11,12 @@ class PyTvbData(PythonPackage): Various demonstration datasets for use with The Virtual Brain are provided here. """ - homepage = "https://zenodo.org/record/7574266" - url = 'https://zenodo.org/record/7574266/files/tvb_data.zip' + homepage = "https://zenodo.org/record/8331301" + url = 'https://zenodo.org/record/8331301/files/tvb_data.zip' maintainers = ['paulapopa', "ldomide"] + version('2.8', 'd2f9b5933327c1d106838d301a4bf7b5') version('2.7', 'f74ec53edadb4540da3de7268257dd20') version('2.0.3', '1e02cdc21147f46644c57b14429f564f') diff --git a/packages/py-tvb-framework/package.py b/packages/py-tvb-framework/package.py index c0922e6b058828bd8b1503f2df948b96174fe4f3..c2c8c729f1c21436b7a9b8db0b0a3eb5e3bb3d8b 100644 --- a/packages/py-tvb-framework/package.py +++ b/packages/py-tvb-framework/package.py @@ -14,10 +14,11 @@ class PyTvbFramework(PythonPackage): """ homepage = "https://www.thevirtualbrain.org/" - pypi = 'tvb-framework/tvb-framework-2.8.1.1.tar.gz' + pypi = 'tvb-framework/tvb-framework-2.8.2.tar.gz' maintainers = ['paulapopa', 'ldomide'] + version('2.8.2', '00f4bdfc9faccf2df1a95695e231d7d4890cbf5ca7eac0474d52b976a51d91d5') version('2.8.1.1', '5f858398708453b3ea48de11c4ca1f098fe732738431ed421cc435d9bfc4b6fb') version('2.7.3.1', 'e1de0df0b8f43a317962b066790a5d724e1e6ae98ee124ad8b977f92aa228877') version('2.7.2', '1109c956c22e737d276bc822a69716c811d22e12f0606b47cc61700067af3ff4') diff --git a/packages/py-tvb-library/package.py b/packages/py-tvb-library/package.py index 21cea4efa89bc681a2fe251ccbc0046efa9cf4a8..7013071cac739b5ea5bfdaf1de3ca425a55774b9 100644 --- a/packages/py-tvb-library/package.py +++ b/packages/py-tvb-library/package.py @@ -14,10 +14,11 @@ class PyTvbLibrary(PythonPackage): """ homepage = "https://www.thevirtualbrain.org/" - pypi = 'tvb-library/tvb-library-2.8.1.tar.gz' + pypi = 'tvb-library/tvb-library-2.8.2.tar.gz' maintainers = ['paulapopa', 'ldomide'] + version('2.8.2', '4222dadbecce53b29e2141801b1ca8eb99c4595ace6c7d0469f7e0a41d3f384a') version('2.8.1', 'be130b10e7e176d503709afd211ae728f45d4e8b4a6082c6f6fcfbc1be990d0c') version('2.8', '49624cc8ca0673f8590227a9246ea2ffa855ef7a4242235ce85263ff6f3db7c8') version('2.7.3', 'bcf7ad291ff4549508f6720e207561f5f0bad638cd0d8507fd4ed9a7bcc561ff') diff --git a/packages/py-tvb-multiscale/package.py b/packages/py-tvb-multiscale/package.py index 5c17c883beef5caba3db0840a9e27dcf388bd1d5..f98ba9cbaea4e49c38135d8a2cef0ee4174b02b4 100644 --- a/packages/py-tvb-multiscale/package.py +++ b/packages/py-tvb-multiscale/package.py @@ -12,13 +12,11 @@ class PyTvbMultiscale(PythonPackage): """ homepage = "https://github.com/the-virtual-brain/tvb-multiscale" - # url = "https://github.com/the-virtual-brain/tvb-multiscale/archive/refs/tags/2.0.2.tar.gz" - url = "https://github.com/the-virtual-brain/tvb-multiscale/archive/refs/tags/2.0.3.dev.tar.gz" + url = "https://github.com/the-virtual-brain/tvb-multiscale/archive/refs/tags/2.1.0.ebrains.tar.gz" - maintainers = ['dionperd', 'paulapopa', "ldomide"] + maintainers = ['dionperd', 'paulapopa', "ldomide", "vbragin"] - # version('2.0.2', sha256='647079e649225c7e9029bea9485872836a6dfe027a29718413e1e9e00255f4e6') - version('2.0.3.dev', sha256='3763c709ccb554a4bb1a38350a8137e2287e4859ef5cd13ca744db3351ab0def') + version('2.1.0.ebrains', sha256='eab51e235f565cffbf300daa4b7c65a7afacde149e2eda0f49437db3c2429253') # python_requires depends_on('python@3.8:3.10', type=('build', 'run')) @@ -36,6 +34,7 @@ class PyTvbMultiscale(PythonPackage): depends_on('py-nestml', type=('build', 'run')) depends_on('py-elephant', type=('build', 'run')) depends_on('py-pyspike', type=('build', 'run')) + depends_on('py-ray', type=('build', 'run')) # Test dependency depends_on('py-pytest@:7.1', type='test') diff --git a/packages/py-viziphant/package.py b/packages/py-viziphant/package.py index 8d75c691fe6efcbde6c4dc47fafc8e4d92815f50..22f8da9a02fd2b2c05a3296463b5c777402ede21 100644 --- a/packages/py-viziphant/package.py +++ b/packages/py-viziphant/package.py @@ -12,8 +12,7 @@ class PyViziphant(PythonPackage): homepage = "https://viziphant.readthedocs.io/en/latest/" pypi = "viziphant/viziphant-0.1.0.tar.gz" - # notify when the package is updated. - maintainers = ['Moritz-Alexander-Kern'] + maintainers = ['moritzkern'] version('0.3.0', sha256='40d2970b8384d8e1c5d324caf1b1188391d7e651375ce08dd518bcf4ac6477f2') version('0.2.0', sha256='044b5c92de169dfafd9665efe2c310e917d2c21980bcc9f560d5c727161f9bd8') diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py index 07309dd5843f178701535ece87615556e6d262ff..60afda339e5708b68e663da167c6854e9834254b 100644 --- a/packages/pynn-brainscales/package.py +++ b/packages/pynn-brainscales/package.py @@ -11,23 +11,27 @@ class PynnBrainscales(WafPackage): """PyNN toplevel for the BrainScaleS-2 neuromorphic hardware systems""" homepage = "https://github.com/electronicvisions/pynn-brainscales" + # This repo provides a custom waf binary used for the build below git = "https://github.com/electronicvisions/pynn-brainscales.git" - version('7.0-a1', branch='waf') + maintainers = ['emuller'] + + version('7.0-rc1', branch='waf') - # PPU compiler dependencies - depends_on('oppulance@7.0-a1') + # compiler for the BrainScaleS-2 embedded processor ("PPU"); needed for + # building/linking, at runtime and for testing + depends_on('oppulance@7.0-rc1', type=('build', 'link', 'run', 'test')) # host software dependencies - depends_on('bitsery', type=('build', 'link', 'run')) + 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')) # specialize boost (non-clingo, type=('build', 'link', 'run')) - depends_on('cereal', type=('build', 'link', 'run')) + 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('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('inja', type=('build', 'link', 'run')) # template engine for PPU source jit generation + depends_on('inja', type=('build', 'link', 'run', 'test')) # template engine for PPU source jit generation depends_on('intel-tbb', type=('build', 'link', 'run')) # ppu gdbserver depends_on('libelf', type=('build', 'link', 'run')) depends_on('liblockfile', type=('build', 'link', 'run')) @@ -35,7 +39,7 @@ class PynnBrainscales(WafPackage): depends_on('log4cxx@0.12.1:', type=('build', 'link', 'run')) depends_on('pkgconfig', type=('build', 'link', 'run')) depends_on('psmisc', type=('run', 'test')) - depends_on('python@3.7.0:', type=('build', 'link', 'run')) # BrainScaleS(-2, type=('build', 'link', 'run')) only supports Python >= 3.7 + depends_on('python@3.7.0:', type=('build', 'link', 'run')) # BrainScaleS-2 only supports Python >= 3.7 depends_on('py-deap@1.3.1:', type=('build', 'link', 'run')) depends_on('py-h5py', type=('build', 'link', 'run')) # PyNN tests need it depends_on('py-matplotlib', type=('build', 'link', 'run')) @@ -104,11 +108,27 @@ class PynnBrainscales(WafPackage): env.set('WAF_CONFIGURE_LD_LIBRARY_PATH', ':'.join(library)) env.prepend_path('PATH', ':'.join(path)) - def setup_dependent_build_environment(self, env, dependent_spec): + def _setup_common_env(self, env): + # TODO: use standard install layout for Python modules and extensions' + # shared objects => remove then env.prepend_path('PYTHONPATH', self.prefix.lib) + # grenade needs to find some libraries for the JIT-compilation of + # programs for BrainScaleS-2's embedded processor. + ppu_include_dirs = [] + ppu_dep_names = ['bitsery', 'boost', 'cereal'] + for ppu_dep_name in ppu_dep_names: + dep = self.spec[ppu_dep_name] + dep_include_dirs = set(dep.headers.directories) + ppu_include_dirs.extend(list(dep_include_dirs)) + env.set('C_INCLUDE_PATH', ':'.join(ppu_include_dirs)) + env.set('CPLUS_INCLUDE_PATH', ':'.join(ppu_include_dirs)) + + def setup_dependent_build_environment(self, env, dependent_spec): + self._setup_common_env(env) + def setup_run_environment(self, env): - env.prepend_path('PYTHONPATH', self.prefix.lib) + self._setup_common_env(env) # override configure step as we perform a project setup first def configure(self, spec, prefix): @@ -139,6 +159,7 @@ class PynnBrainscales(WafPackage): def build_test(self): self.builder.waf('build', '--test-execall') + copy_tree('build/test_results', join_path(self.prefix, '.build')) def install_args(self): args = ['--test-execnone'] @@ -148,7 +169,6 @@ class PynnBrainscales(WafPackage): with working_dir('spack-test', create=True): old_pythonpath = os.environ.get('PYTHONPATH', '') os.environ['PYTHONPATH'] = ':'.join([str(self.prefix.lib), old_pythonpath]) - python('-c', 'import pynn_brainscales; print(pynn_brainscales.__file__)') - # ignore exit code for now - cmd_true = which("true") - cmd_true() + bash = which("bash") + # ignore segfaults for now (exit code 139) + bash('-c', '(python -c "import pynn_brainscales; print(pynn_brainscales.__file__)" || ( test $? -eq 139 && echo "segfault")) || exit $?') diff --git a/packages/r-rgsl/package.py b/packages/r-rgsl/package.py index 264ecfe9ae461de88a6c2eae926be24d27f637e1..d7796805ea3fc29606fb33805b450d4d9efb31d7 100644 --- a/packages/r-rgsl/package.py +++ b/packages/r-rgsl/package.py @@ -13,7 +13,10 @@ class RRgsl(RPackage): homepage = "https://github.com/icpm-kth/rgsl" url = "https://github.com/icpm-kth/rgsl/archive/refs/tags/v0.1.tar.gz" - version("0.1", sha256="dd6a14dda8731f4cf32149c8a9842e4e2ba424c8404f4d6839108153b20e4c3e") + maintainers = ["akramer", "oliviaeriksson"] + + version("0.1.1", sha256="a2d8fdbbb6c4f9937d6abaa56d912418b42931ae67067357e9bf5a032cc1a833") + version("0.1", sha256="dd6a14dda8731f4cf32149c8a9842e4e2ba424c8404f4d6839108153b20e4c3e") # GNU Scientific Library: https://www.gnu.org/software/gsl # spack: https://spack.readthedocs.io/en/latest/package_list.html#gsl diff --git a/packages/r-sbtabvfgen/package.py b/packages/r-sbtabvfgen/package.py index 9741f22666c2af67aaaa053eb4ac6c79f1686b4b..0b49a66b5cefc4df3380b80e3e0a2774f6fae787 100644 --- a/packages/r-sbtabvfgen/package.py +++ b/packages/r-sbtabvfgen/package.py @@ -13,6 +13,8 @@ class RSbtabvfgen(RPackage): homepage = "https://github.com/icpm-kth/SBtabVFGEN" url = "https://github.com/icpm-kth/SBtabVFGEN/archive/refs/tags/v0.1.tar.gz" + maintainers = ["akramer", "oliviaeriksson"] + version("0.1", sha256="499c51abee75ca5961a41608c9fb09ad523e12aae276f5f67bffa313244cff28") depends_on("r-pracma") diff --git a/packages/r-uqsa/package.py b/packages/r-uqsa/package.py index 4b4b34fd06176066292109b75de90b6e61b3912d..823f067c512185d4ec5820423cf7dbc0cd83c370 100644 --- a/packages/r-uqsa/package.py +++ b/packages/r-uqsa/package.py @@ -21,6 +21,8 @@ class RUqsa(RPackage): homepage = "https://github.com/icpm-kth/uqsa" url = "https://github.com/icpm-kth/uqsa/archive/refs/tags/v2.2.tar.gz" + maintainers = ["akramer", "oliviaeriksson"] + version("2.2", sha256="df15d20c0cd466083181ec8f37cd331f409dcd23838553cd46a7a7305bdcfc7f") depends_on("r-vinecopula") diff --git a/packages/wf-biobb/package.py b/packages/wf-biobb/package.py index 4f98f444acfd1bf0bc695cd5abaa7a4b143ce4cd..d8188d8d0aae81f3ad22d94fc4d0b9d83ebe32a1 100644 --- a/packages/wf-biobb/package.py +++ b/packages/wf-biobb/package.py @@ -12,6 +12,8 @@ class WfBiobb(BundlePackage): homepage="https://wiki.ebrains.eu/bin/view/Collabs/biobb" + maintainers = ["dbeltran"] + version("0.1") depends_on("py-plotly") diff --git a/packages/wf-brainscales2-demos/package.py b/packages/wf-brainscales2-demos/package.py index 74a3fcf7b34e5a708317fb452e8d4075cbb7710e..a879c609f6ceebf48dcb4aebdc46f455501ef28d 100644 --- a/packages/wf-brainscales2-demos/package.py +++ b/packages/wf-brainscales2-demos/package.py @@ -4,7 +4,9 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from glob import glob from spack import * +import os class WfBrainscales2Demos(Package): @@ -38,19 +40,37 @@ class WfBrainscales2Demos(Package): # sanity_check_prefix requires something in the install directory mkdirp(prefix + "/.spack_test_results") - @run_after("install") - @on_package_attributes(run_tests=True) - def installcheck(self): + def _run_notebooks(self): + # TODO: remove debug output cmd_env = which("env") cmd_env() # execute notebook and save jupyter = Executable("jupyter") - jupyter("nbconvert", - "--ExecutePreprocessor.kernel_name=python3", - "--execute", - "--allow-errors", - "--to", - "notebook", - "ts_05-yin_yang.ipynb", - "--output", - prefix+"/.spack_test_results/ts_05-yin_yang.ipynb") + for fn in glob("ts*.ipynb") + glob("tp*.ipynb"): + jupyter("nbconvert", + "--ExecutePreprocessor.kernel_name=python3", + "--execute", + "--allow-errors", + "--to", + "notebook", + fn, + "--output", + prefix + "/.spack_test_results/" + fn) + + def _set_collab_things(self): + # enable "EBRAINS lab" mode + os.environ["LAB_IMAGE_NAME"] = "EBRAINS" + # select "EBRAINS experimental" upstream experiment service + os.environ["LAB_KERNEL_NAME"] = "EBRAINS-experimental" + os.environ["JUPYTERHUB_USER"] = "spack-test-wf-brainscales2-demos" + + @run_after("install") + @on_package_attributes(run_tests=True) + def installcheck(self): + self._set_collab_things() + # TODO (ECM): Provide a selection of notebooks that perform local-only tests. + #self._run_notebooks() + + def test_notebooks(self): + self._set_collab_things() + self._run_notebooks() diff --git a/packages/wf-multi-area-model/package.py b/packages/wf-multi-area-model/package.py index 0020b1de2827ce3a086283a1350e7f86e3f68c27..01ffda36e18216b0037e7d4fc043830fb8cbd2b7 100644 --- a/packages/wf-multi-area-model/package.py +++ b/packages/wf-multi-area-model/package.py @@ -10,10 +10,10 @@ class WfMultiAreaModel(Package): """Meta-package to collect all dependencies of the Multi-Area-Model.""" homepage="https://inm-6.github.io/multi-area-model/" - #git = "https://github.com/INM-6/multi-area-model" - git = "https://github.com/terhorstd/multi-area-model" - maintainer = ["terhorstd"] + git = "https://github.com/INM-6/multi-area-model" + maintainer = ["terhorstd", "didi-hou"] + version("v1.1.0", tag="v1.1.0") version("master", branch="master") version("ebrains", branch="lab.ebrains.eu") @@ -24,6 +24,7 @@ class WfMultiAreaModel(Package): depends_on("py-scipy") depends_on("py-future") depends_on("nest") + depends_on("r-aod") depends_on("py-notebook", type="test") def install(self, spec, prefix): diff --git a/packages/wf-uq-akar4/package.py b/packages/wf-uq-akar4/package.py index 2aca38fc52842465afcc58a151765d9fe9bd563d..4718038e85b24e2176fbba64db47f2e48c682663 100644 --- a/packages/wf-uq-akar4/package.py +++ b/packages/wf-uq-akar4/package.py @@ -12,6 +12,8 @@ class WfUqAkar4(BundlePackage): homepage="https://wiki.ebrains.eu/bin/view/Collabs/subcellular-modeling-and-simulation/Lab" + maintainers = ["akramer", "oliviaeriksson"] + version("0.1") depends_on("r-mass") diff --git a/spack.yaml b/spack.yaml index 550e260ecf133c58c6c7844c76f5762d04b1e838..835600464099cc3f71383d07029c4c4414fc4c4a 100644 --- a/spack.yaml +++ b/spack.yaml @@ -13,56 +13,56 @@ spack: - biobb-model@4.0.0 - biobb-structure-checking@3.12.1 - biobb-structure-utils@4.0.0 - - hxtorch@7.0-a1 - - nest@3.5 +sonata - - neuron@8.2.2 +mpi + - hxtorch@7.0-rc1 + - nest@3.6-rc2 +sonata + - neuron@8.2.3 +mpi - py-bluepyefe@2.2.18 - py-bluepymm@0.7.65 - py-bluepyopt@1.13.86 - py-ebrains-drive@0.5.1 - - py-ebrains-kg-core@0.9.14 + - py-ebrains-kg-core@0.9.15 - py-efel@4.0.4 - py-elephant@0.13.0 - - py-fairgraph@0.11.0 + - py-fairgraph@0.11.1 - py-frites@0.4.4 - py-hbp-archive@1.1.1 - py-hbp-neuromorphic-platform@0.10.1 - py-hbp-validation-client@0.8.2 - py-hippounit@1.3.6 - py-lfpy@2.3 - - py-lfpykit@0.5 - - py-libsonata@0.1.22 + - py-lfpykit@0.5.1 + - py-libsonata@0.1.23 - py-neo@0.12.0 - py-nestml@5.2.0 - - py-netpyne@1.0.4.2 + - py-netpyne@1.0.5 - py-neurom@3.2.2 - - py-neuror@1.4.2 + - py-neuror@1.6.4 - py-pdb2pqr@3.5.2 - py-pynn@0.11.0 +mpi - - py-pyunicore@0.14.1 + - py-pyunicore@0.15.0 - py-quantities-scidash@0.12.4.3 - py-quantities@0.14.1 - py-siibra@0.4a57 - py-snudda@1.4.71 - py-spynnaker@7.0.0 - - py-tvb-contrib@2.8.1 - - py-tvb-data@2.7 - - py-tvb-framework@2.8.1.1 + - py-tvb-contrib@2.8.2 + - py-tvb-data@2.8 + - py-tvb-framework@2.8.2 - py-tvb-gdist@2.2 - - py-tvb-library@2.8.1 - - py-tvb-multiscale@2.0.3.dev + - py-tvb-library@2.8.2 + - py-tvb-multiscale@2.1.0.ebrains - py-tvb-storage@2.8.1 - py-viziphant@0.3.0 - - pynn-brainscales@7.0-a1 - - r-rgsl@0.1 + - pynn-brainscales@7.0-rc1 + - r-rgsl@0.1.1 - r-sbtabvfgen@0.1 - r-uqsa@2.2 - sda@7.3.3d # Workflows (meta-packages) - wf-biobb - wf-brainscales2-demos + - wf-multi-area-model@v1.1.0 - wf-uq-akar4@0.1 - - wf-multi-area-model@ebrains #- py-cerebstats #- py-cerebunit #- py-morphounit@1.0.4