diff --git a/spack/packages/agios/package.py b/spack/packages/agios/package.py index e7faa91116fc150064aa81c045a9070b9a0c42bb..52e23b93075ecdce6ff97f8841bc141108c8e6b1 100644 --- a/spack/packages/agios/package.py +++ b/spack/packages/agios/package.py @@ -35,5 +35,5 @@ class Agios(CMakePackage): version('1.0', sha256='e8383a6ab0180ae8ba9bb2deb1c65d90c00583c3d6e77c70c415de8a98534efd') # general dependencies - depends_on('cmake@3.5', type='build') + depends_on('cmake@3.5:', type='build') depends_on('libconfig') diff --git a/spack/packages/scord/package.py b/spack/packages/scord/package.py index 1452194d444df92ae1c01b7da809068444adec83..4b8f816914160b8c978b298a63d06b43a2723de9 100644 --- a/spack/packages/scord/package.py +++ b/spack/packages/scord/package.py @@ -2,7 +2,9 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re +from llnl.util import tty # ---------------------------------------------------------------------------- # If you submit this package back to Spack as a pull request, # please first remove this boilerplate and all FIXME comments. @@ -23,21 +25,29 @@ from spack.package import * +def is_mercury_address(value): + """a valid Mercury address""" + return re.match(r"^(ofi|ucx)\+tcp://[0-9a-zA-Z.]+:[0-9]+$", value) + + class Scord(CMakePackage): """A parallel data stager for malleable applications.""" homepage = "https://storage.bsc.es/gitlab/eu/admire/io-scheduler" - url = "https://storage.bsc.es/gitlab/eu/admire/io-scheduler/-/archive/v0.2.1/io-scheduler-v0.2.1.tar.bz2" + url = "https://storage.bsc.es/gitlab/eu/admire/io-scheduler/-/archive/v0" \ + ".2.1/io-scheduler-v0.2.1.tar.bz2" git = "https://storage.bsc.es/gitlab/eu/admire/io-scheduler.git" maintainers("alberto-miranda") # available versions - version("latest", branch="main") - version("0.2.0", sha256="61e0e2a10858e6a7027244f7b4609b64e03e8ef78ec080ef5536cacf7623ab42") - version("0.2.1", sha256="e0a2e7fb835544eace291fc94ea689e504a84a6a6ef3d28c6a098d16cc4a7000") - version("0.2.2", sha256="a336a96505158007fd64363e9c775ea8b24e9de984248724682fcb6e412f46fc") - + version("main", branch="main") + version("0.2.0", + sha256="61e0e2a10858e6a7027244f7b4609b64e03e8ef78ec080ef5536cacf7623ab42") + version("0.2.1", + sha256="e0a2e7fb835544eace291fc94ea689e504a84a6a6ef3d28c6a098d16cc4a7000") + version("0.2.2", + sha256="a336a96505158007fd64363e9c775ea8b24e9de984248724682fcb6e412f46fc") # build variants variant('build_type', @@ -45,10 +55,6 @@ class Scord(CMakePackage): description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo', 'ASan')) - variant('tests', - default=False, - description='Build and run tests for scord') - variant("ofi", default=True, when="@0.2.0:", @@ -59,6 +65,12 @@ class Scord(CMakePackage): when="@0.2.0:", description="Use UCX as transport library") + variant("address", + values=is_mercury_address, + default="ofi+tcp://127.0.0.1:52000", + when="@0.2.0:", + description="Specify the Mercury address where the `scord` server " + "should listen for requests") # general dependencies depends_on("cmake@3.19", type='build') @@ -82,12 +94,25 @@ class Scord(CMakePackage): def cmake_args(self): """Setup scord CMake arguments""" - cmake_args = [ - self.define_from_variant('SCORD_BUILD_TESTS', 'tests') + + args = [ + self.define('SCORD_BUILD_TESTS', self.run_tests), + self.define('SCORD_BUILD_EXAMPLES', self.run_tests) ] - return cmake_args + + if "address" in self.spec.variants: + protocol, tmp = self.spec.variants["address"].value.split("://") + host, port = tmp.split(":") + + args.extend([ + self.define('SCORD_TRANSPORT_PROTOCOL', protocol), + self.define('SCORD_BIND_ADDRESS', host), + self.define('SCORD_BIND_PORT', port) + ]) + + return args def check(self): """Run tests""" with working_dir(self.build_directory): - make("test", parallel=False) + ctest("--output-on-failure", parallel=False)