diff --git a/packages.yaml b/packages.yaml
index e7b9ae9064a57c1a5c8bc8537bbb2a07f4286719..c16e3313f79589b7f8ec0cc67d937d55491ea2fe 100644
--- a/packages.yaml
+++ b/packages.yaml
@@ -1,14 +1,24 @@
packages:
all:
+ # collab-specific settings
target: [x86_64]
compiler: [gcc@10.3.0]
python:
+ # collab-specific settings
version: [3.8.11]
r:
version: [4.1.3]
+ # EM: +X fixes build for collab
variants: [+X]
py-torch:
+ # ECM: keep at latest w.r.t. tracked upstream spack
version: [1.11.0]
+ # ECM: No cuda nor rocm in collab VMs.
+ # I did not try to minimize the specification any further.
variants: [~cuda~rocm~valgrind~mkldnn~mpi~gloo+tensorpipe~onnx_ml]
py-jax:
+ # ECM: No cuda in collab VMs.
+ variants: [~cuda]
+ py-jaxlib:
+ # ECM: No cuda in collab VMs.
variants: [~cuda]
diff --git a/packages/apbs/package.py b/packages/apbs/package.py
index 288b92f62c435d3d201cd2cee1c11bf8d3197e71..f53769a3f2e5b2ce8008067ce7e79bd1493a6d74 100644
--- a/packages/apbs/package.py
+++ b/packages/apbs/package.py
@@ -30,17 +30,43 @@ class Apbs(CMakePackage):
version('3.4.0', sha256='572ff606974119430020ec948c78e171d8525fb0e67a56dad937a897cac67461')
# Dependencies.
- depends_on('cmake@3.19', type='build')
- depends_on('python@3.8:3.10', type=('build', 'run'))
- depends_on('blas', type=('build', 'run'))
- depends_on('suite-sparse', type=('build', 'run'))
- depends_on('maloc', type=('build', 'run'))
+ depends_on('cmake@3.19', type=('build'))
+ depends_on('bison', type=('build'))
+ depends_on('flex', type=('build'))
+ depends_on('swig', type=('build'))
+ depends_on('readline', type=('build', 'run'))
+ depends_on('eigen', type=('build', 'run'))
+ depends_on('boost', type=('build', 'run'))
+ depends_on('blas', type=('build', 'run'))
+ depends_on('arpack-ng', type=('build', 'run'))
+ depends_on('suite-sparse+tbb', type=('build', 'run'))
+ depends_on('maloc', type=('build', 'run'))
+ depends_on('python@3.8:3.10', type=('build', 'run'))
def cmake_args(self):
# Min and max Python versions need to be set as variables to pass tests.
# See tests/CMakeLists.txt lines 6-14.
+ python_version = str(self.spec['python'].version)
args = [
- '-DPYTHON_MIN_VERSION=3.8',
- '-DPYTHON_MAX_VERSION=3.10',
+ '-DPYTHON_MIN_VERSION='+python_version,
+ '-DPYTHON_MAX_VERSION='+python_version
]
return args
+
+ def setup_build_environment(self, env):
+ # add suite-sparse libs to path because tests can't find them
+ env.prepend_path("LD_LIBRARY_PATH", self.spec['suite-sparse'].prefix.lib)
+
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
+ def install_test(self):
+ with working_dir(self.build_directory):
+ # for testing, apbs needs to be in the path
+ import os
+ os.environ['PATH'] = self.prefix.bin + ':' + os.environ['PATH']
+ ctest = which("ctest")
+ ctest("-C", "Release", "--output-on-failure")
+
+ def check(self):
+ # this would run "make test" before installation, so we override this and define install_test() instead
+ pass
diff --git a/packages/neuron/package.py b/packages/neuron/package.py
index 1bc7d7b2d40d3dcdfcbc0fb02fa27a06cbdb3b62..a960787cf718d384faddc709cf040792af43a2ef 100644
--- a/packages/neuron/package.py
+++ b/packages/neuron/package.py
@@ -143,8 +143,11 @@ class Neuron(CMakePackage):
env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "lib"))
if self.spec.satisfies("+python"):
env.prepend_path("PYTHONPATH", self.spec.prefix.lib.python)
-
- # necessary for installation time tests of dependents
+
+ # override setup_{build/run}_environment for standalone package tests
def setup_dependent_build_environment(self, env, dependent_spec):
self.setup_run_environment(env)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ self.setup_run_environment(env)
+
diff --git a/packages/py-dicthash/package.py b/packages/py-dicthash/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..785066f7a6ed430e46b4d7312c29b1ac4f70873c
--- /dev/null
+++ b/packages/py-dicthash/package.py
@@ -0,0 +1,28 @@
+# 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 import *
+
+
+class PyDicthash(PythonPackage):
+ """Generate portable md5 hashes from (arbitrarily nested) dictionaries.
+
+ These dictionaries can contain arbitrary Python and NumPy data types. The
+ goal of the module is to provide a hash function that can be safely used
+ across different platforms. Its main use is to generate unique identifiers
+ for parameter dictionaries used in parameter scans of neural network
+ simulations.
+ """
+
+ homepage = "https://python-dicthash.readthedocs.io"
+ pypi = "dicthash/dicthash-0.0.2.tar.gz"
+ git = "https://github.com/Happy-Algorithms-League/python-dicthash"
+
+ maintainers = ['terhorstd', 'jakobj']
+
+ version('0.0.2', sha256='30b71bd64101295053b082b3244870e6ca7dca561bdb8f3776c42c8c40cb4af4')
+
+ depends_on('py-setuptools', type='build')
+
diff --git a/packages/py-ebrains-kg-core/package.py b/packages/py-ebrains-kg-core/package.py
index 4f4f7f3cd02695b2fe39b6e56453891f361674d8..c6eff2c94b78870eba090b3ae6584775943c1b42 100644
--- a/packages/py-ebrains-kg-core/package.py
+++ b/packages/py-ebrains-kg-core/package.py
@@ -15,6 +15,9 @@ class PyEbrainsKgCore(PythonPackage):
maintainers = ["ioannistsanaktsidis", "olinux"]
+ version('0.9.14', sha256='e898761abb999b09e5da49b25d13ffcadebaec7acd87ed079abe23f3bb12a5e7')
+ version('0.9.13', sha256='25e155e9eb6c516dd33e29d9ff433c996630989a0f017c5920b66fe5334f2d82')
+ version('0.9.12', sha256='244e52dffaec425bf65cf2d3d697969ec9036aaa028bf47fdddfb4911282f484')
version("0.9.10", sha256="5b7022379f06468fd827a8eb7bddf86a182af188abfd11c84a47bbe21c6f8b7b")
depends_on("py-setuptools", type="build")
diff --git a/packages/py-jaxlib/package.py b/packages/py-jaxlib/package.py
index ed403158bc5ef0351b234f70c987dbf823b5ed25..b6d117c94f6bc087e7ee53c64d23a6b3b9443375 100644
--- a/packages/py-jaxlib/package.py
+++ b/packages/py-jaxlib/package.py
@@ -21,6 +21,8 @@ class PyJaxlib(PythonPackage, CudaPackage):
version("0.3.25", sha256="73ebc7868631cd9d520385557bbd7f08762d748a5a6a1bebef0f3b8d7ba748ef")
version("0.1.74", sha256="bbc78c7a4927012dcb1b7cd135c7521f782d7dad516a2401b56d3190f81afe35")
+ variant("cuda", default=True, description="Build with CUDA")
+
depends_on("python@3.7:", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("py-numpy@1.18:", type=("build", "run"))
diff --git a/packages/py-neo/package.py b/packages/py-neo/package.py
index 7f641351423ffb6df841f3db371f77d0b162aeb4..75c4d780f41bb22ddb17062c048176c9ddab0bfc 100644
--- a/packages/py-neo/package.py
+++ b/packages/py-neo/package.py
@@ -14,6 +14,7 @@ class PyNeo(PythonPackage):
homepage = "https://neuralensemble.org/neo"
pypi = "neo/neo-0.4.1.tar.gz"
+ version('0.12.0', sha256='3b6ca4fc05dfdb4e953e253e70994bfbbc8fe2e90958fbda7fa5860caf3fa63a')
version('0.11.1', sha256='f4a206044b332ad00b10072b0dc7a70b359fa365ec786f92ab757ef4ae588474')
version('0.11.0', sha256='cdf8e1324a3fbbd1efd5618dcd37cfc497b1997923bd710b598472c1d846674a')
version('0.10.2', sha256='2d4218b0826daeea880e155227060029ec38a00238ceb5f097138d9467c6399b')
diff --git a/packages/py-nested-dict/package.py b/packages/py-nested-dict/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..9442c3b12597f0a4810e069d2128a17d7acbd9b2
--- /dev/null
+++ b/packages/py-nested-dict/package.py
@@ -0,0 +1,26 @@
+# 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 import *
+
+
+class PyNestedDict(PythonPackage):
+ """FIXME: Put a proper description of your package here."""
+
+ homepage = "http://nested-dict.readthedocs.org"
+ pypi = "nested_dict/nested_dict-1.61.tar.gz"
+ git = "https://github.com/bunbun/nested-dict"
+
+ # FIXME: Add a list of GitHub accounts to
+ # notify when the package is updated.
+ # maintainers = ['terhorstd', 'bunbun']
+
+ version('1.61', sha256='de0fb5bac82ba7bcc23736f09373f18628ea57f92bbaa13480d23f261c41e771')
+
+ # FIXME: Add a build backend, usually defined in pyproject.toml. If no such file
+ # exists, use setuptools.
+ # depends_on('py-setuptools', type='build')
+ # depends_on('py-flit-core', type='build')
+ # depends_on('py-poetry-core', type='build')
diff --git a/packages/py-pdb2pqr/package.py b/packages/py-pdb2pqr/package.py
index d43ebaaa969019e2a5fa269d8007c6ee0e7ef57b..e219a78510ecffa8a7aa0e43025471b95b62c1e6 100644
--- a/packages/py-pdb2pqr/package.py
+++ b/packages/py-pdb2pqr/package.py
@@ -23,10 +23,22 @@ class PyPdb2pqr(PythonPackage):
maintainers = ['richtesn', 'thielblz']
version('3.5.2', sha256='9d145ff3797a563ce818f9d2488413ac339f66c58230670c2455b2572cccd957')
-
+ version('3.5.1', sha256='50272a850e876ea76d253e21eb01041ac8a01f7f17d73d0da95b26a6204c2564')
+ version('3.5.0', sha256='560d992b62e009a6e752c8b7db3b53243ff08945eb76eb9460e43887433a55b1')
+ version('3.4.1', sha256='9e8cabd984f8e31f010bda0a3e81c87ad93f403d1fd36c787627e5134f7542ba')
+
depends_on('python@3.8:', type=('build','run'))
depends_on('py-docutils@:0.18', type=('build','run'))
depends_on('py-mmcif-pdbx@1.1.2:', type=('build','run'))
depends_on('py-numpy', type=('build','run'))
depends_on('py-propka@3.2:', type=('build','run'))
depends_on('py-requests', type=('build','run'))
+ depends_on('py-pytest', type=('test'))
+ depends_on('py-pandas@1.0:', type=('test'))
+ depends_on('py-testfixtures', type=('test'))
+
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
+ def install_test(self):
+ pytest = which('pytest')
+ pytest()
diff --git a/packages/r-sbtabvfgen/package.py b/packages/r-sbtabvfgen/package.py
index c50a7ce8f319e3c1af96dda18edfe44c257c5020..9741f22666c2af67aaaa053eb4ac6c79f1686b4b 100644
--- a/packages/r-sbtabvfgen/package.py
+++ b/packages/r-sbtabvfgen/package.py
@@ -16,3 +16,5 @@ class RSbtabvfgen(RPackage):
version("0.1", sha256="499c51abee75ca5961a41608c9fb09ad523e12aae276f5f67bffa313244cff28")
depends_on("r-pracma")
+ depends_on("r-hdf5r")
+ depends_on("sbml+r")
diff --git a/packages/sbml/package.py b/packages/sbml/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..33cec4946b2eec356418599ef6c9b7b7e1913c95
--- /dev/null
+++ b/packages/sbml/package.py
@@ -0,0 +1,136 @@
+# 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 import *
+
+
+class Sbml(CMakePackage):
+ """Library for the Systems Biology Markup Language"""
+
+ homepage = "https://sbml.org"
+ maintainers = ['rblake-llnl']
+
+ version('5.19.0', sha256='a7f0e18be78ff0e064e4cdb1cd86634d08bc33be5250db4a1878bd81eeb8b547')
+ version('5.18.0', sha256='6c01be2306ec0c9656b59cb082eb7b90176c39506dd0f912b02e08298a553360')
+ version('5.17.0', sha256='189216e1472777e4464b791c506b79267d07a5454cb23ac991452711f8e0ed3a')
+ version('5.16.0', sha256='c6855481434dd2a667fef73e1ff2feade509aa2f3a76d4d06e29022975ce1496')
+ version('5.15.0', sha256='c779c2a8a97c5480fe044028099d928a327261fb68cf08657ec8d4f3b3fc0a21')
+ version('5.13.0', sha256='e58430edb1b454d7414bcf1be0549bf6860a6d19d73232eb58211559485c2c05')
+ version('5.12.0', sha256='c637494b19269947fc90ebe479b624d36f80d1cb5569e45cd76ddde81dd28ae4')
+ version('5.11.4', sha256='6429188b689b331b0b8f2c8b55b3f2339196ccd4c93191648fa767e1d02152a3')
+ version('5.11.0', sha256='b21931ca7461494915c617b30d4a9f2cafe831d6ce74989b3e5874e6e3c3f72b')
+ version('5.10.2', sha256='83f32a143cf657672b1050f5f79d3591c418fc59570d180fb1f39b103f4e5286')
+ version('5.10.0', sha256='2cd8b37018ce8b1df869c8c182803addbce6d451512ae25a7f527b49981f0966')
+
+ def url_for_version(self, version):
+ url = "https://downloads.sourceforge.net/project/sbml/libsbml/{0}/stable/libSBML-{1}-core-plus-packages-src.tar.gz".format(version, version)
+ return url
+
+ variant('python', default=False,
+ description='Build with python support')
+ depends_on('python', when="+python")
+
+ variant('perl', default=False,
+ description='Build with perl support')
+ depends_on('perl', when="+perl")
+
+ variant('ruby', default=False,
+ description='Build with ruby support')
+ depends_on('ruby', when="+ruby")
+
+ variant('r', default=False,
+ description='Build with R support')
+ depends_on('r', when="+r")
+
+ variant('octave', default=False,
+ description='Build with octave support')
+ depends_on('octave', when="+octave")
+
+ variant('matlab', default=False,
+ description='Build with matlab support')
+ depends_on('matlab', when="+matlab")
+
+ variant('java', default=False,
+ description='Build with java support')
+ depends_on('java', when="+java")
+
+ variant('mono', default=False,
+ description='Build with mono support')
+ depends_on('mono', when="+mono")
+
+ variant('cpp', default=False,
+ description="All c++ includes should be under a namespace")
+
+ depends_on('swig@2:', type='build')
+ depends_on('cmake', type='build')
+ depends_on('zlib')
+ depends_on('bzip2')
+ depends_on('libxml2')
+
+ def cmake_args(self):
+ spec = self.spec
+ args = [
+ "-DENABLE_COMP:BOOL=ON",
+ "-DENABLE_FBC:BOOL=ON",
+ "-DENABLE_GROUPS:BOOL=ON",
+ "-DENABLE_LAYOUT:BOOL=ON",
+ "-DENABLE_QUAL:BOOL=ON",
+ "-DENABLE_RENDER:BOOL=ON",
+ "-DWITH_BZIP2:BOOL=ON",
+ "-DWITH_CHECK:BOOL=OFF",
+ "-DWITH_DOXYGEN:BOOL=OFF",
+ "-DWITH_EXAMPLES:BOOL=OFF",
+ "-DWITH_EXPAT:BOOL=OFF",
+ "-DWITH_LIBXML:BOOL=ON",
+ "-DWITH_SWIG:BOOL=ON",
+ "-DWITH_WALL:BOOL=ON",
+ "-DWITH_XERCES:BOOL=OFF",
+ "-DWITH_ZLIB:BOOL=ON",
+ ]
+ args.append(self.define_from_variant('WITH_CPP_NAMESPACE', 'cpp'))
+ if '+python' in spec:
+ args.extend([
+ "-DWITH_PYTHON:BOOL=ON",
+ "-DWITH_PYTHON_INCLUDE:PATH=%s" % spec['python'].prefix,
+ ])
+ else:
+ args.append('-DWITH_PYTHON:BOOL=OFF')
+
+ args.append(self.define_from_variant('WITH_CSHARP', 'mono'))
+
+ if '+java' in spec:
+ args.extend([
+ "-DWITH_JAVA:BOOL=ON",
+ "-DJDK_PATH:STRING=%s" % spec['java'].prefix,
+ "-DJAVA_INCLUDE_PATH:STRING=%s" % spec['java'].prefix,
+ ])
+ else:
+ args.append('-DWITH_JAVA:BOOL=OFF')
+
+ if '+matlab' in spec:
+ args.extend([
+ "-DWITH_MATLAB:BOOL=ON",
+ "-DMATLAB_ROOT_PATH:PATH=%s" % spec['matlab'].prefix,
+ "-DWITH_MATLAB_MEX:BOOL=ON",
+ ])
+ else:
+ args.append('-DWITH_MATLAB:BOOL=OFF')
+
+ # fix issue with finding existing R libs/headers
+ if '+r' in spec:
+ args.extend([
+ "-DR_LIB=%s" % spec['r'].prefix,
+ "-DR_INCLUDE_DIRS=%s" % spec['r'].prefix.rlib.R.include
+ ])
+
+ args.append(self.define_from_variant('WITH_OCTAVE', 'octave'))
+ args.append(self.define_from_variant('WITH_PERL', 'perl'))
+ args.append(self.define_from_variant('WITH_R', 'r'))
+ args.append(self.define_from_variant('WITH_RUBY', 'ruby'))
+
+ # fix issue with finding existing libxml2
+ args.append('-DLIBXML_INCLUDE_DIR=%s' % spec['libxml2'].prefix.include.libxml2)
+
+ return args
diff --git a/packages/wf-multi-area-model/package.py b/packages/wf-multi-area-model/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..4458d12310e5488005c37357586f2fc60c003a51
--- /dev/null
+++ b/packages/wf-multi-area-model/package.py
@@ -0,0 +1,20 @@
+# 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 import *
+
+
+class WfMultiAreaModel(BundlePackage):
+ """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"
+ maintainer = ["terhorstd"]
+
+ version("0.1")
+
+ depends_on("py-nested-dict")
+ depends_on("py-dicthash")
+
diff --git a/spack.yaml b/spack.yaml
index f6980f3f6dec69a75341cc9b3999d78278e7e61f..5d73282bafcaab8a6f466ff0c94017e14eebf2b7 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -68,6 +68,7 @@ spack:
- r-rgsl
- r-sbtabvfgen
- wf-uq-akar4
+ - wf-multi-area-model
# demo for codejam12
#- funniest1022
concretizer: