From 34c89c0f7b0104f0b2566096ac9c4844a25a25d2 Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:06:09 -0500 Subject: [PATCH 001/615] CI RESTful Configuration (#41622) * CI: Add dynamic mapping section * Doc: Add documentation for dynamic mapping section * Add missing schema property * Fixes from review * query build fix up * add warning output for dynamic mapping request errors * Cleanup ci schema * Add more protections for disabling/mitigating bad endpoints for dynamic mapping * Remove references to "gantry" in the docs * Fixup rtd header * Add unit testing for dynamic-mapping section * Add arch to dynamic-mapping query string * Tests and cleanup schema --- lib/spack/docs/pipelines.rst | 71 +++++++++++++++ lib/spack/spack/ci.py | 160 ++++++++++++++++++++++++++++++--- lib/spack/spack/schema/ci.py | 86 +++++++++--------- lib/spack/spack/test/cmd/ci.py | 89 ++++++++++++++++++ 4 files changed, 347 insertions(+), 59 deletions(-) diff --git a/lib/spack/docs/pipelines.rst b/lib/spack/docs/pipelines.rst index bfcf1572d79e9a..9a2d614c839a6c 100644 --- a/lib/spack/docs/pipelines.rst +++ b/lib/spack/docs/pipelines.rst @@ -592,6 +592,77 @@ the attributes will be merged starting from the bottom match going up to the top In the case that no match is found in a submapping section, no additional attributes will be applied. + +^^^^^^^^^^^^^^^^^^^^^^^^ +Dynamic Mapping Sections +^^^^^^^^^^^^^^^^^^^^^^^^ + +For large scale CI where cost optimization is required, dynamic mapping allows for the use of real-time +mapping schemes served by a web service. This type of mapping does not support the ``-remove`` type +behavior, but it does follow the rest of the merge rules for configurations. + +The dynamic mapping service needs to implement a single REST API interface for getting +requests ``GET [:PORT][/PATH]?spec=``. + +example request. + +.. code-block:: + + https://my-dyn-mapping.spack.io/allocation?spec=zlib-ng@2.1.6 +compat+opt+shared+pic+new_strategies arch=linux-ubuntu20.04-x86_64_v3%gcc@12.0.0 + + +With an example response the updates kubernetes request variables, overrides the max retries for gitlab, +and prepends a note about the modifications made by the my-dyn-mapping.spack.io service. + +.. code-block:: + + 200 OK + + { + "variables": + { + "KUBERNETES_CPU_REQUEST": "500m", + "KUBERNETES_MEMORY_REQUEST": "2G", + }, + "retry": { "max:": "1"} + "script+:": + [ + "echo \"Job modified by my-dyn-mapping.spack.io\"" + ] + } + + +The ci.yaml configuration section takes the URL endpoint as well as a number of options to configure how responses are handled. + +It is possible to specify a list of allowed and ignored configuration attributes under ``allow`` and ``ignore`` +respectively. It is also possible to configure required attributes under ``required`` section. + +Options to configure the client timeout and SSL verification using the ``timeout`` and ``verify_ssl`` options. +By default, the ``timeout`` is set to the option in ``config:timeout`` and ``veryify_ssl`` is set the the option in ``config::verify_ssl``. + +Passing header parameters to the request can be achieved through the ``header`` section. The values of the variables passed to the +header may be environment variables that are expanded at runtime, such as a private token configured on the runner. + +Here is an example configuration pointing to ``my-dyn-mapping.spack.io/allocation``. + + +.. code-block:: yaml + + ci: + - dynamic-mapping: + endpoint: my-dyn-mapping.spack.io/allocation + timeout: 10 + verify_ssl: True + header: + PRIVATE_TOKEN: ${MY_PRIVATE_TOKEN} + MY_CONFIG: "fuzz_allocation:false" + allow: + - variables + ignore: + - script + require: [] + + ^^^^^^^^^^^^^ Bootstrapping ^^^^^^^^^^^^^ diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index f360137ede41bc..91dc26999cd145 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -10,6 +10,7 @@ import os import re import shutil +import ssl import stat import subprocess import sys @@ -19,14 +20,14 @@ from collections import defaultdict, namedtuple from typing import Dict, List, Optional, Set, Tuple from urllib.error import HTTPError, URLError -from urllib.parse import urlencode -from urllib.request import HTTPHandler, Request, build_opener +from urllib.parse import quote, urlencode, urlparse +from urllib.request import HTTPHandler, HTTPSHandler, Request, build_opener import ruamel.yaml import llnl.util.filesystem as fs import llnl.util.tty as tty -from llnl.util.lang import memoized +from llnl.util.lang import Singleton, memoized from llnl.util.tty.color import cescape, colorize import spack @@ -50,6 +51,31 @@ from spack.reporters.cdash import SPACK_CDASH_TIMEOUT from spack.reporters.cdash import build_stamp as cdash_build_stamp + +def _urlopen(): + error_handler = web_util.SpackHTTPDefaultErrorHandler() + + # One opener with HTTPS ssl enabled + with_ssl = build_opener( + HTTPHandler(), HTTPSHandler(context=web_util.ssl_create_default_context()), error_handler + ) + + # One opener with HTTPS ssl disabled + without_ssl = build_opener( + HTTPHandler(), HTTPSHandler(context=ssl._create_unverified_context()), error_handler + ) + + # And dynamically dispatch based on the config:verify_ssl. + def dispatch_open(fullurl, data=None, timeout=None, verify_ssl=True): + opener = with_ssl if verify_ssl else without_ssl + timeout = timeout or spack.config.get("config:connect_timeout", 1) + return opener.open(fullurl, data, timeout) + + return dispatch_open + + +_dyn_mapping_urlopener = Singleton(_urlopen) + # See https://docs.gitlab.com/ee/ci/yaml/#retry for descriptions of conditions JOB_RETRY_CONDITIONS = [ # "always", @@ -405,9 +431,20 @@ def __init__(self, ci_config, spec_labels, stages): if name not in ["any", "build"]: jobs[name] = self.__init_job("") - def __init_job(self, spec): + def __init_job(self, release_spec): """Initialize job object""" - return {"spec": spec, "attributes": {}} + job_object = {"spec": release_spec, "attributes": {}} + if release_spec: + job_vars = job_object["attributes"].setdefault("variables", {}) + job_vars["SPACK_JOB_SPEC_DAG_HASH"] = release_spec.dag_hash() + job_vars["SPACK_JOB_SPEC_PKG_NAME"] = release_spec.name + job_vars["SPACK_JOB_SPEC_PKG_VERSION"] = release_spec.format("{version}") + job_vars["SPACK_JOB_SPEC_COMPILER_NAME"] = release_spec.format("{compiler.name}") + job_vars["SPACK_JOB_SPEC_COMPILER_VERSION"] = release_spec.format("{compiler.version}") + job_vars["SPACK_JOB_SPEC_ARCH"] = release_spec.format("{architecture}") + job_vars["SPACK_JOB_SPEC_VARIANTS"] = release_spec.format("{variants}") + + return job_object def __is_named(self, section): """Check if a pipeline-gen configuration section is for a named job, @@ -500,6 +537,7 @@ def generate_ir(self): for section in reversed(pipeline_gen): name = self.__is_named(section) has_submapping = "submapping" in section + has_dynmapping = "dynamic-mapping" in section section = cfg.InternalConfigScope._process_dict_keyname_overrides(section) if name: @@ -542,6 +580,108 @@ def _apply_section(dest, src): job["attributes"] = self.__apply_submapping( job["attributes"], job["spec"], section ) + elif has_dynmapping: + mapping = section["dynamic-mapping"] + + dynmap_name = mapping.get("name") + + # Check if this section should be skipped + dynmap_skip = os.environ.get("SPACK_CI_SKIP_DYNAMIC_MAPPING") + if dynmap_name and dynmap_skip: + if re.match(dynmap_skip, dynmap_name): + continue + + # Get the endpoint + endpoint = mapping["endpoint"] + endpoint_url = urlparse(endpoint) + + # Configure the request header + header = {"User-Agent": web_util.SPACK_USER_AGENT} + header.update(mapping.get("header", {})) + + # Expand header environment variables + # ie. if tokens are passed + for value in header.values(): + value = os.path.expandvars(value) + + verify_ssl = mapping.get("verify_ssl", spack.config.get("config:verify_ssl", True)) + timeout = mapping.get("timeout", spack.config.get("config:connect_timeout", 1)) + + required = mapping.get("require", []) + allowed = mapping.get("allow", []) + ignored = mapping.get("ignore", []) + + # required keys are implicitly allowed + allowed = sorted(set(allowed + required)) + ignored = sorted(set(ignored)) + required = sorted(set(required)) + + # Make sure required things are not also ignored + assert not any([ikey in required for ikey in ignored]) + + def job_query(job): + job_vars = job["attributes"]["variables"] + query = ( + "{SPACK_JOB_SPEC_PKG_NAME}@{SPACK_JOB_SPEC_PKG_VERSION}" + # The preceding spaces are required (ref. https://github.com/spack/spack-gantry/blob/develop/docs/api.md#allocation) + " {SPACK_JOB_SPEC_VARIANTS}" + " arch={SPACK_JOB_SPEC_ARCH}" + "%{SPACK_JOB_SPEC_COMPILER_NAME}@{SPACK_JOB_SPEC_COMPILER_VERSION}" + ).format_map(job_vars) + return f"spec={quote(query)}" + + for job in jobs.values(): + if not job["spec"]: + continue + + # Create request for this job + query = job_query(job) + request = Request( + endpoint_url._replace(query=query).geturl(), headers=header, method="GET" + ) + try: + response = _dyn_mapping_urlopener( + request, verify_ssl=verify_ssl, timeout=timeout + ) + except Exception as e: + # For now just ignore any errors from dynamic mapping and continue + # This is still experimental, and failures should not stop CI + # from running normally + tty.warn(f"Failed to fetch dynamic mapping for query:\n\t{query}") + tty.warn(f"{e}") + continue + + config = json.load(codecs.getreader("utf-8")(response)) + + # Strip ignore keys + if ignored: + for key in ignored: + if key in config: + config.pop(key) + + # Only keep allowed keys + clean_config = {} + if allowed: + for key in allowed: + if key in config: + clean_config[key] = config[key] + else: + clean_config = config + + # Verify all of the required keys are present + if required: + missing_keys = [] + for key in required: + if key not in clean_config.keys(): + missing_keys.append(key) + + if missing_keys: + tty.warn(f"Response missing required keys: {missing_keys}") + + if clean_config: + job["attributes"] = spack.config.merge_yaml( + job.get("attributes", {}), clean_config + ) for _, job in jobs.items(): if job["spec"]: @@ -952,15 +1092,6 @@ def main_script_replacements(cmd): job_name = get_job_name(release_spec, build_group) - job_vars = job_object.setdefault("variables", {}) - job_vars["SPACK_JOB_SPEC_DAG_HASH"] = release_spec_dag_hash - job_vars["SPACK_JOB_SPEC_PKG_NAME"] = release_spec.name - job_vars["SPACK_JOB_SPEC_PKG_VERSION"] = release_spec.format("{version}") - job_vars["SPACK_JOB_SPEC_COMPILER_NAME"] = release_spec.format("{compiler.name}") - job_vars["SPACK_JOB_SPEC_COMPILER_VERSION"] = release_spec.format("{compiler.version}") - job_vars["SPACK_JOB_SPEC_ARCH"] = release_spec.format("{architecture}") - job_vars["SPACK_JOB_SPEC_VARIANTS"] = release_spec.format("{variants}") - job_object["needs"] = [] if spec_label in dependencies: if enable_artifacts_buildcache: @@ -1038,6 +1169,7 @@ def main_script_replacements(cmd): # Let downstream jobs know whether the spec needed rebuilding, regardless # whether DAG pruning was enabled or not. + job_vars = job_object["variables"] job_vars["SPACK_SPEC_NEEDS_REBUILD"] = str(rebuild_spec) if cdash_handler: diff --git a/lib/spack/spack/schema/ci.py b/lib/spack/spack/schema/ci.py index e616058b998a28..a1aabb33d068f9 100644 --- a/lib/spack/spack/schema/ci.py +++ b/lib/spack/spack/schema/ci.py @@ -77,58 +77,54 @@ }, } -named_attributes_schema = { - "oneOf": [ - { - "type": "object", - "additionalProperties": False, - "properties": {"noop-job": attributes_schema, "noop-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"build-job": attributes_schema, "build-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"copy-job": attributes_schema, "copy-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": { - "reindex-job": attributes_schema, - "reindex-job-remove": attributes_schema, - }, - }, - { - "type": "object", - "additionalProperties": False, - "properties": { - "signing-job": attributes_schema, - "signing-job-remove": attributes_schema, - }, - }, - { +dynamic_mapping_schema = { + "type": "object", + "additionalProperties": False, + "required": ["dynamic-mapping"], + "properties": { + "dynamic-mapping": { "type": "object", - "additionalProperties": False, + "required": ["endpoint"], "properties": { - "cleanup-job": attributes_schema, - "cleanup-job-remove": attributes_schema, + "name": {"type": "string"}, + # "endpoint" cannot have http patternProperties constaint as it is a required field + # Constrain is applied in code + "endpoint": {"type": "string"}, + "timeout": {"type": "integer", "minimum": 0}, + "verify_ssl": {"type": "boolean", "default": False}, + "header": {"type": "object", "additionalProperties": False}, + "allow": {"type": "array", "items": {"type": "string"}}, + "require": {"type": "array", "items": {"type": "string"}}, + "ignore": {"type": "array", "items": {"type": "string"}}, }, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"any-job": attributes_schema, "any-job-remove": attributes_schema}, - }, - ] + } + }, } + +def job_schema(name: str): + return { + "type": "object", + "additionalProperties": False, + "properties": {f"{name}-job": attributes_schema, f"{name}-job-remove": attributes_schema}, + } + + pipeline_gen_schema = { "type": "array", - "items": {"oneOf": [submapping_schema, named_attributes_schema]}, + "items": { + "oneOf": [ + submapping_schema, + dynamic_mapping_schema, + job_schema("any"), + job_schema("build"), + job_schema("cleanup"), + job_schema("copy"), + job_schema("noop"), + job_schema("reindex"), + job_schema("signing"), + ] + }, } core_shared_properties = union_dicts( diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 40a5285cd15e57..6bf5b8ace876c1 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -7,6 +7,7 @@ import os import pathlib import shutil +from io import BytesIO from typing import NamedTuple import jsonschema @@ -1846,3 +1847,91 @@ def test_ci_generate_mirror_config( pipeline_doc = syaml.load(f) assert fst not in pipeline_doc["rebuild-index"]["script"][0] assert snd in pipeline_doc["rebuild-index"]["script"][0] + + +def dynamic_mapping_setup(tmpdir): + filename = str(tmpdir.join("spack.yaml")) + with open(filename, "w") as f: + f.write( + """\ +spack: + specs: + - pkg-a + mirrors: + some-mirror: https://my.fake.mirror + ci: + pipeline-gen: + - dynamic-mapping: + endpoint: https://fake.spack.io/mapper + require: ["variables"] + ignore: ["ignored_field"] + allow: ["variables", "retry"] +""" + ) + + spec_a = Spec("pkg-a") + spec_a.concretize() + + return ci.get_job_name(spec_a) + + +def test_ci_dynamic_mapping_empty( + tmpdir, + working_env, + mutable_mock_env_path, + install_mockery, + mock_packages, + monkeypatch, + ci_base_environment, +): + # The test will always return an empty dictionary + def fake_dyn_mapping_urlopener(*args, **kwargs): + return BytesIO("{}".encode()) + + monkeypatch.setattr(ci, "_dyn_mapping_urlopener", fake_dyn_mapping_urlopener) + + _ = dynamic_mapping_setup(tmpdir) + with tmpdir.as_cwd(): + env_cmd("create", "test", "./spack.yaml") + outputfile = str(tmpdir.join(".gitlab-ci.yml")) + + with ev.read("test"): + output = ci_cmd("generate", "--output-file", outputfile) + assert "Response missing required keys: ['variables']" in output + + +def test_ci_dynamic_mapping_full( + tmpdir, + working_env, + mutable_mock_env_path, + install_mockery, + mock_packages, + monkeypatch, + ci_base_environment, +): + # The test will always return an empty dictionary + def fake_dyn_mapping_urlopener(*args, **kwargs): + return BytesIO( + json.dumps( + {"variables": {"MY_VAR": "hello"}, "ignored_field": 0, "unallowed_field": 0} + ).encode() + ) + + monkeypatch.setattr(ci, "_dyn_mapping_urlopener", fake_dyn_mapping_urlopener) + + label = dynamic_mapping_setup(tmpdir) + with tmpdir.as_cwd(): + env_cmd("create", "test", "./spack.yaml") + outputfile = str(tmpdir.join(".gitlab-ci.yml")) + + with ev.read("test"): + ci_cmd("generate", "--output-file", outputfile) + + with open(outputfile) as of: + pipeline_doc = syaml.load(of.read()) + assert label in pipeline_doc + job = pipeline_doc[label] + + assert job.get("variables", {}).get("MY_VAR") == "hello" + assert "ignored_field" not in job + assert "unallowed_field" not in job From 8d2a059279cffab502b2810188d63905c209782a Mon Sep 17 00:00:00 2001 From: "H. Joe Lee" Date: Wed, 16 Oct 2024 16:33:05 -0500 Subject: [PATCH 002/615] hermes: add more versions, variants and depend on hermes-shm (#46602) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/adios2/package.py | 6 +- .../builtin/packages/hermes-shm/package.py | 3 +- .../repos/builtin/packages/hermes/package.py | 104 +++++++++++--- .../builtin/packages/libcatalyst/package.py | 1 + .../repos/builtin/packages/margo/package.py | 135 ------------------ 5 files changed, 90 insertions(+), 159 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/margo/package.py diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index a5baeb0cbde5ad..16481106dcd78c 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -45,9 +45,9 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): version("2.4.0", sha256="50ecea04b1e41c88835b4b3fd4e7bf0a0a2a3129855c9cc4ba6cf6a1575106e2") version("2.3.1", sha256="3bf81ccc20a7f2715935349336a76ba4c8402355e1dc3848fcd6f4c3c5931893") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") # There's not really any consistency about how static and shared libs are # implemented across spack. What we're trying to support is specifically three diff --git a/var/spack/repos/builtin/packages/hermes-shm/package.py b/var/spack/repos/builtin/packages/hermes-shm/package.py index 6b51724548add4..f93300553af0a0 100644 --- a/var/spack/repos/builtin/packages/hermes-shm/package.py +++ b/var/spack/repos/builtin/packages/hermes-shm/package.py @@ -40,7 +40,8 @@ class HermesShm(CMakePackage): depends_on("pkgconfig", type="build") depends_on("catch2@3.0.1") depends_on("yaml-cpp") - depends_on("doxygen@1.9.3", type="build") + depends_on("doxygen@1.9.3:", type="build") + depends_on("pkgconfig", type="build") depends_on("libelf") # Machine variants diff --git a/var/spack/repos/builtin/packages/hermes/package.py b/var/spack/repos/builtin/packages/hermes/package.py index 7072524c53a9a7..fa04336fc6cb2d 100644 --- a/var/spack/repos/builtin/packages/hermes/package.py +++ b/var/spack/repos/builtin/packages/hermes/package.py @@ -11,38 +11,102 @@ class Hermes(CMakePackage): I/O buffering system that aims to significantly accelerate I/O performance. """ - homepage = "http://www.cs.iit.edu/~scs/assets/projects/Hermes/Hermes.html" + homepage = "https://grc.iit.edu/research/projects/hermes" git = "https://github.com/HDFGroup/hermes.git" - maintainers("hyoklee") + maintainers("lukemartinlogan", "hyoklee") - license("GPL-2.0-only") + version("master", branch="master", submodules=True) - version("master", branch="master") + version( + "1.2.1", + url="https://github.com/HDFGroup/hermes/archive/refs/tags/v1.2.1.tar.gz", + sha256="d60ee5d6856dc1a1f389fb08f61252cc7736d1c38d3049043749640897fe3b6d", + ) version( "0.9.0-beta", url="https://github.com/HDFGroup/hermes/archive/refs/tags/v0.9.0-beta.tar.gz", sha256="abf258a52fa79729dfeb28559957abf8945f3ad37cadefb3bc685227c5f057a8", ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - + variant("adios", default=False, description="Build Adios tests") + variant("ares", default=False, description="Enable full libfabric install") + variant("compress", default=False, description="Enable compression") + variant("encrypt", default=False, description="Enable encryption") + variant("mpiio", default=True, description="Enable MPI I/O adapter") + # Builds with hermes@master. 1.2.1, we'd need to extract pybind11 source in external/pybind11: + variant("python", default=False, description="Build Python Wrapper", when="@master") + variant("stdio", default=True, description="Enable STDIO adapter") variant("vfd", default=False, description="Enable HDF5 VFD") + variant("zmq", default=False, description="Build ZeroMQ tests") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build") + depends_on("libelf") + + depends_on("hermes-shm@master+boost+cereal+mochi") + + depends_on("hermes-shm+adios", when="+adios") + depends_on("hermes-shm+ares", when="+ares") + depends_on("hermes-shm+compress", when="+compress") + depends_on("hermes-shm+encrypt", when="+encrypt") + depends_on("hermes-shm+mpiio", when="+mpiio") + depends_on("hermes-shm+vfd", when="+vfd") + depends_on("hermes-shm+zmq", when="+zmq") - depends_on("mochi-thallium~cereal@0.8:") - depends_on("catch2") - depends_on("glpk") - depends_on("glog@0.4.0:") - depends_on("mpi") - depends_on("hdf5@1.14.0:", when="+vfd") - depends_on("yaml-cpp") + depends_on("py-jarvis-util", type="test") + + depends_on("mpi", when="+mpiio") + conflicts("^[virtuals=mpi] nvhpc", when="+mpiio", msg="+mpio does not support nvhpc MPI") def cmake_args(self): - args = [ - self.define("HERMES_RPC_THALLIUM", True), - self.define("HERMES_INSTALL_TESTS", True), - self.define("BUILD_TESTING", True), - self.define_from_variant("HERMES_ENABLE_VFD", "vfd"), - ] + args = [] + if "+mpiio" in self.spec: + args.append("-DHERMES_ENABLE_MPIIO_ADAPTER=ON") + mpi_name = self.spec["mpi"].name + if mpi_name == "openmpi": + args.append("-DHERMES_OPENMPI=ON") + elif mpi_name == "mpich": + args.append("-DHERMES_MPICH=ON") + else: + raise InstallError("hermes+mpiio needs openmpi or mpich, got " + mpi_name) + if "+stdio" in self.spec: + args.append("-DHERMES_ENABLE_STDIO_ADAPTER=ON") + if "+vfd" in self.spec: + args.append("-DHERMES_ENABLE_VFD=ON") + if "+compress" in self.spec: + args.append(self.define("HERMES_ENABLE_COMPRESSION", "ON")) + if "+encrypt" in self.spec: + args.append(self.define("HERMES_ENABLE_ENCRYPTION", "ON")) + if "+adios" in self.spec: + args.append(self.define("HERMES_ENABLE_ADIOS", "ON")) + if "+python" in self.spec: + args.append(self.define("HERMES_ENABLE_PYTHON", "ON")) return args + + def set_include(self, env, path): + env.append_flags("CFLAGS", "-I{}".format(path)) + env.append_flags("CXXFLAGS", "-I{}".format(path)) + env.prepend_path("INCLUDE", "{}".format(path)) + env.prepend_path("CPATH", "{}".format(path)) + + def set_lib(self, env, path): + env.prepend_path("LIBRARY_PATH", path) + env.prepend_path("LD_LIBRARY_PATH", path) + env.append_flags("LDFLAGS", "-L{}".format(path)) + env.prepend_path("PYTHONPATH", "{}".format(path)) + + def set_flags(self, env): + self.set_include(env, "{}/include".format(self.prefix)) + self.set_include(env, "{}/include".format(self.prefix)) + self.set_lib(env, "{}/lib".format(self.prefix)) + self.set_lib(env, "{}/lib64".format(self.prefix)) + env.prepend_path("CMAKE_PREFIX_PATH", "{}/cmake".format(self.prefix)) + env.prepend_path("CMAKE_MODULE_PATH", "{}/cmake".format(self.prefix)) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + self.set_flags(spack_env) + + def setup_run_environment(self, env): + self.set_flags(env) diff --git a/var/spack/repos/builtin/packages/libcatalyst/package.py b/var/spack/repos/builtin/packages/libcatalyst/package.py index 6bfc26cf93d33f..bf10c56b430ecf 100644 --- a/var/spack/repos/builtin/packages/libcatalyst/package.py +++ b/var/spack/repos/builtin/packages/libcatalyst/package.py @@ -27,6 +27,7 @@ class Libcatalyst(CMakePackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("pkgconfig", type="build") variant("mpi", default=False, description="Enable MPI support") variant("conduit", default=False, description="Use external Conduit for Catalyst") diff --git a/var/spack/repos/builtin/packages/margo/package.py b/var/spack/repos/builtin/packages/margo/package.py deleted file mode 100644 index 399b38d63af4c8..00000000000000 --- a/var/spack/repos/builtin/packages/margo/package.py +++ /dev/null @@ -1,135 +0,0 @@ -# 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) - -from spack.package import * - - -class Margo(AutotoolsPackage): - """A library that provides Argobots bindings to the Mercury RPC - implementation. This name will be deprecated soon; please use the - mochi-margo package instead.""" - - homepage = "https://github.com/mochi-hpc/mochi-margo" - git = "https://github.com/mochi-hpc/mochi-margo.git" - url = "https://github.com/mochi-hpc/mochi-margo/archive/v0.9.tar.gz" - - maintainers("carns", "mdorier", "fbudin69500") - - version("master", branch="master", deprecated=True) - version( - "0.9.1", - sha256="3fe933f2d758ef23d582bc776e4f8cfae9bf9d0849b8b1f9d73ee024e218f2bc", - deprecated=True, - ) - version( - "0.9", - sha256="a24376f66450cc8fd7a43043e189f8efce5a931585e53c1e2e41894a3e99b517", - deprecated=True, - ) - version( - "0.7", - sha256="492d1afe2e7984fa638614a5d34486d2ff761f5599b5984efd5ae3f55cafde54", - deprecated=True, - ) - version( - "0.7.2", - sha256="0ca796abdb82084813a5de033d92364910b5ad1a0df135534d6b1c36ef627859", - deprecated=True, - ) - version( - "0.7.1", - sha256="eebbe02c47ed4c65ef1d4f23ffdc6a8aa2e2348ca6c51bfc3c4dfbf78fbfc30b", - deprecated=True, - ) - version( - "0.6", - sha256="56feb718da2b155d7277a7b10b669516ebffaa034f811f3665ceed7ad0f19d1b", - deprecated=True, - ) - version( - "0.6.4", - sha256="5ba1c72ee05aa9738d3dc4d6d01bd59790284c6c77b909c5d7756fe7049d6177", - deprecated=True, - ) - version( - "0.6.3", - sha256="5f373cd554edd15cead58bd5d30093bd88d45039d06ff7738eb18b3674287c76", - deprecated=True, - ) - version( - "0.6.2", - sha256="c6a6909439e1d3ba1a1693d8da66057eb7e4ec4b239c04bc7f19fc487c4c58da", - deprecated=True, - ) - version( - "0.6.1", - sha256="80d8d15d0917b5522c31dc2d83136de2313d50ca05c71c5e5ad83c483a3214b7", - deprecated=True, - ) - version( - "0.5", - sha256="d3b768b8300bc2cb87964e74c39b4e8eb9822d8a2e56fc93dc475ddcb1a868e3", - deprecated=True, - ) - version( - "0.5.2", - sha256="73be3acaf012a85a91ac62824c93f5ee1ea0ffe4c25779ece19723f4baf9547d", - deprecated=True, - ) - version( - "0.5.1", - sha256="6fdf58e189538e22341c8361ab069fc80fe5460a6869882359b295a890febad7", - deprecated=True, - ) - version( - "0.4.7", - sha256="596d83b11fb2bd9950fd99c9ab12c14915ab2cda233084ae40ecae1e6c584333", - deprecated=True, - ) - version( - "0.4.6", - sha256="b27447a2050ae61091bae3ff6b4d23a56153947f18847face9f98facbdb4e329", - deprecated=True, - ) - version( - "0.4.5", - sha256="b0d02f73edf180f2393f54c5a980620b8d6dcd42b90efdea6866861824fa49cf", - deprecated=True, - ) - version( - "0.4.4", - sha256="2e2e6e2a8a7d7385e2fe204c113cb149f30847f0b1f48ec8dd708a74280bd89e", - deprecated=True, - ) - version( - "0.4.3", - sha256="61a634d6983bee2ffa06e1e2da4c541cb8f56ddd9dd9f8e04e8044fb38657475", - deprecated=True, - ) - version( - "0.4.2", - sha256="91085e28f50e373b9616e1ae5c3c8d40a19a7d3776259592d8f361766890bcaa", - deprecated=True, - ) - - depends_on("c", type="build") # generated - - depends_on("json-c", when="@0.9:") - depends_on("autoconf@2.65:", type=("build")) - depends_on("m4", type=("build")) - depends_on("automake", type=("build")) - depends_on("libtool", type=("build")) - depends_on("pkgconfig", type=("build")) - depends_on("argobots@1.0:") - # "breadcrumb" support not available in mercury-1.0 - depends_on("mercury@1.0.0:", type=("build", "link", "run"), when="@:0.5.1") - depends_on("mercury@2.0.0:", type=("build", "link", "run"), when="@0.5.2:") - - # dependencies for develop version - depends_on("mercury@master", type=("build", "link", "run"), when="@develop") - - def autoreconf(self, spec, prefix): - sh = which("sh") - sh("./prepare.sh") From f4a4acd2720d86673c6e33ff31873e2c69fcccfd Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Wed, 16 Oct 2024 16:47:15 -0600 Subject: [PATCH 003/615] py-cfgrib: add v0.9.14.1 (#46879) * Add 0.9.14.1 and bound xarray version support * Fix bounds as per review --- var/spack/repos/builtin/packages/py-cfgrib/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-cfgrib/package.py b/var/spack/repos/builtin/packages/py-cfgrib/package.py index e0f3ed0269e600..c091dc3c0a6dff 100644 --- a/var/spack/repos/builtin/packages/py-cfgrib/package.py +++ b/var/spack/repos/builtin/packages/py-cfgrib/package.py @@ -15,6 +15,7 @@ class PyCfgrib(PythonPackage): license("Apache-2.0") + version("0.9.14.1", sha256="a6e66e8a3d8f9823d3eef0c2c6ebca602d5bcc324f0baf4f3d13f68b0b40501e") version("0.9.10.4", sha256="b490078192aa13ec89c77296110355521442325866b16a996f4b3cf421542909") version("0.9.9.0", sha256="6ff0227df9c5ee34aa7d6ab1f7af3fbe6838523a8a9891c74040b419b03ad289") version("0.9.8.5", sha256="07c224d7ac823a1df5738b96b9d3621515538f51f67e55044f9cc8ec1668e1bd") @@ -29,8 +30,11 @@ class PyCfgrib(PythonPackage): depends_on("py-eccodes", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) - depends_on("py-xarray@0.15:", when="@0.9.10:+xarray", type=("build", "run")) - depends_on("py-xarray@0.12:", when="+xarray", type=("build", "run")) + # 0.9.14.1 enables support for xarray @2024.09.0: + # https://github.com/ecmwf/cfgrib/commit/46a79025146b3847e81629748fc3fe16e56097cf + depends_on("py-xarray@0.15:", when="@0.9.14.1:+xarray", type=("build", "run")) + depends_on("py-xarray@0.15:2024.08.0", when="@0.9.10:0.9.14.0+xarray", type=("build", "run")) + depends_on("py-xarray@0.12:2024.08.0", when="@:0.9.14.0+xarray", type=("build", "run")) # Historical dependencies depends_on("py-pytest-runner", when="@0.9.8.5", type="build") From 39063baf18a85fd838bdd9379e30acef093fe5b5 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Wed, 16 Oct 2024 23:54:54 +0100 Subject: [PATCH 004/615] librdkafka: added version 2.5.3 (#47009) --- var/spack/repos/builtin/packages/librdkafka/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/librdkafka/package.py b/var/spack/repos/builtin/packages/librdkafka/package.py index dbc42080596d39..3c324b952b5b12 100644 --- a/var/spack/repos/builtin/packages/librdkafka/package.py +++ b/var/spack/repos/builtin/packages/librdkafka/package.py @@ -15,6 +15,7 @@ class Librdkafka(AutotoolsPackage): license("BSD-2-Clause") + version("2.5.3", sha256="eaa1213fdddf9c43e28834d9a832d9dd732377d35121e42f875966305f52b8ff") version("2.2.0", sha256="af9a820cbecbc64115629471df7c7cecd40403b6c34bfdbb9223152677a47226") version("2.1.1", sha256="7be1fc37ab10ebdc037d5c5a9b35b48931edafffae054b488faaff99e60e0108") version("2.1.0", sha256="d8e76c4b1cde99e283a19868feaaff5778aa5c6f35790036c5ef44bc5b5187aa") From bfe434cbd500b591798775b3363992e0425988bf Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 17 Oct 2024 01:16:13 +0200 Subject: [PATCH 005/615] gnuconfig: bump (#47020) --- var/spack/repos/builtin/packages/gnuconfig/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/gnuconfig/package.py b/var/spack/repos/builtin/packages/gnuconfig/package.py index a0420c6a4ab4e2..d999b073b909cf 100644 --- a/var/spack/repos/builtin/packages/gnuconfig/package.py +++ b/var/spack/repos/builtin/packages/gnuconfig/package.py @@ -21,6 +21,9 @@ class Gnuconfig(Package): maintainers("haampie") version("master", branch="master") + version( + "2024-07-27", sha256="1135044961853c7f116145cee9bb15c3d29b1b081cf8293954efd0f05d801a7c" + ) version( "2022-09-17", sha256="95306801ad7086e6a6e13397cb859183d8b7adbba2e372ce0819bad5fcb919b7" ) From 64a7525e3ff2a6ca1d44aeadde9b9d26878d73ec Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Thu, 17 Oct 2024 00:24:04 +0100 Subject: [PATCH 006/615] duckdb: install headers and libraries (#47015) --- var/spack/repos/builtin/packages/duckdb/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/duckdb/package.py b/var/spack/repos/builtin/packages/duckdb/package.py index efb021ca678500..6bac330a3af831 100644 --- a/var/spack/repos/builtin/packages/duckdb/package.py +++ b/var/spack/repos/builtin/packages/duckdb/package.py @@ -18,6 +18,7 @@ class Duckdb(MakefilePackage): maintainers("glentner", "teaguesterling") version("master", branch="master") + version("1.1.2", sha256="a3319a64c390ed0454c869b2e4fc0af2413cd49f55cd0f1400aaed9069cdbc4c") version("1.1.1", sha256="a764cef80287ccfd8555884d8facbe962154e7c747043c0842cd07873b4d6752") version("1.1.0", sha256="d9be2c6d3a5ebe2b3d33044fb2cb535bb0bd972a27ae38c4de5e1b4caa4bf68d") version("1.0.0", sha256="04e472e646f5cadd0a3f877a143610674b0d2bcf9f4102203ac3c3d02f1c5f26") @@ -186,5 +187,10 @@ def patch(self): def install(self, spec, prefix): mkdir(prefix.bin) + mkdirp(prefix.lib) + mkdir(prefix.include) build_dir = join_path("build", "release") install(join_path(build_dir, "duckdb"), prefix.bin) + install(join_path(build_dir, "src", "libduckdb.so"), prefix.lib) + install(join_path(build_dir, "src", "libduckdb_static.a"), prefix.lib) + install_tree(join_path("src", "include"), prefix.include) From 62fd5d12c2f904ff69983f7fc7b70f09617d4ca0 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Wed, 16 Oct 2024 19:44:49 -0500 Subject: [PATCH 007/615] cyrus-sasl: patch v2.1.27:2.1.28 for gcc-14 (#47019) --- var/spack/repos/builtin/packages/cyrus-sasl/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/cyrus-sasl/package.py b/var/spack/repos/builtin/packages/cyrus-sasl/package.py index f4f92d0a6dc73e..afc7bd68e88e96 100644 --- a/var/spack/repos/builtin/packages/cyrus-sasl/package.py +++ b/var/spack/repos/builtin/packages/cyrus-sasl/package.py @@ -23,6 +23,14 @@ class CyrusSasl(AutotoolsPackage): version("2.1.24", sha256="1df15c492f7ecb90be49531a347b3df21b041c2e0325dcc4fc5a6e98384c40dd") version("2.1.23", sha256="b1ec43f62d68446a6a5879925c63d94e26089c5a46cd83e061dd685d014c7d1f") + # ensure include time.h, https://github.com/cyrusimap/cyrus-sasl/pull/709 + patch( + "https://github.com/cyrusimap/cyrus-sasl/commit/266f0acf7f5e029afbb3e263437039e50cd6c262.patch?full_index=1", + sha256="819342fe68475ac1690136ff4ce9b73c028f433ae150898add36f724a8e2274b", + when="@2.1.27:2.1.28", + ) + conflicts("%gcc@14:", when="@:2.1.26") + depends_on("c", type="build") # generated depends_on("m4", type="build") From 5d2c67ec834c04518932d123766e186883879699 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Wed, 16 Oct 2024 19:51:37 -0500 Subject: [PATCH 008/615] openldap: add v2.6.8; conflict gcc@14: for older (#47024) --- var/spack/repos/builtin/packages/openldap/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/openldap/package.py b/var/spack/repos/builtin/packages/openldap/package.py index d5fe9f11007eb1..629a81950b6d71 100644 --- a/var/spack/repos/builtin/packages/openldap/package.py +++ b/var/spack/repos/builtin/packages/openldap/package.py @@ -21,6 +21,7 @@ class Openldap(AutotoolsPackage): license("OLDAP-2.8") + version("2.6.8", sha256="48969323e94e3be3b03c6a132942dcba7ef8d545f2ad35401709019f696c3c4e") version("2.6.4", sha256="d51704e50178430c06cf3d8aa174da66badf559747a47d920bb54b2d4aa40991") version("2.6.0", sha256="b71c580eac573e9aba15d95f33dd4dd08f2ed4f0d7fc09e08ad4be7ed1e41a4f") version("2.4.49", sha256="e3b117944b4180f23befe87d0dcf47f29de775befbc469dcf4ac3dab3311e56e") @@ -67,6 +68,9 @@ class Openldap(AutotoolsPackage): depends_on("findutils", type="build") # see https://github.com/openldap/openldap/blob/OPENLDAP_REL_ENG_2_4_48/libraries/liblunicode/Makefile.in + # Newer C compilers (>= Clang 16 and >= GCC 14) reject some constructs removed in C99 + conflicts("%gcc@14:", when="@:2.6.4", msg="Newer C compilers required 2.6.5 or newer") + # Ref: https://www.linuxfromscratch.org/blfs/view/svn/server/openldap.html @when("+client_only") def configure_args(self): From 7bddcd27d29bad383a55da8ab851a302e30ba77e Mon Sep 17 00:00:00 2001 From: Ashim Mahara <48154590+ashim-mahara@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:58:04 -0400 Subject: [PATCH 009/615] updated package specs for rust; removed redundant dependency due to inherited cmake (#47022) --- var/spack/repos/builtin/packages/foldseek/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/foldseek/package.py b/var/spack/repos/builtin/packages/foldseek/package.py index 018a5cdaf23c26..183785bde239a3 100644 --- a/var/spack/repos/builtin/packages/foldseek/package.py +++ b/var/spack/repos/builtin/packages/foldseek/package.py @@ -14,13 +14,12 @@ class Foldseek(CMakePackage): license("GPL-3.0-only", checked_by="A-N-Other") + version("9-427df8a", sha256="b17d2d85b49a8508f79ffd8b15e54afc5feef5f3fb0276a291141ca5dbbbe8bc") version("8-ef4e960", sha256="c74d02c4924d20275cc567783b56fff10e76ed67f3d642f53c283f67c4180a1e") version("7-04e0ec8", sha256="009d722d600248a680b9e1e9dcb3bf799f8be8de41e80a598b7f39a5ced54191") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("zlib-api") depends_on("bzip2") depends_on("openmpi") depends_on("rust", type="build") + depends_on("rust@1.78.0", when="@:9", type="build") From b661acfa9bd63bdf5ab3e05b8d3bb61d457fdac5 Mon Sep 17 00:00:00 2001 From: fgava90 <68648009+fgava90@users.noreply.github.com> Date: Thu, 17 Oct 2024 02:12:56 +0100 Subject: [PATCH 010/615] dakota: add conflicts and additional flags (#42906) Co-authored-by: Gava, Francesco Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/dakota/package.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index 2ab8e46e7a6981..35eb19168c5321 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -64,9 +64,9 @@ class Dakota(CMakePackage): version("6.9", sha256="989b689278964b96496e3058b8ef5c2724d74bcd232f898fe450c51eba7fe0c2") version("6.3", sha256="0fbc310105860d77bb5c96de0e8813d75441fca1a5e6dfaf732aa095c4488d52") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") variant("shared", default=True, description="Enables the build of shared libraries") variant("mpi", default=True, description="Activates MPI support") @@ -92,6 +92,19 @@ class Dakota(CMakePackage): depends_on("cmake@2.8.9:", type="build") depends_on("cmake@3.17:", type="build", when="@6.18:") + # dakota@:6.20 don't compile with gcc@13, and it is currently the latest version: + conflicts("%gcc@13:") + # dakota@:6.12 don't compile with gcc@12: + conflicts("%gcc@12:", when="@:6.12") + # dakota@:6.9 don't compile with gcc@11: + conflicts("%gcc@11:", when="@:6.9") + + def flag_handler(self, name, flags): + # from gcc@10, dakota@:6.12 need an extra flag + if self.spec.satisfies("@:6.12 %gcc@10:") and name == "fflags": + flags.append("-fallow-argument-mismatch") + return (flags, None, None) + def cmake_args(self): spec = self.spec From e4c233710c5214033f64339457ae9e4876749033 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:42:19 -0700 Subject: [PATCH 011/615] e4s external rocm ci: upgrade to v6.2.1 (#46871) * e4s external rocm ci: upgrade to v6.2.1 * use ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08 * magma +rocm: add entry for v6.2.1 --- .../gitlab/cloud_pipelines/.gitlab-ci.yml | 2 +- .../stacks/e4s-rocm-external/spack.yaml | 150 +++++++++--------- .../repos/builtin/packages/magma/package.py | 1 + 3 files changed, 77 insertions(+), 76 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index bdd87a974410b9..d3897fd055260c 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -377,7 +377,7 @@ e4s-neoverse_v1-build: e4s-rocm-external-generate: extends: [ ".e4s-rocm-external", ".generate-x86_64"] - image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.0:2024.09.11 + image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08 e4s-rocm-external-build: extends: [ ".e4s-rocm-external", ".build" ] diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml index 43e792d52d6601..b14550808f7a92 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml @@ -27,186 +27,186 @@ spack: comgr: buildable: false externals: - - spec: comgr@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: comgr@6.2.1 + prefix: /opt/rocm-6.2.1/ hip-rocclr: buildable: false externals: - - spec: hip-rocclr@6.2.0 - prefix: /opt/rocm-6.2.0/hip + - spec: hip-rocclr@6.2.1 + prefix: /opt/rocm-6.2.1/hip hipblas: buildable: false externals: - - spec: hipblas@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipblas@6.2.1 + prefix: /opt/rocm-6.2.1/ hipcub: buildable: false externals: - - spec: hipcub@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipcub@6.2.1 + prefix: /opt/rocm-6.2.1/ hipfft: buildable: false externals: - - spec: hipfft@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipfft@6.2.1 + prefix: /opt/rocm-6.2.1/ hipsparse: buildable: false externals: - - spec: hipsparse@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipsparse@6.2.1 + prefix: /opt/rocm-6.2.1/ miopen-hip: buildable: false externals: - - spec: miopen-hip@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: miopen-hip@6.2.1 + prefix: /opt/rocm-6.2.1/ miopengemm: buildable: false externals: - - spec: miopengemm@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: miopengemm@6.2.1 + prefix: /opt/rocm-6.2.1/ rccl: buildable: false externals: - - spec: rccl@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rccl@6.2.1 + prefix: /opt/rocm-6.2.1/ rocblas: buildable: false externals: - - spec: rocblas@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocblas@6.2.1 + prefix: /opt/rocm-6.2.1/ rocfft: buildable: false externals: - - spec: rocfft@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocfft@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-clang-ocl: buildable: false externals: - - spec: rocm-clang-ocl@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-clang-ocl@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-cmake: buildable: false externals: - - spec: rocm-cmake@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-cmake@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-dbgapi: buildable: false externals: - - spec: rocm-dbgapi@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-dbgapi@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-debug-agent: buildable: false externals: - - spec: rocm-debug-agent@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-debug-agent@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-device-libs: buildable: false externals: - - spec: rocm-device-libs@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-device-libs@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-gdb: buildable: false externals: - - spec: rocm-gdb@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-gdb@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-opencl: buildable: false externals: - - spec: rocm-opencl@6.2.0 - prefix: /opt/rocm-6.2.0/opencl + - spec: rocm-opencl@6.2.1 + prefix: /opt/rocm-6.2.1/opencl rocm-smi-lib: buildable: false externals: - - spec: rocm-smi-lib@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-smi-lib@6.2.1 + prefix: /opt/rocm-6.2.1/ hip: buildable: false externals: - - spec: hip@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hip@6.2.1 + prefix: /opt/rocm-6.2.1 extra_attributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - c++: /opt/rocm-6.2.0/llvm/bin/clang++ - hip: /opt/rocm-6.2.0/hip/bin/hipcc + c: /opt/rocm-6.2.1/llvm/bin/clang++ + c++: /opt/rocm-6.2.1/llvm/bin/clang++ + hip: /opt/rocm-6.2.1/hip/bin/hipcc hipify-clang: buildable: false externals: - - spec: hipify-clang@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hipify-clang@6.2.1 + prefix: /opt/rocm-6.2.1 llvm-amdgpu: buildable: false externals: - - spec: llvm-amdgpu@6.2.0 - prefix: /opt/rocm-6.2.0/llvm + - spec: llvm-amdgpu@6.2.1 + prefix: /opt/rocm-6.2.1/llvm extra_attributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - cxx: /opt/rocm-6.2.0/llvm/bin/clang++ + c: /opt/rocm-6.2.1/llvm/bin/clang++ + cxx: /opt/rocm-6.2.1/llvm/bin/clang++ hsakmt-roct: buildable: false externals: - - spec: hsakmt-roct@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hsakmt-roct@6.2.1 + prefix: /opt/rocm-6.2.1/ hsa-rocr-dev: buildable: false externals: - - spec: hsa-rocr-dev@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hsa-rocr-dev@6.2.1 + prefix: /opt/rocm-6.2.1/ extra_atributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - cxx: /opt/rocm-6.2.0/llvm/bin/clang++ + c: /opt/rocm-6.2.1/llvm/bin/clang++ + cxx: /opt/rocm-6.2.1/llvm/bin/clang++ roctracer-dev-api: buildable: false externals: - - spec: roctracer-dev-api@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: roctracer-dev-api@6.2.1 + prefix: /opt/rocm-6.2.1 roctracer-dev: buildable: false externals: - spec: roctracer-dev@4.5.3 - prefix: /opt/rocm-6.2.0 + prefix: /opt/rocm-6.2.1 rocprim: buildable: false externals: - - spec: rocprim@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocprim@6.2.1 + prefix: /opt/rocm-6.2.1 rocrand: buildable: false externals: - - spec: rocrand@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocrand@6.2.1 + prefix: /opt/rocm-6.2.1 hipsolver: buildable: false externals: - - spec: hipsolver@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hipsolver@6.2.1 + prefix: /opt/rocm-6.2.1 rocsolver: buildable: false externals: - - spec: rocsolver@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocsolver@6.2.1 + prefix: /opt/rocm-6.2.1 rocsparse: buildable: false externals: - - spec: rocsparse@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocsparse@6.2.1 + prefix: /opt/rocm-6.2.1 rocthrust: buildable: false externals: - - spec: rocthrust@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocthrust@6.2.1 + prefix: /opt/rocm-6.2.1 rocprofiler-dev: buildable: false externals: - - spec: rocprofiler-dev@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocprofiler-dev@6.2.1 + prefix: /opt/rocm-6.2.1 rocm-core: buildable: false externals: - - spec: rocm-core@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocm-core@6.2.1 + prefix: /opt/rocm-6.2.1 specs: # ROCM NOARCH @@ -302,7 +302,7 @@ spack: ci: pipeline-gen: - build-job: - image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.0:2024.09.11 + image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08 cdash: build-group: E4S ROCm External diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 86be7b09d97db6..28519602bfbd30 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -67,6 +67,7 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage): "6.1.1", "6.1.2", "6.2.0", + "6.2.1", ]: depends_on(f"rocm-core@{ver}", when=f"@2.8.0: +rocm ^hip@{ver}") depends_on("python", when="@master", type="build") From 178a8bbdc53e7914a2b959a4141020c6f01c0f52 Mon Sep 17 00:00:00 2001 From: George Young Date: Thu, 17 Oct 2024 03:29:40 +0100 Subject: [PATCH 012/615] isoquant: new package @3.6.1 (#47013) Co-authored-by: LMS Bioinformatics --- .../builtin/packages/isoquant/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/isoquant/package.py diff --git a/var/spack/repos/builtin/packages/isoquant/package.py b/var/spack/repos/builtin/packages/isoquant/package.py new file mode 100644 index 00000000000000..7655204ec5050b --- /dev/null +++ b/var/spack/repos/builtin/packages/isoquant/package.py @@ -0,0 +1,45 @@ +# 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) + +from spack.package import * + + +class Isoquant(Package): + """IsoQuant: Transcript discovery and quantification with long RNA reads""" + + # IsoQuant is a collection of Python scripts but does not install as a + # typical Python package, so this is a `Package` rather than a `PythonPackage` + # and we move things into place manually ... + + homepage = "https://ablab.github.io/IsoQuant/" + url = "https://github.com/ablab/IsoQuant/releases/download/v3.6.1/IsoQuant-3.6.1.tar.gz" + + license("GPL-2.0-only", checked_by="A-N-Other") + + version("3.6.1", sha256="6d16e47e9ca45f9a0d029940d5b84e03038d9ba3d640945e3a5087acfd7ed56d") + + depends_on("minimap2", type="run") + depends_on("samtools", type="run") + + depends_on("python@3.8:", type="run") + depends_on("py-gffutils@0.10.1:", type="run") + depends_on("py-biopython@1.76:", type="run") + depends_on("py-pandas@1.0.1:", type="run") + depends_on("py-pybedtools@0.8.1:", type="run") + depends_on("py-pysam@0.15:", type="run") + depends_on("py-packaging", type="run") + depends_on("py-pyfaidx@0.7:", type="run") + depends_on("py-pyyaml@5.4:", type="run") + depends_on("py-matplotlib@3.1.3:", type="run") + depends_on("py-numpy@1.18.1:", type="run") + depends_on("py-scipy@1.4.1:", type="run") + depends_on("py-seaborn@0.10.0:", type="run") + + def install(self, spec, prefix): + chmod = which("chmod") + chmod("+x", "isoquant.py", "visualize.py") + mkdirp(prefix.bin) + install("*.py", prefix.bin) + install_tree("src", prefix.bin.src) From 1eb2cb97adfc8acc647fdc61350b73d61233ee68 Mon Sep 17 00:00:00 2001 From: Ian Lumsden Date: Wed, 16 Oct 2024 22:43:34 -0400 Subject: [PATCH 013/615] `caliper`: add `+python` variant with `pybind11` bindings (#47031) * Updates Caliper recipe to build the new Python bindings * Implements setup_run_environment for Caliper to update PYTHONPATH --- var/spack/repos/builtin/packages/caliper/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index e165899674a2b9..ad06a5e242b71d 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -101,6 +101,8 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): variant("vtune", default=False, description="Enable Intel Vtune support") variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support") variant("tests", default=False, description="Enable tests") + # TODO change the 'when' argument for the next release of Caliper + variant("python", default=False, when="@master", description="Build Python bindings") depends_on("adiak@0.1:0", when="@2.2:2.10 +adiak") depends_on("adiak@0.4:0", when="@2.11: +adiak") @@ -121,6 +123,9 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cmake", type="build") depends_on("python", type="build") + depends_on("python@3", when="+python", type=("build", "link", "run")) + depends_on("py-pybind11", when="+python", type=("build", "link", "run")) + # sosflow support not yet in 2.0 conflicts("+sosflow", "@2.0.0:2.11") conflicts("+adiak", "@:2.1") @@ -228,6 +233,7 @@ def initconfig_package_entries(self): entries.append(cmake_cache_option("WITH_KOKKOS", spec.satisfies("+kokkos"))) entries.append(cmake_cache_option("WITH_VARIORUM", spec.satisfies("+variorum"))) entries.append(cmake_cache_option("WITH_VTUNE", spec.satisfies("+vtune"))) + entries.append(cmake_cache_option("WITH_PYTHON_BINDINGS", spec.satisfies("+python"))) # -DWITH_CALLPATH was renamed -DWITH_LIBUNWIND in 2.5 callpath_flag = "LIBUNWIND" if spec.satisfies("@2.5:") else "CALLPATH" @@ -238,6 +244,11 @@ def initconfig_package_entries(self): def cmake_args(self): return [] + def setup_run_environment(self, env): + if self.spec.satisfies("+python"): + env.prepend_path("PYTHONPATH", self.spec.prefix.join(python_platlib)) + env.prepend_path("PYTHONPATH", self.spec.prefix.join(python_purelib)) + @run_after("install") def cache_test_sources(self): """Copy the example source files after the package is installed to an From aa6caf9ee6ecc0ea181a0be32746f3879fe9b37c Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 17 Oct 2024 08:41:25 +0200 Subject: [PATCH 014/615] curl: mbedtls 3.6.0 bound should be forward not backward compat (#47029) and add another backward compat bound for just 8.8 --- var/spack/repos/builtin/packages/curl/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 127fbd991b59ba..1983a296c22273 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -114,9 +114,11 @@ class Curl(NMakePackage, AutotoolsPackage): depends_on("gnutls", when="tls=gnutls") with when("tls=mbedtls"): - depends_on("mbedtls@:2 +pic", when="@:7.78") - depends_on("mbedtls@2: +pic", when="@7.79:") - depends_on("mbedtls@3.6.0: +pic", when="@8.8.0:") + depends_on("mbedtls +pic") + depends_on("mbedtls@:2", when="@:7.78") + depends_on("mbedtls@:3.5", when="@:8.7") + depends_on("mbedtls@2:", when="@7.79:") + depends_on("mbedtls@3.2:", when="@8.8") # https://github.com/curl/curl/issues/13748 depends_on("nss", when="tls=nss") From 5f56eee8b05e10b70d266c4761c6ab97c624ffdc Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Thu, 17 Oct 2024 02:21:40 -0500 Subject: [PATCH 015/615] freetype: prefer 2.13.2 due to interface change in 2.13.3 (#47021) --- var/spack/repos/builtin/packages/freetype/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index 2154009c659505..28784269512674 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -23,7 +23,14 @@ class Freetype(AutotoolsPackage, CMakePackage): license("FTL OR GPL-2.0-or-later") version("2.13.3", sha256="5c3a8e78f7b24c20b25b54ee575d6daa40007a5f4eea2845861c3409b3021747") - version("2.13.2", sha256="1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5") + # Freetype 2.13.3 broke the public interface, so marking 2.13.2 as preferred in spack 0.23 + # Once spack 0.23 has been released, this preference can be removed again. + # https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/330 + version( + "2.13.2", + sha256="1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5", + preferred=True, + ) version("2.13.1", sha256="0b109c59914f25b4411a8de2a506fdd18fa8457eb86eca6c7b15c19110a92fa5") version("2.13.0", sha256="a7aca0e532a276ea8d85bd31149f0a74c33d19c8d287116ef8f5f8357b4f1f80") version("2.12.1", sha256="efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938") From adaa0a4863a810fa99d392a96c372f8be45e81f4 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 17 Oct 2024 13:38:59 +0200 Subject: [PATCH 016/615] clingo: use CMAKE_OSX_DEPLOYMENT_TARGET instead of *flags (#47043) --- .../builtin/packages/clingo-bootstrap/package.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py index 67bab58d7a950c..143930d651e581 100644 --- a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py @@ -77,6 +77,12 @@ def cmake_py_shared(self): def cmake_args(self): args = super().cmake_args() args.append(self.define("CLINGO_BUILD_APPS", False)) + if self.spec.satisfies("platform=darwin target=aarch64:"): + # big sur is first to support darwin-aarch64 + args.append(self.define("CMAKE_OSX_DEPLOYMENT_TARGET", "11")) + elif self.spec.satisfies("platform=darwin target=x86_64:"): + # for x86_64 use highsierra + args.append(self.define("CMAKE_OSX_DEPLOYMENT_TARGET", "10.13")) return args @run_before("cmake", when="+optimized") @@ -136,9 +142,5 @@ def pgo_train(self): cmake.add_default_envmod(use_mods) def setup_build_environment(self, env): - if self.spec.satisfies("%apple-clang"): - env.append_flags("CFLAGS", "-mmacosx-version-min=10.13") - env.append_flags("CXXFLAGS", "-mmacosx-version-min=10.13") - env.append_flags("LDFLAGS", "-mmacosx-version-min=10.13") - elif self.spec.compiler.name in ("gcc", "clang") and "+static_libstdcpp" in self.spec: + if self.spec.compiler.name in ("gcc", "clang") and "+static_libstdcpp" in self.spec: env.append_flags("LDFLAGS", "-static-libstdc++ -static-libgcc -Wl,--exclude-libs,ALL") From 962262a1d3d2ca8db50fa82ec5684ba85b2a8c99 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:34:34 -0400 Subject: [PATCH 017/615] llvm-amdgpu and composable-kernel: fix build failures (#46891) --- .../0001-mark-kernels-maybe-unused.patch | 88 +++++++++++++++++++ .../packages/composable-kernel/package.py | 6 ++ .../builtin/packages/llvm-amdgpu/package.py | 5 +- 3 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch diff --git a/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch b/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch new file mode 100644 index 00000000000000..f2fbc24f614421 --- /dev/null +++ b/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch @@ -0,0 +1,88 @@ +diff --git a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp +index f4f496fc10..d9e300b737 100644 +--- a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp ++++ b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp +@@ -47,12 +47,12 @@ __global__ void + #endif + kernel_grouped_conv_bwd_weight_xdl_cshuffle_v3( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, +- const index_t num_k_per_block) ++ [[maybe_unused]] const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, ++ [[maybe_unused]] const index_t num_k_per_block) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx908__) || defined(__gfx90a__) || \ + defined(__gfx94__)) +@@ -103,12 +103,12 @@ __global__ void + #endif + kernel_grouped_conv_bwd_weight_xdl_cshuffle_v3_2lds( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, +- const index_t num_k_per_block) ++ [[maybe_unused]] const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, ++ [[maybe_unused]] const index_t num_k_per_block) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx908__) || defined(__gfx90a__) || \ + defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) +diff --git a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp +index 415ae3d496..a4d4a01a01 100644 +--- a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp ++++ b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp +@@ -69,14 +69,15 @@ __global__ void + #if CK_USE_LAUNCH_BOUNDS + __launch_bounds__(CK_MAX_THREAD_PER_BLOCK, MinimumOccupancy) + #endif +- kernel_grouped_conv_fwd_xdl_cshuffle_v3(typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock +- c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffset compute_ptr_offset_of_groups, +- const ComputePtrOffset compute_ptr_offset_of_n, +- const index_t groups_count) ++ kernel_grouped_conv_fwd_xdl_cshuffle_v3( ++ typename GridwiseGemm::Argument karg, ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ c_grid_desc_mblock_mperblock_nblock_nperblock, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_groups, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_n, ++ [[maybe_unused]] const index_t groups_count) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx9__)) + // offset base pointer for each work-group +@@ -132,13 +133,13 @@ __global__ void + #endif + kernel_grouped_conv_fwd_xdl_cshuffle_v3_2lds( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffset compute_ptr_offset_of_groups, +- const ComputePtrOffset compute_ptr_offset_of_n, +- const index_t groups_count) ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_groups, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_n, ++ [[maybe_unused]] const index_t groups_count) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx9__)) + // offset base pointer for each work-group diff --git a/var/spack/repos/builtin/packages/composable-kernel/package.py b/var/spack/repos/builtin/packages/composable-kernel/package.py index fcb8dc682d0768..d666737cb3ec57 100644 --- a/var/spack/repos/builtin/packages/composable-kernel/package.py +++ b/var/spack/repos/builtin/packages/composable-kernel/package.py @@ -78,6 +78,10 @@ class ComposableKernel(CMakePackage): depends_on("llvm-amdgpu@" + ver, when="@" + ver) depends_on("rocm-cmake@" + ver, when="@" + ver, type="build") + # Build is breaking on warning, -Werror, -Wunused-parameter. The patch is part of: + # https://github.com/ROCm/composable_kernel/commit/959073842c0db839d45d565eb260fd018c996ce4 + patch("0001-mark-kernels-maybe-unused.patch", when="@6.2") + def setup_build_environment(self, env): env.set("CXX", self.spec["hip"].hipcc) @@ -101,6 +105,8 @@ def cmake_args(self): args.append(self.define("CMAKE_POSITION_INDEPENDENT_CODE", "ON")) if self.spec.satisfies("@:5.7"): args.append(self.define("CMAKE_CXX_FLAGS", "-O3")) + if self.spec.satisfies("@6.2:"): + args.append(self.define("BUILD_DEV", "OFF")) return args def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index bfa175a8df89a0..3e39a4445baf87 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -20,7 +20,7 @@ class LlvmAmdgpu(CMakePackage, CompilerPackage): executables = [r"amdclang", r"amdclang\+\+", r"amdflang", r"clang.*", r"flang.*", "llvm-.*"] generator("ninja") - maintainers("srekolam", "renjithravindrankannath", "haampie") + maintainers("srekolam", "renjithravindrankannath", "haampie", "afzpatel") license("Apache-2.0") @@ -319,6 +319,5 @@ def post_install(self): def setup_dependent_build_environment(self, env, dependent_spec): for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix): if "libclang_rt.asan-x86_64.so" in files: - asan_lib_path = root - env.prepend_path("LD_LIBRARY_PATH", asan_lib_path) + env.prepend_path("LD_LIBRARY_PATH", root) env.prune_duplicate_paths("LD_LIBRARY_PATH") From 7ecdc175ff41d0039be1652642dbc5acb4c9e167 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:11:32 -0700 Subject: [PATCH 018/615] e4s ci stacks: add fftx cpu, cuda, and rocm builds (#47004) * e4s ci stacks: add fftx cpu, cuda, and rocm builds * disable fftx+rocm due to spack github issue #47034 * e4s oneapi: fftx has spack build error https://github.com/spack/spack/issues/47048 --- .../gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml | 2 ++ .../gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml | 4 ++++ .../gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml | 1 + .../spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml | 1 + .../cloud_pipelines/stacks/e4s-rocm-external/spack.yaml | 2 ++ share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml | 4 ++++ var/spack/repos/builtin/packages/spiral-software/package.py | 5 +++++ 7 files changed, 19 insertions(+) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml index 531b02663d474c..ea4d676b15d8b3 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml @@ -74,6 +74,7 @@ spack: - dyninst - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 ~paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: ? - exaworks + - fftx - flecsi # - flit # - flux-core @@ -197,6 +198,7 @@ spack: - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90 - caliper +cuda cuda_arch=90 - chai +cuda cuda_arch=90 ^umpire ~shared + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index bc47085c8dd7ba..0ef6131d506a8b 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -74,6 +74,7 @@ spack: - dyninst - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: ? - exaworks + - fftx - flecsi - flit - flux-core @@ -226,6 +227,7 @@ spack: - cusz +cuda cuda_arch=75 - dealii +cuda cuda_arch=75 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=75 # # +paraview: job killed oom? + - fftx +cuda cuda_arch=75 - flecsi +cuda cuda_arch=75 - ginkgo +cuda cuda_arch=75 - gromacs +cuda cuda_arch=75 @@ -274,6 +276,7 @@ spack: - cusz +cuda cuda_arch=80 - dealii +cuda cuda_arch=80 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=80 # +paraview: job killed oom? + - fftx +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80 - gromacs +cuda cuda_arch=80 @@ -320,6 +323,7 @@ spack: - chai +cuda cuda_arch=90 ^umpire ~shared - chapel +cuda cuda_arch=90 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=90 # +paraview: vtkm/exec/cuda/internal/ThrustPatches.h(213): error: this declaration has no storage class or type specifier + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml index 4cc86363881b0b..ac305621028c5d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml @@ -192,6 +192,7 @@ spack: # -- # - chapel ~cuda ~rocm # llvm: closures.c:(.text+0x305e): undefined reference to `_intel_fast_memset' # - cp2k +mpi # dbcsr: dbcsr_api.F(973): #error: incomplete macro call DBCSR_ABORT. + # - fftx # fftx: https://github.com/spack/spack/issues/47048 # - geopm-runtime # libelf: configure: error: installation or configuration problem: C compiler cannot create executables. # - hpctoolkit # dyninst@13.0.0%gcc: libiberty/./d-demangle.c:142: undefined reference to `_intel_fast_memcpy' # - lbann # 2024.2 internal compiler error diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index f46fe4f2f2cbbc..618798b599edfd 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -77,6 +77,7 @@ spack: - dxt-explorer - dyninst - exaworks + - fftx - flecsi - flit - flux-core diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml index b14550808f7a92..2098645d1b1291 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml @@ -221,6 +221,7 @@ spack: - caliper +rocm amdgpu_target=gfx908 - chai +rocm amdgpu_target=gfx908 - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908 + - fftx +rocm amdgpu_target=gfx908 - gasnet +rocm amdgpu_target=gfx908 - ginkgo +rocm amdgpu_target=gfx908 - heffte +rocm amdgpu_target=gfx908 @@ -264,6 +265,7 @@ spack: - caliper +rocm amdgpu_target=gfx90a - chai +rocm amdgpu_target=gfx90a - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a + - fftx +rocm amdgpu_target=gfx90a - gasnet +rocm amdgpu_target=gfx90a - ginkgo +rocm amdgpu_target=gfx90a - heffte +rocm amdgpu_target=gfx90a diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 8928db97ab9a84..23e8a2f6eb8edd 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -82,6 +82,7 @@ spack: - e4s-cl - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc +visit +vtkm +zfp # adios2~cuda, ascent~cuda, darshan-runtime, darshan-util, faodel, hdf5, libcatalyst, parallel-netcdf, paraview~cuda, py-cinemasci, sz, unifyfs, veloc, visit, vtk-m, zfp - exaworks + - fftx - flecsi - flit - flux-core @@ -238,6 +239,7 @@ spack: - cusz +cuda cuda_arch=80 - ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # +ascent fails because fides fetch error - exago +mpi +python +raja +hiop ~rocm +cuda cuda_arch=80 ~ipopt ^hiop@1.0.0 ~sparse +mpi +raja ~rocm +cuda cuda_arch=80 #^raja@0.14.0 + - fftx +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80 - gromacs +cuda cuda_arch=80 @@ -283,6 +285,7 @@ spack: - caliper +cuda cuda_arch=90 - chai +cuda cuda_arch=90 ^umpire ~shared - chapel +cuda cuda_arch=90 + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 @@ -361,6 +364,7 @@ spack: # - cabana +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 # - chapel +rocm amdgpu_target=gfx90a # chapel: need chapel >= 2.2 to support ROCm >5.4 # - exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx90a ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx90a # hiop: CMake Error at cmake/FindHiopHipLibraries.cmake:23 (find_package) + # - fftx +rocm amdgpu_target=gfx90a # fftx: https://github.com/spack/spack/issues/47034 # - kokkos +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 # - lbann ~cuda +rocm amdgpu_target=gfx90a # aluminum: https://github.com/spack/spack/issues/38807 # - legion +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 diff --git a/var/spack/repos/builtin/packages/spiral-software/package.py b/var/spack/repos/builtin/packages/spiral-software/package.py index 9d7892fd22a0d2..7bcaa1a69f6837 100644 --- a/var/spack/repos/builtin/packages/spiral-software/package.py +++ b/var/spack/repos/builtin/packages/spiral-software/package.py @@ -73,6 +73,11 @@ def spiral_package_install(self, spec, prefix, pkg): src = join_path(pkg_prefix, "namespaces", "packages", pkg) install_tree(src, dest) + def flag_handler(self, name, flags): + if name == "cflags" and self.spec.satisfies("%oneapi"): + flags.append("-Wno-error=implicit-function-declaration") + return (flags, None, None) + def install(self, spec, prefix): with working_dir(self.stage.source_path): files = ("LICENSE", "README.md", "ReleaseNotes.md", "Contributing.md") From 0a7533a609eb0084cf36cffaeda3ae939698f06e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Thu, 17 Oct 2024 13:42:10 -0500 Subject: [PATCH 019/615] unrar: add v7.0.9 (#47036) --- var/spack/repos/builtin/packages/unrar/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/unrar/package.py b/var/spack/repos/builtin/packages/unrar/package.py index 22c77232adac88..1c73ebd572c588 100644 --- a/var/spack/repos/builtin/packages/unrar/package.py +++ b/var/spack/repos/builtin/packages/unrar/package.py @@ -13,9 +13,12 @@ class Unrar(MakefilePackage): homepage = "https://www.rarlab.com" url = "https://www.rarlab.com/rar/unrarsrc-5.9.4.tar.gz" - version("5.9.4", sha256="3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300") - version("5.8.2", sha256="33386623fd3fb153b56292df4a6a69b457e69e1803b6d07b614e5fd22fb33dda") - version("5.8.1", sha256="035f1f436f0dc2aea09aec146b9cc3e47ca2442f2c62b4ad9374c7c9cc20e632") + version("7.0.9", sha256="505c13f9e4c54c01546f2e29b2fcc2d7fabc856a060b81e5cdfe6012a9198326") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-48579 + version("5.9.4", sha256="3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300") + version("5.8.2", sha256="33386623fd3fb153b56292df4a6a69b457e69e1803b6d07b614e5fd22fb33dda") + version("5.8.1", sha256="035f1f436f0dc2aea09aec146b9cc3e47ca2442f2c62b4ad9374c7c9cc20e632") depends_on("cxx", type="build") # generated From 75c71f7291160ec08d9406218b1bbd808a3cf4ea Mon Sep 17 00:00:00 2001 From: jgraciahlrs Date: Thu, 17 Oct 2024 20:42:26 +0200 Subject: [PATCH 020/615] otf-cpt: add new package for OTF-CPT (#47042) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/otf-cpt/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/otf-cpt/package.py diff --git a/var/spack/repos/builtin/packages/otf-cpt/package.py b/var/spack/repos/builtin/packages/otf-cpt/package.py new file mode 100644 index 00000000000000..4ad43a6b2923fa --- /dev/null +++ b/var/spack/repos/builtin/packages/otf-cpt/package.py @@ -0,0 +1,37 @@ +# 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) + +from spack.package import * + + +class OtfCpt(CMakePackage): + """Tool to collect and report model factors (aka. fundamental performance factors) + for hybrid MPI + OpenMP applications on-the-fly.""" + + # Add a proper url for your package's homepage here. + homepage = ( + "https://github.com/RWTH-HPC/OTF-CPT?tab=readme-ov-file#on-the-fly-critical-path-tool" + ) + git = "https://github.com/RWTH-HPC/OTF-CPT.git" + + maintainers("jgraciahlrs", "jprotze") + + license("Apache-2.0", checked_by="jgraciahlrs") + + version("0.9", tag="v0.9") + + depends_on("cxx", type="build") + depends_on("mpi") + conflicts( + "%gcc", + # Use a clang compiler with a matching libomp, e.g. 'sudo apt install libomp-14-dev': + msg="gcc currently does not support OMPT, please use a clang-like compiler with libomp", + ) + + patch( + "https://github.com/RWTH-HPC/OTF-CPT/commit/b58f83588a4c231b71ca48dcddd909e1ab318cc6.diff?full_index=1", + sha256="35fadc3e61e5b7aa3a68272f701af3a242e30a435f1ddd679577ba35c7496565", + when="@0.9", + ) From 049ade024a80984c29d92591253a89563d8705d5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 17 Oct 2024 12:54:02 -0600 Subject: [PATCH 021/615] voropp: swich to cmake (#47039) * voropp: migrate to cmake * lammps: update voropp dep --- .../repos/builtin/packages/lammps/package.py | 2 +- .../repos/builtin/packages/voropp/package.py | 21 ++++++------ .../packages/voropp/voro++-0.4.6-cmake.patch | 33 +++++++++++++++++++ 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 7486b5272196ef..a74980abfdf749 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -661,7 +661,7 @@ def url_for_version(self, version): depends_on("hipfft", when="+kokkos+kspace+rocm fft_kokkos=hipfft") depends_on("fftw-api@3", when="+kokkos+kspace fft_kokkos=fftw3") depends_on("mkl", when="+kokkos+kspace fft_kokkos=mkl") - depends_on("voropp+pic", when="+voronoi") + depends_on("voropp", when="+voronoi") depends_on("netcdf-c+mpi", when="+user-netcdf") depends_on("netcdf-c+mpi", when="+netcdf") depends_on("blas", when="+user-atc") diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index 683cf8acaeb392..49a1aa078ed249 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -6,28 +6,27 @@ from spack.package import * -class Voropp(MakefilePackage): +class Voropp(CMakePackage): """Voro++ is a open source software library for the computation of the Voronoi diagram, a widely-used tessellation that has applications in many scientific fields.""" homepage = "https://math.lbl.gov/voro++/about.html" url = "https://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz" + git = "https://github.com/chr1shr/voro" - variant("pic", default=True, description="Position independent code") + variant("shared", default=True, description="Build shared libraries") license("BSD-3-Clause-LBNL") + version("master", branch="master") version("0.4.6", sha256="ef7970071ee2ce3800daa8723649ca069dc4c71cc25f0f7d22552387f3ea437e") depends_on("cxx", type="build") # generated - def edit(self, spec, prefix): - filter_file(r"CC=g\+\+", "CC={0}".format(self.compiler.cxx), "config.mk") - filter_file(r"PREFIX=/usr/local", "PREFIX={0}".format(self.prefix), "config.mk") - # We can safely replace the default CFLAGS which are: - # CFLAGS=-Wall -ansi -pedantic -O3 - cflags = "" - if "+pic" in spec: - cflags += self.compiler.cc_pic_flag - filter_file(r"CFLAGS=.*", "CFLAGS={0}".format(cflags), "config.mk") + patch("voro++-0.4.6-cmake.patch", when="@0.4.6") + + def cmake_args(self): + args = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] + + return args diff --git a/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch b/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch new file mode 100644 index 00000000000000..48f2ab9a6938be --- /dev/null +++ b/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch @@ -0,0 +1,33 @@ +diff -Naur voro++-0.4.6.orig/CMakeLists.txt voro++-0.4.6/CMakeLists.txt +--- voro++-0.4.6.orig/CMakeLists.txt 1969-12-31 17:00:00.000000000 -0700 ++++ voro++-0.4.6/CMakeLists.txt 2024-10-16 21:14:06.755336366 -0600 +@@ -0,0 +1,3 @@ ++# Set the minimum required version of cmake for a project. ++cmake_minimum_required(VERSION 2.6) ++add_subdirectory(src) +diff -Naur voro++-0.4.6.orig/src/CMakeLists.txt voro++-0.4.6/src/CMakeLists.txt +--- voro++-0.4.6.orig/src/CMakeLists.txt 1969-12-31 17:00:00.000000000 -0700 ++++ voro++-0.4.6/src/CMakeLists.txt 2024-10-16 21:14:07.639351723 -0600 +@@ -0,0 +1,22 @@ ++add_library(voro++ SHARED ++ cell.cc ++ common.cc ++ container.cc ++ unitcell.cc ++ v_compute.cc ++ c_loops.cc ++ v_base.cc wall.cc ++ pre_container.cc ++ container_prd.cc ++) ++set_target_properties(voro++ PROPERTIES VERSION 0.0.0 SOVERSION 0) ++ ++add_executable(voro++-bin cmd_line.cc) ++set_target_properties(voro++-bin PROPERTIES OUTPUT_NAME voro++) ++target_link_libraries(voro++-bin voro++) ++ ++file(GLOB_RECURSE HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.hh) ++ ++install(TARGETS voro++ LIBRARY DESTINATION lib${LIB_SUFFIX}) ++install(FILES ${HDR} DESTINATION include) ++install(TARGETS voro++-bin DESTINATION bin) From 420266c5c4f3785682fb2bad41bfb831a38b8d24 Mon Sep 17 00:00:00 2001 From: Stephen Sachs Date: Thu, 17 Oct 2024 20:54:20 +0200 Subject: [PATCH 022/615] wrf: Enable oneapi on more platforms (#47040) * Remove the implicit CORE-AVX512 since the CPU specific flags are added by the compiler wrappers. * Add `-i_use-path` to help `ifx` find `lld` even if `-gcc-name` is set in `ifx.cfg`. This file is written by `intel-oneapi-compilers` package to find the correct `gcc`. Not being able to find `ldd` is a bug in `ifx`. @rschon2 found this workaround. --- var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch b/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch index 06ab5cff2b701d..3acd8be485e248 100644 --- a/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch +++ b/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch @@ -26,7 +26,7 @@ index 6aa210d7..a3224d34 100644 +PROMOTION = -real-size `expr 8 \* $(RWORDSIZE)` -i4 +ARCH_LOCAL = -DNONSTANDARD_SYSTEM_FUNC -DRPC_TYPES=2 -DXEON_SIMD +CFLAGS_LOCAL = -w -flto -O3 -Wno-implicit-function-declaration -Wno-implicit-int -+LDFLAGS_LOCAL = -flto -fuse-ld=lld ++LDFLAGS_LOCAL = -flto -fuse-ld=lld -i_use-path +CPLUSPLUSLIB = +ESMF_LDFLAG = $(CPLUSPLUSLIB) +FCOPTIM = -O3 @@ -38,7 +38,7 @@ index 6aa210d7..a3224d34 100644 +FCSUFFIX = +BYTESWAPIO = -convert big_endian +RECORDLENGTH = -assume byterecl -+FCBASEOPTS_NO_G = -O3 -flto -w -ftz -align array64byte -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -fp-model fast=2 -fimf-use-svml=true -vec-threshold0 -xCORE-AVX512 ++FCBASEOPTS_NO_G = -O3 -flto -w -ftz -align array64byte -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -fp-model fast=2 -fimf-use-svml=true -vec-threshold0 +FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) +MODULE_SRCH_FLAG = +TRADFLAG = -traditional-cpp From 2da812cbad004e5167e82ca2740c1d3575ccf7be Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Fri, 18 Oct 2024 01:03:48 +0530 Subject: [PATCH 023/615] AOCL: add v5.0 (#46964) --- .../builtin/packages/amd-aocl/package.py | 16 +- .../repos/builtin/packages/amdblis/package.py | 28 ++-- .../repos/builtin/packages/amdfftw/package.py | 26 ++- .../amdlibflame/libflame-pkgconfig.patch | 29 ++++ .../builtin/packages/amdlibflame/package.py | 47 +++--- .../repos/builtin/packages/amdlibm/package.py | 31 ++-- .../builtin/packages/amdscalapack/package.py | 48 +++--- .../packages/aocl-compression/package.py | 33 ++-- .../packages/aocl-crypto/lsb_release.patch | 153 ++++++++++++++++++ .../builtin/packages/aocl-crypto/package.py | 62 +++---- ...ake-to-be-configured-with-examples-o.patch | 27 ++++ .../repos/builtin/packages/aocl-da/package.py | 130 +++++++++++++++ .../builtin/packages/aocl-libmem/cmake.patch | 46 ++++++ .../builtin/packages/aocl-libmem/package.py | 30 ++-- .../builtin/packages/aocl-sparse/package.py | 56 ++++--- .../builtin/packages/aocl-utils/package.py | 45 +++--- 16 files changed, 595 insertions(+), 212 deletions(-) create mode 100644 var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch create mode 100644 var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch create mode 100644 var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch create mode 100644 var/spack/repos/builtin/packages/aocl-da/package.py create mode 100644 var/spack/repos/builtin/packages/aocl-libmem/cmake.patch diff --git a/var/spack/repos/builtin/packages/amd-aocl/package.py b/var/spack/repos/builtin/packages/amd-aocl/package.py index 9026dd74e2fad2..85f7148c818719 100644 --- a/var/spack/repos/builtin/packages/amd-aocl/package.py +++ b/var/spack/repos/builtin/packages/amd-aocl/package.py @@ -24,7 +24,8 @@ class AmdAocl(BundlePackage): maintainers("amd-toolchain-support") - version("4.2", preferred=True) + version("5.0", preferred=True) + version("4.2") version("4.1") version("4.0") version("3.2") @@ -38,21 +39,32 @@ class AmdAocl(BundlePackage): depends_on("amdblis threads=openmp") depends_on("amdfftw +openmp") depends_on("amdlibflame threads=openmp") + depends_on("aocl-sparse +openmp") + depends_on("aocl-da +openmp") + depends_on("aocl-compression +openmp") with when("~openmp"): depends_on("amdblis threads=none") depends_on("amdfftw ~openmp") depends_on("amdlibflame threads=none") + depends_on("aocl-sparse ~openmp") + depends_on("aocl-da ~openmp") + depends_on("aocl-compression ~openmp") - for vers in ["2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2"]: + for vers in ["2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"amdblis@={vers}") depends_on(f"amdfftw@={vers}") depends_on(f"amdlibflame@={vers}") + depends_on("amdlibflame ^[virtuals=blas] amdblis") depends_on(f"amdlibm@={vers}") depends_on(f"amdscalapack@={vers}") + depends_on("amdscalapack ^[virtuals=blas] amdblis") + depends_on("amdscalapack ^[virtuals=lapack] amdlibflame") depends_on(f"aocl-sparse@={vers}") if Version(vers) >= Version("4.2"): depends_on(f"aocl-compression@={vers}") depends_on(f"aocl-crypto@={vers}") depends_on(f"aocl-libmem@={vers}") + if Version(vers) >= Version("5.0"): + depends_on(f"aocl-da@={vers}") diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py index 27e713845fbb59..a25f5a3c9371f6 100644 --- a/var/spack/repos/builtin/packages/amdblis/package.py +++ b/var/spack/repos/builtin/packages/amdblis/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * from spack.pkg.builtin.blis import BlisBase @@ -39,10 +37,11 @@ class Amdblis(BlisBase): license("BSD-3-Clause") version( - "4.2", - sha256="0e1baf850ba0e6f99e79f64bbb0a59fcb838ddb5028e24527f52b407c3c62963", + "5.0", + sha256="5abb34972b88b2839709d0af8785662bc651c7806ccfa41d386d93c900169bc2", preferred=True, ) + version("4.2", sha256="0e1baf850ba0e6f99e79f64bbb0a59fcb838ddb5028e24527f52b407c3c62963") version("4.1", sha256="a05c6c7d359232580d1d599696053ad0beeedf50f3b88d5d22ee7d34375ab577") version("4.0", sha256="cddd31176834a932753ac0fc4c76332868feab3e9ac607fa197d8b44c1e74a41") version("3.2", sha256="5a400ee4fc324e224e12f73cc37b915a00f92b400443b15ce3350278ad46fff6") @@ -66,18 +65,6 @@ def configure_args(self): spec = self.spec args = super().configure_args() - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("+ilp64"): args.append("--blas-int-size=64") @@ -125,3 +112,12 @@ def create_symlink(self): os.symlink("libblis-mt.a", "libblis.a") if os.path.isfile("libblis-mt.so"): os.symlink("libblis-mt.so", "libblis.so") + + @property + def libs(self): + return find_libraries( + ["libblis"] if self.spec.satisfies("threads=none") else ["libblis-mt"], + root=self.prefix, + shared=self.spec.satisfies("libs=shared"), + recursive=True, + ) diff --git a/var/spack/repos/builtin/packages/amdfftw/package.py b/var/spack/repos/builtin/packages/amdfftw/package.py index f508c4162b6123..56089c214b8374 100644 --- a/var/spack/repos/builtin/packages/amdfftw/package.py +++ b/var/spack/repos/builtin/packages/amdfftw/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.build_environment import optimization_flags from spack.package import * from spack.pkg.builtin.fftw import FftwBase @@ -43,10 +41,11 @@ class Amdfftw(FftwBase): license("GPL-2.0-only") version( - "4.2", - sha256="391ef7d933e696762e3547a35b58ab18d22a6cf3e199c74889bcf25a1d1fc89b", + "5.0", + sha256="bead6c08309a206f8a6258971272affcca07f11eb57b5ecd8496e2e7e3ead877", preferred=True, ) + version("4.2", sha256="391ef7d933e696762e3547a35b58ab18d22a6cf3e199c74889bcf25a1d1fc89b") version("4.1", sha256="f1cfecfcc0729f96a5bd61c6b26f3fa43bb0662d3fff370d4f73490c60cf4e59") version("4.0", sha256="5f02cb05f224bd86bd88ec6272b294c26dba3b1d22c7fb298745fd7b9d2271c0") version("3.2", sha256="31cab17a93e03b5b606e88dd6116a1055b8f49542d7d0890dbfcca057087b8d0") @@ -158,6 +157,13 @@ class Amdfftw(FftwBase): requires("target=x86_64:", msg="AMD FFTW available only on x86_64") + def flag_handler(self, name, flags): + (flags, _, _) = super().flag_handler(name, flags) + if name == "cflags": + if self.spec.satisfies("%gcc@14:"): + flags.append("-Wno-incompatible-pointer-types") + return (flags, None, None) + def configure(self, spec, prefix): """Configure function""" # Base options @@ -175,18 +181,6 @@ def configure(self, spec, prefix): options.append("FC={0}".format(os.path.basename(spack_fc))) options.append("F77={0}".format(os.path.basename(spack_fc))) - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("+debug"): options.append("--enable-debug") diff --git a/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch b/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch new file mode 100644 index 00000000000000..579d2e6720093f --- /dev/null +++ b/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch @@ -0,0 +1,29 @@ +diff -Naru a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2024-02-26 18:26:37.000000000 +0000 ++++ b/CMakeLists.txt 2024-03-19 20:48:44.099094687 +0000 +@@ -1197,3 +1197,12 @@ + PROPERTY ADDITIONAL_CLEAN_FILES + ${CMAKE_SOURCE_DIR}/build/FLA_config.h ${CMAKE_SOURCE_DIR}/include/ + ) ++ ++# pkgconfig file ++set (prefix ${CMAKE_INSTALL_PREFIX}) ++set (VERSION 4.2) ++configure_file (flame.pc.in flame.pc @ONLY) ++install (FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/flame.pc ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig ++ COMPONENT Development) +diff -Naru a/flame.pc.in b/flame.pc.in +--- a/flame.pc.in 1970-01-01 00:00:00.000000000 +0000 ++++ b/flame.pc.in 2024-03-19 20:48:51.112058421 +0000 +@@ -0,0 +1,9 @@ ++prefix=@prefix@ ++libdir=${prefix}/lib ++includedir=${prefix}/include ++ ++Name: libFLAME ++Description: AMD-optimized libFLAME library ++Version: @VERSION@ ++Libs: -L${libdir} -lflame ++Cflags: -I${includedir} diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py index 2fed863a23bbfd..d74fc4be911a12 100644 --- a/var/spack/repos/builtin/packages/amdlibflame/package.py +++ b/var/spack/repos/builtin/packages/amdlibflame/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ----------------------------------------------------------------------------\ -from llnl.util import tty - import spack.build_systems.autotools import spack.build_systems.cmake from spack.package import * @@ -49,11 +47,13 @@ class Amdlibflame(CMakePackage, LibflameBase): maintainers("amd-toolchain-support") license("BSD-3-Clause") + version( - "4.2", - sha256="93a433c169528ffba74a99df0ba3ce3d5b1fab9bf06ce8d2fd72ee84768ed84c", + "5.0", + sha256="3bee3712459a8c5bd728a521d8a4c8f46735730bf35d48c878d2fc45fc000918", preferred=True, ) + version("4.2", sha256="93a433c169528ffba74a99df0ba3ce3d5b1fab9bf06ce8d2fd72ee84768ed84c") version("4.1", sha256="8aed69c60d11cc17e058cabcb8a931cee4f343064ade3e73d3392b7214624b61") version("4.0", sha256="bcb05763aa1df1e88f0da5e43ff86d956826cbea1d9c5ff591d78a3e091c66a4") version("3.2", sha256="6b5337fb668b82d0ed0a4ab4b5af4e2f72e4cedbeeb4a8b6eb9a3ef057fb749a") @@ -67,13 +67,6 @@ class Amdlibflame(CMakePackage, LibflameBase): depends_on("fortran", type="build") # generated variant("ilp64", default=False, when="@3.0.1: ", description="Build with ILP64 support") - variant( - "enable-aocl-blas", - default=False, - when="@4.1.0:", - description="Enables tight coupling with AOCL-BLAS library in order to use AOCL-BLAS\ - internal routines", - ) variant( "vectorization", default="auto", @@ -94,7 +87,7 @@ class Amdlibflame(CMakePackage, LibflameBase): # Required dependencies with when("build_system=cmake"): generator("make") - depends_on("cmake@3.15.0:", type="build") + depends_on("cmake@3.22:", type="build") conflicts("threads=pthreads", msg="pthread is not supported") conflicts("threads=openmp", when="@:3", msg="openmp is not supported by amdlibflame < 4.0") @@ -103,12 +96,14 @@ class Amdlibflame(CMakePackage, LibflameBase): patch("aocc-2.2.0.patch", when="@:2", level=1) patch("cray-compiler-wrapper.patch", when="@:3.0.0", level=1) patch("supermat.patch", when="@4.0:4.1", level=1) + patch("libflame-pkgconfig.patch", when="@4.2") provides("flame@5.2", when="@2:") depends_on("python+pythoncmd", type="build") depends_on("gmake@4:", when="@3.0.1,3.1:", type="build") - for vers in ["4.1", "4.2"]: + + for vers in ["4.1", "4.2", "5.0"]: with when(f"@{vers}"): depends_on(f"aocl-utils@{vers}") @@ -128,9 +123,14 @@ def libs(self): def flag_handler(self, name, flags): if name == "cflags": + if ( + self.spec.satisfies("%clang@16:") + or self.spec.satisfies("%aocc@4.1.0:") + or self.spec.satisfies("%gcc@14:") + ): + flags.append("-Wno-implicit-function-declaration") if self.spec.satisfies("%clang@16:") or self.spec.satisfies("%aocc@4.1.0:"): flags.append("-Wno-error=incompatible-function-pointer-types") - flags.append("-Wno-implicit-function-declaration") flags.append("-Wno-sometimes-uninitialized") if name == "ldflags": if self.spec.satisfies("^aocl-utils~shared"): @@ -153,10 +153,13 @@ def cmake_args(self): else: args.append(self.define("ENABLE_AMD_FLAGS", True)) + if spec.satisfies("threads=none"): + args.append(self.define("ENABLE_MULTITHREADING", False)) + if spec.satisfies("@3.0.1: +ilp64"): args.append(self.define("ENABLE_ILP64", True)) - if spec.satisfies("@4.1.0: +enable-aocl-blas"): + if spec.satisfies("@4.2: ^[virtuals=blas] amdblis"): args.append(self.define("ENABLE_AOCL_BLAS", True)) args.append("-DAOCL_ROOT:PATH={0}".format(spec["blas"].prefix)) @@ -170,6 +173,8 @@ def cmake_args(self): else: args.append(self.define("LF_ISA_CONFIG", spec.variants["vectorization"].value)) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + return args @@ -179,18 +184,6 @@ def configure_args(self): args = self.pkg.configure_args() spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - # From 3.2 version, amd optimized flags are encapsulated under: # enable-amd-aocc-flags for AOCC compiler # enable-amd-flags for all other compilers diff --git a/var/spack/repos/builtin/packages/amdlibm/package.py b/var/spack/repos/builtin/packages/amdlibm/package.py index 4ec7cd850c7d6b..f1d194f535bf48 100644 --- a/var/spack/repos/builtin/packages/amdlibm/package.py +++ b/var/spack/repos/builtin/packages/amdlibm/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * @@ -28,16 +26,17 @@ class Amdlibm(SConsPackage): _name = "amdlibm" homepage = "https://www.amd.com/en/developer/aocl/libm.html" git = "https://github.com/amd/aocl-libm-ose.git" - url = "https://github.com/amd/aocl-libm-ose/archive/refs/tags/3.0.tar.gz" + url = "https://github.com/amd/aocl-libm-ose/archive/3.0.tar.gz" maintainers("amd-toolchain-support") license("BSD-3-Clause") version( - "4.2", - sha256="58847b942e998b3f52eb41ae26403c7392d244fcafa707cbf23165aac24edd9e", + "5.0", + sha256="ba1d50c068938c9a927e37e5630f683b6149d7d5a95efffeb76e7c9a8bcb2b5e", preferred=True, ) + version("4.2", sha256="58847b942e998b3f52eb41ae26403c7392d244fcafa707cbf23165aac24edd9e") version("4.1", sha256="5bbbbc6bc721d9a775822eab60fbc11eb245e77d9f105b4fcb26a54d01456122") version("4.0", sha256="038c1eab544be77598eccda791b26553d3b9e2ee4ab3f5ad85fdd2a77d015a7d") version("3.2", sha256="c75b287c38a3ce997066af1f5c8d2b19fc460d5e56678ea81f3ac33eb79ec890") @@ -54,7 +53,7 @@ class Amdlibm(SConsPackage): depends_on("python@3.6.1:", type=("build", "run")) depends_on("scons@3.1.2:", type=("build")) depends_on("mpfr", type=("link")) - for vers in ["4.1", "4.2"]: + for vers in ["4.1", "4.2", "5.0"]: with when(f"@{vers}"): depends_on(f"aocl-utils@{vers}") @@ -66,10 +65,14 @@ class Amdlibm(SConsPackage): patch("libm-ose-SconsSpack.patch", when="@3.1:4.2") conflicts("%gcc@:9.1.0", msg="Minimum supported GCC version is 9.2.0") - conflicts("%gcc@13.2.0:", msg="Maximum supported GCC version is 13.1.0") - conflicts("%clang@9.0:16.0", msg="supported Clang version is from 9 to 16") + conflicts("%clang@:9.0", msg="Minimum supported Clang version is 9") + conflicts("%clang@17.0.0:", msg="Maximum supported Clang version is 17.0.0") + conflicts("%gcc@14.3.0:", msg="Maximum supported GCC version is 14.2.0") conflicts("%aocc@3.2.0", msg="dependency on python@3.6.2") + def patch(self): + filter_file("14.1", "14.2", "scripts/site_scons/alm/check.py") + def build_args(self, spec, prefix): """Setting build arguments for amdlibm""" args = [f"-j{determine_number_of_jobs(parallel=True)}", f"--prefix={prefix}"] @@ -77,18 +80,6 @@ def build_args(self, spec, prefix): if self.spec.satisfies("@4.1: "): args.append("--aocl_utils_install_path={0}".format(self.spec["aocl-utils"].prefix)) - if not ( - self.spec.satisfies(r"%aocc@3.2:4.2") - or self.spec.satisfies(r"%gcc@12.2:13.1") - or self.spec.satisfies(r"%clang@15:16") - ): - tty.warn( - "AOCL has been tested to work with the following compilers\ - versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:16\ - see the following aocl userguide for details: \ - https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - # we are circumventing the use of # Spacks compiler wrappers because # SCons wipes out all environment variables. diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py index 5f25811f6f451e..52736eb2fabba1 100644 --- a/var/spack/repos/builtin/packages/amdscalapack/package.py +++ b/var/spack/repos/builtin/packages/amdscalapack/package.py @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from llnl.util import tty - from spack.package import * from spack.pkg.builtin.netlib_scalapack import ScalapackBase @@ -34,10 +32,11 @@ class Amdscalapack(ScalapackBase): license("BSD-3-Clause-Open-MPI") version( - "4.2", - sha256="c6e9a846c05cdc05252b0b5f264164329812800bf13f9d97c77114dc138e6ccb", + "5.0", + sha256="a33cf16c51cfd65c7acb5fbdb8884a5c147cdefea73931b07863c56d54f812cc", preferred=True, ) + version("4.2", sha256="c6e9a846c05cdc05252b0b5f264164329812800bf13f9d97c77114dc138e6ccb") version("4.1", sha256="b2e51c3604e5869d1faaef2e52c92071fcb3de1345aebb2ea172206622067ad9") version("4.0", sha256="f02913b5984597b22cdb9a36198ed61039a1bf130308e778dc31b2a7eb88b33b") version("3.2", sha256="9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892") @@ -47,18 +46,27 @@ class Amdscalapack(ScalapackBase): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("amdblis", when="^[virtuals=blas] amdblis") + depends_on("amdlibflame", when="^[virtuals=lapack] amdlibflame") variant("ilp64", default=False, description="Build with ILP64 support") conflicts("+ilp64", when="@:3.0", msg="ILP64 is supported from 3.1 onwards") requires("target=x86_64:", msg="AMD scalapack available only on x86_64") - patch("clang-hollerith.patch", when="%clang@16:") + patch("clang-hollerith.patch", when="@=4.0 %clang@16:") def patch(self): # Flang-New gets confused and thinks it finds Hollerith constants if self.spec.satisfies("%clang@16:"): filter_file("-cpp", "", "CMakeLists.txt") + # remove the C-style comments in header file that cause issues with flang + if self.spec.satisfies("@4.2: %clang@18:"): + which("sed")( + "-i", + "1,23d", + join_path(self.stage.source_path, "FRAMEWORK", "SL_Context_fortran_include.h"), + ) def url_for_version(self, version): vers = "https://github.com/amd/{0}/archive/{1}.tar.gz" @@ -67,28 +75,29 @@ def url_for_version(self, version): else: return vers.format("scalapack", version) + def flag_handler(self, name, flags): + (flags, _, _) = super().flag_handler(name, flags) + # remove a flag set in ScalapackBase that is not working + if self.spec.satisfies("%gcc@14:"): + if "-std=gnu89" in flags: + flags.remove("-std=gnu89") + return (flags, None, None) + def cmake_args(self): """cmake_args function""" args = super().cmake_args() spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("%gcc@10:"): args.extend(["-DCMAKE_Fortran_FLAGS={0}".format("-fallow-argument-mismatch")]) if spec.satisfies("%clang@16:"): - args.extend(["-DCMAKE_Fortran_FLAGS={0}".format("-cpp -fno-implicit-none")]) + flags = "-cpp -fno-implicit-none" + if spec.satisfies("%clang@18"): + flags += " -flang-experimental-polymorphism" + if spec.satisfies("%clang@18:"): + flags += " -I{0}".format(join_path(self.stage.source_path, "FRAMEWORK")) + args.extend(["-DCMAKE_Fortran_FLAGS={0}".format(flags)]) if spec.satisfies("@2.2"): args.extend( @@ -110,6 +119,8 @@ def cmake_args(self): c_flags.append("-Wno-deprecated-non-prototype") c_flags.append("-Wno-incompatible-pointer-types") args.append(self.define("CMAKE_C_FLAGS", " ".join(c_flags))) + elif self.spec.satisfies("%gcc@14:"): + args.append(self.define("CMAKE_C_FLAGS", "-Wno-incompatible-pointer-types")) # link libflame library args.extend(["-DLAPACK_LIBRARIES={0}".format(self.spec["lapack"].libs)]) @@ -117,6 +128,7 @@ def cmake_args(self): args.extend( [ "-DLAPACK_FOUND=true", + "-DUSE_OPTIMIZED_LAPACK_BLAS=true", "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc, "-DCMAKE_Fortran_COMPILER=%s" % spec["mpi"].mpifc, ] diff --git a/var/spack/repos/builtin/packages/aocl-compression/package.py b/var/spack/repos/builtin/packages/aocl-compression/package.py index b40854b23f7320..eb0d1c6c9a24c4 100644 --- a/var/spack/repos/builtin/packages/aocl-compression/package.py +++ b/var/spack/repos/builtin/packages/aocl-compression/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -41,15 +39,16 @@ class AoclCompression(CMakePackage): _name = "aocl-compression" homepage = "https://www.amd.com/en/developer/aocl/compression.html" git = "https://github.com/amd/aocl-compression.git" - url = "https://github.com/amd/aocl-compression/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-compression/archive/4.2.tar.gz" maintainers("amd-toolchain-support") version( - "4.2", - sha256="a18b3e7f64a8105c1500dda7b4c343e974b5e26bfe3dd838a1c1acf82a969c6f", + "5.0", + sha256="50bfb2c4a4738b96ed6d45627062b17bb9d0e1787c7d83ead2841da520327fa4", preferred=True, ) + version("4.2", sha256="a18b3e7f64a8105c1500dda7b4c343e974b5e26bfe3dd838a1c1acf82a969c6f") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -67,28 +66,25 @@ class AoclCompression(CMakePackage): default=False, description="openmp based multi-threaded compression and decompression", ) + variant( + "decompress_fast", + default="OFF", + values=("OFF", "1", "2"), + description="Enable fast decompression modes", + multi=False, + ) + variant("enable_fast_math", default=False, description="Enable fast-math optimizations") - depends_on("cmake@3.15:", type="build") + depends_on("cmake@3.22:", type="build") def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec args = [] - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [ self.define_from_variant("AOCL_ENABLE_THREADS", "openmp"), + self.define_from_variant("ENABLE_FAST_MATH", "enable_fast_math"), "-DLZ4_FRAME_FORMAT_SUPPORT=ON", "-DAOCL_LZ4HC_DISABLE_PATTERN_ANALYSIS=ON", ] @@ -109,4 +105,5 @@ def cmake_args(self): if spec.satisfies("~lz4hc"): args.append("-DAOCL_EXCLUDE_LZ4HC=ON") + args.append("-DAOCL_DECOMPRESS_FAST={}".format(spec.variants["decompress_fast"].value)) return args diff --git a/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch b/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch new file mode 100644 index 00000000000000..6043876c41db6a --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch @@ -0,0 +1,153 @@ +diff --git a/cmake/CompilerLinux.cmake b/cmake/CompilerLinux.cmake +index f54bea37..8541e343 100644 +--- a/cmake/CompilerLinux.cmake ++++ b/cmake/CompilerLinux.cmake +@@ -32,22 +32,11 @@ function(alcp_get_build_environment) + set (ALCP_BUILD_COMPILER "Clang_v${CMAKE_CXX_COMPILER_VERSION}") + endif() + +- # uses lsb_release utility on linux, as cmake doesnt have a variable which has the Linux flavor information +- find_program(LSB_RELEASE_EXEC lsb_release) +- if(NOT LSB_RELEASE_EXEC) +- MESSAGE(FATAL_ERROR "LSB Release is missing from the machine, please install lsb_release!") +- endif() +- execute_process(COMMAND ${LSB_RELEASE_EXEC} -r -s +- OUTPUT_VARIABLE OS_VERSION +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- execute_process(COMMAND ${LSB_RELEASE_EXEC} -i -s +- OUTPUT_VARIABLE OS_VENDOR +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- ++ cmake_host_system_information(RESULT OS_VERSION QUERY DISTRIB_PRETTY_NAME) ++ message(STATUS "OS Information: ${OS_VERSION}") ++ + # final build env string will contain compiler and system environment details where the binary was created +- set (ALCP_BUILD_ENV ${ALCP_BUILD_COMPILER}_${OS_VENDOR}_${OS_VERSION} PARENT_SCOPE) ++ set (ALCP_BUILD_ENV ${ALCP_BUILD_COMPILER}_${OS_VERSION} PARENT_SCOPE) + endfunction(alcp_get_build_environment) + + +diff --git a/docs/resources/Quick_Start.md b/docs/resources/Quick_Start.md +index 17bc025a..278a3d1f 100644 +--- a/docs/resources/Quick_Start.md ++++ b/docs/resources/Quick_Start.md +@@ -141,47 +141,6 @@ AOCL_CRYPTO_REPO="https://github.com/amd/aocl-crypto.git" + AOCL_UTILS_REPO="https://github.com/amd/aocl-utils.git" + AOCL_BRANCH="amd-main" + +-# Function to check if lsb_release is installed +-ensure_lsb_release(){ +- if ! type "lsb_release" > /dev/null; then +- if type "apt" > /dev/null; then +- if type "sudo" > /dev/null; then +- sudo apt update +- sudo apt install lsb-release +- else +- echo "lsb-release not found, cannot install! missing \"sudo\" binary" +- exit -1; # We cannot do anything anymore +- fi +- else +- echo "lsb-release not found, cannot install! missing \"apt\" binary" +- fi +- fi +- +- type lsb_release > /dev/null +- if [ $? -ne 0 ]; then +- echo "lsb_release not found!" +- exit -1; +- else +- echo "lsb_release found" +- fi +-} +- +-# Function to check if OS is ubuntu with a specific version +-detect_ubuntu(){ +- +- lsb_release --id | grep "Ubuntu" > /dev/null +- if [ $? -eq 0 ]; then +- # Detected Ubuntu +- echo "Detected Ubuntu" +- lsb_release --release | grep $1 > /dev/null +- if [ $? -eq 0 ]; then +- echo "Detected OS Release Version $1" +- return 0 +- fi +- fi +- return 1 # Return error +-} +- + # Function to exit with an error if some execution failed + quit_if_status_not_zero(){ + if [ $1 -ne 0 ]; then +@@ -338,8 +297,6 @@ run_example_cfb(){ + + # Make sure we dont destroy anything + ensure_no_directory_conflict +-# Make sure we can detect the OS +-ensure_lsb_release + # Make sure all the needed packages (dependancies) are installed + ensure_packages + # Clone Utils and Crypto +diff --git a/scripts/Clone_Build.sh b/scripts/Clone_Build.sh +index 89a7cd2f..1ed2f3cf 100755 +--- a/scripts/Clone_Build.sh ++++ b/scripts/Clone_Build.sh +@@ -36,47 +36,6 @@ AOCL_CRYPTO_REPO="git@er.github.amd.com:AOCL/aocl-crypto" + AOCL_UTILS_REPO="git@github.amd.com:AOCL/aocl-utils" + AOCL_BRANCH="amd-main" + +-# Function to check if lsb_release is installed +-ensure_lsb_release(){ +- if ! type "lsb_release" > /dev/null; then +- if type "apt" > /dev/null; then +- if type "sudo" > /dev/null; then +- sudo apt update +- sudo apt install lsb-release +- else +- echo "lsb-release not found, cannot install! missing \"sudo\" binary" +- exit -1; # We cannot do anything anymore +- fi +- else +- echo "lsb-release not found, cannot install! missing \"apt\" binary" +- fi +- fi +- +- type lsb_release > /dev/null +- if [ $? -ne 0 ]; then +- echo "lsb_release not found!" +- exit -1; +- else +- echo "lsb_release found" +- fi +-} +- +-# Function to check if OS is ubuntu with a specific version +-detect_ubuntu(){ +- +- lsb_release --id | grep "Ubuntu" > /dev/null +- if [ $? -eq 0 ]; then +- # Detected Ubuntu +- echo "Detected Ubuntu" +- lsb_release --release | grep $1 > /dev/null +- if [ $? -eq 0 ]; then +- echo "Detected OS Release Version $1" +- return 0 +- fi +- fi +- return 1 # Return error +-} +- + # Function to exit with an error if some execution failed + quit_if_status_not_zero(){ + if [ $1 -ne 0 ]; then +@@ -233,8 +192,6 @@ run_example_cfb(){ + + # Make sure we dont destroy anything + ensure_no_directory_conflict +-# Make sure we can detect the OS +-ensure_lsb_release + # Make sure all the needed packages (dependancies) are installed + ensure_packages + # Clone Utils and Crypto diff --git a/var/spack/repos/builtin/packages/aocl-crypto/package.py b/var/spack/repos/builtin/packages/aocl-crypto/package.py index 65a687cb27c82f..4de7a3a439b57d 100644 --- a/var/spack/repos/builtin/packages/aocl-crypto/package.py +++ b/var/spack/repos/builtin/packages/aocl-crypto/package.py @@ -2,10 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -35,24 +32,35 @@ class AoclCrypto(CMakePackage): _name = "aocl-crypto" homepage = "https://www.amd.com/en/developer/aocl/cryptography.html" - git = "https://github.com/amd/aocl-crypto" - url = "https://github.com/amd/aocl-crypto/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-crypto/archive/4.2.tar.gz" + git = "https://github.com/amd/aocl-crypto/" maintainers("amd-toolchain-support") + version( - "4.2", - sha256="2bdbedd8ab1b28632cadff237f4abd776e809940ad3633ad90fc52ce225911fe", + "5.0", + sha256="b15e609943f9977e13f2d5839195bb7411c843839a09f0ad47f78f57e8821c23", preferred=True, ) + version("4.2", sha256="2bdbedd8ab1b28632cadff237f4abd776e809940ad3633ad90fc52ce225911fe") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated variant("examples", default=False, description="Build examples") + variant("ipp", default=False, description="Build Intel IPP library") + + # Removed dependency on lsb_release + patch( + "lsb_release.patch", + sha256="b61d6d2518276c56d37e8c64d18488081af70f29a62f315ecbd23664e0e440b9", + when="@5.0", + ) - depends_on("cmake@3.15:", type="build") - depends_on("openssl@3.0.0:") + depends_on("cmake@3.22:", type="build") + depends_on("openssl@3.1.5:") + depends_on("intel-oneapi-ippcp@2021.12.0:", when="+ipp") depends_on("p7zip", type="build") - for vers in ["4.2"]: + for vers in ["4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"aocl-utils@={vers}") @@ -75,22 +83,22 @@ def build_directory(self): def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - - args = ["-DCMAKE_C_COMPILER=%s" % spack_cc, "-DCMAKE_CXX_COMPILER=%s" % spack_cxx] - args.append(self.define_from_variant("ALCP_ENABLE_EXAMPLES", "examples")) - args.append("-DOPENSSL_INSTALL_DIR=" + spec["openssl"].prefix) - args.append("-DENABLE_AOCL_UTILS=ON") - args.append("-DAOCL_UTILS_INSTALL_DIR=" + spec["aocl-utils"].prefix) + + args = [ + self.define_from_variant("ALCP_ENABLE_EXAMPLES", "examples"), + self.define("ENABLE_AOCL_UTILS", True), + self.define("AOCL_UTILS_INSTALL_DIR", spec["aocl-utils"].prefix), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + self.define("ALCP_ENABLE_DYNAMIC_COMPILER_PICK", False), + ] + + compat_libs = ["openssl"] + args.append(self.define("OPENSSL_INSTALL_DIR", spec["openssl"].prefix)) + + if "+ipp" in spec: + compat_libs.append("ipp") + args.append(self.define("IPP_INSTALL_DIR", spec["intel-oneapi-ippcp"].prefix)) + + args.append(self.define("AOCL_COMPAT_LIBS", ",".join(compat_libs))) return args diff --git a/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch b/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch new file mode 100644 index 00000000000000..95fbe82b44d044 --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch @@ -0,0 +1,27 @@ +From 961ce9edbba7e18eca97cf3725515e627bbe39e1 Mon Sep 17 00:00:00 2001 +From: Edvin Hopkins +Date: Wed, 16 Oct 2024 11:38:28 +0100 +Subject: [PATCH] Fix to enable cmake to be configured with examples off but + gtests on + +--- + tests/unit_tests/CMakeLists.txt | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt +index e5e05c6..e479c7d 100644 +--- a/tests/unit_tests/CMakeLists.txt ++++ b/tests/unit_tests/CMakeLists.txt +@@ -107,9 +107,6 @@ add_executable(kmeans_tests kmeans_tests.cpp) + add_executable(nlls_tests nlls_tests.cpp) + + add_executable(pca_tests pca_tests.cpp) +-target_compile_definitions( +- pca +- PRIVATE DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/../data/factorization_data/") + target_link_libraries(pca_tests PRIVATE ${BLAS}) + + add_executable(data data_tests.cpp) +-- +2.34.1 + diff --git a/var/spack/repos/builtin/packages/aocl-da/package.py b/var/spack/repos/builtin/packages/aocl-da/package.py new file mode 100644 index 00000000000000..067cb8d03d89cb --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-da/package.py @@ -0,0 +1,130 @@ +# 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 + +from spack.package import * +from spack.util.environment import EnvironmentModifications + + +class AoclDa(CMakePackage): + """ + The AOCL Data Analytics Library (AOCL-DA) is a data analytics library + providing optimized building blocks for data analysis. It is written with a + C-compatible interface to make it as seamless as possible to integrate + with the library from whichever programming language you are using. + The intended workflow for using the library is as follows: + • load data from memory by reading CSV files or using the in-built + da_datastore object + • preprocess the data by removing missing values, standardizing, and + selecting certain subsets of the data, before extracting contiguous + arrays of data from the da_datastore objects + • data processing (e.g. principal component analysis, linear model + fitting, etc.) + C++ example programs can be found in the examples folder of your + installation. + """ + + _name = "aocl-da" + homepage = "https://www.amd.com/en/developer/aocl/data-analytics.html" + git = "https://github.com/amd/aocl-data-analytics" + url = "https://github.com/amd/aocl-data-analytics/archive/5.0.tar.gz" + + maintainers("amd-toolchain-support") + + version("5.0", sha256="3458adc7be39c78a08232c887f32838633149df0a69ccea024327c3edc5a5c1d") + + variant("examples", default=True, description="Build examples") + variant("gtest", default=False, description="Build and install Googletest") + variant("ilp64", default=False, description="Build with ILP64 support") + variant( + "openmp", + default=True, + description="Build using OpenMP and link to threaded BLAS and LAPACK", + ) + variant("shared", default=True, description="Build shared libraries") + variant("python", default=True, description="Build with Python bindings") + + # Fix to enable cmake to be configured with examples off but gtest on + patch( + "0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch", + sha256="65be59e99d52816cb77d3e887cd4816870576b46748b53073658caa9ca07d127", + when="@5.0", + ) + + depends_on("cmake@3.22:", type="build") + for vers in ["5.0"]: + with when(f"@={vers}"): + depends_on(f"aocl-utils@={vers} +shared", when="+shared") + depends_on(f"aocl-utils@={vers} ~shared", when="~shared") + depends_on(f"amdblis@={vers} libs=shared", when="+shared") + depends_on(f"amdblis@={vers} libs=static", when="~shared") + depends_on(f"amdlibflame@={vers} +shared", when="+shared") + depends_on(f"amdlibflame@={vers} ~shared", when="~shared") + depends_on(f"aocl-sparse@={vers} +shared", when="+shared") + depends_on(f"aocl-sparse@={vers} ~shared", when="~shared") + + depends_on("amdblis threads=openmp", when="+openmp") + depends_on("amdlibflame threads=openmp", when="+openmp") + depends_on("amdblis threads=none", when="~openmp") + depends_on("amdlibflame threads=none", when="~openmp") + depends_on("aocl-sparse +openmp", when="+openmp") + depends_on("aocl-sparse ~openmp", when="~openmp") + + with when("+python"): + depends_on("python", type=("build", "run")) + depends_on("py-wheel", type=("build", "run")) + depends_on("py-setuptools", type=("build", "run")) + depends_on("py-pybind11", type=("build", "link", "run")) + depends_on("py-numpy", type=("build", "run")) + depends_on("py-pip", type=("build", "run")) + depends_on("patchelf", type="build") + depends_on("py-pytest", type="test") + depends_on("py-scikit-learn", type=("test", "run")) + + def setup_build_environment(self, env): + if self.spec.satisfies("%aocc"): + cc = self.compiler.cc + compiler_install_dir = os.path.dirname(os.path.dirname(cc)) + env.append_path("LD_LIBRARY_PATH", join_path(compiler_install_dir, "lib")) + + def setup_run_environment(self, env): + env.prepend_path("PYTHONPATH", join_path(self.prefix, "python_package")) + + def cmake_args(self): + """Runs ``cmake`` in the build directory""" + spec = self.spec + args = [] + args.append(f"-DUTILS_LIB={spec['aocl-utils'].libs}") + args.append(f"-DUTILS_CPUID_LIB={spec['aocl-utils'].libs}") + args.append(f"-DUTILS_CORE_LIB={spec['aocl-utils'].libs}") + args.append(f"-DBLAS_LIB={spec['amdblis'].libs}") + args.append("-DBLAS_INCLUDE_DIR={0}/blis".format(spec["amdblis"].prefix.include)) + args.append(f"-DLAPACK_LIB={spec['amdlibflame'].libs}") + args.append("-DLAPACK_INCLUDE_DIR={0}".format(spec["amdlibflame"].prefix.include)) + args.append(f"-DSPARSE_LIB={spec['aocl-sparse'].libs}") + args.append("-DSPARSE_INCLUDE_DIR={0}".format(spec["aocl-sparse"].prefix.include)) + args.append(self.define_from_variant("BUILD_EXAMPLES", "examples")) + args.append(self.define_from_variant("BUILD_GTEST", "gtest")) + args.append(self.define_from_variant("BUILD_ILP64", "ilp64")) + args.append(self.define_from_variant("BUILD_SMP", "openmp")) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("BUILD_PYTHON", "python")) + + return args + + @run_after("install") + @on_package_attributes(run_tests=True) + def test_python(self): + """Perform smoke tests on the installed package.""" + pytest = which("pytest") + envmod = EnvironmentModifications() + envmod.append_path("PYTHONPATH", join_path(self.prefix, "python_package")) + pytest.add_default_envmod(envmod) + pytest( + join_path( + install_test_root(self), join_path(self.stage.source_path, "python_interface") + ) + ) diff --git a/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch b/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch new file mode 100644 index 00000000000000..733ef7c048c5a6 --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch @@ -0,0 +1,46 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 74b7bd8..d787a7d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,7 +32,7 @@ endif() + # set the project name and version + set(LIBMEM_VERSION_STRING 5.0) + +-project(aocl-libmem VERSION ${LIBMEM_VERSION_STRING} LANGUAGES C DESCRIPTION ++project(aocl-libmem VERSION ${LIBMEM_VERSION_STRING} LANGUAGES C CXX DESCRIPTION + "Library of AMD optimized string/memory functions") + + string(TIMESTAMP BUILD_DATE "%Y%m%d") +@@ -45,7 +45,7 @@ add_definitions(-DLIBMEM_BUILD_VERSION="${LIBMEM_BUILD_VERSION_STR}") + set(DEFAULT_BUILD_TYPE "Release") + + set(CMAKE_C_STANDARD 99) +- ++set(CMAKE_CXX_STANDARD 17) + option(ENABLE_LOGGING "Enable Logger" OFF) + + option(ENABLE_TUNABLES "Enable user input" OFF) +@@ -100,6 +100,22 @@ endif () + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src) + + # let the build system know the tools directory +-add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools) ++include(CheckCXXSourceRuns) ++check_cxx_source_runs(" ++#include ++int main() { ++ unsigned int eax, ebx, ecx, edx; ++ if (__get_cpuid(0, &eax, &ebx, &ecx, &edx)) { ++ // The 'AuthenticAMD' string is EBX, EDX, ECX after calling cpuid with eax=0 ++ if (ebx == 0x68747541 && edx == 0x69746E65 && ecx == 0x444D4163) { ++ return 0; // AMD CPU detected ++ } ++ } ++ return 1; // Non-AMD CPU ++} ++" AMD_Tools) ++if(AMD_Tools) ++ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools) ++endif() + + file(WRITE ${CMAKE_BINARY_DIR}/version.h ${LIBMEM_BUILD_VERSION_STR}) diff --git a/var/spack/repos/builtin/packages/aocl-libmem/package.py b/var/spack/repos/builtin/packages/aocl-libmem/package.py index c01365db7dd717..d01693622556fb 100644 --- a/var/spack/repos/builtin/packages/aocl-libmem/package.py +++ b/var/spack/repos/builtin/packages/aocl-libmem/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -31,15 +29,16 @@ class AoclLibmem(CMakePackage): _name = "aocl-libmem" homepage = "https://www.amd.com/en/developer/aocl/libmem.html" git = "https://github.com/amd/aocl-libmem" - url = "https://github.com/amd/aocl-libmem/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-libmem/archive/4.2.tar.gz" maintainers("amd-toolchain-support") version( - "4.2", - sha256="4ff5bd8002e94cc2029ef1aeda72e7cf944b797c7f07383656caa93bcb447569", + "5.0", + sha256="d3148db1a57fec4f3468332c775cade356e8133bf88385991964edd7534b7e22", preferred=True, ) + version("4.2", sha256="4ff5bd8002e94cc2029ef1aeda72e7cf944b797c7f07383656caa93bcb447569") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -55,7 +54,14 @@ class AoclLibmem(CMakePackage): multi=False, ) - depends_on("cmake@3.15:", type="build") + # validator needs to be built only for AuthenticAMD targets + patch( + "cmake.patch", + sha256="43453a83f322de7c89264439b2e9cbde855e50f550e13ebc884d13d959002092", + when="@5.0", + ) + + depends_on("cmake@3.22:", type="build") @property def libs(self): @@ -67,18 +73,6 @@ def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [] args.append(self.define_from_variant("ENABLE_LOGGING", "logging")) args.append(self.define_from_variant("ENABLE_TUNABLES", "tunables")) diff --git a/var/spack/repos/builtin/packages/aocl-sparse/package.py b/var/spack/repos/builtin/packages/aocl-sparse/package.py index 7d37966e25788c..eb438a130c5bf3 100644 --- a/var/spack/repos/builtin/packages/aocl-sparse/package.py +++ b/var/spack/repos/builtin/packages/aocl-sparse/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * @@ -33,10 +31,11 @@ class AoclSparse(CMakePackage): license("MIT") version( - "4.2", - sha256="03cd67adcfea4a574fece98b60b4aba0a6e5a9c8f608ff1ccc1fb324a7185538", + "5.0", + sha256="7528970f41ae60563df9fe1f8cc74a435be1566c01868a603ab894e9956c3c94", preferred=True, ) + version("4.2", sha256="03cd67adcfea4a574fece98b60b4aba0a6e5a9c8f608ff1ccc1fb324a7185538") version("4.1", sha256="35ef437210bc25fdd802b462eaca830bfd928f962569b91b592f2866033ef2bb") version("4.0", sha256="68524e441fdc7bb923333b98151005bed39154d9f4b5e8310b5c37de1d69c2c3") version("3.2", sha256="db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f") @@ -58,16 +57,29 @@ class AoclSparse(CMakePackage): when="@4.0: target=zen4:", description="Enable experimental AVX512 support", ) + variant("openmp", default=True, when="@4.2:", description="Enable OpenMP support") - for vers in ["4.1", "4.2"]: + for vers in ["4.1", "4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"amdblis@={vers}") depends_on(f"amdlibflame@={vers}") if Version(vers) >= Version("4.2"): depends_on(f"aocl-utils@={vers}") + + depends_on("amdblis threads=openmp", when="+openmp") + depends_on("amdlibflame threads=openmp", when="+openmp") + depends_on("amdblis threads=none", when="~openmp") + depends_on("amdlibflame threads=none", when="~openmp") depends_on("boost", when="+benchmarks") depends_on("boost", when="@2.2") - depends_on("cmake@3.15:", type="build") + depends_on("cmake@3.22:", type="build") + + @property + def libs(self): + """find libaoclsparse libs function""" + return find_libraries( + "libaoclsparse", root=self.prefix, shared="+shared" in self.spec, recursive=True + ) @property def build_directory(self): @@ -89,18 +101,6 @@ def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [] args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) args.append(self.define_from_variant("BUILD_CLIENTS_SAMPLES", "examples")) @@ -111,21 +111,19 @@ def cmake_args(self): if spec.satisfies("@3.0:"): args.append(self.define_from_variant("BUILD_ILP64", "ilp64")) - if self.spec.satisfies("@4.1:"): + if spec.satisfies("@4.0:"): args.append(f"-DAOCL_BLIS_LIB={self.spec['amdblis'].libs}") + args.append("-DAOCL_BLIS_INCLUDE_DIR={0}/blis".format(spec["amdblis"].prefix.include)) + args.append(f"-DAOCL_LIBFLAME={spec['amdlibflame'].libs}") args.append( - "-DAOCL_BLIS_INCLUDE_DIR={0}/blis".format(self.spec["amdblis"].prefix.include) - ) - args.append(f"-DAOCL_LIBFLAME={self.spec['amdlibflame'].libs}") - args.append( - "-DAOCL_LIBFLAME_INCLUDE_DIR={0}".format(self.spec["amdlibflame"].prefix.include) + "-DAOCL_LIBFLAME_INCLUDE_DIR={0}".format(spec["amdlibflame"].prefix.include) ) - if self.spec.satisfies("@4.2:"): - args.append(f"-DAOCL_UTILS_LIB={self.spec['aocl-utils'].libs}") - args.append( - "-DAOCL_UTILS_INCLUDE_DIR={0}".format(self.spec["aocl-utils"].prefix.include) - ) + if spec.satisfies("@4.2:"): + args.append(f"-DAOCL_UTILS_LIB={spec['aocl-utils'].libs}") + args.append("-DAOCL_UTILS_INCLUDE_DIR={0}".format(spec["aocl-utils"].prefix.include)) + + args.append(self.define_from_variant("SUPPORT_OMP", "openmp")) return args diff --git a/var/spack/repos/builtin/packages/aocl-utils/package.py b/var/spack/repos/builtin/packages/aocl-utils/package.py index 693228ba9adec3..343b4eb11ebf4c 100644 --- a/var/spack/repos/builtin/packages/aocl-utils/package.py +++ b/var/spack/repos/builtin/packages/aocl-utils/package.py @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from llnl.util import tty - from spack.package import * @@ -38,10 +36,11 @@ class AoclUtils(CMakePackage): license("BSD-3-Clause") version( - "4.2", - sha256="1294cdf275de44d3a22fea6fc4cd5bf66260d0a19abb2e488b898aaf632486bd", + "5.0", + sha256="ee2e5d47f33a3f673b3b6fcb88a7ef1a28648f407485ad07b6e9bf1b86159c59", preferred=True, ) + version("4.2", sha256="1294cdf275de44d3a22fea6fc4cd5bf66260d0a19abb2e488b898aaf632486bd") version("4.1", sha256="660746e7770dd195059ec25e124759b126ee9f060f43302d13354560ca76c02c") depends_on("cxx", type="build") # generated @@ -51,6 +50,7 @@ class AoclUtils(CMakePackage): variant("shared", default=True, when="@4.2:", description="build shared library") variant("examples", default=False, description="enable examples") + depends_on("cmake@3.22:", type="build") depends_on("doxygen", when="+doc") @property @@ -60,23 +60,26 @@ def libs(self): return find_libraries("libaoclutils", root=self.prefix, recursive=True, shared=shared) def cmake_args(self): - spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" + args = [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + ] + + if self.spec.satisfies("@5.0:"): + args.extend( + [ + self.define_from_variant("AU_BUILD_DOCS", "doc"), + self.define_from_variant("AU_BUILD_TESTS", "tests"), + self.define_from_variant("AU_BUILD_EXAMPLES", "examples"), + ] + ) + else: + args.extend( + [ + self.define_from_variant("ALCI_DOCS", "doc"), + self.define_from_variant("ALCI_TESTS", "tests"), + self.define_from_variant("ALCI_EXAMPLES", "examples"), + ] ) - - args = [] - args.append(self.define_from_variant("ALCI_DOCS", "doc")) - args.append(self.define_from_variant("ALCI_TESTS", "tests")) - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) - args.append(self.define_from_variant("ALCI_EXAMPLES", "examples")) return args From 9ba7af404a14e84eec8f79567a6232c06a3c8d69 Mon Sep 17 00:00:00 2001 From: Ian Lumsden Date: Thu, 17 Oct 2024 17:29:56 -0400 Subject: [PATCH 024/615] Adds variant to toggle use of rdpmc due to icl-utk-edu/papi#238 (#47023) --- var/spack/repos/builtin/packages/papi/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index b1c869f7bada03..7b22451ae2b357 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -59,6 +59,12 @@ class Papi(AutotoolsPackage, ROCmPackage): variant("cuda", default=False, description="Enable CUDA support") variant("nvml", default=False, description="Enable NVML support") variant("rocm_smi", default=False, description="Enable ROCm SMI support") + variant( + "rdpmc", + default=True, + when="@6.0.0:", + description="Enable use of rdpmc for reading counters, when possible", + ) variant("shared", default=True, description="Build shared libraries") # PAPI requires building static libraries, so there is no "static" variant @@ -159,6 +165,9 @@ def configure_args(self): build_shared = "yes" if "+shared" in spec else "no" options.append("--with-shared-lib=" + build_shared) + build_rdpmc_support = "yes" if "+rdpmc" in spec else "no" + options.append("--enable-perfevent-rdpmc=" + build_rdpmc_support) + if "+static_tools" in spec: options.append("--with-static-tools") From 580cc3c91ba1032476f0a9d540b82d6d78b252c2 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Oct 2024 03:19:25 -0500 Subject: [PATCH 025/615] curl: add v8.10.1 (fix CVE) (#46960) --- .../repos/builtin/packages/curl/package.py | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 1983a296c22273..6f362bfc6d5869 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -31,12 +31,29 @@ class Curl(NMakePackage, AutotoolsPackage): license("curl") - version("8.8.0", sha256="40d3792d38cfa244d8f692974a567e9a5f3387c547579f1124e95ea2a1020d0d") - version("8.7.1", sha256="05bbd2b698e9cfbab477c33aa5e99b4975501835a41b7ca6ca71de03d8849e76") - version("8.6.0", sha256="b4785f2d8877fa92c0e45d7155cf8cc6750dbda961f4b1a45bcbec990cf2fa9b") - version("8.4.0", sha256="e5250581a9c032b1b6ed3cf2f9c114c811fc41881069e9892d115cc73f9e88c6") + version("8.10.1", sha256="3763cd97aae41dcf41950d23e87ae23b2edb2ce3a5b0cf678af058c391b6ae31") # Deprecated versions due to CVEs + version( + "8.8.0", + sha256="40d3792d38cfa244d8f692974a567e9a5f3387c547579f1124e95ea2a1020d0d", + deprecated=True, + ) + version( + "8.7.1", + sha256="05bbd2b698e9cfbab477c33aa5e99b4975501835a41b7ca6ca71de03d8849e76", + deprecated=True, + ) + version( + "8.6.0", + sha256="b4785f2d8877fa92c0e45d7155cf8cc6750dbda961f4b1a45bcbec990cf2fa9b", + deprecated=True, + ) + version( + "8.4.0", + sha256="e5250581a9c032b1b6ed3cf2f9c114c811fc41881069e9892d115cc73f9e88c6", + deprecated=True, + ) version( "8.1.2", sha256="b54974d32fd610acace92e3df1f643144015ac65847f0a041fdc17db6f43f243", From d36452cf4e70fa1da8b9db43921850872b82ced9 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 18 Oct 2024 12:03:58 +0200 Subject: [PATCH 026/615] clingo-bootstrap: no need for setting MACOSX_DEPLOYMENT_TARGET (#47065) Turns out `os=...` of the spec and `MACOSX_DEPLOYMENT_TARGET` are kept in sync, and the env variable is used to initialize `CMAKE_MACOSX_DEPLOYMENT_TARGET`. In bootstrap code we set the env variable, so these bits are redundant. --------- Co-authored-by: haampie --- .../repos/builtin/packages/clingo-bootstrap/package.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py index 143930d651e581..4f3b8ac74a67c7 100644 --- a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py @@ -75,15 +75,7 @@ def cmake_py_shared(self): return self.define("CLINGO_BUILD_PY_SHARED", "OFF") def cmake_args(self): - args = super().cmake_args() - args.append(self.define("CLINGO_BUILD_APPS", False)) - if self.spec.satisfies("platform=darwin target=aarch64:"): - # big sur is first to support darwin-aarch64 - args.append(self.define("CMAKE_OSX_DEPLOYMENT_TARGET", "11")) - elif self.spec.satisfies("platform=darwin target=x86_64:"): - # for x86_64 use highsierra - args.append(self.define("CMAKE_OSX_DEPLOYMENT_TARGET", "10.13")) - return args + return [*super().cmake_args(), self.define("CLINGO_BUILD_APPS", False)] @run_before("cmake", when="+optimized") def pgo_train(self): From 49a8e8458852ffbca461506a857a382c2a939006 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 18 Oct 2024 15:18:34 +0200 Subject: [PATCH 027/615] pika: Add minimum CMake version requirement when using CUDA and C++20 (#47077) --- var/spack/repos/builtin/packages/pika/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index b67fc4c64cfde7..f5fe4b9727acfb 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -117,6 +117,8 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): conflicts("%clang@:8", when="@0.2:") conflicts("+stdexec", when="cxxstd=17") conflicts("cxxstd=23", when="^cmake@:3.20.2") + conflicts("cxxstd=20", when="+cuda ^cmake@:3.25.1") + conflicts("cxxstd=23", when="+cuda") # nvcc version <= 11 does not support C++20 and newer for cxxstd in filter(lambda x: x != "17", cxxstds): requires("%nvhpc", when=f"cxxstd={cxxstd} ^cuda@:11") From b9e0914ab28b5030740115fee32da21eded31963 Mon Sep 17 00:00:00 2001 From: Kenneth Moreland Date: Fri, 18 Oct 2024 09:25:00 -0400 Subject: [PATCH 028/615] vtk-m: Add sycl option to vtk-m package (#46996) Some unused methods in VTK-m resulted in compile errors. These were not discovered because many compilers ignore unused methods in templated classes, but the SYCL compiler for Aurora gave an error. --- .../mr3271-contourtree-print-error.patch | 38 +++++++++++++++++++ .../vtk-m/mr3272-bad-mir-table-method.patch | 35 +++++++++++++++++ .../repos/builtin/packages/vtk-m/package.py | 16 ++++++++ 3 files changed, 89 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch create mode 100644 var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch new file mode 100644 index 00000000000000..c8943aea9f7e1d --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch @@ -0,0 +1,38 @@ +From 48e385af319543800398656645327243a29babfb Mon Sep 17 00:00:00 2001 +From: Kenneth Moreland +Date: Tue, 15 Oct 2024 12:01:34 -0400 +Subject: [PATCH] Fix compile error for contour tree print + +A print for one of the contour tree objects was referencing members of +itself that don't seem to exist. This causes the Intel compiler to fail +to compile it. I'm at a loss about how any other compiler does not error +out, but at any rate this should be correct. +--- + .../worklet/contourtree_distributed/HierarchicalContourTree.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h +index a996d4292..e40d5f4f1 100644 +--- a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h ++++ b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h +@@ -663,7 +663,7 @@ std::string HierarchicalContourTree::PrintDotSuperStructure(const cha + auto hyperarcsPortal = this->Hyperarcs.ReadPortal(); + auto regularNodeGlobalIdsPortal = this->RegularNodeGlobalIds.ReadPortal(); + auto whichIterationPortal = this->WhichIteration.ReadPortal(); +- auto whichRoundPortal = this->whichRound.ReadPortal(); ++ auto whichRoundPortal = this->WhichRound.ReadPortal(); + auto superarcsPortal = this->Superarcs.ReadPortal(); + auto superparentsPortal = this->Superparents.ReadPortal(); + for (vtkm::Id supernode = 0; supernode < this->Supernodes.GetNumberOfValues(); supernode++) +@@ -708,7 +708,7 @@ std::string HierarchicalContourTree::PrintDotSuperStructure(const cha + if (contourtree_augmented::NoSuchElement(superarcTo)) + { // no superarc + // if it occurred on the final round, it's the global root and is shown as the NULL node +- if (whichRoundPortal.Get(superarcFrom) == this->NRounds) ++ if (whichRoundPortal.Get(superarcFrom) == this->NumRounds) + { // root node + outstream << "\tSN" << std::setw(1) << superarcFrom << " -> SA" << std::setw(1) << superarc + << " [label=\"S" << std::setw(1) << superarc << "\",style=dotted]\n"; +-- +2.46.2 + diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch new file mode 100644 index 00000000000000..cf3987079b88b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch @@ -0,0 +1,35 @@ +From c805a6039ea500cb96158cfc11271987c9f67aa4 Mon Sep 17 00:00:00 2001 +From: Kenneth Moreland +Date: Tue, 15 Oct 2024 13:06:36 -0400 +Subject: [PATCH] Remove unused method from MIR tables + +The implementation of this method was incorrect as it referenced a class +member that does not exist. Many compilers allowed it in a templated +class when the method was never used, but other compilers attempt to +compile the inlined method regardless. + +Since the method clearly is not needed, the easy solution is to remove +it. +--- + vtkm/filter/contour/worklet/mir/MIRTables.h | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/vtkm/filter/contour/worklet/mir/MIRTables.h b/vtkm/filter/contour/worklet/mir/MIRTables.h +index 3dff3329e..a6f4d4f1f 100644 +--- a/vtkm/filter/contour/worklet/mir/MIRTables.h ++++ b/vtkm/filter/contour/worklet/mir/MIRTables.h +@@ -11400,11 +11400,6 @@ public: + return FacesLookup[shape]; + } + +- VTKM_EXEC vtkm::UInt8 GetPoint(vtkm::Id pointIndex) const +- { +- return this->CellFacePortal.Get(pointIndex); +- } +- + private: + typename vtkm::cont::ArrayHandle::ReadPortalType MIRTablesDataPortal; + typename vtkm::cont::ArrayHandle::ReadPortalType MIRTablesIndicesPortal; +-- +2.46.2 + diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index 737ee3a3a7002a..6bf7c4203f5538 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -85,6 +85,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): description="build openmp support", ) variant("tbb", default=(sys.platform == "darwin"), description="build TBB support") + variant("sycl", default=False, description="Build with SYCL backend") depends_on("cmake@3.12:", type="build") # CMake >= 3.12 depends_on("cmake@3.18:", when="+rocm", type="build") # CMake >= 3.18 @@ -132,6 +133,13 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm", when="~kokkos", msg="VTK-m does not support HIP without Kokkos") conflicts("+rocm", when="+virtuals", msg="VTK-m does not support virtual functions with ROCm") + # VTK-m uses the Kokkos SYCL backend. + # If Kokkos provides multiple backends, the SYCL backend may or + # may not be used for VTK-m depending on the default selected by Kokkos + depends_on("kokkos +sycl", when="+kokkos +sycl") + + conflicts("+sycl", when="~kokkos", msg="VTK-m does not support SYCL without Kokkos") + # Can build +shared+cuda after @1.7: conflicts("+shared", when="@:1.6 +cuda_native") conflicts("+cuda~cuda_native~kokkos", msg="Cannot have +cuda without a cuda device") @@ -162,6 +170,14 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3259 patch("mr3259-thrust-is_arithmetic-fix.patch", when="@2.0.0:2.2.0 +cuda ^cuda@12.6:") + # VTK-m PR#3271 + # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3271 + patch("mr3271-contourtree-print-error.patch", when="@2.0:2.2") + + # VTK-m PR#3272 + # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3272 + patch("mr3272-bad-mir-table-method.patch", when="@2.0:2.2") + # Disable Thrust patch that is no longer needed in modern Thrust patch( "https://github.com/Kitware/VTK-m/commit/4a4466e7c8cd44d2be2bd3fe6f359faa8e9547aa.patch?full_index=1", From 4432f5a1fea50de8ba565d15eab788a860d64a99 Mon Sep 17 00:00:00 2001 From: Alex Seaton <1802137+agseaton@users.noreply.github.com> Date: Fri, 18 Oct 2024 08:47:49 -0600 Subject: [PATCH 029/615] Added heyoka versions 6.0.0 & 6.1.0 (#47074) --- var/spack/repos/builtin/packages/heyoka/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/heyoka/package.py b/var/spack/repos/builtin/packages/heyoka/package.py index ee4ef5be62dbc4..a76e4b6a761555 100644 --- a/var/spack/repos/builtin/packages/heyoka/package.py +++ b/var/spack/repos/builtin/packages/heyoka/package.py @@ -18,6 +18,8 @@ class Heyoka(CMakePackage): # SPDX identifier of the project's license. license("MPL-2.0") + version("6.1.0", sha256="a0f01afb1fb4f93fdc41b2a8dfebf9f9ddd45b28b7b373c4ef9355aeda7107b4") + version("6.0.0", sha256="9cf56a6a29db5c72c5203af70d568aede78cb549baf1505b8abd04b888492895") version("5.1.0", sha256="dd405328ace718865ae2690384fbf5f7ee4d03ab6821b908e7d0ca0a02c35e14") version("5.0.0", sha256="e9a4b5683a08706addc1b448e232f1e269d78586859fe3f4d93d4c5eee3bc8ae") version("4.0.3", sha256="47608e785607782d896ae2347a29a143cdb7e5c602f48f5ea795cf682051dbee") @@ -57,8 +59,10 @@ class Heyoka(CMakePackage): # Required dependencies depends_on("llvm@13:17", when="@:4") depends_on("llvm@13:18", when="@5") + depends_on("llvm@15:19", when="@6") depends_on("boost@1.69: +serialization") - depends_on("fmt@9:10") + depends_on("fmt@9:10", when="@:5") + depends_on("fmt@9:11", when="@6") depends_on("spdlog") depends_on("intel-tbb@2021.4.0:") From c6bfe7c6bd3f0f963366eaa606c948c8dd48173b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 18 Oct 2024 16:54:21 +0200 Subject: [PATCH 030/615] fix use of traceback.format_exception (#47080) Co-authored-by: Peter Scheibel --- lib/spack/spack/build_environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index af6d0f4e76da85..3737caf35eae08 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -1204,7 +1204,7 @@ def _setup_pkg_and_run( # objects can't be sent to the parent. exc_type = type(e) tb = e.__traceback__ - tb_string = traceback.format_exception(exc_type, e, tb) + tb_string = "".join(traceback.format_exception(exc_type, e, tb)) # build up some context from the offending package so we can # show that, too. From d8d41e9b0e6efd698b38b021962be24c8d022174 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 18 Oct 2024 17:33:17 +0200 Subject: [PATCH 031/615] py-torch: add v2.5.0 (#47069) --- .../repos/builtin/packages/cpuinfo/package.py | 7 +++-- .../repos/builtin/packages/libavif/package.py | 29 +++++++++++++++++++ .../builtin/packages/py-torch/package.py | 13 +++++---- .../builtin/packages/py-torchaudio/package.py | 5 +++- .../packages/py-torchvision/package.py | 20 ++++++++++--- 5 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 var/spack/repos/builtin/packages/libavif/package.py diff --git a/var/spack/repos/builtin/packages/cpuinfo/package.py b/var/spack/repos/builtin/packages/cpuinfo/package.py index fd990da38af3bd..eb1d9ada7075c0 100644 --- a/var/spack/repos/builtin/packages/cpuinfo/package.py +++ b/var/spack/repos/builtin/packages/cpuinfo/package.py @@ -19,7 +19,8 @@ class Cpuinfo(CMakePackage): license("BSD-2-Clause") version("main", branch="main") - version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3: + version("2024-08-30", commit="fa1c679da8d19e1d87f20175ae1ec10995cd3dd3") # py-torch@2.5: + version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3:2.4 version("2023-01-13", commit="6481e8bef08f606ddd627e4d3be89f64d62e1b8a") # py-torch@2.1:2.2 version("2022-08-19", commit="8ec7bd91ad0470e61cf38f618cc1f270dede599c") # py-torch@1.13:2.0 version("2020-12-17", commit="5916273f79a21551890fd3d56fc5375a78d1598d") # py-torch@1.8:1.12 @@ -30,8 +31,8 @@ class Cpuinfo(CMakePackage): version("2018-05-13", commit="1e6c8c99d27f2b5eb9d2e6231055c6a4115b85e5") # py-torch@0.4.1 version("2018-04-04", commit="831dc28341b5f20d13e840caf87eaba644d82643") # py-torch@:0.4.0 - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") generator("ninja") depends_on("cmake@3.5:", type="build") diff --git a/var/spack/repos/builtin/packages/libavif/package.py b/var/spack/repos/builtin/packages/libavif/package.py new file mode 100644 index 00000000000000..5889f39d407059 --- /dev/null +++ b/var/spack/repos/builtin/packages/libavif/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class Libavif(CMakePackage): + """libavif - Library for encoding and decoding .avif files.""" + + homepage = "https://github.com/AOMediaCodec/libavif" + url = "https://github.com/AOMediaCodec/libavif/archive/refs/tags/v1.1.1.tar.gz" + + license("bsd-2-clause") + + version("1.1.1", sha256="914662e16245e062ed73f90112fbb4548241300843a7772d8d441bb6859de45b") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("cmake@3.13:", type="build") + + def cmake_args(self): + return [ + self.define("AVIF_JPEG", False), + self.define("AVIF_LIBYUV", False), + self.define("AVIF_ZLIBPNG", False), + ] diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 8b35838496e151..7025196942b117 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -17,15 +17,15 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): git = "https://github.com/pytorch/pytorch.git" submodules = True - maintainers("adamjstewart") - # Exact set of modules is version- and variant-specific, just attempt to import the # core libraries to ensure that the package was successfully installed. import_modules = ["torch", "torch.autograd", "torch.nn", "torch.utils"] license("BSD-3-Clause") + maintainers("adamjstewart") version("main", branch="main") + version("2.5.0", tag="v2.5.0", commit="32f585d9346e316e554c8d9bf7548af9f62141fc") version("2.4.1", tag="v2.4.1", commit="ee1b6804381c57161c477caa380a840a84167676") version("2.4.0", tag="v2.4.0", commit="d990dada86a8ad94882b5c23e859b88c0c255bda") version("2.3.1", tag="v2.3.1", commit="63d5e9221bedd1546b7d364b5ce4171547db12a9") @@ -137,7 +137,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # Required dependencies # Based on PyPI wheel availability with default_args(type=("build", "link", "run")): - depends_on("python@3.8:3.12", when="@2.2:") + depends_on("python@3.9:3.13", when="@2.5:") + depends_on("python@3.8:3.12", when="@2.2:2.4") depends_on("python@3.8:3.11", when="@2.0:2.1") depends_on("python@:3.10", when="@1.11:1") depends_on("python@:3.9", when="@1.7.1:1.10") @@ -186,7 +187,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # depends_on("xnnpack@2021-02-22", when="@1.8:1.9+xnnpack") # depends_on("xnnpack@2020-03-23", when="@1.6:1.7+xnnpack") depends_on("benchmark", when="@1.6:+test") - depends_on("cpuinfo@2023-11-04", when="@2.3:") + depends_on("cpuinfo@2024-08-30", when="@2.5:") + depends_on("cpuinfo@2023-11-04", when="@2.3:2.4") depends_on("cpuinfo@2023-01-13", when="@2.1:2.2") depends_on("cpuinfo@2022-08-19", when="@1.13:2.0") depends_on("cpuinfo@2020-12-17", when="@1.8:1.12") @@ -230,7 +232,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): depends_on("pthreadpool@2020-10-05", when="@1.8") depends_on("pthreadpool@2020-06-15", when="@1.6:1.7") with default_args(type=("build", "link", "run")): - depends_on("py-pybind11@2.12.0:", when="@2.3:") + depends_on("py-pybind11@2.13.5:", when="@2.5:") + depends_on("py-pybind11@2.12.0:", when="@2.3:2.4") depends_on("py-pybind11@2.11.0:", when="@2.1:2.2") depends_on("py-pybind11@2.10.1:", when="@2.0") depends_on("py-pybind11@2.10.0:", when="@1.13:1") diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index 372cbca9367dea..dc2a088fbcfb4e 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -18,6 +18,7 @@ class PyTorchaudio(PythonPackage): maintainers("adamjstewart") version("main", branch="main") + version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd") version("2.4.1", tag="v2.4.1", commit="e8cbe17769796ce963fbc71b8990f1474774e6d2") version("2.4.0", tag="v2.4.0", commit="69d40773dc4ed86643820c21a8a880e4d074a46e") version("2.3.1", tag="v2.3.1", commit="3edcf69e78a3c9a3077a11159861422440ec7d4a") @@ -55,13 +56,15 @@ class PyTorchaudio(PythonPackage): with default_args(type=("build", "link", "run")): # Based on PyPI wheel availability - depends_on("python@3.8:3.12", when="@2.2:") + depends_on("python@3.9:3.12", when="@2.5:") + depends_on("python@3.8:3.12", when="@2.2:2.4") depends_on("python@3.8:3.11", when="@2.0:2.1") depends_on("python@:3.10", when="@0.12:0") depends_on("python@:3.9", when="@0.7.2:0.11") depends_on("python@:3.8", when="@:0.7.0") depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.0", when="@2.5.0") depends_on("py-torch@2.4.1", when="@2.4.1") depends_on("py-torch@2.4.0", when="@2.4.0") depends_on("py-torch@2.3.1", when="@2.3.1") diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 1f17b6529d3052..93cf33fb1beee1 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -19,6 +19,7 @@ class PyTorchvision(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.20.0", sha256="b59d9896c5c957c6db0018754bbd17d079c5102b82b9be0b438553b40a7b6029") version("0.19.1", sha256="083e75c467285595ec3eb3c7aa8493c19e53d7eb42f13046fb56a07c8897e5a8") version("0.19.0", sha256="4c499d0a412b5a21d55ac3c0a37e80ecd7e1f002f2a7b6b3b38a2de2544acbb6") version("0.18.1", sha256="347d472a9ceecc44e0bee1eda140d63cfaffc74a54ec07d4b98da7698ce75516") @@ -58,16 +59,21 @@ class PyTorchvision(PythonPackage): desc = "Enable support for native encoding/decoding of {} formats in torchvision.io" variant("png", default=True, description=desc.format("PNG")) variant("jpeg", default=True, description=desc.format("JPEG")) + variant("webp", default=False, description=desc.format("WEBP"), when="@0.20:") + variant("heic", default=False, description=desc.format("HEIC"), when="@0.20:") + variant("avif", default=False, description=desc.format("AVIF"), when="@0.20:") variant("nvjpeg", default=False, description=desc.format("NVJPEG")) - variant("ffmpeg", default=False, description=desc.format("FFMPEG")) variant("video_codec", default=False, description=desc.format("video_codec")) + variant("ffmpeg", default=False, description=desc.format("FFMPEG")) + # torchvision does not yet support disabling giflib: # https://github.com/pytorch/vision/pull/8406#discussion_r1590926939 # variant("gif", default=False, description=desc.format("GIF"), when="@0.19:") with default_args(type=("build", "link", "run")): # Based on PyPI wheel availability - depends_on("python@3.8:3.12", when="@0.17:") + depends_on("python@3.9:3.12", when="@0.20:") + depends_on("python@3.8:3.12", when="@0.17:0.19") depends_on("python@3.8:3.11", when="@0.15:0.16") depends_on("python@:3.10", when="@0.12:0.14") depends_on("python@:3.9", when="@0.8.2:0.11") @@ -75,6 +81,7 @@ class PyTorchvision(PythonPackage): # https://github.com/pytorch/vision#installation depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.0", when="@0.20.0") depends_on("py-torch@2.4.1", when="@0.19.1") depends_on("py-torch@2.4.0", when="@0.19.0") depends_on("py-torch@2.3.1", when="@0.18.1") @@ -122,9 +129,13 @@ class PyTorchvision(PythonPackage): # Extensions depends_on("libpng@1.6:", when="+png") depends_on("jpeg", when="+jpeg") + depends_on("libwebp", when="+webp") + depends_on("libheif", when="+heic") + depends_on("libavif", when="+avif") depends_on("cuda", when="+nvjpeg") - depends_on("ffmpeg@3.1:", when="+ffmpeg") depends_on("cuda", when="+video_codec") + depends_on("ffmpeg@3.1:", when="+ffmpeg") + # torchvision does not yet support externally-installed giflib: # https://github.com/pytorch/vision/pull/8406#discussion_r1590926939 # depends_on("giflib", when="+gif") @@ -177,7 +188,8 @@ def setup_build_environment(self, env): for gpu in ["cuda", "mps"]: env.set(f"FORCE_{gpu.upper()}", int(f"+{gpu}" in self.spec["py-torch"])) - for extension in ["png", "jpeg", "nvjpeg", "ffmpeg", "video_codec"]: + extensions = ["png", "jpeg", "webp", "heic", "avif", "nvjpeg", "video_codec", "ffmpeg"] + for extension in extensions: env.set(f"TORCHVISION_USE_{extension.upper()}", int(f"+{extension}" in self.spec)) include = [] From c006cb573ac9f7f15fd4d2d483dbcdc81f62c03a Mon Sep 17 00:00:00 2001 From: Sean Koyama Date: Fri, 18 Oct 2024 08:50:12 -0700 Subject: [PATCH 032/615] implement prefix property for OneAPI compiler (#47066) --- lib/spack/spack/compilers/oneapi.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/spack/spack/compilers/oneapi.py b/lib/spack/spack/compilers/oneapi.py index ee279433c321a4..b0cfadc505ac07 100644 --- a/lib/spack/spack/compilers/oneapi.py +++ b/lib/spack/spack/compilers/oneapi.py @@ -7,7 +7,9 @@ from os.path import dirname, join from llnl.util import tty +from llnl.util.filesystem import ancestor +import spack.util.executable from spack.compiler import Compiler from spack.version import Version @@ -116,6 +118,24 @@ def fc_pic_flag(self): def stdcxx_libs(self): return ("-cxxlib",) + @property + def prefix(self): + # OneAPI reports its install prefix when running ``--version`` + # on the line ``InstalledDir: /bin/compiler``. + cc = spack.util.executable.Executable(self.cc) + with self.compiler_environment(): + oneapi_output = cc("--version", output=str, error=str) + + for line in oneapi_output.splitlines(): + if line.startswith("InstalledDir:"): + oneapi_prefix = line.split(":")[1].strip() + # Go from /bin/compiler to + return ancestor(oneapi_prefix, 2) + + raise RuntimeError( + "could not find install prefix of OneAPI from output:\n\t{}".format(oneapi_output) + ) + def setup_custom_environment(self, pkg, env): # workaround bug in icpx driver where it requires sycl-post-link is on the PATH # It is located in the same directory as the driver. Error message: From 88c193b83a6e09dd00163f39e4903d626606de33 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 12:57:32 -0400 Subject: [PATCH 033/615] py-open-clip-torch: new package (#47049) Co-authored-by: Alex C Leute --- .../packages/py-open-clip-torch/package.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-open-clip-torch/package.py diff --git a/var/spack/repos/builtin/packages/py-open-clip-torch/package.py b/var/spack/repos/builtin/packages/py-open-clip-torch/package.py new file mode 100644 index 00000000000000..45fa3a0ee79b77 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-open-clip-torch/package.py @@ -0,0 +1,30 @@ +# 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) + + +from spack.package import * + + +class PyOpenClipTorch(PythonPackage): + """Welcome to an open source implementation of OpenAI's CLIP (Contrastive + Language-Image Pre-training).""" + + homepage = "https://github.com/mlfoundations/open_clip" + url = "https://github.com/mlfoundations/open_clip/archive/refs/tags/v2.24.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("2.24.0", sha256="83d78a78f756685e80fdb8baa2f2fb308c791fabdbfe1c0ddcd6fed7d22de7b6") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@1.9.0:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-huggingface-hub", type=("build", "run")) + depends_on("py-sentencepiece", type=("build", "run")) + depends_on("py-protobuf", type=("build", "run")) + depends_on("py-timm", type=("build", "run")) From cfae194fbdb74cd2f98bc6cdfd1acb07cb92cf4c Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 12:58:39 -0400 Subject: [PATCH 034/615] py-coca-pytorch: new package (#47051) * py-coca-pytorch: new package * [py-coca-pytorch] black --------- Co-authored-by: Alex C Leute --- .../packages/py-coca-pytorch/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-coca-pytorch/package.py diff --git a/var/spack/repos/builtin/packages/py-coca-pytorch/package.py b/var/spack/repos/builtin/packages/py-coca-pytorch/package.py new file mode 100644 index 00000000000000..e759919fd6add8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-coca-pytorch/package.py @@ -0,0 +1,23 @@ +# 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) + + +from spack.package import * + + +class PyCocaPytorch(PythonPackage): + """CoCa, Contrastive Captioners are Image-Text Foundation Models - + Pytorch""" + + homepage = "https://github.com/lucidrains/CoCa-pytorch" + pypi = "CoCa-pytorch/CoCa-pytorch-0.1.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.1.0", sha256="119c83812d140ad197cf4e992db8c373d908af0bffd0a87015546b6a1cf0a316") + + depends_on("py-setuptools", type="build") + depends_on("py-einops@0.4:", type=("build", "run")) + depends_on("py-torch@1.6:", type=("build", "run")) From 53385f12da3f21518849519254b056c391ab32dd Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 12:59:36 -0400 Subject: [PATCH 035/615] py-ema-pytorch: new package (#47052) Co-authored-by: Alex C Leute --- .../packages/py-ema-pytorch/package.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-ema-pytorch/package.py diff --git a/var/spack/repos/builtin/packages/py-ema-pytorch/package.py b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py new file mode 100644 index 00000000000000..00b8d48bde2bd8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py @@ -0,0 +1,22 @@ +# 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) + + +from spack.package import * + + +class PyEmaPytorch(PythonPackage): + """Easy way to keep track of exponential moving average version of your + pytorch module""" + + homepage = "https://github.com/lucidrains/ema-pytorch" + pypi = "ema_pytorch/ema_pytorch-0.5.1.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.5.1", sha256="e825212a44e8faae5d2cf2a1349961c4416cba0496ffa64d37718d8b06f206b2") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@1.6:", type=("build", "run")) From b2e28a0b0856445d03167e013c6a0f28a0d99494 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 13:05:37 -0400 Subject: [PATCH 036/615] py-x-clip: new package (#47060) Co-authored-by: Alex C Leute --- .../builtin/packages/py-x-clip/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-x-clip/package.py diff --git a/var/spack/repos/builtin/packages/py-x-clip/package.py b/var/spack/repos/builtin/packages/py-x-clip/package.py new file mode 100644 index 00000000000000..9dfcfda16ca37f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-x-clip/package.py @@ -0,0 +1,27 @@ +# 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) + + +from spack.package import * + + +class PyXClip(PythonPackage): + """A concise but complete implementation of CLIP with various experimental + improvements from recent papers""" + + homepage = "https://github.com/lucidrains/x-clip" + pypi = "x-clip/x-clip-0.14.4.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.14.4", sha256="e2539953f1c81a2ab892843c2bc02c218f4ac410cf10ce37495830f6a0e259c6") + + depends_on("py-setuptools", type="build") + depends_on("py-beartype", type=("build", "run")) + depends_on("py-einops@0.6:", type=("build", "run")) + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-torch@1.6:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) From 7678635d362a319a4bfc5ce6b378895896059954 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 13:07:09 -0400 Subject: [PATCH 037/615] py-rotary-embedding-torch: New package (#47059) Co-authored-by: Benjamin Meyers --- .../py-rotary-embedding-torch/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py diff --git a/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py b/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py new file mode 100644 index 00000000000000..c307b827bee74c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py @@ -0,0 +1,27 @@ +# 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 PyRotaryEmbeddingTorch(PythonPackage): + """A standalone library for adding rotary embeddings to transformers in Pytorch, + following its success as relative positional encoding. Specifically it will make + rotating information into any axis of a tensor easy and efficient, whether they + be fixed positional or learned. This library will give you state of the art + results for positional embedding, at little costs.""" + + homepage = "https://github.com/lucidrains/rotary-embedding-torch" + pypi = "rotary-embedding-torch/rotary-embedding-torch-0.5.3.tar.gz" + + maintainers("meyersbs") + + version("0.5.3", sha256="45db29b19bd7025f09d202752c26bf6921b05d8b5a977cfcdc625ce96ddf2b5c") + + depends_on("py-setuptools", type="build") + depends_on("py-beartype", type=("build", "run")) + depends_on("py-einops@0.7:", type=("build", "run")) + depends_on("py-torch@2.0:", type=("build", "run")) From 1d25275bd1cc04aba54c79da60e5787b1a26cd99 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Oct 2024 12:09:29 -0500 Subject: [PATCH 038/615] cassandra: add v5.0.1 (fix CVEs) (#47058) * cassandra: add v5.0.1 * [@spackbot] updating style on behalf of wdconinc --------- Co-authored-by: wdconinc --- .../builtin/packages/cassandra/package.py | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/cassandra/package.py b/var/spack/repos/builtin/packages/cassandra/package.py index 36f89c148d8b91..7464bef4bdb466 100644 --- a/var/spack/repos/builtin/packages/cassandra/package.py +++ b/var/spack/repos/builtin/packages/cassandra/package.py @@ -12,25 +12,30 @@ class Cassandra(Package): organized into tables with a required primary key. """ - homepage = "https://github.com/apache/cassandra" + homepage = "https://cassandra.apache.org/" url = "https://archive.apache.org/dist/cassandra/4.0.1/apache-cassandra-4.0.1-bin.tar.gz" - license("Apache-2.0") - - version("4.0.1", sha256="ed7022e30d9b77d9ce1072f8de95ab01ef7c5c6ed30f304e413dd5a3f92a52f8") - version("3.11.11", sha256="a5639af781005410995a96f512d505c1def7b70cf5bbbec52e7cd5ff31b6cea3") - version( - "3.11.6", - sha256="ce34edebd1b6bb35216ae97bd06d3efc338c05b273b78267556a99f85d30e45b", - deprecated=True, - ) - version( - "3.11.5", - sha256="a765adcaa42a6c881f5e79d030854d082900992cc11da40eee413bb235970a6a", - deprecated=True, - ) - version("2.2.19", sha256="5496c0254a66b6d50bde7999d1bab9129b0406b71ad3318558f4d7dbfbed0ab9") - + license("Apache-2.0", checked_by="wdconinc") + + version("5.0.1", sha256="73f4c807b0aa4036500d5dc54e30ef82bcf549ab1917eff2bbc7189b0337ea84") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2021-44521 + version("4.0.1", sha256="ed7022e30d9b77d9ce1072f8de95ab01ef7c5c6ed30f304e413dd5a3f92a52f8") + version( + "3.11.11", sha256="a5639af781005410995a96f512d505c1def7b70cf5bbbec52e7cd5ff31b6cea3" + ) + version( + "3.11.6", sha256="ce34edebd1b6bb35216ae97bd06d3efc338c05b273b78267556a99f85d30e45b" + ) + version( + "3.11.5", sha256="a765adcaa42a6c881f5e79d030854d082900992cc11da40eee413bb235970a6a" + ) + # https://nvd.nist.gov/vuln/detail/CVE-2020-17516 + version( + "2.2.19", sha256="5496c0254a66b6d50bde7999d1bab9129b0406b71ad3318558f4d7dbfbed0ab9" + ) + + depends_on("java@11:", type=("build", "run"), when="@5:") depends_on("java@9:", type=("build", "run"), when="@4.0.0:") depends_on("java@:8", type=("build", "run"), when="@:3.11.11") From 2356ccc816b8bfe8279f7dfda60ac0830e0935d9 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Oct 2024 12:10:35 -0500 Subject: [PATCH 039/615] solr: add v8.11.4, v9.7.0 (fix CVE) (#47037) Co-authored-by: wdconinc --- .../repos/builtin/packages/solr/package.py | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/solr/package.py b/var/spack/repos/builtin/packages/solr/package.py index 0a14f666a3dc28..532b5dfc65ae66 100644 --- a/var/spack/repos/builtin/packages/solr/package.py +++ b/var/spack/repos/builtin/packages/solr/package.py @@ -12,23 +12,37 @@ class Solr(Package): recovery,centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.""" - homepage = "https://lucene.apache.org/" - url = "https://archive.apache.org/dist/lucene/solr/7.7.3/solr-7.7.3.tgz" - list_url = "https://archive.apache.org/dist/lucene/solr" + homepage = "https://solr.apache.org/" + url = "https://archive.apache.org/dist/solr/solr/7.7.3/solr-7.7.3.tgz" + list_url = "https://archive.apache.org/dist/solr/solr" list_depth = 1 - depends_on("java", type="run") + license("Apache-2.0", checked_by="wdconinc") + + version("9.7.0", sha256="38548b86fa4e3c87883875952da124bf7d742cb8f7b25d37a1176833588e8552") + version("8.11.4", sha256="163fbdf246bbd78910bc36c3257ad50cdf31ccc3329a5ef885c23c9ef69e0ebe") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-45216 + version( + "8.11.3", sha256="178300ae095094c2060a1060cf475aa935f1202addfb5bacb38e8712ccb56455" + ) + version( + "8.11.2", sha256="54d6ebd392942f0798a60d50a910e26794b2c344ee97c2d9b50e678a7066d3a6" + ) + version("8.6.0", sha256="4519ccdb531619df770f1065db6adcedc052c7aa94b42806d541966550956aa5") + version("8.5.2", sha256="c457d6c7243241cad141e1df34c6f669d58a6c60e537f4217d032616dd066dcf") + version("8.5.1", sha256="47b68073b37bbcc0517a355ef722f20827c3f1416537ebbccf5239dda8064a0b") + version("8.5.0", sha256="9e54711ad0aa60e9723d2cdeb20cf0d21ee2ab9fa0048ec59dcb5f9d94dc61dd") + version("8.4.1", sha256="ec39e1e024b2e37405149de41e39e875a39bf11a53f506d07d96b47b8d2a4301") + version("7.7.3", sha256="3ec67fa430afa5b5eb43bb1cd4a659e56ee9f8541e0116d6080c0d783870baee") - license("CC-BY-2.5") + depends_on("java", type="run") - version("8.11.3", sha256="178300ae095094c2060a1060cf475aa935f1202addfb5bacb38e8712ccb56455") - version("8.11.2", sha256="54d6ebd392942f0798a60d50a910e26794b2c344ee97c2d9b50e678a7066d3a6") - version("8.6.0", sha256="4519ccdb531619df770f1065db6adcedc052c7aa94b42806d541966550956aa5") - version("8.5.2", sha256="c457d6c7243241cad141e1df34c6f669d58a6c60e537f4217d032616dd066dcf") - version("8.5.1", sha256="47b68073b37bbcc0517a355ef722f20827c3f1416537ebbccf5239dda8064a0b") - version("8.5.0", sha256="9e54711ad0aa60e9723d2cdeb20cf0d21ee2ab9fa0048ec59dcb5f9d94dc61dd") - version("8.4.1", sha256="ec39e1e024b2e37405149de41e39e875a39bf11a53f506d07d96b47b8d2a4301") - version("7.7.3", sha256="3ec67fa430afa5b5eb43bb1cd4a659e56ee9f8541e0116d6080c0d783870baee") + def url_for_version(self, version): + if self.spec.satisfies("@9:"): + return f"https://archive.apache.org/dist/solr/solr/{version}/solr-{version}.tgz" + else: + return f"https://archive.apache.org/dist/lucene/solr/{version}/solr-{version}.tgz" def install(self, spec, prefix): install_tree(".", prefix) From d3378ffd252af542477f0584a82236645f81dfbd Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 13:25:10 -0400 Subject: [PATCH 040/615] py-embedding-reader: New package (#47053) Co-authored-by: Alex C Leute --- .../packages/py-embedding-reader/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-embedding-reader/package.py diff --git a/var/spack/repos/builtin/packages/py-embedding-reader/package.py b/var/spack/repos/builtin/packages/py-embedding-reader/package.py new file mode 100644 index 00000000000000..5468cebc1114ae --- /dev/null +++ b/var/spack/repos/builtin/packages/py-embedding-reader/package.py @@ -0,0 +1,27 @@ +# 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) + + +from spack.package import * + + +class PyEmbeddingReader(PythonPackage): + """Embedding reader is a module to make it easy to read efficiently a large + collection of embeddings stored in any file system.""" + + homepage = "https://github.com/rom1504/embedding-reader" + # PyPI source is missing requirements.txt + url = "https://github.com/rom1504/embedding-reader/archive/refs/tags/1.7.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("1.7.0", sha256="3bae324a06d795ea025317fdcfeb6ef1632e37786bf171973e83543700bbef73") + + depends_on("py-setuptools", type="build") + depends_on("py-tqdm@4.62.3:4", type=("build", "run")) + depends_on("py-fsspec@2022.1.0:", type=("build", "run")) + depends_on("py-numpy@1.19.5:1", type=("build", "run")) + depends_on("py-pandas@1.1.5:2", type=("build", "run")) + depends_on("py-pyarrow@6.0.1:15", type=("build", "run")) From 7acd0cd86cff745997ab3857dac5d7aecb9d6ed4 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 13:25:29 -0400 Subject: [PATCH 041/615] py-resize-right: new package (#47056) Co-authored-by: Alex C Leute --- .../packages/py-resize-right/package.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-resize-right/package.py diff --git a/var/spack/repos/builtin/packages/py-resize-right/package.py b/var/spack/repos/builtin/packages/py-resize-right/package.py new file mode 100644 index 00000000000000..4e737f2d83e3e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-resize-right/package.py @@ -0,0 +1,32 @@ +# 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) + + +from spack.package import * + + +class PyResizeRight(PythonPackage): + """This is a resizing packge for images or tensors, that supports both + Numpy and PyTorch (fully differentiable) seamlessly. The main motivation + for creating this is to address some crucial incorrectness issues (see item + 3 in the list below) that exist in all other resizing packages I am + aware of. As far as I know, it is the only one that performs correctly + in all cases. ResizeRight is specially made for machine learning, + image enhancement and restoration challenges.""" + + homepage = "https://github.com/assafshocher/ResizeRight" + pypi = "resize-right/resize-right-0.0.2.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.0.2", sha256="7dc35b72ce4012b77f7cc9049835163793ab98a58ab8893610fb119fe59af520") + + depends_on("py-setuptools", type="build") + # needs py-numpy, py-torch, or both. py-numpy is lighter to install, so + # always use py-numpy + depends_on("py-numpy", type=("build", "run")) + # and optionally use py-torch + variant("torch", default=True, description="Enable py-torch") + depends_on("py-torch", type=("build", "run"), when="+torch") From 99e4d6b4468f9ad52ed9aa41102316230854b5c8 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 13:26:26 -0400 Subject: [PATCH 042/615] py-pytorch-warmup: new package (#47054) * py-pytorch-warmup: new package * py-clip-anytorch: ran black py-langchain-core: ran black py-pydantic: ran black py-dalle2-pytorch: ran black --------- Co-authored-by: Alex C Leute --- .../packages/py-pytorch-warmup/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pytorch-warmup/package.py diff --git a/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py b/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py new file mode 100644 index 00000000000000..362e4f0b094702 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py @@ -0,0 +1,23 @@ +# 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) + + +from spack.package import * + + +class PyPytorchWarmup(PythonPackage): + """This library contains PyTorch implementations of the warmup schedules + described in On the adequacy of untuned warmup for adaptive + optimization.""" + + homepage = "https://github.com/Tony-Y/pytorch_warmup" + pypi = "pytorch-warmup/pytorch-warmup-0.1.1.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.1.1", sha256="c594760b29657a127aa6a8c3424dd0b5068140b3b7d4988118f4a9f3e99b1457") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@1.1:", type=("build", "run")) From 957c0cc9dad60b6e6a3ae3ace37c4513f800700c Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Fri, 18 Oct 2024 14:55:27 -0400 Subject: [PATCH 043/615] py-clip-anytorch: new package (#47050) * py-clip-anytorch: new package * py-clip-anytorch: ran black py-langchain-core: ran black py-pydantic: ran black py-dalle2-pytorch: ran black * [py-clip-anytorch] fixed license(checked_by) * Apply suggestion from Wouter on fixing CI Co-authored-by: Wouter Deconinck --------- Co-authored-by: Alex C Leute Co-authored-by: Bernhard Kaindl Co-authored-by: Wouter Deconinck --- .../packages/py-clip-anytorch/package.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-clip-anytorch/package.py diff --git a/var/spack/repos/builtin/packages/py-clip-anytorch/package.py b/var/spack/repos/builtin/packages/py-clip-anytorch/package.py new file mode 100644 index 00000000000000..283adbfeea71c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-clip-anytorch/package.py @@ -0,0 +1,33 @@ +# 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) + + +from spack.package import * + + +class PyClipAnytorch(PythonPackage): + """CLIP (Contrastive Language-Image Pre-Training) is a neural network + trained on a variety of (image, text) pairs. It can be instructed in + natural language to predict the most relevant text snippet, given an image, + without directly optimizing for the task, similarly to the zero-shot + capabilities of GPT-2 and 3. We found CLIP matches the performance of the + original ResNet50 on ImageNet "zero-shot" without using any of the original + 1.28M labeled examples, overcoming several major challenges in computer + vision.""" + + homepage = "https://github.com/rom1504/CLIP" + # PyPI source is missing requirements.txt + url = "https://github.com/rom1504/CLIP/archive/refs/tags/2.6.0.tar.gz" + + license("MIT", checked_by="qwertos") + + version("2.6.0", sha256="1ac1f6ca47dfb5d4e55be8f45cc2f3bdf6415b91973a04b4529e812a8ae29bea") + + depends_on("py-setuptools", type="build") + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-torch", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) From 230bc7010a5bbcfd213c2531be91ebc7381d3886 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Fri, 18 Oct 2024 15:12:40 -0400 Subject: [PATCH 044/615] hyperfine: add v1.18.0 (#47084) * hyperfine: convert to cargo package * hyperfine: add v1.18.0 * hyperfine: add minimum cargo version --- .../repos/builtin/packages/hyperfine/package.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/hyperfine/package.py b/var/spack/repos/builtin/packages/hyperfine/package.py index e862d07392c561..ce795592319b99 100644 --- a/var/spack/repos/builtin/packages/hyperfine/package.py +++ b/var/spack/repos/builtin/packages/hyperfine/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Hyperfine(Package): +class Hyperfine(CargoPackage): """A command-line benchmarking tool.""" homepage = "https://github.com/sharkdp/hyperfine" @@ -16,14 +16,15 @@ class Hyperfine(Package): license("Apache-2.0 AND MIT") + version("1.18.0", sha256="fea7b92922117ed04b9c84bb9998026264346768804f66baa40743c5528bed6b") version("1.17.0", sha256="3dcd86c12e96ab5808d5c9f3cec0fcc04192a87833ff009063c4a491d5487b58") version("1.16.1", sha256="ffb3298945cbe2c068ca1a074946d55b9add83c9df720eda2ed7f3d94d7e65d2") version("1.14.0", sha256="59018c22242dd2ad2bd5fb4a34c0524948b7921d02aa79419ccec4c1ffd3da14") version("1.13.0", sha256="6e57c8e51962dd24a283ab46dde6fe306da772f4ef9bad86f8c89ac3a499c87e") version("1.12.0", sha256="2120870a97e68fa3426eac5646a071c9646e96d2309220e3c258bf588e496454") - depends_on("rust@1.46:") - - def install(self, spec, prefix): - cargo = which("cargo") - cargo("install", "--root", prefix, "--path", ".") + depends_on("rust@1.70:", when="@1.18.0:") + depends_on("rust@1.65:", when="@1.17.0:") + depends_on("rust@1.64:", when="@1.16.0:") + depends_on("rust@1.54:", when="@1.13.0:") + depends_on("rust@1.46:", when="@1.12.0:") From 31cfcafeba35429d9b6d811ae27eff0e88b1fee8 Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:36:16 -0400 Subject: [PATCH 045/615] Build logic fix: reorder definition of package module variables (#46992) #44327 made sure to always run `set_package_py_globals` on all packages before running `setup_dependent_package` for any package, so that packages implementing the latter could depend on variables like `spack_cc` being defined. This ran into an undocumented dependency: `std_cmake_args` is set in `set_package_py_globals` and makes use of `cmake_prefix_paths` (if it is defined in the package); `py-torch`es implementation of `cmake_prefix_paths` depends on a variable set by `setup_dependent_package` (`python_platlib`). This generally restores #44327, and corrects the resulting issue by moving assignment of `std_cmake_args` to after both actions have been run. --- lib/spack/spack/build_environment.py | 21 ++++++++++++++++---- lib/spack/spack/test/build_environment.py | 24 +++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 3737caf35eae08..ed62e517eff2fb 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -617,14 +617,12 @@ def set_package_py_globals(pkg, context: Context = Context.BUILD): """ module = ModuleChangePropagator(pkg) + jobs = spack.config.determine_number_of_jobs(parallel=pkg.parallel) + module.make_jobs = jobs if context == Context.BUILD: - module.std_cmake_args = spack.build_systems.cmake.CMakeBuilder.std_args(pkg) module.std_meson_args = spack.build_systems.meson.MesonBuilder.std_args(pkg) module.std_pip_args = spack.build_systems.python.PythonPipBuilder.std_args(pkg) - jobs = spack.config.determine_number_of_jobs(parallel=pkg.parallel) - module.make_jobs = jobs - # TODO: make these build deps that can be installed if not found. module.make = MakeExecutable("make", jobs) module.gmake = MakeExecutable("gmake", jobs) @@ -1048,6 +1046,12 @@ def set_all_package_py_globals(self): # This includes runtime dependencies, also runtime deps of direct build deps. set_package_py_globals(pkg, context=Context.RUN) + # Looping over the set of packages a second time + # ensures all globals are loaded into the module space prior to + # any package setup. This guarantees package setup methods have + # access to expected module level definitions such as "spack_cc" + for dspec, flag in chain(self.external, self.nonexternal): + pkg = dspec.package for spec in dspec.dependents(): # Note: some specs have dependents that are unreachable from the root, so avoid # setting globals for those. @@ -1057,6 +1061,15 @@ def set_all_package_py_globals(self): pkg.setup_dependent_package(dependent_module, spec) dependent_module.propagate_changes_to_mro() + pkg = self.specs[0].package + if self.context == Context.BUILD: + module = ModuleChangePropagator(pkg) + # std_cmake_args is not sufficiently static to be defined + # in set_package_py_globals and is deprecated so its handled + # here as a special case + module.std_cmake_args = spack.build_systems.cmake.CMakeBuilder.std_args(pkg) + module.propagate_changes_to_mro() + def get_env_modifications(self) -> EnvironmentModifications: """Returns the environment variable modifications for the given input specs and context. Environment modifications include: diff --git a/lib/spack/spack/test/build_environment.py b/lib/spack/spack/test/build_environment.py index f435a893a14ac9..281d79f8563e7c 100644 --- a/lib/spack/spack/test/build_environment.py +++ b/lib/spack/spack/test/build_environment.py @@ -516,6 +516,30 @@ def test_setting_dtags_based_on_config(config_setting, expected_flag, config, mo assert dtags_to_add.value == expected_flag +def test_module_globals_available_at_setup_dependent_time( + monkeypatch, mutable_config, mock_packages, working_env +): + """Spack built package externaltest depends on an external package + externaltool. Externaltool's setup_dependent_package needs to be able to + access globals on the dependent""" + + def setup_dependent_package(module, dependent_spec): + # Make sure set_package_py_globals was already called on + # dependents + # ninja is always set by the setup context and is not None + dependent_module = dependent_spec.package.module + assert hasattr(dependent_module, "ninja") + assert dependent_module.ninja is not None + dependent_spec.package.test_attr = True + + externaltool = spack.spec.Spec("externaltest").concretized() + monkeypatch.setattr( + externaltool["externaltool"].package, "setup_dependent_package", setup_dependent_package + ) + spack.build_environment.setup_package(externaltool.package, False) + assert externaltool.package.test_attr + + def test_build_jobs_sequential_is_sequential(): assert ( spack.config.determine_number_of_jobs( From df6427d2598cf573651acbef90aa87c3db8bfd9f Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:30:46 -0700 Subject: [PATCH 046/615] e4s ci stacks: add nwchem (#47055) --- .../gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml | 1 + .../gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml | 1 + share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml | 1 + share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml | 1 + share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml | 1 + 5 files changed, 5 insertions(+) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml index ea4d676b15d8b3..5d5ca5fbd65bed 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml @@ -114,6 +114,7 @@ spack: - netlib-scalapack - nrm # - nvhpc + - nwchem - omega-h - openfoam # - openmpi diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index 0ef6131d506a8b..948a57f8b9a007 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -115,6 +115,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml index ac305621028c5d..ea22c43fbaae0b 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml @@ -128,6 +128,7 @@ spack: - nco - netlib-scalapack - nrm + - nwchem - omega-h - openfoam - openmpi diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index 618798b599edfd..0453392c1b04f1 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -118,6 +118,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 23e8a2f6eb8edd..dda9aefb9554e4 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -129,6 +129,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi From 899004e29a733a0a741e7e3c80fd706cb3e03b3c Mon Sep 17 00:00:00 2001 From: James Smillie <83249606+jamessmillie@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:37:41 -0600 Subject: [PATCH 047/615] Boost: fix logic for controlling which libs build on Windows (#46414) Older builds of Boost were failing on Windows because they were adding --without-... flags for libraries that did not exist in those versions. So: * lib variants are updated with version range info (current range info for libs is not comprehensive, but represents changes over the last few minor versions up to 1.85) * On Windows, --without-... options are omitted for libraries when they don't exist for the version of boost being built. Non-Windows uses a different approach, which was not affected because the new libraries were not activated by default. It would benefit from similar attention though to avoid potential future issues. --- var/spack/repos/builtin/packages/boost/package.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 50cd7d5a46f9c2..908ea40a89abca 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -154,8 +154,12 @@ class Boost(Package): "wave", ] + # Add any extra requirements for specific + all_libs_opts = {"charconv": {"when": "@1.85.0:"}, "cobalt": {"when": "@1.84.0:"}} + for lib in all_libs: - variant(lib, default=False, description="Compile with {0} library".format(lib)) + lib_opts = all_libs_opts.get(lib, {}) + variant(lib, default=False, description="Compile with {0} library".format(lib), **lib_opts) @property def libs(self): @@ -624,9 +628,13 @@ def determine_b2_options(self, spec, options): options.append("runtime-link=shared") else: options.append("runtime-link=static") + + # Any lib that is in self.all_libs AND in the variants dictionary + # AND is set to False should be added to options in a --without flag for lib in self.all_libs: - if f"+{lib}" not in spec: - options.append(f"--without-{lib}") + if lib not in self.spec.variants.dict or self.spec.satisfies(f"+{lib}"): + continue + options.append(f"--without-{lib}") if not spec.satisfies("@:1.75 %intel") and not spec.satisfies("platform=windows"): # When building any version >= 1.76, the toolset must be specified. From c9377d9437c128a5ea918f7bc042ba74b797e7cd Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Fri, 18 Oct 2024 19:10:08 -0400 Subject: [PATCH 048/615] SZ package: tighten constraints for Windows build (#47071) --- var/spack/repos/builtin/packages/sz/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index b73cad5aa2397c..092768669e9315 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -87,6 +87,9 @@ class Sz(CMakePackage, AutotoolsPackage): patch("ctags-only-if-requested.patch", when="@2.1.8.1:2.1.8.3") + # Windows requires numerous commits that only exist on master at the moment + conflicts("platform=windows", when="@:2.1.12.5") + def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("%oneapi"): From f69e8297a760dbb615f5b6b2c55505d4bf12fdde Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Sat, 19 Oct 2024 02:29:55 +0200 Subject: [PATCH 049/615] geomodel: Rename v7.0.0 to v6.6.0 (#47079) The GeoModel devs decided to delete the v7.0.0 release and re-release it as v6.6.0 (see https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/357). --- var/spack/repos/builtin/packages/geomodel/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/geomodel/package.py b/var/spack/repos/builtin/packages/geomodel/package.py index 9d5978f7120e99..9490c569e8aa53 100644 --- a/var/spack/repos/builtin/packages/geomodel/package.py +++ b/var/spack/repos/builtin/packages/geomodel/package.py @@ -18,7 +18,7 @@ class Geomodel(CMakePackage): license("Apache-2.0", checked_by="wdconinc") - version("7.0.0", sha256="9ad86e9f3e2d67b9056b70550d347db8017f4d5acf829804afc61e4fe7b6a527") + version("6.6.0", sha256="3cefeaa409177d45d3fa63e069b6496ca062991b0d7d71275b1748487659e91b") version("6.5.0", sha256="8a2f71493e54ea4d393f4c0075f3ca13df132f172c891825f3ab949cda052c5f") version("6.4.0", sha256="369f91f021be83d294ba6a9bdbe00077625e9fe798a396aceece8970e7dd5838") version("6.3.0", sha256="d2b101e06d20a8a3b638e6021f517a939f49ea6d8347ce40c927c27efe66b28c") From f2bd11cbf439a7ee3ff8c16a838c325915472553 Mon Sep 17 00:00:00 2001 From: George Young Date: Sat, 19 Oct 2024 01:53:23 +0100 Subject: [PATCH 050/615] hicup: new package @0.9.2 (#47008) Co-authored-by: LMS Bioinformatics --- .../repos/builtin/packages/hicup/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hicup/package.py diff --git a/var/spack/repos/builtin/packages/hicup/package.py b/var/spack/repos/builtin/packages/hicup/package.py new file mode 100644 index 00000000000000..daf3f5da39a478 --- /dev/null +++ b/var/spack/repos/builtin/packages/hicup/package.py @@ -0,0 +1,55 @@ +# 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) + +from spack.package import * + + +class Hicup(Package): + """HiCUP: a bioinformatics pipeline for processing Hi-C data""" + + homepage = "https://stevenwingett.github.io/HiCUP" + url = "https://github.com/StevenWingett/HiCUP/archive/refs/tags/v0.9.2.tar.gz" + git = "https://github.com/StevenWingett/HiCUP.git" + + license("LGPL-3.0-only", checked_by="A-N-Other") + + version("0.9.2", sha256="7f9f65669d14fd2499afc4ac87735834b57b8f30b8e5785c4b406ec206cf9d2a") + version("0.8.3", sha256="e2381c2c45e0d79a6d1a2d9a8358b3efe8da727112d262cb0122132012266368") + version("combinations", branch="combinations") + + variant("bowtie2", description="Use bowtie2 aligner", default=True) + variant("bowtie", description="Use bowtie aligner", default=False) + + depends_on("pandoc", type="run") + depends_on("perl", type="run") + depends_on("perl-math-round", type="run") + depends_on("r", type="run") + depends_on("r-stringi@1.7.8:", type="run") + depends_on("r-markdown", type="run") + depends_on("r-tidyverse", type="run") + depends_on("r-plotly", type="run") + depends_on("samtools@0.1.18:", type="run") + # variant dependencies + depends_on("bowtie2", type="run", when="+bowtie2") + depends_on("bowtie", type="run", when="+bowtie") + + def edit(self, spec, prefix): + grep = which("grep") + chmod = which("chmod") + perl_files = grep("-lRr", "#!/usr/bin/perl", ".").splitlines() + for f in perl_files: + filter_file("/usr/bin/perl", self.spec["perl"].command.path, f, backup=False) + filter_file("$Bin", "$RealBin", f, backup=False) + chmod("+x", f) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install("hicup*", prefix.bin) + if self.spec.satisfies("@combinations"): + install("Misc/get_captured_reads", prefix.bin) + else: + install("Misc/hicup_capture", prefix.bin) + install("Conversion/hicup2*", prefix.bin) + install_tree("r_scripts", prefix.bin.r_scripts) From 31bdcd7dc6e105e926cdb3e6a8f5e1137767c545 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Oct 2024 20:29:36 -0500 Subject: [PATCH 051/615] rtd: bump sphinx-rtd-theme to 3.0.1 (#47002) --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index cb766413d951c3..f1d6e8f5a72d72 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -1,7 +1,7 @@ sphinx==7.4.7 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 -sphinx-rtd-theme==2.0.0 +sphinx-rtd-theme==3.0.1 python-levenshtein==0.25.1 docutils==0.20.1 pygments==2.18.0 From 89ab47284f9a5ed892252ae7b09667e7f6d4691f Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Sat, 19 Oct 2024 07:00:25 +0530 Subject: [PATCH 052/615] amduprof: Add v5.0 (#47081) Co-authored-by: vijay kallesh --- .../builtin/packages/amduprof/package.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/amduprof/package.py b/var/spack/repos/builtin/packages/amduprof/package.py index ffd9ba5ccadba8..dc9f4b7e9d2b30 100644 --- a/var/spack/repos/builtin/packages/amduprof/package.py +++ b/var/spack/repos/builtin/packages/amduprof/package.py @@ -16,16 +16,29 @@ class Amduprof(Package): understand the limiters of application performance and evaluate improvements.""" - homepage = "https://developer.amd.com/amd-uprof/" - url = f"file://{os.getcwd()}/AMDuProf_Linux_x64_4.2.850.tar.bz2" + homepage = "https://www.amd.com/en/developer/uprof.html" manual_download = True maintainers("amd-toolchain-support") - version("4.2.850", sha256="f2d7c4eb9ec9c32845ff8f19874c1e6bcb0fa8ab2c12e73addcbf23a6d1bd623") + version( + "5.0.1479", + sha256="065d24d9b84d2ef94ae8a360bf55c74a0f3fe9250b01cc7fb2642495028130d5", + url="file://{0}/AMDuProf_Linux_x64_5.0.1479.tar.bz2".format(os.getcwd()), + preferred=True, + ) + version( + "4.2.850", + sha256="f2d7c4eb9ec9c32845ff8f19874c1e6bcb0fa8ab2c12e73addcbf23a6d1bd623", + url="file://{0}/AMDuProf_Linux_x64_4.2.850.tar.bz2".format(os.getcwd()), + ) depends_on("binutils@2.27:", type="run") + # Licensing + license_required = True + license_url = "https://www.amd.com/en/developer/uprof/uprof-eula.html" + conflicts("platform=darwin") requires("target=x86_64:", msg="AMD uProf available only on x86_64") From d47e726b76d6fe900e5a0440ebae4b0fd843c406 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Oct 2024 20:34:14 -0500 Subject: [PATCH 053/615] libcgroup: add v3.1.0 (fixes CVE) (#46945) --- .../builtin/packages/libcgroup/package.py | 24 +++++++++++++------ .../builtin/packages/linux-pam/package.py | 1 + 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/libcgroup/package.py b/var/spack/repos/builtin/packages/libcgroup/package.py index 98779767171266..67cd8e8ec24899 100644 --- a/var/spack/repos/builtin/packages/libcgroup/package.py +++ b/var/spack/repos/builtin/packages/libcgroup/package.py @@ -9,17 +9,20 @@ class Libcgroup(AutotoolsPackage): """Library of control groups.""" - homepage = "https://sourceforge.net/projects/libcg/" - url = "https://sourceforge.net/projects/libcg/files/libcgroup/v0.41/libcgroup-0.41.tar.bz2" + homepage = "https://github.com/libcgroup/libcgroup/" + url = "https://github.com/libcgroup/libcgroup/releases/download/v3.1.0/libcgroup-3.1.0.tar.gz" license("LGPL-2.1-only") - version("0.41", sha256="e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51") - version("0.37", sha256="15c8f3febb546530d3495af4e4904b3189c273277ca2d8553dec882cde1cd0f6") - version("0.36", sha256="8dcd2ae220435b3de736d3efb0023fdf1192d7a7f4032b439f3cf5342cff7b4c") + version("3.1.0", sha256="976ec4b1e03c0498308cfd28f1b256b40858f636abc8d1f9db24f0a7ea9e1258") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-14348 + version("0.41", sha256="e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51") + version("0.37", sha256="15c8f3febb546530d3495af4e4904b3189c273277ca2d8553dec882cde1cd0f6") + version("0.36", sha256="8dcd2ae220435b3de736d3efb0023fdf1192d7a7f4032b439f3cf5342cff7b4c") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("m4", type="build") depends_on("autoconf", type="build") @@ -28,3 +31,10 @@ class Libcgroup(AutotoolsPackage): depends_on("bison", type="build") depends_on("flex", type="build") depends_on("linux-pam") + depends_on("systemd", when="@3.1:") + + def url_for_version(self, version): + if self.spec.satisfies("@2.0.1:"): + return f"https://github.com/libcgroup/libcgroup/releases/download/v{version}/libcgroup-{version}.tar.gz" + else: + return f"https://github.com/libcgroup/libcgroup/releases/download/v{version}/libcgroup-{version}.tar.bz2" diff --git a/var/spack/repos/builtin/packages/linux-pam/package.py b/var/spack/repos/builtin/packages/linux-pam/package.py index 484e9e2cb9a5d2..265a96e4a6a678 100644 --- a/var/spack/repos/builtin/packages/linux-pam/package.py +++ b/var/spack/repos/builtin/packages/linux-pam/package.py @@ -31,6 +31,7 @@ class LinuxPam(AutotoolsPackage): variant("lastlog", default=False, description="Build pam_lastlog model") variant("regenerate-docu", default=False, description="Regenerate docs") + depends_on("pkgconfig", type="build") depends_on("libtirpc") depends_on("libxcrypt") depends_on("xauth", when="+xauth") From ba953352a1946b70e638346758333a7d3ca3c524 Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Fri, 18 Oct 2024 22:36:22 -0400 Subject: [PATCH 054/615] mapl: add 2.50.1 (#47087) --- var/spack/repos/builtin/packages/mapl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index ed7898a9369776..9e5a5c5697f4ee 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -38,6 +38,7 @@ class Mapl(CMakePackage): version("develop", branch="develop") version("main", branch="main") + version("2.50.1", sha256="26dd7a3ec82d484d60a559bb90a20ad9a2a717af52c25b6a752dd971aeeb5075") version("2.50.0", sha256="12282e547936f667f85c95d466273dcbaccbd600add72fa5981c0c734ccb1f7d") version("2.49.1", sha256="975e349c7ff8be65d4e63f2a6adf74ca96127628505dbce16c7ba7a3901edc70") version("2.49.0", sha256="fdf4d48bd38abd1059180b123c5d9fdc2781992c783244ddc51ab0f2ef63dd67") From dc160e3a52e77f50efb9b2e2ebf1ebd9ed7914de Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Fri, 18 Oct 2024 23:40:41 -0400 Subject: [PATCH 055/615] eza: add the current version 0.20.4 (#47086) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/eza/package.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/eza/package.py b/var/spack/repos/builtin/packages/eza/package.py index 98e1582ff6ac15..321b4aab22e6bf 100644 --- a/var/spack/repos/builtin/packages/eza/package.py +++ b/var/spack/repos/builtin/packages/eza/package.py @@ -14,6 +14,23 @@ class Eza(CargoPackage): maintainers("trws") - license("MIT") + license("EUPL-1.2", when="@0.20:", checked_by="pranav-sivaraman") + license("MIT", when="@:0.19", checked_by="pranav-sivaraman") + version("0.20.4", sha256="5f25e866521c310d9530b9bbabeb288ad8d9cd208adee79582dde79bdd51c470") version("0.15.3", sha256="09093e565913104acb7a8eba974f8067c95566b6fbedf31138c9923a8cfde42f") + + depends_on("rust@1.70:", when="@0.15.3:") + + @run_after("install") + def install_completions(self): + package_completions_path = f"{self.stage.source_path}/completions" + + mkdirp(bash_completion_path(self.prefix)) + copy(f"{package_completions_path}/bash/eza", bash_completion_path(self.prefix)) + + mkdirp(zsh_completion_path(self.prefix)) + copy(f"{package_completions_path}/zsh/_eza", zsh_completion_path(self.prefix)) + + mkdirp(fish_completion_path(self.prefix)) + copy(f"{package_completions_path}/fish/eza.fish", fish_completion_path(self.prefix)) From adcd05b36565359fd6d48e20e94eb5bfcb37ddae Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Fri, 18 Oct 2024 23:50:57 -0400 Subject: [PATCH 056/615] sccache: new package (ccache-like tool) (#47090) * sccache: add new package * sccache: add older versions and minimum rust versions * sccache: add more minimum rust versions * sccache: add sccache executable and tag as build-tools * sccache: add dist-server * sccache: add determine_version and determin_variants * sccache: add sccache-dist executable * sccache: fix style * Update var/spack/repos/builtin/packages/sccache/package.py * In case building very old sccache <= 5 is not needed with these older rust version is not needed, they can be omitted. * sccache: drop older versions Co-authored-by: Bernhard Kaindl * sccache: add openssl dependency * sccache: openssl is a linux only dependency? --------- Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/sccache/package.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sccache/package.py diff --git a/var/spack/repos/builtin/packages/sccache/package.py b/var/spack/repos/builtin/packages/sccache/package.py new file mode 100644 index 00000000000000..23fbfe8b770776 --- /dev/null +++ b/var/spack/repos/builtin/packages/sccache/package.py @@ -0,0 +1,65 @@ +# 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 re + +import spack.build_systems +from spack.package import * + + +class Sccache(CargoPackage): + """Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids + compilation when possible. Sccache has the capability to utilize caching in + remote storage environments, including various cloud storage options, or + alternatively, in local storage.""" + + homepage = "https://github.com/mozilla/sccache" + url = "https://github.com/mozilla/sccache/archive/refs/tags/v0.8.2.tar.gz" + + tags = ["build-tools"] + + executables = [r"^sccache$", r"^sscache-dist$"] + + license("Apache-2.0", checked_by="pranav-sivaraman") + + version("0.8.2", sha256="2b3e0ef8902fe7bcdcfccf393e29f4ccaafc0194cbb93681eaac238cdc9b94f8") + + depends_on("rust@1.75:", when="@0.8.2:") + depends_on("rust@1.70:", when="@0.7.7:") + depends_on("rust@1.67.1:") # for 0.6/0.7.1 and newer, but may work for even older versions. + depends_on("pkgconfig", type="build", when="platform=linux") + + depends_on("openssl", when="platform=linux") + + variant( + "dist-server", + default=False, + description="Enables the sccache-dist binary", + when="platform=linux", + ) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.match(r"sccache (\S+)", output) + return match.group(1) if match else None + + @classmethod + def determine_variants(cls, exes, version_str): + if any(os.path.basename(path) == "sccache-dist" for path in exes): + return "+dist-server" + else: + return "~dist-server" + + +class CargoBuilder(spack.build_systems.cargo.CargoBuilder): + + @property + def build_args(self): + if self.spec.satisfies("+dist-server"): + return ["--features=dist-server"] + + return [] From 011ff48f82bf7bb6be685f4f573b870659c8762e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 19 Oct 2024 12:12:13 +0200 Subject: [PATCH 057/615] build(deps): bump python-levenshtein in /lib/spack/docs (#46494) Bumps [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) from 0.25.1 to 0.26.0. - [Release notes](https://github.com/rapidfuzz/python-Levenshtein/releases) - [Changelog](https://github.com/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md) - [Commits](https://github.com/rapidfuzz/python-Levenshtein/compare/v0.25.1...v0.26.0) --- updated-dependencies: - dependency-name: python-levenshtein dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index f1d6e8f5a72d72..e6a8fdfe064d33 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -2,7 +2,7 @@ sphinx==7.4.7 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 sphinx-rtd-theme==3.0.1 -python-levenshtein==0.25.1 +python-levenshtein==0.26.0 docutils==0.20.1 pygments==2.18.0 urllib3==2.2.3 From 9b8c06a049913ff15dc5eac7072da8137f51bf2d Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sat, 19 Oct 2024 15:45:59 +0200 Subject: [PATCH 058/615] spack external find: show backtrace on error when --backtrace (#47082) --- lib/spack/spack/detection/path.py | 12 +++++++++--- lib/spack/spack/error.py | 3 +++ lib/spack/spack/main.py | 12 ++++-------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/spack/spack/detection/path.py b/lib/spack/spack/detection/path.py index e8081f6e3c6e18..d529f94f290ee6 100644 --- a/lib/spack/spack/detection/path.py +++ b/lib/spack/spack/detection/path.py @@ -11,6 +11,7 @@ import os.path import re import sys +import traceback import warnings from typing import Dict, Iterable, List, Optional, Set, Tuple, Type @@ -18,6 +19,7 @@ import llnl.util.lang import llnl.util.tty +import spack.error import spack.spec import spack.util.elf as elf_utils import spack.util.environment @@ -274,8 +276,12 @@ def detect_specs( ) except Exception as e: specs = [] + if spack.error.SHOW_BACKTRACE: + details = traceback.format_exc() + else: + details = f"[{e.__class__.__name__}: {e}]" warnings.warn( - f'error detecting "{pkg.name}" from prefix {candidate_path} [{str(e)}]' + f'error detecting "{pkg.name}" from prefix {candidate_path}: {details}' ) if not specs: @@ -449,9 +455,9 @@ def by_path( llnl.util.tty.debug( f"[EXTERNAL DETECTION] Skipping {pkg_name}: timeout reached" ) - except Exception as e: + except Exception: llnl.util.tty.debug( - f"[EXTERNAL DETECTION] Skipping {pkg_name}: exception occured {e}" + f"[EXTERNAL DETECTION] Skipping {pkg_name}: {traceback.format_exc()}" ) return result diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index edb4b9e89fb262..45a39a4f201d97 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -12,6 +12,9 @@ #: this is module-scoped because it needs to be set very early debug = 0 +#: whether to show a backtrace when an error is printed, enabled with --backtrace. +SHOW_BACKTRACE = False + class SpackError(Exception): """This is the superclass for all Spack errors. diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index c0bb3d33552776..7493e993ab65c7 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -102,9 +102,6 @@ spack_ld_library_path = os.environ.get("LD_LIBRARY_PATH", "") -#: Whether to print backtraces on error -SHOW_BACKTRACE = False - def add_all_commands(parser): """Add all spack subcommands to the parser.""" @@ -527,8 +524,7 @@ def setup_main_options(args): if args.debug or args.backtrace: spack.error.debug = True - global SHOW_BACKTRACE - SHOW_BACKTRACE = True + spack.error.SHOW_BACKTRACE = True if args.debug: spack.util.debug.register_interrupt_handler() @@ -1021,19 +1017,19 @@ def main(argv=None): e.die() # gracefully die on any SpackErrors except KeyboardInterrupt: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: raise sys.stderr.write("\n") tty.error("Keyboard interrupt.") return signal.SIGINT.value except SystemExit as e: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: traceback.print_exc() return e.code except Exception as e: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: raise tty.error(e) return 3 From ca4df91e7df5ae523f93b182574bc7d9cc9cb066 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 19 Oct 2024 17:08:25 +0200 Subject: [PATCH 059/615] damask: add 3.0.1 (#47093) --- var/spack/repos/builtin/packages/damask-grid/package.py | 8 +++++--- var/spack/repos/builtin/packages/damask-mesh/package.py | 8 +++++--- var/spack/repos/builtin/packages/damask/package.py | 7 ++++++- var/spack/repos/builtin/packages/py-damask/package.py | 5 +++-- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/damask-grid/package.py b/var/spack/repos/builtin/packages/damask-grid/package.py index bf9dd8b5f20890..35398ebf7715d5 100644 --- a/var/spack/repos/builtin/packages/damask-grid/package.py +++ b/var/spack/repos/builtin/packages/damask-grid/package.py @@ -10,13 +10,14 @@ class DamaskGrid(CMakePackage): """Grid solver for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" @@ -43,6 +44,7 @@ class DamaskGrid(CMakePackage): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("petsc@3.21:3.22", when="@3.0.1:") depends_on("petsc@3.21", when="@3.0.0-beta2:") depends_on("petsc@3.20.3:3.20", when="@3.0.0-beta") depends_on("petsc@3.20.2:3.20", when="@3.0.0-alpha8") @@ -60,7 +62,7 @@ class DamaskGrid(CMakePackage): # proper initialization of temperature to avoid segmentation fault. created by @MarDiehl patch("T-init.patch", when="@3.0.0-alpha7") - # relax Fortran sourc limit to 132 char to enable PETSc macro expansion. created by @MarDiehl + # relax Fortran source limit to 132 char to enable PETSc macro expansion. created by @MarDiehl patch("long-lines.patch", when="@3.0.0-alpha7") patch("CMakeDebugRelease.patch", when="@3.0.0-alpha4") diff --git a/var/spack/repos/builtin/packages/damask-mesh/package.py b/var/spack/repos/builtin/packages/damask-mesh/package.py index 5839e5d1f4235c..c7e13df7837903 100644 --- a/var/spack/repos/builtin/packages/damask-mesh/package.py +++ b/var/spack/repos/builtin/packages/damask-mesh/package.py @@ -10,13 +10,14 @@ class DamaskMesh(CMakePackage): """Mesh solver for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" @@ -43,6 +44,7 @@ class DamaskMesh(CMakePackage): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("petsc@3.21:3.22", when="@3.0.1:") depends_on("petsc@3.21", when="@3.0.0-beta2:") depends_on("petsc@3.20.3:3.20", when="@3.0.0-beta") depends_on("petsc@3.20.2:3.20", when="@3.0.0-alpha8") @@ -57,7 +59,7 @@ class DamaskMesh(CMakePackage): depends_on("hdf5@1.10:+mpi+fortran") depends_on("libfyaml", when="@3.0.0-alpha7:") - # relax Fortran sourc limit to 132 char to enable PETSc macro expansion. created by @MarDiehl + # relax Fortran source limit to 132 char to enable PETSc macro expansion. created by @MarDiehl patch("long-lines.patch", when="@3.0.0-alpha7") patch("CMakeDebugRelease.patch", when="@3.0.0-alpha4") diff --git a/var/spack/repos/builtin/packages/damask/package.py b/var/spack/repos/builtin/packages/damask/package.py index ae9a62ef06c6f0..91c39a4e279d45 100644 --- a/var/spack/repos/builtin/packages/damask/package.py +++ b/var/spack/repos/builtin/packages/damask/package.py @@ -24,10 +24,11 @@ class Damask(BundlePackage): """ - homepage = "https://damask.mpie.de" + homepage = "https://damask-multiphysics.org" maintainers("MarDiehl") + version("3.0.1") version("3.0.0") version("3.0.0-beta2") version("3.0.0-beta") @@ -37,6 +38,10 @@ class Damask(BundlePackage): version("3.0.0-alpha5") version("3.0.0-alpha4") + depends_on("damask-grid@3.0.1", when="@3.0.1", type="run") + depends_on("damask-mesh@3.0.1", when="@3.0.1", type="run") + depends_on("py-damask@3.0.1", when="@3.0.1", type="run") + depends_on("damask-grid@3.0.0", when="@3.0.0", type="run") depends_on("damask-mesh@3.0.0", when="@3.0.0", type="run") depends_on("py-damask@3.0.0", when="@3.0.0", type="run") diff --git a/var/spack/repos/builtin/packages/py-damask/package.py b/var/spack/repos/builtin/packages/py-damask/package.py index 18534b1a937e53..a51e98a7ca5c3d 100644 --- a/var/spack/repos/builtin/packages/py-damask/package.py +++ b/var/spack/repos/builtin/packages/py-damask/package.py @@ -10,13 +10,14 @@ class PyDamask(PythonPackage): """Pre- and post-processing tools for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" From 296f99d8003f748b64bff9906f8a0b29963a53a1 Mon Sep 17 00:00:00 2001 From: Taylor Asplund <62564740+DrCrinkle@users.noreply.github.com> Date: Sat, 19 Oct 2024 08:09:00 -0700 Subject: [PATCH 060/615] icon: add 2024.07 & 2024.10 (#47092) --- var/spack/repos/builtin/packages/icon/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/icon/package.py b/var/spack/repos/builtin/packages/icon/package.py index d5066545509456..229e3942866839 100644 --- a/var/spack/repos/builtin/packages/icon/package.py +++ b/var/spack/repos/builtin/packages/icon/package.py @@ -20,6 +20,8 @@ class Icon(AutotoolsPackage): license("BSD-3-Clause", checked_by="skosukhin") + version("2024.10", sha256="5c461c783eb577c97accd632b18140c3da91c1853d836ca2385f376532e9bad1") + version("2024.07", sha256="f53043ba1b36b8c19d0d2617ab601c3b9138b90f8ff8ca6db0fd079665eb5efa") version("2024.01-1", sha256="3e57608b7e1e3cf2f4cb318cfe2fdb39678bd53ca093955d99570bd6d7544184") version("2024.01", sha256="d9408fdd6a9ebf5990298e9a09c826e8c15b1e79b45be228f7a5670a3091a613") From 411ea019f1b3fba51936fcb64978a0aa8ec7f624 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov <30537612+mkstoyanov@users.noreply.github.com> Date: Sat, 19 Oct 2024 11:12:41 -0400 Subject: [PATCH 061/615] heffte: Update @develop for newer cmake (#47067) --- var/spack/repos/builtin/packages/heffte/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/heffte/package.py b/var/spack/repos/builtin/packages/heffte/package.py index 7ad6c880435f5c..9496e1e23af74a 100644 --- a/var/spack/repos/builtin/packages/heffte/package.py +++ b/var/spack/repos/builtin/packages/heffte/package.py @@ -142,7 +142,12 @@ def test_make_test(self): cmake_dir = self.test_suite.current_test_cache_dir.testing options = [cmake_dir] - options.append(self.define("Heffte_DIR", self.spec.prefix.lib.cmake.Heffte)) + # changing the default install path search to newer cmake convention + if self.spec.satisfies("@develop"): + options.append(self.define("Heffte_ROOT", self.spec.prefix)) + else: + options.append(self.define("Heffte_DIR", self.spec.prefix.lib.cmake.Heffte)) + if self.spec.satisfies("+rocm"): # path name is 'hsa-runtime64' but python cannot have '-' in variable name hsa_runtime = join_path(self.spec["hsa-rocr-dev"].prefix.lib.cmake, "hsa-runtime64") From 4de8344c16fd32f7c94d1122b9f8a8af11b75193 Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam Date: Sat, 19 Oct 2024 20:43:27 +0530 Subject: [PATCH 062/615] hipsolver: add version 6.2.1 for rocm-6.2.1 (#47076) --- var/spack/repos/builtin/packages/hipsolver/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 82c35643e70c44..9769f44ebb1ceb 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -29,6 +29,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop") version("master", branch="master") + version("6.2.1", sha256="614e3c0bc11bfa84acd81d46db63f3852a750adaaec094b7701ab7b996cc8e93") version("6.2.0", sha256="637577a9cc38e4865894dbcd7eb35050e3de5d45e6db03472e836b318602a84d") version("6.1.2", sha256="406a8e5b82daae2fc03e0a738b5a054ade01bb41785cee4afb9e21c7ec91d492") version("6.1.1", sha256="01d4553458f417824807c069cacfc65d23f6cac79536158473b4356986c8fafd") @@ -101,6 +102,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): "6.1.1", "6.1.2", "6.2.0", + "6.2.1", "master", "develop", ]: From 4d616e116889c78ecb80eed4707395f6d23836fd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 19 Oct 2024 17:15:52 +0200 Subject: [PATCH 063/615] py-torchmetrics: add v1.5.0 (#47095) --- var/spack/repos/builtin/packages/py-torchmetrics/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-torchmetrics/package.py b/var/spack/repos/builtin/packages/py-torchmetrics/package.py index 70bc52fafa24bd..893a1d96c19e85 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -15,6 +15,7 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.5.0", sha256="c18e68bab4104ad7d2285af601ddc6dc04f9f3b7cafaa8ad13fa1dcc539e33b6") version("1.4.3", sha256="5554a19167e91f543afe82ff58a01059c8eec854359ad22896449c2c8fb0ad89") version("1.4.2", sha256="7a40cbec85e5645090812b87601696b4adf158294ec8c407ae58a71710938b87") version("1.4.0", sha256="0b1e5acdcc9beb05bfe369d3d56cfa5b143f060ebfd6079d19ccc59ba46465b3") @@ -71,8 +72,9 @@ class PyTorchmetrics(PythonPackage): depends_on("py-scipy@1.0.1:", when="+image") depends_on("py-torchvision@0.8:", when="+image") depends_on("py-torch-fidelity", when="+image") - depends_on("py-lpips", when="@:1.2.0+image") # Historical dependencies depends_on("py-pretty-errors@1.2.25", when="@1.4.0") depends_on("py-pydeprecate@0.3", when="@0.7:0.8") + + depends_on("py-lpips", when="@:1.2.0+image") From b0f1a0eb7ca27a5432c69fe8bf2171a590318eb7 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sat, 19 Oct 2024 10:16:55 -0500 Subject: [PATCH 064/615] pkgs: homepage fixes for ill-formed urls (#47038) --- var/spack/repos/builtin/packages/aespipe/package.py | 2 +- .../builtin/packages/py-asdf-transform-schemas/package.py | 2 +- var/spack/repos/builtin/packages/py-azure-nspkg/package.py | 2 +- var/spack/repos/builtin/packages/py-frozendict/package.py | 2 +- var/spack/repos/builtin/packages/py-prov/package.py | 2 +- var/spack/repos/builtin/packages/py-pythonsollya/package.py | 2 +- var/spack/repos/builtin/packages/rstudio/package.py | 2 +- var/spack/repos/builtin/packages/shengbte/package.py | 4 ++-- var/spack/repos/builtin/packages/treesub/package.py | 2 +- var/spack/repos/builtin/packages/whizard/package.py | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/aespipe/package.py b/var/spack/repos/builtin/packages/aespipe/package.py index 3f34992709acc5..3c7cfa415b5252 100644 --- a/var/spack/repos/builtin/packages/aespipe/package.py +++ b/var/spack/repos/builtin/packages/aespipe/package.py @@ -10,7 +10,7 @@ class Aespipe(AutotoolsPackage): """aespipe program is AES encrypting or decrypting pipe. It reads from standard input and writes to standard output.""" - homepage = "https//loop-aes.sourceforge.net/" + homepage = "https://sourceforge.net/projects/loop-aes/" url = "https://sourceforge.net/projects/loop-aes/files/aespipe/v2.4f/aespipe-v2.4f.tar.bz2" license("Intel") diff --git a/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py b/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py index 7593dae246d10c..d714dbb40940a8 100644 --- a/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py +++ b/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py @@ -9,7 +9,7 @@ class PyAsdfTransformSchemas(PythonPackage): """ASDF schemas for transforms""" - homepage = "asdf-transform-schemas.readthedocs.io" + homepage = "https://asdf-transform-schemas.readthedocs.io" pypi = "asdf_transform_schemas/asdf_transform_schemas-0.3.0.tar.gz" maintainers("lgarrison") diff --git a/var/spack/repos/builtin/packages/py-azure-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-nspkg/package.py index 7153b8b926373e..e7b85a8cee7851 100644 --- a/var/spack/repos/builtin/packages/py-azure-nspkg/package.py +++ b/var/spack/repos/builtin/packages/py-azure-nspkg/package.py @@ -10,7 +10,7 @@ class PyAzureNspkg(PythonPackage): """Microsoft Azure Namespace Package [Internal].""" - homepage = "hhttps://github.com/Azure/azure-sdk-for-python" + homepage = "https://github.com/Azure/azure-sdk-for-python" pypi = "azure-nspkg/azure-nspkg-3.0.2.zip" version("3.0.2", sha256="e7d3cea6af63e667d87ba1ca4f8cd7cb4dfca678e4c55fc1cedb320760e39dd0") diff --git a/var/spack/repos/builtin/packages/py-frozendict/package.py b/var/spack/repos/builtin/packages/py-frozendict/package.py index 0083d1b9b64b25..c3f5de6d0144c4 100644 --- a/var/spack/repos/builtin/packages/py-frozendict/package.py +++ b/var/spack/repos/builtin/packages/py-frozendict/package.py @@ -9,7 +9,7 @@ class PyFrozendict(PythonPackage): """An immutable dictionary""" - homepage = "An immutable dictionary" + homepage = "https://github.com/Marco-Sulla/python-frozendict" pypi = "frozendict/frozendict-1.2.tar.gz" license("LGPL-3.0-only") diff --git a/var/spack/repos/builtin/packages/py-prov/package.py b/var/spack/repos/builtin/packages/py-prov/package.py index fa68b56dae151f..8c62abeef1c210 100644 --- a/var/spack/repos/builtin/packages/py-prov/package.py +++ b/var/spack/repos/builtin/packages/py-prov/package.py @@ -13,7 +13,7 @@ class PyProv(PythonPackage): PROV-O (RDF) """ - homepage = "prov.readthedocs.io/" + homepage = "https://prov.readthedocs.io/" pypi = "prov/prov-2.0.0.tar.gz" license("MIT") diff --git a/var/spack/repos/builtin/packages/py-pythonsollya/package.py b/var/spack/repos/builtin/packages/py-pythonsollya/package.py index c8f427f873de9c..1603ea1dce4727 100644 --- a/var/spack/repos/builtin/packages/py-pythonsollya/package.py +++ b/var/spack/repos/builtin/packages/py-pythonsollya/package.py @@ -9,7 +9,7 @@ class PyPythonsollya(PythonPackage): """Python wrapper for the Sollya library""" - homepage = "Python wrapper for the Sollya library" + homepage = "https://gitlab.com/metalibm-dev/pythonsollya" url = "https://gitlab.com/metalibm-dev/pythonsollya/-/archive/release-0.4.0-alpha0/pythonsollya-release-0.4.0-alpha0.tar.gz" license("CECILL-2.1") diff --git a/var/spack/repos/builtin/packages/rstudio/package.py b/var/spack/repos/builtin/packages/rstudio/package.py index 569e9909e2b6e3..09fa89332c7404 100644 --- a/var/spack/repos/builtin/packages/rstudio/package.py +++ b/var/spack/repos/builtin/packages/rstudio/package.py @@ -11,7 +11,7 @@ class Rstudio(CMakePackage): """RStudio is an integrated development environment (IDE) for R.""" - homepage = "www.rstudio.com/products/rstudio/" + homepage = "https://www.rstudio.com/products/rstudio/" url = "https://github.com/rstudio/rstudio/archive/refs/tags/v1.4.1717.tar.gz" version("1.4.1717", sha256="3af234180fd7cef451aef40faac2c7b52860f14a322244c1c7aede029814d261") diff --git a/var/spack/repos/builtin/packages/shengbte/package.py b/var/spack/repos/builtin/packages/shengbte/package.py index c56dac10cd14ea..2e67bfca1be3bd 100644 --- a/var/spack/repos/builtin/packages/shengbte/package.py +++ b/var/spack/repos/builtin/packages/shengbte/package.py @@ -9,8 +9,8 @@ class Shengbte(MakefilePackage): """ShengBTE is a software package for solving the Boltzmann Transport Equation for phonons.""" - homepage = "www.shengbte.org" - url = "www.shengbte.org/downloads/ShengBTE-v1.1.1-8a63749.tar.bz2" + homepage = "https://www.shengbte.org" + url = "https://www.shengbte.org/downloads/ShengBTE-v1.1.1-8a63749.tar.bz2" license("GPL-3.0-only") diff --git a/var/spack/repos/builtin/packages/treesub/package.py b/var/spack/repos/builtin/packages/treesub/package.py index ac5e699057bf0b..c82ffcc120a376 100644 --- a/var/spack/repos/builtin/packages/treesub/package.py +++ b/var/spack/repos/builtin/packages/treesub/package.py @@ -15,7 +15,7 @@ class Treesub(Package): occurred on a given branch. Originally written for colleagues at the MRC NIMR.""" - homepage = "https:/github.com/tamuri/treesub" + homepage = "https://github.com/tamuri/treesub" url = "https://github.com/tamuri/treesub/archive/v0.2.tar.gz" version("0.2", sha256="58b0d2638cf9ae1ad8705df26a57c32b52a69f50e7954debbd678c82772fdc56") diff --git a/var/spack/repos/builtin/packages/whizard/package.py b/var/spack/repos/builtin/packages/whizard/package.py index 03f8da53068950..c6481fa5713b5a 100644 --- a/var/spack/repos/builtin/packages/whizard/package.py +++ b/var/spack/repos/builtin/packages/whizard/package.py @@ -13,7 +13,7 @@ class Whizard(AutotoolsPackage): of multi-particle scattering cross sections and simulated event samples.""" - homepage = "whizard.hepforge.org" + homepage = "https://whizard.hepforge.org" urls = [ "https://launchpad.net/whizard/3.1.x/3.1.2/+download/whizard-3.1.2.tar.gz", "https://whizard.hepforge.org/downloads/?f=whizard-2.8.3.tar.gz", From bc75f23927b69fa35c1873b9591f265b35b7af72 Mon Sep 17 00:00:00 2001 From: snehring <7978778+snehring@users.noreply.github.com> Date: Sat, 19 Oct 2024 10:17:31 -0500 Subject: [PATCH 065/615] gtkplus: swap to at-spi2-core (#47026) Signed-off-by: Shane Nehring --- var/spack/repos/builtin/packages/at-spi2-atk/package.py | 2 +- var/spack/repos/builtin/packages/gtkplus/package.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/at-spi2-atk/package.py b/var/spack/repos/builtin/packages/at-spi2-atk/package.py index 85233ec111fcf1..584d008a5d4a6d 100644 --- a/var/spack/repos/builtin/packages/at-spi2-atk/package.py +++ b/var/spack/repos/builtin/packages/at-spi2-atk/package.py @@ -25,7 +25,7 @@ class AtSpi2Atk(MesonPackage): depends_on("c", type="build") # generated depends_on("pkgconfig", type="build") - depends_on("at-spi2-core@2.28.0:") + depends_on("at-spi2-core@2.28.0:2.45.1") depends_on("atk@2.28.1:") def url_for_version(self, version): diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 0db55334b023df..889a789cff2e98 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -61,8 +61,10 @@ class Gtkplus(AutotoolsPackage, MesonPackage): depends_on("glib@2.57.2:") depends_on("pango@1.41.0:+X") depends_on("fribidi@0.19.7:") - depends_on("atk@2.35.1:") - depends_on("at-spi2-atk@2.15.1:", when="@3:") + # atk was also merged into at-spi2-core, but gtk3 doesn't want to build without it + depends_on("atk@2.35.1:", when="@:3") + # at-spi2-atk was merged into at-spi2-core, but gtk3 is picky + depends_on("at-spi2-core@2.46:2.48", when="@:3") depends_on("cairo@1.14.0:+X+pdf+gobject") depends_on("gdk-pixbuf@2.30.0:") depends_on("gobject-introspection@1.39.0:") From 117480dba9d9f16dee1a3ec111d808452d9b3850 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 20 Oct 2024 20:56:41 +0200 Subject: [PATCH 066/615] py-geocube: add v0.7.0 (#47100) --- .../repos/builtin/packages/py-geocube/package.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-geocube/package.py b/var/spack/repos/builtin/packages/py-geocube/package.py index 6f691751c6f2a1..ea34cf9ddccbb8 100644 --- a/var/spack/repos/builtin/packages/py-geocube/package.py +++ b/var/spack/repos/builtin/packages/py-geocube/package.py @@ -12,25 +12,28 @@ class PyGeocube(PythonPackage): homepage = "https://github.com/corteva/geocube" pypi = "geocube/geocube-0.0.17.tar.gz" - maintainers("adamjstewart") - license("BSD-3-Clause") + maintainers("adamjstewart") + version("0.7.0", sha256="986ff46e78d7dede09a1c93bff1642c24aaa5590acdc774049436f86f0989ca4") version("0.3.2", sha256="71ff0228f1ef44e3a649d29a045ff7e2a2094a5cfca30fadab8f88f4ec23a41d") version("0.3.1", sha256="5c97131010cd8d556a5fad2a3824452120640ac33a6a45b6ca9ee3c28f2e266f") version("0.0.17", sha256="bf8da0fa96d772ebaea0b98bafa0ba5b8639669d5feb07465d4255af177bddc0") - depends_on("python@3.7:", type=("build", "run")) - depends_on("python@3.8:", when="@0.1.1:", type=("build", "run")) + depends_on("python@3.10:", when="@0.4.3:", type=("build", "run")) depends_on("py-setuptools", type="build") depends_on("py-appdirs", type=("build", "run")) depends_on("py-click@6.0:", type=("build", "run")) - depends_on("py-datacube", when="@:0.1", type=("build", "run")) + depends_on("py-geopandas@1:", when="@0.6:", type=("build", "run")) depends_on("py-geopandas@0.7:", type=("build", "run")) depends_on("py-odc-geo", when="@0.2:", type=("build", "run")) + depends_on("py-rasterio@1.3:", when="@0.4.3:", type=("build", "run")) depends_on("py-rasterio", type=("build", "run")) depends_on("py-rioxarray@0.4:", type=("build", "run")) depends_on("py-scipy", when="@0.0.18:", type=("build", "run")) depends_on("py-xarray@0.17:", type=("build", "run")) depends_on("py-pyproj@2:", type=("build", "run")) depends_on("py-numpy@1.20:", when="@0.3:", type=("build", "run")) + + # Historical dependencies + depends_on("py-datacube", when="@:0.1", type=("build", "run")) From 260b36e2725131139616fc4abbe48f916ab0da31 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Sun, 20 Oct 2024 22:26:18 -0700 Subject: [PATCH 067/615] Docs: clarify include path options (#47083) --- lib/spack/docs/environments.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst index eec185eab89e20..2a9bb5c3f2f347 100644 --- a/lib/spack/docs/environments.rst +++ b/lib/spack/docs/environments.rst @@ -673,6 +673,9 @@ them to the environment. Environments can include files or URLs. File paths can be relative or absolute. URLs include the path to the text for individual files or can be the path to a directory containing configuration files. +Spack supports ``file``, ``http``, ``https`` and ``ftp`` protocols (or +schemes). Spack-specific, environment and user path variables may be +used in these paths. See :ref:`config-file-variables` for more information. ^^^^^^^^^^^^^^^^^^^^^^^^ Configuration precedence From a00fddef4ef790468c62061dce455b5b03dc79f2 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:56:53 +0530 Subject: [PATCH 068/615] lammps: updates for AOCC-5 and zen5 (#47014) Co-authored-by: viveshar --- var/spack/repos/builtin/packages/lammps/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index a74980abfdf749..fc58908d58ee9e 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -884,11 +884,16 @@ def cmake_args(self): "-O3 -fno-math-errno -fno-unroll-loops " "-fveclib=AMDLIBM -muse-unaligned-vector-move" ) - if spec.satisfies("%aocc@4.1:"): + if spec.satisfies("%aocc@4.1:4.2"): cxx_flags += ( " -mllvm -force-gather-overhead-cost=50" " -mllvm -enable-masked-gather-sequence=false" ) + elif spec.satisfies("%aocc@5.0:"): + cxx_flags += " -mllvm -enable-aggressive-gather" + if spec.target >= "zen5": + cxx_flags += " -fenable-restrict-based-lv" + # add -fopenmp-simd if OpenMP not already turned on if spec.satisfies("~openmp"): cxx_flags += " -fopenmp-simd" From 37fe3b498430ae9c11b60166ed04f5eb602acd5b Mon Sep 17 00:00:00 2001 From: Jordan Galby <67924449+Jordan474@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:40:42 +0200 Subject: [PATCH 069/615] Add old gtkplus 3.22.30 (#40310) This makes it compatible with external glib 2.56 (rhel7/rhel8). Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/gtkplus/package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 889a789cff2e98..158d7adfd71f03 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -24,6 +24,11 @@ class Gtkplus(AutotoolsPackage, MesonPackage): version("3.24.41", sha256="47da61487af3087a94bc49296fd025ca0bc02f96ef06c556e7c8988bd651b6fa") version("3.24.29", sha256="f57ec4ade8f15cab0c23a80dcaee85b876e70a8823d9105f067ce335a8268caa") version("3.24.26", sha256="2cc1b2dc5cad15d25b6abd115c55ffd8331e8d4677745dd3ce6db725b4fff1e9") + version( + "3.22.30", + sha256="a1a4a5c12703d4e1ccda28333b87ff462741dc365131fbc94c218ae81d9a6567", + deprecated=True, + ) version( "3.20.10", sha256="e81da1af1c5c1fee87ba439770e17272fa5c06e64572939814da406859e56b70", @@ -58,7 +63,9 @@ class Gtkplus(AutotoolsPackage, MesonPackage): # depends_on('docbook-xsl', when='@3.24:', type='build') # depends_on('libxslt', when='@3.24:', type='build') depends_on("pkgconfig", type="build") - depends_on("glib@2.57.2:") + depends_on("glib") + depends_on("glib@2.49.4:", when="@3.22:") + depends_on("glib@2.57.2:", when="@3.24:") depends_on("pango@1.41.0:+X") depends_on("fribidi@0.19.7:") # atk was also merged into at-spi2-core, but gtk3 doesn't want to build without it @@ -94,7 +101,7 @@ def patch(self): ) # https://gitlab.gnome.org/GNOME/gtk/-/issues/3776 - if self.spec.satisfies("@3:%gcc@11:"): + if self.spec.satisfies("@3.24:%gcc@11:"): filter_file(" '-Werror=array-bounds',", "", "meson.build", string=True) def setup_run_environment(self, env): From e5a602c1bb39555a5e1440bbe1268fc7aea08459 Mon Sep 17 00:00:00 2001 From: Jordan Galby <67924449+Jordan474@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:08:59 +0200 Subject: [PATCH 070/615] Modules suffixes config are now spec format strings (#38411) --- lib/spack/docs/module_file_support.rst | 6 +++--- lib/spack/spack/modules/common.py | 3 ++- lib/spack/spack/test/data/modules/tcl/suffix-format.yaml | 9 +++++++++ lib/spack/spack/test/modules/tcl.py | 8 ++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 lib/spack/spack/test/data/modules/tcl/suffix-format.yaml diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index fad1e414fcaf16..80e3c2ee668427 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -457,11 +457,11 @@ For instance, the following config options, tcl: all: suffixes: - ^python@3.12: 'python-3.12' + ^python@3: 'python{^python.version}' ^openblas: 'openblas' -will add a ``python-3.12`` version string to any packages compiled with -Python matching the spec, ``python@3.12``. This is useful to know which +will add a ``python-3.12.1`` version string to any packages compiled with +Python matching the spec, ``python@3``. This is useful to know which version of Python a set of Python extensions is associated with. Likewise, the ``openblas`` string is attached to any program that has openblas in the spec, most likely via the ``+blas`` variant specification. diff --git a/lib/spack/spack/modules/common.py b/lib/spack/spack/modules/common.py index 7875ab55616fd8..c770564edddb0a 100644 --- a/lib/spack/spack/modules/common.py +++ b/lib/spack/spack/modules/common.py @@ -527,7 +527,8 @@ def use_name(self): parts = name.split("/") name = os.path.join(*parts) # Add optional suffixes based on constraints - path_elements = [name] + self.conf.suffixes + path_elements = [name] + path_elements.extend(map(self.spec.format, self.conf.suffixes)) return "-".join(path_elements) @property diff --git a/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml b/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml new file mode 100644 index 00000000000000..00328cb0019a7a --- /dev/null +++ b/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml @@ -0,0 +1,9 @@ +enable: + - tcl +tcl: + all: + autoload: none + mpileaks: + suffixes: + mpileaks: 'debug={variants.debug.value}' + '^mpi': 'mpi={^mpi.name}-v{^mpi.version}' diff --git a/lib/spack/spack/test/modules/tcl.py b/lib/spack/spack/test/modules/tcl.py index 6e0fd5c1a5450e..d2a8b18b67aa85 100644 --- a/lib/spack/spack/test/modules/tcl.py +++ b/lib/spack/spack/test/modules/tcl.py @@ -377,6 +377,14 @@ def test_suffixes(self, module_configuration, factory): writer, spec = factory("mpileaks~debug+opt target=x86_64") assert "baz-foo-bar" in writer.layout.use_name + def test_suffixes_format(self, module_configuration, factory): + """Tests adding suffixes as spec format string to module file name.""" + module_configuration("suffix-format") + + writer, spec = factory("mpileaks +debug target=x86_64 ^mpich@3.0.4") + assert "debug=True" in writer.layout.use_name + assert "mpi=mpich-v3.0.4" in writer.layout.use_name + def test_setup_environment(self, modulefile_content, module_configuration): """Tests the internal set-up of run-time environment.""" From 9854c9e5f22c4b511f85d2b6b1341bed86e20148 Mon Sep 17 00:00:00 2001 From: Stephen Sachs Date: Mon, 21 Oct 2024 10:56:36 +0200 Subject: [PATCH 071/615] Build wrf%oneapi in aws-pcluster-x86_64_v4 stack (#47075) --- .../stacks/aws-pcluster-x86_64_v4/spack.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml index 23cc11d9089de6..f81bbf25376b44 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml @@ -9,12 +9,10 @@ spack: # - mpas-model %oneapi - openfoam %gcc - palace %oneapi ^superlu-dist%oneapi # hack: force fortran-rt provider through superlu-dist - # Latest version qunatum-espresso@7.3.1 does not build with oneapi, see https://github.com/spack/spack/pull/46456#issuecomment-2363159511 + # TODO: Find out how to make +ipo cmake flag work. # - quantum-espresso %oneapi - openmpi %oneapi - # TODO: oneapi patch in WRF is broken. It uses link time optimization but the gnu linker. Need to check whether the WRF recipe (in later releases) is better. - # WRf can only run if https://github.com/spack/spack/pull/46589 is merged. - # - wrf %oneapi + - wrf %oneapi - targets: - 'target=x86_64_v4' From f6c9d98c8f078d95560ae660ca198d270e73b4b7 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 21 Oct 2024 12:02:54 +0200 Subject: [PATCH 072/615] docs search: rank api lowest and generated commands low (#47107) --- .readthedocs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.readthedocs.yml b/.readthedocs.yml index ff477536131e6b..9d93ff57d591dd 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -14,3 +14,9 @@ sphinx: python: install: - requirements: lib/spack/docs/requirements.txt + +search: + ranking: + spack.html: -10 + llnl.html: -10 + command_index.html: -9 \ No newline at end of file From 5ca0e94bdd0c7c4ccdb887a338439211cd1c3d90 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 21 Oct 2024 13:21:13 +0200 Subject: [PATCH 073/615] docs: tune ranking further (#47110) promote hand-written docs, demote generated "docs" for sources, modules, packages. --- .readthedocs.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 9d93ff57d591dd..81f2fca0ee7687 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -18,5 +18,24 @@ python: search: ranking: spack.html: -10 + spack.*.html: -10 llnl.html: -10 - command_index.html: -9 \ No newline at end of file + llnl.*.html: -10 + _modules/*: -10 + command_index.html: -9 + basic_usage.html: 5 + configuration.html: 5 + config_yaml.html: 5 + packages_yaml.html: 5 + build_settings.html: 5 + environments.html: 5 + containers.html: 5 + mirrors.html: 5 + module_file_support.html: 5 + repositories.html: 5 + binary_caches.html: 5 + chain.html: 5 + pipelines.html: 5 + packaging_guide.html: 5 + build_systems.html: 4 + build_systems/*: 4 From 3edd68d9810898381298c4c812d3e1d4f9802552 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 21 Oct 2024 13:40:29 +0200 Subject: [PATCH 074/615] docs: do not promote build_systems/* at all (#47111) --- .readthedocs.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 81f2fca0ee7687..012a6e6e0ae1d6 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -37,5 +37,3 @@ search: chain.html: 5 pipelines.html: 5 packaging_guide.html: 5 - build_systems.html: 4 - build_systems/*: 4 From 590be9bba11aff7004cce8c9aed56452ac1a481e Mon Sep 17 00:00:00 2001 From: Valentin Volkl Date: Mon, 21 Oct 2024 16:35:27 +0200 Subject: [PATCH 075/615] root: fix variant detection for spack external find (#47011) * root: fix variant detection for external A few fixes (possibly non-exhaustive) to `spack external find root` Several variants have had `when=` clauses added that need to be propagated to determine_variants. The previously used Version.satifies("") method also has been removed, it seems. It's slightly cumbersome that there is no self.spec to use in determine_variants, but comparisons using Version(version_str) work at least * remove debug printout --- .../repos/builtin/packages/root/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 6e64948e228aec..31990569102be7 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -538,21 +538,26 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "gviz", "+graphviz") _add_variant(v, f, "http", "+http") _add_variant(v, f, ("imt", "tbb"), "+tbb") - _add_variant(v, f, "jemalloc", "+jemalloc") - _add_variant(v, f, "memstat", "+memstat") + if Version(version_str) <= Version("6.28"): + _add_variant(v, f, "jemalloc", "+jemalloc") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, "memstat", "+memstat") _add_variant(v, f, ("minuit", "minuit2"), "+minuit") _add_variant(v, f, "mlp", "+mlp") _add_variant(v, f, "mysql", "+mysql") - _add_variant(v, f, "oracle", "+oracle") + if Version(version_str) <= Version("6.30"): + _add_variant(v, f, "oracle", "+oracle") _add_variant(v, f, "pgsql", "+postgres") - _add_variant(v, f, "pythia6", "+pythia6") + if Version(version_str) <= Version("6.30"): + _add_variant(v, f, "pythia6", "+pythia6") _add_variant(v, f, "pythia8", "+pythia8") _add_variant(v, f, "pyroot", "+python") - _add_variant(v, f, ("qt", "qtgsi"), "+qt4") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, ("qt", "qtgsi"), "+qt4") _add_variant(v, f, "r", "+r") _add_variant(v, f, "roofit", "+roofit") # webui feature renamed to webgui in 6.18 - if Version(version_str).satisfies("@6.18:"): + if Version(version_str) >= Version("6.18"): _add_variant(v, f, ("root7", "webgui"), "+webgui") else: _add_variant(v, f, ("root7", "webui"), "+webgui") @@ -561,7 +566,8 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "spectrum", "+spectrum") _add_variant(v, f, "sqlite", "+sqlite") _add_variant(v, f, "ssl", "+ssl") - _add_variant(v, f, "table", "+table") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, "table", "+table") _add_variant(v, f, "thread", "+threads") _add_variant(v, f, "tmva", "+tmva") _add_variant(v, f, "tmva-cpu", "+tmva-cpu") @@ -572,7 +578,8 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "vc", "+vc") _add_variant(v, f, "vdt", "+vdt") _add_variant(v, f, "veccore", "+veccore") - _add_variant(v, f, "vmc", "+vmc") + if Version(version_str) <= Version("6.25"): + _add_variant(v, f, "vmc", "+vmc") _add_variant(v, f, ("x11", "xft"), "+x") _add_variant(v, f, "xml", "+xml") _add_variant(v, f, "xrootd", "+xrootd") From 4187c57250fbfd50aaa5bb8d08b11daf42cbb83b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 21 Oct 2024 18:03:57 +0200 Subject: [PATCH 076/615] Fix broken `spack find -u` (#47102) fixes #47101 The bug was introduced in #33495, where `spack find was not updated, and wasn't caught by unit tests. Now a Database can accept a custom predicate to select the installation records. A unit test is added to prevent regressions. The weird convention of having `any` as a default value has been replaced by the more commonly used `None`. Signed-off-by: Massimiliano Culpo --- lib/spack/spack/cmd/find.py | 6 +++--- lib/spack/spack/cmd/modules/__init__.py | 5 ++++- lib/spack/spack/database.py | 22 +++++++++++----------- lib/spack/spack/test/cmd/find.py | 4 ++-- lib/spack/spack/test/database.py | 17 +++++++++++++++++ 5 files changed, 37 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 2f25683c5ece6b..afa830fb8e312c 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -174,9 +174,9 @@ def query_arguments(args): if (args.missing or args.only_missing) and not args.only_deprecated: installed.append(InstallStatuses.MISSING) - known = any + predicate_fn = None if args.unknown: - known = False + predicate_fn = lambda x: not spack.repo.PATH.exists(x.spec.name) explicit = any if args.explicit: @@ -184,7 +184,7 @@ def query_arguments(args): if args.implicit: explicit = False - q_args = {"installed": installed, "known": known, "explicit": explicit} + q_args = {"installed": installed, "predicate_fn": predicate_fn, "explicit": explicit} install_tree = args.install_tree upstreams = spack.config.get("upstreams", {}) diff --git a/lib/spack/spack/cmd/modules/__init__.py b/lib/spack/spack/cmd/modules/__init__.py index b11063714f75c7..754813addcdc24 100644 --- a/lib/spack/spack/cmd/modules/__init__.py +++ b/lib/spack/spack/cmd/modules/__init__.py @@ -378,7 +378,10 @@ def refresh(module_type, specs, args): def modules_cmd(parser, args, module_type, callbacks=callbacks): # Qualifiers to be used when querying the db for specs constraint_qualifiers = { - "refresh": {"installed": True, "known": lambda x: not spack.repo.PATH.exists(x)} + "refresh": { + "installed": True, + "predicate_fn": lambda x: spack.repo.PATH.exists(x.spec.name), + } } query_args = constraint_qualifiers.get(args.subparser_name, {}) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 907b73c5db71a6..c1ed06d241c749 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -299,12 +299,9 @@ def __reduce__(self): database. If it is a spec, we'll evaluate ``spec.satisfies(query_spec)`` - known (bool or None): Specs that are "known" are those - for which Spack can locate a ``package.py`` file -- i.e., - Spack "knows" how to install them. Specs that are unknown may - represent packages that existed in a previous version of - Spack, but have since either changed their name or - been removed + predicate_fn: optional predicate taking an InstallRecord as argument, and returning + whether that record is selected for the query. It can be used to craft criteria + that need some data for selection not provided by the Database itself. installed (bool or InstallStatus or typing.Iterable or None): if ``True``, includes only installed @@ -604,6 +601,9 @@ def _path(self, spec: "spack.spec.Spec") -> pathlib.Path: return self.dir / f"{spec.name}-{spec.dag_hash()}" +SelectType = Callable[[InstallRecord], bool] + + class Database: #: Fields written for each install record record_fields: Tuple[str, ...] = DEFAULT_INSTALL_RECORD_FIELDS @@ -1526,7 +1526,7 @@ def get_by_hash(self, dag_hash, default=None, installed=any): def _query( self, query_spec=any, - known=any, + predicate_fn: Optional[SelectType] = None, installed=True, explicit=any, start_date=None, @@ -1534,7 +1534,7 @@ def _query( hashes=None, in_buildcache=any, origin=None, - ): + ) -> List["spack.spec.Spec"]: """Run a query on the database.""" # TODO: Specs are a lot like queries. Should there be a @@ -1580,7 +1580,7 @@ def _query( if explicit is not any and rec.explicit != explicit: continue - if known is not any and known(rec.spec.name): + if predicate_fn is not None and not predicate_fn(rec): continue if start_date or end_date: @@ -1665,14 +1665,14 @@ def query(self, *args, **kwargs): query.__doc__ = "" query.__doc__ += _QUERY_DOCSTRING - def query_one(self, query_spec, known=any, installed=True): + def query_one(self, query_spec, predicate_fn=None, installed=True): """Query for exactly one spec that matches the query spec. Raises an assertion error if more than one spec matches the query. Returns None if no installed package matches. """ - concrete_specs = self.query(query_spec, known=known, installed=installed) + concrete_specs = self.query(query_spec, predicate_fn=predicate_fn, installed=installed) assert len(concrete_specs) <= 1 return concrete_specs[0] if concrete_specs else None diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index fa8299f2abb450..a29b56708f0d70 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -70,10 +70,10 @@ def test_query_arguments(): q_args = query_arguments(args) assert "installed" in q_args - assert "known" in q_args + assert "predicate_fn" in q_args assert "explicit" in q_args assert q_args["installed"] == ["installed"] - assert q_args["known"] is any + assert q_args["predicate_fn"] is None assert q_args["explicit"] is any assert "start_date" in q_args assert "end_date" not in q_args diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 7140a502878105..3049e543986030 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -1181,3 +1181,20 @@ def test_reindex_with_upstreams(tmp_path, monkeypatch, mock_packages, config): assert not reindexed_local_store.db.query_local("callpath") assert reindexed_local_store.db.query("callpath") == [callpath] assert reindexed_local_store.db.query_local("mpileaks") == [mpileaks] + + +@pytest.mark.regression("47101") +def test_query_with_predicate_fn(database): + all_specs = database.query() + + # Name starts with a string + specs = database.query(predicate_fn=lambda x: x.spec.name.startswith("mpil")) + assert specs and all(x.name.startswith("mpil") for x in specs) + assert len(specs) < len(all_specs) + + # Recipe is currently known/unknown + specs = database.query(predicate_fn=lambda x: spack.repo.PATH.exists(x.spec.name)) + assert specs == all_specs + + specs = database.query(predicate_fn=lambda x: not spack.repo.PATH.exists(x.spec.name)) + assert not specs From 19ad29a6902ec54e9e4ed2ec0dbbed2558048de2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 21 Oct 2024 18:46:13 +0200 Subject: [PATCH 077/615] bootstrap: handle a new edge case of binary python packages with missing python-venv (#47094) relevant for clingo installed without gcc-runtime and python-venv, which is done for good reasons. --- lib/spack/spack/binary_distribution.py | 19 ++++++++++++------- lib/spack/spack/bootstrap/_common.py | 18 ++++++++++++++---- lib/spack/spack/bootstrap/core.py | 10 +++++++++- lib/spack/spack/database.py | 4 ++-- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 1f0d33f00eea1d..bf1d3521249d0a 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -2562,7 +2562,13 @@ def _ensure_common_prefix(tar: tarfile.TarFile) -> str: return pkg_prefix -def install_root_node(spec, unsigned=False, force=False, sha256=None): +def install_root_node( + spec: spack.spec.Spec, + unsigned=False, + force: bool = False, + sha256: Optional[str] = None, + allow_missing: bool = False, +) -> None: """Install the root node of a concrete spec from a buildcache. Checking the sha256 sum of a node before installation is usually needed only @@ -2571,11 +2577,10 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): Args: spec: spec to be installed (note that only the root node will be installed) - unsigned (bool): if True allows installing unsigned binaries - force (bool): force installation if the spec is already present in the - local store - sha256 (str): optional sha256 of the binary package, to be checked - before installation + unsigned: if True allows installing unsigned binaries + force: force installation if the spec is already present in the local store + sha256: optional sha256 of the binary package, to be checked before installation + allow_missing: when true, allows installing a node with missing dependencies """ # Early termination if spec.external or spec.virtual: @@ -2613,7 +2618,7 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): spec, spack.store.STORE.layout.spec_file_path(spec) ) spack.hooks.post_install(spec, False) - spack.store.STORE.db.add(spec) + spack.store.STORE.db.add(spec, allow_missing=allow_missing) def install_single_spec(spec, unsigned=False, force=False): diff --git a/lib/spack/spack/bootstrap/_common.py b/lib/spack/spack/bootstrap/_common.py index e56890f22b74de..2a33fa9aba02de 100644 --- a/lib/spack/spack/bootstrap/_common.py +++ b/lib/spack/spack/bootstrap/_common.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) """Common basic functions used through the spack.bootstrap package""" import fnmatch +import glob import importlib import os.path import re @@ -60,10 +61,19 @@ def _try_import_from_store( python, *_ = candidate_spec.dependencies("python-venv") else: python, *_ = candidate_spec.dependencies("python") - module_paths = [ - os.path.join(candidate_spec.prefix, python.package.purelib), - os.path.join(candidate_spec.prefix, python.package.platlib), - ] + + # if python is installed, ask it for the layout + if python.installed: + module_paths = [ + os.path.join(candidate_spec.prefix, python.package.purelib), + os.path.join(candidate_spec.prefix, python.package.platlib), + ] + # otherwise search for the site-packages directory + # (clingo from binaries with truncated python-venv runtime) + else: + module_paths = glob.glob( + os.path.join(candidate_spec.prefix, "lib", "python*", "site-packages") + ) path_before = list(sys.path) # NOTE: try module_paths first and last, last allows an existing version in path diff --git a/lib/spack/spack/bootstrap/core.py b/lib/spack/spack/bootstrap/core.py index 6f1d9fdb9dff52..e9c29751965558 100644 --- a/lib/spack/spack/bootstrap/core.py +++ b/lib/spack/spack/bootstrap/core.py @@ -175,7 +175,15 @@ def _install_by_hash( query = spack.binary_distribution.BinaryCacheQuery(all_architectures=True) for match in spack.store.find([f"/{pkg_hash}"], multiple=False, query_fn=query): spack.binary_distribution.install_root_node( - match, unsigned=True, force=True, sha256=pkg_sha256 + # allow_missing is true since when bootstrapping clingo we truncate runtime + # deps such as gcc-runtime, since we link libstdc++ statically, and the other + # further runtime deps are loaded by the Python interpreter. This just silences + # warnings about missing dependencies. + match, + unsigned=True, + force=True, + sha256=pkg_sha256, + allow_missing=True, ) def _install_and_test( diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index c1ed06d241c749..9813c7c18d9608 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -1245,7 +1245,7 @@ def _add( self._data[key].explicit = explicit @_autospec - def add(self, spec: "spack.spec.Spec", *, explicit: bool = False) -> None: + def add(self, spec: "spack.spec.Spec", *, explicit: bool = False, allow_missing=False) -> None: """Add spec at path to database, locking and reading DB to sync. ``add()`` will lock and read from the DB on disk. @@ -1254,7 +1254,7 @@ def add(self, spec: "spack.spec.Spec", *, explicit: bool = False) -> None: # TODO: ensure that spec is concrete? # Entire add is transactional. with self.write_transaction(): - self._add(spec, explicit=explicit) + self._add(spec, explicit=explicit, allow_missing=allow_missing) def _get_matching_spec_key(self, spec: "spack.spec.Spec", **kwargs) -> str: """Get the exact spec OR get a single spec that matches.""" From a07d42d35bacf721616b45466ce1227c47cb1618 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Mon, 21 Oct 2024 10:32:14 -0700 Subject: [PATCH 078/615] Devtools darwin (#46910) * stacks: add a stack for devtools on darwin After getting this whole mess building on darwin, let's keep it that way, and maybe make it so we have some non-ML darwin binaries in spack as well. * reuse: false for devtools * dtc: fix darwin dylib name and id On mac the convention is `lib..dylib`, while the makefile creates a num suffixed one by default. The id in the file is also a local name rather than rewritten to the full path, this fixes both problems. * node-js: make whereis more deterministic * relocation(darwin): catch Mach-O load failure The MachO library can throw an exception rather than return no headers, this happened in an elf file in the test data of go-bootstrap. Trying catching the exception and moving on for now. May also need to look into why we're trying to rewrite an elf file. * qemu: add darwin flags to clear out warnings There's a build failure for qemu in CI, but it's invisible because of the immense mass of warning output. Explicitly specify the target macos version and remove the extraneous unknown-warning-option flag. * dtc: libyaml is also a link dependency libyaml is required at runtime to run the dtc binary, lack of it caused the ci for qemu to fail when the library wasn't found. --- lib/spack/spack/relocate.py | 6 +- .../gitlab/cloud_pipelines/.gitlab-ci.yml | 24 ++++++ .../stacks/developer-tools-darwin/spack.yaml | 75 +++++++++++++++++++ .../developer-tools-manylinux2014/spack.yaml | 1 + .../repos/builtin/packages/dtc/package.py | 13 +++- .../repos/builtin/packages/node-js/package.py | 8 +- .../repos/builtin/packages/qemu/package.py | 10 ++- 7 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 67e980625ea359..627c9e2b057061 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -283,7 +283,11 @@ def modify_macho_object(cur_path, rpaths, deps, idpath, paths_to_paths): def macholib_get_paths(cur_path): """Get rpaths, dependent libraries, and library id of mach-o objects.""" - headers = macholib.MachO.MachO(cur_path).headers + headers = [] + try: + headers = macholib.MachO.MachO(cur_path).headers + except ValueError: + pass if not headers: tty.warn("Failed to read Mach-O headers: {0}".format(cur_path)) commands = [] diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index d3897fd055260c..ce905db007201b 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -508,6 +508,30 @@ developer-tools-manylinux2014-build: - artifacts: True job: developer-tools-manylinux2014-generate +########################################### +# Build tests for different developer tools +# darwin +########################################### +.developer-tools-darwin: + extends: [ ".darwin_aarch64" ] + variables: + SPACK_CI_STACK_NAME: developer-tools-darwin + +developer-tools-darwin-generate: + tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ] + extends: [ ".developer-tools-darwin", ".generate-base"] + +developer-tools-darwin-build: + extends: [ ".developer-tools-darwin", ".build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: developer-tools-darwin-generate + strategy: depend + needs: + - artifacts: True + job: developer-tools-darwin-generate + ######################################### # RADIUSS ######################################### diff --git a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml new file mode 100644 index 00000000000000..48ab265a51211c --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml @@ -0,0 +1,75 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + concretizer: + unify: true + reuse: false + specs: + # editors + - neovim~no_luajit + - py-pynvim + - emacs+json~native+treesitter # TODO native not supported until gcc builds on darwin + # - tree-sitter is a dep, should also have cli but no package + - nano # just in case + # tags and scope search helpers + - universal-ctags # only maintained ctags, works better with c++ + - direnv + # runtimes and compilers + - python + - llvm+link_llvm_dylib+lld~lldb~polly+python build_type=MinSizeRel # for clangd, clang-format + - node-js # for editor plugins etc., pyright language server + - npm + - cmake + - libtool + - go # to build fzf, gh, hub + - rust+dev # fd, ripgrep, hyperfine, exa, rust-analyzer + # styling and lints + - astyle + - cppcheck + - uncrustify + - py-fprettify + - py-fortran-language-server + - py-python-lsp-server + # cli dev tools + - ripgrep + - gh + - fd + # - bfs # liburing: /usr/include/linux/ipv6.h:19:8: error: redefinition of 'struct in6_pktinfo' + - fzf + - tree + - jq + - py-yq + - hub + - ncdu + - eza + - lsd + - hyperfine + - htop + - tmux + - ccache + # ensure we can use a jobserver build and do this fast + - gmake + - ninja # should be @kitware, can't be because of meson requirement + - libtree + - sed + - which + - flex + - graphviz + - doxygen + - meson + - lima + + ci: + pipeline-gen: + - build-job-remove: + tags: [ spack, public ] + - build-job: + variables: + CI_GPG_KEY_ROOT: /etc/protected-runner + tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ] + + cdash: + build-group: Developer Tools Darwin diff --git a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml index 97f408080fe7b9..e2a3c0bf5ecf45 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml @@ -5,6 +5,7 @@ spack: require: target=x86_64_v3 concretizer: unify: true + reuse: false definitions: - default_specs: # editors diff --git a/var/spack/repos/builtin/packages/dtc/package.py b/var/spack/repos/builtin/packages/dtc/package.py index 541041d5322d2b..8790d702fb92c2 100644 --- a/var/spack/repos/builtin/packages/dtc/package.py +++ b/var/spack/repos/builtin/packages/dtc/package.py @@ -24,9 +24,9 @@ class Dtc(MakefilePackage): # Build error with flex 2.6.3 # (convert-dtsv0-lexer.lex.c:398: error: "yywrap" redefined) depends_on("flex@2.6.4:", type="build") - depends_on("libyaml", type="build") depends_on("pkgconfig", type="build") depends_on("python", type="build") + depends_on("libyaml", type=("build", "link")) def edit(self, spec, prefix): makefile = FileFilter("Makefile") @@ -35,3 +35,14 @@ def edit(self, spec, prefix): makefile.filter( r"WARNINGS = -Wall", "WARNINGS = -Wall -Wno-unused-command-line-argument" ) + + if self.spec.satisfies("platform=darwin"): + libfdt_makefile = FileFilter("libfdt/Makefile.libfdt") + libfdt_makefile.filter( + r"LIBFDT_soname = .*", "LIBFDT_soname = libfdt.1.$(SHAREDLIB_EXT)" + ) + + @run_after("install") + def darwin_fix(self): + if self.spec.satisfies("platform=darwin"): + fix_darwin_install_name(self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index b76d72ae91bdb9..e0111dd673b952 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -113,8 +113,14 @@ def configure_args(self): # # /usr/bin/libtool # libtool: /usr/bin/libtool + # + # We specify -M -f (an empty list of man-path entries) to prevent man-page + # searching to avoid an Illegal seek error processing manpath results in CI, + # which prevents the last form: # libtool: /usr/bin/libtool /Applications/Xcode.app/.../share/man/man1/libtool.1 - process_pipe = subprocess.Popen(["whereis", "libtool"], stdout=subprocess.PIPE) + process_pipe = subprocess.Popen( + ["whereis", "-M", "-f", "libtool"], stdout=subprocess.PIPE + ) result_whereis_list = process_pipe.communicate()[0].strip().split() if len(result_whereis_list) == 1: result_whereis = result_whereis_list[0] diff --git a/var/spack/repos/builtin/packages/qemu/package.py b/var/spack/repos/builtin/packages/qemu/package.py index c095b9a6a6bd98..8ac1e92bf78b3e 100644 --- a/var/spack/repos/builtin/packages/qemu/package.py +++ b/var/spack/repos/builtin/packages/qemu/package.py @@ -139,7 +139,7 @@ class Qemu(AutotoolsPackage): @when("@9:") def configure_args(self): - return [ + args = [ "--disable-bsd-user", "--disable-guest-agent", "--disable-sdl", @@ -155,3 +155,11 @@ def configure_args(self): "--enable-zstd", "--disable-docs", ] + extra_cflags = "-Wno-unknown-warning-option" + if self.spec.satisfies("%apple-clang platform=darwin"): + # qemu 9: uses pthread_jit_write_protect_np which requires OSX 11.0 or newer + extra_cflags += " -mmacosx-version-min=11.0" + args.append(f"--extra-cflags={extra_cflags}") + args.append(f"--extra-cxxflags={extra_cflags}") + + return args From 275d1d88f40c348c1eaf07f8941592b2fa373ce6 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Mon, 21 Oct 2024 11:44:28 -0700 Subject: [PATCH 079/615] avoid double closing of fd in sub-processes (#47035) Both `multiprocessing.connection.Connection.__del__` and `io.IOBase.__del__` called `os.close` on the same file descriptor. As of Python 3.13, this is an explicit warning. Ensure we close once by usef `os.fdopen(..., closefd=False)` --- lib/spack/llnl/util/tty/log.py | 43 ++++++++++++++-------------- lib/spack/spack/build_environment.py | 2 +- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 56139843407977..9d346fdabb42ee 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -348,7 +348,19 @@ def close(self): class MultiProcessFd: """Return an object which stores a file descriptor and can be passed as an argument to a function run with ``multiprocessing.Process``, such that - the file descriptor is available in the subprocess.""" + the file descriptor is available in the subprocess. It provides access via + the `fd` property. + + This object takes control over the associated FD: files opened from this + using `fdopen` need to use `closefd=False`. + """ + + # As for why you have to fdopen(..., closefd=False): when a + # multiprocessing.connection.Connection object stores an fd, it assumes + # control over it, and will attempt to close it when gc'ed during __del__; + # if you fdopen(multiprocessfd.fd, closefd=True) then the resulting file + # will also assume control, and you can see warnings when there is an + # attempted double close. def __init__(self, fd): self._connection = None @@ -361,33 +373,20 @@ def __init__(self, fd): @property def fd(self): if self._connection: - return self._connection._handle + return self._connection.fileno() else: return self._fd def close(self): + """Rather than `.close()`ing any file opened from the associated + `.fd`, the `MultiProcessFd` should be closed with this. + """ if self._connection: self._connection.close() else: os.close(self._fd) -def close_connection_and_file(multiprocess_fd, file): - # MultiprocessFd is intended to transmit a FD - # to a child process, this FD is then opened to a Python File object - # (using fdopen). In >= 3.8, MultiprocessFd encapsulates a - # multiprocessing.connection.Connection; Connection closes the FD - # when it is deleted, and prints a warning about duplicate closure if - # it is not explicitly closed. In < 3.8, MultiprocessFd encapsulates a - # simple FD; closing the FD here appears to conflict with - # closure of the File object (in < 3.8 that is). Therefore this needs - # to choose whether to close the File or the Connection. - if sys.version_info >= (3, 8): - multiprocess_fd.close() - else: - file.close() - - @contextmanager def replace_environment(env): """Replace the current environment (`os.environ`) with `env`. @@ -932,10 +931,10 @@ def _writer_daemon( # 1. Use line buffering (3rd param = 1) since Python 3 has a bug # that prevents unbuffered text I/O. # 2. Python 3.x before 3.7 does not open with UTF-8 encoding by default - in_pipe = os.fdopen(read_multiprocess_fd.fd, "r", 1, encoding="utf-8") + in_pipe = os.fdopen(read_multiprocess_fd.fd, "r", 1, encoding="utf-8", closefd=False) if stdin_multiprocess_fd: - stdin = os.fdopen(stdin_multiprocess_fd.fd) + stdin = os.fdopen(stdin_multiprocess_fd.fd, closefd=False) else: stdin = None @@ -1025,9 +1024,9 @@ def _writer_daemon( if isinstance(log_file, io.StringIO): control_pipe.send(log_file.getvalue()) log_file_wrapper.close() - close_connection_and_file(read_multiprocess_fd, in_pipe) + read_multiprocess_fd.close() if stdin_multiprocess_fd: - close_connection_and_file(stdin_multiprocess_fd, stdin) + stdin_multiprocess_fd.close() # send echo value back to the parent so it can be preserved. control_pipe.send(echo) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index ed62e517eff2fb..ad62685024c880 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -1194,7 +1194,7 @@ def _setup_pkg_and_run( # that the parent process is not going to read from it till we # are done with the child, so we undo Python's precaution. if input_multiprocess_fd is not None: - sys.stdin = os.fdopen(input_multiprocess_fd.fd) + sys.stdin = os.fdopen(input_multiprocess_fd.fd, closefd=False) pkg = serialized_pkg.restore() From d9e8c5f13e2ea773e5555307ded8c98456442bfc Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:15:33 -0700 Subject: [PATCH 080/615] hip stand-alone test: simplify setting CMAKE_PREFIX_PATH (#46856) --- var/spack/repos/builtin/packages/hip/package.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index f0235f1aea6deb..91dc94d33c9008 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -638,14 +638,7 @@ def test_samples(self): test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir_old) elif self.spec.satisfies("@5.6:"): test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir) - prefixes = ";".join( - [ - self.spec["hip"].prefix, - self.spec["llvm-amdgpu"].prefix, - self.spec["comgr"].prefix, - self.spec["hsa-rocr-dev"].prefix, - ] - ) + prefixes = ";".join(spack.build_environment.get_cmake_prefix_path(self)) cc_options = ["-DCMAKE_PREFIX_PATH=" + prefixes, ".."] amdclang_path = join_path(self.spec["llvm-amdgpu"].prefix, "bin", "amdclang++") From 037196c2bd313f74b08aafa71f4a57f93bcb5ff7 Mon Sep 17 00:00:00 2001 From: Luke Diorio-Toth Date: Mon, 21 Oct 2024 18:32:44 -0500 Subject: [PATCH 081/615] `infernal`: add version `1.1.5` (#47028) --- var/spack/repos/builtin/packages/infernal/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/infernal/package.py b/var/spack/repos/builtin/packages/infernal/package.py index 90ef8da99b46e3..d5dda6d05eeb36 100644 --- a/var/spack/repos/builtin/packages/infernal/package.py +++ b/var/spack/repos/builtin/packages/infernal/package.py @@ -15,6 +15,7 @@ class Infernal(AutotoolsPackage): homepage = "http://eddylab.org/infernal/" url = "http://eddylab.org/infernal/infernal-1.1.2.tar.gz" + version("1.1.5", sha256="ad4ddae02f924ca7c85bc8c4a79c9f875af8df96aeb726702fa985cbe752497f") version("1.1.4", sha256="f9493c7dee9fbf25f6405706818883d24b9f5e455121a0662c96c8f0307f95fc") version("1.1.3", sha256="3b98a6a3a0e7b01aa077a0caf1e958223c4d8f80a69a4eb602ca59a3475da85e") version("1.1.2", sha256="ac8c24f484205cfb7124c38d6dc638a28f2b9035b9433efec5dc753c7e84226b") @@ -25,8 +26,13 @@ class Infernal(AutotoolsPackage): depends_on("mpi", when="+mpi") + # v1.1.4 and below do not build on aarch64 # https://github.com/EddyRivasLab/infernal/issues/30 - conflicts("target=aarch64:", msg="infernal is only available for x86_64 and PowerPC") + conflicts( + "target=aarch64:", + when="@:1.1.4", + msg="infernal v1.1.4 and below are only available for x86_64 and PowerPC", + ) def configure_args(self): args = [] From b582eacbc13a1d6ca10882088d150b5a8d410fdd Mon Sep 17 00:00:00 2001 From: Thomas-Ulrich Date: Tue, 22 Oct 2024 04:44:14 +0200 Subject: [PATCH 082/615] fix unzip%nvhpc (#47109) --- var/spack/repos/builtin/packages/unzip/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/unzip/package.py b/var/spack/repos/builtin/packages/unzip/package.py index 8616b3630d0ced..f04dee4f8cdc48 100644 --- a/var/spack/repos/builtin/packages/unzip/package.py +++ b/var/spack/repos/builtin/packages/unzip/package.py @@ -28,8 +28,9 @@ def get_make_args(self): make_args = ["-f", join_path("unix", "Makefile")] cflags = [] - cflags.append("-Wno-error=implicit-function-declaration") - cflags.append("-Wno-error=implicit-int") + if not self.spec.satisfies("%nvhpc"): + cflags.append("-Wno-error=implicit-function-declaration") + cflags.append("-Wno-error=implicit-int") cflags.append("-DLARGE_FILE_SUPPORT") make_args.append(f"LOC={' '.join(cflags)}") From 149753a52eb35984236fecbab2b4938a72905f02 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:46:26 -0400 Subject: [PATCH 083/615] kokkos: change build_environment.get_cmake_prefix_path to build_systems.cmake.get_cmake_prefix_path(self) (#47112) --- var/spack/repos/builtin/packages/kokkos/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index fe9989afb5f8d6..ca9791fab14ee6 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -414,7 +414,7 @@ def test_run(self): cmake = self.spec["cmake"].command cmake_args = ["-DEXECUTABLE_OUTPUT_PATH=" + cmake_path] if self.spec.satisfies("+rocm"): - prefix_paths = ";".join(spack.build_environment.get_cmake_prefix_path(self)) + prefix_paths = ";".join(spack.build_systems.cmake.get_cmake_prefix_path(self)) cmake_args.append("-DCMAKE_PREFIX_PATH={0}".format(prefix_paths)) cmake(cmake_path, *cmake_args) From 5b279c07322567a6a89233b66fc8d0ba46ccd2c2 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Tue, 22 Oct 2024 08:57:54 +0200 Subject: [PATCH 084/615] acts: add verison v37.1.0 (#47104) No updates to any dependencies this week. --- var/spack/repos/builtin/packages/acts/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 1a0ef352dc39df..7bcbef780ad16d 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -41,6 +41,7 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version("main", branch="main") version("master", branch="main", deprecated=True) # For compatibility + version("37.1.0", commit="fa6ad4d52e0bd09cf8c78507fcbb18e9ac2c87a3", submodules=True) version("37.0.1", commit="998b9c9dd42d5160c2540f8fa820505869bfdb79", submodules=True) version("37.0.0", commit="117feaaadc7a2336755274e0cd70ba58a047a1de", submodules=True) version("36.3.2", commit="01e124d253a3c9c9b9f5d2fde16682ce9d4599cd", submodules=True) From b56e7922957ce2edbf4526307cc90b1ab29c6eff Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 22 Oct 2024 01:18:33 -0600 Subject: [PATCH 085/615] py-sphinxcontrib-spelling: new package (#46402) * py-sphinxcontrib-spelling: new package * Dependency enchant: Add missing dep on pkgconfig --------- Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/enchant/package.py | 5 ++-- .../py-sphinxcontrib-spelling/package.py | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py diff --git a/var/spack/repos/builtin/packages/enchant/package.py b/var/spack/repos/builtin/packages/enchant/package.py index 673a4d4152b6d6..3221b2332a570e 100644 --- a/var/spack/repos/builtin/packages/enchant/package.py +++ b/var/spack/repos/builtin/packages/enchant/package.py @@ -41,8 +41,9 @@ class Enchant(AutotoolsPackage): version("2.1.1", sha256="5fad0a1e82ddfed91647e93da5955fc76249760fd51865648a36074dc97d526c") version("2.1.0", sha256="2cdda2d9edb62ad895c34be35c598d56ac5b9b9298f3dfdaa2b40a1914d1db7e") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build", when="platform=linux") variant("hunspell", default=True, description="Enables hunspell backend") diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py new file mode 100644 index 00000000000000..19e0de61b66264 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class PySphinxcontribSpelling(PythonPackage): + """A spelling checker for Sphinx-based documentation""" + + homepage = "https://sphinxcontrib-spelling.readthedocs.io" + pypi = "sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.0.tar.gz" + + maintainers("rbberger") + + license("BSD-2-Clause") + + version("8.0.0", sha256="199d0a16902ad80c387c2966dc9eb10f565b1fb15ccce17210402db7c2443e5c") + + depends_on("python@3.7:") + depends_on("py-sphinx@3:") + depends_on("py-pyenchant@3.1.1:") From cbad3d464aceacc877f20e0c9ad2e1baded8bbf1 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 22 Oct 2024 13:05:06 +0200 Subject: [PATCH 086/615] buildcache: recognize . and .. as paths instead of names (#47105) --- lib/spack/spack/cmd/common/arguments.py | 12 +++++------- lib/spack/spack/mirror.py | 7 +++---- lib/spack/spack/test/mirror.py | 11 +++++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 456ad0f5ac2260..6a4a43e9e93746 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -660,34 +660,32 @@ def mirror_name_or_url(m): # accidentally to a dir in the current working directory. # If there's a \ or / in the name, it's interpreted as a path or url. - if "/" in m or "\\" in m: + if "/" in m or "\\" in m or m in (".", ".."): return spack.mirror.Mirror(m) # Otherwise, the named mirror is required to exist. try: return spack.mirror.require_mirror_name(m) except ValueError as e: - raise argparse.ArgumentTypeError( - str(e) + ". Did you mean {}?".format(os.path.join(".", m)) - ) + raise argparse.ArgumentTypeError(f"{e}. Did you mean {os.path.join('.', m)}?") from e def mirror_url(url): try: return spack.mirror.Mirror.from_url(url) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e def mirror_directory(path): try: return spack.mirror.Mirror.from_local_path(path) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e def mirror_name(name): try: return spack.mirror.require_mirror_name(name) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 8caa27213735a4..4254763773d657 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -89,9 +89,8 @@ def from_url(url: str): """Create an anonymous mirror by URL. This method validates the URL.""" if not urllib.parse.urlparse(url).scheme in supported_url_schemes: raise ValueError( - '"{}" is not a valid mirror URL. Scheme must be once of {}.'.format( - url, ", ".join(supported_url_schemes) - ) + f'"{url}" is not a valid mirror URL. ' + f"Scheme must be one of {supported_url_schemes}." ) return Mirror(url) @@ -759,7 +758,7 @@ def require_mirror_name(mirror_name): """Find a mirror by name and raise if it does not exist""" mirror = spack.mirror.MirrorCollection().get(mirror_name) if not mirror: - raise ValueError('no mirror named "{0}"'.format(mirror_name)) + raise ValueError(f'no mirror named "{mirror_name}"') return mirror diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index 10d375a7fb652b..b62d5a3e41c787 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -8,6 +8,7 @@ import pytest +from llnl.util.filesystem import working_dir from llnl.util.symlink import resolve_link_target_relative_to_the_link import spack.caches @@ -19,6 +20,7 @@ import spack.util.executable import spack.util.spack_json as sjson import spack.util.url as url_util +from spack.cmd.common.arguments import mirror_name_or_url from spack.spec import Spec from spack.util.executable import which from spack.util.spack_yaml import SpackYAMLError @@ -357,3 +359,12 @@ def test_update_connection_params(direction): assert m.get_access_token(direction) == "token" assert m.get_profile(direction) == "profile" assert m.get_endpoint_url(direction) == "https://example.com" + + +def test_mirror_name_or_url_dir_parsing(tmp_path): + curdir = tmp_path / "mirror" + curdir.mkdir() + + with working_dir(curdir): + assert mirror_name_or_url(".").fetch_url == curdir.as_uri() + assert mirror_name_or_url("..").fetch_url == tmp_path.as_uri() From b601bace24c2368693deb806a7b89efa0b89f203 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 22 Oct 2024 13:32:41 +0200 Subject: [PATCH 087/615] py-torchdata: add v0.9.0 (#47120) --- .../builtin/packages/py-torchdata/package.py | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-torchdata/package.py b/var/spack/repos/builtin/packages/py-torchdata/package.py index db1b37305e718c..63ee044740097e 100644 --- a/var/spack/repos/builtin/packages/py-torchdata/package.py +++ b/var/spack/repos/builtin/packages/py-torchdata/package.py @@ -18,6 +18,7 @@ class PyTorchdata(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.9.0", sha256="b547bbe848ad813cc5365fe0bb02051150bec6c7c4ee7bffd6b6d3d7bdeddd75") version("0.8.0", sha256="d5d27b264e79d7d00ad4998f14d097b770332d979672dceb6d038caf204f1208") version("0.7.1", sha256="ef9bbdcee759b53c3c9d99e76eb0a66da33d36bfb7f859a25a9b5e737a51fa23") version("0.7.0", sha256="0b444719c3abc67201ed0fea92ea9c4100e7f36551ba0d19a09446cc11154eb3") @@ -31,35 +32,38 @@ class PyTorchdata(PythonPackage): depends_on("cxx", type="build") - # https://github.com/pytorch/data#version-compatibility - depends_on("python@3.8:3.12", when="@0.8:", type=("build", "run")) - depends_on("python@3.8:3.11", when="@0.6:0.7", type=("build", "run")) - depends_on("python@3.7:3.10", when="@:0.5", type=("build", "run")) + with default_args(type="build"): + # pyproject.toml + depends_on("py-setuptools") - # pyproject.toml - depends_on("py-setuptools", type="build") + # CMakeLists.txt + depends_on("cmake@3.13:", when="@0.4:") + depends_on("ninja", when="@0.4:") - # CMakeLists.txt - depends_on("cmake@3.13:", when="@0.4:", type="build") - depends_on("ninja", when="@0.4:", type="build") + with default_args(type=("build", "run")): + # https://github.com/pytorch/data#version-compatibility + depends_on("python@3.9:3.12", when="@0.9:") + depends_on("python@3.8:3.12", when="@0.8") + depends_on("python@3.8:3.11", when="@0.6:0.7") + depends_on("python@3.7:3.10", when="@:0.5") - # https://github.com/pytorch/data#version-compatibility - depends_on("py-torch@main", when="@main", type=("build", "run")) - depends_on("py-torch@2.4.0", when="@0.8.0", type=("build", "run")) - depends_on("py-torch@2.1.1", when="@0.7.1", type=("build", "run")) - depends_on("py-torch@2.1.0", when="@0.7.0", type=("build", "run")) - depends_on("py-torch@2.0.1", when="@0.6.1", type=("build", "run")) - depends_on("py-torch@2.0.0", when="@0.6.0", type=("build", "run")) - depends_on("py-torch@1.13.1", when="@0.5.1", type=("build", "run")) - depends_on("py-torch@1.13.0", when="@0.5.0", type=("build", "run")) - depends_on("py-torch@1.12.1", when="@0.4.1", type=("build", "run")) - depends_on("py-torch@1.12.0", when="@0.4.0", type=("build", "run")) - depends_on("py-torch@1.11.0", when="@0.3.0", type=("build", "run")) + depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.0", when="@0.9.0") + depends_on("py-torch@2.4.0", when="@0.8.0") + depends_on("py-torch@2.1.1", when="@0.7.1") + depends_on("py-torch@2.1.0", when="@0.7.0") + depends_on("py-torch@2.0.1", when="@0.6.1") + depends_on("py-torch@2.0.0", when="@0.6.0") + depends_on("py-torch@1.13.1", when="@0.5.1") + depends_on("py-torch@1.13.0", when="@0.5.0") + depends_on("py-torch@1.12.1", when="@0.4.1") + depends_on("py-torch@1.12.0", when="@0.4.0") + depends_on("py-torch@1.11.0", when="@0.3.0") - # requirements.txt - depends_on("py-urllib3@1.25:", type=("build", "run")) - depends_on("py-requests", type=("build", "run")) - depends_on("py-portalocker@2:", when="@0.4:0.5", type=("build", "run")) + # requirements.txt + depends_on("py-urllib3@1.25:") + depends_on("py-requests") + depends_on("py-portalocker@2:", when="@0.4:0.5") # third_party/CMakeLists.txt depends_on("py-pybind11", when="@0.4:") From fc443ea30e68d20e6efdf7186030ae07d6f81efc Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 22 Oct 2024 15:37:17 +0200 Subject: [PATCH 088/615] builtin repo: remove some uses of spec.compiler (#47061) This commit remove all the uses of spec.compiler that can be easily substituted by a more idiomatic approach, e.g. using spec.satisfies or directives Signed-off-by: Massimiliano Culpo --- .../builtin/packages/clingo-bootstrap/package.py | 10 ++++++---- .../builtin/packages/cloverleaf-ref/package.py | 3 --- .../repos/builtin/packages/cmdstan/package.py | 2 +- var/spack/repos/builtin/packages/curl/package.py | 3 ++- .../repos/builtin/packages/elemental/package.py | 11 ++--------- var/spack/repos/builtin/packages/fds/package.py | 2 +- var/spack/repos/builtin/packages/hdf5/package.py | 7 ++++++- var/spack/repos/builtin/packages/lz4/package.py | 2 +- var/spack/repos/builtin/packages/magma/package.py | 2 +- .../repos/builtin/packages/mgcfd-op2/package.py | 8 ++++---- .../builtin/packages/netcdf-fortran/package.py | 2 +- .../repos/builtin/packages/py-gevent/package.py | 2 +- .../builtin/packages/py-tensorflow/package.py | 2 +- var/spack/repos/builtin/packages/silo/package.py | 2 +- var/spack/repos/builtin/packages/sw4/package.py | 2 +- .../repos/builtin/packages/trilinos/package.py | 6 +++++- .../repos/builtin/packages/wgrib2/package.py | 10 ++++++---- var/spack/repos/builtin/packages/wrf/package.py | 15 ++++++++++----- var/spack/repos/builtin/packages/xyce/package.py | 6 +++++- .../repos/builtin/packages/zlib-ng/package.py | 2 +- var/spack/repos/builtin/packages/zlib/package.py | 2 +- 21 files changed, 57 insertions(+), 44 deletions(-) diff --git a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py index 4f3b8ac74a67c7..bff3edef945780 100644 --- a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py @@ -79,9 +79,9 @@ def cmake_args(self): @run_before("cmake", when="+optimized") def pgo_train(self): - if self.spec.compiler.name == "clang": + if self.spec.satisfies("%clang"): llvm_profdata = which("llvm-profdata", required=True) - elif self.spec.compiler.name == "apple-clang": + elif self.spec.satisfies("%apple-clang"): llvm_profdata = Executable( Executable("xcrun")("-find", "llvm-profdata", output=str).strip() ) @@ -117,7 +117,7 @@ def pgo_train(self): # Clean the build dir. rmtree(self.build_directory, ignore_errors=True) - if self.spec.compiler.name in ("clang", "apple-clang"): + if self.spec.satisfies("%clang") or self.spec.satisfies("apple-clang"): # merge reports use_report = join_path(reports, "merged.prof") raw_files = glob.glob(join_path(reports, "*.profraw")) @@ -134,5 +134,7 @@ def pgo_train(self): cmake.add_default_envmod(use_mods) def setup_build_environment(self, env): - if self.spec.compiler.name in ("gcc", "clang") and "+static_libstdcpp" in self.spec: + if ( + self.spec.satisfies("%gcc") or self.spec.satisfies("%clang") + ) and "+static_libstdcpp" in self.spec: env.append_flags("LDFLAGS", "-static-libstdc++ -static-libgcc -Wl,--exclude-libs,ALL") diff --git a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py index 025a6b5d0f65ef..7982479eccf9a5 100644 --- a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py @@ -103,9 +103,6 @@ def build_targets(self): elif self.spec.satisfies("%xl"): targets.append("COMPILER=XLF") - else: - raise ValueError("Compiler {} not supported".format(self.spec.compiler.name)) - return targets def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/cmdstan/package.py b/var/spack/repos/builtin/packages/cmdstan/package.py index 23ab6b990d6b66..98a3f82fadeab3 100644 --- a/var/spack/repos/builtin/packages/cmdstan/package.py +++ b/var/spack/repos/builtin/packages/cmdstan/package.py @@ -32,7 +32,7 @@ class Cmdstan(MakefilePackage): filter_compiler_wrappers("local", relative_root="make") def edit(self, spec, prefix): - if spec.compiler.name == "intel": + if spec.satisfies("%intel"): cxx_type = "icc" else: cxx_type = spec.compiler.name diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 6f362bfc6d5869..ab040906c19ce3 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -197,7 +197,8 @@ def command(self): def flag_handler(self, name, flags): build_system_flags = [] - if name == "cflags" and self.spec.compiler.name in ["intel", "oneapi"]: + spec = self.spec + if name == "cflags" and (spec.satisfies("%intel") or spec.satisfies("%oneapi")): build_system_flags = ["-we147"] return flags, None, build_system_flags diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index a286b4b51543c2..85dba11538a32a 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -6,7 +6,6 @@ import os from spack.package import * -from spack.spec import UnsupportedCompilerError class Elemental(CMakePackage): @@ -94,6 +93,8 @@ class Elemental(CMakePackage): patch("elemental_cublas.patch", when="+cublas") patch("cmake_0.87.7.patch", when="@0.87.7") + conflicts("%intel@:17.0.2", when="@:0.87.7") + @property def libs(self): shared = True if "+shared" in self.spec else False @@ -101,14 +102,6 @@ def libs(self): def cmake_args(self): spec = self.spec - - if spec.satisfies("@:0.87.7") and spec.satisfies("%intel@:17.0.2"): - raise UnsupportedCompilerError( - "Elemental {0} has a known bug with compiler: {1} {2}".format( - spec.version, spec.compiler.name, spec.compiler.version - ) - ) - args = [ "-DCMAKE_INSTALL_MESSAGE:STRING=LAZY", "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc, diff --git a/var/spack/repos/builtin/packages/fds/package.py b/var/spack/repos/builtin/packages/fds/package.py index 3143eddde07390..51c983a09dd4fd 100644 --- a/var/spack/repos/builtin/packages/fds/package.py +++ b/var/spack/repos/builtin/packages/fds/package.py @@ -77,7 +77,7 @@ class Fds(MakefilePackage): def edit(self, spec, prefix): env["MKL_ROOT"] = self.spec["mkl"].prefix - if spec.compiler.name == "oneapi": + if spec.satisfies("%oneapi"): env["INTEL_IFORT"] = "ifx" makefile = FileFilter("Build/makefile") makefile.filter(r"\.\./Scripts", "./Scripts") diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 0d262daa15f872..555f7752965c92 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -331,7 +331,12 @@ def flag_handler(self, name, flags): cmake_flags = [] if name == "cflags": - if spec.compiler.name in ["gcc", "clang", "apple-clang", "oneapi"]: + if ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + or spec.satisfies("%oneapi") + ): # Quiet warnings/errors about implicit declaration of functions # in C99: cmake_flags.append("-Wno-error=implicit-function-declaration") diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index 375e75aa699840..5063dccdc9c02d 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -94,7 +94,7 @@ def setup_build_environment(self, env): def build(self, pkg, spec, prefix): par = True - if spec.compiler.name == "nvhpc": + if spec.satisfies("%nvhpc"): # relocation error when building shared and dynamic libs in # parallel par = False diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 28519602bfbd30..ee0397b66f7a4f 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -168,7 +168,7 @@ def cmake_args(self): if "@2.5.0" in spec: options.append(define("MAGMA_SPARSE", False)) - if spec.compiler.name in ["xl", "xl_r"]: + if spec.satisfies("%xl") or spec.satisfies("%xl_r"): options.append(define("CMAKE_DISABLE_FIND_PACKAGE_OpenMP", True)) if "+rocm" in spec: diff --git a/var/spack/repos/builtin/packages/mgcfd-op2/package.py b/var/spack/repos/builtin/packages/mgcfd-op2/package.py index bec689e0cff69a..6eaa3b079479cb 100644 --- a/var/spack/repos/builtin/packages/mgcfd-op2/package.py +++ b/var/spack/repos/builtin/packages/mgcfd-op2/package.py @@ -43,21 +43,21 @@ def setup_build_environment(self, env): env.set("COMPILER", self.spec.compiler.name) # Set Fortran compiler to GCC if using Arm. - if self.spec.compiler.name == "arm": + if self.spec.satisfies("%arm"): env.set("OP2_F_COMPILER", "gnu") # This overrides a flag issue in downstream OP2. - if self.spec.compiler.name == "nvhpc": + if self.spec.satisfies("%nvhpc"): env.set("CFLAGS", "-O3 -DOMPI_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK -DMPIPP_H") def edit(self, spec, prefix): # Makefile tweaks to ensure the correct compiler commands are called. makefile = FileFilter("Makefile") - if self.spec.compiler.name == "arm": + if self.spec.satisfies("%arm"): makefile.filter(r"CPP := clang", r"CPP := armclang") makefile.filter(r"-cxx=clang.*", "") - if self.spec.compiler.name == "nvhpc": + if self.spec.satisfies("%nvhpc"): makefile.filter("pgc", "nvc") @property diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index c80f8843005e0d..ec74f25fc43fca 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -156,7 +156,7 @@ def cray_module_filenames(self): # To avoid warning messages when compiler user applications in both # cases, we create copies of all '*.mod' files in the prefix/include # with names in upper- and lowercase. - if self.spec.compiler.name != "cce": + if not self.spec.satisfies("%cce"): return with working_dir(self.spec.prefix.include): diff --git a/var/spack/repos/builtin/packages/py-gevent/package.py b/var/spack/repos/builtin/packages/py-gevent/package.py index f4a9d275ffb780..9aaab6a93f2554 100644 --- a/var/spack/repos/builtin/packages/py-gevent/package.py +++ b/var/spack/repos/builtin/packages/py-gevent/package.py @@ -61,6 +61,6 @@ def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("%oneapi@2023:"): flags.append("-Wno-error=incompatible-function-pointer-types") - if self.spec.compiler.name in ["intel", "oneapi"]: + if self.spec.satisfies("%oneapi") or self.spec.satisfies("%intel"): flags.append("-we147") return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 1bb78b36d21c15..5529198ba03ea3 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -459,7 +459,7 @@ def flag_handler(self, name, flags): name == "ldflags" and spec.target.family == "aarch64" and "ubuntu" in spec.os - and spec.compiler.name == "gcc" + and spec.satisfies("%gcc") and "cortex_a53" not in spec.target.name ): flags.append("-mno-fix-cortex-a53-843419") diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 993c0c7ff8370c..58a2c12721abe0 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -147,7 +147,7 @@ def flag_handler(self, name, flags): min_apiver = int(min_ver / 2) * 2 flags.append("-DH5_USE_{0}{1}_API".format(maj_ver, min_apiver)) - if spec.compiler.name in ["clang", "apple-clang"]: + if spec.satisfies("%clang") or spec.satisfies("%apple-clang"): flags.append("-Wno-implicit-function-declaration") return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/sw4/package.py b/var/spack/repos/builtin/packages/sw4/package.py index a4e250f9af61f2..32515f119966be 100644 --- a/var/spack/repos/builtin/packages/sw4/package.py +++ b/var/spack/repos/builtin/packages/sw4/package.py @@ -63,7 +63,7 @@ def edit(self, spec, prefix): os.environ["EXTRA_LINK_FLAGS"] += spec["llvm-openmp"].libs.ld_flags + " " # From spack/trilinos - if spec.compiler.name in ["clang", "apple-clang", "gcc"]: + if spec.satisfies("%gcc") or spec.satisfies("%clang") or spec.satisfies("%apple-clang"): fc = Executable(self.compiler.fc) libgfortran = fc("--print-file-name", "libgfortran." + dso_suffix, output=str).strip() if libgfortran == "libgfortran." + dso_suffix: diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index b186834b8af17d..0669adff63415a 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -553,7 +553,11 @@ def flag_handler(self, name, flags): flags.append("-Wl,-undefined,dynamic_lookup") # Fortran lib (assumes clang is built with gfortran!) - if "+fortran" in spec and spec.compiler.name in ["gcc", "clang", "apple-clang"]: + if spec.satisfies("+fortran") and ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + ): fc = Executable(self.compiler.fc) libgfortran = fc( "--print-file-name", "libgfortran." + dso_suffix, output=str diff --git a/var/spack/repos/builtin/packages/wgrib2/package.py b/var/spack/repos/builtin/packages/wgrib2/package.py index 1cc9c824d92b5e..ba1b1bcd610d99 100644 --- a/var/spack/repos/builtin/packages/wgrib2/package.py +++ b/var/spack/repos/builtin/packages/wgrib2/package.py @@ -116,13 +116,14 @@ class Wgrib2(MakefilePackage): # Use Spack compiler wrapper flags def inject_flags(self, name, flags): + spec = self.spec if name == "cflags": - if self.spec.compiler.name == "apple-clang": + if spec.satisfies("%apple-clang"): flags.append("-Wno-error=implicit-function-declaration") # When mixing Clang/gfortran need to link to -lgfortran # Find this by searching for gfortran/../lib - if self.spec.compiler.name in ["apple-clang", "clang"]: + if spec.satisfies("%apple-clang") or spec.satisfies("%clang"): if "gfortran" in self.compiler.fc: output = Executable(self.compiler.fc)("-###", output=str, error=str) libdir = re.search("--libdir=(.+?) ", output).group(1) @@ -153,9 +154,10 @@ def edit(self, spec, prefix): makefile.filter(r"^%s=.*" % makefile_option, "{}={}".format(makefile_option, value)) def setup_build_environment(self, env): - if self.spec.compiler.name in ["oneapi", "intel"]: + spec = self.spec + if spec.satisfies("%oneapi") or spec.satisfies("%intel"): comp_sys = "intel_linux" - elif self.spec.compiler.name in ["gcc", "clang", "apple-clang"]: + elif spec.satisfies("%gcc") or spec.satisfies("%clang") or spec.satisfies("%apple-clang"): comp_sys = "gnu_linux" env.set("COMP_SYS", comp_sys) diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index bbc5aabd0b6e30..e343992a6abd87 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -260,6 +260,16 @@ class Wrf(Package): depends_on("libtool", type="build") depends_on("adios2", when="@4.5: +adios2") + requires( + "%gcc", + "%intel", + "%arm", + "%aocc", + "%fj", + "%oneapi", + policy="one_of", + msg="WRF supports only the GCC, Intel, AMD of Fujitsu compilers", + ) conflicts( "%oneapi", when="@:4.3", msg="Intel oneapi compiler patch only added for version 4.4" ) @@ -418,11 +428,6 @@ def configure(self, spec, prefix): # Remove broken default options... self.do_configure_fixup() - if self.spec.compiler.name not in ["intel", "gcc", "arm", "aocc", "fj", "oneapi"]: - raise InstallError( - "Compiler %s not currently supported for WRF build." % self.spec.compiler.name - ) - p = Popen("./configure", stdin=PIPE, stdout=PIPE, stderr=PIPE) if sys.platform != "win32": setNonBlocking(p.stdout) diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py index 7d1631975c8683..94b6fbeffcb696 100644 --- a/var/spack/repos/builtin/packages/xyce/package.py +++ b/var/spack/repos/builtin/packages/xyce/package.py @@ -227,7 +227,11 @@ def flag_handler(self, name, flags): flags.append("-DXyce_INTRUSIVE_PCE -Wreorder") elif name == "ldflags": # Fortran lib (assumes clang is built with gfortran!) - if spec.compiler.name in ["gcc", "clang", "apple-clang"]: + if ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + ): fc = Executable(self.compiler.fc) libgfortran = fc( "--print-file-name", "libgfortran." + dso_suffix, output=str diff --git a/var/spack/repos/builtin/packages/zlib-ng/package.py b/var/spack/repos/builtin/packages/zlib-ng/package.py index 2daba38d7a9bf9..40de58f4e0be81 100644 --- a/var/spack/repos/builtin/packages/zlib-ng/package.py +++ b/var/spack/repos/builtin/packages/zlib-ng/package.py @@ -79,7 +79,7 @@ class AutotoolsBuilder(autotools.AutotoolsBuilder): def pretend_gcc(self): # All nice things (PIC flags, symbol versioning) that happen to the compilers that are # recognized as gcc (%gcc, %clang, %intel, %oneapi) we want for some other compilers too: - if self.spec.compiler.name in ["nvhpc"]: + if self.spec.satisfies("%nvhpc"): filter_file(r"^gcc=0$", "gcc=1", join_path(self.configure_directory, "configure")) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 32a40fb31dfd68..c579a8381300ac 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -115,7 +115,7 @@ def edit(self, pkg, spec, prefix): # script but patch the makefile for all the aforementioned compilers, given the # importance of the package, we try to be conservative for now and do the patching only # for compilers that will not produce a correct shared library otherwise. - if self.spec.compiler.name in ["nvhpc"]: + if self.spec.satisfies("%nvhpc"): if "~pic" in self.spec: # In this case, we should build the static library without PIC, therefore we # don't append the respective compiler flag to CFLAGS in the build environment. From ef9bb7ebe59fc6053c7c8a2b9323a6037c10393e Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 22 Oct 2024 16:13:11 +0200 Subject: [PATCH 089/615] spack arch: add --family --generic flags (#47078) This allows users to do: ``` spack install ... target=$(spack arch --target --family) spack install ... arch=$(spack arch --family) spack install ... target=$(spack arch --target --generic) spack install ... arch=$(spack arch --generic) ``` Deprecate `--generic-target` in favor of `--generic --target` --- lib/spack/spack/cmd/arch.py | 18 +++++++++++++++++- share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 8 ++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 163478414863a7..c684a5fa4b3d30 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -19,12 +19,23 @@ def setup_parser(subparser): + # DEPRECATED: equivalent to --generic --target subparser.add_argument( - "-g", "--generic-target", action="store_true", help="show the best generic target" + "-g", + "--generic-target", + action="store_true", + help="show the best generic target (deprecated)", ) subparser.add_argument( "--known-targets", action="store_true", help="show a list of all known targets and exit" ) + target_type = subparser.add_mutually_exclusive_group() + target_type.add_argument( + "--family", action="store_true", help="print generic ISA (x86_64, aarch64, ppc64le, ...)" + ) + target_type.add_argument( + "--generic", action="store_true", help="print feature level (x86_64_v3, armv8.4a, ...)" + ) parts = subparser.add_mutually_exclusive_group() parts2 = subparser.add_mutually_exclusive_group() parts.add_argument( @@ -80,6 +91,7 @@ def display_target_group(header, target_group): def arch(parser, args): if args.generic_target: + # TODO: add deprecation warning in 0.24 print(archspec.cpu.host().generic) return @@ -96,6 +108,10 @@ def arch(parser, args): host_platform = spack.platforms.host() host_os = host_platform.operating_system(os_args) host_target = host_platform.target(target_args) + if args.family: + host_target = host_target.family + elif args.generic: + host_target = host_target.generic architecture = spack.spec.ArchSpec((str(host_platform), str(host_os), str(host_target))) if args.platform: diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 0cadf7b12d3cc9..2bb52ecc05c6be 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -415,7 +415,7 @@ _spack_add() { } _spack_arch() { - SPACK_COMPREPLY="-h --help -g --generic-target --known-targets -p --platform -o --operating-system -t --target -f --frontend -b --backend" + SPACK_COMPREPLY="-h --help -g --generic-target --known-targets --family --generic -p --platform -o --operating-system -t --target -f --frontend -b --backend" } _spack_audit() { diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 172af7e8f3d81a..ec13420a8db9df 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -489,13 +489,17 @@ complete -c spack -n '__fish_spack_using_command add' -s l -l list-name -r -f -a complete -c spack -n '__fish_spack_using_command add' -s l -l list-name -r -d 'name of the list to add specs to' # spack arch -set -g __fish_spack_optspecs_spack_arch h/help g/generic-target known-targets p/platform o/operating-system t/target f/frontend b/backend +set -g __fish_spack_optspecs_spack_arch h/help g/generic-target known-targets family generic p/platform o/operating-system t/target f/frontend b/backend complete -c spack -n '__fish_spack_using_command arch' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command arch' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -f -a generic_target -complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -d 'show the best generic target' +complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -d 'show the best generic target (deprecated)' complete -c spack -n '__fish_spack_using_command arch' -l known-targets -f -a known_targets complete -c spack -n '__fish_spack_using_command arch' -l known-targets -d 'show a list of all known targets and exit' +complete -c spack -n '__fish_spack_using_command arch' -l family -f -a family +complete -c spack -n '__fish_spack_using_command arch' -l family -d 'print generic ISA (x86_64, aarch64, ppc64le, ...)' +complete -c spack -n '__fish_spack_using_command arch' -l generic -f -a generic +complete -c spack -n '__fish_spack_using_command arch' -l generic -d 'print feature level (x86_64_v3, armv8.4a, ...)' complete -c spack -n '__fish_spack_using_command arch' -s p -l platform -f -a platform complete -c spack -n '__fish_spack_using_command arch' -s p -l platform -d 'print only the platform' complete -c spack -n '__fish_spack_using_command arch' -s o -l operating-system -f -a operating_system From e147679d4046f4059a2ebbc9c808d3a4192b644a Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:39:48 -0400 Subject: [PATCH 090/615] Libmng: Restore Autotools system (#46994) * Libmng: Restore Autotools system CMake, when building its Qt gui, depends on Qt, which in turn, depends on libmng, a CMake based build. To avoid this obvious cyclic dependency, we re-introduce libmng's autotools build into Spack and require when building Qt as a CMake dependency, libmng is built with autotools * Ensure autotools constraint is limited to non-Windows * refactor qt-libmng relation from CMake --- .../repos/builtin/packages/cmake/package.py | 6 ++++++ .../repos/builtin/packages/libmng/package.py | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 7daade48e730ea..9b4b760a33b6aa 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -162,6 +162,12 @@ class Cmake(Package): depends_on("gmake", when="platform=freebsd") depends_on("qt", when="+qtgui") + # Qt depends on libmng, which is a CMake package; + # ensure we build using a non CMake build system + # when libmng is build as a transitive dependency of CMake + for plat in ["linux", "darwin", "freebsd"]: + with when(f"platform={plat}"): + depends_on("libmng build_system=autotools", when="+qtgui") # See https://gitlab.kitware.com/cmake/cmake/-/issues/21135 conflicts( diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index 3a5f6cb27d29fc..d3b59562f47c25 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -3,10 +3,13 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * -class Libmng(CMakePackage): +class Libmng(CMakePackage, AutotoolsPackage): """THE reference library for reading, displaying, writing and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image format.""" @@ -26,9 +29,24 @@ class Libmng(CMakePackage): depends_on("zlib-api") depends_on("lcms") + build_system("cmake", "autotools", default="cmake") + def patch(self): # jpeg requires stdio to be included before its headers. filter_file(r"^(\#include \)", "#include\n\\1", "libmng_types.h") + +class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): return ["-DWITH_LCMS2:BOOL=ON", "-DWITH_LCMS1:BOOL=OFF"] + + +class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): + @run_before("configure") + def clean_preconf(self): + """Required, otherwise configure will crash as subdirectories have + already been configured""" + make("distclean") + + def configure_args(self): + return ["--with-lcms2", "--without-lcms1"] From ffab1563663955ce4a3ffcc4f552dff4b8aa4b2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:58:14 +0200 Subject: [PATCH 091/615] build(deps): bump black in /.github/workflows/requirements/style (#47117) Bumps [black](https://github.com/psf/black) from 24.8.0 to 24.10.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.8.0...24.10.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/requirements/style/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/requirements/style/requirements.txt b/.github/workflows/requirements/style/requirements.txt index 6cd71ed1280f30..8ba3fdf796cc9e 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -1,4 +1,4 @@ -black==24.8.0 +black==24.10.0 clingo==5.7.1 flake8==7.1.1 isort==5.13.2 From 50aa5a7b249da2105d7601a3af4fb6e8a6de6844 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:58:31 +0200 Subject: [PATCH 092/615] build(deps): bump black from 24.8.0 to 24.10.0 in /lib/spack/docs (#47118) Bumps [black](https://github.com/psf/black) from 24.8.0 to 24.10.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.8.0...24.10.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index e6a8fdfe064d33..3e4607ac40fbe8 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -8,6 +8,6 @@ pygments==2.18.0 urllib3==2.2.3 pytest==8.3.3 isort==5.13.2 -black==24.8.0 +black==24.10.0 flake8==7.1.1 mypy==1.11.1 From 9c8b5f58c01d54858871a81a047ad0b1a13cae35 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 22 Oct 2024 13:38:57 -0500 Subject: [PATCH 093/615] py-datrie: patch to allow gcc-14 compilation (#47017) --- var/spack/repos/builtin/packages/py-datrie/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-datrie/package.py b/var/spack/repos/builtin/packages/py-datrie/package.py index 559ad594d8dbc3..e7a77f128b2562 100644 --- a/var/spack/repos/builtin/packages/py-datrie/package.py +++ b/var/spack/repos/builtin/packages/py-datrie/package.py @@ -22,3 +22,8 @@ class PyDatrie(PythonPackage): depends_on("py-setuptools@40.8:", type=("build")) depends_on("py-cython@0.28:", type="build") depends_on("py-pytest-runner", type="build") + + @when("@:0.8.2") + def patch(self): + # fix failure to compile on gcc-14, https://github.com/pytries/datrie/pull/99 + filter_file(r"(\s*)(struct AlphaMap:)", r"\1ctypedef \2", "src/cdatrie.pxd") From 43e26b330c3d9b08c8b1c07e331ab5e8d05c216f Mon Sep 17 00:00:00 2001 From: suzannepaterno <129112900+suzannepaterno@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:04:16 -0400 Subject: [PATCH 094/615] totalview: add v2024.3-linux-arm64, v2024.3-powerle, v2024.3-x86-64 (#47030) * adding 2024.3 Including the new release of TotalView --- .../builtin/packages/totalview/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/var/spack/repos/builtin/packages/totalview/package.py b/var/spack/repos/builtin/packages/totalview/package.py index fa209ce916be34..6f44e97085da26 100644 --- a/var/spack/repos/builtin/packages/totalview/package.py +++ b/var/spack/repos/builtin/packages/totalview/package.py @@ -23,6 +23,24 @@ class Totalview(Package): # will be the documentation. The architecture-specific tarballs are added # as resources dependent on the specific architecture used. + version( + "2024.3-x86-64", + sha256="fb47c5a5abc6ad0e3e7cff1a346037387fa471c3a5cb46b6cdbe7f8a10aff2a7", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_x86-64.tar", + ) + + version( + "2024.3-powerle", + sha256="a064d3c9b12108ec228e2ff203549442172e282682786ff20d02ea9bf40109b2", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_powerle.tar", + ) + + version( + "2024.3-linux-arm64", + sha256="91701e3460cad8bba8810c5ece4720f0156ccba7526d407801a7d0b0e09fb054", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_arm64.tar", + ) + version( "2024.2-x86-64", sha256="b6d9cfd804ff1f6641fbd92f9730b34f62062ead9b1324eaf44f34ea78c69ef1", From d86feeac545dbbc98bb2b82735b7e2890a827695 Mon Sep 17 00:00:00 2001 From: Kenneth Moreland Date: Tue, 22 Oct 2024 16:34:41 -0400 Subject: [PATCH 095/615] paraview: Add new variant +fixes for enabling Fides (#46971) When building ParaView with ADIOS2 and allowing VTK-m to be built, also build Fides. This reads ADIOS2 files with a particular JSON schema, but it requires VTK-m to read data. --- var/spack/repos/builtin/packages/paraview/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 92cbdb89919f64..06ab1adf15a60c 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -88,6 +88,7 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): variant("nvindex", default=False, description="Enable the pvNVIDIAIndeX plugin") variant("tbb", default=False, description="Enable multi-threaded parallelism with TBB") variant("adios2", default=False, description="Enable ADIOS2 support", when="@5.8:") + variant("fides", default=False, description="Enable Fides support", when="@5.9:") variant("visitbridge", default=False, description="Enable VisItBridge support") variant("raytracing", default=False, description="Enable Raytracing support") variant("cdi", default=False, description="Enable CDI support") @@ -130,6 +131,9 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): conflicts("~hdf5", when="+visitbridge") conflicts("+adios2", when="@:5.10 ~mpi") + conflicts("+fides", when="~adios2", msg="Fides needs ADIOS2") + conflicts("+fides", when="use_vtkm=off", msg="Fides needs VTK-m") + conflicts("+fides", when="use_vtkm=default", msg="Fides needs VTK-m") conflicts("+openpmd", when="~adios2 ~hdf5", msg="openPMD needs ADIOS2 and/or HDF5") conflicts("~shared", when="+cuda") conflicts("+cuda", when="@5.8:5.10") @@ -573,6 +577,9 @@ def use_x11(): if "+adios2" in spec: cmake_args.extend(["-DPARAVIEW_ENABLE_ADIOS2:BOOL=ON"]) + if "+fides" in spec: + cmake_args.append("-DPARAVIEW_ENABLE_FIDES:BOOL=ON") + # The assumed qt version changed to QT5 (as of paraview 5.2.1), # so explicitly specify which QT major version is actually being used if spec.satisfies("+qt"): From 59a2a87937f1f733283fea01d0ee77a813ddad46 Mon Sep 17 00:00:00 2001 From: Ashim Mahara <48154590+ashim-mahara@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:54:31 -0400 Subject: [PATCH 096/615] py-uv: relaxing rust dependency (#47148) --- var/spack/repos/builtin/packages/py-uv/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-uv/package.py b/var/spack/repos/builtin/packages/py-uv/package.py index 83d38a0f4771b5..472732da1d058c 100644 --- a/var/spack/repos/builtin/packages/py-uv/package.py +++ b/var/spack/repos/builtin/packages/py-uv/package.py @@ -18,8 +18,8 @@ class PyUv(PythonPackage): version("0.4.16", sha256="2144995a87b161d063bd4ef8294b1e948677bd90d01f8394d0e3fca037bb847f") version("0.4.15", sha256="8e36b8e07595fc6216d01e729c81a0b4ff029a93cc2ef987a73d3b650d6d559c") - depends_on("rust@1.81:", type=("build", "run")) + depends_on("rust", type=("build", "run")) depends_on("python@3.8:", type=("build", "run")) - depends_on("py-maturin@1:1", type=("build")) + depends_on("py-maturin@1:1", type="build") executables = ["^uv$"] From c102ff953bc948cb897ce4947d2bcc1c248eba4d Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 22 Oct 2024 14:17:18 -0700 Subject: [PATCH 097/615] goimports: new package (#47138) --- .../builtin/packages/goimports/package.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 var/spack/repos/builtin/packages/goimports/package.py diff --git a/var/spack/repos/builtin/packages/goimports/package.py b/var/spack/repos/builtin/packages/goimports/package.py new file mode 100644 index 00000000000000..2c799cfde53ddc --- /dev/null +++ b/var/spack/repos/builtin/packages/goimports/package.py @@ -0,0 +1,21 @@ +# 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) + +from spack.package import * + + +class Goimports(GoPackage): + """Updates your Go import lines, adding missing ones and removing unreferenced ones.""" + + homepage = "https://golang.org/x/tools/cmd/goimports" + url = "https://github.com/golang/tools/archive/refs/tags/v0.25.0.tar.gz" + + maintainers("alecbcs") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.25.0", sha256="c536188f5db744371f526f3059960945ed580b3ee60553a4f01956251ab36d20") + + build_directory = "cmd/goimports" From a53a14346eb1a2a57ce2acd7095a9e3882cc3f10 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 22 Oct 2024 14:19:06 -0700 Subject: [PATCH 098/615] gopls: new package (#47137) --- .../repos/builtin/packages/gopls/package.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gopls/package.py diff --git a/var/spack/repos/builtin/packages/gopls/package.py b/var/spack/repos/builtin/packages/gopls/package.py new file mode 100644 index 00000000000000..ba4959d9d9767c --- /dev/null +++ b/var/spack/repos/builtin/packages/gopls/package.py @@ -0,0 +1,21 @@ +# 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) + +from spack.package import * + + +class Gopls(GoPackage): + """The official Go language server developed by the Go team.""" + + homepage = "https://golang.org/x/tools/gopls" + url = "https://github.com/golang/tools/archive/refs/tags/gopls/v0.16.2.tar.gz" + + maintainers("alecbcs") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.16.2", sha256="be68b3159fcb8cde9ebb8b468f67f03531c58be2de33edbac69e5599f2d4a2c1") + + build_directory = "gopls" From 31694fe9bd3d8c190bf558d4f94ec4c9a34b507a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 22 Oct 2024 23:31:38 +0200 Subject: [PATCH 099/615] py-torchaudio: fix build with Apple Clang 15+ (#47130) --- var/spack/repos/builtin/packages/py-torchaudio/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index dc2a088fbcfb4e..e883c0d6169249 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -116,6 +116,13 @@ class PyTorchaudio(PythonPackage): ) conflicts("^cuda@12.5:", when="@:2.1") + def flag_handler(self, name, flags): + # https://github.com/pytorch/vision/issues/8653 + if name == "ldflags": + if self.spec.satisfies("%apple-clang@15:"): + flags.append("-Wl,-ld_classic") + return (flags, None, None) + def setup_build_environment(self, env): # tools/setup_helpers/extension.py env.set("BUILD_SOX", 0) From 582254f891e0d00b885a91e0c485012b5f8183e9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 22 Oct 2024 23:33:09 +0200 Subject: [PATCH 100/615] sox: fix build with Apple Clang 15+ (#47128) * sox: fix build with Apple Clang 15+ --------- Co-authored-by: adamjstewart --- var/spack/repos/builtin/packages/sox/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/sox/package.py b/var/spack/repos/builtin/packages/sox/package.py index d830fb27d6c71c..f21c34222cc03d 100644 --- a/var/spack/repos/builtin/packages/sox/package.py +++ b/var/spack/repos/builtin/packages/sox/package.py @@ -14,7 +14,7 @@ class Sox(AutotoolsPackage): version("14.4.2", sha256="81a6956d4330e75b5827316e44ae381e6f1e8928003c6aa45896da9041ea149c") - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("mp3", default=False, description="Build with mp3 support") @@ -24,3 +24,10 @@ class Sox(AutotoolsPackage): depends_on("opus") depends_on("lame", when="+mp3") depends_on("libmad", when="+mp3") + + def flag_handler(self, name, flags): + # https://github.com/Homebrew/homebrew-core/blob/master/Formula/s/sox.rb + if name == "cflags": + if self.spec.satisfies("%apple-clang@15:"): + flags.append("-Wno-incompatible-function-pointer-types") + return (flags, None, None) From 06f33dcdbbaa8e87cc62b6ebfd1e9842de1a7b36 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 22 Oct 2024 16:42:40 -0600 Subject: [PATCH 101/615] lammps: add new version 20240829.1 (#47099) --- var/spack/repos/builtin/packages/lammps/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index fc58908d58ee9e..097870aff62f28 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -30,10 +30,15 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): # marked deprecated=True # * patch releases older than a stable release should be marked deprecated=True version("develop", branch="develop") + version( + "20240829.1", + sha256="3aea41869aa2fb8120fc4814cab645686f969e2eb7c66aa5587e500597d482dc", + preferred=True, + ) version( "20240829", sha256="6112e0cc352c3140a4874c7f74db3c0c8e30134024164509ecf3772b305fde2e", - preferred=True, + deprecated=True, ) version( "20240627", @@ -403,6 +408,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): depends_on("fortran", type="build", when=f"+{fc_pkg}") stable_versions = { + "20240829.1", "20240829", "20230802.4", "20230802.3", @@ -653,7 +659,7 @@ def url_for_version(self, version): ) variant("tools", default=False, description="Build LAMMPS tools (msi2lmp, binary2txt, chain)") - depends_on("cmake@3.16:", when="@20231121:") + depends_on("cmake@3.16:", when="@20231121:", type="build") depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpiio") depends_on("fftw-api@3", when="+kspace fft=fftw3") From 1ad5739094748272e9fa540193dceb20db934311 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Wed, 23 Oct 2024 00:53:58 +0200 Subject: [PATCH 102/615] libvdwxc: fix broken patch (#47119) --- var/spack/repos/builtin/packages/libvdwxc/package.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/libvdwxc/package.py b/var/spack/repos/builtin/packages/libvdwxc/package.py index e0e7241d9516c6..f9d6a0d8452635 100644 --- a/var/spack/repos/builtin/packages/libvdwxc/package.py +++ b/var/spack/repos/builtin/packages/libvdwxc/package.py @@ -56,10 +56,8 @@ def configure_args(self): return args # misuse of fftw_plan in m4 for fftw detection (configure fails with gcc 14) - # two patches for (1) m4 macro from upstream and (2) pre-generated configure in tarball - patch( - "https://gitlab.com/libvdwxc/libvdwxc/-/commit/9340f857515c4a2e56d2aa7cf3a21c41ba8559c3.diff", - sha256="b9ad695e54a25d7ffa92f783bb0a31d3b421225f97958972e32ba42893844b80", - when="@:0.4.0", - ) + # Only the configure script is patched, NOT the m4 macro (to avoid depending on aclocal), + # so running autoreconf is not supported. + # The relevant upstream fix for the m4 would be: + # https://gitlab.com/libvdwxc/libvdwxc/-/commit/9340f857515c4a2e56d2aa7cf3a21c41ba8559c3.diff patch("fftw-detection.patch", when="@:0.4.0") From 1f6da280b77570410d832ea42e481764bcfd793f Mon Sep 17 00:00:00 2001 From: Mathew Cleveland Date: Tue, 22 Oct 2024 21:21:29 -0600 Subject: [PATCH 103/615] draco: add v7.19.0 (#47032) Co-authored-by: Cleveland Co-authored-by: Kelly (KT) Thompson --- var/spack/repos/builtin/packages/draco/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/draco/package.py b/var/spack/repos/builtin/packages/draco/package.py index 9721303f95e262..b6ed230af938fc 100644 --- a/var/spack/repos/builtin/packages/draco/package.py +++ b/var/spack/repos/builtin/packages/draco/package.py @@ -20,6 +20,7 @@ class Draco(CMakePackage): license("BSD-3-Clause-Open-MPI") version("develop", branch="develop") + version("7.19.0", sha256="04b33cfea244052efcdd40d2b9dd79348749d34647aaf4dfcb15cdfdbe989783") version("7.18.0", sha256="b210e202a06ffdaf149193b5cba164411fd508e20e573e1dfc46d1f56e3fffaa") version("7.14.1", sha256="b05c75f1b8ea1d4fac4900d897fb1c948b470826b174ed8b97b32c6da9f030bf") version("7.14.0", sha256="c8abf293d81c1b8020907557c20d8d2f2edf9ac7ae60a534eab052a8c3b7f99d") @@ -83,6 +84,8 @@ class Draco(CMakePackage): conflicts("+cuda", when="@:7.6") conflicts("+caliper", when="@:7.7") + with when("@7.19.0:"): + conflicts("gcc@:9.0") # Fix python discovery. patch("d710.patch", when="@7.1.0") From ed15b73c3bb6b733858e8891a74c1e9afe0b3c8b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 23 Oct 2024 07:33:09 +0200 Subject: [PATCH 104/615] Remove spurious warning, introduced in #46992 (#47152) fixes #47135 Signed-off-by: Massimiliano Culpo --- lib/spack/spack/build_environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index ad62685024c880..e6203570226402 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -1061,8 +1061,8 @@ def set_all_package_py_globals(self): pkg.setup_dependent_package(dependent_module, spec) dependent_module.propagate_changes_to_mro() - pkg = self.specs[0].package if self.context == Context.BUILD: + pkg = self.specs[0].package module = ModuleChangePropagator(pkg) # std_cmake_args is not sufficiently static to be defined # in set_package_py_globals and is deprecated so its handled From f8ab94061f27ab3021dd193c82ec56cc02c592ff Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 23 Oct 2024 01:36:38 -0500 Subject: [PATCH 105/615] gcta: use intel-oneapi-mkl (#47127) intel-mkl fails to concretize with the 'Cannot select a single version' error. My guess would be because all of its versions are marked deprecated. --- var/spack/repos/builtin/packages/gcta/package.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcta/package.py b/var/spack/repos/builtin/packages/gcta/package.py index d3a2e218e181f4..6fc6d60ff7e4dd 100644 --- a/var/spack/repos/builtin/packages/gcta/package.py +++ b/var/spack/repos/builtin/packages/gcta/package.py @@ -21,13 +21,13 @@ class Gcta(CMakePackage): version("1.94.0beta", commit="746e3975ddb463fc7bd15b03c6cc64b023eca497", submodules=True) version("1.91.2", sha256="0609d0fba856599a2acc66adefe87725304117acc226360ec2aabf8a0ac64e85") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") conflicts("target=aarch64:", when="@:1.91.2", msg="aarch64 support added in 1.94.0") depends_on("cmake@3.1:", type="build") - depends_on("intel-mkl@2017:", when="target=x86_64:") + depends_on("intel-oneapi-mkl", when="target=x86_64:") depends_on("openblas", when="target=aarch64:") depends_on("eigen@3.3.1", when="@1.91.2") depends_on("eigen@3.3.7:", when="@1.94.0beta:") @@ -50,6 +50,12 @@ def patch(self): for s in strings: filter_file(s, "", "CMakeLists.txt", string=True) + def flag_handler(self, name, flags): + # To compile with newer compilers like gcc-13, gcta needs to include : + if name == "cxxflags": + flags.extend(["-include", "cstdint"]) + return (flags, None, None) + def cmake_args(self): eigen = self.spec["eigen"].prefix.include args = [self.define("EIGEN3_INCLUDE_DIR", eigen)] @@ -60,7 +66,7 @@ def cmake_args(self): args.extend(deps) if self.spec.satisfies("target=x86_64:"): - mkl = self.spec["intel-mkl"].prefix + mkl = self.spec["intel-oneapi-mkl"].prefix.mkl.latest args.append(self.define("MKLROOT", mkl)) elif self.spec.satisfies("target=aarch64:"): openblas = self.spec["openblas"].prefix From bb25210b62ebdbddab66d857deba70befe587c2b Mon Sep 17 00:00:00 2001 From: Andrew W Elble Date: Wed, 23 Oct 2024 02:59:44 -0400 Subject: [PATCH 106/615] py-jaxlib: backport fix for abseil-cpp on aarch64 (#47125) --- .../packages/py-jaxlib/jaxxlatsl.patch | 100 ++++++++++++++++++ .../builtin/packages/py-jaxlib/package.py | 4 + 2 files changed, 104 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch diff --git a/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch b/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch new file mode 100644 index 00000000000000..e96cc32e263969 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch @@ -0,0 +1,100 @@ +From 8fce7378ed8ce994107568449806cd99274ab22b Mon Sep 17 00:00:00 2001 +From: Andrew Elble +Date: Mon, 21 Oct 2024 19:42:31 -0400 +Subject: [PATCH] patchit + +--- + ...ch-for-Abseil-to-fix-build-on-Jetson.patch | 68 +++++++++++++++++++ + third_party/xla/workspace.bzl | 1 + + 2 files changed, 69 insertions(+) + create mode 100644 third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch + +diff --git a/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch b/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch +new file mode 100644 +index 000000000000..5138a045082b +--- /dev/null ++++ b/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch +@@ -0,0 +1,68 @@ ++From 40da87a0476436ca1da2eafe08935787a05e9a61 Mon Sep 17 00:00:00 2001 ++From: David Dunleavy ++Date: Mon, 5 Aug 2024 11:42:53 -0700 ++Subject: [PATCH] Add patch for Abseil to fix build on Jetson ++ ++Patches in https://github.com/abseil/abseil-cpp/commit/372124e6af36a540e74a2ec31d79d7297a831f98 ++ ++PiperOrigin-RevId: 659627531 ++--- ++ .../tsl/third_party/absl/nvidia_jetson.patch | 35 +++++++++++++++++++ ++ .../tsl/third_party/absl/workspace.bzl | 1 + ++ 2 files changed, 36 insertions(+) ++ create mode 100644 third_party/tsl/third_party/absl/nvidia_jetson.patch ++ ++diff --git a/third_party/tsl/third_party/absl/nvidia_jetson.patch b/third_party/tsl/third_party/absl/nvidia_jetson.patch ++new file mode 100644 ++index 000000000000..5328c3a0d605 ++--- /dev/null +++++ b/third_party/tsl/third_party/absl/nvidia_jetson.patch ++@@ -0,0 +1,35 @@ +++From 372124e6af36a540e74a2ec31d79d7297a831f98 Mon Sep 17 00:00:00 2001 +++From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bastien?= +++Date: Thu, 1 Aug 2024 12:38:52 -0700 +++Subject: [PATCH] PR #1732: Fix build on NVIDIA Jetson board. Fix #1665 +++ +++Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1732 +++ +++Fix build on NVIDIA Jetson board. Fix #1665 +++ +++This patch is already used by the spark project. +++I'm fixing this as this break the build of Tensorflow and JAX on Jetson board. +++Merge 7db2d2ab9fbed1f0fabad10a6ec73533ba71bfff into 6b8ebb35c0414ef5a2b6fd4a0f59057e41beaff9 +++ +++Merging this change closes #1732 +++ +++COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1732 from nouiz:fix_neon_on_jetson 7db2d2ab9fbed1f0fabad10a6ec73533ba71bfff +++PiperOrigin-RevId: 658501520 +++Change-Id: If502ede4efc8c877fb3fed227eca6dc7622dd181 +++--- +++ absl/base/config.h | 2 +- +++ 1 file changed, 1 insertion(+), 1 deletion(-) +++ +++diff --git a/absl/base/config.h b/absl/base/config.h +++index 97c9a22a109..ab1e9860a91 100644 +++--- a/absl/base/config.h ++++++ b/absl/base/config.h +++@@ -926,7 +926,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || +++ // https://llvm.org/docs/CompileCudaWithLLVM.html#detecting-clang-vs-nvcc-from-code +++ #ifdef ABSL_INTERNAL_HAVE_ARM_NEON +++ #error ABSL_INTERNAL_HAVE_ARM_NEON cannot be directly set +++-#elif defined(__ARM_NEON) && !defined(__CUDA_ARCH__) ++++#elif defined(__ARM_NEON) && !(defined(__NVCC__) && defined(__CUDACC__)) +++ #define ABSL_INTERNAL_HAVE_ARM_NEON 1 +++ #endif +++ ++diff --git a/third_party/tsl/third_party/absl/workspace.bzl b/third_party/tsl/third_party/absl/workspace.bzl ++index 06f75166ce4b..9565a82c3319 100644 ++--- a/third_party/tsl/third_party/absl/workspace.bzl +++++ b/third_party/tsl/third_party/absl/workspace.bzl ++@@ -44,4 +44,5 @@ def repo(): ++ system_link_files = SYS_LINKS, ++ strip_prefix = "abseil-cpp-{commit}".format(commit = ABSL_COMMIT), ++ urls = tf_mirror_urls("https://github.com/abseil/abseil-cpp/archive/{commit}.tar.gz".format(commit = ABSL_COMMIT)), +++ patch_file = ["//third_party/absl:nvidia_jetson.patch"], ++ ) ++-- ++2.31.1 ++ +diff --git a/third_party/xla/workspace.bzl b/third_party/xla/workspace.bzl +index af52e7671507..70481bc970a5 100644 +--- a/third_party/xla/workspace.bzl ++++ b/third_party/xla/workspace.bzl +@@ -29,6 +29,7 @@ def repo(): + name = "xla", + sha256 = XLA_SHA256, + strip_prefix = "xla-{commit}".format(commit = XLA_COMMIT), ++ patch_file = ["//third_party/xla:0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch"], + urls = tf_mirror_urls("https://github.com/openxla/xla/archive/{commit}.tar.gz".format(commit = XLA_COMMIT)), + ) + +-- +2.31.1 + diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index 09eb522c56aa5e..5bae94ebaf5bc3 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -128,6 +128,10 @@ class PyJaxlib(PythonPackage, CudaPackage, ROCmPackage): when="@:0.4.25", ) + # Might be able to be applied to earlier versions + # backports https://github.com/abseil/abseil-cpp/pull/1732 + patch("jaxxlatsl.patch", when="@0.4.28:0.4.32 target=aarch64:") + conflicts( "cuda_arch=none", when="+cuda", From e63e8b5efa46658d28e671de4106f96752fa3788 Mon Sep 17 00:00:00 2001 From: Laura Weber Date: Wed, 23 Oct 2024 00:17:14 -0700 Subject: [PATCH 107/615] cqrlib: added version 1.1.3, added Makefile patch to fix libtool error (#47153) --- .../builtin/packages/cqrlib/Makefile.patch | 29 +++++++++++++++++++ .../repos/builtin/packages/cqrlib/package.py | 11 ++++--- 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 var/spack/repos/builtin/packages/cqrlib/Makefile.patch diff --git a/var/spack/repos/builtin/packages/cqrlib/Makefile.patch b/var/spack/repos/builtin/packages/cqrlib/Makefile.patch new file mode 100644 index 00000000000000..222da4cef1bbea --- /dev/null +++ b/var/spack/repos/builtin/packages/cqrlib/Makefile.patch @@ -0,0 +1,29 @@ +--- a/Makefile ++++ b/Makefile +@@ -87,16 +87,16 @@ else + INCLUDES = -I$(INC) + endif + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CPPFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPLIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CXX) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_DYNAMIC= $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-CPPBUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CPPFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPLIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_DYNAMIC= $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++CPPBUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/cqrlib/package.py b/var/spack/repos/builtin/packages/cqrlib/package.py index ba698f7ed7a36f..6d2e644b938944 100644 --- a/var/spack/repos/builtin/packages/cqrlib/package.py +++ b/var/spack/repos/builtin/packages/cqrlib/package.py @@ -10,12 +10,10 @@ class Cqrlib(MakefilePackage): """CQRlib -- ANSI C API for Quaternion Rotations""" homepage = "https://cqrlib.sourceforge.net/" - url = ( - "https://downloads.sourceforge.net/project/cqrlib/cqrlib/CQRlib-1.1.2/CQRlib-1.1.2.tar.gz" - ) license("LGPL-2.1-or-later") + version("1.1.3", sha256="90ecd9aabfb72e55e56957c7b233910d18b8c2bb522a8e59eddbcc4618c72d0e") version("1.1.2", sha256="af3cf2402974579f3c6efc6a6174a5da52786db4bfee9d38d504d93bc42410fd") depends_on("c", type="build") # generated @@ -23,7 +21,12 @@ class Cqrlib(MakefilePackage): depends_on("libtool", type="build") - patch("cqr.patch") + patch("cqr.patch", when="@1.1.2") + patch("Makefile.patch", when="@1.1.2:") + + def url_for_version(self, version): + full_vers = str(version) + return f"https://downloads.sourceforge.net/project/cqrlib/cqrlib/CQRlib-{full_vers}/CQRlib-{full_vers}.tar.gz" def edit(self, spec, prefix): mf = FileFilter("Makefile") From eccf97af33942e4b5350bc34d3704710ef22a80c Mon Sep 17 00:00:00 2001 From: Laura Weber Date: Wed, 23 Oct 2024 00:23:18 -0700 Subject: [PATCH 108/615] cvector: added version 1.0.3.1, added Makefile patch to fix libtool error (#47154) --- .../builtin/packages/cvector/Makefile.patch | 19 +++++++++++++++++++ .../repos/builtin/packages/cvector/package.py | 18 ++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/cvector/Makefile.patch diff --git a/var/spack/repos/builtin/packages/cvector/Makefile.patch b/var/spack/repos/builtin/packages/cvector/Makefile.patch new file mode 100644 index 00000000000000..e6169769e2207a --- /dev/null +++ b/var/spack/repos/builtin/packages/cvector/Makefile.patch @@ -0,0 +1,19 @@ +--- a/Makefile ++++ b/Makefile +@@ -89,11 +89,11 @@ else + INCLUDES = -I$(INC) + endif + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -release $(RELEASE) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -dynamic -I $(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static -I $(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -release $(RELEASE) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -dynamic -I $(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static -I $(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/cvector/package.py b/var/spack/repos/builtin/packages/cvector/package.py index 105142bbcd6578..9ca644ab293f0a 100644 --- a/var/spack/repos/builtin/packages/cvector/package.py +++ b/var/spack/repos/builtin/packages/cvector/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -10,16 +12,28 @@ class Cvector(MakefilePackage): """CVector -- ANSI C API for Dynamic Arrays""" homepage = "https://cvector.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/cvector/cvector/CVector-1.0.3/CVector-1.0.3.tar.gz" license("LGPL-2.1-or-later") - version("1.0.3", sha256="d3fa92de3cd5ba8697abdbb52080248b2c252a81cf40a8ec639be301518d0ce3") + version("1.0.3.1", sha256="6492b2beb26c3179cdd19abc90dc47a685be471c594d5ab664283e1d3586acdc") + version( + "1.0.3", + sha256="d3fa92de3cd5ba8697abdbb52080248b2c252a81cf40a8ec639be301518d0ce3", + deprecated=True, + ) depends_on("c", type="build") # generated depends_on("libtool", type="build") + patch("Makefile.patch", when="@1.0.3.1") + + def url_for_version(self, version): + pattern = re.compile(r"^[0-9]+\.[0-9]+\.[0-9]+") + full_vers = str(version) + cropped_vers = pattern.search(full_vers).group() + return f"https://downloads.sourceforge.net/project/cvector/cvector/CVector-{cropped_vers}/CVector-{full_vers}.tar.gz" + def edit(self, spec, prefix): mf = FileFilter("Makefile") mf.filter(r"^CC.+", "CC = {0}".format(spack_cc)) From 67a40c6cc4de83817a92de2f8885933d5f2a3301 Mon Sep 17 00:00:00 2001 From: Lehman Garrison Date: Wed, 23 Oct 2024 03:43:04 -0400 Subject: [PATCH 109/615] py-asdf: add 3.5.0, and update py-asdf-standard to match (#47156) * py-asdf: add 3.5.0, and update py-asdf-standard to match --- .../packages/py-asdf-standard/package.py | 8 ++++++- .../repos/builtin/packages/py-asdf/package.py | 23 ++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-asdf-standard/package.py b/var/spack/repos/builtin/packages/py-asdf-standard/package.py index e31384bddc81a3..d6dfe2a80cabae 100644 --- a/var/spack/repos/builtin/packages/py-asdf-standard/package.py +++ b/var/spack/repos/builtin/packages/py-asdf-standard/package.py @@ -16,11 +16,17 @@ class PyAsdfStandard(PythonPackage): license("BSD-3-Clause") + version("1.1.1", sha256="01535bc2b15bfc09ec8a62d4999f9cf32dc49dc71660c8425640228fd8776102") version("1.0.3", sha256="afd8ff9a70e7b17f6bcc64eb92a544867d5d4fe1f0076719142fdf62b96cfd44") + with when("@1.1.1:"): + depends_on("python@3.9:", type=("build", "run")) + + depends_on("py-setuptools@61:", type="build") + depends_on("python@3.8:", type=("build", "run")) depends_on("py-setuptools@42:", type="build") depends_on("py-setuptools-scm@3.4: +toml", type="build") - depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") + depends_on("py-importlib-resources@3:", type=("build", "run"), when="@1.0.3 ^python@:3.8") diff --git a/var/spack/repos/builtin/packages/py-asdf/package.py b/var/spack/repos/builtin/packages/py-asdf/package.py index cd5ddf25638db8..236d0894a239d7 100644 --- a/var/spack/repos/builtin/packages/py-asdf/package.py +++ b/var/spack/repos/builtin/packages/py-asdf/package.py @@ -18,6 +18,7 @@ class PyAsdf(PythonPackage): license("BSD-3-Clause") + version("3.5.0", sha256="047ad7bdd8f40b04b8625abfd119a35d18b344301c60ea9ddf63964e7ce19669") version("2.15.0", sha256="686f1c91ebf987d41f915cfb6aa70940d7ad17f87ede0be70463147ad2314587") version("2.4.2", sha256="6ff3557190c6a33781dae3fd635a8edf0fa0c24c6aca27d8679af36408ea8ff2") @@ -25,7 +26,15 @@ class PyAsdf(PythonPackage): depends_on("py-lz4@0.10:", when="+lz4", type=("build", "run")) - with when("@2.15:"): + with when("@3.5.0:"): + depends_on("python@3.9:", type=("build", "run")) + + depends_on("py-asdf-standard@1.1.0:", type=("build", "run")) + depends_on("py-importlib-metadata@4.11.4:", type=("build", "run"), when="^python@:3.11") + depends_on("py-numpy@1.22:", type=("build", "run")) + depends_on("py-attrs@22.2.0:", type=("build", "run")) + + with when("@2.15.0:"): depends_on("python@3.8:", type=("build", "run")) depends_on("py-setuptools@60:", type="build") @@ -33,17 +42,19 @@ class PyAsdf(PythonPackage): depends_on("py-asdf-standard@1.0.1:", type=("build", "run")) depends_on("py-asdf-transform-schemas@0.3:", type=("build", "run")) - depends_on("py-asdf-unit-schemas@0.1:", type=("build", "run")) - depends_on("py-importlib-metadata@4.11.4:", type=("build", "run")) - depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") depends_on("py-jmespath@0.6.2:", type=("build", "run")) - depends_on("py-jsonschema@4.0.1:4.17", type=("build", "run")) depends_on("py-numpy@1.20:", type=("build", "run")) - depends_on("py-numpy@1.20:1.24", type=("build", "run"), when="^python@:3.8") depends_on("py-packaging@19:", type=("build", "run")) depends_on("py-pyyaml@5.4.1:", type=("build", "run")) depends_on("py-semantic-version@2.8:", type=("build", "run")) + with when("@2.15.0"): + depends_on("py-asdf-unit-schemas@0.1:", type=("build", "run")) + depends_on("py-importlib-metadata@4.11.4:", type=("build", "run")) + depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") + depends_on("py-jsonschema@4.0.1:4.17", type=("build", "run")) + depends_on("py-numpy@1.20:1.24", type=("build", "run"), when="^python@:3.8") + with when("@2.4.2"): depends_on("python@3.3:", type=("build", "run")) From 328787b017853df2e43c1ab784b37f748954c5e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 06:14:11 -0600 Subject: [PATCH 110/615] build(deps): bump types-six in /.github/workflows/requirements/style (#47158) Bumps [types-six](https://github.com/python/typeshed) from 1.16.21.20240513 to 1.16.21.20241009. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-six dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/requirements/style/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/requirements/style/requirements.txt b/.github/workflows/requirements/style/requirements.txt index 8ba3fdf796cc9e..be2bfefc80bb11 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -3,5 +3,5 @@ clingo==5.7.1 flake8==7.1.1 isort==5.13.2 mypy==1.8.0 -types-six==1.16.21.20240513 +types-six==1.16.21.20241009 vermin==1.6.0 From e785d3716e1e42439b1ac0b0c20d255f0cdb8f9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 06:18:20 -0600 Subject: [PATCH 111/615] build(deps): bump sphinx from 7.4.7 to 8.1.3 in /lib/spack/docs (#47159) Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.4.7 to 8.1.3. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/v8.1.3/CHANGES.rst) - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.4.7...v8.1.3) --- updated-dependencies: - dependency-name: sphinx dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index 3e4607ac40fbe8..f9c3ccc1b60de4 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -1,4 +1,4 @@ -sphinx==7.4.7 +sphinx==8.1.3 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 sphinx-rtd-theme==3.0.1 From f33912d707ba63a9d4596b1b4a491a6b17d5b0b1 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 23 Oct 2024 05:33:09 -0700 Subject: [PATCH 112/615] mypy: work around typing issues with `functools.partial` (#47160) --- lib/spack/spack/filesystem_view.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/filesystem_view.py b/lib/spack/spack/filesystem_view.py index 2d5890c36389fc..278541377989c2 100644 --- a/lib/spack/spack/filesystem_view.py +++ b/lib/spack/spack/filesystem_view.py @@ -33,6 +33,7 @@ from llnl.util.tty.color import colorize import spack.config +import spack.directory_layout import spack.paths import spack.projections import spack.relocate @@ -50,7 +51,7 @@ _projections_path = ".spack/projections.yaml" -LinkCallbackType = Callable[[str, str, "FilesystemView", Optional["spack.spec.Spec"]], None] +LinkCallbackType = Callable[[str, str, "FilesystemView", Optional[spack.spec.Spec]], None] def view_symlink(src: str, dst: str, *args, **kwargs) -> None: @@ -62,7 +63,7 @@ def view_hardlink(src: str, dst: str, *args, **kwargs) -> None: def view_copy( - src: str, dst: str, view: "FilesystemView", spec: Optional["spack.spec.Spec"] = None + src: str, dst: str, view: "FilesystemView", spec: Optional[spack.spec.Spec] = None ) -> None: """ Copy a file from src to dst. @@ -160,7 +161,7 @@ class FilesystemView: def __init__( self, root: str, - layout: "spack.directory_layout.DirectoryLayout", + layout: spack.directory_layout.DirectoryLayout, *, projections: Optional[Dict] = None, ignore_conflicts: bool = False, @@ -182,7 +183,10 @@ def __init__( # Setup link function to include view self.link_type = link_type - self.link = ft.partial(function_for_link_type(link_type), view=self) + self._link = function_for_link_type(link_type) + + def link(self, src: str, dst: str, spec: Optional[spack.spec.Spec] = None) -> None: + self._link(src, dst, self, spec) def add_specs(self, *specs, **kwargs): """ @@ -283,7 +287,7 @@ class YamlFilesystemView(FilesystemView): def __init__( self, root: str, - layout: "spack.directory_layout.DirectoryLayout", + layout: spack.directory_layout.DirectoryLayout, *, projections: Optional[Dict] = None, ignore_conflicts: bool = False, From 37664b36da85d8f747504dd47068ade5ce18c486 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 23 Oct 2024 17:38:13 +0200 Subject: [PATCH 113/615] py-grayskull: add v2.7.3 (#47166) --- var/spack/repos/builtin/packages/py-grayskull/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-grayskull/package.py b/var/spack/repos/builtin/packages/py-grayskull/package.py index 50ad9904bedcb5..cd0534daf79d99 100644 --- a/var/spack/repos/builtin/packages/py-grayskull/package.py +++ b/var/spack/repos/builtin/packages/py-grayskull/package.py @@ -14,6 +14,7 @@ class PyGrayskull(PythonPackage): license("Apache-2.0") + version("2.7.3", sha256="9396245439584b92d656fdefb03d6911b5987f91a5ae714772ddcb338768cbb9") version("2.5.0", sha256="b021138655be550fd1b93b8db08b9c66169fac9cba6bcdad1411263e12fc703f") depends_on("python@3.8:", type=("build", "run")) From 7ddb40a804cae75ba8755cdc5af48873049111b4 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Wed, 23 Oct 2024 21:16:47 +0530 Subject: [PATCH 114/615] cp2k: apply a patch to fix access to unallocated arrays (#47170) --- var/spack/repos/builtin/packages/cp2k/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 0a590013b1b373..5d462a906a438c 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -378,6 +378,14 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): # https://github.com/cp2k/cp2k/issues/3688 patch("d4-dispersion-bugfix-2024.3.patch", when="@2024.3") + # Fix segmentation faults caused by accessing unallocated arrays + # https://github.com/cp2k/cp2k/pull/3733 + patch( + "https://github.com/cp2k/cp2k/commit/7a99649828ecf7d5dc53d952a1bf7be6970deabe.patch?full_index=1", + sha256="37f4f1a76634ff4a5617fe0c670e6acfe2afa2b2cfc5b2875e438a54baa4525e", + when="@2024.2:2024.3", + ) + def patch(self): # Patch for an undefined constant due to incompatible changes in ELPA if self.spec.satisfies("@9.1:2022.2 +elpa"): From 978be305a7d0ae23f5d763af35e4d9ebd9b663ef Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 23 Oct 2024 18:55:45 +0200 Subject: [PATCH 115/615] py-torchmetrics: add v1.5.1 (#47164) --- var/spack/repos/builtin/packages/py-torchmetrics/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-torchmetrics/package.py b/var/spack/repos/builtin/packages/py-torchmetrics/package.py index 893a1d96c19e85..16b272e7a992f9 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -15,6 +15,7 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.5.1", sha256="9701632cf811bc460abf07bd7b971b79c1ae9c8231e03d495b53a0975e43fe07") version("1.5.0", sha256="c18e68bab4104ad7d2285af601ddc6dc04f9f3b7cafaa8ad13fa1dcc539e33b6") version("1.4.3", sha256="5554a19167e91f543afe82ff58a01059c8eec854359ad22896449c2c8fb0ad89") version("1.4.2", sha256="7a40cbec85e5645090812b87601696b4adf158294ec8c407ae58a71710938b87") From aed1a3f980a40f126c58c68fae68373f6e99157a Mon Sep 17 00:00:00 2001 From: Thorsten Hater <24411438+thorstenhater@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:13:23 +0200 Subject: [PATCH 116/615] pybind11-stubgen: Add 2.5.1 (#47162) --- .../repos/builtin/packages/py-pybind11-stubgen/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py b/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py index 8f04cae03bcc07..f4218428e14696 100644 --- a/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py @@ -10,8 +10,9 @@ class PyPybind11Stubgen(PythonPackage): """Generates stubs for pybind11-wrapped python modules""" homepage = "https://github.com/sizmailov/pybind11-stubgen" - pypi = "pybind11-stubgen/pybind11-stubgen-0.3.0.tar.gz" + pypi = "pybind11-stubgen/pybind11-stubgen-2.5.1.tar.gz" + version("2.5.1", sha256="4427a67038a00c5ac1637ffa6c65728c67c5b1251ecc23c7704152be0b14cc0b") version("0.8.7", sha256="79e24009137cd51ef7201c5b9f4d0d072824b260cff751ec8200a8886e06adbf") version("0.3.0", sha256="fb9bc977df46d7f1aecd33258e34abbbd01f1f461862c8a2a85341b96e6e6bdf") From 5b5be0582f7c4f09a39e0ea5d1c0d68a200bf216 Mon Sep 17 00:00:00 2001 From: Olivier Cessenat Date: Wed, 23 Oct 2024 19:30:23 +0200 Subject: [PATCH 117/615] gxsview: add v2024.03.15 (#46901) * gxsview: new version * gxsview 2024 patches and qt6 conflicts * gxsview 2024 demands vtk 9 minimum * Removing the -lvtkRenderingQt for 2024.03.15 * gxsview: fontconfig inc/lib dirs added to gui/gui.pro --------- Co-authored-by: Olivier Cessenat --- .../repos/builtin/packages/gxsview/package.py | 11 ++++ .../builtin/packages/gxsview/vtk90.patch | 51 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gxsview/vtk90.patch diff --git a/var/spack/repos/builtin/packages/gxsview/package.py b/var/spack/repos/builtin/packages/gxsview/package.py index 0d94df2f6eed1c..d50fe08e3cd2eb 100644 --- a/var/spack/repos/builtin/packages/gxsview/package.py +++ b/var/spack/repos/builtin/packages/gxsview/package.py @@ -24,6 +24,9 @@ class Gxsview(QMakePackage): license("LGPL-3.0-only") + version( + "2024.03.15", sha256="5a6e6384a79fc2f39370846814f049b6c4c32f418cb00363cfb18bc1b6598d3a" + ) version( "2023.05.29", sha256="1e768fd7afd22198b7f73adeb42f4ccf7e0ff68996a3843b1ea138225c4c1da3" ) @@ -40,12 +43,17 @@ class Gxsview(QMakePackage): depends_on("fontconfig") depends_on("qt@5.14.0:+opengl+gui") depends_on("vtk@8.0:+qt+opengl2") # +mpi+python are optional + depends_on("vtk@9:+qt+opengl2", when="@2024.03.15:") conflicts("%gcc@:7.2.0", msg="Requires C++17 compiler support") # need C++17 standard + conflicts("qt@6:", msg="Qt 6 support is not yet achieved") + conflicts("qt-base@6:", msg="Qt 6 support is not yet achieved") # required for clingo patch("vtk9.patch", when="^vtk@9:") # gcc11 compilation rule for std::numeric_limits, # avoid "numeric_limits" is not a member of "std" patch("gcc11.patch", when="@2021.07.01 %gcc@11:") + # sets fontconfig inc/lib, removes useless stuffs + patch("vtk90.patch", when="@2024.03.15") build_directory = "gui" @@ -57,11 +65,14 @@ def qmake_args(self): if not os.path.exists(vtk_include_dir): vtk_include_dir = join_path(self.spec["vtk"].prefix.include, "vtk") args.append("VTK_NO_VER_SUFFIX=ON") + fontconfig = self.spec["fontconfig"] args.extend( [ "VTK_LIB_DIR={0}".format(vtk_lib_dir), "VTK_INC_DIR={0}".format(vtk_include_dir), "VTK_MAJOR_VER={0}".format(str(vtk_suffix)), + "FONTCONFIG_LIBDIR={0}".format(fontconfig.prefix.lib), + "FONTCONFIG_INCDIR={0}".format(fontconfig.prefix.include), ] ) # Below to avoid undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' diff --git a/var/spack/repos/builtin/packages/gxsview/vtk90.patch b/var/spack/repos/builtin/packages/gxsview/vtk90.patch new file mode 100644 index 00000000000000..afe6990e451de0 --- /dev/null +++ b/var/spack/repos/builtin/packages/gxsview/vtk90.patch @@ -0,0 +1,51 @@ +diff --git a/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp b/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp +index 92802f2..af731e3 100644 +--- a/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp ++++ b/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp +@@ -7,6 +7,7 @@ + #include "trajectorycreatingworker.hpp" + + #include // for coloring ++#include + + #include "core/image/color.hpp" + +diff --git a/gui/geometryviewer/trajectorypane/trajectorypane.cpp b/gui/geometryviewer/trajectorypane/trajectorypane.cpp +index eeae291..337e0e1 100644 +--- a/gui/geometryviewer/trajectorypane/trajectorypane.cpp ++++ b/gui/geometryviewer/trajectorypane/trajectorypane.cpp +@@ -35,7 +35,7 @@ + #include + #include + #include +-#include ++// #include + #include + #include + #if defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) || defined(__WIN64__) || defined(_MSC_VER) +diff --git a/gui/gui.pro b/gui/gui.pro +index cab6c36..81861b7 100644 +--- a/gui/gui.pro ++++ b/gui/gui.pro +@@ -302,7 +302,8 @@ unix:{ + + + unix:!macx { +- LIBS += -lfontconfig ++ LIBS += -L$$FONTCONFIG_LIBDIR -lfontconfig ++ INCLUDEPATH += $$FONTCONFIG_INCDIR + # gcc7 requires libstdc++fs + linux-g++ { + lessThan(QMAKE_GCC_MAJOR_VERSION, 8) { +diff --git a/gui/vtk9.pri b/gui/vtk9.pri +index 298dedb..82993f2 100644 +--- a/gui/vtk9.pri ++++ b/gui/vtk9.pri +@@ -58,7 +58,6 @@ LIBS += \ + -lvtkRenderingGL2PSOpenGL2$$VTK_VER_SUFFIX \ + -lvtkRenderingSceneGraph$$VTK_VER_SUFFIX \ + -lvtkRenderingOpenGL2$$VTK_VER_SUFFIX \ +- -lvtkRenderingQt$$VTK_VER_SUFFIX \ + -lvtkRenderingUI$$VTK_VER_SUFFIX \ + -lvtkRenderingVolume$$VTK_VER_SUFFIX \ + -lvtkRenderingVtkJS$$VTK_VER_SUFFIX \ From fd1c95a43214fc3e83db1eb14992de8b2484b154 Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Wed, 23 Oct 2024 12:46:09 -0500 Subject: [PATCH 118/615] ParaView: Various fixes to better support no mpi and fides builds (#47114) * ParaView: Explicitly set the ENABLE_MPI on/off * Disallow MPI in the DAG when ~mpi * @5.13 uses 'remove_children', use pugixml@1.11:, See #47098 * cloud_pipelines/stacks/data-vis-sdk: paraview +raytracing: add +adios2 +fides Co-authored-by: Bernhard Kaindl --- .../cloud_pipelines/stacks/data-vis-sdk/spack.yaml | 2 +- var/spack/repos/builtin/packages/paraview/package.py | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml index be0ec9b235f137..17b67bb268112e 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml @@ -24,7 +24,7 @@ spack: definitions: - paraview_specs: - matrix: - - - paraview +raytracing + - - paraview +raytracing +adios2 +fides - - +qt ^[virtuals=gl] glx # GUI Support w/ GLX Rendering - ~qt ^[virtuals=gl] glx # GLX Rendering - ^[virtuals=gl] osmesa # OSMesa Rendering diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 06ab1adf15a60c..874f8bed64155a 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -229,6 +229,7 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): depends_on("tbb", when="+tbb") depends_on("mpi", when="+mpi") + conflicts("mpi", when="~mpi") depends_on("qt@:4", when="@:5.2.0+qt") depends_on("qt+sql", when="+qt") @@ -308,6 +309,8 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): # and pre-5.9 is unable to handle that. depends_on("pugixml@:1.10", when="@:5.8") depends_on("pugixml", when="@5.9:") + # 5.13 uses 'remove_children': https://github.com/spack/spack/issues/47098 + depends_on("pugixml@1.11:", when="@5.13:") # ParaView depends on cli11 due to changes in MR # https://gitlab.kitware.com/paraview/paraview/-/merge_requests/4951 @@ -609,11 +612,9 @@ def use_x11(): else: cmake_args.append("-DPARAVIEW_ENABLE_PYTHON:BOOL=OFF") + cmake_args.append("-DPARAVIEW_USE_MPI:BOOL=%s" % variant_bool("+mpi")) if "+mpi" in spec: - mpi_args = [ - "-DPARAVIEW_USE_MPI:BOOL=ON", - "-DMPIEXEC:FILEPATH=%s/bin/mpiexec" % spec["mpi"].prefix, - ] + mpi_args = ["-DMPIEXEC:FILEPATH=%s/bin/mpiexec" % spec["mpi"].prefix] if not sys.platform == "win32": mpi_args.extend( [ From 43bcb5056f94c1f659bd5ccfa2e703729e6594c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:31:13 +0100 Subject: [PATCH 119/615] extrae: remove duplicate unconditional dep on `papi` (#47179) --- var/spack/repos/builtin/packages/extrae/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index c5e10097d4c8fd..a89c67e9215f16 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -68,7 +68,6 @@ class Extrae(AutotoolsPackage): # See https://github.com/spack/spack/pull/22303 for reference depends_on(Boost.with_default_variants) depends_on("libdwarf") - depends_on("papi") depends_on("elf", type="link") depends_on("libxml2") depends_on("numactl") From 755c113c164a15472185487b8dd7803155423567 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Wed, 23 Oct 2024 19:49:15 +0100 Subject: [PATCH 120/615] librdkafka: added version 2.6.0 (#47181) --- var/spack/repos/builtin/packages/librdkafka/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/librdkafka/package.py b/var/spack/repos/builtin/packages/librdkafka/package.py index 3c324b952b5b12..9d1a506dc19762 100644 --- a/var/spack/repos/builtin/packages/librdkafka/package.py +++ b/var/spack/repos/builtin/packages/librdkafka/package.py @@ -15,6 +15,7 @@ class Librdkafka(AutotoolsPackage): license("BSD-2-Clause") + version("2.6.0", sha256="abe0212ecd3e7ed3c4818a4f2baf7bf916e845e902bb15ae48834ca2d36ac745") version("2.5.3", sha256="eaa1213fdddf9c43e28834d9a832d9dd732377d35121e42f875966305f52b8ff") version("2.2.0", sha256="af9a820cbecbc64115629471df7c7cecd40403b6c34bfdbb9223152677a47226") version("2.1.1", sha256="7be1fc37ab10ebdc037d5c5a9b35b48931edafffae054b488faaff99e60e0108") From 1472dcace441eedc9c1cb72c00fa4f0d8b4fdc9c Mon Sep 17 00:00:00 2001 From: Scott Wittenburg Date: Wed, 23 Oct 2024 12:50:55 -0600 Subject: [PATCH 121/615] ci: Remove deprecated logic from the ci module (#47062) ci: Remove deprecated logic from the ci module Remove the following from the ci module, schema, and tests: - deprecated ci stack and handling of old ci config - deprecated mirror handling logic - support for artifacts buildcache - support for temporary storage url --- lib/spack/docs/pipelines.rst | 180 ++++----- lib/spack/spack/ci.py | 346 ++--------------- lib/spack/spack/cmd/ci.py | 157 +------- lib/spack/spack/schema/ci.py | 53 +-- lib/spack/spack/schema/env.py | 12 - lib/spack/spack/schema/gitlab_ci.py | 125 ------ lib/spack/spack/test/cmd/ci.py | 357 ++---------------- .../gitlab/cloud_pipelines/.gitlab-ci.yml | 60 --- .../stacks/deprecated/spack.yaml | 100 ----- share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 6 +- 11 files changed, 173 insertions(+), 1225 deletions(-) delete mode 100644 lib/spack/spack/schema/gitlab_ci.py delete mode 100644 share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml diff --git a/lib/spack/docs/pipelines.rst b/lib/spack/docs/pipelines.rst index 9a2d614c839a6c..67c8a065aab6c2 100644 --- a/lib/spack/docs/pipelines.rst +++ b/lib/spack/docs/pipelines.rst @@ -59,7 +59,7 @@ Functional Example ------------------ The simplest fully functional standalone example of a working pipeline can be -examined live at this example `project `_ +examined live at this example `project `_ on gitlab.com. Here's the ``.gitlab-ci.yml`` file from that example that builds and runs the @@ -67,39 +67,46 @@ pipeline: .. code-block:: yaml - stages: [generate, build] + stages: [ "generate", "build" ] variables: - SPACK_REPO: https://github.com/scottwittenburg/spack.git - SPACK_REF: pipelines-reproducible-builds + SPACK_REPOSITORY: "https://github.com/spack/spack.git" + SPACK_REF: "develop-2024-10-06" + SPACK_USER_CONFIG_PATH: ${CI_PROJECT_DIR} + SPACK_BACKTRACE: 1 generate-pipeline: - stage: generate tags: - - docker + - saas-linux-small-amd64 + stage: generate image: - name: ghcr.io/scottwittenburg/ecpe4s-ubuntu18.04-runner-x86_64:2020-09-01 - entrypoint: [""] - before_script: - - git clone ${SPACK_REPO} - - pushd spack && git checkout ${SPACK_REF} && popd - - . "./spack/share/spack/setup-env.sh" + name: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01 script: + - git clone ${SPACK_REPOSITORY} + - cd spack && git checkout ${SPACK_REF} && cd ../ + - . "./spack/share/spack/setup-env.sh" + - spack --version - spack env activate --without-view . - - spack -d ci generate + - spack -d -v --color=always + ci generate + --check-index-only --artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir" - --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml" + --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml" artifacts: paths: - "${CI_PROJECT_DIR}/jobs_scratch_dir" - build-jobs: + build-pipeline: stage: build trigger: include: - - artifact: "jobs_scratch_dir/pipeline.yml" + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml job: generate-pipeline strategy: depend + needs: + - artifacts: True + job: generate-pipeline + The key thing to note above is that there are two jobs: The first job to run, ``generate-pipeline``, runs the ``spack ci generate`` command to generate a @@ -114,82 +121,93 @@ And here's the spack environment built by the pipeline represented as a spack: view: false concretizer: - unify: false + unify: true + reuse: false definitions: - pkgs: - zlib - - bzip2 - - arch: - - '%gcc@7.5.0 arch=linux-ubuntu18.04-x86_64' + - bzip2 ~debug + - compiler: + - '%gcc' specs: - matrix: - - $pkgs - - - $arch - - mirrors: { "mirror": "s3://spack-public/mirror" } + - - $compiler ci: - enable-artifacts-buildcache: True - rebuild-index: False + target: gitlab + pipeline-gen: - any-job: - before_script: - - git clone ${SPACK_REPO} - - pushd spack && git checkout ${SPACK_CHECKOUT_VERSION} && popd - - . "./spack/share/spack/setup-env.sh" - - build-job: - tags: [docker] + tags: + - saas-linux-small-amd64 image: - name: ghcr.io/scottwittenburg/ecpe4s-ubuntu18.04-runner-x86_64:2020-09-01 - entrypoint: [""] - + name: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01 + before_script: + - git clone ${SPACK_REPOSITORY} + - cd spack && git checkout ${SPACK_REF} && cd ../ + - . "./spack/share/spack/setup-env.sh" + - spack --version + - export SPACK_USER_CONFIG_PATH=${CI_PROJECT_DIR} + - spack config blame mirrors -The elements of this file important to spack ci pipelines are described in more -detail below, but there are a couple of things to note about the above working -example: .. note:: - There is no ``script`` attribute specified for here. The reason for this is - Spack CI will automatically generate reasonable default scripts. More - detail on what is in these scripts can be found below. - - Also notice the ``before_script`` section. It is required when using any of the - default scripts to source the ``setup-env.sh`` script in order to inform - the default scripts where to find the ``spack`` executable. - -Normally ``enable-artifacts-buildcache`` is not recommended in production as it -results in large binary artifacts getting transferred back and forth between -gitlab and the runners. But in this example on gitlab.com where there is no -shared, persistent file system, and where no secrets are stored for giving -permission to write to an S3 bucket, ``enabled-buildcache-artifacts`` is the only -way to propagate binaries from jobs to their dependents. - -Also, it is usually a good idea to let the pipeline generate a final "rebuild the -buildcache index" job, so that subsequent pipeline generation can quickly determine -which specs are up to date and which need to be rebuilt (it's a good idea for other -reasons as well, but those are out of scope for this discussion). In this case we -have disabled it (using ``rebuild-index: False``) because the index would only be -generated in the artifacts mirror anyway, and consequently would not be available -during subsequent pipeline runs. + The use of ``reuse: false`` in spack environments used for pipelines is + almost always what you want, as without it your pipelines will not rebuild + packages even if package hashes have changed. This is due to the concretizer + strongly preferring known hashes when ``reuse: true``. + +The ``ci`` section in the above environment file contains the bare minimum +configuration required for ``spack ci generate`` to create a working pipeline. +The ``target: gitlab`` tells spack that the desired pipeline output is for +gitlab. However, this isn't strictly required, as currently gitlab is the +only possible output format for pipelines. The ``pipeline-gen`` section +contains the key information needed to specify attributes for the generated +jobs. Notice that it contains a list which has only a single element in +this case. In real pipelines it will almost certainly have more elements, +and in those cases, order is important: spack starts at the bottom of the +list and works upwards when applying attributes. + +But in this simple case, we use only the special key ``any-job`` to +indicate that spack should apply the specified attributes (``tags``, ``image``, +and ``before_script``) to any job it generates. This includes jobs for +building/pushing all packages, a ``rebuild-index`` job at the end of the +pipeline, as well as any ``noop`` jobs that might be needed by gitlab when +no rebuilds are required. + +Something to note is that in this simple case, we rely on spack to +generate a reasonable script for the package build jobs (it just creates +a script that invokes ``spack ci rebuild``). + +Another thing to note is the use of the ``SPACK_USER_CONFIG_DIR`` environment +variable in any generated jobs. The purpose of this is to make spack +aware of one final file in the example, the one that contains the mirror +configuration. This file, ``mirrors.yaml`` looks like this: -.. note:: - With the addition of reproducible builds (#22887) a previously working - pipeline will require some changes: +.. code-block:: yaml - * In the build-jobs, the environment location changed. - This will typically show as a ``KeyError`` in the failing job. Be sure to - point to ``${SPACK_CONCRETE_ENV_DIR}``. + mirrors: + buildcache-destination: + url: oci://registry.gitlab.com/spack/pipeline-quickstart + binary: true + access_pair: + id_variable: CI_REGISTRY_USER + secret_variable: CI_REGISTRY_PASSWORD - * When using ``include`` in your environment, be sure to make the included - files available in the build jobs. This means adding those files to the - artifact directory. Those files will also be missing in the reproducibility - artifact. - * Because the location of the environment changed, including files with - relative path may have to be adapted to work both in the project context - (generation job) and in the concrete env dir context (build job). +Note the name of the mirror is ``buildcache-destination``, which is required +as of Spack 0.23 (see below for more information). The mirror url simply +points to the container registry associated with the project, while +``id_variable`` and ``secret_variable`` refer to to environment variables +containing the access credentials for the mirror. + +When spack builds packages for this example project, they will be pushed to +the project container registry, where they will be available for subsequent +jobs to install as dependencies, or for other pipelines to use to build runnable +container images. ----------------------------------- Spack commands supporting pipelines @@ -417,15 +435,6 @@ configuration with a ``script`` attribute. Specifying a signing job without a sc does not create a signing job and the job configuration attributes will be ignored. Signing jobs are always assigned the runner tags ``aws``, ``protected``, and ``notary``. -^^^^^^^^^^^^^^^^^ -Cleanup (cleanup) -^^^^^^^^^^^^^^^^^ - -When using ``temporary-storage-url-prefix`` the cleanup job will destroy the mirror -created for the associated Gitlab pipeline. Cleanup jobs do not allow modifying the -script, but do expect that the spack command is in the path and require a -``before_script`` to be specified that sources the ``setup-env.sh`` script. - .. _noop_jobs: ^^^^^^^^^^^^ @@ -741,15 +750,6 @@ environment/stack file, and in that case no bootstrapping will be done (only the specs will be staged for building) and the runners will be expected to already have all needed compilers installed and configured for spack to use. -^^^^^^^^^^^^^^^^^^^ -Pipeline Buildcache -^^^^^^^^^^^^^^^^^^^ - -The ``enable-artifacts-buildcache`` key -takes a boolean and determines whether the pipeline uses artifacts to store and -pass along the buildcaches from one stage to the next (the default if you don't -provide this option is ``False``). - ^^^^^^^^^^^^^^^^ Broken Specs URL ^^^^^^^^^^^^^^^^ diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index 91dc26999cd145..5a8b2ae1e7d49a 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -34,7 +34,7 @@ import spack.binary_distribution as bindist import spack.concretize import spack.config as cfg -import spack.environment as ev +import spack.error import spack.main import spack.mirror import spack.paths @@ -95,8 +95,6 @@ def dispatch_open(fullurl, data=None, timeout=None, verify_ssl=True): TEMP_STORAGE_MIRROR_NAME = "ci_temporary_mirror" SPACK_RESERVED_TAGS = ["public", "protected", "notary"] -# TODO: Remove this in Spack 0.23 -SHARED_PR_MIRROR_URL = "s3://spack-binaries-prs/shared_pr_mirror" JOB_NAME_FORMAT = ( "{name}{@version} {/hash:7} {%compiler.name}{@compiler.version}{ arch=architecture}" ) @@ -201,11 +199,11 @@ def _remove_satisfied_deps(deps, satisfied_list): return nodes, edges, stages -def _print_staging_summary(spec_labels, stages, mirrors_to_check, rebuild_decisions): +def _print_staging_summary(spec_labels, stages, rebuild_decisions): if not stages: return - mirrors = spack.mirror.MirrorCollection(mirrors=mirrors_to_check, binary=True) + mirrors = spack.mirror.MirrorCollection(binary=True) tty.msg("Checked the following mirrors for binaries:") for m in mirrors.values(): tty.msg(f" {m.fetch_url}") @@ -252,21 +250,14 @@ def _spec_matches(spec, match_string): return spec.intersects(match_string) -def _format_job_needs( - dep_jobs, build_group, prune_dag, rebuild_decisions, enable_artifacts_buildcache -): +def _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions): needs_list = [] for dep_job in dep_jobs: dep_spec_key = _spec_ci_label(dep_job) rebuild = rebuild_decisions[dep_spec_key].rebuild if not prune_dag or rebuild: - needs_list.append( - { - "job": get_job_name(dep_job, build_group), - "artifacts": enable_artifacts_buildcache, - } - ) + needs_list.append({"job": get_job_name(dep_job, build_group), "artifacts": False}) return needs_list @@ -410,12 +401,6 @@ def __init__(self, ci_config, spec_labels, stages): self.ir = { "jobs": {}, - "temporary-storage-url-prefix": self.ci_config.get( - "temporary-storage-url-prefix", None - ), - "enable-artifacts-buildcache": self.ci_config.get( - "enable-artifacts-buildcache", False - ), "rebuild-index": self.ci_config.get("rebuild-index", True), "broken-specs-url": self.ci_config.get("broken-specs-url", None), "broken-tests-packages": self.ci_config.get("broken-tests-packages", []), @@ -698,14 +683,13 @@ def generate_gitlab_ci_yaml( prune_dag=False, check_index_only=False, artifacts_root=None, - remote_mirror_override=None, ): """Generate a gitlab yaml file to run a dynamic child pipeline from the spec matrix in the active environment. Arguments: env (spack.environment.Environment): Activated environment object - which must contain a gitlab-ci section describing how to map + which must contain a ci section describing how to map specs to runners print_summary (bool): Should we print a summary of all the jobs in the stages in which they were placed. @@ -720,39 +704,21 @@ def generate_gitlab_ci_yaml( artifacts_root (str): Path where artifacts like logs, environment files (spack.yaml, spack.lock), etc should be written. GitLab requires this to be within the project directory. - remote_mirror_override (str): Typically only needed when one spack.yaml - is used to populate several mirrors with binaries, based on some - criteria. Spack protected pipelines populate different mirrors based - on branch name, facilitated by this option. DEPRECATED """ with spack.concretize.disable_compiler_existence_check(): with env.write_transaction(): env.concretize() env.write() - yaml_root = env.manifest[ev.TOP_LEVEL_KEY] - # Get the joined "ci" config with all of the current scopes resolved ci_config = cfg.get("ci") - config_deprecated = False if not ci_config: - tty.warn("Environment does not have `ci` a configuration") - gitlabci_config = yaml_root.get("gitlab-ci") - if not gitlabci_config: - tty.die("Environment yaml does not have `gitlab-ci` config section. Cannot recover.") - - tty.warn( - "The `gitlab-ci` configuration is deprecated in favor of `ci`.\n", - "To update run \n\t$ spack env update /path/to/ci/spack.yaml", - ) - translate_deprecated_config(gitlabci_config) - ci_config = gitlabci_config - config_deprecated = True + raise SpackCIError("Environment does not have a `ci` configuration") # Default target is gitlab...and only target is gitlab if not ci_config.get("target", "gitlab") == "gitlab": - tty.die('Spack CI module only generates target "gitlab"') + raise SpackCIError('Spack CI module only generates target "gitlab"') cdash_config = cfg.get("cdash") cdash_handler = CDashHandler(cdash_config) if "build-group" in cdash_config else None @@ -813,12 +779,6 @@ def generate_gitlab_ci_yaml( spack_pipeline_type = os.environ.get("SPACK_PIPELINE_TYPE", None) copy_only_pipeline = spack_pipeline_type == "spack_copy_only" - if copy_only_pipeline and config_deprecated: - tty.warn( - "SPACK_PIPELINE_TYPE=spack_copy_only is not supported when using\n", - "deprecated ci configuration, a no-op pipeline will be generated\n", - "instead.", - ) def ensure_expected_target_path(path): """Returns passed paths with all Windows path separators exchanged @@ -837,38 +797,16 @@ def ensure_expected_target_path(path): return path pipeline_mirrors = spack.mirror.MirrorCollection(binary=True) - deprecated_mirror_config = False buildcache_destination = None - if "buildcache-destination" in pipeline_mirrors: - if remote_mirror_override: - tty.die( - "Using the deprecated --buildcache-destination cli option and " - "having a mirror named 'buildcache-destination' at the same time " - "is not allowed" - ) - buildcache_destination = pipeline_mirrors["buildcache-destination"] - else: - deprecated_mirror_config = True - # TODO: This will be an error in Spack 0.23 + if "buildcache-destination" not in pipeline_mirrors: + raise SpackCIError("spack ci generate requires a mirror named 'buildcache-destination'") - # TODO: Remove this block in spack 0.23 - remote_mirror_url = None - if deprecated_mirror_config: - if "mirrors" not in yaml_root or len(yaml_root["mirrors"].values()) < 1: - tty.die("spack ci generate requires an env containing a mirror") - - ci_mirrors = yaml_root["mirrors"] - mirror_urls = [url for url in ci_mirrors.values()] - remote_mirror_url = mirror_urls[0] + buildcache_destination = pipeline_mirrors["buildcache-destination"] spack_buildcache_copy = os.environ.get("SPACK_COPY_BUILDCACHE", None) if spack_buildcache_copy: buildcache_copies = {} - buildcache_copy_src_prefix = ( - buildcache_destination.fetch_url - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + buildcache_copy_src_prefix = buildcache_destination.fetch_url buildcache_copy_dest_prefix = spack_buildcache_copy # Check for a list of "known broken" specs that we should not bother @@ -878,55 +816,10 @@ def ensure_expected_target_path(path): if "broken-specs-url" in ci_config: broken_specs_url = ci_config["broken-specs-url"] - enable_artifacts_buildcache = False - if "enable-artifacts-buildcache" in ci_config: - tty.warn("Support for enable-artifacts-buildcache will be removed in Spack 0.23") - enable_artifacts_buildcache = ci_config["enable-artifacts-buildcache"] - rebuild_index_enabled = True if "rebuild-index" in ci_config and ci_config["rebuild-index"] is False: rebuild_index_enabled = False - temp_storage_url_prefix = None - if "temporary-storage-url-prefix" in ci_config: - tty.warn("Support for temporary-storage-url-prefix will be removed in Spack 0.23") - temp_storage_url_prefix = ci_config["temporary-storage-url-prefix"] - - # If a remote mirror override (alternate buildcache destination) was - # specified, add it here in case it has already built hashes we might - # generate. - # TODO: Remove this block in Spack 0.23 - mirrors_to_check = None - if deprecated_mirror_config and remote_mirror_override: - if spack_pipeline_type == "spack_protected_branch": - # Overriding the main mirror in this case might result - # in skipping jobs on a release pipeline because specs are - # up to date in develop. Eventually we want to notice and take - # advantage of this by scheduling a job to copy the spec from - # develop to the release, but until we have that, this makes - # sure we schedule a rebuild job if the spec isn't already in - # override mirror. - mirrors_to_check = {"override": remote_mirror_override} - - # If we have a remote override and we want generate pipeline using - # --check-index-only, then the override mirror needs to be added to - # the configured mirrors when bindist.update() is run, or else we - # won't fetch its index and include in our local cache. - spack.mirror.add( - spack.mirror.Mirror(remote_mirror_override, name="ci_pr_mirror"), - cfg.default_modify_scope(), - ) - - # TODO: Remove this block in Spack 0.23 - shared_pr_mirror = None - if deprecated_mirror_config and spack_pipeline_type == "spack_pull_request": - stack_name = os.environ.get("SPACK_CI_STACK_NAME", "") - shared_pr_mirror = url_util.join(SHARED_PR_MIRROR_URL, stack_name) - spack.mirror.add( - spack.mirror.Mirror(shared_pr_mirror, name="ci_shared_pr_mirror"), - cfg.default_modify_scope(), - ) - pipeline_artifacts_dir = artifacts_root if not pipeline_artifacts_dir: proj_dir = os.environ.get("CI_PROJECT_DIR", os.getcwd()) @@ -935,9 +828,8 @@ def ensure_expected_target_path(path): pipeline_artifacts_dir = os.path.abspath(pipeline_artifacts_dir) concrete_env_dir = os.path.join(pipeline_artifacts_dir, "concrete_environment") - # Now that we've added the mirrors we know about, they should be properly - # reflected in the environment manifest file, so copy that into the - # concrete environment directory, along with the spack.lock file. + # Copy the environment manifest file into the concrete environment directory, + # along with the spack.lock file. if not os.path.exists(concrete_env_dir): os.makedirs(concrete_env_dir) shutil.copyfile(env.manifest_path, os.path.join(concrete_env_dir, "spack.yaml")) @@ -962,18 +854,12 @@ def ensure_expected_target_path(path): env_includes.extend(include_scopes) env_yaml_root["spack"]["include"] = [ensure_expected_target_path(i) for i in env_includes] - if "gitlab-ci" in env_yaml_root["spack"] and "ci" not in env_yaml_root["spack"]: - env_yaml_root["spack"]["ci"] = env_yaml_root["spack"].pop("gitlab-ci") - translate_deprecated_config(env_yaml_root["spack"]["ci"]) - with open(os.path.join(concrete_env_dir, "spack.yaml"), "w") as fd: fd.write(syaml.dump_config(env_yaml_root, default_flow_style=False)) job_log_dir = os.path.join(pipeline_artifacts_dir, "logs") job_repro_dir = os.path.join(pipeline_artifacts_dir, "reproduction") job_test_dir = os.path.join(pipeline_artifacts_dir, "tests") - # TODO: Remove this line in Spack 0.23 - local_mirror_dir = os.path.join(pipeline_artifacts_dir, "mirror") user_artifacts_dir = os.path.join(pipeline_artifacts_dir, "user_data") # We communicate relative paths to the downstream jobs to avoid issues in @@ -987,8 +873,6 @@ def ensure_expected_target_path(path): rel_job_log_dir = os.path.relpath(job_log_dir, ci_project_dir) rel_job_repro_dir = os.path.relpath(job_repro_dir, ci_project_dir) rel_job_test_dir = os.path.relpath(job_test_dir, ci_project_dir) - # TODO: Remove this line in Spack 0.23 - rel_local_mirror_dir = os.path.join(local_mirror_dir, ci_project_dir) rel_user_artifacts_dir = os.path.relpath(user_artifacts_dir, ci_project_dir) # Speed up staging by first fetching binary indices from all mirrors @@ -1050,7 +934,7 @@ def ensure_expected_target_path(path): continue up_to_date_mirrors = bindist.get_mirrors_for_spec( - spec=release_spec, mirrors_to_check=mirrors_to_check, index_only=check_index_only + spec=release_spec, index_only=check_index_only ) spec_record.rebuild = not up_to_date_mirrors @@ -1094,25 +978,14 @@ def main_script_replacements(cmd): job_object["needs"] = [] if spec_label in dependencies: - if enable_artifacts_buildcache: - # Get dependencies transitively, so they're all - # available in the artifacts buildcache. - dep_jobs = [d for d in release_spec.traverse(deptype="all", root=False)] - else: - # In this case, "needs" is only used for scheduling - # purposes, so we only get the direct dependencies. - dep_jobs = [] - for dep_label in dependencies[spec_label]: - dep_jobs.append(spec_labels[dep_label]) + # In this case, "needs" is only used for scheduling + # purposes, so we only get the direct dependencies. + dep_jobs = [] + for dep_label in dependencies[spec_label]: + dep_jobs.append(spec_labels[dep_label]) job_object["needs"].extend( - _format_job_needs( - dep_jobs, - build_group, - prune_dag, - rebuild_decisions, - enable_artifacts_buildcache, - ) + _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions) ) rebuild_spec = spec_record.rebuild @@ -1194,19 +1067,6 @@ def main_script_replacements(cmd): }, ) - # TODO: Remove this block in Spack 0.23 - if enable_artifacts_buildcache: - bc_root = os.path.join(local_mirror_dir, "build_cache") - job_object["artifacts"]["paths"].extend( - [ - os.path.join(bc_root, p) - for p in [ - bindist.tarball_name(release_spec, ".spec.json"), - bindist.tarball_directory_name(release_spec), - ] - ] - ) - job_object["stage"] = stage_name job_object["retry"] = {"max": 2, "when": JOB_RETRY_CONDITIONS} job_object["interruptible"] = True @@ -1221,15 +1081,7 @@ def main_script_replacements(cmd): job_id += 1 if print_summary: - _print_staging_summary(spec_labels, stages, mirrors_to_check, rebuild_decisions) - - # Clean up remote mirror override if enabled - # TODO: Remove this block in Spack 0.23 - if deprecated_mirror_config: - if remote_mirror_override: - spack.mirror.remove("ci_pr_mirror", cfg.default_modify_scope()) - if spack_pipeline_type == "spack_pull_request": - spack.mirror.remove("ci_shared_pr_mirror", cfg.default_modify_scope()) + _print_staging_summary(spec_labels, stages, rebuild_decisions) tty.debug(f"{job_id} build jobs generated in {stage_id} stages") @@ -1251,7 +1103,7 @@ def main_script_replacements(cmd): "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], } - if copy_only_pipeline and not config_deprecated: + if copy_only_pipeline: stage_names.append("copy") sync_job = copy.deepcopy(spack_ci_ir["jobs"]["copy"]["attributes"]) sync_job["stage"] = "copy" @@ -1261,17 +1113,12 @@ def main_script_replacements(cmd): if "variables" not in sync_job: sync_job["variables"] = {} - sync_job["variables"]["SPACK_COPY_ONLY_DESTINATION"] = ( - buildcache_destination.fetch_url - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + sync_job["variables"]["SPACK_COPY_ONLY_DESTINATION"] = buildcache_destination.fetch_url - if "buildcache-source" in pipeline_mirrors: - buildcache_source = pipeline_mirrors["buildcache-source"].fetch_url - else: - # TODO: Remove this condition in Spack 0.23 - buildcache_source = os.environ.get("SPACK_SOURCE_MIRROR", None) + if "buildcache-source" not in pipeline_mirrors: + raise SpackCIError("Copy-only pipelines require a mirror named 'buildcache-source'") + + buildcache_source = pipeline_mirrors["buildcache-source"].fetch_url sync_job["variables"]["SPACK_BUILDCACHE_SOURCE"] = buildcache_source sync_job["dependencies"] = [] @@ -1279,27 +1126,6 @@ def main_script_replacements(cmd): job_id += 1 if job_id > 0: - # TODO: Remove this block in Spack 0.23 - if temp_storage_url_prefix: - # There were some rebuild jobs scheduled, so we will need to - # schedule a job to clean up the temporary storage location - # associated with this pipeline. - stage_names.append("cleanup-temp-storage") - cleanup_job = copy.deepcopy(spack_ci_ir["jobs"]["cleanup"]["attributes"]) - - cleanup_job["stage"] = "cleanup-temp-storage" - cleanup_job["when"] = "always" - cleanup_job["retry"] = service_job_retries - cleanup_job["interruptible"] = True - - cleanup_job["script"] = _unpack_script( - cleanup_job["script"], - op=lambda cmd: cmd.replace("mirror_prefix", temp_storage_url_prefix), - ) - - cleanup_job["dependencies"] = [] - output_object["cleanup"] = cleanup_job - if ( "script" in spack_ci_ir["jobs"]["signing"]["attributes"] and spack_pipeline_type == "spack_protected_branch" @@ -1316,11 +1142,9 @@ def main_script_replacements(cmd): signing_job["interruptible"] = True if "variables" not in signing_job: signing_job["variables"] = {} - signing_job["variables"]["SPACK_BUILDCACHE_DESTINATION"] = ( - buildcache_destination.push_url # need the s3 url for aws s3 sync - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + signing_job["variables"][ + "SPACK_BUILDCACHE_DESTINATION" + ] = buildcache_destination.push_url signing_job["dependencies"] = [] output_object["sign-pkgs"] = signing_job @@ -1331,9 +1155,7 @@ def main_script_replacements(cmd): final_job = spack_ci_ir["jobs"]["reindex"]["attributes"] final_job["stage"] = "stage-rebuild-index" - target_mirror = remote_mirror_override or remote_mirror_url - if buildcache_destination: - target_mirror = buildcache_destination.push_url + target_mirror = buildcache_destination.push_url final_job["script"] = _unpack_script( final_job["script"], op=lambda cmd: cmd.replace("{index_target_mirror}", target_mirror), @@ -1359,17 +1181,11 @@ def main_script_replacements(cmd): "SPACK_CONCRETE_ENV_DIR": rel_concrete_env_dir, "SPACK_VERSION": spack_version, "SPACK_CHECKOUT_VERSION": version_to_clone, - # TODO: Remove this line in Spack 0.23 - "SPACK_REMOTE_MIRROR_URL": remote_mirror_url, "SPACK_JOB_LOG_DIR": rel_job_log_dir, "SPACK_JOB_REPRO_DIR": rel_job_repro_dir, "SPACK_JOB_TEST_DIR": rel_job_test_dir, - # TODO: Remove this line in Spack 0.23 - "SPACK_LOCAL_MIRROR_DIR": rel_local_mirror_dir, "SPACK_PIPELINE_TYPE": str(spack_pipeline_type), "SPACK_CI_STACK_NAME": os.environ.get("SPACK_CI_STACK_NAME", "None"), - # TODO: Remove this line in Spack 0.23 - "SPACK_CI_SHARED_PR_MIRROR_URL": shared_pr_mirror or "None", "SPACK_REBUILD_CHECK_UP_TO_DATE": str(prune_dag), "SPACK_REBUILD_EVERYTHING": str(rebuild_everything), "SPACK_REQUIRE_SIGNING": os.environ.get("SPACK_REQUIRE_SIGNING", "False"), @@ -1378,10 +1194,6 @@ def main_script_replacements(cmd): for item, val in output_vars.items(): output_vars[item] = ensure_expected_target_path(val) - # TODO: Remove this block in Spack 0.23 - if deprecated_mirror_config and remote_mirror_override: - (output_object["variables"]["SPACK_REMOTE_MIRROR_OVERRIDE"]) = remote_mirror_override - spack_stack_name = os.environ.get("SPACK_CI_STACK_NAME", None) if spack_stack_name: output_object["variables"]["SPACK_CI_STACK_NAME"] = spack_stack_name @@ -1408,15 +1220,8 @@ def main_script_replacements(cmd): noop_job["retry"] = 0 noop_job["allow_failure"] = True - if copy_only_pipeline and config_deprecated: - tty.debug("Generating no-op job as copy-only is unsupported here.") - noop_job["script"] = [ - 'echo "copy-only pipelines are not supported with deprecated ci configs"' - ] - output_object = {"unsupported-copy": noop_job} - else: - tty.debug("No specs to rebuild, generating no-op job") - output_object = {"no-specs-to-rebuild": noop_job} + tty.debug("No specs to rebuild, generating no-op job") + output_object = {"no-specs-to-rebuild": noop_job} # Ensure the child pipeline always runs output_object["workflow"] = {"rules": [{"when": "always"}]} @@ -2454,83 +2259,6 @@ def report_skipped(self, spec: spack.spec.Spec, report_dir: str, reason: Optiona reporter.test_skipped_report(report_dir, spec, reason) -def translate_deprecated_config(config): - # Remove all deprecated keys from config - mappings = config.pop("mappings", []) - match_behavior = config.pop("match_behavior", "first") - - build_job = {} - if "image" in config: - build_job["image"] = config.pop("image") - if "tags" in config: - build_job["tags"] = config.pop("tags") - if "variables" in config: - build_job["variables"] = config.pop("variables") - - # Scripts always override in old CI - if "before_script" in config: - build_job["before_script:"] = config.pop("before_script") - if "script" in config: - build_job["script:"] = config.pop("script") - if "after_script" in config: - build_job["after_script:"] = config.pop("after_script") - - signing_job = None - if "signing-job-attributes" in config: - signing_job = {"signing-job": config.pop("signing-job-attributes")} - - service_job_attributes = None - if "service-job-attributes" in config: - service_job_attributes = config.pop("service-job-attributes") - - # If this config already has pipeline-gen do not more - if "pipeline-gen" in config: - return True if mappings or build_job or signing_job or service_job_attributes else False - - config["target"] = "gitlab" - - config["pipeline-gen"] = [] - pipeline_gen = config["pipeline-gen"] - - # Build Job - submapping = [] - for section in mappings: - submapping_section = {"match": section["match"]} - if "runner-attributes" in section: - remapped_attributes = {} - if match_behavior == "first": - for key, value in section["runner-attributes"].items(): - # Scripts always override in old CI - if key == "script": - remapped_attributes["script:"] = value - elif key == "before_script": - remapped_attributes["before_script:"] = value - elif key == "after_script": - remapped_attributes["after_script:"] = value - else: - remapped_attributes[key] = value - else: - # Handle "merge" behavior be allowing scripts to merge in submapping section - remapped_attributes = section["runner-attributes"] - submapping_section["build-job"] = remapped_attributes - - if "remove-attributes" in section: - # Old format only allowed tags in this section, so no extra checks are needed - submapping_section["build-job-remove"] = section["remove-attributes"] - submapping.append(submapping_section) - pipeline_gen.append({"submapping": submapping, "match_behavior": match_behavior}) - - if build_job: - pipeline_gen.append({"build-job": build_job}) - - # Signing Job - if signing_job: - pipeline_gen.append(signing_job) - - # Service Jobs - if service_job_attributes: - pipeline_gen.append({"reindex-job": service_job_attributes}) - pipeline_gen.append({"noop-job": service_job_attributes}) - pipeline_gen.append({"cleanup-job": service_job_attributes}) - - return True +class SpackCIError(spack.error.SpackError): + def __init__(self, msg): + super().__init__(msg) diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index 44557488fef6d0..8d835b0af41f59 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -62,13 +62,6 @@ def setup_parser(subparser): "path to the file where generated jobs file should be written. " "default is .gitlab-ci.yml in the root of the repository", ) - generate.add_argument( - "--copy-to", - default=None, - help="path to additional directory for job files\n\n" - "this option provides an absolute path to a directory where the generated " - "jobs yaml file should be copied. default is not to copy", - ) generate.add_argument( "--optimize", action="store_true", @@ -83,12 +76,6 @@ def setup_parser(subparser): default=False, help="(DEPRECATED) disable DAG scheduling (use 'plain' dependencies)", ) - generate.add_argument( - "--buildcache-destination", - default=None, - help="override the mirror configured in the environment\n\n" - "allows for pushing binaries from the generated pipeline to a different location", - ) prune_group = generate.add_mutually_exclusive_group() prune_group.add_argument( "--prune-dag", @@ -214,20 +201,10 @@ def ci_generate(args): env = spack.cmd.require_active_env(cmd_name="ci generate") - if args.copy_to: - tty.warn("The flag --copy-to is deprecated and will be removed in Spack 0.23") - - if args.buildcache_destination: - tty.warn( - "The flag --buildcache-destination is deprecated and will be removed in Spack 0.23" - ) - output_file = args.output_file - copy_yaml_to = args.copy_to prune_dag = args.prune_dag index_only = args.index_only artifacts_root = args.artifacts_root - buildcache_destination = args.buildcache_destination if not output_file: output_file = os.path.abspath(".gitlab-ci.yml") @@ -245,15 +222,8 @@ def ci_generate(args): prune_dag=prune_dag, check_index_only=index_only, artifacts_root=artifacts_root, - remote_mirror_override=buildcache_destination, ) - if copy_yaml_to: - copy_to_dir = os.path.dirname(copy_yaml_to) - if not os.path.exists(copy_to_dir): - os.makedirs(copy_to_dir) - shutil.copyfile(output_file, copy_yaml_to) - def ci_reindex(args): """rebuild the buildcache index for the remote mirror @@ -298,22 +268,13 @@ def ci_rebuild(args): job_log_dir = os.environ.get("SPACK_JOB_LOG_DIR") job_test_dir = os.environ.get("SPACK_JOB_TEST_DIR") repro_dir = os.environ.get("SPACK_JOB_REPRO_DIR") - # TODO: Remove this in Spack 0.23 - local_mirror_dir = os.environ.get("SPACK_LOCAL_MIRROR_DIR") concrete_env_dir = os.environ.get("SPACK_CONCRETE_ENV_DIR") - ci_pipeline_id = os.environ.get("CI_PIPELINE_ID") ci_job_name = os.environ.get("CI_JOB_NAME") signing_key = os.environ.get("SPACK_SIGNING_KEY") job_spec_pkg_name = os.environ.get("SPACK_JOB_SPEC_PKG_NAME") job_spec_dag_hash = os.environ.get("SPACK_JOB_SPEC_DAG_HASH") spack_pipeline_type = os.environ.get("SPACK_PIPELINE_TYPE") - # TODO: Remove this in Spack 0.23 - remote_mirror_override = os.environ.get("SPACK_REMOTE_MIRROR_OVERRIDE") - # TODO: Remove this in Spack 0.23 - remote_mirror_url = os.environ.get("SPACK_REMOTE_MIRROR_URL") spack_ci_stack_name = os.environ.get("SPACK_CI_STACK_NAME") - # TODO: Remove this in Spack 0.23 - shared_pr_mirror_url = os.environ.get("SPACK_CI_SHARED_PR_MIRROR_URL") rebuild_everything = os.environ.get("SPACK_REBUILD_EVERYTHING") require_signing = os.environ.get("SPACK_REQUIRE_SIGNING") @@ -333,12 +294,10 @@ def ci_rebuild(args): job_log_dir = os.path.join(ci_project_dir, job_log_dir) job_test_dir = os.path.join(ci_project_dir, job_test_dir) repro_dir = os.path.join(ci_project_dir, repro_dir) - local_mirror_dir = os.path.join(ci_project_dir, local_mirror_dir) concrete_env_dir = os.path.join(ci_project_dir, concrete_env_dir) # Debug print some of the key environment variables we should have received tty.debug("pipeline_artifacts_dir = {0}".format(pipeline_artifacts_dir)) - tty.debug("remote_mirror_url = {0}".format(remote_mirror_url)) tty.debug("job_spec_pkg_name = {0}".format(job_spec_pkg_name)) # Query the environment manifest to find out whether we're reporting to a @@ -370,51 +329,11 @@ def ci_rebuild(args): full_rebuild = True if rebuild_everything and rebuild_everything.lower() == "true" else False pipeline_mirrors = spack.mirror.MirrorCollection(binary=True) - deprecated_mirror_config = False buildcache_destination = None - if "buildcache-destination" in pipeline_mirrors: - buildcache_destination = pipeline_mirrors["buildcache-destination"] - else: - deprecated_mirror_config = True - # TODO: This will be an error in Spack 0.23 - - # If no override url exists, then just push binary package to the - # normal remote mirror url. - # TODO: Remove in Spack 0.23 - buildcache_mirror_url = remote_mirror_override or remote_mirror_url - if buildcache_destination: - buildcache_mirror_url = buildcache_destination.push_url - - # Figure out what is our temporary storage mirror: Is it artifacts - # buildcache? Or temporary-storage-url-prefix? In some cases we need to - # force something or pipelines might not have a way to propagate build - # artifacts from upstream to downstream jobs. - # TODO: Remove this in Spack 0.23 - pipeline_mirror_url = None - - # TODO: Remove this in Spack 0.23 - temp_storage_url_prefix = None - if "temporary-storage-url-prefix" in ci_config: - temp_storage_url_prefix = ci_config["temporary-storage-url-prefix"] - pipeline_mirror_url = url_util.join(temp_storage_url_prefix, ci_pipeline_id) - - # TODO: Remove this in Spack 0.23 - enable_artifacts_mirror = False - if "enable-artifacts-buildcache" in ci_config: - enable_artifacts_mirror = ci_config["enable-artifacts-buildcache"] - if enable_artifacts_mirror or ( - spack_is_pr_pipeline and not enable_artifacts_mirror and not temp_storage_url_prefix - ): - # If you explicitly enabled the artifacts buildcache feature, or - # if this is a PR pipeline but you did not enable either of the - # per-pipeline temporary storage features, we force the use of - # artifacts buildcache. Otherwise jobs will not have binary - # dependencies from previous stages available since we do not - # allow pushing binaries to the remote mirror during PR pipelines. - enable_artifacts_mirror = True - pipeline_mirror_url = url_util.path_to_file_url(local_mirror_dir) - mirror_msg = "artifact buildcache enabled, mirror url: {0}".format(pipeline_mirror_url) - tty.debug(mirror_msg) + if "buildcache-destination" not in pipeline_mirrors: + tty.die("spack ci rebuild requires a mirror named 'buildcache-destination") + + buildcache_destination = pipeline_mirrors["buildcache-destination"] # Get the concrete spec to be built by this job. try: @@ -489,48 +408,7 @@ def ci_rebuild(args): fd.write(spack_info.encode("utf8")) fd.write(b"\n") - pipeline_mirrors = [] - - # If we decided there should be a temporary storage mechanism, add that - # mirror now so it's used when we check for a hash match already - # built for this spec. - # TODO: Remove this block in Spack 0.23 - if pipeline_mirror_url: - mirror = spack.mirror.Mirror(pipeline_mirror_url, name=spack_ci.TEMP_STORAGE_MIRROR_NAME) - spack.mirror.add(mirror, cfg.default_modify_scope()) - pipeline_mirrors.append(pipeline_mirror_url) - - # Check configured mirrors for a built spec with a matching hash - # TODO: Remove this block in Spack 0.23 - mirrors_to_check = None - if remote_mirror_override: - if spack_pipeline_type == "spack_protected_branch": - # Passing "mirrors_to_check" below means we *only* look in the override - # mirror to see if we should skip building, which is what we want. - mirrors_to_check = {"override": remote_mirror_override} - - # Adding this mirror to the list of configured mirrors means dependencies - # could be installed from either the override mirror or any other configured - # mirror (e.g. remote_mirror_url which is defined in the environment or - # pipeline_mirror_url), which is also what we want. - spack.mirror.add( - spack.mirror.Mirror(remote_mirror_override, name="mirror_override"), - cfg.default_modify_scope(), - ) - pipeline_mirrors.append(remote_mirror_override) - - # TODO: Remove this in Spack 0.23 - if deprecated_mirror_config and spack_pipeline_type == "spack_pull_request": - if shared_pr_mirror_url != "None": - pipeline_mirrors.append(shared_pr_mirror_url) - - matches = ( - None - if full_rebuild - else bindist.get_mirrors_for_spec( - job_spec, mirrors_to_check=mirrors_to_check, index_only=False - ) - ) + matches = None if full_rebuild else bindist.get_mirrors_for_spec(job_spec, index_only=False) if matches: # Got a hash match on at least one configured mirror. All @@ -542,25 +420,10 @@ def ci_rebuild(args): tty.msg("No need to rebuild {0}, found hash match at: ".format(job_spec_pkg_name)) for match in matches: tty.msg(" {0}".format(match["mirror_url"])) - # TODO: Remove this block in Spack 0.23 - if enable_artifacts_mirror: - matching_mirror = matches[0]["mirror_url"] - build_cache_dir = os.path.join(local_mirror_dir, "build_cache") - tty.debug("Getting {0} buildcache from {1}".format(job_spec_pkg_name, matching_mirror)) - tty.debug("Downloading to {0}".format(build_cache_dir)) - bindist.download_single_spec(job_spec, build_cache_dir, mirror_url=matching_mirror) # Now we are done and successful return 0 - # Before beginning the install, if this is a "rebuild everything" pipeline, we - # only want to keep the mirror being used by the current pipeline as it's binary - # package destination. This ensures that the when we rebuild everything, we only - # consume binary dependencies built in this pipeline. - # TODO: Remove this in Spack 0.23 - if deprecated_mirror_config and full_rebuild: - spack_ci.remove_other_mirrors(pipeline_mirrors, cfg.default_modify_scope()) - # No hash match anywhere means we need to rebuild spec # Start with spack arguments @@ -681,17 +544,11 @@ def ci_rebuild(args): cdash_handler.copy_test_results(reports_dir, job_test_dir) if install_exit_code == 0: - # If the install succeeded, push it to one or more mirrors. Failure to push to any mirror + # If the install succeeded, push it to the buildcache destination. Failure to push # will result in a non-zero exit code. Pushing is best-effort. - mirror_urls = [buildcache_mirror_url] - - # TODO: Remove this block in Spack 0.23 - if pipeline_mirror_url: - mirror_urls.append(pipeline_mirror_url) - for result in spack_ci.create_buildcache( input_spec=job_spec, - destination_mirror_urls=mirror_urls, + destination_mirror_urls=[buildcache_destination.push_url], sign_binaries=spack_ci.can_sign_binaries(), ): if not result.success: diff --git a/lib/spack/spack/schema/ci.py b/lib/spack/spack/schema/ci.py index a1aabb33d068f9..9f7380ab44160d 100644 --- a/lib/spack/spack/schema/ci.py +++ b/lib/spack/spack/schema/ci.py @@ -11,8 +11,6 @@ from llnl.util.lang import union_dicts -import spack.schema.gitlab_ci - # Schema for script fields # List of lists and/or strings # This is similar to what is allowed in @@ -137,39 +135,8 @@ def job_schema(name: str): } ) -# TODO: Remove in Spack 0.23 -ci_properties = { - "anyOf": [ - { - "type": "object", - "additionalProperties": False, - # "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}} - ), - }, - { - "type": "object", - "additionalProperties": False, - # "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}} - ), - }, - ] -} - #: Properties for inclusion in other schemas -properties: Dict[str, Any] = { - "ci": { - "oneOf": [ - # TODO: Replace with core-shared-properties in Spack 0.23 - ci_properties, - # Allow legacy format under `ci` for `config update ci` - spack.schema.gitlab_ci.gitlab_ci_properties, - ] - } -} +properties: Dict[str, Any] = {"ci": core_shared_properties} #: Full schema with metadata schema = { @@ -179,21 +146,3 @@ def job_schema(name: str): "additionalProperties": False, "properties": properties, } - - -def update(data): - import llnl.util.tty as tty - - import spack.ci - import spack.environment as ev - - # Warn if deprecated section is still in the environment - ci_env = ev.active_environment() - if ci_env: - env_config = ci_env.manifest[ev.TOP_LEVEL_KEY] - if "gitlab-ci" in env_config: - tty.die("Error: `gitlab-ci` section detected with `ci`, these are not compatible") - - # Detect if the ci section is using the new pipeline-gen - # If it is, assume it has already been converted - return spack.ci.translate_deprecated_config(data) diff --git a/lib/spack/spack/schema/env.py b/lib/spack/spack/schema/env.py index 17cf29d4c6c1d2..0adeb7b475ba28 100644 --- a/lib/spack/spack/schema/env.py +++ b/lib/spack/spack/schema/env.py @@ -12,7 +12,6 @@ from llnl.util.lang import union_dicts -import spack.schema.gitlab_ci # DEPRECATED import spack.schema.merged from .spec_list import spec_list_schema @@ -26,8 +25,6 @@ "default": {}, "additionalProperties": False, "properties": union_dicts( - # Include deprecated "gitlab-ci" section - spack.schema.gitlab_ci.properties, # merged configuration scope schemas spack.schema.merged.properties, # extra environment schema properties @@ -58,15 +55,6 @@ def update(data): Returns: True if data was changed, False otherwise """ - - import spack.ci - - if "gitlab-ci" in data: - data["ci"] = data.pop("gitlab-ci") - - if "ci" in data: - return spack.ci.translate_deprecated_config(data["ci"]) - # There are not currently any deprecated attributes in this section # that have not been removed return False diff --git a/lib/spack/spack/schema/gitlab_ci.py b/lib/spack/spack/schema/gitlab_ci.py deleted file mode 100644 index a180777acae74d..00000000000000 --- a/lib/spack/spack/schema/gitlab_ci.py +++ /dev/null @@ -1,125 +0,0 @@ -# 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) - -"""Schema for gitlab-ci.yaml configuration file. - -.. literalinclude:: ../spack/schema/gitlab_ci.py - :lines: 15- -""" -from typing import Any, Dict - -from llnl.util.lang import union_dicts - -image_schema = { - "oneOf": [ - {"type": "string"}, - { - "type": "object", - "properties": { - "name": {"type": "string"}, - "entrypoint": {"type": "array", "items": {"type": "string"}}, - }, - }, - ] -} - -runner_attributes_schema_items = { - "image": image_schema, - "tags": {"type": "array", "items": {"type": "string"}}, - "variables": {"type": "object", "patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}}}, - "before_script": {"type": "array", "items": {"type": "string"}}, - "script": {"type": "array", "items": {"type": "string"}}, - "after_script": {"type": "array", "items": {"type": "string"}}, -} - -runner_selector_schema = { - "type": "object", - "additionalProperties": True, - "required": ["tags"], - "properties": runner_attributes_schema_items, -} - -remove_attributes_schema = { - "type": "object", - "additionalProperties": False, - "required": ["tags"], - "properties": {"tags": {"type": "array", "items": {"type": "string"}}}, -} - - -core_shared_properties = union_dicts( - runner_attributes_schema_items, - { - "bootstrap": { - "type": "array", - "items": { - "anyOf": [ - {"type": "string"}, - { - "type": "object", - "additionalProperties": False, - "required": ["name"], - "properties": { - "name": {"type": "string"}, - "compiler-agnostic": {"type": "boolean", "default": False}, - }, - }, - ] - }, - }, - "match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"}, - "mappings": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": False, - "required": ["match"], - "properties": { - "match": {"type": "array", "items": {"type": "string"}}, - "remove-attributes": remove_attributes_schema, - "runner-attributes": runner_selector_schema, - }, - }, - }, - "service-job-attributes": runner_selector_schema, - "signing-job-attributes": runner_selector_schema, - "rebuild-index": {"type": "boolean"}, - "broken-specs-url": {"type": "string"}, - "broken-tests-packages": {"type": "array", "items": {"type": "string"}}, - }, -) - -gitlab_ci_properties = { - "anyOf": [ - { - "type": "object", - "additionalProperties": False, - "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}} - ), - }, - { - "type": "object", - "additionalProperties": False, - "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}} - ), - }, - ] -} - -#: Properties for inclusion in other schemas -properties: Dict[str, Any] = {"gitlab-ci": gitlab_ci_properties} - -#: Full schema with metadata -schema = { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Spack gitlab-ci configuration file schema", - "type": "object", - "additionalProperties": False, - "properties": properties, -} diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 6bf5b8ace876c1..36aa992c639c9c 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -2,7 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import filecmp import json import os import pathlib @@ -27,7 +26,6 @@ import spack.util.spack_yaml as syaml from spack.cmd.ci import FAILED_CREATE_BUILDCACHE_CODE from spack.schema.buildcache_spec import schema as specfile_schema -from spack.schema.ci import schema as ci_schema from spack.schema.database_index import schema as db_idx_schema from spack.spec import Spec @@ -197,7 +195,7 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): - matrix: - [$old-gcc-pkgs] mirrors: - some-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: pipeline-gen: - submapping: @@ -239,7 +237,9 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): assert "rebuild-index" in yaml_contents rebuild_job = yaml_contents["rebuild-index"] - assert rebuild_job["script"][0] == f"spack buildcache update-index --keys {mirror_url}" + assert ( + rebuild_job["script"][0] == f"spack buildcache update-index --keys {mirror_url.as_uri()}" + ) assert rebuild_job["custom_attribute"] == "custom!" assert "variables" in yaml_contents @@ -249,31 +249,28 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): def test_ci_generate_with_env_missing_section(ci_generate_test, tmp_path, mock_binary_index): """Make sure we get a reasonable message if we omit gitlab-ci section""" - _, _, output = ci_generate_test( - f"""\ + env_yaml = f"""\ spack: specs: - archive-files mirrors: - some-mirror: {tmp_path / 'ci-mirror'} -""", - fail_on_error=False, - ) - assert "Environment does not have `ci` a configuration" in output + buildcache-destination: {tmp_path / 'ci-mirror'} +""" + expect = "Environment does not have a `ci` configuration" + with pytest.raises(ci.SpackCIError, match=expect): + ci_generate_test(env_yaml) def test_ci_generate_with_cdash_token(ci_generate_test, tmp_path, mock_binary_index, monkeypatch): """Make sure we it doesn't break if we configure cdash""" monkeypatch.setenv("SPACK_CDASH_AUTH_TOKEN", "notreallyatokenbutshouldnotmatter") - backup_file = tmp_path / "backup-ci.yml" spack_yaml_content = f"""\ spack: specs: - archive-files mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -288,16 +285,15 @@ def test_ci_generate_with_cdash_token(ci_generate_test, tmp_path, mock_binary_in project: Not used site: Nothing """ - spack_yaml, original_file, output = ci_generate_test( - spack_yaml_content, "--copy-to", str(backup_file) - ) + spack_yaml, original_file, output = ci_generate_test(spack_yaml_content) + yaml_contents = syaml.load(original_file.read_text()) - # That fake token should still have resulted in being unable to + # That fake token should have resulted in being unable to # register build group with cdash, but the workload should # still have been generated. assert "Problem populating buildgroup" in output - assert backup_file.exists() - assert filecmp.cmp(str(original_file), str(backup_file)) + expected_keys = ["rebuild-index", "stages", "variables", "workflow"] + assert all([key in yaml_contents.keys() for key in expected_keys]) def test_ci_generate_with_custom_settings( @@ -312,7 +308,7 @@ def test_ci_generate_with_custom_settings( specs: - archive-files mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -387,9 +383,8 @@ def test_ci_generate_pkg_with_deps(ci_generate_test, tmp_path, ci_base_environme specs: - flatten-deps mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -422,13 +417,8 @@ def test_ci_generate_pkg_with_deps(ci_generate_test, tmp_path, ci_base_environme def test_ci_generate_for_pr_pipeline(ci_generate_test, tmp_path, monkeypatch): - """Test that PR pipelines do not include a final stage job for - rebuilding the mirror index, even if that job is specifically - configured. - """ + """Test generation of a PR pipeline with disabled rebuild-index""" monkeypatch.setenv("SPACK_PIPELINE_TYPE", "spack_pull_request") - monkeypatch.setenv("SPACK_PR_BRANCH", "fake-test-branch") - monkeypatch.setattr(spack.ci, "SHARED_PR_MIRROR_URL", f"{tmp_path / 'shared-pr-mirror'}") spack_yaml, outputfile, _ = ci_generate_test( f"""\ @@ -436,9 +426,8 @@ def test_ci_generate_for_pr_pipeline(ci_generate_test, tmp_path, monkeypatch): specs: - flatten-deps mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -474,7 +463,7 @@ def test_ci_generate_with_external_pkg(ci_generate_test, tmp_path, monkeypatch): - archive-files - externaltest mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -540,7 +529,6 @@ def create_rebuild_env( broken_specs_path = scratch / "naughty-list" mirror_url = mirror_dir.as_uri() - temp_storage_url = (tmp_path / "temp-storage").as_uri() ci_job_url = "https://some.domain/group/project/-/jobs/42" ci_pipeline_url = "https://some.domain/group/project/-/pipelines/7" @@ -555,11 +543,10 @@ def create_rebuild_env( specs: - $packages mirrors: - test-mirror: {mirror_dir} + buildcache-destination: {mirror_dir} ci: broken-specs-url: {broken_specs_path.as_uri()} broken-tests-packages: {json.dumps([pkg_name] if broken_tests else [])} - temporary-storage-url-prefix: {temp_storage_url} pipeline-gen: - submapping: - match: @@ -711,7 +698,7 @@ def test_ci_require_signing( specs: - archive-files mirrors: - test-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -759,9 +746,8 @@ def test_ci_nothing_to_rebuild( specs: - $packages mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: - enable-artifacts-buildcache: true pipeline-gen: - submapping: - match: @@ -788,103 +774,20 @@ def test_ci_nothing_to_rebuild( "SPACK_JOB_LOG_DIR": "log_dir", "SPACK_JOB_REPRO_DIR": "repro_dir", "SPACK_JOB_TEST_DIR": "test_dir", - "SPACK_LOCAL_MIRROR_DIR": str(mirror_dir), "SPACK_CONCRETE_ENV_DIR": str(tmp_path), "SPACK_JOB_SPEC_DAG_HASH": env.concrete_roots()[0].dag_hash(), "SPACK_JOB_SPEC_PKG_NAME": "archive-files", "SPACK_COMPILER_ACTION": "NONE", - "SPACK_REMOTE_MIRROR_URL": mirror_url, } ) - def fake_dl_method(spec, *args, **kwargs): - print("fake download buildcache {0}".format(spec.name)) - - monkeypatch.setattr(spack.binary_distribution, "download_single_spec", fake_dl_method) - ci_out = ci_cmd("rebuild", output=str) assert "No need to rebuild archive-files" in ci_out - assert "fake download buildcache archive-files" in ci_out env_cmd("deactivate") -def test_ci_generate_mirror_override( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - mock_fetch, - mock_binary_index, - ci_base_environment, -): - """Ensure that protected pipelines using --buildcache-destination do not - skip building specs that are not in the override mirror when they are - found in the main mirror.""" - os.environ.update({"SPACK_PIPELINE_TYPE": "spack_protected_branch"}) - mirror_url = (tmp_path / "mirror").as_uri() - - with open(tmp_path / "spack.yaml", "w") as f: - f.write( - f""" -spack: - definitions: - - packages: [patchelf] - specs: - - $packages - mirrors: - test-mirror: {mirror_url} - ci: - pipeline-gen: - - submapping: - - match: - - patchelf - build-job: - tags: - - donotcare - image: donotcare - - cleanup-job: - tags: - - nonbuildtag - image: basicimage -""" - ) - - with working_dir(tmp_path): - env_cmd("create", "test", "./spack.yaml") - first_ci_yaml = str(tmp_path / ".gitlab-ci-1.yml") - second_ci_yaml = str(tmp_path / ".gitlab-ci-2.yml") - with ev.read("test"): - install_cmd() - buildcache_cmd("push", "-u", mirror_url, "patchelf") - buildcache_cmd("update-index", mirror_url, output=str) - - # This generate should not trigger a rebuild of patchelf, since it's in - # the main mirror referenced in the environment. - ci_cmd("generate", "--check-index-only", "--output-file", first_ci_yaml) - - # Because we used a mirror override (--buildcache-destination) on a - # spack protected pipeline, we expect to only look in the override - # mirror for the spec, and thus the patchelf job should be generated in - # this pipeline - ci_cmd( - "generate", - "--check-index-only", - "--output-file", - second_ci_yaml, - "--buildcache-destination", - (tmp_path / "does-not-exist").as_uri(), - ) - - with open(first_ci_yaml) as fd1: - first_yaml = fd1.read() - assert "no-specs-to-rebuild" in first_yaml - - with open(second_ci_yaml) as fd2: - second_yaml = fd2.read() - assert "no-specs-to-rebuild" not in second_yaml - - @pytest.mark.disable_clean_stage_check def test_push_to_build_cache( tmp_path: pathlib.Path, @@ -911,9 +814,8 @@ def test_push_to_build_cache( specs: - $packages mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -1049,7 +951,7 @@ def test_ci_generate_override_runner_attrs( - flatten-deps - pkg-a mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - match_behavior: {match_behavior} @@ -1189,7 +1091,7 @@ def test_ci_rebuild_index( specs: - callpath mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: pipeline-gen: - submapping: @@ -1245,7 +1147,7 @@ def fake_stack_changed(env_path, rev1="HEAD^", rev2="HEAD"): - archive-files - callpath mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: pipeline-gen: - build-job: @@ -1308,101 +1210,15 @@ def test_ci_subcommands_without_mirror( with ev.read("test"): # Check the 'generate' subcommand - output = ci_cmd( - "generate", - "--output-file", - str(tmp_path / ".gitlab-ci.yml"), - output=str, - fail_on_error=False, - ) - assert "spack ci generate requires an env containing a mirror" in output + expect = "spack ci generate requires a mirror named 'buildcache-destination'" + with pytest.raises(ci.SpackCIError, match=expect): + ci_cmd("generate", "--output-file", str(tmp_path / ".gitlab-ci.yml")) # Also check the 'rebuild-index' subcommand output = ci_cmd("rebuild-index", output=str, fail_on_error=False) assert "spack ci rebuild-index requires an env containing a mirror" in output -def test_ensure_only_one_temporary_storage(): - """Make sure 'gitlab-ci' section of env does not allow specification of - both 'enable-artifacts-buildcache' and 'temporary-storage-url-prefix'.""" - gitlab_ci_template = """ - ci: - {0} - pipeline-gen: - - submapping: - - match: - - notcheckedhere - build-job: - tags: - - donotcare -""" - - enable_artifacts = "enable-artifacts-buildcache: True" - temp_storage = "temporary-storage-url-prefix: file:///temp/mirror" - specify_both = f"{enable_artifacts}\n {temp_storage}" - - specify_neither = "" - - # User can specify "enable-artifacts-buildcache" (boolean) - yaml_obj = syaml.load(gitlab_ci_template.format(enable_artifacts)) - jsonschema.validate(yaml_obj, ci_schema) - - # User can also specify "temporary-storage-url-prefix" (string) - yaml_obj = syaml.load(gitlab_ci_template.format(temp_storage)) - jsonschema.validate(yaml_obj, ci_schema) - - # However, specifying both should fail to validate - yaml_obj = syaml.load(gitlab_ci_template.format(specify_both)) - with pytest.raises(jsonschema.ValidationError): - jsonschema.validate(yaml_obj, ci_schema) - - # Specifying neither should be fine too, as neither of these properties - # should be required - yaml_obj = syaml.load(gitlab_ci_template.format(specify_neither)) - jsonschema.validate(yaml_obj, ci_schema) - - -def test_ci_generate_temp_storage_url(ci_generate_test, tmp_path, mock_binary_index): - """Verify correct behavior when using temporary-storage-url-prefix""" - _, outputfile, _ = ci_generate_test( - f"""\ -spack: - specs: - - archive-files - mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} - ci: - temporary-storage-url-prefix: {(tmp_path / "temp-mirror").as_uri()} - pipeline-gen: - - submapping: - - match: - - archive-files - build-job: - tags: - - donotcare - image: donotcare - - cleanup-job: - custom_attribute: custom! -""" - ) - yaml_contents = syaml.load(outputfile.read_text()) - - assert "cleanup" in yaml_contents - - cleanup_job = yaml_contents["cleanup"] - assert cleanup_job["custom_attribute"] == "custom!" - assert "script" in cleanup_job - - cleanup_task = cleanup_job["script"][0] - assert cleanup_task.startswith("spack -d mirror destroy") - - assert "stages" in yaml_contents - stages = yaml_contents["stages"] - # Cleanup job should be 2nd to last, just before rebuild-index - assert "stage" in cleanup_job - assert cleanup_job["stage"] == stages[-2] - - def test_ci_generate_read_broken_specs_url( tmp_path: pathlib.Path, mutable_mock_env_path, @@ -1439,7 +1255,7 @@ def test_ci_generate_read_broken_specs_url( - flatten-deps - pkg-a mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} + buildcache-destination: {(tmp_path / "ci-mirror").as_uri()} ci: broken-specs-url: "{broken_specs_url}" pipeline-gen: @@ -1484,9 +1300,8 @@ def test_ci_generate_external_signing_job(ci_generate_test, tmp_path, monkeypatc specs: - archive-files mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} + buildcache-destination: {(tmp_path / "ci-mirror").as_uri()} ci: - temporary-storage-url-prefix: {(tmp_path / "temp-mirror").as_uri()} pipeline-gen: - submapping: - match: @@ -1541,7 +1356,7 @@ def test_ci_reproduce( specs: - $packages mirrors: - test-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -1672,106 +1487,6 @@ def test_cmd_first_line(): assert spack.cmd.first_line(doc) == first -legacy_spack_yaml_contents = """ -spack: - definitions: - - old-gcc-pkgs: - - archive-files - - callpath - # specify ^openblas-with-lapack to ensure that builtin.mock repo flake8 - # package (which can also provide lapack) is not chosen, as it violates - # a package-level check which requires exactly one fetch strategy (this - # is apparently not an issue for other tests that use it). - - hypre@0.2.15 ^openblas-with-lapack - specs: - - matrix: - - [$old-gcc-pkgs] - mirrors: - test-mirror: {mirror_url} - {key}: - match_behavior: first - mappings: - - match: - - arch=test-debian6-core2 - runner-attributes: - tags: - - donotcare - image: donotcare - - match: - - arch=test-debian6-m1 - runner-attributes: - tags: - - donotcare - image: donotcare - service-job-attributes: - image: donotcare - tags: [donotcare] - cdash: - build-group: Not important - url: https://my.fake.cdash - project: Not used - site: Nothing -""" - - -@pytest.mark.regression("36409") -def test_gitlab_ci_deprecated( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - monkeypatch, - ci_base_environment, - mock_binary_index, -): - mirror_url = (tmp_path / "ci-mirror").as_uri() - with open(tmp_path / "spack.yaml", "w") as f: - f.write(legacy_spack_yaml_contents.format(mirror_url=mirror_url, key="gitlab-ci")) - - with working_dir(tmp_path): - with ev.Environment("."): - ci_cmd("generate", "--output-file", "generated-pipeline.yaml") - - with open("generated-pipeline.yaml") as f: - yaml_contents = syaml.load(f) - - assert "stages" in yaml_contents - assert len(yaml_contents["stages"]) == 5 - assert yaml_contents["stages"][0] == "stage-0" - assert yaml_contents["stages"][4] == "stage-rebuild-index" - - assert "rebuild-index" in yaml_contents - rebuild_job = yaml_contents["rebuild-index"] - expected = f"spack buildcache update-index --keys {mirror_url}" - assert rebuild_job["script"][0] == expected - - assert "variables" in yaml_contents - assert "SPACK_ARTIFACTS_ROOT" in yaml_contents["variables"] - artifacts_root = yaml_contents["variables"]["SPACK_ARTIFACTS_ROOT"] - assert artifacts_root == "jobs_scratch_dir" - - -@pytest.mark.regression("36045") -def test_gitlab_ci_update( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - monkeypatch, - ci_base_environment, - mock_binary_index, -): - with open(tmp_path / "spack.yaml", "w") as f: - f.write( - legacy_spack_yaml_contents.format(mirror_url=(tmp_path / "mirror").as_uri(), key="ci") - ) - - env_cmd("update", "-y", str(tmp_path)) - - with open(tmp_path / "spack.yaml") as f: - yaml_contents = syaml.load(f) - ci_root = yaml_contents["spack"]["ci"] - assert "pipeline-gen" in ci_root - - def test_gitlab_config_scopes(ci_generate_test, tmp_path): """Test pipeline generation with real configs included""" configs_path = os.path.join(spack_paths.share_path, "gitlab", "cloud_pipelines", "configs") @@ -1785,7 +1500,7 @@ def test_gitlab_config_scopes(ci_generate_test, tmp_path): specs: - flatten-deps mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - build-job: @@ -1858,7 +1573,7 @@ def dynamic_mapping_setup(tmpdir): specs: - pkg-a mirrors: - some-mirror: https://my.fake.mirror + buildcache-destination: https://my.fake.mirror ci: pipeline-gen: - dynamic-mapping: diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index ce905db007201b..8997ae5b240a92 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -75,8 +75,6 @@ default: .base-job: variables: PIPELINE_MIRROR_TEMPLATE: "single-src-protected-mirrors.yaml.in" - # TODO: We can remove this when we drop the "deprecated" stack - PUSH_BUILDCACHE_DEPRECATED: "${PROTECTED_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}/${SPACK_CI_STACK_NAME}" SPACK_CI_CONFIG_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/configs" SPACK_CI_SCRIPTS_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/scripts" @@ -106,8 +104,6 @@ default: when: always variables: SPACK_PIPELINE_TYPE: "spack_pull_request" - # TODO: We can remove this when we drop the "deprecated" stack - PUSH_BUILDCACHE_DEPRECATED: "${PR_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}/${SPACK_CI_STACK_NAME}" SPACK_PRUNE_UNTOUCHED: "True" SPACK_PRUNE_UNTOUCHED_DEPENDENT_DEPTH: "1" # TODO: Change sync script to include target in branch name. Then we could @@ -221,41 +217,6 @@ default: tags: ["spack", "public", "medium", "x86_64-win"] image: "ghcr.io/johnwparent/windows-server21h2:sha-1c12b61" -.generate-deprecated: - extends: [ ".base-job" ] - stage: generate - script: - - uname -a || true - - grep -E 'vendor|model name' /proc/cpuinfo 2>/dev/null | sort -u || head -n10 /proc/cpuinfo 2>/dev/null || true - - nproc || true - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - - . "./share/spack/setup-env.sh" - - spack --version - - cd share/spack/gitlab/cloud_pipelines/stacks/${SPACK_CI_STACK_NAME} - - spack env activate --without-view . - - spack -v --color=always - ci generate --check-index-only - --buildcache-destination "${PUSH_BUILDCACHE_DEPRECATED}" - --artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir" - --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml" - after_script: - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - artifacts: - paths: - - "${CI_PROJECT_DIR}/jobs_scratch_dir" - variables: - KUBERNETES_CPU_REQUEST: 4000m - KUBERNETES_MEMORY_REQUEST: 16G - interruptible: true - timeout: 60 minutes - retry: - max: 2 - when: - - always - tags: ["spack", "public", "medium", "x86_64"] - .build: extends: [ ".base-job" ] stage: build @@ -797,27 +758,6 @@ ml-darwin-aarch64-mps-build: - artifacts: True job: ml-darwin-aarch64-mps-generate -######################################## -# Deprecated CI testing -######################################## -.deprecated-ci: - variables: - SPACK_CI_STACK_NAME: deprecated - -deprecated-ci-generate: - extends: [ ".generate-deprecated", ".deprecated-ci" ] - -deprecated-ci-build: - extends: [ ".build", ".deprecated-ci" ] - trigger: - include: - - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml - job: deprecated-ci-generate - strategy: depend - needs: - - artifacts: True - job: deprecated-ci-generate - ######################################## # AWS ParallelCluster ######################################## diff --git a/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml deleted file mode 100644 index a97606302dcb11..00000000000000 --- a/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml +++ /dev/null @@ -1,100 +0,0 @@ -### -# Spack pipeline for testing deprecated gitlab-ci configuration -### -spack: - view: false - concretizer: - reuse: false - unify: false - config: - db_lock_timeout: 120 - install_tree: - padded_length: 256 - projections: - all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' - deprecated: true - packages: - all: - require: target=x86_64 - specs: - - readline - - mirrors: - mirror: s3://spack-binaries/develop/deprecated - gitlab-ci: - broken-tests-packages: - - gptune - broken-specs-url: s3://spack-binaries/broken-specs - image: ghcr.io/spack/tutorial-ubuntu-18.04:v2021-11-02 - before_script: - - uname -a || true - - grep -E "vendor|model name" /proc/cpuinfo 2>/dev/null | sort -u || head -n10 - /proc/cpuinfo 2>/dev/null || true - - nproc - - . "./share/spack/setup-env.sh" - - spack --version - - spack arch - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - script: - - spack compiler find - - cd ${SPACK_CONCRETE_ENV_DIR} - - spack env activate --without-view . - - if [ -n "$SPACK_BUILD_JOBS" ]; then spack config add "config:build_jobs:$SPACK_BUILD_JOBS"; - fi - - spack config add "config:install_tree:projections:${SPACK_JOB_SPEC_PKG_NAME}:'morepadding/{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'" - - mkdir -p ${SPACK_ARTIFACTS_ROOT}/user_data - # AWS runners mount E4S public key (verification), UO runners mount public/private (signing/verification) - - if [[ -r /mnt/key/e4s.gpg ]]; then spack gpg trust /mnt/key/e4s.gpg; fi - # UO runners mount intermediate ci public key (verification), AWS runners mount public/private (signing/verification) - - if [[ -r /mnt/key/intermediate_ci_signing_key.gpg ]]; then spack gpg trust /mnt/key/intermediate_ci_signing_key.gpg; - fi - - if [[ -r /mnt/key/spack_public_key.gpg ]]; then spack gpg trust /mnt/key/spack_public_key.gpg; - fi - - spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) - 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) - after_script: - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - match_behavior: first - mappings: - - match: - - '@:' - runner-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - tags: [spack, public, small, x86_64] - variables: - CI_JOB_SIZE: small - SPACK_BUILD_JOBS: '1' - KUBERNETES_CPU_REQUEST: 500m - KUBERNETES_MEMORY_REQUEST: 500M - signing-job-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - image: {name: 'ghcr.io/spack/notary:latest', entrypoint: ['']} - tags: [aws] - script: - - aws s3 sync --exclude "*" --include "*spec.json*" ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache - /tmp - - /sign.sh - - aws s3 sync --exclude "*" --include "*spec.json.sig*" /tmp ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache - - aws s3 cp /tmp/public_keys ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache/_pgp - --recursive --exclude "*" --include "*.pub" - - service-job-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - image: ghcr.io/spack/tutorial-ubuntu-18.04:v2021-11-02 - before_script: - - . "./share/spack/setup-env.sh" - - spack --version - tags: [spack, public, x86_64] - cdash: - build-group: Spack Deprecated CI - url: https://cdash.spack.io - project: Spack Testing - site: Cloud Gitlab Infrastructure diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 2bb52ecc05c6be..2994de4b2787b4 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -693,7 +693,7 @@ _spack_ci() { } _spack_ci_generate() { - SPACK_COMPREPLY="-h --help --output-file --copy-to --optimize --dependencies --buildcache-destination --prune-dag --no-prune-dag --check-index-only --artifacts-root" + SPACK_COMPREPLY="-h --help --output-file --optimize --dependencies --prune-dag --no-prune-dag --check-index-only --artifacts-root" } _spack_ci_rebuild_index() { diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index ec13420a8db9df..57533497b97c5f 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -955,19 +955,15 @@ complete -c spack -n '__fish_spack_using_command ci' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command ci' -s h -l help -d 'show this help message and exit' # spack ci generate -set -g __fish_spack_optspecs_spack_ci_generate h/help output-file= copy-to= optimize dependencies buildcache-destination= prune-dag no-prune-dag check-index-only artifacts-root= +set -g __fish_spack_optspecs_spack_ci_generate h/help output-file= optimize dependencies prune-dag no-prune-dag check-index-only artifacts-root= complete -c spack -n '__fish_spack_using_command ci generate' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command ci generate' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command ci generate' -l output-file -r -f -a output_file complete -c spack -n '__fish_spack_using_command ci generate' -l output-file -r -d 'pathname for the generated gitlab ci yaml file' -complete -c spack -n '__fish_spack_using_command ci generate' -l copy-to -r -f -a copy_to -complete -c spack -n '__fish_spack_using_command ci generate' -l copy-to -r -d 'path to additional directory for job files' complete -c spack -n '__fish_spack_using_command ci generate' -l optimize -f -a optimize complete -c spack -n '__fish_spack_using_command ci generate' -l optimize -d '(DEPRECATED) optimize the gitlab yaml file for size' complete -c spack -n '__fish_spack_using_command ci generate' -l dependencies -f -a dependencies complete -c spack -n '__fish_spack_using_command ci generate' -l dependencies -d '(DEPRECATED) disable DAG scheduling (use '"'"'plain'"'"' dependencies)' -complete -c spack -n '__fish_spack_using_command ci generate' -l buildcache-destination -r -f -a buildcache_destination -complete -c spack -n '__fish_spack_using_command ci generate' -l buildcache-destination -r -d 'override the mirror configured in the environment' complete -c spack -n '__fish_spack_using_command ci generate' -l prune-dag -f -a prune_dag complete -c spack -n '__fish_spack_using_command ci generate' -l prune-dag -d 'skip up-to-date specs' complete -c spack -n '__fish_spack_using_command ci generate' -l no-prune-dag -f -a prune_dag From 632099340935950f16c993fe03a0193af110ef89 Mon Sep 17 00:00:00 2001 From: Andrew W Elble Date: Wed, 23 Oct 2024 16:39:45 -0400 Subject: [PATCH 122/615] llvm-amdgpu: support building on aarch64 (#47124) * llvm-amdgpu: support building on aarch64 * missed removing a line --- var/spack/repos/builtin/packages/llvm-amdgpu/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 3e39a4445baf87..4fec91e9ea0667 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -222,12 +222,16 @@ def cmake_args(self): self.define("LIBCXXABI_ENABLE_STATIC", "ON"), self.define("LIBCXXABI_INSTALL_STATIC_LIBRARY", "OFF"), self.define("LLVM_ENABLE_RTTI", "ON"), - self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;X86"), self.define("LLVM_AMDGPU_ALLOW_NPI_TARGETS", "ON"), self.define("PACKAGE_VENDOR", "AMD"), self.define("CLANG_ENABLE_AMDCLANG", "ON"), ] + if self.spec.target.family == "aarch64": + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;AArch64")) + else: + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;X86")) + # Enable rocm-device-libs as a external project if self.spec.satisfies("+rocm-device-libs"): if self.spec.satisfies("@:6.0"): From 79ad6f6b48303b455d892a99dee7bbc927ca75d0 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 23 Oct 2024 23:17:40 +0200 Subject: [PATCH 123/615] env: continue to mark non-roots as implicitly installed on partial env installs (#47183) Fixes a change in behavior/bug in 70412612c79af495fb2b2223edac4bd5a70a813a, where partial environment installs would mark the selected spec as explicitly installed, even if it was not a root of the environment. The desired behavior is that roots by definition are the to be explicitly installed specs. The specs on the `spack -e ... install x` command line are just filters for partial installs, so leave them implicitly installed if they aren't roots. --- lib/spack/spack/environment/environment.py | 21 ++++++++++----------- lib/spack/spack/test/env.py | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 8837e2cecd8ee1..b00405b5d1e277 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -1956,17 +1956,16 @@ def install_specs(self, specs: Optional[List[Spec]] = None, **install_args): specs = specs if specs is not None else roots # Extend the set of specs to overwrite with modified dev specs and their parents - overwrite: Set[str] = set() - overwrite.update(install_args.get("overwrite", []), self._dev_specs_that_need_overwrite()) - install_args["overwrite"] = overwrite - - explicit: Set[str] = set() - explicit.update( - install_args.get("explicit", []), - (s.dag_hash() for s in specs), - (s.dag_hash() for s in roots), - ) - install_args["explicit"] = explicit + install_args["overwrite"] = { + *install_args.get("overwrite", ()), + *self._dev_specs_that_need_overwrite(), + } + + # Only environment roots are marked explicit + install_args["explicit"] = { + *install_args.get("explicit", ()), + *(s.dag_hash() for s in roots), + } PackageInstaller([spec.package for spec in specs], **install_args).install() diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py index 682540361fde1a..3f2183f5e2b028 100644 --- a/lib/spack/spack/test/env.py +++ b/lib/spack/spack/test/env.py @@ -892,3 +892,17 @@ def test_stack_enforcement_is_strict(tmp_path, matrix_line, config, mock_package with pytest.raises(Exception): with ev.Environment(tmp_path) as e: e.concretize() + + +def test_only_roots_are_explicitly_installed(tmp_path, mock_packages, config, temporary_store): + """When installing specific non-root specs from an environment, we continue to mark them + as implicitly installed. What makes installs explicit is that they are root of the env.""" + env = ev.create_in_dir(tmp_path) + env.add("mpileaks") + env.concretize() + mpileaks = env.concrete_roots()[0] + callpath = mpileaks["callpath"] + env.install_specs([callpath], fake=True) + assert callpath in temporary_store.db.query(explicit=False) + env.install_specs([mpileaks], fake=True) + assert temporary_store.db.query(explicit=True) == [mpileaks] From 3581821d3cc5bc636848fb774807e8da1ac28771 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 24 Oct 2024 06:08:33 +0200 Subject: [PATCH 124/615] py-parso: new version and fix forward compat bounds (#47171) py-parso needs grammar files for each python version, meaning that every future release needs a forward compat bound. --- var/spack/repos/builtin/packages/py-parso/package.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-parso/package.py b/var/spack/repos/builtin/packages/py-parso/package.py index aea20abad21a73..ec01736ad67697 100644 --- a/var/spack/repos/builtin/packages/py-parso/package.py +++ b/var/spack/repos/builtin/packages/py-parso/package.py @@ -16,6 +16,7 @@ class PyParso(PythonPackage): license("MIT") + version("0.8.4", sha256="eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d") version("0.8.3", sha256="8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0") version("0.8.2", sha256="12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398") version("0.8.1", sha256="8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e") @@ -23,7 +24,10 @@ class PyParso(PythonPackage): version("0.6.1", sha256="56b2105a80e9c4df49de85e125feb6be69f49920e121406f15e7acde6c9dfc57") version("0.4.0", sha256="2e9574cb12e7112a87253e14e2c380ce312060269d04bd018478a3c92ea9a376") - depends_on("python@3.6:", type=("build", "run"), when="@0.8.1:") - depends_on("python@2.7:2.8,3.4:", type=("build", "run"), when="@0.6.1:") - depends_on("python@2.6:2.8,3.3:", type=("build", "run"), when="@0.4.0:") + with default_args(type=("build", "run")): + depends_on("python@:3.13", when="@:0.8.4") + # https://github.com/davidhalter/parso/commit/f7bea28bcc3a1862075e5b61a08d703d72be94aa + depends_on("python@:3.12", when="@:0.8.3") + # https://github.com/davidhalter/parso/commit/285492f4ed25f145859630ee6c5625e60aff6e2e + depends_on("python@:3.11", when="@:0.8.2") depends_on("py-setuptools", type="build") From 225be45687fceb130b465691cd5958800c13fade Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 23 Oct 2024 23:38:34 -0500 Subject: [PATCH 125/615] dire: Update Boost dependency (#47129) * dire: Update Boost dependency The only version currently available is 2.004, and it does not use Boost. * Remove unused Boost import --- var/spack/repos/builtin/packages/dire/package.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/dire/package.py b/var/spack/repos/builtin/packages/dire/package.py index b819f019e794cc..fb7849a032bf41 100644 --- a/var/spack/repos/builtin/packages/dire/package.py +++ b/var/spack/repos/builtin/packages/dire/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.pkg.builtin.boost import Boost class Dire(Package): @@ -27,10 +26,6 @@ class Dire(Package): depends_on("zlib-api") - # TODO: replace this with an explicit list of components of Boost, - # for instance depends_on('boost +filesystem') - # See https://github.com/spack/spack/pull/22303 for reference - depends_on(Boost.with_default_variants) depends_on("lhapdf") depends_on("hepmc") depends_on("pythia8@8.226:") From a0173a5a9476c6046d41987a53b60d8e24f79ff6 Mon Sep 17 00:00:00 2001 From: shanedsnyder Date: Wed, 23 Oct 2024 23:48:29 -0500 Subject: [PATCH 126/615] darshan-runtime,darshan-util,py-darshan: new package checksums for darshan-3.4.6 release (#47068) * new packages for darshan-3.4.6 release * set darshan-util dependencies in py-darshan --- var/spack/repos/builtin/packages/darshan-runtime/package.py | 1 + var/spack/repos/builtin/packages/darshan-util/package.py | 1 + var/spack/repos/builtin/packages/py-darshan/package.py | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index 81bbd2877ea2d0..25f67b55f9742c 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -25,6 +25,7 @@ class DarshanRuntime(AutotoolsPackage): test_requires_compiler = True version("main", branch="main", submodules=True) + version("3.4.6", sha256="092b35e7af859af903dce0c51bcb5d3901dd0d9ad79d1b2f3282692407f032ee") version("3.4.5", sha256="1c017ac635fab5ee0e87a6b52c5c7273962813569495cb1dd3b7cfa6e19f6ed0") version("3.4.4", sha256="d9c9df5aca94dc5ca3d56fd763bec2f74771d35126d61cb897373d2166ccd867") version("3.4.3", sha256="dca5f9f9b0ead55a8724b218071ecbb5c4f2ef6027eaade3a6477256930ccc2c") diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py index 8cbe414d76ab8a..38a9195c7add41 100644 --- a/var/spack/repos/builtin/packages/darshan-util/package.py +++ b/var/spack/repos/builtin/packages/darshan-util/package.py @@ -21,6 +21,7 @@ class DarshanUtil(AutotoolsPackage): tags = ["e4s"] version("main", branch="main", submodules="True") + version("3.4.6", sha256="092b35e7af859af903dce0c51bcb5d3901dd0d9ad79d1b2f3282692407f032ee") version("3.4.5", sha256="1c017ac635fab5ee0e87a6b52c5c7273962813569495cb1dd3b7cfa6e19f6ed0") version("3.4.4", sha256="d9c9df5aca94dc5ca3d56fd763bec2f74771d35126d61cb897373d2166ccd867") version("3.4.3", sha256="dca5f9f9b0ead55a8724b218071ecbb5c4f2ef6027eaade3a6477256930ccc2c") diff --git a/var/spack/repos/builtin/packages/py-darshan/package.py b/var/spack/repos/builtin/packages/py-darshan/package.py index b6124eb9cb5412..9740c1022033c0 100644 --- a/var/spack/repos/builtin/packages/py-darshan/package.py +++ b/var/spack/repos/builtin/packages/py-darshan/package.py @@ -14,6 +14,9 @@ class PyDarshan(PythonPackage): maintainers("jeanbez", "shanedsnyder") + # NOTE: don't forget to update the version array further down that sets the appropriate + # darshan-util dependency + version("3.4.6.0", sha256="a105ec5c9bcd4a20469470ca51db8016336ede34a1c33f4488d1ba263a73c378") version("3.4.5.0", sha256="1419e246b2383d3e71da14942d6579a86fb298bf6dbbc3f507accefa614c6e50") version("3.4.4.0", sha256="2d218a1b2a450934698a78148c6603e453c246ec852679432bf217981668e56b") version("3.4.3.0", sha256="e0708fc5445f2d491ebd381a253cd67534cef13b963f1d749dd605a10f5c0f8f") @@ -45,7 +48,7 @@ class PyDarshan(PythonPackage): # py-darshan depends on specific darshan-util versions corresponding # to the first 3 parts of the py-darshan version string # (i.e., py-darshan@3.4.3.0 requires darshan-util@3.4.3, etc.) - for v in ["3.4.0", "3.4.1", "3.4.2", "3.4.3"]: + for v in ["3.4.0", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6"]: depends_on(f"darshan-util@{v}", when=f"@{v}", type=("build", "run")) @run_after("install") From f6ad1e23f8f99b3dc7fa10d616921081127c3a2d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 24 Oct 2024 08:13:07 +0200 Subject: [PATCH 127/615] Improve `Database.query*` methods (#47116) * Add type hints to all query* methods * Inline docstrings * Change defaults from `any` to `None` so they can be type hinted in old Python * Pre-filter on given hashes instead of iterating over all db specs * Fix a bug where the `--origin` option of uninstall had no effect * Fix a bug where query args were not applied when searching by concrete spec Signed-off-by: Massimiliano Culpo --- lib/spack/spack/binary_distribution.py | 2 +- lib/spack/spack/cmd/deconcretize.py | 2 +- lib/spack/spack/cmd/find.py | 2 +- lib/spack/spack/cmd/mark.py | 8 +- lib/spack/spack/cmd/test.py | 2 +- lib/spack/spack/cmd/uninstall.py | 11 +- lib/spack/spack/database.py | 280 +++++++++++++++---------- lib/spack/spack/test/cmd/find.py | 2 +- 8 files changed, 181 insertions(+), 128 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index bf1d3521249d0a..2f74f38dac3200 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -252,7 +252,7 @@ def _associate_built_specs_with_mirror(self, cache_key, mirror_url): spec_list = [ s - for s in db.query_local(installed=any, in_buildcache=any) + for s in db.query_local(installed=any) if s.external or db.query_local_by_spec_hash(s.dag_hash()).in_buildcache ] diff --git a/lib/spack/spack/cmd/deconcretize.py b/lib/spack/spack/cmd/deconcretize.py index ffb05eebe71ffa..7e2feab5aa0926 100644 --- a/lib/spack/spack/cmd/deconcretize.py +++ b/lib/spack/spack/cmd/deconcretize.py @@ -99,5 +99,5 @@ def deconcretize(parser, args): " Use `spack deconcretize --all` to deconcretize ALL specs.", ) - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] deconcretize_specs(args, specs) diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index afa830fb8e312c..079c5bf4d31913 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -178,7 +178,7 @@ def query_arguments(args): if args.unknown: predicate_fn = lambda x: not spack.repo.PATH.exists(x.spec.name) - explicit = any + explicit = None if args.explicit: explicit = True if args.implicit: diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py index 38701b97475547..0069008c4f05ac 100644 --- a/lib/spack/spack/cmd/mark.py +++ b/lib/spack/spack/cmd/mark.py @@ -80,8 +80,8 @@ def find_matching_specs(specs, allow_multiple_matches=False): has_errors = True # No installed package matches the query - if len(matching) == 0 and spec is not any: - tty.die("{0} does not match any installed packages.".format(spec)) + if len(matching) == 0 and spec is not None: + tty.die(f"{spec} does not match any installed packages.") specs_from_cli.extend(matching) @@ -116,6 +116,6 @@ def mark(parser, args): " Use `spack mark --all` to mark ALL packages.", ) - # [any] here handles the --all case by forcing all specs to be returned - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + # [None] here handles the --all case by forcing all specs to be returned + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] mark_specs(args, specs) diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index d3d45dbe463cc7..14578043829a4b 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -165,7 +165,7 @@ def test_run(args): if args.fail_fast: spack.config.set("config:fail_fast", True, scope="command_line") - explicit = args.explicit or any + explicit = args.explicit or None explicit_str = "explicitly " if args.explicit else "" # Get specs to test diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index d51a8f8e3bc06e..5d6779eea9195a 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -90,6 +90,7 @@ def find_matching_specs( env: optional active environment specs: list of specs to be matched against installed packages allow_multiple_matches: if True multiple matches are admitted + origin: origin of the spec Return: list: list of specs @@ -98,7 +99,7 @@ def find_matching_specs( hashes = env.all_hashes() if env else None # List of specs that match expressions given via command line - specs_from_cli = [] + specs_from_cli: List["spack.spec.Spec"] = [] has_errors = False for spec in specs: install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED] @@ -116,7 +117,7 @@ def find_matching_specs( has_errors = True # No installed package matches the query - if len(matching) == 0 and spec is not any: + if len(matching) == 0 and spec is not None: if env: pkg_type = "packages in environment '%s'" % env.name else: @@ -213,7 +214,7 @@ def get_uninstall_list(args, specs: List[spack.spec.Spec], env: Optional[ev.Envi # Gets the list of installed specs that match the ones given via cli # args.all takes care of the case where '-a' is given in the cli - matching_specs = find_matching_specs(env, specs, args.all) + matching_specs = find_matching_specs(env, specs, args.all, origin=args.origin) dependent_specs = installed_dependents(matching_specs) all_uninstall_specs = matching_specs + dependent_specs if args.dependents else matching_specs other_dependent_envs = dependent_environments(all_uninstall_specs, current_env=env) @@ -301,6 +302,6 @@ def uninstall(parser, args): " Use `spack uninstall --all` to uninstall ALL packages.", ) - # [any] here handles the --all case by forcing all specs to be returned - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + # [None] here handles the --all case by forcing all specs to be returned + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] uninstall_specs(args, specs) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 9813c7c18d9608..12f6ac24659fb3 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -32,6 +32,7 @@ Container, Dict, Generator, + Iterable, List, NamedTuple, Optional, @@ -290,52 +291,6 @@ def __reduce__(self): return ForbiddenLock, tuple() -_QUERY_DOCSTRING = """ - - Args: - query_spec: queries iterate through specs in the database and - return those that satisfy the supplied ``query_spec``. If - query_spec is `any`, This will match all specs in the - database. If it is a spec, we'll evaluate - ``spec.satisfies(query_spec)`` - - predicate_fn: optional predicate taking an InstallRecord as argument, and returning - whether that record is selected for the query. It can be used to craft criteria - that need some data for selection not provided by the Database itself. - - installed (bool or InstallStatus or typing.Iterable or None): - if ``True``, includes only installed - specs in the search; if ``False`` only missing specs, and if - ``any``, all specs in database. If an InstallStatus or iterable - of InstallStatus, returns specs whose install status - (installed, deprecated, or missing) matches (one of) the - InstallStatus. (default: True) - - explicit (bool or None): A spec that was installed - following a specific user request is marked as explicit. If - instead it was pulled-in as a dependency of a user requested - spec it's considered implicit. - - start_date (datetime.datetime or None): filters the query - discarding specs that have been installed before ``start_date``. - - end_date (datetime.datetime or None): filters the query discarding - specs that have been installed after ``end_date``. - - hashes (Container): list or set of hashes that we can use to - restrict the search - - in_buildcache (bool or None): Specs that are marked in - this database as part of an associated binary cache are - ``in_buildcache``. All other specs are not. This field is used - for querying mirror indices. Default is ``any``. - - Returns: - list of specs that match the query - - """ - - class LockConfiguration(NamedTuple): """Data class to configure locks in Database objects @@ -1525,59 +1480,48 @@ def get_by_hash(self, dag_hash, default=None, installed=any): def _query( self, - query_spec=any, + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, predicate_fn: Optional[SelectType] = None, - installed=True, - explicit=any, - start_date=None, - end_date=None, - hashes=None, - in_buildcache=any, - origin=None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + hashes: Optional[Iterable[str]] = None, + in_buildcache: Optional[bool] = None, + origin: Optional[str] = None, ) -> List["spack.spec.Spec"]: - """Run a query on the database.""" - - # TODO: Specs are a lot like queries. Should there be a - # TODO: wildcard spec object, and should specs have attributes - # TODO: like installed and known that can be queried? Or are - # TODO: these really special cases that only belong here? - - if query_spec is not any: - if not isinstance(query_spec, spack.spec.Spec): - query_spec = spack.spec.Spec(query_spec) - - # Just look up concrete specs with hashes; no fancy search. - if query_spec.concrete: - # TODO: handling of hashes restriction is not particularly elegant. - hash_key = query_spec.dag_hash() - if hash_key in self._data and (not hashes or hash_key in hashes): - return [self._data[hash_key].spec] - else: - return [] - - # Abstract specs require more work -- currently we test - # against everything. + + # Restrict the set of records over which we iterate first + matching_hashes = self._data + if hashes is not None: + matching_hashes = {h: self._data[h] for h in hashes if h in self._data} + + if isinstance(query_spec, str): + query_spec = spack.spec.Spec(query_spec) + + if query_spec is not None and query_spec.concrete: + hash_key = query_spec.dag_hash() + if hash_key not in matching_hashes: + return [] + matching_hashes = {hash_key: matching_hashes[hash_key]} + results = [] start_date = start_date or datetime.datetime.min end_date = end_date or datetime.datetime.max - # save specs whose name doesn't match for last, to avoid a virtual check deferred = [] - - for key, rec in self._data.items(): - if hashes is not None and rec.spec.dag_hash() not in hashes: - continue - + for rec in matching_hashes.values(): if origin and not (origin == rec.origin): continue if not rec.install_type_matches(installed): continue - if in_buildcache is not any and rec.in_buildcache != in_buildcache: + if in_buildcache is not None and rec.in_buildcache != in_buildcache: continue - if explicit is not any and rec.explicit != explicit: + if explicit is not None and rec.explicit != explicit: continue if predicate_fn is not None and not predicate_fn(rec): @@ -1588,7 +1532,7 @@ def _query( if not (start_date < inst_date < end_date): continue - if query_spec is any: + if query_spec is None or query_spec.concrete: results.append(rec.spec) continue @@ -1606,36 +1550,118 @@ def _query( # If we did fine something, the query spec can't be virtual b/c we matched an actual # package installation, so skip the virtual check entirely. If we *didn't* find anything, # check all the deferred specs *if* the query is virtual. - if not results and query_spec is not any and deferred and query_spec.virtual: + if not results and query_spec is not None and deferred and query_spec.virtual: results = [spec for spec in deferred if spec.satisfies(query_spec)] return results - if _query.__doc__ is None: - _query.__doc__ = "" - _query.__doc__ += _QUERY_DOCSTRING + def query_local( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + hashes: Optional[List[str]] = None, + in_buildcache: Optional[bool] = None, + origin: Optional[str] = None, + ) -> List["spack.spec.Spec"]: + """Queries the local Spack database. - def query_local(self, *args, **kwargs): - """Query only the local Spack database. + This function doesn't guarantee any sorting of the returned data for performance reason, + since comparing specs for __lt__ may be an expensive operation. - This function doesn't guarantee any sorting of the returned - data for performance reason, since comparing specs for __lt__ - may be an expensive operation. + Args: + query_spec: if query_spec is ``None``, match all specs in the database. + If it is a spec, return all specs matching ``spec.satisfies(query_spec)``. + + predicate_fn: optional predicate taking an InstallRecord as argument, and returning + whether that record is selected for the query. It can be used to craft criteria + that need some data for selection not provided by the Database itself. + + installed: if ``True``, includes only installed specs in the search. If ``False`` only + missing specs, and if ``any``, all specs in database. If an InstallStatus or + iterable of InstallStatus, returns specs whose install status matches at least + one of the InstallStatus. + + explicit: a spec that was installed following a specific user request is marked as + explicit. If instead it was pulled-in as a dependency of a user requested spec + it's considered implicit. + + start_date: if set considers only specs installed from the starting date. + + end_date: if set considers only specs installed until the ending date. + + in_buildcache: specs that are marked in this database as part of an associated binary + cache are ``in_buildcache``. All other specs are not. This field is used for + querying mirror indices. By default, it does not check this status. + + hashes: list of hashes used to restrict the search + + origin: origin of the spec """ with self.read_transaction(): - return self._query(*args, **kwargs) + return self._query( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + + def query( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + in_buildcache: Optional[bool] = None, + hashes: Optional[List[str]] = None, + origin: Optional[str] = None, + install_tree: str = "all", + ): + """Queries the Spack database including all upstream databases. - if query_local.__doc__ is None: - query_local.__doc__ = "" - query_local.__doc__ += _QUERY_DOCSTRING + Args: + query_spec: if query_spec is ``None``, match all specs in the database. + If it is a spec, return all specs matching ``spec.satisfies(query_spec)``. + + predicate_fn: optional predicate taking an InstallRecord as argument, and returning + whether that record is selected for the query. It can be used to craft criteria + that need some data for selection not provided by the Database itself. + + installed: if ``True``, includes only installed specs in the search. If ``False`` only + missing specs, and if ``any``, all specs in database. If an InstallStatus or + iterable of InstallStatus, returns specs whose install status matches at least + one of the InstallStatus. + + explicit: a spec that was installed following a specific user request is marked as + explicit. If instead it was pulled-in as a dependency of a user requested spec + it's considered implicit. + + start_date: if set considers only specs installed from the starting date. + + end_date: if set considers only specs installed until the ending date. + + in_buildcache: specs that are marked in this database as part of an associated binary + cache are ``in_buildcache``. All other specs are not. This field is used for + querying mirror indices. By default, it does not check this status. - def query(self, *args, **kwargs): - """Query the Spack database including all upstream databases. + hashes: list of hashes used to restrict the search - Additional Arguments: - install_tree (str): query 'all' (default), 'local', 'upstream', or upstream path + install_tree: query 'all' (default), 'local', 'upstream', or upstream path + + origin: origin of the spec """ - install_tree = kwargs.pop("install_tree", "all") valid_trees = ["all", "upstream", "local", self.root] + [u.root for u in self.upstream_dbs] if install_tree not in valid_trees: msg = "Invalid install_tree argument to Database.query()\n" @@ -1651,26 +1677,52 @@ def query(self, *args, **kwargs): # queries for upstream DBs need to *not* lock - we may not # have permissions to do this and the upstream DBs won't know about # us anyway (so e.g. they should never uninstall specs) - upstream_results.extend(upstream_db._query(*args, **kwargs) or []) + upstream_results.extend( + upstream_db._query( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + or [] + ) - local_results = [] + local_results: Set["spack.spec.Spec"] = set() if install_tree in ("all", "local") or self.root == install_tree: - local_results = set(self.query_local(*args, **kwargs)) + local_results = set( + self.query_local( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + ) results = list(local_results) + list(x for x in upstream_results if x not in local_results) - return sorted(results) - if query.__doc__ is None: - query.__doc__ = "" - query.__doc__ += _QUERY_DOCSTRING - - def query_one(self, query_spec, predicate_fn=None, installed=True): + def query_one( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]], + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + ) -> Optional["spack.spec.Spec"]: """Query for exactly one spec that matches the query spec. - Raises an assertion error if more than one spec matches the - query. Returns None if no installed package matches. + Returns None if no installed package matches. + Raises: + AssertionError: if more than one spec matches the query. """ concrete_specs = self.query(query_spec, predicate_fn=predicate_fn, installed=installed) assert len(concrete_specs) <= 1 diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index a29b56708f0d70..d947362f185ae6 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -74,7 +74,7 @@ def test_query_arguments(): assert "explicit" in q_args assert q_args["installed"] == ["installed"] assert q_args["predicate_fn"] is None - assert q_args["explicit"] is any + assert q_args["explicit"] is None assert "start_date" in q_args assert "end_date" not in q_args assert q_args["install_tree"] == "all" From faeef6272dcf52acc87cad55e0fee0edba44ba49 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Thu, 24 Oct 2024 02:20:18 -0400 Subject: [PATCH 128/615] llvm: add v19.1.2 , v19.1.1 (#47113) --- var/spack/repos/builtin/packages/llvm/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 8c9ccb1790b8a0..98a27080b3f9af 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -56,6 +56,8 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): license("Apache-2.0") version("main", branch="main") + version("19.1.2", sha256="622cb6c5e95a3bb7e9876c4696a65671f235bd836cfd0c096b272f6c2ada41e7") + version("19.1.1", sha256="115dfd98a353d05bffdab3f80db22f159da48aca0124e8c416f437adcd54b77f") version("19.1.0", sha256="0a08341036ca99a106786f50f9c5cb3fbe458b3b74cab6089fd368d0edb2edfe") version("18.1.8", sha256="09c08693a9afd6236f27a2ebae62cda656eba19021ef3f94d59e931d662d4856") version("18.1.7", sha256="b60df7cbe02cef2523f7357120fb0d46cbb443791cde3a5fb36b82c335c0afc9") From d8c80747624e32ade173de081473782e3fb7eebe Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 24 Oct 2024 08:55:14 +0200 Subject: [PATCH 129/615] bootstrap: add clingo 3.13 binaries and more (#47126) --- .github/workflows/bin/bootstrap-test.sh | 2 +- .github/workflows/bootstrap.yml | 13 +- .github/workflows/unit_tests.yaml | 2 +- etc/spack/defaults/bootstrap.yaml | 10 +- lib/spack/spack/bootstrap/core.py | 8 +- lib/spack/spack/test/cmd/bootstrap.py | 2 +- .../spack/test/data/config/bootstrap.yaml | 2 +- .../bootstrap/github-actions-v0.4/clingo.json | 334 --------------- .../bootstrap/github-actions-v0.4/gnupg.json | 254 ------------ .../github-actions-v0.4/patchelf.json | 34 -- .../bootstrap/github-actions-v0.6/clingo.json | 384 ++++++++++++++++++ .../bootstrap/github-actions-v0.6/gnupg.json | 269 ++++++++++++ .../metadata.yaml | 4 +- .../github-actions-v0.6/patchelf.json | 49 +++ 14 files changed, 722 insertions(+), 645 deletions(-) delete mode 100644 share/spack/bootstrap/github-actions-v0.4/clingo.json delete mode 100644 share/spack/bootstrap/github-actions-v0.4/gnupg.json delete mode 100644 share/spack/bootstrap/github-actions-v0.4/patchelf.json create mode 100644 share/spack/bootstrap/github-actions-v0.6/clingo.json create mode 100644 share/spack/bootstrap/github-actions-v0.6/gnupg.json rename share/spack/bootstrap/{github-actions-v0.4 => github-actions-v0.6}/metadata.yaml (61%) create mode 100644 share/spack/bootstrap/github-actions-v0.6/patchelf.json diff --git a/.github/workflows/bin/bootstrap-test.sh b/.github/workflows/bin/bootstrap-test.sh index 563eb286433c4f..0d774c248c3a6a 100755 --- a/.github/workflows/bin/bootstrap-test.sh +++ b/.github/workflows/bin/bootstrap-test.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e source share/spack/setup-env.sh -$PYTHON bin/spack bootstrap disable github-actions-v0.4 +$PYTHON bin/spack bootstrap disable github-actions-v0.5 $PYTHON bin/spack bootstrap disable spack-install $PYTHON bin/spack $SPACK_FLAGS solve zlib tree $BOOTSTRAP/store diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index c9e69d3026df58..da7bf49fadf2aa 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -43,8 +43,8 @@ jobs: - name: Bootstrap clingo run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find cmake bison spack -d solve zlib tree ~/.spack/bootstrap/store/ @@ -69,8 +69,8 @@ jobs: - name: Bootstrap clingo run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find --not-buildable cmake bison spack -d solve zlib tree $HOME/.spack/bootstrap/store/ @@ -97,8 +97,8 @@ jobs: run: | source share/spack/setup-env.sh spack solve zlib + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack -d gpg list tree ~/.spack/bootstrap/store/ @@ -130,15 +130,16 @@ jobs: 3.10 3.11 3.12 + 3.13 - name: Set bootstrap sources run: | source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.4 + spack bootstrap disable github-actions-v0.5 spack bootstrap disable spack-install - name: Bootstrap clingo run: | set -e - for ver in '3.8' '3.9' '3.10' '3.11' '3.12' ; do + for ver in '3.8' '3.9' '3.10' '3.11' '3.12' '3.13'; do not_found=1 ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" if [[ -d "$ver_dir" ]] ; then @@ -185,8 +186,8 @@ jobs: - name: Bootstrap clingo run: | ./share/spack/setup-env.ps1 + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find --not-buildable cmake bison spack -d solve zlib ./share/spack/qa/validate_last_exit.ps1 diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 124d77e0b5a549..ae4b11db2e85a1 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -170,8 +170,8 @@ jobs: run: | . share/spack/setup-env.sh spack bootstrap disable spack-install - spack bootstrap disable github-actions-v0.4 spack bootstrap disable github-actions-v0.5 + spack bootstrap disable github-actions-v0.6 spack bootstrap status spack solve zlib spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretize.py diff --git a/etc/spack/defaults/bootstrap.yaml b/etc/spack/defaults/bootstrap.yaml index 6f2dbe171c5f60..b2e2c0f37385ed 100644 --- a/etc/spack/defaults/bootstrap.yaml +++ b/etc/spack/defaults/bootstrap.yaml @@ -9,15 +9,15 @@ bootstrap: # may not be able to bootstrap all the software that Spack needs, # depending on its type. sources: - - name: 'github-actions-v0.5' + - name: github-actions-v0.6 + metadata: $spack/share/spack/bootstrap/github-actions-v0.6 + - name: github-actions-v0.5 metadata: $spack/share/spack/bootstrap/github-actions-v0.5 - - name: 'github-actions-v0.4' - metadata: $spack/share/spack/bootstrap/github-actions-v0.4 - - name: 'spack-install' + - name: spack-install metadata: $spack/share/spack/bootstrap/spack-install trusted: # By default we trust bootstrapping from sources and from binaries # produced on Github via the workflow + github-actions-v0.6: true github-actions-v0.5: true - github-actions-v0.4: true spack-install: true diff --git a/lib/spack/spack/bootstrap/core.py b/lib/spack/spack/bootstrap/core.py index e9c29751965558..ba2afa8f7f88f9 100644 --- a/lib/spack/spack/bootstrap/core.py +++ b/lib/spack/spack/bootstrap/core.py @@ -37,6 +37,7 @@ import spack.binary_distribution import spack.config import spack.detection +import spack.mirror import spack.platforms import spack.spec import spack.store @@ -91,12 +92,7 @@ def __init__(self, conf: ConfigDictionary) -> None: self.metadata_dir = spack.util.path.canonicalize_path(conf["metadata"]) # Promote (relative) paths to file urls - url = conf["info"]["url"] - if spack.util.url.is_path_instead_of_url(url): - if not os.path.isabs(url): - url = os.path.join(self.metadata_dir, url) - url = spack.util.url.path_to_file_url(url) - self.url = url + self.url = spack.mirror.Mirror(conf["info"]["url"]).fetch_url @property def mirror_scope(self) -> spack.config.InternalConfigScope: diff --git a/lib/spack/spack/test/cmd/bootstrap.py b/lib/spack/spack/test/cmd/bootstrap.py index 888f823c55b4fa..03421ede7725b4 100644 --- a/lib/spack/spack/test/cmd/bootstrap.py +++ b/lib/spack/spack/test/cmd/bootstrap.py @@ -170,7 +170,7 @@ def test_remove_and_add_a_source(mutable_config): assert not sources # Add it back and check we restored the initial state - _bootstrap("add", "github-actions", "$spack/share/spack/bootstrap/github-actions-v0.5") + _bootstrap("add", "github-actions", "$spack/share/spack/bootstrap/github-actions-v0.6") sources = spack.bootstrap.core.bootstrapping_sources() assert len(sources) == 1 diff --git a/lib/spack/spack/test/data/config/bootstrap.yaml b/lib/spack/spack/test/data/config/bootstrap.yaml index 4757b8729d23a8..43c4405350acf8 100644 --- a/lib/spack/spack/test/data/config/bootstrap.yaml +++ b/lib/spack/spack/test/data/config/bootstrap.yaml @@ -1,5 +1,5 @@ bootstrap: sources: - name: 'github-actions' - metadata: $spack/share/spack/bootstrap/github-actions-v0.5 + metadata: $spack/share/spack/bootstrap/github-actions-v0.6 trusted: {} diff --git a/share/spack/bootstrap/github-actions-v0.4/clingo.json b/share/spack/bootstrap/github-actions-v0.4/clingo.json deleted file mode 100644 index 1fa83eef1c02f4..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/clingo.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "clingo-bootstrap", - "fk6k6buvgbwhwtigvpvi3266gllv7z2o", - "003eb7b2c62debc0bac4a7f3a3933d6a955520199b37e00c8c0761036d8dc63a" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "2ezozohyngzmq74eeclsjupcawg6slse", - "bf3c559d655d5f04a2b080c640996086db2bb6bbf49f4139eed225a77b574923" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "okjsfmgareef7laq432tdtgyu7bshmv2", - "7beed9fe21b52df6b56d8242b79becab7ed953af16612d6e09c595ef39591ac3" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "cv7nf5ti72ywciapdy6mn7cemqv766zy", - "6af9e548044e4849794ee85008c8b19539b63857510c6fff544de7ccb6e53ee8" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ing4swsz5bj7guqffc277zitcky4uhu4", - "4d9008372c73797fc0bd47c92c922f810e1b3fd44dc373682a7a0780b711058c" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "p2cyqcsow6k6prfryoqb7usv27hhofuq", - "5e4fd1fc552d815ce8db8b8917d9089c7782a92269754f8ca5d4f01a9406244d" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "5bfjmclf6sktj4drclxe7rdwdthlkxw3", - "b811e62f82b564e9cd5e12fc3cdb19b3d4e5f2bdb98985e1bbe3d1bbd5dd3d5c" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "bwmaj7wyyiivvkq5j72mholmhmytb2fl", - "468da2198479514bbbf66f4268716bce38cace1004a612bc669d21d97c596f85" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ewhsk7bcohduujp5t7hljb5uk2mfbk7k", - "919cbfc82bbb08da207e22bec4d8047c34042b90d58b9c6b438b5dcef0046e39" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "263aqtzhrgzmzgpfekda7uk6wdqez76j", - "b9e579ee2a848f7287a8b625459ac5b8ce19e9e6858a86b53effaa4ae712d1b6" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "yqqiddbmi2pyxgu757qfvts6hlt6525q", - "254ab94d48543472ad8a32f598dc869c49051a0b890951d7de8425c7549caa26" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "plv3woz7rwmixdo42ew27imtqqjqnnv5", - "ec494e7043433fac6f8f404e023eea397197ff0928bf1c3f3cc0bc62d549334c" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "domcqyr4qx2yl3433l5dycnehastl7zc", - "fbfc1fc14f27bbabe36a438dd70515067dbd7e0873bc748b9f34d576d5400cb4" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "b5m7ectjiuucgaoyry24hhop44edjvg7", - "5412e2b3f45d251acd976c12d238549e0c324e6481bf328f9547fafc0e810daf" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "h2uxdiwlbvrfsz5mlt2s2xvnefbuk7qx", - "4cf26cd903fe0034522e1d8a712ab7a6ae936961c1c010473ff15566665cef6b" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "4ksotxknsesu4mv2bio5ndtilo423cpy", - "9281ca638e2ec5c0b6d3ae050827a1c3696251a6274e96f3a8a89a1fdf7f0ba2" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ho7jg4bl7degmnnnj6x6fatbcno37kqo", - "0e78a555839fbd3752473ed80c76be9007b6ce3f152fa69d8014b172e339b92f" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "oztu77xbgiige4pp2epmbqrmxt4vwnla", - "5271b271a2f6ae26838614477b2b8e5f230bceda7e0eb63f2cc36b18da3ba53d" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "33qaxq2adjrlv6ttxbu6bmueundhns2w", - "5fa731b84e354b8108ac4b7205d40e8c1a74cb2dfd590dd2d648d744a8556a1d" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "vwhszkap6e2zbzb74ywgyggflkmtavwz", - "09eed0c9b98681173f512385675f44d070cb5ebc3e08aac659a12ea1ec41d05a" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "3pst4dqux2clmm3mpjj4jkowv3s2ixv6", - "f9d9ade557ed426f55308dd14b43c59e1b51b8f40c9847d00994a3a89182a846" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "6wk7qj2hdglt2sjtec4mv7ibsvhw53ge", - "e06a3190e60b1d0c4d4b8f01b7a2ade9d2d3d8fdaf84757cc9741e81a5ad59a3" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "k2kch7a6j7ilikuklhyffkqhdqb46yt5", - "2547727ce0b8295594dfa56b711631b8ab221a19c4cbd19341539b929693b0cb" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ivzizagt74uqxrp2mri5lbqiqkhab77p", - "2ddd5daeeabfc3b2a211f7efb3cc700991c5817b08b19c2d315084198f7d2bc8" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "idkenmhnscjlu5gjqhpcqa4h7o2a7aow", - "44c88094abb239dd33b75c02c24fefe7f4f5646c2371f50a5bfb47b23805760b" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "cizcjj3tx4irs3uzoktrgybq73sz545f", - "d8c8d4accece4e10a4339b263ff42f0f0adc77b3fbeea1010b3d7fc48aead5b3" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "prqkzynv2nwko5mktitebgkeumuxkveu", - "3059fb60ff3b2dd5b36a46af37972b479fbfad348c30ec2e6b59729d93f07eed" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "axtxtavfahxuazw2wueu3tjwwu6ttdfo", - "281cf24d0a8f2372b348bb1a38a9bfd1516063f597ffdecfde6e8e3aa4e2139f" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ba5ijauisd3uuixtmactc36vps7yfsrl", - "ea5960f47f48daeb62e6ebf7d8574ceb4bfccff6e2bae17571b0857bfd7a0bbc" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "gqcctd2ejbgvyvyt4umqpetfoogfycwu", - "8358d72dd5de00a1b7a7ffb88ba366a01ce9b700245d2940eae7395fec0e6fda" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/gnupg.json b/share/spack/bootstrap/github-actions-v0.4/gnupg.json deleted file mode 100644 index 5237d8729af642..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/gnupg.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "zlib", - "azrxnl6yp7xeapfy7nljiopucaelofuh", - "c3f28571947a41d3c9fb0da0b340b51bdef6b9e05a59e6df7c9bc5838bacd81a" - ], - [ - "libiconv", - "id44zneq3nh4grvtekqoefl24okct4ak", - "8cf48050c8d58dc0e1d11c8b3b9d970586e1f62933f8655982f4312d1e4426ea" - ], - [ - "npth", - "lp7fobvpwlk3xugo7th2kmcnrvqqxb3b", - "ec4dda80a2485e0eda5b1ef09e6b8b020283b00ab6252981722979af04ce2ba8" - ], - [ - "libassuan", - "trhqsquxpocecfgkeif5bh2dwgu4njbp", - "33f15821d6e41238de58f2237d3e1be46b657e3337cbe73f87973fe970ab36fd" - ], - [ - "libgcrypt", - "eadvdhou2xjdhf47x3q5x2ypa4qhfqjy", - "f0d1d6b3cef5794933b78df3446ac71bdd0cc79b81a26fc33153ef13819e6b09" - ], - [ - "libgpg-error", - "yg67vozcaac75p3dnhd6c3cjpa5nsfjo", - "fe907bce097dec72a92a1973d73253d9e4ce4bd78ed14f8d6e647dd8e77eef15" - ], - [ - "libksba", - "m7o6qwsu2gxvlka2jbd5puzwj3z553ob", - "69d324a77b550a6c7a201f3f39835df4f14534fcf5fa28628c14039bfdb39dda" - ], - [ - "pinentry", - "6m36xv6ft3yterimp6xoozz66ych5eew", - "0b82a4b52a6bc5e6fd4913f585455ea703e0fa5c85fd9f4bb1eb5819af5084e1" - ], - [ - "gnupg", - "pyrfgqkgltgfk4yljfw2myxn6vqen2j6", - "3c41b0cf2db01ad2675f27d51edb4cf7f798be9ca0e3ac781990ff8b462cd8f6" - ] - ], - "spec": "gnupg@2.3: %apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "libiconv", - "f6om5cmewxrhzpowei3m2g2qnijvlep4", - "ab891ac21bc9cf44723993232ce3fff6fe75d003dfb88077dea630e532db123f" - ], - [ - "npth", - "tvebgs23dhejixfe36dufivhkwnyxh3t", - "95b9852c2e69f18fb8eff3dc6fc2bb9efe38821314cac6c310523da89c8346a2" - ], - [ - "zlib", - "rlzphstv75due7yzcicuu7nfos5zuk2q", - "e5ee87fab6e51b46ab1fb1cedafc4edee380a810947d52e669a185b52636aa37" - ], - [ - "libassuan", - "ow5h7we5zrgoknsvss3yjjs4g3aci4b2", - "44cf47134b4e4cbad30b8f4ef5ac1e7e25ead1d4dc64bd44fe807a4f173977ad" - ], - [ - "libgcrypt", - "nuy3jjihjlktwggpwdrert2q5xoqk4ic", - "ebb85da4d0b4ea93e073b8faf11e4ec955752a589b0ee47cd46b825ef685e536" - ], - [ - "libgpg-error", - "w7xfbrbfdnssbfoxrsz4emt6aildxsfy", - "6973cd597db96830822a8111fe3b3cff271e8cedc26fb0cb48443c2de2cc50ad" - ], - [ - "libksba", - "74h62c57ojgmqqp6xrrrzmzgftmcv22c", - "73afeb0bfdf57623d694ea16b52e1d73bfca61954583d6737f4ab6ab05c92ca8" - ], - [ - "pinentry", - "dv7sj3xesjfhqbrcxorvbzoxzlqpac4e", - "509d6881145a33b7de69db63af84fe887e7c995ffd4e89003a25fafa45b5874b" - ], - [ - "gnupg", - "hrv7rjtbvuxkt4trjdnzovegwutciunv", - "bf39c84047508556e142b9a9808007bbcc9aa80b2b9936a3598530f5acc7c75a" - ] - ], - "spec": "gnupg@2.3: %apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "zlib", - "mrdyh4e34orgypetqhru6romj6wlvyxm", - "ecd344c5dcae7377d8b20f14248a73d1fe350e54364f2f1e70aa4fccf1c219ed" - ], - [ - "libiconv", - "iuparzfnzuwmmhj5ytlhaobn4nz3cct4", - "58ef399a4bd8794a00314440e02de8c685c9c02d1b02a751923ae669556a1a91" - ], - [ - "npth", - "eltd4b6tq4gsnboeidmr7mykezykcho5", - "89b3e0c7f573009d4816b219413a07a9917758836befdfeb6c33a9e87d846b6f" - ], - [ - "libassuan", - "xfaguxawrc6z73draba5fccjxtxjvzmz", - "59ebe715532a2671cde9783aceebb1448062e7adb7307da30b0d6245529d897f" - ], - [ - "libgcrypt", - "ntb2fzwckdgb77eubdcvvj2xm5eilavw", - "92fb1ef0d57c98b16e172c6afbc995dd163f0bac1484eb11eef5305f434a5cd1" - ], - [ - "libgpg-error", - "utzxfplsbueqmj7ksxaykk6tk3xi5dmr", - "74aa95bc48c42eab0a8ca0afab51074811bf79477271123af13398029ac7394f" - ], - [ - "libksba", - "jzxmzebonsgrw5e6ij446azzocvko2vi", - "bfc11401fc94d3f6d3176fa4b95dd866ad355c0b77b9c5787acbfdffe42915b9" - ], - [ - "pinentry", - "wsjzc3l5zgieowd24p2paccrporun5cv", - "db3e475b2113ad9587017a76c9df57fc537d2dd6c5d3323119c30723b5b51330" - ], - [ - "gnupg", - "zigabpppmz5ctktqwdj5ueaxjuvm6syh", - "fd8a681dfa919d8faff256fabafe1f08238cc75c74cbcfc44acce23cf0afb34c" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "zlib", - "c4kbhgxjlko6a367d3zl6b5qcm5swiew", - "49747756dea8dd15fc3ea8f73d03b24724fa6b22103f04b557152db59c17f799" - ], - [ - "libiconv", - "5l5cq7de7iwagndyyphpdmvdvp3pepe6", - "a46d2a89cab00d8196e6226f3831bc3ff8b7f728844d6d29013cc8999d7b7f78" - ], - [ - "npth", - "b6ifa47mma7n7mxl36yg73uwjqezbde5", - "1b16e28e692ca91a096da4976f7df451df5e3ea9aa2f03cc2d39f62646a9399b" - ], - [ - "libassuan", - "phds2cjgeo3sbluuvdj6ebdkuom6un6p", - "482bf3a4975e21e03b7d34ff69031071a2822fb182774421f648ed7ccc99f24d" - ], - [ - "libgcrypt", - "7hgqgoekgh4jiml2u55rg2zec3ouyq7z", - "edfa277010de9f060bbcb11c2011dd66fb6e714c28a189d7cd7ef2d825e85180" - ], - [ - "libgpg-error", - "th2tzwwoz7ddrygkjrxzzv4yvznxglmx", - "e7c645287270ae2ac08ff5d400bf44b2e79203e752c3ff32aed07200638a6fe0" - ], - [ - "libksba", - "ex5gt36shiwt54jg7mbgxysnwu7jjy6a", - "8cf350544821bfec19e2b52a47896ca9258fc56680e4bb0d12715416169ead4a" - ], - [ - "pinentry", - "aowc7abd6kvohdohxz4j225q2hh743cq", - "ad336a7eee41eebd6b8e667e7ef673b64088c0553492567245653ac6c07fdb46" - ], - [ - "gnupg", - "7i7j24llnlzwpwrfumulorq6ucx2ku2f", - "a743ffd0698db5329a8231d25fa2e13b88f63cf85198664794a91df7a2c48632" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "libiconv", - "vyvyow3bnokashj3wntl7pgm5nc4h7vw", - "4fb8c1a563975f339b2e98e4c5c6cd98d629bc94fcf57b8e92beedae17a4584d" - ], - [ - "npth", - "opncvl75zv6njawkgtxgt4yhii65f5nx", - "24b442a6f2cc28176a4f742d961807e5ffd853d2f9d65175944b6aa8b47d91e2" - ], - [ - "zlib", - "dcixs2nytw7vlthk55mwvog7veypnuor", - "6ab7018b621783c971192e46b6a3e2764b638b5ab5c2f3c62af24afd5a9039e0" - ], - [ - "libassuan", - "yk2555moxgj3dro6edznumguezecriso", - "ebde470fee06e5ad7527dca0eb3689ae13b7299229b51e64f97ff87b9daf9160" - ], - [ - "libgcrypt", - "imws5ss7coeeo45zr6w54xnwjfjm4cc6", - "ad20c2974c90717efa8a4c27781e5f4c14d60527dc1c224fd2e113fe52d3e958" - ], - [ - "libgpg-error", - "nbhvf75esgtjeu6nh57gu6mnikiazmjt", - "ec9f59c684dc4054706217952b8ddf610e4277ec8031c92640f086959dcf756e" - ], - [ - "libksba", - "cx425tk5tnod3523zj4izloqibr44frz", - "b2465fecbca3d022cf068766a9c01c72f6a68f9b58e78375f687b1273f6c683c" - ], - [ - "pinentry", - "pto3uq53xwl7dtbvycdp4qccacrrzs3r", - "bd9ae21dff99c34165baa680df4b4b36339e207fec2ac4fcc80103d774a1dd84" - ], - [ - "gnupg", - "5mhxefklns5hpdai3jn3rsf23kz4nol6", - "8a21155078dc51fdee7990326335e9f99192da0eb4b3490260a7399e30f20243" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/patchelf.json b/share/spack/bootstrap/github-actions-v0.4/patchelf.json deleted file mode 100644 index cab42851089392..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/patchelf.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "patchelf", - "kjmrsrd7akfwzlejzsdyoun7fwgmvjgk", - "2c1975adb6fbd42bdb960b67fa6b32bc2846a28e5d293d2ca7b44a38f49ecf4f" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "patchelf", - "gxxogiws7fmzkbdc26k24id3aplly6wi", - "d45ac6b9045d510861fda0cfaa5c04d71f316df5784376f2d2915ab134619c1b" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "patchelf", - "p72zyan5wrzuabtmzq7isa5mzyh6ahdp", - "ed7ebae3399d96c8d2f4b38ce6f2da52d8b73b312c73babae880ed3467b464b4" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.6/clingo.json b/share/spack/bootstrap/github-actions-v0.6/clingo.json new file mode 100644 index 00000000000000..6db902e1bc9783 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/clingo.json @@ -0,0 +1,384 @@ +{ + "verified": [ + { + "binaries": [ + [ + "clingo-bootstrap", + "54jmcv6ecepywqv7bdpbfm2mrsarrjio", + "ff7f45db1645d1d857a315bf8d63c31447330552528bdf1fccdcf50735e62166" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "i2cye2tc752emxaeovjnrljbcz4gjr7j", + "e7491ac297cbb3f45c80aaf4ca5102e2b655b731e7b6ce7682807d302cb61f1c" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "5bsjop6yb3oqfi2mopjaufprqy5xaqtv", + "91214626a86c21fc0d76918884ec819050d4d52b4f78df7cc9769a83fbee2f71" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "unriyx5k5mu2o6nqwtaj254heazbiwyk", + "db596d9e6d8970d659f4be4cb510f9ba5dc2ec4ea42ecf2aed1325ec5ad72b45" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "6ikikftldgnbrirhbo27v4flseuo34j3", + "a7ed91aee1f8d5cfe2ca5ef2e3e74215953ffd2d8b5c722a670f2c303610e90c" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "pl5t4qtmufwrvek37mrorllf6ivnwztc", + "c856a98f92b9fa218377cea9272dffa736e93251d987b6386e6abf40058333dc" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "cvxik6sx7niravyolfrrxayo2jywhv5p", + "d74cc0b44faa69473816dca16a3806123790e6eb9a59f611b1d80da7843f474a" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "chkx4n66gfa7ocewytj4bdqafp2czdwm", + "2cb12477504ca8e112522b6d56325ce32024c9466de5b8427fd70a1a81b15020" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "agrdoajzabs2am6q36lcrquihfb4d5xv", + "4e73426599fa61df1a4faceafa38ade170a3dec45b6d8f333e6c2b6bfe697724" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "56am5pmigql665hjjc2rnvtqd6dteni6", + "4309b42e5642bc5c83ede90759b1a0b5d66fffa8991b6213208577626b588cde" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "s727fhuqz2vgtlhmgviyihlqcm3vbgkx", + "1feeab9e1a81ca56de838ccc234d60957e9ab14da038e38b6687732b7bae1ff6" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "zo56jqvyt4y3udj6tsksbpm7bqoxob5g", + "1149ab7d5f1c82d8de53f048af8aa5c5dbf0d21da4e4780c06e54b8ee902085b" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "zkox3jrbdmbpu7j52ftcvqctjmymgp5j", + "d6aeae2dbd7fa3c1d1c62f840a5c01f8e71b64afe2bdc9c90d4087694f7d3443" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "scm5ujivfo5tt2dzurxcjf6qbme6dvol", + "81ef2beef78f46979965e5e69cd92b68ff4d2a59dbae1331c648d18b6ded1444" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "7utceuvi4eofoi2qr5vizbiv27fqewgi", + "3d0830654f9e327fd7ec6dab214050295dbf0832f493937c0c133e516dd2a95a" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "tipiheccz3kpqwmcmqdc6jwuedv4z4ip", + "941b93cd89d5271c740d1b1c870e85f32e5970f9f7b842ad99870399215a93db" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "jxz7beqjkrpd6d2fcbsxh6etf42e5jmu", + "8ca78e345da732643e3d1b077d8156ce89863c25095e4958d4ac6d1a458ae74b" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "qy5ak2wdmlepkuoygweyzbh42njy6yhc", + "f6ced988b515494d86a1069f13ae9030caeb40fe951c2460f532123c80399154" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "klvkzwpf5dzfa3s47zabngev6wehsnvw", + "c00855b5cda99639b87c3912ee9c734c0b609dfe7d2c47ea947738c32bab6f03" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "udskqrr4z7wden3yimui65ulo47j6ytf", + "aa861cfdf6001fc2da6e83eecc9ad35df424d86d71f6d73e480818942405ce4e" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4oeblhznejucmsdqpqa4uyh7txgyqxol", + "cb7807cd31fc5e0efe2acc1de1f74c7cef962bcadfc656b09ff853bc33c11bd0" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "a5mztd53ktxnhvzkr3lqaceuw2tmi3bv", + "36e5efb6b15b431b661e9e272904ab3c29ae7b87bf6250c158d545ccefc2f424" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "kavipyeuasn4om6jokka3kcdhgdtrhvi", + "bd492c078b2cdaf327148eee5b0abd5b068dbb3ffa5dae0ec5d53257f471f7f7" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "5v5c245vawyuc6urmp3roehey2kubd6h", + "0ebe5e05246c33fc8529e90e21529b29742b5dd6756dbc07534577a90394c0e6" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "whdxnb2jug463enpge2hevrjwhv7hbhg", + "9f97d3bf78b7642a775f12feb43781d46110793f58a7e69b0b68ac4fff47655c" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "6enkeu44ymdslkubguw4qyfvreg57j42", + "e7295bb4bcb11a936f39665632ce68c751c9f6cddc44904392a1b33a5290bbbe" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "rvr5ybhzcowbbjeyxlmkltdxxaua6ffh", + "c44e7fbf721383aa8ee57d2305f41377e64a42ab8e02a9d3d6fc792d9b29ad08" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "u5hxe3p62gynloaxhw2mjjgyvdgbrxvb", + "965ba5c1a42f436001162a3f3a0d1715424f2ec8f65c42d6b66efcd4f4566b77" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "vhj724hodvecmzic5us422o5gc4vlkuc", + "c8d31089d8f91718a5bde9c6b28cc67bdbadab401c8fdd07b296d588ece4ddfe" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "l2il7xee3xm5x7xpzz7mnslw7kcxcmk6", + "ef3f05d30333a39fd18714b87ee22605679f52fda97f5e592764d1591527bbf3" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4pi6zqqe2vm6ehc7qb4se3ql53m6relx", + "a4abec667660307ad5cff0a616d6651e187cc7b1386fd8cd4b6b288a01614076" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4ojfyzobwptp3numvphbxpgp3okdolur", + "a572ab6db954f4a850d1292bb1ef6d6055916784a894d149d657996fa98d0367" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "et3twemsecqryfzl23e3cmsbca534dlo", + "97f8ea17f3df3fb38904450114cbef9b4b0ea9c94da9de7a49b70b707012277a" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "adriuktssyp63nfzum5e33vpu645oq4m", + "6599ac06ade0cb3e80695f36492ea94a306f8bde0537482521510076c5981aa0" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "a4oyom2bc4go3floq7jlymc2l745w7vl", + "90b7cf4dd98e26c58578ad8604738cc32dfbb228cfb981bdfe103c99d0e7b5dd" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "nzya47loljbytn5utgbeaa2zmcvnfc6o", + "dc5dbfd9c05b43c4992bf6666638ae96cee5548921e94eb793ba85727b25ec59" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "hnnz6aop244yvwkx6vahauz3wprb26s3", + "e8518de25baff7a74bdb42193e6e4b0496e7d0688434c42ce4bdc92fe4293a09" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "fs2aukvaiwysb3ob4zosvuwnkmfwxyoq", + "0c5831932608e7b4084fc6ce60e2b67b77dab76e5515303a049d4d30cd772321" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.9" + } + ] +} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.6/gnupg.json b/share/spack/bootstrap/github-actions-v0.6/gnupg.json new file mode 100644 index 00000000000000..c6e5808dab13d4 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/gnupg.json @@ -0,0 +1,269 @@ +{ + "verified": [ + { + "binaries": [ + [ + "libgpg-error", + "lwnk6k2j2pthv4zq3bl6cu2rbr5lqkp7", + "221b34bd62482f8afa64daa95466a61300674c81ed31aebb7f870f4e516407a1" + ], + [ + "libassuan", + "gknfboyunz7tbc5j3nbdwft2s77tzmv2", + "47c742a837ff2d6e920a89a1e2556f996c3c22a1e098f9b0e0f7cc3f9e675222" + ], + [ + "libgcrypt", + "2zniebgjgx44waicsbfmh2ywz72gw2hi", + "6eaed68c849c65d3f5351b67fd8c323a51caddc52918281b71706c472f281b26" + ], + [ + "libiconv", + "l6yjt5xint3rspq7yytsl7iwvn5tuey3", + "26ceaa73955e9f335bbbfd8aafc043605475154eb98d8118992224ed6696c1ad" + ], + [ + "libksba", + "xh7k7t5lqz6vjfugrpd4pjfdsom75trx", + "e3f617fcf144639b8fb3cd1e4d32f7fcdb38d345ab26ffc920732d731b991625" + ], + [ + "npth", + "pbgogmpojgqzgpzzci7gk7hloorinxew", + "3c3b6a2f008b5eec639382e384735203675600d06b4de89d58c36428016e4465" + ], + [ + "pinentry", + "66hrxsdpjdqt6wmnpmi5mh5ifeyb7cgg", + "d9843ab0324bea08d83455b6117a6fe82a6dcaa2106ba305e72c25c3bb26a17e" + ], + [ + "zlib-ng", + "cjfe7flqc6o2bfacxxwgqx4lpgqsv55e", + "7c02ff1bbac5dc24863cea28f15d06772c5434ee99a85a31a3475ae3c4f2d4b0" + ], + [ + "gnupg", + "eoavahhxqjlexz4wr3aanix724gamayu", + "61bcb83dc3fc2ae06fde30b9f79c2596bd0457cf56b4d339c8c562a38ca1c31f" + ] + ], + "spec": "gnupg@2.4.5%apple-clang platform=darwin target=aarch64" + }, + { + "binaries": [ + [ + "libgpg-error", + "op3m3ketzr2qqzazpoe35uc3c53tceqo", + "9345e8709a34591cb8ed70441ff5b95fd0de62f5038b3ff72aa21efeea882c14" + ], + [ + "libassuan", + "x7mrkmkxj3x5mcajpk36xroktc2vqhbb", + "60a19ab82bbd3b69bcd53287621617e0223bfefa7568572e247f3dfbac863717" + ], + [ + "libgcrypt", + "at6lwhcuxttxx2erckiwee4fb7txsupd", + "88d2ff68b041ca4d3923c1d657a670115f88735ef99a48d2bb1ea47420a183c1" + ], + [ + "libiconv", + "clwajtbwgb23uzaci26bcisj64jas33d", + "d5af1715ca62225765980389e79cae4a1347bd7e8a9e0ad29f53a2ff1e3fba7a" + ], + [ + "libksba", + "x3h5xtrsmdhcv5rwsbrn6cwdt7kynxkl", + "be0748d370f38a55ccb458e43a95739b0494d1755189a87a062d99508ca4c756" + ], + [ + "npth", + "c3yv6do52jtfeqtxbcdssxslbwh2l67c", + "c19dab06efd6ef9476e299b009d41bbe0d0c3df634d4bc55db18c78f3036afde" + ], + [ + "pinentry", + "a25ckvveduyxqrrmaybwnn65dh35eusc", + "fc1af850dcc056c14aba5595ccb2d48ccc4d14ddedbc85cf20928ef2805b213e" + ], + [ + "zlib-ng", + "uum7mskvdekjxwozkmdqk3joy6hnan3g", + "de2faff7c427305a00a62d66bba39393591841044a2feb861045c7961595d0fc" + ], + [ + "gnupg", + "7bmrigo4rsorm5d6byrcgxqerxofugoj", + "3d36bce8bbd06134445aa3cefa00a80068317b6d082d2b43bb1e3be81ede5849" + ] + ], + "spec": "gnupg@2.4.5%apple-clang platform=darwin target=x86_64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "vytidi6v26yjvwdbycga2asyx5363kf3", + "8c0b786bed22505e2360fb0eaf1f38f9cdd8a96ff19a9bea84e4acbbad1e32f6" + ], + [ + "libgpg-error", + "cuagrnba4umsm33umta5rmjpkazt2i5u", + "794fed3932cee4e0b48e27cf2d8627135b88c0961730b384e10af1b484db0e6d" + ], + [ + "libassuan", + "uuxij4hqsvuv5h54iaofcr3tpv44thks", + "72c9cfccf2d01ad9fb495da573de49a08673e751ba059d20c8e519f9aa83ef20" + ], + [ + "libgcrypt", + "lfy732fms7q3j2fpvr3g2gg5lxmgs6jg", + "dae98b98735a10c8ef83fc03e0e878a157775c23d5d985266ddca6208cc988ca" + ], + [ + "libiconv", + "fcsxxmy4hiu3x6hjeh7y3mp4qxmvbcrh", + "29084a2aae8e11df683baf12203804d16aba6fd5dff02725654e6ee617bd2994" + ], + [ + "libksba", + "7kbtasg2faihsxceqpp4jpaf4ec7cgq7", + "35065817952b1114ffd9b6ccdd4095c1141eccdd481c4ac5a5f878ba0191ec33" + ], + [ + "npth", + "jsvxvvflvljwkewvxbebmoc3asos54f5", + "79b07e334e9b6d135be42a5b4cf0eb1bf5dcde98b8c3ce6c154bfa4e11abfb95" + ], + [ + "pinentry", + "erpvp4zmkqmeatet3fxwkrugwjp4nyxc", + "91fa16a16ca995ab663b1551f172e5aa91ed15853e37aa7776ce40d08a2fc3e9" + ], + [ + "zlib-ng", + "j3puqviz7nl3qr3sqwrg7vdb3i4ulqff", + "b8190c6af8fda6d5aeaff40e7d0ce11e80f412269706b68e1cf04c97f34b9e83" + ], + [ + "gnupg", + "iwnwfoopb5rtn45dbsecwoe3w6fsjv6d", + "8398592ab0812d8c76a21deca06da4277d05f4db784e129ead7535bb8988faa2" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=aarch64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "o6nx7ce6pg2fzah2fbwbpbwb6rkhdwc2", + "c942c0fb5d4ae8d875b036c1ab6bc09077dad6f2b43fe0621dee84fd47fcdec3" + ], + [ + "libgpg-error", + "pxc5a72op7zaahwquririwlea5lcowd2", + "56dc827ee7db3e1b0a0f2673165d9694d35df82b09e8984a03a21f6a275fb25c" + ], + [ + "libassuan", + "wjypew3o5cmejlrhsj24kkkh3jxrn35z", + "32f056147ca5c240ad10ffd8f36f60d84106bba46f4503a28d0649611f485381" + ], + [ + "libgcrypt", + "aaodehivfgu6ggtzf3r4vk6do5gt7qg2", + "af22cdf4b3ffca0b14c00849a2ad35e2f5c60024214ccc1f733481c7d1535d13" + ], + [ + "libiconv", + "bv2plgtibp6l6g5eqwupejoaihwjqk3z", + "c43ae303cbbc769ea4eb9740728970726fa87fe4e482ca7feb7b909ecba217ab" + ], + [ + "libksba", + "4zm4wcxegjycsez4jxgfdeyyne6xqb4t", + "2623edd57b13b98f83b7bf6a3419bbd29c7574bb72a99c948ff32d9a6b95d6f8" + ], + [ + "npth", + "4mdvxsguwekd4nus4lczdmcdwo4xpm7h", + "1c150c7e99a06cfad733b60c776a06c537ce925234cc567657f3ca79bf668010" + ], + [ + "pinentry", + "jli5etdru7erjbneygpiinlgbu6hqyiw", + "be2f63bb8a6d87a2d6e65699a688200939406f42b93a74e55ae4437b9936d75b" + ], + [ + "zlib-ng", + "olulf6vptgcleno3kfc3qbfqss4p6dcv", + "248e8295fc8af4ced8383846c292c2298248ee7afd20a36195891cfdc3d75363" + ], + [ + "gnupg", + "5ntq7qgiciy4lwhhqekglg7c7qjlfum6", + "cc7e4833af58913fa4ab2b7ce3fdb86d214594d54327c7e4eb4ca3f0784c046f" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=ppc64le" + }, + { + "binaries": [ + [ + "gcc-runtime", + "7rv2b76tgxqmkwtmngiamwac632cjjba", + "b76a4eaef54b24d0ea9b8dfa9392f7ab519f918ae7e1a8bb919539d9adeddbcb" + ], + [ + "libgpg-error", + "t6pohmnim5vwnysjzc6c2x5xrq34arav", + "89976fae1b4d47325d03e6a4b37872b141ac2da77dc8a531afc7d207d86b3dc9" + ], + [ + "libassuan", + "urbnck3somrr5pmrhf4ifkfxcxgzrq4f", + "8feaab6bb0802d799e8e572ea7c903f5827a8af807010e288bbe043ec0b88779" + ], + [ + "libgcrypt", + "52zd4jcxeilrmlu4tugwkxqd6h6znbj6", + "50bb10f9e0317637dcb6f17de59c8c644d259ac15529c8355b9477e323e45cc6" + ], + [ + "libiconv", + "dy5pmiqcwlvb6yzozs5ajqtox3cfygif", + "385fa3a46f1c588aab24bcea3dfc5221dfa143808a2a731aef87a923c2cf05df" + ], + [ + "libksba", + "dls4psvcy54plnficveje3pisbznkznt", + "b565c5439feefe4e40694dfa2f98332a3f16f00d57bb355ad9ffde7c911b23de" + ], + [ + "npth", + "mldfiqqsswoo4l3ln7vkwpekgji4zwl4", + "cb4a08118709bd4cd4f0833f64e143914f0b81e8ae24c0d8a1bdf3a58a768b59" + ], + [ + "pinentry", + "2ayqizbaee43awjxjdpzmrangyklffp2", + "8fe10eddb2bf9cdda7329d098c42c2443d31b041416192eec5fec547d3cb8b84" + ], + [ + "zlib-ng", + "qodit36c7pa2afqavjguuuyxmur4tels", + "d90039074ce13e7ba1708d645bc48a832af78cfb5a197818ff53a45cec628855" + ], + [ + "gnupg", + "ielaznyuce3qu77r34nwnfjqkk5p3fdz", + "418b582f84547504b6464913fba5ba196482e86258081bdeb21af519fe8a2933" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=x86_64" + } + ] +} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/metadata.yaml b/share/spack/bootstrap/github-actions-v0.6/metadata.yaml similarity index 61% rename from share/spack/bootstrap/github-actions-v0.4/metadata.yaml rename to share/spack/bootstrap/github-actions-v0.6/metadata.yaml index 0b483b547b2e86..ca2e9db88f14d8 100644 --- a/share/spack/bootstrap/github-actions-v0.4/metadata.yaml +++ b/share/spack/bootstrap/github-actions-v0.6/metadata.yaml @@ -1,8 +1,8 @@ type: buildcache description: | - Buildcache generated from a public workflow using Github Actions. + Buildcache generated from a public workflow using GitHub Actions hosted on GitHub Packages. The sha256 checksum of binaries is checked before installation. info: - url: https://mirror.spack.io/bootstrap/github-actions/v0.4 + url: oci://ghcr.io/spack/bootstrap-buildcache-v1 homepage: https://github.com/spack/spack-bootstrap-mirrors releases: https://github.com/spack/spack-bootstrap-mirrors/releases diff --git a/share/spack/bootstrap/github-actions-v0.6/patchelf.json b/share/spack/bootstrap/github-actions-v0.6/patchelf.json new file mode 100644 index 00000000000000..4d61766f236739 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/patchelf.json @@ -0,0 +1,49 @@ +{ + "verified": [ + { + "binaries": [ + [ + "gcc-runtime", + "vytidi6v26yjvwdbycga2asyx5363kf3", + "8c0b786bed22505e2360fb0eaf1f38f9cdd8a96ff19a9bea84e4acbbad1e32f6" + ], + [ + "patchelf", + "mabcw7ya2bjav54wiknzyoftwtkkx2s3", + "820b8013b0b918ad85caa953740497e6c31c09d812bd34d087fc57128bfbdacb" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=aarch64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "o6nx7ce6pg2fzah2fbwbpbwb6rkhdwc2", + "c942c0fb5d4ae8d875b036c1ab6bc09077dad6f2b43fe0621dee84fd47fcdec3" + ], + [ + "patchelf", + "hz6j4rmzm65wov77f7t335tbywy5ebnq", + "1569df037ea1ea316a50e89f5a0cafa0ce8e20629bbd07fcc3846d9fecd2451c" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=ppc64le" + }, + { + "binaries": [ + [ + "gcc-runtime", + "7rv2b76tgxqmkwtmngiamwac632cjjba", + "b76a4eaef54b24d0ea9b8dfa9392f7ab519f918ae7e1a8bb919539d9adeddbcb" + ], + [ + "patchelf", + "o6soxsz4hwdhzzbu4j56zwcclqhram25", + "79dfb7064e7993a97474c5f6b7560254fe19465a6c4cfc44569852e5a6ab542b" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=x86_64" + } + ] +} \ No newline at end of file From 61cbfc1da060c078e7219fbd61ff674eb36969ae Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 24 Oct 2024 08:56:42 +0200 Subject: [PATCH 130/615] bootstrap: remove all system gnupg/patchelf executables (#47165) --- .github/workflows/bootstrap.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index da7bf49fadf2aa..13dbd2d99853e6 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -83,12 +83,12 @@ jobs: steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree gawk + - name: Remove system executables run: | - brew install tree gawk - sudo rm -rf $(command -v gpg gpg2) - - name: Setup Ubuntu - if: ${{ matrix.runner == 'ubuntu-latest' }} - run: sudo rm -rf $(command -v gpg gpg2 patchelf) + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) + done - name: Checkout uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: @@ -110,14 +110,12 @@ jobs: steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree + - name: Remove system executables run: | - brew install tree - # Remove GnuPG since we want to bootstrap it - sudo rm -rf /usr/local/bin/gpg - - name: Setup Ubuntu - if: ${{ matrix.runner == 'ubuntu-latest' }} - run: | - sudo rm -rf $(which gpg) $(which gpg2) $(which patchelf) + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) + done - name: Checkout uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: From e0eea48ccff37023e2d9e48067baece8dee80916 Mon Sep 17 00:00:00 2001 From: Kyle Knoepfel Date: Thu, 24 Oct 2024 11:11:43 +0200 Subject: [PATCH 131/615] Restore bold uncolored font face (#47108) Commit aa0825d642cfa285f5f62761a0e23dc1e511d056 accidentally added a semicolon to the ANSI escape sequence even if the color code was `None` or unknown, breaking the bold, uncolored font-face. This PR restores the old behavior. --------- Co-authored-by: Todd Gamblin --- lib/spack/llnl/util/tty/color.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index 710196783d57e6..51a5a1b5b1e1f6 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -263,7 +263,9 @@ def match_to_ansi(match): f"Incomplete color format: '{match.group(0)}' in '{match.string}'" ) - ansi_code = _escape(f"{styles[style]};{colors.get(color_code, '')}", color, enclose, zsh) + color_number = colors.get(color_code, "") + semi = ";" if color_number else "" + ansi_code = _escape(f"{styles[style]}{semi}{color_number}", color, enclose, zsh) if text: return f"{ansi_code}{text}{_escape(0, color, enclose, zsh)}" else: From 8a75cdad9ad7744527afba19da791286d82531b3 Mon Sep 17 00:00:00 2001 From: Dr Marco Claudio De La Pierre Date: Thu, 24 Oct 2024 18:04:29 +0800 Subject: [PATCH 132/615] supermagic: new package (#47176) --- .../builtin/packages/supermagic/package.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/supermagic/package.py diff --git a/var/spack/repos/builtin/packages/supermagic/package.py b/var/spack/repos/builtin/packages/supermagic/package.py new file mode 100644 index 00000000000000..23baff3c02b579 --- /dev/null +++ b/var/spack/repos/builtin/packages/supermagic/package.py @@ -0,0 +1,34 @@ +# 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) + +from spack.package import * + + +class Supermagic(AutotoolsPackage): + """Supermagic is a very simple MPI sanity code. Nothing more, nothing less.""" + + homepage = "https://hpc.github.io/supermagic" + url = "https://hpc.github.io/supermagic/dists/supermagic-1.2.tar.gz" + git = "https://github.com/hpc/supermagic.git" + + maintainers("marcodelapierre") + + version("master", branch="master") + version("1.2", sha256="f8f6e0f74a58400d8d3c6b95c4b943aa8608e15a318fcfe12fc9abb008aed734") + + depends_on("mpi") + + depends_on("autoconf", when="@master", type="build") + depends_on("automake", when="@master", type="build") + depends_on("libtool", when="@master", type="build") + + @when("@master") + def autoreconf(self, spec, prefix): + bash = which("bash") + bash("./autogen") + + def configure_args(self): + config_args = ["CC={0}".format(self.spec["mpi"].mpicc)] + return config_args From c52c0a482f71ab9a7561c46b013d31f911c9c970 Mon Sep 17 00:00:00 2001 From: Laura Weber Date: Thu, 24 Oct 2024 03:08:50 -0700 Subject: [PATCH 133/615] neartree: added version 5.1.1, added Makefile patches to fix libtool error (#47155) --- .../packages/neartree/Makefile-3.1.patch | 23 +++++++++++++++++++ .../builtin/packages/neartree/Makefile.patch | 23 +++++++++++++++++++ .../builtin/packages/neartree/package.py | 13 ++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch create mode 100644 var/spack/repos/builtin/packages/neartree/Makefile.patch diff --git a/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch b/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch new file mode 100644 index 00000000000000..722eea809eb37d --- /dev/null +++ b/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch @@ -0,0 +1,23 @@ +--- a/Makefile ++++ b/Makefile +@@ -114,13 +114,13 @@ CPPLIBRARIES = -lm + # + CLIBRARIES = $(CVECTOR_LIBLOC) -lCVector -lm + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/neartree/Makefile.patch b/var/spack/repos/builtin/packages/neartree/Makefile.patch new file mode 100644 index 00000000000000..77023f687e856e --- /dev/null +++ b/var/spack/repos/builtin/packages/neartree/Makefile.patch @@ -0,0 +1,23 @@ +--- a/Makefile ++++ b/Makefile +@@ -117,13 +117,13 @@ CPPLIBRARIES = -lm + # + CLIBRARIES = $(CVECTOR_LIBLOC) -lCVector -lm + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/neartree/package.py b/var/spack/repos/builtin/packages/neartree/package.py index e2cb4e3716e132..89fb15fe2a56d9 100644 --- a/var/spack/repos/builtin/packages/neartree/package.py +++ b/var/spack/repos/builtin/packages/neartree/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -11,10 +13,10 @@ class Neartree(MakefilePackage): points in spaces of arbitrary dimensions.""" homepage = "https://neartree.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/neartree/neartree/NearTree-3.1/NearTree-3.1.tar.gz" license("LGPL-2.1-or-later") + version("5.1.1", sha256="b951eb23bb4235ada82cef85b9f129bf74a14e45d992097431e7bfb6bdca6642") version("3.1", sha256="07b668516f15a7c13c219fd005b14e73bced5dc6b23857edcc24d3e5cf0d3be3") depends_on("c", type="build") # generated @@ -23,6 +25,15 @@ class Neartree(MakefilePackage): depends_on("libtool", type="build") depends_on("cvector") + patch("Makefile.patch", when="@5.1.1") + patch("Makefile-3.1.patch", when="@3.1") + + def url_for_version(self, version): + pattern = re.compile(r"^[0-9]+\.[0-9]+") + full_vers = str(version) + cropped_vers = pattern.search(full_vers).group() + return f"https://downloads.sourceforge.net/project/neartree/neartree/NearTree-{cropped_vers}/NearTree-{full_vers}.tar.gz" + def edit(self, spec, prefix): mf = FileFilter("Makefile") mf.filter(r"^CC.+", "CC = {0}".format(spack_cc)) From cdde7c3ccf61de94d1770dcb8c0b0e09bbd82732 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 24 Oct 2024 03:38:56 -0700 Subject: [PATCH 134/615] py-braceexpand: new package (#47186) --- .../packages/py-braceexpand/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-braceexpand/package.py diff --git a/var/spack/repos/builtin/packages/py-braceexpand/package.py b/var/spack/repos/builtin/packages/py-braceexpand/package.py new file mode 100644 index 00000000000000..6da0bfbfc7ccb2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-braceexpand/package.py @@ -0,0 +1,28 @@ +# 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) +from spack.package import * + + +class PyBraceexpand(PythonPackage): + """Bash-style brace expansion""" + + homepage = "https://github.com/trendels/braceexpand" + url = "https://github.com/trendels/braceexpand/archive/refs/tags/v0.1.7.tar.gz" + + license("MIT") + + version("0.1.7", sha256="72eb91b62b2fa2dd7f6044b7a4b46a3761ac61fe5945a2a86a4538447ab47e05") + + # Requires py-typing with python@:3.4 but Spack's minimum python is higher + depends_on("py-setuptools") + + @run_after("install") + def copy_test_files(self): + cache_extra_test_sources(self, "test_braceexpand.py") + + def test_unittests(self): + """run the unit tests""" + with working_dir(self.test_suite.current_test_cache_dir): + python("test_braceexpand.py") From f09ce00fe1e034ca17d38672f6c3d9c880ffac3b Mon Sep 17 00:00:00 2001 From: Thomas-Ulrich Date: Thu, 24 Oct 2024 14:36:37 +0200 Subject: [PATCH 135/615] seissol: new package (#41176) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/easi/package.py | 1 + .../repos/builtin/packages/libxsmm/package.py | 6 +- .../packages/py-chainforgecodegen/package.py | 30 ++ .../builtin/packages/py-gemmforge/package.py | 27 ++ .../repos/builtin/packages/seissol/package.py | 351 ++++++++++++++++++ 5 files changed, 414 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-chainforgecodegen/package.py create mode 100644 var/spack/repos/builtin/packages/py-gemmforge/package.py create mode 100644 var/spack/repos/builtin/packages/seissol/package.py diff --git a/var/spack/repos/builtin/packages/easi/package.py b/var/spack/repos/builtin/packages/easi/package.py index e13180b6846df6..fbe2163509121f 100644 --- a/var/spack/repos/builtin/packages/easi/package.py +++ b/var/spack/repos/builtin/packages/easi/package.py @@ -32,6 +32,7 @@ class Easi(CMakePackage): variant("python", default=True, description="Install python bindings") extends("python", when="+python") + depends_on("mpi", when="+python") variant("asagi", default=True, description="build with ASAGI support") variant( diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index 16fb0dbeffdbdf..14e287a918547a 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -28,7 +28,11 @@ class Libxsmm(MakefilePackage): version("main-2023-11", commit="0d9be905527ba575c14ca5d3b4c9673916c868b2") version("main", branch="main") version("1.17-cp2k", commit="6f883620f58afdeebab28039fc9cf580e76a5ec6") - version("1.17", sha256="8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92") + version( + "1.17", + sha256="8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92", + preferred=True, + ) version("1.16.3", sha256="e491ccadebc5cdcd1fc08b5b4509a0aba4e2c096f53d7880062a66b82a0baf84") version("1.16.2", sha256="bdc7554b56b9e0a380fc9c7b4f4394b41be863344858bc633bc9c25835c4c64e") version("1.16.1", sha256="93dc7a3ec40401988729ddb2c6ea2294911261f7e6cd979cf061b5c3691d729d") diff --git a/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py new file mode 100644 index 00000000000000..2734f053d39ee2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py @@ -0,0 +1,30 @@ +# 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) + + +from spack.package import * + + +class PyChainforgecodegen(PythonPackage): + """A code generator that fuses subsequent batched matrix multiplications (GEMMs) + into a single GPU kernel, holding intermediate results in shared memory as long as necessary. + """ + + git = "https://github.com/SeisSol/chainforge.git" + + maintainers("davschneller", "Thomas-Ulrich") + license("BSD-3-Clause") + + version("master", branch="master") + depends_on("py-numpy") + depends_on("py-graphviz", type=("build", "run")) + depends_on("py-jinja2", type=("build", "run")) + depends_on("py-lark", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-setuptools", type="build") + + def setup_run_environment(self, env): + env.prepend_path("PATH", self.spec.prefix) + env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-gemmforge/package.py b/var/spack/repos/builtin/packages/py-gemmforge/package.py new file mode 100644 index 00000000000000..d368ca717b2980 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-gemmforge/package.py @@ -0,0 +1,27 @@ +# 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) + + +from spack.package import * + + +class PyGemmforge(PythonPackage): + """GPU-GEMM generator for the Discontinuous Galerkin method""" + + homepage = "https://github.com/SeisSol/gemmforge/blob/master/README.md" + git = "https://github.com/SeisSol/gemmforge.git" + + maintainers("davschneller", "Thomas-Ulrich") + license("BSD-3-Clause") + + version("master", branch="master") + depends_on("py-numpy") + depends_on("py-jinja2", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-setuptools", type="build") + + def setup_run_environment(self, env): + env.prepend_path("PATH", self.spec.prefix) + env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/seissol/package.py b/var/spack/repos/builtin/packages/seissol/package.py new file mode 100644 index 00000000000000..1cd4f787fcf82a --- /dev/null +++ b/var/spack/repos/builtin/packages/seissol/package.py @@ -0,0 +1,351 @@ +# 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) + + +from spack.package import * + + +class Seissol(CMakePackage, CudaPackage, ROCmPackage): + """Seissol - A scientific software for the numerical simulation + of seismic wave phenomena and earthquake dynamics. + """ + + homepage = "http://www.seissol.org" + git = "https://github.com/SeisSol/SeisSol.git" + version("master", branch="master", submodules=True) + # we cannot use the tar.gz file because it does not contains submodules + version( + "1.2.0", tag="v1.2.0", commit="2057e6e81965e0789128c6d177592800bcf956e1", submodules=True + ) + version( + "1.1.4", tag="v1.1.4", commit="6d301757378ad8446173e0a12c095a695a708aaf", submodules=True + ) + version( + "1.1.3", tag="v1.1.3", commit="01ae1b127fcc6f766b819d2e797df6a3547d730a", submodules=True + ) + version( + "1.1.2", tag="v1.1.2", commit="71002c1c1498ebd6f50a954731da68fa4f9d436b", submodules=True + ) + + maintainers("Thomas-Ulrich", "davschneller", "vikaskurapati") + + variant("asagi", default=True, description="Use ASAGI for material input") + variant( + "convergence_order", + default="4", + description="polynomial degree plus one", + values=(str(v) for v in range(2, 9)), + multi=False, + ) + variant( + "precision", + default="double", + description="float numerical precision", + values=("single", "double"), + multi=False, + ) + variant( + "dr_quad_rule", + default="stroud", + description="dynamic rupture quadrature rule", + values=("stroud", "dunavant"), + multi=False, + ) + variant( + "plasticity_method", + default="nb", + description="Plasticity method", + values=("nb", "ib"), + multi=False, + ) + variant( + "equations", + default="elastic", + description="equation set used", + values=("elastic", "anisotropic", "viscoelastic2", "poroelastic"), + multi=False, + ) + variant( + "number_of_mechanisms", default="3", description="number of mechanisms for viscoelasticity" + ) + variant("netcdf", default=True, description="Enable Netcdf") + variant( + "graph_partitioning_libs", + default="parmetis", + description="graph partitioning library for mesh partitioning", + values=("none", "parmetis", "ptscotch", "parhip"), + multi=True, + ) + + # GPU options + variant("intel_gpu", default=False, description="Compile for Intel GPUs") + variant( + "intel_gpu_arch", + default="none", + values=("none", "bdw", "skl", "pvc"), + description="The Intel GPU to compile for", + when="+intel_gpu", + ) + + forwarded_variants = ["cuda", "intel_gpu", "rocm"] + for v in forwarded_variants: + variant( + "sycl_backend", + default="acpp", + description="SYCL backend to use for DR and point sources", + values=("acpp", "oneapi"), + when=f"+{v}", + ) + variant( + "sycl_gemm", + default=False, + description="Use SYCL also for the wave propagation part (default for Intel GPUs)", + when=f"+{v}", + ) + + requires( + "-cuda -rocm -intel_gpu", + "+cuda", + "+rocm", + "+intel_gpu", + policy="one_of", + msg="You may either compile for one GPU backend, or for CPU.", + ) + + requires("%oneapi", when="sycl_backend=oneapi") + + depends_on("hipsycl@0.9.3: +cuda", when="+cuda sycl_backend=acpp") + + # TODO: this one needs to be +rocm as well--but that's not implemented yet + depends_on("hipsycl@develop", when="+rocm sycl_backend=acpp") + + # TODO: extend as soon as level zero is available + depends_on("hipsycl@develop", when="+intel_gpu sycl_backend=acpp") + + # TODO: once adaptivecpp supports NVHPC, forward that (SYCL_USE_NVHPC) + + # GPU architecture requirements + conflicts( + "cuda_arch=none", + when="+cuda", + msg="A value for cuda_arch must be specified. Add cuda_arch=XX", + ) + + conflicts( + "amdgpu_target=none", + when="+rocm", + msg="A value for amdgpu_arch must be specified. Add amdgpu_arch=XX", + ) + + conflicts( + "intel_gpu_arch=none", + when="+intel_gpu", + msg="A value for intel_gpu_arch must be specified. Add intel_gpu_arch=XX", + ) + + variant( + "gemm_tools_list", + default="LIBXSMM,PSpaMM", + description="gemm toolkit(s) for the (CPU) code generator", + values=("LIBXSMM", "MKL", "OpenBLAS", "BLIS", "PSpaMM", "Eigen", "LIBXSMM_JIT"), + multi=True, + ) + + variant("memkind", default=True, description="Use memkind library for hbw memory support") + + depends_on("mpi") + + with when("+cuda"): + for var in ["openmpi", "mpich", "mvapich", "mvapich2", "mvapich2-gdr"]: + depends_on(f"{var} +cuda", when=f"^[virtuals=mpi] {var}") + + with when("+rocm"): + for var in ["mpich", "mvapich2-gdr"]: + depends_on(f"{var} +rocm", when=f"^[virtuals=mpi] {var}") + + # with cuda 12 and llvm 14:15, we have the issue: "error: no template named 'texture" + # https://github.com/llvm/llvm-project/issues/61340 + conflicts("cuda@12", when="+cuda ^llvm@14:15") + depends_on("cuda@11:", when="+cuda") + depends_on("hip", when="+rocm") + + # graph partitioning + with when("graph_partitioning_libs=parmetis"): + depends_on("parmetis +int64 +shared") + depends_on("metis +int64 +shared") + + depends_on( + "scotch +mpi +mpi_thread +shared +threads +int64", when="graph_partitioning_libs=ptscotch" + ) + depends_on("kahip", when="graph_partitioning_libs=parhip") + + depends_on("hdf5 +shared +threadsafe +hl +mpi") + + depends_on("netcdf-c@4.6: +shared +mpi", when="+netcdf") + + depends_on("asagi +mpi +mpi3", when="+asagi") + + depends_on("easi ~asagi jit=impalajit,lua", when="~asagi") + depends_on("easi +asagi jit=impalajit,lua", when="+asagi") + + depends_on("intel-mkl threads=none", when="gemm_tools_list=MKL") + depends_on("blis threads=none", when="gemm_tools_list=BLIS") + depends_on("openblas threads=none", when="gemm_tools_list=OpenBLAS") + depends_on("libxsmm@main", when="gemm_tools_list=LIBXSMM_JIT") + + conflicts("gemm_tools_list=LIBXSMM", when="gemm_tools_list=LIBXSMM_JIT") + + depends_on("memkind", when="+memkind target=x86_64:") + + depends_on("yaml-cpp@0.6.2") + depends_on("eigen@3.4.0") + + # build dependencies (code generation) + with default_args(type="build"): + # https://seissol.readthedocs.io/en/latest/installing-dependencies.html + depends_on("cmake@3.20:") + depends_on("python@3.9:") + depends_on("py-setuptools") + depends_on("py-numpy@1.12:") + depends_on("py-scipy") + depends_on("py-matplotlib") + depends_on("py-pspamm", when="gemm_tools_list=PSpaMM") + + forwarded_variants = ["cuda", "intel_gpu", "rocm"] + for v in forwarded_variants: + depends_on("py-gemmforge", when=f"+{v}") + depends_on("py-chainforgecodegen", when=f"+{v}") + + depends_on("libxsmm@=1.17 +generator", when="gemm_tools_list=LIBXSMM target=x86_64:") + + def cmake_args(self): + args = [ + "-DMPI=ON", + self.define_from_variant("ASAGI", "asagi"), + self.define_from_variant("PRECISION", "precision"), + self.define_from_variant("PLASTICITY_METHOD", "plasticity_method"), + self.define_from_variant("DR_QUAD_RULE", "dr_quad_rule"), + self.define_from_variant("ORDER", "convergence_order"), + self.define_from_variant("EQUATIONS", "equations"), + self.define_from_variant("NETCDF", "netcdf"), + ] + + gemm_tools_list = ",".join(self.spec.variants["gemm_tools_list"].value) + args.append(f"-DGEMM_TOOLS_LIST={gemm_tools_list}") + + graph_partitioning_libs = ",".join(self.spec.variants["graph_partitioning_libs"].value) + args.append(f"-DGRAPH_PARTITIONING_LIBS={graph_partitioning_libs}") + + if self.spec.variants["equations"].value != "viscoelastic2": + args.append("-DNUMBER_OF_MECHANISMS=0") + else: + args.append(self.define_from_variant("NUMBER_OF_MECHANISMS", "number_of_mechanisms")) + + with_gpu = ( + self.spec.satisfies("+cuda") + or self.spec.satisfies("+rocm") + or self.spec.satisfies("+intel_gpu") + ) + + if with_gpu: + # Nvidia GPUs + if self.spec.satisfies("+cuda"): + cuda_arch = self.spec.variants["cuda_arch"].value[0] + args.append(f"-DDEVICE_ARCH=sm_{cuda_arch}") + args.append("-DUSE_GRAPH_CAPTURING=ON -DENABLE_PROFILING_MARKERS=ON") + if self.spec.satisfies("~sycl_gemm"): + args.append("-DDEVICE_BACKEND=cuda") + + # ROCm/AMD GPUs + if self.spec.satisfies("+rocm"): + amdgpu_target = self.spec.variants["amdgpu_target"].value[0] + args.append(f"-DDEVICE_ARCH={amdgpu_target}") + args.append("-DENABLE_PROFILING_MARKERS=ON") + + if self.spec.satisfies("+rocm@:5.6"): + args.append("-DUSE_GRAPH_CAPTURING=OFF") + else: + args.append("-DUSE_GRAPH_CAPTURING=ON") + + if self.spec.satisfies("~sycl_gemm"): + args.append("-DDEVICE_BACKEND=hip") + + # Intel GPUs + if self.spec.satisfies("+intel_gpu"): + assert self.spec.variants["intel_gpu_arch"].value != "none" + intel_gpu_arch = self.spec.variants["intel_gpu_arch"].value + if self.spec.satisfies("@:1.1.3"): + args.append("-DUSE_GRAPH_CAPTURING=OFF") + else: + args.append("-DUSE_GRAPH_CAPTURING=ON") + args.append(f"-DDEVICE_ARCH={intel_gpu_arch}") + + # SYCL + sycl_backends = {"acpp": "hipsycl", "oneapi": "oneapi"} + syclcc_backends = {"acpp": "hipsycl", "oneapi": "dpcpp"} + + sycl_backend = self.spec.variants["sycl_backend"].value + args.append(f"-DSYCLCC={syclcc_backends[sycl_backend]}") + if self.spec.satisfies("+sycl_gemm"): + args.append(f"-DDEVICE_BACKEND={sycl_backends[sycl_backend]}") + + # CPU arch + + # cf. https://spack.readthedocs.io/en/latest/basic_usage.html#support-for-specific-microarchitectures + + # basic family matching + hostarch = "noarch" + if str(self.spec.target) == "aarch64": + hostarch = "neon" + if str(self.spec.target) == "x86_64": + # pure x86_64v1 doesn't support anything above SSE3 + hostarch = "noarch" + if str(self.spec.target) == "x86_64_v2": + # AVX is only required for x86_64v3 and upwards + hostarch = "wsm" + if str(self.spec.target) == "x86_64_v3": + hostarch = "hsw" + if str(self.spec.target) == "x86_64_v4": + hostarch = "skx" + + # specific architecture matching + if self.spec.target >= "westmere": + hostarch = "wsm" + if self.spec.target >= "sandybridge": + hostarch = "snb" + if self.spec.target >= "haswell": + hostarch = "hsw" + if self.spec.target >= "mic_knl": + hostarch = "knl" + if self.spec.target >= "skylake_avx512": + hostarch = "skx" + if self.spec.target >= "zen": + hostarch = "naples" + if self.spec.target >= "zen2": + hostarch = "rome" + if self.spec.target >= "zen3": + hostarch = "milan" + if self.spec.target >= "zen4": + hostarch = "bergamo" + if self.spec.target >= "thunderx2": + hostarch = "thunderx2t99" + if self.spec.target >= "power9": + hostarch = "power9" + if self.spec.target >= "m1": + hostarch = "apple-m1" + if self.spec.target >= "m2": + hostarch = "apple-m2" + if self.spec.target >= "a64fx": + hostarch = "a64fx" + + args.append(f"-DHOST_ARCH={hostarch}") + + args.append(self.define("PYTHON_EXECUTABLE", self.spec["python"].command.path)) + + return args + + def setup_run_environment(self, env): + # for seissol-launch + env.prepend_path("PATH", self.prefix.share) From 3804d128e794a334980036e81204b4aa2b0d210a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 24 Oct 2024 20:08:18 +0200 Subject: [PATCH 136/615] py-lightning-uq-box: add new package (#47132) --- .../builtin/packages/py-asdfghjkl/package.py | 24 ++++++++++ .../py-backpack-for-pytorch/package.py | 27 +++++++++++ .../py-curvlinops-for-pytorch/package.py | 29 ++++++++++++ .../builtin/packages/py-einconv/package.py | 25 ++++++++++ .../packages/py-ema-pytorch/package.py | 2 + .../builtin/packages/py-gpytorch/package.py | 44 ++++++++++------- .../repos/builtin/packages/py-h5py/package.py | 12 +++-- .../builtin/packages/py-jaxtyping/package.py | 13 ++++- .../packages/py-laplace-torch/package.py | 31 ++++++++++++ .../packages/py-lightning-uq-box/package.py | 47 +++++++++++++++++++ .../packages/py-linear-operator/package.py | 3 ++ .../repos/builtin/packages/py-timm/package.py | 40 ++++++++-------- .../builtin/packages/py-torchseg/package.py | 26 ++++++++++ .../py-uncertainty-toolbox/package.py | 29 ++++++++++++ .../builtin/packages/py-unfoldnd/package.py | 25 ++++++++++ 15 files changed, 334 insertions(+), 43 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-asdfghjkl/package.py create mode 100644 var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py create mode 100644 var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py create mode 100644 var/spack/repos/builtin/packages/py-einconv/package.py create mode 100644 var/spack/repos/builtin/packages/py-laplace-torch/package.py create mode 100644 var/spack/repos/builtin/packages/py-lightning-uq-box/package.py create mode 100644 var/spack/repos/builtin/packages/py-torchseg/package.py create mode 100644 var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py create mode 100644 var/spack/repos/builtin/packages/py-unfoldnd/package.py diff --git a/var/spack/repos/builtin/packages/py-asdfghjkl/package.py b/var/spack/repos/builtin/packages/py-asdfghjkl/package.py new file mode 100644 index 00000000000000..c9aab6fa6c8fac --- /dev/null +++ b/var/spack/repos/builtin/packages/py-asdfghjkl/package.py @@ -0,0 +1,24 @@ +# 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) + +from spack.package import * + + +class PyAsdfghjkl(PythonPackage): + """ASDL: Automatic Second-order Differentiation (for Fisher, Gradient covariance, Hessian, + Jacobian, and Kernel) Library.""" + + homepage = "https://github.com/kazukiosawa/asdl" + pypi = "asdfghjkl/asdfghjkl-0.1a4.tar.gz" + + license("MIT") + + version("0.1a4", sha256="a934411a0ffdee6fcdccb19672196498ea6a8e55e3e67abbe67200c84b46ddee") + + depends_on("py-setuptools@42:") + + with default_args(type=("build", "run")): + depends_on("py-torch@1.13:") + depends_on("py-numpy") diff --git a/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py b/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py new file mode 100644 index 00000000000000..c8579d87ac7e2a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py @@ -0,0 +1,27 @@ +# 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) + +from spack.package import * + + +class PyBackpackForPytorch(PythonPackage): + """BackPACK: Packing more into backprop.""" + + homepage = "https://github.com/f-dangel/backpack" + pypi = "backpack-for-pytorch/backpack-for-pytorch-1.6.0.tar.gz" + + license("MIT") + + version("1.6.0", sha256="af6495b71bacf82a1c7cab01aa85bebabccfe74d87d89f108ea72a4a0d384de3") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch@1.9:") + depends_on("py-torchvision@0.7:") + depends_on("py-einops@0.3:0") + depends_on("py-unfoldnd@0.2:0") diff --git a/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py b/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py new file mode 100644 index 00000000000000..8197e8291e8936 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class PyCurvlinopsForPytorch(PythonPackage): + """scipy Linear operators for curvature matrices in PyTorch.""" + + homepage = "https://github.com/f-dangel/curvlinops" + pypi = "curvlinops_for_pytorch/curvlinops_for_pytorch-2.0.0.tar.gz" + + license("MIT") + + version("2.0.0", sha256="01f9925db9454fc9b0a31c7b83fc8ec2534c2eb12b7de7825a5298fc14e460e7") + + with default_args(type="build"): + depends_on("py-setuptools@61:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-backpack-for-pytorch@1.6:1") + depends_on("py-torch@2:") + depends_on("py-scipy@1.7.1:1") + depends_on("py-tqdm@4.61:4") + depends_on("py-einops") + depends_on("py-einconv") diff --git a/var/spack/repos/builtin/packages/py-einconv/package.py b/var/spack/repos/builtin/packages/py-einconv/package.py new file mode 100644 index 00000000000000..6a6c23dacd366d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-einconv/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class PyEinconv(PythonPackage): + """Convolutions as tensor contractions (einsums) for PyTorch.""" + + homepage = "https://github.com/f-dangel/einconv" + pypi = "einconv/einconv-0.1.0.tar.gz" + + license("MIT") + + version("0.1.0", sha256="6b103881b1268e43d581f285da4fa72b073c95f31b92575133bafed9929b6d98") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch") + depends_on("py-einops") diff --git a/var/spack/repos/builtin/packages/py-ema-pytorch/package.py b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py index 00b8d48bde2bd8..dadf3aaecf5bcd 100644 --- a/var/spack/repos/builtin/packages/py-ema-pytorch/package.py +++ b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py @@ -16,7 +16,9 @@ class PyEmaPytorch(PythonPackage): license("MIT", checked_by="alex391") + version("0.7.3", sha256="de640f1d1a054c79607aebfcfd4b8dfff1fba1110bf0c8f7d37517637450938a") version("0.5.1", sha256="e825212a44e8faae5d2cf2a1349961c4416cba0496ffa64d37718d8b06f206b2") depends_on("py-setuptools", type="build") + depends_on("py-torch@2:", when="@0.7:", type=("build", "run")) depends_on("py-torch@1.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-gpytorch/package.py b/var/spack/repos/builtin/packages/py-gpytorch/package.py index c4a98153f60582..a8bdb28538737c 100644 --- a/var/spack/repos/builtin/packages/py-gpytorch/package.py +++ b/var/spack/repos/builtin/packages/py-gpytorch/package.py @@ -19,6 +19,7 @@ class PyGpytorch(PythonPackage): license("MIT") + version("1.13", sha256="f4a488633a2a7a4ab37d12553d1d1dd39690043dbceef14ca428b7d5f89f73ba") version("1.10", sha256="6dc978ab9fbf220a845a4f1ea13104180fc50e6934081f421b37f6120afb7f18") version("1.9.1", sha256="0bdbba6f6d5957a0f43ef6dc7fec39c47e8a55f632ca33760c6189f259b3ccc3") version("1.9.0", sha256="a0608184c18a1f518d6a102473427abf00f5351421e12a934530953f6887b34b") @@ -30,21 +31,28 @@ class PyGpytorch(PythonPackage): version("1.2.0", sha256="fcb216e0c1f128a41c91065766508e91e487d6ffadf212a51677d8014aefca84") version("1.1.1", sha256="76bd455db2f17af5425f73acfaa6d61b8adb1f07ad4881c0fa22673f84fb571a") - depends_on("python@3.8:", when="@1.9:", type=("build", "run")) - depends_on("python@3.7:", when="@1.7:", type=("build", "run")) - depends_on("python@3.6:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-setuptools-scm", when="@1.9:", type="build") - depends_on("py-torch@1.11:", when="@1.9:", type=("build", "run")) - depends_on("py-torch@1.10:", when="@1.7:", type=("build", "run")) - depends_on("py-torch@1.9:", when="@1.6:", type=("build", "run")) - depends_on("py-torch@1.8.1:", when="@1.5:", type=("build", "run")) - depends_on("py-torch@1.7:", when="@1.3:", type=("build", "run")) - depends_on("py-torch@1.6:", when="@1.2:", type=("build", "run")) - depends_on("py-torch@1.5:", type=("build", "run")) - depends_on("py-scikit-learn", when="@1.2:", type=("build", "run")) - depends_on("py-linear-operator@0.1.1:", when="@1.9:", type=("build", "run")) - depends_on("py-linear-operator@0.2.0:", when="@1.9.1:", type=("build", "run")) - depends_on("py-linear-operator@0.4.0:", when="@1.10:", type=("build", "run")) - depends_on("py-numpy", when="@1.7:1.8", type=("build", "run")) - depends_on("py-scipy", when="@1.2:1.8", type=("build", "run")) + with default_args(type="build"): + depends_on("py-setuptools") + depends_on("py-setuptools-scm", when="@1.9:") + + with default_args(type=("build", "run")): + depends_on("py-torch@2:", when="@1.13:") + depends_on("py-torch@1.11:", when="@1.9:") + depends_on("py-torch@1.10:", when="@1.7:") + depends_on("py-torch@1.9:", when="@1.6:") + depends_on("py-torch@1.8.1:", when="@1.5:") + depends_on("py-torch@1.7:", when="@1.3:") + depends_on("py-torch@1.6:", when="@1.2:") + depends_on("py-torch@1.5:") + depends_on("py-jaxtyping@0.2.19", when="@1.13:") + depends_on("py-mpmath@0.19:1.3", when="@1.12:") + depends_on("py-scikit-learn", when="@1.2:") + depends_on("py-scipy@1.6:", when="@1.13:") + depends_on("py-scipy", when="@1.2:1.8") + depends_on("py-linear-operator@0.5.3:", when="@1.13:") + depends_on("py-linear-operator@0.1.1:", when="@1.9:") + depends_on("py-linear-operator@0.2.0:", when="@1.9.1:") + depends_on("py-linear-operator@0.4.0:", when="@1.10:") + + # Historical dependencies + depends_on("py-numpy", when="@1.7:1.8") diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 43220375073ff9..16d5506f8d0c5d 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -18,6 +18,8 @@ class PyH5py(PythonPackage): license("BSD-3-Clause") version("master", branch="master") + version("3.12.1", sha256="326d70b53d31baa61f00b8aa5f95c2fcb9621a3ee8365d770c551a13dbbcbfdf") + version("3.12.0", sha256="00955a079e9f86c5ae2cd08accb54396c69cda87152312ddd1528e3f90acc866") version("3.11.0", sha256="7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9") version("3.10.0", sha256="d93adc48ceeb33347eb24a634fb787efc7ae4644e6ea4ba733d099605045c049") version("3.9.0", sha256="e604db6521c1e367c6bd7fad239c847f53cc46646f2d2651372d05ae5e95f817") @@ -40,11 +42,12 @@ class PyH5py(PythonPackage): version("2.5.0", sha256="9833df8a679e108b561670b245bcf9f3a827b10ccb3a5fa1341523852cfac2f6") version("2.4.0", sha256="faaeadf4b8ca14c054b7568842e0d12690de7d5d68af4ecce5d7b8fc104d8e60") - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("mpi", default=True, description="Build with MPI support") # Python versions + depends_on("python@3.9:", type=("build", "run"), when="@3.12:") depends_on("python@:3.9", type=("build", "run"), when="@:2.8") # Build dependencies @@ -60,9 +63,9 @@ class PyH5py(PythonPackage): depends_on("py-setuptools", type="build") # Build and runtime dependencies - depends_on("py-numpy@1.17.3:", type=("build", "run"), when="@3.9:") - depends_on("py-numpy@1.19.3:", type=("build", "run"), when="@3:3.5 ^python@3.9.0:") + depends_on("py-numpy@1.19.3:", type=("build", "run"), when="@3:3.5,3.12: ^python@3.9.0:") depends_on("py-numpy@1.17.5:", type=("build", "run"), when="@3:3.5 ^python@3.8.0:3.8") + depends_on("py-numpy@1.17.3:", type=("build", "run"), when="@3.9:3.11") depends_on("py-numpy@1.14.5:", type=("build", "run"), when="@3:") depends_on("py-numpy@1.7:", type=("build", "run"), when="@:2") # https://github.com/h5py/h5py/issues/2353 @@ -70,7 +73,8 @@ class PyH5py(PythonPackage): # Link dependencies (py-h5py v2 cannot build against HDF5 1.12 regardless # of API setting) - depends_on("hdf5@1.10.4:1.14 +hl", when="@3.10:") + depends_on("hdf5@1.10.6:1.14 +hl", when="@3.12:") + depends_on("hdf5@1.10.4:1.14 +hl", when="@3.10:3.11") depends_on("hdf5@1.8.4:1.14 +hl", when="@3.8:3.9") depends_on("hdf5@1.8.4:1.12 +hl", when="@3:3.7") depends_on("hdf5@1.8.4:1.11 +hl", when="@:2") diff --git a/var/spack/repos/builtin/packages/py-jaxtyping/package.py b/var/spack/repos/builtin/packages/py-jaxtyping/package.py index fb703a3eaa0315..a64a87d158e18f 100644 --- a/var/spack/repos/builtin/packages/py-jaxtyping/package.py +++ b/var/spack/repos/builtin/packages/py-jaxtyping/package.py @@ -15,7 +15,16 @@ class PyJaxtyping(PythonPackage): license("Apache-2.0") version("0.2.33", sha256="9a9cfccae4fe05114b9fb27a5ea5440be4971a5a075bbd0526f6dd7d2730f83e") + version("0.2.19", sha256="21ff4c3caec6781cadfe980b019dde856c1011e17d11dfe8589298040056325a") - depends_on("python@3.9:", type=("build", "run")) depends_on("py-hatchling", type="build") - depends_on("py-typeguard@2.13.3", type=("build", "run")) + + with default_args(type=("build", "run")): + depends_on("python@3.9:3", when="@0.2.33:") + depends_on("python@3.8:3", when="@0.2.19") + depends_on("py-typeguard@2.13.3", when="@0.2.33:") + depends_on("py-typeguard@2.13.3:", when="@0.2.19") + + # Historical dependencies + depends_on("py-numpy@1.12:", when="@0.2.19") + depends_on("py-typing-extensions@3.7.4.1:", when="@0.2.19") diff --git a/var/spack/repos/builtin/packages/py-laplace-torch/package.py b/var/spack/repos/builtin/packages/py-laplace-torch/package.py new file mode 100644 index 00000000000000..82a95a462c68f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-laplace-torch/package.py @@ -0,0 +1,31 @@ +# 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) + +from spack.package import * + + +class PyLaplaceTorch(PythonPackage): + """laplace - Laplace approximations for deep learning.""" + + homepage = "https://github.com/aleximmer/Laplace" + pypi = "laplace_torch/laplace_torch-0.2.1.tar.gz" + + license("MIT") + + version("0.2.1", sha256="641823a6d3e1dcb8297202b896ae2969334bf96df9a4a6f8cf688896d67d96f2") + + with default_args(type="build"): + depends_on("py-setuptools@42:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch@2:") + depends_on("py-torchvision") + depends_on("py-torchaudio") + depends_on("py-backpack-for-pytorch") + depends_on("py-asdfghjkl@0.1a4") + depends_on("py-torchmetrics") + depends_on("py-opt-einsum") + depends_on("py-curvlinops-for-pytorch@2:") diff --git a/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py b/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py new file mode 100644 index 00000000000000..ec4eab6acccafc --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py @@ -0,0 +1,47 @@ +# 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) + +from spack.package import * + + +class PyLightningUqBox(PythonPackage): + """Lighning-UQ-Box: A toolbox for uncertainty quantification in deep learning.""" + + homepage = "https://github.com/lightning-uq-box/lightning-uq-box" + pypi = "lightning-uq-box/lightning-uq-box-0.1.0.tar.gz" + git = "https://github.com/lightning-uq-box/lightning-uq-box.git" + + license("Apache-2.0") + maintainers("nilsleh", "adamjstewart") + + version("main", branch="main") + version("0.1.0", sha256="ce44860db75b4fbe487a009bee91c886be2e1835edee93479a6a8633ef2152b1") + + depends_on("py-setuptools@61:", type="build") + + with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@0.2:") + depends_on("python@3.9:") + depends_on("py-einops@0.3:") + depends_on("py-lightning@2.4:", when="@0.2:") + depends_on("py-lightning@2.1.1:") + depends_on("py-matplotlib@3.5:", when="@0.2:") + depends_on("py-matplotlib@3.3.3:") + depends_on("py-numpy@1.21.1:", when="@0.2:") + depends_on("py-numpy@1.19.3:") + depends_on("py-pandas@1.1.3:") + depends_on("py-torch@2:") + depends_on("py-torchmetrics@1.2:") + depends_on("py-torchvision@0.16.1:") + depends_on("py-scikit-learn@1.3:") + depends_on("py-gpytorch@1.11:") + depends_on("py-laplace-torch@0.2.1:", when="@0.2:") + depends_on("py-laplace-torch@0.1:") + depends_on("py-uncertainty-toolbox@0.1.1:") + depends_on("py-kornia@0.6.9:") + depends_on("py-timm@0.9.2:") + depends_on("py-torchseg@0.0.1:") + depends_on("py-h5py@3.12.1:", when="@0.2:") + depends_on("py-ema-pytorch@0.7:", when="@0.2:") diff --git a/var/spack/repos/builtin/packages/py-linear-operator/package.py b/var/spack/repos/builtin/packages/py-linear-operator/package.py index 00c78994137622..89034f15c7bdbb 100644 --- a/var/spack/repos/builtin/packages/py-linear-operator/package.py +++ b/var/spack/repos/builtin/packages/py-linear-operator/package.py @@ -17,6 +17,7 @@ class PyLinearOperator(PythonPackage): license("MIT") + version("0.5.3", sha256="16122661cd8b8a89ea965c845f650affe0f688f315893bb8dfa1182f148a1a41") version("0.4.0", sha256="7c57c9f8f258c9785c0db4dd7625f4dd03a340313d7314cba0b633644909f5c6") version("0.3.0", sha256="84bf572631a7e1576de6920d81600ca0fedcf6bda2f29dbaf440d6e72ce6abab") version("0.1.1", sha256="81adc1aea9e98f3c4f07f5608eb77b689bc61793e9beebfea82155e9237bf1be") @@ -26,3 +27,5 @@ class PyLinearOperator(PythonPackage): depends_on("py-setuptools-scm", type="build") depends_on("py-torch@1.11:", type=("build", "run")) depends_on("py-scipy", type=("build", "run")) + depends_on("py-jaxtyping@0.2.19", when="@0.5.3:", type=("build", "run")) + depends_on("py-mpmath@0.19:1.3", when="@0.5.3:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-timm/package.py b/var/spack/repos/builtin/packages/py-timm/package.py index 7a993364b6cd74..dbf659b68c89c1 100644 --- a/var/spack/repos/builtin/packages/py-timm/package.py +++ b/var/spack/repos/builtin/packages/py-timm/package.py @@ -12,10 +12,10 @@ class PyTimm(PythonPackage): homepage = "https://github.com/rwightman/pytorch-image-models" pypi = "timm/timm-0.4.12.tar.gz" - maintainers("adamjstewart") - license("Apache-2.0") + maintainers("adamjstewart") + version("1.0.11", sha256="a005f72b87e67ed30cdbf405a9ffd4e723360c780a43b1cefe266af8ecc9d151") version("0.9.7", sha256="2bfb1029e90b72e65eb9c75556169815f2e82257eaa1f6ebd623a4b4a52867a2") version("0.9.5", sha256="669835f0030cfb2412c464b7b563bb240d4d41a141226afbbf1b457e4f18cff1") version("0.9.2", sha256="d0977cc5e02c69bda979fca8b52aa315a5f2cb64ebf8ad2c4631b1e452762c14") @@ -26,20 +26,22 @@ class PyTimm(PythonPackage): version("0.5.4", sha256="5d7b92e66a76c432009aba90d515ea7a882aae573415a7c5269e3617df901c1f") version("0.4.12", sha256="b14be70dbd4528b5ca8657cf5bc2672c7918c3d9ebfbffe80f4785b54e884b1e") - # https://github.com/huggingface/pytorch-image-models/commit/f744bda994ec305a823483bf52a20c1440205032 - depends_on("python@3.8:", when="@0.9.0", type=("build", "run")) - # https://github.com/huggingface/pytorch-image-models/issues/1530 - # https://github.com/huggingface/pytorch-image-models/pull/1649 - depends_on("python@:3.10", when="@:0.6.12", type=("build", "run")) - - depends_on("py-setuptools", type="build") - depends_on("py-torch@1.7:", when="@0.6:", type=("build", "run")) - depends_on("py-torch@1.4:", type=("build", "run")) - depends_on("py-torchvision", type=("build", "run")) - depends_on("py-pyyaml", when="@0.6:", type=("build", "run")) - depends_on("py-huggingface-hub", when="@0.6:", type=("build", "run")) - depends_on("py-safetensors", when="@0.9:", type=("build", "run")) - - # https://github.com/rwightman/pytorch-image-models/pull/1256 - depends_on("pil@:9", when="@:0.5", type=("build", "run")) - depends_on("py-numpy", when="@:0.5", type=("build", "run")) + with default_args(type="build"): + depends_on("py-pdm-backend", when="@1:") + depends_on("py-setuptools", when="@:0") + + with default_args(type=("build", "run")): + # https://github.com/huggingface/pytorch-image-models/issues/1530 + # https://github.com/huggingface/pytorch-image-models/pull/1649 + depends_on("python@:3.10", when="@:0.6.12", type=("build", "run")) + + depends_on("py-torch@1.7:", when="@0.6:", type=("build", "run")) + depends_on("py-torch@1.4:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) + depends_on("py-pyyaml", when="@0.6:", type=("build", "run")) + depends_on("py-huggingface-hub", when="@0.6:", type=("build", "run")) + depends_on("py-safetensors", when="@0.9:", type=("build", "run")) + + # https://github.com/rwightman/pytorch-image-models/pull/1256 + depends_on("pil@:9", when="@:0.5", type=("build", "run")) + depends_on("py-numpy", when="@:0.5", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-torchseg/package.py b/var/spack/repos/builtin/packages/py-torchseg/package.py new file mode 100644 index 00000000000000..e8f7a2cebce369 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torchseg/package.py @@ -0,0 +1,26 @@ +# 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) + +from spack.package import * + + +class PyTorchseg(PythonPackage): + """TorchSeg: Semantic Segmentation models for PyTorch.""" + + homepage = "https://github.com/isaaccorley/torchseg" + pypi = "torchseg/torchseg-0.0.1a4.tar.gz" + + maintainers("isaaccorley", "adamjstewart") + + license("MIT") + + version("0.0.1a4", sha256="4742551753599af92f9f85e5ca6b149b474ffd458bad1aad6b3aad246a3bf4ea") + + depends_on("py-setuptools@61:") + + with default_args(type=("build", "run")): + depends_on("py-einops@0.7:") + depends_on("py-timm@0.9.12:") + depends_on("py-torch@1.13:") diff --git a/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py b/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py new file mode 100644 index 00000000000000..c6b0aadbb0738e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class PyUncertaintyToolbox(PythonPackage): + """Uncertainty Toolbox: a python toolbox for predictive uncertainty quantification, + calibration, metrics, and visualization.""" + + homepage = "https://uncertainty-toolbox.github.io/" + pypi = "uncertainty-toolbox/uncertainty-toolbox-0.1.1.tar.gz" + + license("MIT") + + version("0.1.1", sha256="d9389112bd431edc8b6e44c5b12405dea8f86063ff9b79f0bb178e5ac76bcfa5") + + with default_args(type="build"): + depends_on("py-flit-core@3.2:3") + depends_on("py-setuptools") + + with default_args(type=("build", "run")): + depends_on("py-numpy@1.19:") + depends_on("py-scipy@1.5:") + depends_on("py-matplotlib@3.2.2:") + depends_on("py-scikit-learn@0.23.1:") + depends_on("py-tqdm@4.54:") diff --git a/var/spack/repos/builtin/packages/py-unfoldnd/package.py b/var/spack/repos/builtin/packages/py-unfoldnd/package.py new file mode 100644 index 00000000000000..e3f1fec1713922 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-unfoldnd/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class PyUnfoldnd(PythonPackage): + """N-dimensional unfold (im2col) and fold (col2im) in PyTorch.""" + + homepage = "https://github.com/f-dangel/unfoldNd" + pypi = "unfoldnd/unfoldnd-0.2.2.tar.gz" + + license("MIT") + + version("0.2.2", sha256="e8fdffeb68bc1b393ddc1b1c87056e0e4616db992e95c7dbc3dc90d564599397") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch") + depends_on("py-numpy") From 4511052d26c02510517fb3f2ef3d2181dfbe71b3 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 24 Oct 2024 12:22:05 -0700 Subject: [PATCH 137/615] py-webdataset: new package (#47187) --- .../builtin/packages/py-webdataset/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-webdataset/package.py diff --git a/var/spack/repos/builtin/packages/py-webdataset/package.py b/var/spack/repos/builtin/packages/py-webdataset/package.py new file mode 100644 index 00000000000000..7f4af5a9e88782 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-webdataset/package.py @@ -0,0 +1,23 @@ +# 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) +from spack.package import * + + +class PyWebdataset(PythonPackage): + """Python-based I/O for deep learning problems.""" + + homepage = "https://github.com/webdataset/webdataset" + pypi = "webdataset/webdataset-0.1.62.tar.gz" + + license("BSD-3-Clause") + + version("0.1.62", sha256="78b6c7810116d6875fa1ed8eb2dea29a54b86fde014cc2069f4c08fc3530ceb5") + + with default_args(type=("build", "link", "run")): + depends_on("python@3.6:") + + # setup.py and requires.txt + depends_on("py-braceexpand") + depends_on("py-numpy") From b063765c2efecb7937d9f6bbbbb34cd41efd1286 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Thu, 24 Oct 2024 21:26:04 +0200 Subject: [PATCH 138/615] miniforge3: wrong sbang replacement (#47178) --- .../repos/builtin/packages/miniforge3/package.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/var/spack/repos/builtin/packages/miniforge3/package.py b/var/spack/repos/builtin/packages/miniforge3/package.py index f690742acafb48..8f5d3c05e255ba 100644 --- a/var/spack/repos/builtin/packages/miniforge3/package.py +++ b/var/spack/repos/builtin/packages/miniforge3/package.py @@ -56,6 +56,21 @@ def install(self, spec, prefix): bash = which("bash") bash(script, "-b", "-f", "-p", self.prefix) + @run_after("install") + def patch_sbang(self): + # Conda replaces the full path to the Python executable with `/usr/bin/env python` + # if the full path exceeds 127 characters. This does however break `conda deactivate` + # because the wrong Python interpreter is used after activating an environment. + # The 127 character limit is not relevant in Spack as Spack will automatically + # use the `sbang` script to deal with the overly long sbang line. + filter_file( + r"#!/usr/bin/env python", rf"#!{self.prefix.bin.python}", self.prefix.bin.conda + ) + if "+mamba" in self.spec: + filter_file( + r"#!/usr/bin/env python", rf"#!{self.prefix.bin.python}", self.prefix.bin.mamba + ) + def setup_run_environment(self, env): filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) From 5ac2b8a178a47d9073918dc6014d41f48f393a29 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 24 Oct 2024 21:28:38 +0200 Subject: [PATCH 139/615] compilers.yaml: require list of strings for modules (#47197) --- lib/spack/spack/compiler.py | 2 +- lib/spack/spack/schema/compilers.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 8ed125ae24fdfe..31067a14d9fb59 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -275,7 +275,7 @@ def __init__( operating_system, target, paths, - modules=None, + modules: Optional[List[str]] = None, alias=None, environment=None, extra_rpaths=None, diff --git a/lib/spack/spack/schema/compilers.py b/lib/spack/spack/schema/compilers.py index 976a9777fcd82d..81460882108c13 100644 --- a/lib/spack/spack/schema/compilers.py +++ b/lib/spack/spack/schema/compilers.py @@ -61,7 +61,10 @@ "target": {"type": "string"}, "alias": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "modules": { - "anyOf": [{"type": "string"}, {"type": "null"}, {"type": "array"}] + "anyOf": [ + {"type": "null"}, + {"type": "array", "items": {"type": "string"}}, + ] }, "implicit_rpaths": implicit_rpaths, "environment": spack.schema.environment.definition, From 65bb3a12ea190091d24d8b5c28c722426b9fe841 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Fri, 25 Oct 2024 02:14:09 +0530 Subject: [PATCH 140/615] hdf5: disable _Float16 support for aocc (#47123) --- var/spack/repos/builtin/packages/hdf5/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 555f7752965c92..01a9992f3c2934 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -581,6 +581,10 @@ def cmake_args(self): if spec.satisfies("@1.10.8,1.13.0"): args.append(self.define("HDF5_INSTALL_CMAKE_DIR", "share/cmake/hdf5")) + # AOCC does not support _Float16 + if spec.satisfies("@1.14.4: %aocc"): + args.append(self.define("HDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16", False)) + return args @run_after("install") From 1b0631b69edbc99a9527c1d6b9a913a49e3b1523 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:55:00 -0700 Subject: [PATCH 141/615] Env help: expand and refine subcommand help and descriptions (#47089) This PR is in response to a question in the `environments` slack channel (https://spackpm.slack.com/archives/CMHK7MF51/p1729200068557219) about inadequate CLI help/documentation for one specific subcommand. This PR uses the approach I took for the descriptions and help for `spack test` subcommands. Namely, I use the first line of the relevant docstring as the description, which is shown per subcommand in `spack env -h`, and the entire docstring as the help. I then added, where it seemed appropriate, help. I also tweaked argument docstrings to tighten them up, make consistent with similar arguments elsewhere in the command, and elaborate when it seemed important. (The only subcommand I didn't touch is `loads`.) For example, before: ``` $ spack env update -h usage: spack env update [-hy] env positional arguments: env name or directory of the environment to activate optional arguments: -h, --help show this help message and exit -y, --yes-to-all assume "yes" is the answer to every confirmation request ``` After the changes in this PR: ``` $ spack env update -h usage: spack env update [-hy] env update the environment manifest to the latest schema format update the environment to the latest schema format, which may not be readable by older versions of spack a backup copy of the manifest is retained in case there is a need to revert this operation positional arguments: env name or directory of the environment optional arguments: -h, --help show this help message and exit -y, --yes-to-all assume "yes" is the answer to every confirmation request ``` --------- Co-authored-by: Todd Gamblin --- lib/spack/spack/cmd/env.py | 159 ++++++++++++++++++------------ share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 64 ++++++------ 3 files changed, 130 insertions(+), 95 deletions(-) diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index c4596af469c15a..2136bb1305c253 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -57,35 +57,41 @@ # env create # def env_create_setup_parser(subparser): - """create a new environment""" - subparser.add_argument("env_name", metavar="env", help="name or directory of environment") + """create a new environment + + create a new environment or, optionally, copy an existing environment + + a manifest file results in a new abstract environment while a lock file + creates a new concrete environment + """ + subparser.add_argument( + "env_name", metavar="env", help="name or directory of the new environment" + ) subparser.add_argument( "-d", "--dir", action="store_true", help="create an environment in a specific directory" ) subparser.add_argument( "--keep-relative", action="store_true", - help="copy relative develop paths verbatim into the new environment" - " when initializing from envfile", + help="copy envfile's relative develop paths verbatim", ) view_opts = subparser.add_mutually_exclusive_group() view_opts.add_argument( "--without-view", action="store_true", help="do not maintain a view for this environment" ) view_opts.add_argument( - "--with-view", - help="specify that this environment should maintain a view at the" - " specified path (by default the view is maintained in the" - " environment directory)", + "--with-view", help="maintain view at WITH_VIEW (vs. environment's directory)" ) subparser.add_argument( "envfile", nargs="?", default=None, - help="either a lockfile (must end with '.json' or '.lock') or a manifest file", + help="manifest or lock file (ends with '.json' or '.lock')", ) subparser.add_argument( - "--include-concrete", action="append", help="name of old environment to copy specs from" + "--include-concrete", + action="append", + help="copy concrete specs from INCLUDE_CONCRETE's environment", ) @@ -173,7 +179,7 @@ def _env_create( # env activate # def env_activate_setup_parser(subparser): - """set the current environment""" + """set the active environment""" shells = subparser.add_mutually_exclusive_group() shells.add_argument( "--sh", @@ -213,14 +219,14 @@ def env_activate_setup_parser(subparser): view_options = subparser.add_mutually_exclusive_group() view_options.add_argument( - "--with-view", "-v", + "--with-view", metavar="name", - help="set runtime environment variables for specific view", + help="set runtime environment variables for the named view", ) view_options.add_argument( - "--without-view", "-V", + "--without-view", action="store_true", help="do not set runtime environment variables for any view", ) @@ -230,14 +236,14 @@ def env_activate_setup_parser(subparser): "--prompt", action="store_true", default=False, - help="decorate the command line prompt when activating", + help="add the active environment to the command line prompt", ) subparser.add_argument( "--temp", action="store_true", default=False, - help="create and activate an environment in a temporary directory", + help="create and activate in a temporary directory", ) subparser.add_argument( "--create", @@ -249,13 +255,12 @@ def env_activate_setup_parser(subparser): "--envfile", nargs="?", default=None, - help="either a lockfile (must end with '.json' or '.lock') or a manifest file", + help="manifest or lock file (ends with '.json' or '.lock')", ) subparser.add_argument( "--keep-relative", action="store_true", - help="copy relative develop paths verbatim into the new environment" - " when initializing from envfile", + help="copy envfile's relative develop paths verbatim when create", ) subparser.add_argument( "-d", @@ -269,10 +274,7 @@ def env_activate_setup_parser(subparser): dest="env_name", nargs="?", default=None, - help=( - "name of managed environment or directory of the independent env" - " (when using --dir/-d) to activate" - ), + help=("name or directory of the environment being activated"), ) @@ -385,7 +387,7 @@ def env_activate(args): # env deactivate # def env_deactivate_setup_parser(subparser): - """deactivate any active environment in the shell""" + """deactivate the active environment""" shells = subparser.add_mutually_exclusive_group() shells.add_argument( "--sh", @@ -448,23 +450,27 @@ def env_deactivate(args): # env remove # def env_remove_setup_parser(subparser): - """remove an existing environment""" - subparser.add_argument("rm_env", metavar="env", nargs="+", help="environment(s) to remove") + """remove managed environment(s) + + remove existing environment(s) managed by Spack + + directory environments and manifests embedded in repositories must be + removed manually + """ + subparser.add_argument( + "rm_env", metavar="env", nargs="+", help="name(s) of the environment(s) being removed" + ) arguments.add_common_arguments(subparser, ["yes_to_all"]) subparser.add_argument( "-f", "--force", action="store_true", - help="remove the environment even if it is included in another environment", + help="force removal even when included in other environment(s)", ) def env_remove(args): - """Remove a *named* environment. - - This removes an environment managed by Spack. Directory environments - and manifests embedded in repositories should be removed manually. - """ + """remove existing environment(s)""" remove_envs = [] valid_envs = [] bad_envs = [] @@ -519,29 +525,32 @@ def env_remove(args): # env rename # def env_rename_setup_parser(subparser): - """rename an existing environment""" - subparser.add_argument( - "mv_from", metavar="from", help="name (or path) of existing environment" - ) + """rename an existing environment + + rename a managed environment or move an independent/directory environment + + operation cannot be performed to or from an active environment + """ subparser.add_argument( - "mv_to", metavar="to", help="new name (or path) for existing environment" + "mv_from", metavar="from", help="current name or directory of the environment" ) + subparser.add_argument("mv_to", metavar="to", help="new name or directory for the environment") subparser.add_argument( "-d", "--dir", action="store_true", - help="the specified arguments correspond to directory paths", + help="positional arguments are environment directory paths", ) subparser.add_argument( - "-f", "--force", action="store_true", help="allow overwriting of an existing environment" + "-f", + "--force", + action="store_true", + help="force renaming even if overwriting an existing environment", ) def env_rename(args): - """Rename an environment. - - This renames a managed environment or moves an independent environment. - """ + """rename or move an existing environment""" # Directory option has been specified if args.dir: @@ -590,7 +599,7 @@ def env_rename(args): # env list # def env_list_setup_parser(subparser): - """list managed environments""" + """list all managed environments""" def env_list(args): @@ -626,13 +635,14 @@ def actions(): # env view # def env_view_setup_parser(subparser): - """manage a view associated with the environment""" + """manage the environment's view + + provide the path when enabling a view with a non-default path + """ subparser.add_argument( "action", choices=ViewAction.actions(), help="action to take for the environment's view" ) - subparser.add_argument( - "view_path", nargs="?", help="when enabling a view, optionally set the path manually" - ) + subparser.add_argument("view_path", nargs="?", help="view's non-default path when enabling it") def env_view(args): @@ -660,7 +670,7 @@ def env_view(args): # env status # def env_status_setup_parser(subparser): - """print whether there is an active environment""" + """print active environment status""" def env_status(args): @@ -720,14 +730,22 @@ def env_loads(args): def env_update_setup_parser(subparser): - """update environments to the latest format""" + """update the environment manifest to the latest schema format + + update the environment to the latest schema format, which may not be + readable by older versions of spack + + a backup copy of the manifest is retained in case there is a need to revert + this operation + """ subparser.add_argument( - metavar="env", dest="update_env", help="name or directory of the environment to activate" + metavar="env", dest="update_env", help="name or directory of the environment" ) spack.cmd.common.arguments.add_common_arguments(subparser, ["yes_to_all"]) def env_update(args): + """update the manifest to the latest format""" manifest_file = ev.manifest_file(args.update_env) backup_file = manifest_file + ".bkp" @@ -757,14 +775,22 @@ def env_update(args): def env_revert_setup_parser(subparser): - """restore environments to their state before update""" + """restore the environment manifest to its previous format + + revert the environment's manifest to the schema format from its last + 'spack env update' + + the current manifest will be overwritten by the backup copy and the backup + copy will be removed + """ subparser.add_argument( - metavar="env", dest="revert_env", help="name or directory of the environment to activate" + metavar="env", dest="revert_env", help="name or directory of the environment" ) spack.cmd.common.arguments.add_common_arguments(subparser, ["yes_to_all"]) def env_revert(args): + """restore the environment manifest to its previous format""" manifest_file = ev.manifest_file(args.revert_env) backup_file = manifest_file + ".bkp" @@ -796,15 +822,19 @@ def env_revert(args): def env_depfile_setup_parser(subparser): - """generate a depfile from the concrete environment specs""" + """generate a depfile to exploit parallel builds across specs + + requires the active environment to be concrete + """ subparser.add_argument( "--make-prefix", "--make-target-prefix", default=None, metavar="TARGET", - help="prefix Makefile targets (and variables) with /\n\nby default " - "the absolute path to the directory makedeps under the environment metadata dir is " - "used. can be set to an empty string --make-prefix ''", + help="prefix Makefile targets/variables with /,\n" + "which can be an empty string (--make-prefix '')\n" + "defaults to the absolute path of the environment's makedeps\n" + "environment metadata dir\n", ) subparser.add_argument( "--make-disable-jobserver", @@ -819,8 +849,8 @@ def env_depfile_setup_parser(subparser): type=arguments.use_buildcache, default="package:auto,dependencies:auto", metavar="[{auto,only,never},][package:{auto,only,never},][dependencies:{auto,only,never}]", - help="when using `only`, redundant build dependencies are pruned from the DAG\n\n" - "this flag is passed on to the generated spack install commands", + help="use `only` to prune redundant build dependencies\n" + "option is also passed to generated spack install commands", ) subparser.add_argument( "-o", @@ -834,14 +864,14 @@ def env_depfile_setup_parser(subparser): "--generator", default="make", choices=("make",), - help="specify the depfile type\n\ncurrently only make is supported", + help="specify the depfile type (only supports `make`)", ) subparser.add_argument( metavar="specs", dest="specs", nargs=argparse.REMAINDER, default=None, - help="generate a depfile only for matching specs in the environment", + help="limit the generated file to matching specs", ) @@ -910,7 +940,12 @@ def setup_parser(subparser): setup_parser_cmd_name = "env_%s_setup_parser" % name setup_parser_cmd = globals()[setup_parser_cmd_name] - subsubparser = sp.add_parser(name, aliases=aliases, help=setup_parser_cmd.__doc__) + subsubparser = sp.add_parser( + name, + aliases=aliases, + description=setup_parser_cmd.__doc__, + help=spack.cmd.first_line(setup_parser_cmd.__doc__), + ) setup_parser_cmd(subsubparser) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 2994de4b2787b4..10011a10b32de5 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1030,7 +1030,7 @@ _spack_env() { _spack_env_activate() { if $list_options then - SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --pwsh --with-view -v --without-view -V -p --prompt --temp --create --envfile --keep-relative -d --dir" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --pwsh -v --with-view -V --without-view -p --prompt --temp --create --envfile --keep-relative -d --dir" else _environments fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 57533497b97c5f..8ef18c63bd6605 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -1472,22 +1472,22 @@ complete -c spack -n '__fish_spack_using_command edit' -s N -l namespace -r -d ' # spack env set -g __fish_spack_optspecs_spack_env h/help -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a activate -d 'set the current environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a deactivate -d 'deactivate any active environment in the shell' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a activate -d 'set the active environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a deactivate -d 'deactivate the active environment' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a create -d 'create a new environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a remove -d 'remove an existing environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rm -d 'remove an existing environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a remove -d 'remove managed environment(s)' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rm -d 'remove managed environment(s)' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rename -d 'rename an existing environment' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a mv -d 'rename an existing environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a list -d 'list managed environments' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a ls -d 'list managed environments' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a status -d 'print whether there is an active environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a st -d 'print whether there is an active environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a list -d 'list all managed environments' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a ls -d 'list all managed environments' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a status -d 'print active environment status' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a st -d 'print active environment status' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a loads -d 'list modules for an installed environment '"'"'(see spack module loads)'"'"'' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a view -d 'manage a view associated with the environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a update -d 'update environments to the latest format' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a revert -d 'restore environments to their state before update' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a depfile -d 'generate a depfile from the concrete environment specs' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a view -d 'manage the environment'"'"'s view' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a update -d 'update the environment manifest to the latest schema format' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a revert -d 'restore the environment manifest to its previous format' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a depfile -d 'generate a depfile to exploit parallel builds across specs' complete -c spack -n '__fish_spack_using_command env' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env' -s h -l help -d 'show this help message and exit' @@ -1506,20 +1506,20 @@ complete -c spack -n '__fish_spack_using_command env activate' -l bat -f -a shel complete -c spack -n '__fish_spack_using_command env activate' -l bat -d 'print bat commands to activate the environment' complete -c spack -n '__fish_spack_using_command env activate' -l pwsh -f -a shell complete -c spack -n '__fish_spack_using_command env activate' -l pwsh -d 'print powershell commands to activate environment' -complete -c spack -n '__fish_spack_using_command env activate' -l with-view -s v -r -f -a with_view -complete -c spack -n '__fish_spack_using_command env activate' -l with-view -s v -r -d 'set runtime environment variables for specific view' -complete -c spack -n '__fish_spack_using_command env activate' -l without-view -s V -f -a without_view -complete -c spack -n '__fish_spack_using_command env activate' -l without-view -s V -d 'do not set runtime environment variables for any view' +complete -c spack -n '__fish_spack_using_command env activate' -s v -l with-view -r -f -a with_view +complete -c spack -n '__fish_spack_using_command env activate' -s v -l with-view -r -d 'set runtime environment variables for the named view' +complete -c spack -n '__fish_spack_using_command env activate' -s V -l without-view -f -a without_view +complete -c spack -n '__fish_spack_using_command env activate' -s V -l without-view -d 'do not set runtime environment variables for any view' complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -f -a prompt -complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -d 'decorate the command line prompt when activating' +complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -d 'add the active environment to the command line prompt' complete -c spack -n '__fish_spack_using_command env activate' -l temp -f -a temp -complete -c spack -n '__fish_spack_using_command env activate' -l temp -d 'create and activate an environment in a temporary directory' +complete -c spack -n '__fish_spack_using_command env activate' -l temp -d 'create and activate in a temporary directory' complete -c spack -n '__fish_spack_using_command env activate' -l create -f -a create complete -c spack -n '__fish_spack_using_command env activate' -l create -d 'create and activate the environment if it doesn'"'"'t exist' complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -f -a envfile -complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -d 'either a lockfile (must end with '"'"'.json'"'"' or '"'"'.lock'"'"') or a manifest file' +complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -d 'manifest or lock file (ends with '"'"'.json'"'"' or '"'"'.lock'"'"')' complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -f -a keep_relative -complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -d 'copy relative develop paths verbatim into the new environment when initializing from envfile' +complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -d 'copy envfile'"'"'s relative develop paths verbatim when create' complete -c spack -n '__fish_spack_using_command env activate' -s d -l dir -f -a dir complete -c spack -n '__fish_spack_using_command env activate' -s d -l dir -d 'activate environment based on the directory supplied' @@ -1546,13 +1546,13 @@ complete -c spack -n '__fish_spack_using_command env create' -s h -l help -d 'sh complete -c spack -n '__fish_spack_using_command env create' -s d -l dir -f -a dir complete -c spack -n '__fish_spack_using_command env create' -s d -l dir -d 'create an environment in a specific directory' complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -f -a keep_relative -complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -d 'copy relative develop paths verbatim into the new environment when initializing from envfile' +complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -d 'copy envfile'"'"'s relative develop paths verbatim' complete -c spack -n '__fish_spack_using_command env create' -l without-view -f -a without_view complete -c spack -n '__fish_spack_using_command env create' -l without-view -d 'do not maintain a view for this environment' complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -f -a with_view -complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -d 'specify that this environment should maintain a view at the specified path (by default the view is maintained in the environment directory)' +complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -d 'maintain view at WITH_VIEW (vs. environment'"'"'s directory)' complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -f -a include_concrete -complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -d 'name of old environment to copy specs from' +complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -d 'copy concrete specs from INCLUDE_CONCRETE'"'"'s environment' # spack env remove set -g __fish_spack_optspecs_spack_env_remove h/help y/yes-to-all f/force @@ -1562,7 +1562,7 @@ complete -c spack -n '__fish_spack_using_command env remove' -s h -l help -d 'sh complete -c spack -n '__fish_spack_using_command env remove' -s y -l yes-to-all -f -a yes_to_all complete -c spack -n '__fish_spack_using_command env remove' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -d 'remove the environment even if it is included in another environment' +complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -d 'force removal even when included in other environment(s)' # spack env rm set -g __fish_spack_optspecs_spack_env_rm h/help y/yes-to-all f/force @@ -1572,7 +1572,7 @@ complete -c spack -n '__fish_spack_using_command env rm' -s h -l help -d 'show t complete -c spack -n '__fish_spack_using_command env rm' -s y -l yes-to-all -f -a yes_to_all complete -c spack -n '__fish_spack_using_command env rm' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -d 'remove the environment even if it is included in another environment' +complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -d 'force removal even when included in other environment(s)' # spack env rename set -g __fish_spack_optspecs_spack_env_rename h/help d/dir f/force @@ -1580,9 +1580,9 @@ set -g __fish_spack_optspecs_spack_env_rename h/help d/dir f/force complete -c spack -n '__fish_spack_using_command env rename' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env rename' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -f -a dir -complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -d 'the specified arguments correspond to directory paths' +complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -d 'positional arguments are environment directory paths' complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -d 'allow overwriting of an existing environment' +complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -d 'force renaming even if overwriting an existing environment' # spack env mv set -g __fish_spack_optspecs_spack_env_mv h/help d/dir f/force @@ -1590,9 +1590,9 @@ set -g __fish_spack_optspecs_spack_env_mv h/help d/dir f/force complete -c spack -n '__fish_spack_using_command env mv' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env mv' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -f -a dir -complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -d 'the specified arguments correspond to directory paths' +complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -d 'positional arguments are environment directory paths' complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -d 'allow overwriting of an existing environment' +complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -d 'force renaming even if overwriting an existing environment' # spack env list set -g __fish_spack_optspecs_spack_env_list h/help @@ -1659,15 +1659,15 @@ complete -c spack -n '__fish_spack_using_command_pos_remainder 0 env depfile' -f complete -c spack -n '__fish_spack_using_command env depfile' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env depfile' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -f -a make_prefix -complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -d 'prefix Makefile targets (and variables) with /' +complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -d 'prefix Makefile targets/variables with /,' complete -c spack -n '__fish_spack_using_command env depfile' -l make-disable-jobserver -f -a jobserver complete -c spack -n '__fish_spack_using_command env depfile' -l make-disable-jobserver -d 'disable POSIX jobserver support' complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -f -a use_buildcache -complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -d 'when using `only`, redundant build dependencies are pruned from the DAG' +complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -d 'use `only` to prune redundant build dependencies' complete -c spack -n '__fish_spack_using_command env depfile' -s o -l output -r -f -a output complete -c spack -n '__fish_spack_using_command env depfile' -s o -l output -r -d 'write the depfile to FILE rather than to stdout' complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -f -a make -complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -d 'specify the depfile type' +complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -d 'specify the depfile type (only supports `make`)' # spack extensions set -g __fish_spack_optspecs_spack_extensions h/help l/long L/very-long d/deps p/paths s/show= From d523f12e9905a85c28a477973b7d0004781d7eba Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 25 Oct 2024 00:42:39 +0200 Subject: [PATCH 142/615] py-jupyter: add v1.1.1 (#47194) --- .../builtin/packages/py-jupyter/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-jupyter/package.py b/var/spack/repos/builtin/packages/py-jupyter/package.py index 9569b16c0314c8..d71d6bd1a9dd39 100644 --- a/var/spack/repos/builtin/packages/py-jupyter/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter/package.py @@ -14,13 +14,20 @@ class PyJupyter(PythonPackage): license("BSD-3-Clause") - version("1.0.0", sha256="d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f") + version("1.1.1", sha256="d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a") + version( + "1.0.0", + sha256="d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f", + deprecated=True, + ) - # pip silently replaces distutils with setuptools depends_on("py-setuptools", type="build") - depends_on("py-notebook", type=("build", "run")) - depends_on("py-qtconsole", type=("build", "run")) - depends_on("py-jupyter-console", type=("build", "run")) - depends_on("py-nbconvert", type=("build", "run")) - depends_on("py-ipykernel", type=("build", "run")) - depends_on("py-ipywidgets", type=("build", "run")) + + with default_args(type=("build", "run")): + depends_on("py-notebook") + depends_on("py-qtconsole", when="@:1.0") + depends_on("py-jupyter-console") + depends_on("py-nbconvert") + depends_on("py-ipykernel") + depends_on("py-ipywidgets") + depends_on("py-jupyterlab", when="@1.1:") From fe0a8a173575b66752955817f46a82efe3237782 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 24 Oct 2024 21:39:57 -0600 Subject: [PATCH 143/615] nalu-wind: add v2.1.0. (#47206) --- var/spack/repos/builtin/packages/nalu-wind/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index eb923367541098..5e991e902819b2 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -34,6 +34,7 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): tags = ["ecp", "ecp-apps"] version("master", branch="master", submodules=submodules) + version("2.1.0", tag="v2.1.0", submodules=submodules) version("2.0.0", tag="v2.0.0", submodules=submodules) variant("pic", default=True, description="Position independent code") From 01eb26578b54f1ff87355bc17f02781b857aa99b Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 24 Oct 2024 21:53:54 -0600 Subject: [PATCH 144/615] amr-wind: add v3.1.6. (#47205) --- var/spack/repos/builtin/packages/amr-wind/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index a9657f4db7c271..75a3a0d5755f23 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -21,6 +21,9 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("main", branch="main", submodules=True) + version( + "3.1.6", tag="v3.1.6", commit="ca437affc6fd00490d8b14e244e53bf641207224", submodules=True + ) version( "3.1.5", tag="v3.1.5", commit="554f8aa1ac36c2bae17565c64d5bc33333cee396", submodules=True ) From 8e2ec58859bbdf38199ba1c9ec966e31687b286e Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 24 Oct 2024 22:00:22 -0600 Subject: [PATCH 145/615] exawind: add v1.1.0. (#47207) --- var/spack/repos/builtin/packages/exawind/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/exawind/package.py b/var/spack/repos/builtin/packages/exawind/package.py index 82a8a094060a07..28e304bffa7e9c 100644 --- a/var/spack/repos/builtin/packages/exawind/package.py +++ b/var/spack/repos/builtin/packages/exawind/package.py @@ -19,6 +19,7 @@ class Exawind(CMakePackage, CudaPackage, ROCmPackage): license("Apache-2.0") version("master", branch="main", submodules=True, preferred=True) + version("1.1.0", tag="v1.1.0", submodules=True) version("1.0.0", tag="v1.0.0", submodules=True) depends_on("cxx", type="build") # generated From 2912d4a6615abe380a13bad17c5a778688e8b777 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 24 Oct 2024 22:04:33 -0600 Subject: [PATCH 146/615] tioga: add v1.2.0. (#47208) --- var/spack/repos/builtin/packages/tioga/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/tioga/package.py b/var/spack/repos/builtin/packages/tioga/package.py index 79684d2cbcb66a..29b8bb6289e330 100644 --- a/var/spack/repos/builtin/packages/tioga/package.py +++ b/var/spack/repos/builtin/packages/tioga/package.py @@ -17,9 +17,10 @@ class Tioga(CMakePackage): license("LGPL-3.0-only") - # The original TIOGA repo has possibly been abandoned, + # The original TIOGA repo has been abandoned, # so work on TIOGA has continued in the Exawind project version("develop", git="https://github.com/Exawind/tioga.git", branch="exawind") + version("1.2.0", git="https://github.com/Exawind/tioga.git", tag="v1.2.0") version("1.1.0", git="https://github.com/Exawind/tioga.git", tag="v1.1.0") version("1.0.0", git="https://github.com/Exawind/tioga.git", tag="v1.0.0") version("master", branch="master") From f13d998d214f448f2394e07c0e1d262abee7f839 Mon Sep 17 00:00:00 2001 From: Jordan Galby <67924449+Jordan474@users.noreply.github.com> Date: Fri, 25 Oct 2024 07:34:59 +0200 Subject: [PATCH 147/615] Add spack short version in config variables (#47016) --- lib/spack/docs/configuration.rst | 1 + lib/spack/spack/__init__.py | 13 ++++++++++++- lib/spack/spack/test/config.py | 7 +++++++ lib/spack/spack/util/path.py | 28 +++++++++++++++------------- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 68c85e969c97a0..b416c9149907d2 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -511,6 +511,7 @@ Spack understands over a dozen special variables. These are: * ``$target_family``. The target family for the current host, as detected by ArchSpec. E.g. ``x86_64`` or ``aarch64``. * ``$date``: the current date in the format YYYY-MM-DD +* ``$spack_short_version``: the Spack version truncated to the first components. Note that, as with shell variables, you can write these as ``$varname`` diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index cf7d62c7fd02e1..9a83564db7daa9 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -69,4 +69,15 @@ def get_version() -> str: return spack_version -__all__ = ["spack_version_info", "spack_version", "get_version", "get_spack_commit"] +def get_short_version() -> str: + """Short Spack version.""" + return f"{spack_version_info[0]}.{spack_version_info[1]}" + + +__all__ = [ + "spack_version_info", + "spack_version", + "get_version", + "get_spack_commit", + "get_short_version", +] diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index be727f1c561e95..a5a4fc9787c297 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -472,6 +472,13 @@ def test_substitute_date(mock_low_high_config): assert date.today().strftime("%Y-%m-%d") in new_path +def test_substitute_spack_version(): + version = spack.spack_version_info + assert spack_path.canonicalize_path( + "spack$spack_short_version/test" + ) == spack_path.canonicalize_path(f"spack{version[0]}.{version[1]}/test") + + PAD_STRING = spack_path.SPACK_PATH_PADDING_CHARS MAX_PATH_LEN = spack_path.get_system_path_max() MAX_PADDED_LEN = MAX_PATH_LEN - spack_path.SPACK_MAX_INSTALL_PATH_LENGTH diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index 56dcd2d0e38ee8..5e7fa3a797b995 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -74,6 +74,7 @@ def replacements(): "target_family": lambda: arch.target.family, "date": lambda: date.today().strftime("%Y-%m-%d"), "env": lambda: ev.active_environment().path if ev.active_environment() else NOMATCH, + "spack_short_version": lambda: spack.get_short_version(), } @@ -154,19 +155,20 @@ def substitute_config_variables(path): Spack allows paths in configs to have some placeholders, as follows: - - $env The active Spack environment. - - $spack The Spack instance's prefix - - $tempdir Default temporary directory returned by tempfile.gettempdir() - - $user The current user's username - - $user_cache_path The user cache directory (~/.spack, unless overridden) - - $architecture The spack architecture triple for the current system - - $arch The spack architecture triple for the current system - - $platform The spack platform for the current system - - $os The OS of the current system - - $operating_system The OS of the current system - - $target The ISA target detected for the system - - $target_family The family of the target detected for the system - - $date The current date (YYYY-MM-DD) + - $env The active Spack environment. + - $spack The Spack instance's prefix + - $tempdir Default temporary directory returned by tempfile.gettempdir() + - $user The current user's username + - $user_cache_path The user cache directory (~/.spack, unless overridden) + - $architecture The spack architecture triple for the current system + - $arch The spack architecture triple for the current system + - $platform The spack platform for the current system + - $os The OS of the current system + - $operating_system The OS of the current system + - $target The ISA target detected for the system + - $target_family The family of the target detected for the system + - $date The current date (YYYY-MM-DD) + - $spack_short_version The spack short version These are substituted case-insensitively into the path, and users can use either ``$var`` or ``${var}`` syntax for the variables. $env is only From b34159348f8751d127ccf2b2c562c12264f78505 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 07:36:14 +0200 Subject: [PATCH 148/615] build(deps): bump actions/setup-python from 5.2.0 to 5.3.0 (#47209) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.2.0 to 5.3.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/f677139bbe7f9c59b41e40162b753c062f5d49a3...0b93645e9fea7318ecaed2b359559ac225c90a2b) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/audit.yaml | 2 +- .github/workflows/bootstrap.yml | 6 +++--- .github/workflows/coverage.yml | 2 +- .github/workflows/nightly-win-builds.yml | 2 +- .github/workflows/unit_tests.yaml | 10 +++++----- .github/workflows/valid-style.yml | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml index 4cd04440215408..46e6182f1b0341 100644 --- a/.github/workflows/audit.yaml +++ b/.github/workflows/audit.yaml @@ -29,7 +29,7 @@ jobs: shell: ${{ matrix.system.shell }} steps: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{inputs.python_version}} - name: Install Python packages diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 13dbd2d99853e6..5b21b01d2d7593 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -63,7 +63,7 @@ jobs: uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: "3.12" - name: Bootstrap clingo @@ -120,7 +120,7 @@ jobs: uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: | 3.8 @@ -174,7 +174,7 @@ jobs: uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: "3.12" - name: Setup Windows diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 1456645b2a63d8..fe1b4efb9e3e16 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' diff --git a/.github/workflows/nightly-win-builds.yml b/.github/workflows/nightly-win-builds.yml index 279ba78e4b49fe..74aca3ec832dec 100644 --- a/.github/workflows/nightly-win-builds.yml +++ b/.github/workflows/nightly-win-builds.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: 3.9 - name: Install Python packages diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index ae4b11db2e85a1..eae2b990b1684f 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -43,7 +43,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{ matrix.python-version }} - name: Install System packages @@ -92,7 +92,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' - name: Install System packages @@ -152,7 +152,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.13' - name: Install System packages @@ -191,7 +191,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{ matrix.python-version }} - name: Install Python packages @@ -229,7 +229,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: 3.9 - name: Install Python packages diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index d107fdb1978b1d..8adedddf045693 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' @@ -38,7 +38,7 @@ jobs: - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' From 7319408bc7ee1c776d80942186eeb8bdd483b9f6 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Fri, 25 Oct 2024 07:30:08 +0100 Subject: [PATCH 149/615] Add version 0.0.3836 (#47204) --- var/spack/repos/builtin/packages/verible/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/verible/package.py b/var/spack/repos/builtin/packages/verible/package.py index fbcc5b5503f1d4..e7109855f27c1f 100644 --- a/var/spack/repos/builtin/packages/verible/package.py +++ b/var/spack/repos/builtin/packages/verible/package.py @@ -34,6 +34,11 @@ class Verible(Package): version("master", branch="master") + version( + "0.0.3836", + sha256="946625a1527d0a97772ea031ab7358af29e61258c189a2ab0d9533b43e71f35b", + url="https://github.com/chipsalliance/verible/archive/refs/tags/v0.0-3836-g86ee9bab.tar.gz", + ) version( "0.0.3671", sha256="9f492cdc64b047f4e91aece8aa01fd2b846d9695510360dde34980daf5dbe0dd", From e86a3b68f7413f0c4c5ec005e90df66a347c86f8 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 25 Oct 2024 17:10:14 +0200 Subject: [PATCH 150/615] file_cache.py: allow read transaction on uninitialized cache (#47212) This allows the following ```python cache.init_entry("my/cache") with cache.read_transaction("my/cache") as f: data = f.read() if f is not None else None ``` mirroring `write_transaction`, which returns a tuple `(old, new)` where `old` is `None` if the cache file did not exist yet. The alternative that requires less defensive programming on the call site would be to create the "old" file upon first read, but I did not want to think about how to safely atomically create the file, and it's not unthinkable that an empty file is an invalid format (for instance the call site may expect a json file, which requires at least {} bytes). --- lib/spack/spack/test/util/file_cache.py | 10 +-- lib/spack/spack/util/file_cache.py | 88 +++++++++++++++---------- 2 files changed, 58 insertions(+), 40 deletions(-) diff --git a/lib/spack/spack/test/util/file_cache.py b/lib/spack/spack/test/util/file_cache.py index cd9ce1c5b8defb..4af8a1ed0391d2 100644 --- a/lib/spack/spack/test/util/file_cache.py +++ b/lib/spack/spack/test/util/file_cache.py @@ -31,6 +31,11 @@ def test_write_and_read_cache_file(file_cache): assert text == "foobar\n" +def test_read_before_init(file_cache): + with file_cache.read_transaction("test.yaml") as stream: + assert stream is None + + @pytest.mark.not_on_windows("Locks not supported on Windows") def test_failed_write_and_read_cache_file(file_cache): """Test failing to write then attempting to read a cached file.""" @@ -46,11 +51,6 @@ def test_failed_write_and_read_cache_file(file_cache): # File does not exist assert not file_cache.init_entry("test.yaml") - # Attempting to read will cause a FileNotFoundError - with pytest.raises(FileNotFoundError, match=r"test\.yaml"): - with file_cache.read_transaction("test.yaml"): - pass - def test_write_and_remove_cache_file(file_cache): """Test two write transactions on a cached file. Then try to remove an diff --git a/lib/spack/spack/util/file_cache.py b/lib/spack/spack/util/file_cache.py index bc75704d757870..e72d431f978657 100644 --- a/lib/spack/spack/util/file_cache.py +++ b/lib/spack/spack/util/file_cache.py @@ -7,6 +7,7 @@ import math import os import shutil +from typing import IO, Optional, Tuple from llnl.util.filesystem import mkdirp, rename @@ -14,6 +15,51 @@ from spack.util.lock import Lock, ReadTransaction, WriteTransaction +def _maybe_open(path: str) -> Optional[IO[str]]: + try: + return open(path, "r") + except OSError as e: + if e.errno != errno.ENOENT: + raise + return None + + +class ReadContextManager: + def __init__(self, path: str) -> None: + self.path = path + + def __enter__(self) -> Optional[IO[str]]: + """Return a file object for the cache if it exists.""" + self.cache_file = _maybe_open(self.path) + return self.cache_file + + def __exit__(self, type, value, traceback): + if self.cache_file: + self.cache_file.close() + + +class WriteContextManager: + def __init__(self, path: str) -> None: + self.path = path + self.tmp_path = f"{self.path}.tmp" + + def __enter__(self) -> Tuple[Optional[IO[str]], IO[str]]: + """Return (old_file, new_file) file objects, where old_file is optional.""" + self.old_file = _maybe_open(self.path) + self.new_file = open(self.tmp_path, "w") + return self.old_file, self.new_file + + def __exit__(self, type, value, traceback): + if self.old_file: + self.old_file.close() + self.new_file.close() + + if value: + os.remove(self.tmp_path) + else: + rename(self.tmp_path, self.path) + + class FileCache: """This class manages cached data in the filesystem. @@ -107,7 +153,8 @@ def read_transaction(self, key): cache_file.read() """ - return ReadTransaction(self._get_lock(key), acquire=lambda: open(self.cache_path(key))) + path = self.cache_path(key) + return ReadTransaction(self._get_lock(key), acquire=lambda: ReadContextManager(path)) def write_transaction(self, key): """Get a write transaction on a file cache item. @@ -117,40 +164,11 @@ def write_transaction(self, key): moves the file into place on top of the old file atomically. """ - filename = self.cache_path(key) - if os.path.exists(filename) and not os.access(filename, os.W_OK): - raise CacheError( - "Insufficient permissions to write to file cache at {0}".format(filename) - ) - - # TODO: this nested context manager adds a lot of complexity and - # TODO: is pretty hard to reason about in llnl.util.lock. At some - # TODO: point we should just replace it with functions and simplify - # TODO: the locking code. - class WriteContextManager: - def __enter__(cm): - cm.orig_filename = self.cache_path(key) - cm.orig_file = None - if os.path.exists(cm.orig_filename): - cm.orig_file = open(cm.orig_filename, "r") - - cm.tmp_filename = self.cache_path(key) + ".tmp" - cm.tmp_file = open(cm.tmp_filename, "w") - - return cm.orig_file, cm.tmp_file - - def __exit__(cm, type, value, traceback): - if cm.orig_file: - cm.orig_file.close() - cm.tmp_file.close() - - if value: - os.remove(cm.tmp_filename) - - else: - rename(cm.tmp_filename, cm.orig_filename) - - return WriteTransaction(self._get_lock(key), acquire=WriteContextManager) + path = self.cache_path(key) + if os.path.exists(path) and not os.access(path, os.W_OK): + raise CacheError(f"Insufficient permissions to write to file cache at {path}") + + return WriteTransaction(self._get_lock(key), acquire=lambda: WriteContextManager(path)) def mtime(self, key) -> float: """Return modification time of cache file, or -inf if it does not exist. From ef220daaca8eff90cd2001ff179b8cb37fab0390 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:48:50 -0700 Subject: [PATCH 151/615] build(deps): bump actions/checkout from 4.2.1 to 4.2.2 (#47185) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871...11bd71901bbe5b1630ceea73d27597364c9af683) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/audit.yaml | 2 +- .github/workflows/bootstrap.yml | 10 +++++----- .github/workflows/build-containers.yml | 2 +- .github/workflows/ci.yaml | 2 +- .github/workflows/coverage.yml | 2 +- .github/workflows/nightly-win-builds.yml | 2 +- .github/workflows/unit_tests.yaml | 12 ++++++------ .github/workflows/valid-style.yml | 14 +++++++------- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml index 46e6182f1b0341..54760393578f92 100644 --- a/.github/workflows/audit.yaml +++ b/.github/workflows/audit.yaml @@ -28,7 +28,7 @@ jobs: run: shell: ${{ matrix.system.shell }} steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{inputs.python_version}} diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 5b21b01d2d7593..90b31a098ae90d 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -37,7 +37,7 @@ jobs: make patch unzip which xz python3 python3-devel tree \ cmake bison - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - name: Bootstrap clingo @@ -60,7 +60,7 @@ jobs: run: | brew install cmake bison tree - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -90,7 +90,7 @@ jobs: sudo rm $(command -v gpg gpg2 patchelf) done - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - name: Bootstrap GnuPG @@ -117,7 +117,7 @@ jobs: sudo rm $(command -v gpg gpg2 patchelf) done - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -171,7 +171,7 @@ jobs: runs-on: "windows-latest" steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index a3db56bba1620a..9151898b86741f 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -55,7 +55,7 @@ jobs: if: github.repository == 'spack/spack' steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 id: docker_meta diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8acba1839d8c61..2024014f1bb58d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: core: ${{ steps.filter.outputs.core }} packages: ${{ steps.filter.outputs.packages }} steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 if: ${{ github.event_name == 'push' }} with: fetch-depth: 0 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index fe1b4efb9e3e16..c9f1a2e004a62c 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -8,7 +8,7 @@ jobs: upload: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' diff --git a/.github/workflows/nightly-win-builds.yml b/.github/workflows/nightly-win-builds.yml index 74aca3ec832dec..11f19c9244c288 100644 --- a/.github/workflows/nightly-win-builds.yml +++ b/.github/workflows/nightly-win-builds.yml @@ -14,7 +14,7 @@ jobs: build-paraview-deps: runs-on: windows-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index eae2b990b1684f..58525d405ce020 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -40,7 +40,7 @@ jobs: on_develop: false steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -89,7 +89,7 @@ jobs: shell: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -130,7 +130,7 @@ jobs: dnf install -y \ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ make patch tcl unzip which xz - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Setup repo and non-root user run: | git --version @@ -149,7 +149,7 @@ jobs: clingo-cffi: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -188,7 +188,7 @@ jobs: os: [macos-13, macos-14] python-version: ["3.11"] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -226,7 +226,7 @@ jobs: powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0} runs-on: windows-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index 8adedddf045693..b72acfaadd5cd0 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -18,7 +18,7 @@ jobs: validate: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' @@ -35,7 +35,7 @@ jobs: style: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b @@ -70,7 +70,7 @@ jobs: dnf install -y \ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ make patch tcl unzip which xz - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Setup repo and non-root user run: | git --version @@ -98,14 +98,14 @@ jobs: # PR: use the base of the PR as the old commit - name: Checkout PR base commit if: github.event_name == 'pull_request' - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: ref: ${{ github.event.pull_request.base.sha }} path: old # not a PR: use the previous commit as the old commit - name: Checkout previous commit if: github.event_name != 'pull_request' - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 2 path: old @@ -114,11 +114,11 @@ jobs: run: git -C old reset --hard HEAD^ - name: Checkout new commit - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: path: new - name: Install circular import checker - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: repository: haampie/circular-import-fighter ref: 555519c6fd5564fd2eb844e7b87e84f4d12602e2 From b63cbe4e6e59595b831803f277c8a49b1e4f9d72 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 23 Oct 2024 15:06:13 +0200 Subject: [PATCH 152/615] Replace MultiProcessFd with Connection objects Connection objects are Python version, platform and multiprocessing start method independent, so better to use those than a mix of plain file descriptors and inadequate guesses in the child process whether it was forked or not. This also allows us to delete the now redundant MultiProcessFd class, hopefully making things a bit easier to follow. --- lib/spack/llnl/util/tty/log.py | 146 +++++++++------------------ lib/spack/spack/build_environment.py | 56 ++++------ 2 files changed, 68 insertions(+), 134 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 9d346fdabb42ee..12d79e8d0452d6 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -10,7 +10,6 @@ import errno import io import multiprocessing -import multiprocessing.connection import os import re import select @@ -19,9 +18,10 @@ import threading import traceback from contextlib import contextmanager +from multiprocessing.connection import Connection from threading import Thread from types import ModuleType -from typing import Optional +from typing import Callable, Optional import llnl.util.tty as tty @@ -345,48 +345,6 @@ def close(self): self.file.close() -class MultiProcessFd: - """Return an object which stores a file descriptor and can be passed as an - argument to a function run with ``multiprocessing.Process``, such that - the file descriptor is available in the subprocess. It provides access via - the `fd` property. - - This object takes control over the associated FD: files opened from this - using `fdopen` need to use `closefd=False`. - """ - - # As for why you have to fdopen(..., closefd=False): when a - # multiprocessing.connection.Connection object stores an fd, it assumes - # control over it, and will attempt to close it when gc'ed during __del__; - # if you fdopen(multiprocessfd.fd, closefd=True) then the resulting file - # will also assume control, and you can see warnings when there is an - # attempted double close. - - def __init__(self, fd): - self._connection = None - self._fd = None - if sys.version_info >= (3, 8): - self._connection = multiprocessing.connection.Connection(fd) - else: - self._fd = fd - - @property - def fd(self): - if self._connection: - return self._connection.fileno() - else: - return self._fd - - def close(self): - """Rather than `.close()`ing any file opened from the associated - `.fd`, the `MultiProcessFd` should be closed with this. - """ - if self._connection: - self._connection.close() - else: - os.close(self._fd) - - @contextmanager def replace_environment(env): """Replace the current environment (`os.environ`) with `env`. @@ -545,9 +503,7 @@ def __enter__(self): self._saved_debug = tty._debug # OS-level pipe for redirecting output to logger - read_fd, write_fd = os.pipe() - - read_multiprocess_fd = MultiProcessFd(read_fd) + read_fd, write_fd = multiprocessing.Pipe(duplex=False) # Multiprocessing pipe for communication back from the daemon # Currently only used to save echo value between uses @@ -556,10 +512,10 @@ def __enter__(self): # Sets a daemon that writes to file what it reads from a pipe try: # need to pass this b/c multiprocessing closes stdin in child. - input_multiprocess_fd = None + input_fd = None try: if sys.stdin.isatty(): - input_multiprocess_fd = MultiProcessFd(os.dup(sys.stdin.fileno())) + input_fd = Connection(os.dup(sys.stdin.fileno())) except BaseException: # just don't forward input if this fails pass @@ -568,8 +524,8 @@ def __enter__(self): self.process = multiprocessing.Process( target=_writer_daemon, args=( - input_multiprocess_fd, - read_multiprocess_fd, + input_fd, + read_fd, write_fd, self.echo, self.log_file, @@ -581,9 +537,9 @@ def __enter__(self): self.process.start() finally: - if input_multiprocess_fd: - input_multiprocess_fd.close() - read_multiprocess_fd.close() + if input_fd: + input_fd.close() + read_fd.close() # Flush immediately before redirecting so that anything buffered # goes to the original stream @@ -601,9 +557,9 @@ def __enter__(self): self._saved_stderr = os.dup(sys.stderr.fileno()) # redirect to the pipe we created above - os.dup2(write_fd, sys.stdout.fileno()) - os.dup2(write_fd, sys.stderr.fileno()) - os.close(write_fd) + os.dup2(write_fd.fileno(), sys.stdout.fileno()) + os.dup2(write_fd.fileno(), sys.stderr.fileno()) + write_fd.close() else: # Handle I/O the Python way. This won't redirect lower-level @@ -616,7 +572,7 @@ def __enter__(self): self._saved_stderr = sys.stderr # create a file object for the pipe; redirect to it. - pipe_fd_out = os.fdopen(write_fd, "w") + pipe_fd_out = os.fdopen(write_fd.fileno(), "w", closefd=False) sys.stdout = pipe_fd_out sys.stderr = pipe_fd_out @@ -865,14 +821,14 @@ def force_echo(self): def _writer_daemon( - stdin_multiprocess_fd, - read_multiprocess_fd, - write_fd, - echo, - log_file_wrapper, - control_pipe, - filter_fn, -): + stdin_fd: Optional[Connection], + read_fd: Connection, + write_fd: Connection, + echo: bool, + log_file_wrapper: FileWrapper, + control_fd: Connection, + filter_fn: Optional[Callable[[str], str]], +) -> None: """Daemon used by ``log_output`` to write to a log file and to ``stdout``. The daemon receives output from the parent process and writes it both @@ -909,43 +865,37 @@ def _writer_daemon( ``StringIO`` in the parent. This is mainly for testing. Arguments: - stdin_multiprocess_fd (int): input from the terminal - read_multiprocess_fd (int): pipe for reading from parent's redirected - stdout - echo (bool): initial echo setting -- controlled by user and - preserved across multiple writer daemons - log_file_wrapper (FileWrapper): file to log all output - control_pipe (Pipe): multiprocessing pipe on which to send control - information to the parent - filter_fn (callable, optional): function to filter each line of output + stdin_fd: optional input from the terminal + read_fd: pipe for reading from parent's redirected stdout + echo: initial echo setting -- controlled by user and preserved across multiple writer + daemons + log_file_wrapper: file to log all output + control_pipe: multiprocessing pipe on which to send control information to the parent + filter_fn: optional function to filter each line of output """ - # If this process was forked, then it will inherit file descriptors from - # the parent process. This process depends on closing all instances of - # write_fd to terminate the reading loop, so we close the file descriptor - # here. Forking is the process spawning method everywhere except Mac OS - # for Python >= 3.8 and on Windows - if sys.version_info < (3, 8) or sys.platform != "darwin": - os.close(write_fd) + # This process depends on closing all instances of write_pipe to terminate the reading loop + write_fd.close() # 1. Use line buffering (3rd param = 1) since Python 3 has a bug # that prevents unbuffered text I/O. # 2. Python 3.x before 3.7 does not open with UTF-8 encoding by default - in_pipe = os.fdopen(read_multiprocess_fd.fd, "r", 1, encoding="utf-8", closefd=False) + # 3. closefd=False because Connection has "ownership" + read_file = os.fdopen(read_fd.fileno(), "r", 1, encoding="utf-8", closefd=False) - if stdin_multiprocess_fd: - stdin = os.fdopen(stdin_multiprocess_fd.fd, closefd=False) + if stdin_fd: + stdin_file = os.fdopen(stdin_fd.fileno(), closefd=False) else: - stdin = None + stdin_file = None # list of streams to select from - istreams = [in_pipe, stdin] if stdin else [in_pipe] + istreams = [read_file, stdin_file] if stdin_file else [read_file] force_echo = False # parent can force echo for certain output log_file = log_file_wrapper.unwrap() try: - with keyboard_input(stdin) as kb: + with keyboard_input(stdin_file) as kb: while True: # fix the terminal settings if we recently came to # the foreground @@ -958,12 +908,12 @@ def _writer_daemon( # Allow user to toggle echo with 'v' key. # Currently ignores other chars. # only read stdin if we're in the foreground - if stdin in rlist and not _is_background_tty(stdin): + if stdin_file and stdin_file in rlist and not _is_background_tty(stdin_file): # it's possible to be backgrounded between the above # check and the read, so we ignore SIGTTIN here. with ignore_signal(signal.SIGTTIN): try: - if stdin.read(1) == "v": + if stdin_file.read(1) == "v": echo = not echo except IOError as e: # If SIGTTIN is ignored, the system gives EIO @@ -972,13 +922,13 @@ def _writer_daemon( if e.errno != errno.EIO: raise - if in_pipe in rlist: + if read_file in rlist: line_count = 0 try: while line_count < 100: # Handle output from the calling process. try: - line = _retry(in_pipe.readline)() + line = _retry(read_file.readline)() except UnicodeDecodeError: # installs like --test=root gpgme produce non-UTF8 logs line = "\n" @@ -1007,7 +957,7 @@ def _writer_daemon( if xoff in controls: force_echo = False - if not _input_available(in_pipe): + if not _input_available(read_file): break finally: if line_count > 0: @@ -1022,14 +972,14 @@ def _writer_daemon( finally: # send written data back to parent if we used a StringIO if isinstance(log_file, io.StringIO): - control_pipe.send(log_file.getvalue()) + control_fd.send(log_file.getvalue()) log_file_wrapper.close() - read_multiprocess_fd.close() - if stdin_multiprocess_fd: - stdin_multiprocess_fd.close() + read_fd.close() + if stdin_fd: + stdin_fd.close() # send echo value back to the parent so it can be preserved. - control_pipe.send(echo) + control_fd.send(echo) def _retry(function): diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index e6203570226402..33586eccde2974 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -44,6 +44,7 @@ from collections import defaultdict from enum import Flag, auto from itertools import chain +from multiprocessing.connection import Connection from typing import Callable, Dict, List, Optional, Set, Tuple import archspec.cpu @@ -54,7 +55,6 @@ from llnl.util.lang import dedupe, stable_partition from llnl.util.symlink import symlink from llnl.util.tty.color import cescape, colorize -from llnl.util.tty.log import MultiProcessFd import spack.build_systems._checks import spack.build_systems.cmake @@ -1143,10 +1143,10 @@ def _setup_pkg_and_run( serialized_pkg: "spack.subprocess_context.PackageInstallContext", function: Callable, kwargs: Dict, - write_pipe: multiprocessing.connection.Connection, - input_multiprocess_fd: Optional[MultiProcessFd], - jsfd1: Optional[MultiProcessFd], - jsfd2: Optional[MultiProcessFd], + write_pipe: Connection, + input_pipe: Optional[Connection], + jsfd1: Optional[Connection], + jsfd2: Optional[Connection], ): """Main entry point in the child process for Spack builds. @@ -1188,13 +1188,12 @@ def _setup_pkg_and_run( context: str = kwargs.get("context", "build") try: - # We are in the child process. Python sets sys.stdin to - # open(os.devnull) to prevent our process and its parent from - # simultaneously reading from the original stdin. But, we assume - # that the parent process is not going to read from it till we - # are done with the child, so we undo Python's precaution. - if input_multiprocess_fd is not None: - sys.stdin = os.fdopen(input_multiprocess_fd.fd, closefd=False) + # We are in the child process. Python sets sys.stdin to open(os.devnull) to prevent our + # process and its parent from simultaneously reading from the original stdin. But, we + # assume that the parent process is not going to read from it till we are done with the + # child, so we undo Python's precaution. closefd=False since Connection has ownership. + if input_pipe is not None: + sys.stdin = os.fdopen(input_pipe.fileno(), closefd=False) pkg = serialized_pkg.restore() @@ -1263,8 +1262,8 @@ def _setup_pkg_and_run( finally: write_pipe.close() - if input_multiprocess_fd is not None: - input_multiprocess_fd.close() + if input_pipe is not None: + input_pipe.close() def start_build_process(pkg, function, kwargs): @@ -1291,23 +1290,9 @@ def child_fun(): If something goes wrong, the child process catches the error and passes it to the parent wrapped in a ChildError. The parent is expected to handle (or re-raise) the ChildError. - - This uses `multiprocessing.Process` to create the child process. The - mechanism used to create the process differs on different operating - systems and for different versions of Python. In some cases "fork" - is used (i.e. the "fork" system call) and some cases it starts an - entirely new Python interpreter process (in the docs this is referred - to as the "spawn" start method). Breaking it down by OS: - - - Linux always uses fork. - - Mac OS uses fork before Python 3.8 and "spawn" for 3.8 and after. - - Windows always uses the "spawn" start method. - - For more information on `multiprocessing` child process creation - mechanisms, see https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods """ read_pipe, write_pipe = multiprocessing.Pipe(duplex=False) - input_multiprocess_fd = None + input_fd = None jobserver_fd1 = None jobserver_fd2 = None @@ -1316,14 +1301,13 @@ def child_fun(): try: # Forward sys.stdin when appropriate, to allow toggling verbosity if sys.platform != "win32" and sys.stdin.isatty() and hasattr(sys.stdin, "fileno"): - input_fd = os.dup(sys.stdin.fileno()) - input_multiprocess_fd = MultiProcessFd(input_fd) + input_fd = Connection(os.dup(sys.stdin.fileno())) mflags = os.environ.get("MAKEFLAGS", False) if mflags: m = re.search(r"--jobserver-[^=]*=(\d),(\d)", mflags) if m: - jobserver_fd1 = MultiProcessFd(int(m.group(1))) - jobserver_fd2 = MultiProcessFd(int(m.group(2))) + jobserver_fd1 = Connection(int(m.group(1))) + jobserver_fd2 = Connection(int(m.group(2))) p = multiprocessing.Process( target=_setup_pkg_and_run, @@ -1332,7 +1316,7 @@ def child_fun(): function, kwargs, write_pipe, - input_multiprocess_fd, + input_fd, jobserver_fd1, jobserver_fd2, ), @@ -1352,8 +1336,8 @@ def child_fun(): finally: # Close the input stream in the parent process - if input_multiprocess_fd is not None: - input_multiprocess_fd.close() + if input_fd is not None: + input_fd.close() def exitcode_msg(p): typ = "exit" if p.exitcode >= 0 else "signal" From ae306b73c3b6f61d42e45bfff2c3fbd5d2bb527d Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 23 Oct 2024 15:46:15 +0200 Subject: [PATCH 153/615] Avoid a socket to communicate effectively a bit --- lib/spack/llnl/util/tty/log.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 12d79e8d0452d6..177da3f108358e 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -502,12 +502,12 @@ def __enter__(self): # forcing debug output. self._saved_debug = tty._debug - # OS-level pipe for redirecting output to logger + # Pipe for redirecting output to logger read_fd, write_fd = multiprocessing.Pipe(duplex=False) - # Multiprocessing pipe for communication back from the daemon + # Pipe for communication back from the daemon # Currently only used to save echo value between uses - self.parent_pipe, child_pipe = multiprocessing.Pipe() + self.parent_pipe, child_pipe = multiprocessing.Pipe(duplex=False) # Sets a daemon that writes to file what it reads from a pipe try: From 7d86670826cb0e0b17e37207ecb2fb2ae4e62327 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 24 Oct 2024 11:29:05 +0200 Subject: [PATCH 154/615] ensure write_fd.close() isn't called when sys.std* cannot be redirected --- lib/spack/llnl/util/tty/log.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 177da3f108358e..534472dbecdf3e 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -503,7 +503,7 @@ def __enter__(self): self._saved_debug = tty._debug # Pipe for redirecting output to logger - read_fd, write_fd = multiprocessing.Pipe(duplex=False) + read_fd, self.write_fd = multiprocessing.Pipe(duplex=False) # Pipe for communication back from the daemon # Currently only used to save echo value between uses @@ -526,7 +526,7 @@ def __enter__(self): args=( input_fd, read_fd, - write_fd, + self.write_fd, self.echo, self.log_file, child_pipe, @@ -557,9 +557,9 @@ def __enter__(self): self._saved_stderr = os.dup(sys.stderr.fileno()) # redirect to the pipe we created above - os.dup2(write_fd.fileno(), sys.stdout.fileno()) - os.dup2(write_fd.fileno(), sys.stderr.fileno()) - write_fd.close() + os.dup2(self.write_fd.fileno(), sys.stdout.fileno()) + os.dup2(self.write_fd.fileno(), sys.stderr.fileno()) + self.write_fd.close() else: # Handle I/O the Python way. This won't redirect lower-level @@ -572,7 +572,7 @@ def __enter__(self): self._saved_stderr = sys.stderr # create a file object for the pipe; redirect to it. - pipe_fd_out = os.fdopen(write_fd.fileno(), "w", closefd=False) + pipe_fd_out = os.fdopen(self.write_fd.fileno(), "w", closefd=False) sys.stdout = pipe_fd_out sys.stderr = pipe_fd_out @@ -608,6 +608,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): else: sys.stdout = self._saved_stdout sys.stderr = self._saved_stderr + self.write_fd.close() # print log contents in parent if needed. if self.log_file.write_in_parent: From a2a3a83a26efe8111ab1a33f882f5dacd1199161 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 25 Oct 2024 11:45:14 -0700 Subject: [PATCH 155/615] Packages/javacerts (#47201) * new openjdk variant to symlink system certificate * new openjdk variant to symlink system certificate * new openjdk variant to symlink system certificate * new openjdk variant to symlink system certificate * Update var/spack/repos/builtin/packages/openjdk/package.py Co-authored-by: Alec Scott --------- Co-authored-by: Alec Scott --- .../repos/builtin/packages/openjdk/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py index a884eaddbb6a4b..bcaec85a861270 100644 --- a/var/spack/repos/builtin/packages/openjdk/package.py +++ b/var/spack/repos/builtin/packages/openjdk/package.py @@ -406,6 +406,14 @@ class Openjdk(Package): version(ver, sha256=pkg[0], url=pkg[1], preferred=is_preferred) + variant( + "certs", + default="none", + values=("system", "none"), + multi=False, + description=("symlink system certs if requested, otherwise use default package version"), + ) + provides("java@21", when="@21.0:21") provides("java@17", when="@17.0:17") provides("java@16", when="@16.0:16") @@ -479,6 +487,37 @@ def install(self, spec, prefix): top_dir = "Contents/Home/" if platform.system() == "Darwin" else "." install_tree(top_dir, prefix) + @run_after("install") + def link_system_certs(self): + if self.spec.variants["certs"].value != "system": + return + + system_dirs = [ + # CentOS, Fedora, RHEL + "/etc/pki/java", + # Ubuntu + "/etc/ssl/certs/java", + # OpenSUSE + "/var/lib/ca-certificates/java-certs", + ] + + for directory in system_dirs: + # Link configuration file + sys_certs = join_path(directory, "cacerts") + + # path for 1.8.0 versions + pkg_dir = join_path(self.prefix, "jre", "lib", "security") + if not os.path.exists(pkg_dir): + # path for version 11 and newer + pkg_dir = join_path(self.prefix, "lib", "security") + if not os.path.exists(pkg_dir): + break + pkg_conf = join_path(pkg_dir, "cacerts") + if os.path.exists(sys_certs): + if os.path.exists(pkg_conf): + os.remove(pkg_conf) + os.symlink(sys_certs, pkg_conf) + def setup_run_environment(self, env): """Set JAVA_HOME.""" From ad0b2564073ce91dfad2a49998c285525148a28a Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 25 Oct 2024 13:17:49 -0600 Subject: [PATCH 156/615] Intel/Oneapi compilers: suppress warnings when using Cray wrappers (#47046) #44588 we added logic to suppress deprecation warnings for the Intel classic compilers. This depended on matching against * The compiler names (looking for icc, icpc, ifort) * The compiler version When using an Intel compiler with fortran wrappers, the first check always fails. To support using the fortran wrappers (in combination with the classic Intel compilers), we remove the first check and suppress if just the version matches. This works because: * The newer compilers like icx can handle (ignore) the flags that suppress deprecation warnings * The Cray wrappers pass the underlying compiler version (e.g. they report what icc would report) --- lib/spack/spack/compilers/intel.py | 5 ++--- lib/spack/spack/compilers/oneapi.py | 9 ++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 4990da3cb06aa5..3002ba7f6e72c2 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -124,9 +124,8 @@ def setup_custom_environment(self, pkg, env): # Edge cases for Intel's oneAPI compilers when using the legacy classic compilers: # Always pass flags to disable deprecation warnings, since these warnings can # confuse tools that parse the output of compiler commands (e.g. version checks). - if self.cc and self.cc.endswith("icc") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2023"): env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441") - if self.cxx and self.cxx.endswith("icpc") and self.real_version >= Version("2021"): env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441") - if self.fc and self.fc.endswith("ifort") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2024"): env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448") diff --git a/lib/spack/spack/compilers/oneapi.py b/lib/spack/spack/compilers/oneapi.py index b0cfadc505ac07..c06a55f39621b7 100644 --- a/lib/spack/spack/compilers/oneapi.py +++ b/lib/spack/spack/compilers/oneapi.py @@ -151,11 +151,14 @@ def setup_custom_environment(self, pkg, env): # Edge cases for Intel's oneAPI compilers when using the legacy classic compilers: # Always pass flags to disable deprecation warnings, since these warnings can # confuse tools that parse the output of compiler commands (e.g. version checks). - if self.cc and self.cc.endswith("icc") and self.real_version >= Version("2021"): + # This is really only needed for Fortran, since oneapi@ should be using either + # icx+icpx+ifx or icx+icpx+ifort. But to be on the safe side (some users may + # want to try to swap icpx against icpc, for example), and since the Intel LLVM + # compilers accept these diag-disable flags, we apply them for all compilers. + if self.real_version >= Version("2021") and self.real_version <= Version("2023"): env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441") - if self.cxx and self.cxx.endswith("icpc") and self.real_version >= Version("2021"): env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441") - if self.fc and self.fc.endswith("ifort") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2024"): env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448") # 2024 release bumped the libsycl version because of an ABI From 7b27aed4c85b3cf492ec8686cbcd30f302ea0d52 Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:23:29 -0400 Subject: [PATCH 157/615] Normalize Spack Win entry points (#38648) * Normalize Spack Win entrypoints Currently Spack has multiple entrypoints on Windows that in addition to differing from *nix implementations, differ from shell to shell on Windows. This is a bit confusing for new users and in general unnecessary. This PR adds a normal setup script for the batch shell while preserving the previous "click from file explorer for spack shell" behavior. Additionally adds a shell title to both powershell and cmd letting users know this is a Spack shell * remove doskeys --- bin/spack_cmd.bat | 66 ++---------------------- lib/spack/spack/environment/shell.py | 2 - share/spack/setup-env.bat | 77 ++++++++++++++++++++++++++++ share/spack/setup-env.ps1 | 1 + 4 files changed, 81 insertions(+), 65 deletions(-) create mode 100644 share/spack/setup-env.bat diff --git a/bin/spack_cmd.bat b/bin/spack_cmd.bat index 392e42d29b63db..da7b67e3bc5ae6 100644 --- a/bin/spack_cmd.bat +++ b/bin/spack_cmd.bat @@ -1,71 +1,11 @@ @ECHO OFF -setlocal EnableDelayedExpansion :: (c) 2021 Lawrence Livermore National Laboratory :: To use this file independently of Spack's installer, execute this script in its directory, or add the :: associated bin directory to your PATH. Invoke to launch Spack Shell. :: :: source_dir/spack/bin/spack_cmd.bat :: -pushd %~dp0.. -set SPACK_ROOT=%CD% -pushd %CD%\.. -set spackinstdir=%CD% -popd - -:: Check if Python is on the PATH -if not defined python_pf_ver ( -(for /f "delims=" %%F in ('where python.exe') do ( - set "python_pf_ver=%%F" - goto :found_python - ) ) 2> NUL -) -:found_python -if not defined python_pf_ver ( - :: If not, look for Python from the Spack installer - :get_builtin - (for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do ( - set "python_ver=%%g")) 2> NUL - - if not defined python_ver ( - echo Python was not found on your system. - echo Please install Python or add Python to your PATH. - ) else ( - set "py_path=!spackinstdir!\!python_ver!" - set "py_exe=!py_path!\python.exe" - ) - goto :exitpoint -) else ( - :: Python is already on the path - set "py_exe=!python_pf_ver!" - (for /F "tokens=* USEBACKQ" %%F in ( - `"!py_exe!" --version`) do (set "output=%%F")) 2>NUL - if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin - goto :exitpoint -) -:exitpoint - -set "PATH=%SPACK_ROOT%\bin\;%PATH%" -if defined py_path ( - set "PATH=%py_path%;%PATH%" -) - -if defined py_exe ( - "%py_exe%" "%SPACK_ROOT%\bin\haspywin.py" -) - -set "EDITOR=notepad" - -DOSKEY spacktivate=spack env activate $* - -@echo ********************************************************************** -@echo ** Spack Package Manager -@echo ********************************************************************** - -IF "%1"=="" GOTO CONTINUE -set -GOTO:EOF - -:continue -set PROMPT=[spack] %PROMPT% -%comspec% /k +call "%~dp0..\share\spack\setup-env.bat" +pushd %SPACK_ROOT% +%comspec% /K diff --git a/lib/spack/spack/environment/shell.py b/lib/spack/spack/environment/shell.py index b1d87a48fd7649..bb2dea04c0297e 100644 --- a/lib/spack/spack/environment/shell.py +++ b/lib/spack/spack/environment/shell.py @@ -48,8 +48,6 @@ def activate_header(env, shell, prompt=None, view: Optional[str] = None): cmds += 'set "SPACK_ENV=%s"\n' % env.path if view: cmds += 'set "SPACK_ENV_VIEW=%s"\n' % view - # TODO: despacktivate - # TODO: prompt elif shell == "pwsh": cmds += "$Env:SPACK_ENV='%s'\n" % env.path if view: diff --git a/share/spack/setup-env.bat b/share/spack/setup-env.bat new file mode 100644 index 00000000000000..c3b91ece1fccdf --- /dev/null +++ b/share/spack/setup-env.bat @@ -0,0 +1,77 @@ +@ECHO OFF +setlocal EnableDelayedExpansion +:: (c) 2021 Lawrence Livermore National Laboratory +:: To use this file independently of Spack's installer, execute this script in its directory, or add the +:: associated bin directory to your PATH. Invoke to launch Spack Shell. +:: +:: source_dir/spack/bin/spack_cmd.bat +:: +pushd %~dp0..\.. +set SPACK_ROOT=%CD% +pushd %CD%\.. +set spackinstdir=%CD% +popd + + +:: Check if Python is on the PATH +if not defined python_pf_ver ( +(for /f "delims=" %%F in ('where python.exe') do ( + set "python_pf_ver=%%F" + goto :found_python + ) ) 2> NUL +) +:found_python +if not defined python_pf_ver ( + :: If not, look for Python from the Spack installer + :get_builtin + (for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do ( + set "python_ver=%%g")) 2> NUL + + if not defined python_ver ( + echo Python was not found on your system. + echo Please install Python or add Python to your PATH. + ) else ( + set "py_path=!spackinstdir!\!python_ver!" + set "py_exe=!py_path!\python.exe" + ) + goto :exitpoint +) else ( + :: Python is already on the path + set "py_exe=!python_pf_ver!" + (for /F "tokens=* USEBACKQ" %%F in ( + `"!py_exe!" --version`) do (set "output=%%F")) 2>NUL + if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin + goto :exitpoint +) +:exitpoint +endlocal & ( + set "SPACK_ROOT=%SPACK_ROOT%" + set "spackinstdir=%spackinstdir%" + set "py_path=%py_path%" + set "py_exe=%py_exe%" +) + +set "PATH=%SPACK_ROOT%\bin\;%PATH%" +if defined py_path ( + set "PATH=%py_path%;%PATH%" +) + +if defined py_exe ( + "%py_exe%" "%SPACK_ROOT%\bin\haspywin.py" +) + +if not defined EDITOR ( + set EDITOR=notepad +) + +@echo ********************************************************************** +@echo ** Spack Package Manager +@echo ********************************************************************** + +IF "%1"=="" GOTO CONTINUE +set +GOTO:EOF + +:continue +title Spack +set PROMPT=[spack] %PROMPT% diff --git a/share/spack/setup-env.ps1 b/share/spack/setup-env.ps1 index d67e39f85bc471..88f91f261d07f4 100644 --- a/share/spack/setup-env.ps1 +++ b/share/spack/setup-env.ps1 @@ -60,5 +60,6 @@ function global:prompt $pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf "[spack] PS $pth>" } +[system.console]::title = "Spack" Pop-Location From 61d2d21acc9a023d40ad4ab0d52b672f1db399b1 Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 25 Oct 2024 14:15:35 -0600 Subject: [PATCH 158/615] Add Go 1.23.2, 1.22.8, and 1.22.7 (#47225) --- var/spack/repos/builtin/packages/go/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index bb073dccd12a12..0a7dffb912d6a5 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -41,7 +41,10 @@ class Go(Package): license("BSD-3-Clause") + version("1.23.2", sha256="36930162a93df417d90bd22c6e14daff4705baac2b02418edda671cdfa9cd07f") version("1.23.1", sha256="6ee44e298379d146a5e5aa6b1c5b5d5f5d0a3365eabdd70741e6e21340ec3b0d") + version("1.22.8", sha256="df12c23ebf19dea0f4bf46a22cbeda4a3eca6f474f318390ce774974278440b8") + version("1.22.7", sha256="66432d87d85e0cfac3edffe637d5930fc4ddf5793313fe11e4a0f333023c879f") version("1.22.6", sha256="9e48d99d519882579917d8189c17e98c373ce25abaebb98772e2927088992a51") version("1.22.4", sha256="fed720678e728a7ca30ba8d1ded1caafe27d16028fab0232b8ba8e22008fb784") From c8bebff7f5c5d805decfc340a4ff5791eb90ecc9 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 26 Oct 2024 00:16:31 -0700 Subject: [PATCH 159/615] Add `-t` short option for `spack --backtrace` (#47227) Signed-off-by: Todd Gamblin --- lib/spack/spack/main.py | 1 + share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 7493e993ab65c7..fc5423b5a26a98 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -489,6 +489,7 @@ def make_argument_parser(**kwargs): help="add stacktraces to all printed statements", ) parser.add_argument( + "-t", "--backtrace", action="store_true", default="SPACK_BACKTRACE" in os.environ, diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 10011a10b32de5..52f8a9ea416214 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -399,7 +399,7 @@ SPACK_ALIASES="concretise:concretize;containerise:containerize;rm:remove" _spack() { if $list_options then - SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace --backtrace -V --version --print-shell-vars" + SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace -t --backtrace -V --version --print-shell-vars" else SPACK_COMPREPLY="add arch audit blame bootstrap build-env buildcache cd change checksum ci clean clone commands compiler compilers concretize concretise config containerize containerise create debug deconcretize dependencies dependents deprecate dev-build develop diff docs edit env extensions external fetch find gc gpg graph help info install license list load location log-parse logs maintainers make-installer mark mirror module patch pkg providers pydoc python reindex remove rm repo resource restage solve spec stage style tags test test-env tutorial undevelop uninstall unit-test unload url verify versions view" fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 8ef18c63bd6605..84da6412f13c66 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -347,7 +347,7 @@ complete -c spack --erase # Everything below here is auto-generated. # spack -set -g __fish_spack_optspecs_spack h/help H/all-help color= c/config= C/config-scope= d/debug timestamp pdb e/env= D/env-dir= E/no-env use-env-repo k/insecure l/enable-locks L/disable-locks m/mock b/bootstrap p/profile sorted-profile= lines= v/verbose stacktrace backtrace V/version print-shell-vars= +set -g __fish_spack_optspecs_spack h/help H/all-help color= c/config= C/config-scope= d/debug timestamp pdb e/env= D/env-dir= E/no-env use-env-repo k/insecure l/enable-locks L/disable-locks m/mock b/bootstrap p/profile sorted-profile= lines= v/verbose stacktrace t/backtrace V/version print-shell-vars= complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a add -d 'add a spec to an environment' complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a arch -d 'print architecture information about this machine' complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a audit -d 'audit configuration files, packages, etc.' @@ -473,8 +473,8 @@ complete -c spack -n '__fish_spack_using_command ' -s v -l verbose -f -a verbose complete -c spack -n '__fish_spack_using_command ' -s v -l verbose -d 'print additional output during builds' complete -c spack -n '__fish_spack_using_command ' -l stacktrace -f -a stacktrace complete -c spack -n '__fish_spack_using_command ' -l stacktrace -d 'add stacktraces to all printed statements' -complete -c spack -n '__fish_spack_using_command ' -l backtrace -f -a backtrace -complete -c spack -n '__fish_spack_using_command ' -l backtrace -d 'always show backtraces for exceptions' +complete -c spack -n '__fish_spack_using_command ' -s t -l backtrace -f -a backtrace +complete -c spack -n '__fish_spack_using_command ' -s t -l backtrace -d 'always show backtraces for exceptions' complete -c spack -n '__fish_spack_using_command ' -s V -l version -f -a version complete -c spack -n '__fish_spack_using_command ' -s V -l version -d 'show version number and exit' complete -c spack -n '__fish_spack_using_command ' -l print-shell-vars -r -f -a print_shell_vars From 277f8596de54a0abbe63b9bcb9dc946d10c7ecef Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Sat, 26 Oct 2024 20:56:12 +0100 Subject: [PATCH 160/615] yosys: Update to version 0.46, also include 0.43, 0.44 and 0.45 (#47200) --- var/spack/repos/builtin/packages/yosys/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/yosys/package.py b/var/spack/repos/builtin/packages/yosys/package.py index 9678f16528d8e3..d37712955a6536 100644 --- a/var/spack/repos/builtin/packages/yosys/package.py +++ b/var/spack/repos/builtin/packages/yosys/package.py @@ -20,7 +20,7 @@ class Yosys(MakefilePackage): """ homepage = "https://yosyshq.net/yosys" - url = "https://github.com/YosysHQ/yosys/archive/refs/tags/yosys-0.42.tar.gz" + url = "https://github.com/YosysHQ/yosys/archive/refs/tags/yosys-0.46.tar.gz" git = "https://github.com/YosysHQ/yosys.git" maintainers("davekeeshan") @@ -29,6 +29,10 @@ class Yosys(MakefilePackage): version("master", branch="master") + version("0.46", commit="e97731b9dda91fa5fa53ed87df7c34163ba59a41", submodules=True) + version("0.45", commit="9ed031ddd588442f22be13ce608547a5809b62f0", submodules=True) + version("0.44", commit="80ba43d26264738c93900129dc0aab7fab36c53f", submodules=True) + version("0.43", commit="ead4718e567aed2e552dcfe46294b132aa04c158", submodules=True) version("0.42", commit="9b6afcf3f83fea413b57c3790c25ba43b9914ce2", submodules=True) version("0.41", sha256="b0037d0a5864550a07a72ba81346e52a7d5f76b3027ef1d7c71b975d2c8bd2b2") version("0.40", sha256="c1d42ad90d587b587210b40cf3c5584e41e20f656e8630c33b6583322e8b764e") From f5db757e66c234eb41dfe24bc032f7c92cf497f8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 27 Oct 2024 04:40:38 +0100 Subject: [PATCH 161/615] adios2: mark conflict with newer Python@3.11 for @:2.7 (#47219) --- var/spack/repos/builtin/packages/adios2/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 16481106dcd78c..6083c1ff8aa681 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -200,6 +200,9 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): depends_on("aws-sdk-cpp", when="+aws") depends_on("libcatalyst@2", when="+libcatalyst") + # error: invalid use of incomplete type 'PyFrameObject' {aka 'struct _frame'} + conflicts("^python@3.11:", when="@:2.7") + # Fix findmpi when called by dependees # See https://github.com/ornladios/ADIOS2/pull/1632 patch("cmake-update-findmpi.patch", when="@2.4.0") From bd2ddb8909550ea1a158b09ef268c2cedaf346d0 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Sun, 27 Oct 2024 00:22:58 -0400 Subject: [PATCH 162/615] byte-lite: new package (#47234) * byte-lite: new package * byte-lite: style adjustments --- .../builtin/packages/byte-lite/package.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 var/spack/repos/builtin/packages/byte-lite/package.py diff --git a/var/spack/repos/builtin/packages/byte-lite/package.py b/var/spack/repos/builtin/packages/byte-lite/package.py new file mode 100644 index 00000000000000..44dfe3b6417615 --- /dev/null +++ b/var/spack/repos/builtin/packages/byte-lite/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class ByteLite(CMakePackage): + """byte lite - A C++17-like byte type for C++98, C++11 and later + in a single-file header-only library""" + + homepage = "https://github.com/martinmoene/byte-lite" + url = "https://github.com/martinmoene/byte-lite/archive/refs/tags/v0.3.0.tar.gz" + + license("BSL-1.0", checked_by="pranav-sivaraman") + + version("0.3.0", sha256="1a19e237b12bb098297232b0a74ec08c18ac07ac5ac6e659c1d5d8a4ed0e4813") + + depends_on("cxx", type="build") + depends_on("cmake@3.5:", type="build") + + conflicts("%gcc@:4.7") + conflicts("%clang@:3.4") + conflicts("%apple-clang@:5") + conflicts("%mvsc@:5") + + def cmake_args(self): + return [self.define("BYTE_LITE_OPT_BUILD_TESTS", self.run_tests)] From 17f07523f5afc70d129995335a0e20778f35d4f4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 27 Oct 2024 05:24:51 +0100 Subject: [PATCH 163/615] py-alive-progress: support newer Python (#47220) --- var/spack/repos/builtin/packages/py-alive-progress/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-alive-progress/package.py b/var/spack/repos/builtin/packages/py-alive-progress/package.py index 944dce0a95f557..31c011e687a8e6 100644 --- a/var/spack/repos/builtin/packages/py-alive-progress/package.py +++ b/var/spack/repos/builtin/packages/py-alive-progress/package.py @@ -19,7 +19,7 @@ class PyAliveProgress(PythonPackage): version("2.4.1", sha256="089757c8197f27ad972ba27e1060f6db92368d83c736884e159034fd74865323") version("1.6.2", sha256="642e1ce98becf226c8c36bf24e10221085998c5465a357a66fb83b7dc618b43e") - depends_on("python@2.7:3.8", type=("build", "run")) + depends_on("python@2.7:3", type=("build", "run")) depends_on("python@3.6:3", type=("build", "run"), when="@2:") depends_on("python@3.7:3", type=("build", "run"), when="@2.2:") depends_on("py-setuptools", type="build") From 84ea389017c7706a437b7d1e98191eeb4f7b9858 Mon Sep 17 00:00:00 2001 From: Asa <59259908+AcerP-py@users.noreply.github.com> Date: Sun, 27 Oct 2024 00:36:23 -0400 Subject: [PATCH 164/615] py-olcf-velocity: new package (#47215) * Add package py-olcf-velocity * Removed trailing newline * Fixed packages description line length --------- Co-authored-by: Asa Rentschler --- .../packages/py-olcf-velocity/package.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-olcf-velocity/package.py diff --git a/var/spack/repos/builtin/packages/py-olcf-velocity/package.py b/var/spack/repos/builtin/packages/py-olcf-velocity/package.py new file mode 100644 index 00000000000000..6a36cb60498a94 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-olcf-velocity/package.py @@ -0,0 +1,30 @@ +# 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) + +from spack.package import * + + +class PyOlcfVelocity(PythonPackage): + """A tool to help with the maintenance of container build scripts on multiple systems, + backends (e.g podman or apptainer) and distros.""" + + homepage = "https://olcf.github.io/velocity/index.html" + pypi = "olcf_velocity/olcf_velocity-0.1.3.tar.gz" + + maintainers("AcerP-py") + + license("UNKNOWN", checked_by="AcerP-py") + + version("0.1.3", sha256="08bd82d464e8cab6c61cab095d460b927a18e082cadb663bd5f935cf651b5c03") + + depends_on("python@3.10:", type=("build", "run")) + + depends_on("py-pyyaml", type="run") + depends_on("py-networkx", type="run") + depends_on("py-colorama", type="run") + depends_on("py-loguru", type="run") + depends_on("py-typing-extensions", type="run") + + depends_on("py-setuptools", type="build") From 2761e650fafde1946623820cbe881e1d3f0b86f9 Mon Sep 17 00:00:00 2001 From: Andrew W Elble Date: Sun, 27 Oct 2024 01:28:26 -0400 Subject: [PATCH 165/615] gem5: new package (#47218) --- .../repos/builtin/packages/gem5/package.py | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gem5/package.py diff --git a/var/spack/repos/builtin/packages/gem5/package.py b/var/spack/repos/builtin/packages/gem5/package.py new file mode 100644 index 00000000000000..f18a478c3b7e00 --- /dev/null +++ b/var/spack/repos/builtin/packages/gem5/package.py @@ -0,0 +1,70 @@ +# 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) + + +from spack.package import * + + +class Gem5(SConsPackage): + """The gem5 simulator is a modular platform for computer-system + architecture research, encompassing system-level architecture as + well as processor microarchitecture. gem5 is a community led + project with an open governance model. gem5 was originally + conceived for computer architecture research in academia, but it + has grown to be used in computer system design by academia, + industry for research, and in teaching.""" + + homepage = "https://www.gem5.org" + git = "https://github.com/gem5/gem5" + url = "https://github.com/gem5/gem5/archive/refs/tags/v24.0.0.0.tar.gz" + + version("24.0.0.1", tag="v24.0.0.1", commit="b1a44b89c7bae73fae2dc547bc1f871452075b85") + version("24.0.0.0", tag="v24.0.0.0", commit="43769abaf05120fed1e4e0cfbb34619edbc10f3f") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("scons", type="build") + depends_on("py-mypy", type="build") + depends_on("py-pybind11", type="build") + depends_on("python") + depends_on("gettext") + depends_on("hdf5+cxx") + depends_on("protobuf") + depends_on("gperftools") + depends_on("graphviz+pangocairo", type=("build", "run")) + depends_on("py-pydot", type=("build", "run")) + depends_on("capstone") + + def patch(self): + filter_file( + " Environment(tools=[", + " Environment(ENV=os.environ, tools=[", + "SConstruct", + string=True, + ) + filter_file( + """conf.env['CONF']['HAVE_PERF_ATTR_EXCLUDE_HOST'] = conf.CheckMember(""", + """conf.env['CONF']['HAVE_PERF_ATTR_EXCLUDE_HOST'] = bool(conf.CheckMember(""", + "src/cpu/kvm/SConsopts", + string=True, + ) + filter_file( + """perf_event_attr', 'exclude_host')""", + """perf_event_attr', 'exclude_host'))""", + "src/cpu/kvm/SConsopts", + string=True, + ) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install("build/ALL/gem5.opt", prefix.bin) + + def build_args(self, spec, prefix): + args = [] + args.append("build/ALL/gem5.opt") + args.append(f"-j{spack.config.determine_number_of_jobs(parallel=True)}") + args.append("--ignore-style") + + return args From 19137b26533565153fda6cea4253b4ec7811d5d6 Mon Sep 17 00:00:00 2001 From: Jeff Hammond Date: Sun, 27 Oct 2024 07:53:48 +0200 Subject: [PATCH 166/615] add the USE_F90_ALLOCATABLE option to Spack (#47190) Signed-off-by: Jeff Hammond --- var/spack/repos/builtin/packages/nwchem/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 497ae0bf83872a..1e7d6472b8db04 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -46,6 +46,7 @@ class Nwchem(Package): depends_on("fortran", type="build") # generated variant("openmp", default=False, description="Enables OpenMP support") + variant("f90allocatable", default=False, description="Use F90 allocatable instead of MA") variant( "armci", values=("mpi-ts", "mpi-pr", "armcimpi", "mpi3", "openib", "ofi"), @@ -158,6 +159,9 @@ def install(self, spec, prefix): if spec.satisfies("+openmp"): args.extend(["USE_OPENMP=y"]) + if spec.satisfies("+f90allocatable"): + args.extend(["USE_F90_ALLOCATABLE=1"]) + if self.spec.variants["armci"].value == "armcimpi": armcimpi = spec["armci"] args.extend(["ARMCI_NETWORK=ARMCI"]) From 019e90ab36876489ac7cd9501eb8719647f58a94 Mon Sep 17 00:00:00 2001 From: Jeff Hammond Date: Sun, 27 Oct 2024 07:54:06 +0200 Subject: [PATCH 167/615] NWChem: add TCE_CUDA option (#47191) Signed-off-by: Jeff Hammond --- var/spack/repos/builtin/packages/nwchem/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 1e7d6472b8db04..a3882f55f12bbe 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -58,6 +58,7 @@ class Nwchem(Package): default=False, description="Enables rarely-used TCE features (CCSDTQ, CCSDTLR, EACCSD, IPCCSD, MRCC)", ) + variant("tcecuda", default=False, description="Enable TCE CCSD(T) CUDA support") variant("fftw3", default=False, description="Link against the FFTW library") variant("libxc", default=False, description="Support additional functionals via libxc") variant( @@ -87,6 +88,7 @@ class Nwchem(Package): depends_on("blas") depends_on("lapack") depends_on("mpi") + depends_on("cuda", when="+tcecuda") depends_on("armcimpi", when="armci=armcimpi") depends_on("libfabric", when="armci=ofi") depends_on("rdma-core", when="armci=openib") @@ -156,6 +158,12 @@ def install(self, spec, prefix): args.extend(["CCSDTLR=y"]) args.extend(["CCSDTQ=y"]) + if spec.satisfies("+tcecuda"): + args.extend(["TCE_CUDA=y"]) + args.extend(["CUDA_INCLUDE=-I{0}".format(self.spec["cuda"].headers.directories[0])]) + # args.extend(["CUDA_LIBS={0}".format(self.spec["cuda"].libs)]) + args.extend(["CUDA_LIBS=-L{0} -lcudart".format(self.spec["cuda"].libs.directories[0])]) + if spec.satisfies("+openmp"): args.extend(["USE_OPENMP=y"]) From c348891c07a3d6cdd4cd2b828086527bcc6f1e81 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 27 Oct 2024 06:56:13 +0100 Subject: [PATCH 168/615] pango: deprecate @:1.44 due to CVE (#47232) --- var/spack/repos/builtin/packages/pango/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 5e4db93eba4551..11930fe59f5aef 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -30,8 +30,14 @@ class Pango(MesonPackage): version("1.47.0", sha256="730db8652fc43188e03218c3374db9d152351f51fc7011b9acae6d0a6c92c367") version("1.46.2", sha256="d89fab5f26767261b493279b65cfb9eb0955cd44c07c5628d36094609fc51841") version("1.45.5", sha256="f61dd911de2d3318b43bbc56bd271637a46f9118a1ee4378928c06df8a1c1705") - version("1.44.6", sha256="3e1e41ba838737e200611ff001e3b304c2ca4cdbba63d200a20db0b0ddc0f86c") - version("1.42.4", sha256="1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-1010238 + version( + "1.44.6", sha256="3e1e41ba838737e200611ff001e3b304c2ca4cdbba63d200a20db0b0ddc0f86c" + ) + version( + "1.42.4", sha256="1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d" + ) depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated From 12a475e648a01177ed7495e1410b2c0cb11ad7de Mon Sep 17 00:00:00 2001 From: Beat Reichenbach <44111292+beatreichenbach@users.noreply.github.com> Date: Sun, 27 Oct 2024 04:37:49 -0400 Subject: [PATCH 169/615] feat: Add OpenColorIO option to OpenImageIO (#47237) * feat: Add OpenColorIO option to OpenImageIO * style: Pep 8 --------- Co-authored-by: Beat Reichenbach --- .../builtin/packages/opencolorio/package.py | 39 +++++++++++++++++++ .../builtin/packages/openimageio/package.py | 3 ++ .../builtin/packages/pystring/package.py | 21 ++++++++++ 3 files changed, 63 insertions(+) create mode 100644 var/spack/repos/builtin/packages/opencolorio/package.py create mode 100644 var/spack/repos/builtin/packages/pystring/package.py diff --git a/var/spack/repos/builtin/packages/opencolorio/package.py b/var/spack/repos/builtin/packages/opencolorio/package.py new file mode 100644 index 00000000000000..bed7b22eb3d0ec --- /dev/null +++ b/var/spack/repos/builtin/packages/opencolorio/package.py @@ -0,0 +1,39 @@ +# 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) + +from spack.package import * + + +class Opencolorio(CMakePackage): + """OpenColorIO (OCIO) is a complete color management solution geared towards motion + picture production with an emphasis on visual effects and computer animation.""" + + homepage = "https://opencolorio.readthedocs.io" + git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" + url = ( + "https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/refs/tags/v2.4.0.tar.gz" + ) + license("Apache-2.0") + + version("2.4.0", sha256="0ff3966b9214da0941b2b1cbdab3975a00a51fc6f3417fa860f98f5358f2c282") + + # Core dependencies + depends_on("cmake@3.14:", type="build") + depends_on("expat@2.2.8:") + depends_on("yaml-cpp@0.6.3:") + depends_on("imath@3.0.5:") + depends_on("pystring@1.1.3:") + + # Optional dependencies + variant("lcms", default=False, description="Little CMS for ociobakelut") + depends_on("lcms@2.2:", when="+lcms") + + variant("python", default=False, description="Build python bindings") + extends("python", when="+python") + depends_on("py-pybind11", when="+python", type=("build", "run")) + + def cmake_args(self): + args = ["-DOCIO_BUILD_PYTHON={0}".format("ON" if "+python" in self.spec else "OFF")] + return args diff --git a/var/spack/repos/builtin/packages/openimageio/package.py b/var/spack/repos/builtin/packages/openimageio/package.py index 4f03b0df35ed3c..fe48959156bc3b 100644 --- a/var/spack/repos/builtin/packages/openimageio/package.py +++ b/var/spack/repos/builtin/packages/openimageio/package.py @@ -42,6 +42,9 @@ class Openimageio(CMakePackage): variant("qt", default=False, description="Build qt viewer") depends_on("qt@5.6.0:+opengl", when="+qt") + variant("ocio", default=False, description="Support video frames") + depends_on("opencolorio@2.2:", when="+ocio") + def url_for_version(self, version): if version >= Version("2"): return super().url_for_version(version) diff --git a/var/spack/repos/builtin/packages/pystring/package.py b/var/spack/repos/builtin/packages/pystring/package.py new file mode 100644 index 00000000000000..9d69f87adb5a2d --- /dev/null +++ b/var/spack/repos/builtin/packages/pystring/package.py @@ -0,0 +1,21 @@ +# 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) + +from spack.package import * + + +class Pystring(CMakePackage): + """Pystring is a collection of C++ functions which match the interface and behavior + of python's string class methods using std::string.""" + + git = "https://github.com/imageworks/pystring" + url = "https://github.com/imageworks/pystring/archive/refs/tags/v1.1.4.tar.gz" + + license("Apache-2.0") + + version("1.1.4", sha256="49da0fe2a049340d3c45cce530df63a2278af936003642330287b68cefd788fb") + + # Core dependencies + depends_on("cmake@3.27.9:", type="build") From fea2171672737687195572d920cc911d3c194229 Mon Sep 17 00:00:00 2001 From: William R Tobin <4522899+wrtobin@users.noreply.github.com> Date: Sun, 27 Oct 2024 05:44:20 -0700 Subject: [PATCH 170/615] silo: resolve hdf5 develop-X.Y branch versions (#39344) --- var/spack/repos/builtin/packages/silo/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 58a2c12721abe0..3416a5c6108a23 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -142,8 +142,14 @@ def flag_handler(self, name, flags): # presented with an HDF5 API consistent with the HDF5 version. # Use the latest even-numbered API version, i.e. v1.13.1 uses # API v1.12 - maj_ver = int(spec["hdf5"].version[0]) - min_ver = int(spec["hdf5"].version[1]) + + # hdf5 support branches have a `develop` prefix + if "develop" in str(spec["hdf5"].version): + maj_ver = int(spec["hdf5"].version[1]) + min_ver = int(spec["hdf5"].version[2]) + else: + maj_ver = int(spec["hdf5"].version[0]) + min_ver = int(spec["hdf5"].version[1]) min_apiver = int(min_ver / 2) * 2 flags.append("-DH5_USE_{0}{1}_API".format(maj_ver, min_apiver)) From 47e70c5c3af3ae66f648f7fecb65cedfa8e9b0aa Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Sun, 27 Oct 2024 11:35:10 -0700 Subject: [PATCH 171/615] explicit splice: do not fail for bad config replacement if target not matched (#46925) Originally, concretization failed if the splice config points to an invalid replacement. This PR defers the check until we know the splice is needed, so that irrelevant splices with bad config cannot stop concretization. While I was at it, I improved an error message from an assert to a ValueError. --- lib/spack/spack/solver/asp.py | 20 ++++++++++++++++++-- lib/spack/spack/test/concretize.py | 24 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 92734e9afd5294..940aae0a72b608 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -3829,8 +3829,16 @@ def execute_explicit_splices(self): for splice_set in splice_config: target = splice_set["target"] replacement = spack.spec.Spec(splice_set["replacement"]) - assert replacement.abstract_hash - replacement.replace_hash() + + if not replacement.abstract_hash: + location = getattr( + splice_set["replacement"], "_start_mark", " at unknown line number" + ) + msg = f"Explicit splice replacement '{replacement}' does not include a hash.\n" + msg += f"{location}\n\n" + msg += " Splice replacements must be specified by hash" + raise InvalidSpliceError(msg) + transitive = splice_set.get("transitive", False) splice_triples.append((target, replacement, transitive)) @@ -3841,6 +3849,10 @@ def execute_explicit_splices(self): if target in current_spec: # matches root or non-root # e.g. mvapich2%gcc + + # The first iteration, we need to replace the abstract hash + if not replacement.concrete: + replacement.replace_hash() current_spec = current_spec.splice(replacement, transitive) new_key = NodeArgument(id=key.id, pkg=current_spec.name) specs[new_key] = current_spec @@ -4226,3 +4238,7 @@ def __init__(self, provided, conflicts): # Add attribute expected of the superclass interface self.required = None self.constraint_type = None + + +class InvalidSpliceError(spack.error.SpackError): + """For cases in which the splice configuration is invalid.""" diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index b56f05b6019cee..553d8fd6426791 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -2306,6 +2306,30 @@ def test_explicit_splices( assert "hdf5 ^zmpi" in captured.err assert str(spec) in captured.err + def test_explicit_splice_fails_nonexistent(mutable_config, mock_packages, mock_store): + splice_info = {"target": "mpi", "replacement": "mpich/doesnotexist"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + + with pytest.raises(spack.spec.InvalidHashError): + _ = spack.spec.Spec("hdf5^zmpi").concretized() + + def test_explicit_splice_fails_no_hash(mutable_config, mock_packages, mock_store): + splice_info = {"target": "mpi", "replacement": "mpich"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + + with pytest.raises(spack.solver.asp.InvalidSpliceError, match="must be specified by hash"): + _ = spack.spec.Spec("hdf5^zmpi").concretized() + + def test_explicit_splice_non_match_nonexistent_succeeds( + mutable_config, mock_packages, mock_store + ): + """When we have a nonexistent splice configured but are not using it, don't fail.""" + splice_info = {"target": "will_not_match", "replacement": "nonexistent/doesnotexist"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + spec = spack.spec.Spec("zlib").concretized() + # the main test is that it does not raise + assert not spec.spliced + @pytest.mark.db @pytest.mark.parametrize( "spec_str,mpi_name", From e80d75cbe32978e53038d8598f594b58a6122c3c Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 27 Oct 2024 21:34:32 +0100 Subject: [PATCH 172/615] gha: circular imports: pin (#47248) --- .github/workflows/valid-style.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index b72acfaadd5cd0..ad96ff2cc5604c 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -121,7 +121,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: repository: haampie/circular-import-fighter - ref: 555519c6fd5564fd2eb844e7b87e84f4d12602e2 + ref: 9f60f51bc7134e0be73f27623f1b0357d1718427 path: circular-import-fighter - name: Install dependencies working-directory: circular-import-fighter From 2ec4281c4f15358df38eb8daefddf5b76d2ba5c2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 27 Oct 2024 22:40:05 +0100 Subject: [PATCH 173/615] Remove a few redundant imports (#47250) * remove self-imports * remove unused imports --- lib/spack/spack/bootstrap/core.py | 1 - lib/spack/spack/mirror.py | 3 +-- lib/spack/spack/package_base.py | 2 -- lib/spack/spack/repo.py | 11 +++++------ lib/spack/spack/store.py | 5 ++--- lib/spack/spack/test/package_class.py | 1 - 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/bootstrap/core.py b/lib/spack/spack/bootstrap/core.py index ba2afa8f7f88f9..7e40c5dea4a292 100644 --- a/lib/spack/spack/bootstrap/core.py +++ b/lib/spack/spack/bootstrap/core.py @@ -45,7 +45,6 @@ import spack.util.executable import spack.util.path import spack.util.spack_yaml -import spack.util.url import spack.version from spack.installer import PackageInstaller diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 4254763773d657..b320671361e1b1 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -29,7 +29,6 @@ import spack.config import spack.error import spack.fetch_strategy -import spack.mirror import spack.oci.image import spack.repo import spack.spec @@ -756,7 +755,7 @@ def create_mirror_from_package_object(pkg_obj, mirror_cache, mirror_stats): def require_mirror_name(mirror_name): """Find a mirror by name and raise if it does not exist""" - mirror = spack.mirror.MirrorCollection().get(mirror_name) + mirror = MirrorCollection().get(mirror_name) if not mirror: raise ValueError(f'no mirror named "{mirror_name}"') return mirror diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 2f47caaa55bc8b..ef2f27cca63ab2 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -32,7 +32,6 @@ from llnl.util.lang import classproperty, memoized from llnl.util.link_tree import LinkTree -import spack.build_environment import spack.builder import spack.compilers import spack.config @@ -50,7 +49,6 @@ import spack.store import spack.url import spack.util.environment -import spack.util.executable import spack.util.path import spack.util.web from spack.error import InstallError, NoURLError, PackageError diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py index b916c3baef8674..3f54b02299b5ba 100644 --- a/lib/spack/spack/repo.py +++ b/lib/spack/spack/repo.py @@ -39,7 +39,6 @@ import spack.error import spack.patch import spack.provider_index -import spack.repo import spack.spec import spack.tag import spack.util.git @@ -216,9 +215,9 @@ def compute_loader(self, fullname): def packages_path(): """Get the test repo if it is active, otherwise the builtin repo.""" try: - return spack.repo.PATH.get_repo("builtin.mock").packages_path - except spack.repo.UnknownNamespaceError: - return spack.repo.PATH.get_repo("builtin").packages_path + return PATH.get_repo("builtin.mock").packages_path + except UnknownNamespaceError: + return PATH.get_repo("builtin").packages_path class GitExe: @@ -314,7 +313,7 @@ def add_package_to_git_stage(packages): git = GitExe() for pkg_name in packages: - filename = spack.repo.PATH.filename_for_package_name(pkg_name) + filename = PATH.filename_for_package_name(pkg_name) if not os.path.isfile(filename): tty.die("No such package: %s. Path does not exist:" % pkg_name, filename) @@ -1585,7 +1584,7 @@ def __init__(self, name, repo=None): long_msg = "Use 'spack create' to create a new package." if not repo: - repo = spack.repo.PATH + repo = PATH # We need to compare the base package name pkg_name = name.rsplit(".", 1)[-1] diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index 31369531d550ce..5884f241492441 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -33,7 +33,6 @@ import spack.error import spack.paths import spack.spec -import spack.store import spack.util.path #: default installation root, relative to the Spack install path @@ -308,7 +307,7 @@ def find( matching_specs: List[spack.spec.Spec] = [] errors = [] - query_fn = query_fn or spack.store.STORE.db.query + query_fn = query_fn or STORE.db.query for spec in constraints: current_matches = query_fn(spec, **kwargs) @@ -341,7 +340,7 @@ def specfile_matches(filename: str, **kwargs) -> List["spack.spec.Spec"]: **kwargs: keyword arguments forwarded to "find" """ query = [spack.spec.Spec.from_specfile(filename)] - return spack.store.find(query, **kwargs) + return find(query, **kwargs) def ensure_singleton_created() -> None: diff --git a/lib/spack/spack/test/package_class.py b/lib/spack/spack/test/package_class.py index 76ace98049c1f7..a8c541930bd254 100644 --- a/lib/spack/spack/test/package_class.py +++ b/lib/spack/spack/test/package_class.py @@ -18,7 +18,6 @@ import llnl.util.filesystem as fs import spack.compilers -import spack.config import spack.deptypes as dt import spack.error import spack.install_test From f0d54ba39d3165991146ac61e6b5e3954a97e88b Mon Sep 17 00:00:00 2001 From: "Diego Alvarez S." Date: Sun, 27 Oct 2024 20:32:20 -0300 Subject: [PATCH 174/615] Add nextflow 24.10.0 (#47251) --- var/spack/repos/builtin/packages/nextflow/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 4687218fc6bfbe..316e4da17cfe10 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -14,6 +14,11 @@ class Nextflow(Package): maintainers("dialvarezs", "marcodelapierre") + version( + "24.10.0", + sha256="e848918fb9b85762822c078435d9ff71979a88cccff81ce5babd75d5eee52fe6", + expand=False, + ) version( "24.04.3", sha256="e258f6395a38f044eb734cba6790af98b561aa521f63e2701fe95c050986e11c", @@ -187,7 +192,6 @@ class Nextflow(Package): deprecated=True, ) - depends_on("java@17", when="@24", type="run") depends_on("java", type="run") def install(self, spec, prefix): From ce6255c0bbc2a4d9bb1d34671e168c44bc7246be Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Oct 2024 01:21:18 +0100 Subject: [PATCH 175/615] nano: add v8.1, v8.2 (and v6.4) (#47245) * nano: add v8.1, v8.2 * nano: depends on gettext * nano: add v6.4 --- var/spack/repos/builtin/packages/nano/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index 0fb2035b637bfa..1f0767e21736ac 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -14,13 +14,16 @@ class Nano(AutotoolsPackage): list_url = "https://www.nano-editor.org/dist/" list_depth = 1 - license("GPL-3.0-or-later") + license("GPL-3.0-or-later", checked_by="wdconinc") # 8.x + version("8.2", sha256="d5ad07dd862facae03051c54c6535e54c7ed7407318783fcad1ad2d7076fffeb") + version("8.1", sha256="93b3e3e9155ae389fe9ccf9cb7ab380eac29602835ba3077b22f64d0f0cbe8cb") version("8.0", sha256="c17f43fc0e37336b33ee50a209c701d5beb808adc2d9f089ca831b40539c9ac4") # 7.x version("7.2", sha256="86f3442768bd2873cec693f83cdf80b4b444ad3cc14760b74361474fc87a4526") # 6.x + version("6.4", sha256="4199ae8ca78a7796de56de1a41b821dc47912c0307e9816b56cc317df34661c0") version("6.3", sha256="eb532da4985672730b500f685dbaab885a466d08fbbf7415832b95805e6f8687") version("6.2", sha256="2bca1804bead6aaf4ad791f756e4749bb55ed860eec105a97fba864bc6a77cb3") version("6.1", sha256="3d57ec893fbfded12665b7f0d563d74431fc43abeaccacedea23b66af704db40") @@ -82,9 +85,11 @@ class Nano(AutotoolsPackage): version("2.6.2", sha256="22f79cc635458e0c0d110d211576f1edc03b112a62d73b914826a46547a6ac27") version("2.6.1", sha256="45721fa6d6128068895ad71a6967ff7398d11b064b3f888e5073c97a2b6e9a81") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("pkgconfig", type="build") + depends_on("gettext@0.18.3:") + depends_on("gettext@0.20:", when="@8.1:") depends_on("ncurses") def url_for_version(self, version): From 49845760b69cc5bdc507ff2940f367c018220098 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Oct 2024 02:47:35 +0100 Subject: [PATCH 176/615] less: add v661, v668 (#47252) --- var/spack/repos/builtin/packages/less/package.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/less/package.py b/var/spack/repos/builtin/packages/less/package.py index 3e4b402deec5b0..8e974da266dcbc 100644 --- a/var/spack/repos/builtin/packages/less/package.py +++ b/var/spack/repos/builtin/packages/less/package.py @@ -17,9 +17,13 @@ class Less(AutotoolsPackage): depends_on("ncurses") - license("GPL-3.0-or-later OR BSD-2-Clause") + license("GPL-3.0-or-later OR BSD-2-Clause", checked_by="wdconinc") + version("668", sha256="dbc0de59ea9c50e1e8927e6b077858db3a84954e767909bc599e6e6f602c5717") + version("661", sha256="a900e3916738bf8c1a0a2a059810f1c59b8271ac8bb46898c6e921ea6aefd757") version("643", sha256="3bb417c4b909dfcb0adafc371ab87f0b22e8b15f463ec299d156c495fc9aa196") - version("590", sha256="69056021c365b16504cf5bd3864436a5e50cb2f98b76cd68b99b457064139375") - version("551", sha256="2630db16ef188e88b513b3cc24daa9a798c45643cc7da06e549c9c00cfd84244") - version("530", sha256="8c1652ba88a726314aa2616d1c896ca8fe9a30253a5a67bc21d444e79a6c6bc3") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-46663 + version("590", sha256="69056021c365b16504cf5bd3864436a5e50cb2f98b76cd68b99b457064139375") + version("551", sha256="2630db16ef188e88b513b3cc24daa9a798c45643cc7da06e549c9c00cfd84244") + version("530", sha256="8c1652ba88a726314aa2616d1c896ca8fe9a30253a5a67bc21d444e79a6c6bc3") From 2a7e5cafa142ad7c1eef0d57baeb88e9341f3fbd Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Oct 2024 08:36:26 +0100 Subject: [PATCH 177/615] geode: add v1.13.8, v1.14.3, v1.15.1 (#47253) --- .../repos/builtin/packages/geode/package.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/geode/package.py b/var/spack/repos/builtin/packages/geode/package.py index 51e828435624ec..bc1cb40498cd71 100644 --- a/var/spack/repos/builtin/packages/geode/package.py +++ b/var/spack/repos/builtin/packages/geode/package.py @@ -15,14 +15,21 @@ class Geode(Package): homepage = "https://geode.apache.org/" url = "https://archive.apache.org/dist/geode/1.9.2/apache-geode-1.9.2.tgz" + list_url = "https://archive.apache.org/dist/geode/" + list_depth = 1 license("Apache-2.0") - version("1.9.2", sha256="4b8118114ef43166f6bf73af56b93aadbf9108fcab06d1fbbb8e27f7d559d7e0") - version("1.9.0", sha256="8794808ebc89bc855f0b989b32e91e890d446cfd058e123f6ccb9e12597c1c4f") - version("1.8.0", sha256="58edc41edac4eabd899322b73a24727eac41f6253274c2ce7d0a82227121ae3e") - version("1.7.0", sha256="91eec04420f46e949d32104479c4a4b5b34a4e5570dca7b98ca067a30d5a783d") - version("1.6.0", sha256="79e8d81d058b1c4edd5fb414ff30ac530f7913b978f5abc899c353fcb06e5ef3") + version("1.15.1", sha256="2668970982d373ef42cff5076e7073b03e82c8e2fcd7757d5799b2506e265d57") + version("1.14.3", sha256="5efb1c71db34ba3b7ce1004579f8b9b7a43eae30f42c37837d5abd68c6d778bd") + version("1.13.8", sha256="b5fc105ce0a16aaf7ba341668e022d458b18d6d2c44705a8c79c42077c6d8229") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-37021 + version("1.9.2", sha256="4b8118114ef43166f6bf73af56b93aadbf9108fcab06d1fbbb8e27f7d559d7e0") + version("1.9.0", sha256="8794808ebc89bc855f0b989b32e91e890d446cfd058e123f6ccb9e12597c1c4f") + version("1.8.0", sha256="58edc41edac4eabd899322b73a24727eac41f6253274c2ce7d0a82227121ae3e") + version("1.7.0", sha256="91eec04420f46e949d32104479c4a4b5b34a4e5570dca7b98ca067a30d5a783d") + version("1.6.0", sha256="79e8d81d058b1c4edd5fb414ff30ac530f7913b978f5abc899c353fcb06e5ef3") depends_on("java", type="run") From 035b890b1768401336f71e88e0312140d70b05ee Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Oct 2024 08:37:21 +0100 Subject: [PATCH 178/615] pango: add v1.54.0 (#47244) --- var/spack/repos/builtin/packages/pango/package.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 11930fe59f5aef..ae032673aa65b7 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -22,6 +22,7 @@ class Pango(MesonPackage): # Do not upgrade to v1.90.x. It is a development release in preparation for # v2.0 that will break API and ABI compatibility. For more information see # https://download.gnome.org/sources/pango/1.90/pango-1.90.0.news + version("1.54.0", sha256="8a9eed75021ee734d7fc0fdf3a65c3bba51dfefe4ae51a9b414a60c70b2d1ed8") version("1.52.2", sha256="d0076afe01082814b853deec99f9349ece5f2ce83908b8e58ff736b41f78a96b") version("1.50.13", sha256="5cdcf6d761d26a3eb9412b6cb069b32bd1d9b07abf116321167d94c2189299fd") version("1.50.7", sha256="0477f369a3d4c695df7299a6989dc004756a7f4de27eecac405c6790b7e3ad33") @@ -44,6 +45,12 @@ class Pango(MesonPackage): variant("X", default=False, description="Enable an X toolkit") + depends_on("meson@0.48:", type="build", when="@1.43:") + depends_on("meson@0.50:", type="build", when="@1.44.4:") + depends_on("meson@0.54:", type="build", when="@1.48.0:") + depends_on("meson@0.55.3:", type="build", when="@1.48.1:") + depends_on("meson@0.60:", type="build", when="@1.50.13:") + depends_on("meson@0.63:", type="build", when="@1.54:") depends_on("pkgconfig@0.9.0:", type="build") depends_on("harfbuzz") depends_on("harfbuzz+coretext", when="platform=darwin") @@ -95,7 +102,9 @@ def meson_args(self): args.append("-Dxft=disabled") # disable building of gtk-doc files following #9885 and #9771 - if spec.satisfies("@1.44:"): + if spec.satisfies("@1.54:"): + args.append("-Ddocumentation=false") + elif spec.satisfies("@1.44:"): args.append("-Dgtk_doc=false") else: args.append("-Denable_docs=false") From fac92dcecaeee326d18dfd08335b2b51d4471d64 Mon Sep 17 00:00:00 2001 From: Christophe Prud'homme Date: Mon, 28 Oct 2024 08:39:16 +0100 Subject: [PATCH 179/615] cpr: add versions up to v1.11 (#47242) --- var/spack/repos/builtin/packages/cpr/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/cpr/package.py b/var/spack/repos/builtin/packages/cpr/package.py index 4c962b729e1d90..07a38e0015d498 100644 --- a/var/spack/repos/builtin/packages/cpr/package.py +++ b/var/spack/repos/builtin/packages/cpr/package.py @@ -12,8 +12,11 @@ class Cpr(CMakePackage): homepage = "https://docs.libcpr.org/" url = "https://github.com/libcpr/cpr/archive/refs/tags/1.10.4.tar.gz" + maintainers("prudhomm") license("MIT") + version("1.11.0", sha256="fdafa3e3a87448b5ddbd9c7a16e7276a78f28bbe84a3fc6edcfef85eca977784") + version("1.10.5", sha256="c8590568996cea918d7cf7ec6845d954b9b95ab2c4980b365f582a665dea08d8") version("1.10.4", sha256="88462d059cd3df22c4d39ae04483ed50dfd2c808b3effddb65ac3b9aa60b542d") version("1.9.2", sha256="3bfbffb22c51f322780d10d3ca8f79424190d7ac4b5ad6ad896de08dbd06bf31") From dbab4828edbc31158605a2bbc3cc8fe25fb0973d Mon Sep 17 00:00:00 2001 From: Bernhard Kaindl Date: Mon, 28 Oct 2024 09:04:18 +0100 Subject: [PATCH 180/615] py-mgmetis: fails to build with mpi4py @4: depend on @3 (#47236) --- var/spack/repos/builtin/packages/py-mgmetis/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-mgmetis/package.py b/var/spack/repos/builtin/packages/py-mgmetis/package.py index 1f38fddeca9c64..2d673853116506 100644 --- a/var/spack/repos/builtin/packages/py-mgmetis/package.py +++ b/var/spack/repos/builtin/packages/py-mgmetis/package.py @@ -21,6 +21,6 @@ class PyMgmetis(PythonPackage): depends_on("py-setuptools", type="build") depends_on("py-numpy@1.20.0:1.26.4", type=("build", "run")) depends_on("py-cython", type=("build")) - depends_on("py-mpi4py@3.0.3:", type=("build", "run")) + depends_on("py-mpi4py@3.0.3:3", type=("build", "run")) depends_on("py-pytest") depends_on("metis+shared", type="all") From e855bb011d5aa0b7dafc641382157c146b316bfd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 28 Oct 2024 09:05:16 +0100 Subject: [PATCH 181/615] py-hatchet: add v1.4.0 (#47222) --- .../builtin/packages/py-arpeggio/package.py | 19 +++++++++++++++ .../packages/py-caliper-reader/package.py | 19 +++++++++++++++ .../builtin/packages/py-hatchet/package.py | 10 ++++++-- .../builtin/packages/py-pycubexr/package.py | 20 ++++++++++++++++ .../builtin/packages/py-textx/package.py | 23 +++++++++++++++++++ 5 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-arpeggio/package.py create mode 100644 var/spack/repos/builtin/packages/py-caliper-reader/package.py create mode 100644 var/spack/repos/builtin/packages/py-pycubexr/package.py create mode 100644 var/spack/repos/builtin/packages/py-textx/package.py diff --git a/var/spack/repos/builtin/packages/py-arpeggio/package.py b/var/spack/repos/builtin/packages/py-arpeggio/package.py new file mode 100644 index 00000000000000..ade277aac21636 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-arpeggio/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class PyArpeggio(PythonPackage): + """Packrat parser interpreter.""" + + homepage = "https://github.com/textX/Arpeggio" + pypi = "Arpeggio/Arpeggio-2.0.2.tar.gz" + + license("MIT") + + version("2.0.2", sha256="c790b2b06e226d2dd468e4fbfb5b7f506cec66416031fde1441cf1de2a0ba700") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-caliper-reader/package.py b/var/spack/repos/builtin/packages/py-caliper-reader/package.py new file mode 100644 index 00000000000000..018736812a30d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-caliper-reader/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class PyCaliperReader(PythonPackage): + """A Python library for reading Caliper .cali files.""" + + homepage = "https://github.com/LLNL/Caliper" + pypi = "caliper-reader/caliper-reader-0.4.0.tar.gz" + + license("BSD-3-Clause") + + version("0.4.0", sha256="00c2c0165a0665dbae58579a1477cb785b3f11350f060e95a6e5ce42f02d5c37") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-hatchet/package.py b/var/spack/repos/builtin/packages/py-hatchet/package.py index d9ce43e8068fcf..3360a7b439bc88 100644 --- a/var/spack/repos/builtin/packages/py-hatchet/package.py +++ b/var/spack/repos/builtin/packages/py-hatchet/package.py @@ -18,6 +18,7 @@ class PyHatchet(PythonPackage): license("MIT") + version("1.4.0", sha256="9f934f128666703d30818e9a091493df1bf1819bf7445ffb35a0f46871501b55") version("1.3.0", sha256="d77d071fc37863fdc9abc3fd9ea1088904cd98c6980a014a31e44595d2deac5e") version("1.2.0", sha256="1d5f80abfa69d1a379dff7263908c5c915023f18f26d50b639556e2f43ac755e") version("1.1.0", sha256="71bfa2881ef295294e5b4493acb8cce98d14c354e9ae59b42fb56a76d8ec7056") @@ -30,9 +31,14 @@ class PyHatchet(PythonPackage): depends_on("python@2.7:3.8", when="@:1.3.0", type=("build", "run")) depends_on("python@2.7:", when="@1.3.1:", type=("build", "run")) + depends_on("py-cython", when="@1.4:", type="build") depends_on("py-setuptools", type="build") + depends_on("py-pydot", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) depends_on("py-matplotlib", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) depends_on("py-pandas", type=("build", "run")) - depends_on("py-pydot", type=("build", "run")) - depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-textx", when="@1.4:", type=("build", "run")) + depends_on("py-multiprocess", when="@1.4:", type=("build", "run")) + depends_on("py-caliper-reader", when="@1.4:", type=("build", "run")) + depends_on("py-pycubexr", when="@1.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pycubexr/package.py b/var/spack/repos/builtin/packages/py-pycubexr/package.py new file mode 100644 index 00000000000000..63edbb2a70bf5d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pycubexr/package.py @@ -0,0 +1,20 @@ +# 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) + +from spack.package import * + + +class PyPycubexr(PythonPackage): + """pyCubexR is a Python package for reading the Cube4 file format.""" + + homepage = "https://github.com/extra-p/pycubexr" + pypi = "pycubexr/pycubexr-2.0.0.tar.gz" + + license("BSD-3-Clause") + + version("2.0.0", sha256="03504fbbc9cbd514943e8aeb57919ad49731fe264bdbab86711bf10851276924") + + depends_on("py-setuptools", type="build") + depends_on("py-numpy@1.18:1", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-textx/package.py b/var/spack/repos/builtin/packages/py-textx/package.py new file mode 100644 index 00000000000000..03911b530ea9d6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-textx/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class PyTextx(PythonPackage): + """Meta-language for DSL implementation inspired by Xtext.""" + + homepage = "https://textx.github.io/textX/" + pypi = "textx/textx-4.0.1.tar.gz" + + license("MIT") + + version("4.0.1", sha256="84aff5c95fd2c947402fcbe83eeeddc23aabcfed3464ab84184ef193c52d831a") + + depends_on("c", type="build") + depends_on("py-flit-core@3.8:3", type="build") + depends_on("python@3.8:3.12", type=("build", "run")) + depends_on("py-arpeggio@2:", type=("build", "run")) + depends_on("py-importlib-metadata", when="^python@:3.9", type=("build", "run")) From ff058377c59723c9d2cb94548257fe1f9508f7b7 Mon Sep 17 00:00:00 2001 From: jmlapre <110123055+jmlapre@users.noreply.github.com> Date: Mon, 28 Oct 2024 04:10:46 -0400 Subject: [PATCH 182/615] sst: update core, elements, macro to 14.1.0 (#47184) --- var/spack/repos/builtin/packages/sst-core/package.py | 4 +++- var/spack/repos/builtin/packages/sst-elements/package.py | 4 +++- var/spack/repos/builtin/packages/sst-macro/package.py | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/sst-core/package.py b/var/spack/repos/builtin/packages/sst-core/package.py index 7d0176c4524728..a9fa676e16b9ce 100644 --- a/var/spack/repos/builtin/packages/sst-core/package.py +++ b/var/spack/repos/builtin/packages/sst-core/package.py @@ -14,12 +14,14 @@ class SstCore(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-core.git" - url = "https://github.com/sstsimulator/sst-core/releases/download/v13.1.0_Final/sstcore-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-core/releases/download/v14.1.0_Final/sstcore-14.1.0.tar.gz" maintainers("berquist", "naromero77") license("BSD-3-Clause") + version("14.1.0", sha256="9d17c37d1ebdff8d8eb10ab0084eb901c78a7c5a76db15189e3d7fc318fd6f9d") + version("14.0.0", sha256="fadc7ee99472ff3ac5d4b3f3e507123e32bd9fb89c4c6b48fbd2dca8aeb8b8d6") version("13.1.0", sha256="0a44c62ee0b18a20a3cb089f4e0d43e293dc5adc6c3fa7639d40986cf5b9854c") version("13.0.0", sha256="c9d868dcdd75d59bef7c73146709a3b2a52a78f0df5ec2c3dc9f21434c51d935") version("12.1.0", sha256="f7530226643439678e2f4183ec4dbadf7750411bdaa44d9443887f81feb97574") diff --git a/var/spack/repos/builtin/packages/sst-elements/package.py b/var/spack/repos/builtin/packages/sst-elements/package.py index 1cbeca76aaf812..35eaa739f172d5 100644 --- a/var/spack/repos/builtin/packages/sst-elements/package.py +++ b/var/spack/repos/builtin/packages/sst-elements/package.py @@ -14,12 +14,14 @@ class SstElements(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-elements.git" - url = "https://github.com/sstsimulator/sst-elements/releases/download/v13.1.0_Final/sstelements-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-elements/releases/download/v14.1.0_Final/sstelements-14.1.0.tar.gz" maintainers("berquist", "naromero77") license("BSD-3-Clause") + version("14.1.0", sha256="433994065810d3afee4e355173e781cd76171043cce8835bbc40887672a33350") + version("14.0.0", sha256="68eab77febdd0138a497249d854e1cb0c3a67b1c56c4d51f1fe35df12dcd1b9c") version("13.1.0", sha256="ebda6ee5af858192dff8a7faf3125010001d5c439beec22afe5b9828a74adf1a") version("13.0.0", sha256="1f6f6b403a8c1b22a27cdf2943c9e505825ee14866891e7bc944d4471b7b0321") version("12.1.0", sha256="77948cf8e1f8bf8d238d475cea111c9a72b307cbf403cb429ef0426d0cf708a4") diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py index 1319fc4eafb84f..f5e57db7c00814 100644 --- a/var/spack/repos/builtin/packages/sst-macro/package.py +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -17,10 +17,12 @@ class SstMacro(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-macro.git" - url = "https://github.com/sstsimulator/sst-macro/releases/download/v13.1.0_Final/sstmacro-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-macro/releases/download/v14.1.0_Final/sstmacro-14.1.0.tar.gz" maintainers("berquist") + version("14.1.0", sha256="241f42f5c460b0e7462592a7f412bda9c9de19ad7a4b62c22f35be4093b57014") + version("14.0.0", sha256="3962942268dd9fe6ebd4462e2d6d305ab757f3f510487e84687146a8d461be13") version("13.1.0", sha256="022e39daae1067b56c0011dbe87e3234fee4587049fd53671e1ed6b23233f70e") version("13.0.0", sha256="410dad4ac0c7a4c0e16c54da308b6c6b631112af18ae2c37585c8a14472987d4") version("12.1.0", sha256="ee57e08acfd4b6429a0500d981d468ee6ded2638ec5abec7b47f172388b267f1") From e83536de380e66a8419825ada3231be79da7853a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 28 Oct 2024 09:11:59 +0100 Subject: [PATCH 183/615] bazel: add Apple Clang 16 conflict (#47228) --- var/spack/repos/builtin/packages/bazel/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index bbd0acf278fe70..32bcd23f9e5c97 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -140,6 +140,9 @@ class Bazel(Package): # Newer versions of grpc and abseil dependencies are needed but are not in bazel-4.0.0 conflicts("@4.0.0", when="%gcc@11:") + # https://github.com/bazelbuild/bazel/pull/23667 + conflicts("%apple-clang@16:", when="@:7.3") + executables = ["^bazel$"] # Download resources to perform offline build with bazel. From 32ce278a51cf046a2e3034ffb5f9b69a84361e61 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 28 Oct 2024 10:30:07 +0100 Subject: [PATCH 184/615] ML CI: Linux aarch64 (#39666) * ML CI: Linux aarch64 * Add config files * No aarch64 tag * Don't specify image * Use amazonlinux image Co-authored-by: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> * Update and require * GCC is too old * Fix some builds * xgboost doesn't support old GCC + cuda * Run on newer Ubuntu * Remove mxnet * Try aarch64 range * Use main branch * Conflict applies to all targets * cuda only required when +cuda * Use tagged version * Comment out tf-estimator * Add ROCm, use newer Ubuntu * Remove ROCm --------- Co-authored-by: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> --- .../gitlab/cloud_pipelines/.gitlab-ci.yml | 46 ++++++++++ .../stacks/ml-linux-aarch64-cpu/spack.yaml | 85 +++++++++++++++++ .../stacks/ml-linux-aarch64-cuda/spack.yaml | 91 +++++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml create mode 100644 share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index 8997ae5b240a92..f082b3b413dd02 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -735,6 +735,52 @@ ml-linux-x86_64-rocm-build: - artifacts: True job: ml-linux-x86_64-rocm-generate +######################################## +# Machine Learning - Linux aarch64 (CPU) +######################################## +.ml-linux-aarch64-cpu: + extends: [ ".linux_aarch64" ] + variables: + SPACK_CI_STACK_NAME: ml-linux-aarch64-cpu + +ml-linux-aarch64-cpu-generate: + extends: [ ".generate-aarch64", .ml-linux-aarch64-cpu ] + image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + +ml-linux-aarch64-cpu-build: + extends: [ ".build", ".ml-linux-aarch64-cpu" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: ml-linux-aarch64-cpu-generate + strategy: depend + needs: + - artifacts: True + job: ml-linux-aarch64-cpu-generate + +######################################### +# Machine Learning - Linux aarch64 (CUDA) +######################################### +.ml-linux-aarch64-cuda: + extends: [ ".linux_aarch64" ] + variables: + SPACK_CI_STACK_NAME: ml-linux-aarch64-cuda + +ml-linux-aarch64-cuda-generate: + extends: [ ".generate-aarch64", .ml-linux-aarch64-cuda ] + image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + +ml-linux-aarch64-cuda-build: + extends: [ ".build", ".ml-linux-aarch64-cuda" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: ml-linux-aarch64-cuda-generate + strategy: depend + needs: + - artifacts: True + job: ml-linux-aarch64-cuda-generate + ######################################### # Machine Learning - Darwin aarch64 (MPS) ######################################### diff --git a/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml new file mode 100644 index 00000000000000..23ed6aa665e2fd --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml @@ -0,0 +1,85 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + - ~cuda + - ~rocm + mpi: + require: openmpi + + specs: + # Horovod + - py-horovod + + # Hugging Face + - py-transformers + + # JAX + - py-jax + - py-jaxlib + + # Keras + - py-keras backend=tensorflow + - py-keras backend=jax + - py-keras backend=torch + - py-keras-applications + - py-keras-preprocessing + - py-keras2onnx + + # PyTorch + - py-botorch + - py-efficientnet-pytorch + - py-gpytorch + - py-kornia + - py-lightning + - py-pytorch-gradual-warmup-lr + - py-pytorch-lightning + - py-segmentation-models-pytorch + - py-timm + - py-torch + - py-torch-cluster + - py-torch-geometric + - py-torch-nvidia-apex + - py-torch-scatter + - py-torch-sparse + - py-torch-spline-conv + - py-torchaudio + - py-torchdata + - py-torchfile + - py-torchgeo + - py-torchmetrics + - py-torchtext + - py-torchvision + - py-vector-quantize-pytorch + + # scikit-learn + - py-scikit-learn + - py-scikit-learn-extra + + # TensorBoard + - py-tensorboard + - py-tensorboard-data-server + - py-tensorboard-plugin-wit + - py-tensorboardx + + # TensorFlow + - py-tensorflow + - py-tensorflow-datasets + - py-tensorflow-hub + - py-tensorflow-metadata + - py-tensorflow-probability + + # XGBoost + - py-xgboost + + ci: + pipeline-gen: + - build-job: + image: + name: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + entrypoint: [''] + + cdash: + build-group: Machine Learning diff --git a/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml new file mode 100644 index 00000000000000..47f4eda0f12d0c --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml @@ -0,0 +1,91 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + - ~rocm + - +cuda + - cuda_arch=80 + llvm: + # https://github.com/spack/spack/issues/27999 + require: ~cuda + mpi: + require: openmpi + + specs: + # Horovod + - py-horovod + + # Hugging Face + - py-transformers + + # JAX + - py-jax + - py-jaxlib + + # Keras + - py-keras backend=tensorflow + - py-keras backend=jax + - py-keras backend=torch + - py-keras-applications + - py-keras-preprocessing + - py-keras2onnx + + # PyTorch + - py-botorch + - py-efficientnet-pytorch + - py-gpytorch + - py-kornia + - py-lightning + - py-pytorch-gradual-warmup-lr + - py-pytorch-lightning + - py-segmentation-models-pytorch + - py-timm + - py-torch + - py-torch-cluster + - py-torch-geometric + - py-torch-nvidia-apex + - py-torch-scatter + - py-torch-sparse + - py-torch-spline-conv + - py-torchaudio + - py-torchdata + - py-torchfile + - py-torchgeo + - py-torchmetrics + # torchtext requires older pytorch, which requires older cuda, which doesn't support newer GCC + # - py-torchtext + - py-torchvision + - py-vector-quantize-pytorch + + # scikit-learn + - py-scikit-learn + - py-scikit-learn-extra + + # TensorBoard + - py-tensorboard + - py-tensorboard-data-server + - py-tensorboard-plugin-wit + - py-tensorboardx + + # TensorFlow + - py-tensorflow + - py-tensorflow-datasets + - py-tensorflow-hub + - py-tensorflow-metadata + - py-tensorflow-probability + + # XGBoost + # xgboost requires older cuda, which doesn't support newer GCC + # - py-xgboost + + ci: + pipeline-gen: + - build-job: + image: + name: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + entrypoint: [''] + + cdash: + build-group: Machine Learning From be5a096665fa3fc7697d078755de3579c1dd6e27 Mon Sep 17 00:00:00 2001 From: teddy Date: Mon, 28 Oct 2024 12:06:23 +0100 Subject: [PATCH 185/615] py-non-regression-test-tools: add v1.1.2 & remove v1.0.2 (tag removed) (#47256) Co-authored-by: t. chantrait --- .../builtin/packages/py-non-regression-test-tools/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py index dd5ae0d222dacb..d97e7868527847 100644 --- a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py +++ b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py @@ -18,8 +18,8 @@ class PyNonRegressionTestTools(PythonPackage): version("develop", branch="develop") version("main", branch="main") - version("1.0.2", tag="v1.0.2", preferred=True) + version("1.1.2", tag="v1.1.2", preferred=True) depends_on("py-numpy", type="run") - depends_on("python@3.7:", type="run") + depends_on("python@3.10:", type="run") depends_on("py-setuptools", type="build") From 1229d5a3cc27a57acc2e18c915cf4aaaed5a6e1e Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov <30537612+mkstoyanov@users.noreply.github.com> Date: Mon, 28 Oct 2024 07:19:50 -0400 Subject: [PATCH 186/615] tasmanian: add v8.1 (#47221) Co-authored-by: Bernhard Kaindl Co-authored-by: Massimiliano Culpo --- var/spack/repos/builtin/packages/tasmanian/package.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/tasmanian/package.py b/var/spack/repos/builtin/packages/tasmanian/package.py index c858c6713e436e..2d3ebc5fbc972d 100644 --- a/var/spack/repos/builtin/packages/tasmanian/package.py +++ b/var/spack/repos/builtin/packages/tasmanian/package.py @@ -12,7 +12,7 @@ class Tasmanian(CMakePackage, CudaPackage, ROCmPackage): interpolation as well as parameter calibration.""" homepage = "https://ornl.github.io/TASMANIAN/stable/" - url = "https://github.com/ORNL/TASMANIAN/archive/v8.0.tar.gz" + url = "https://github.com/ORNL/TASMANIAN/archive/v8.1.tar.gz" git = "https://github.com/ORNL/TASMANIAN.git" tags = ["e4s"] @@ -22,15 +22,15 @@ class Tasmanian(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="master") + version("8.1", sha256="e870d26ebe9e5038a8bb75710e47a66f3040c5ad34d03c2fc993b984240d247b") version("8.0", sha256="248c941346150bf6cfb386ba86b69bd4697f4fc93bff0e8d5f57e555614fd534") version("7.9", sha256="decba62e6bbccf1bc26c6e773a8d4fd51d7f3e3e534ddd386ec41300694ce5cc") version("7.7", sha256="85fb3a7b302ea21a3b700712767a59a623d9ab93da03308fa47d4413654c3878") - version("7.5", sha256="d621bd36dced4db86ef638693ba89b336762e7a3d7fedb3b5bcefb03390712b3") - # Tasmanian is backwards compatible, no need to use 7.3 from back in 2020 + # when adding a new version, deprecate an old one, this gives us 3 - 4 years of support version( - "7.3", - sha256="5bd1dd89cc5c84506f6900b6569b17e50becd73eb31ec85cfa11d6f1f912c4fa", + "7.5", + sha256="d621bd36dced4db86ef638693ba89b336762e7a3d7fedb3b5bcefb03390712b3", deprecated=True, ) From b9ebf8cc9cf4b9605750e3d7c7fa4cd8bf0cd117 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 28 Oct 2024 12:21:59 +0100 Subject: [PATCH 187/615] gdk-pixbuf/atk: delete old versions, make mesonpackage (#47258) * gdk-pixbuf: delete old versions, make mesonpackage goal is to get rid of `std_meson_args` global, but clean up package while at it. `setup_dependent_run_environment` was removed because it did not depend on the dependent spec, and would result in repeated env variable changes. * atk: idem * fix a dependent --- .../repos/builtin/packages/atk/package.py | 44 ++------ .../builtin/packages/gdk-pixbuf/package.py | 102 ++++-------------- .../repos/builtin/packages/w3m/package.py | 2 +- 3 files changed, 27 insertions(+), 121 deletions(-) diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 6bebc59054cc2f..50fb042771c07a 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Atk(Package): +class Atk(MesonPackage): """ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and @@ -23,20 +23,10 @@ class Atk(Package): version("2.36.0", sha256="fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788") version("2.30.0", sha256="dd4d90d4217f2a0c1fee708a555596c2c19d26fef0952e1ead1938ab632c027b") version("2.28.1", sha256="cd3a1ea6ecc268a2497f0cd018e970860de24a6d42086919d6bf6c8e8d53f4fc") - version( - "2.20.0", - sha256="493a50f6c4a025f588d380a551ec277e070b28a82e63ef8e3c06b3ee7c1238f0", - deprecated=True, - ) - version( - "2.14.0", - sha256="2875cc0b32bfb173c066c22a337f79793e0c99d2cc5e81c4dac0d5a523b8fbad", - deprecated=True, - ) - depends_on("c", type="build") # generated + depends_on("c", type="build") - depends_on("meson@0.40.1:", type="build", when="@2.28:") + depends_on("meson@0.40.1:", type="build") depends_on("meson@0.46.0:", type="build", when="@2.29:") depends_on("glib") depends_on("gettext") @@ -45,33 +35,15 @@ class Atk(Package): depends_on("libffi") def url_for_version(self, version): - """Handle gnome's version-based custom URLs.""" - url = "http://ftp.gnome.org/pub/gnome/sources/atk" - return url + f"/{version.up_to(2)}/atk-{version}.tar.xz" + return ( + f"http://ftp.gnome.org/pub/gnome/sources/atk/" + f"{version.up_to(2)}/atk-{version}.tar.xz" + ) def setup_run_environment(self, env): - env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def install(self, spec, prefix): - with working_dir("spack-build", create=True): - meson("..", *std_meson_args) - ninja("-v") - ninja("install") - - @when("@:2.27") - def install(self, spec, prefix): - configure(f"--prefix={prefix}") - make() - if self.run_tests: - make("check") - make("install") - if self.run_tests: - make("installcheck") diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 707d5978e218cf..7c0c74201bea58 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -6,12 +6,10 @@ from spack.package import * -class GdkPixbuf(Package): - """The Gdk Pixbuf is a toolkit for image loading and pixel buffer - manipulation. It is used by GTK+ 2 and GTK+ 3 to load and - manipulate images. In the past it was distributed as part of - GTK+ 2 but it was split off into a separate package in - preparation for the change to GTK+ 3.""" +class GdkPixbuf(MesonPackage): + """The Gdk Pixbuf is a toolkit for image loading and pixel buffer manipulation. It is used by + GTK+ 2 and GTK+ 3 to load and manipulate images. In the past it was distributed as part of + GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3.""" homepage = "https://gitlab.gnome.org/GNOME/gdk-pixbuf" url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz" @@ -43,44 +41,20 @@ class GdkPixbuf(Package): sha256="83c66a1cfd591d7680c144d2922c5955d38b4db336d7cd3ee109f7bcf9afef15", deprecated=True, ) - # https://nvd.nist.gov/vuln/detail/CVE-2021-20240 - version( - "2.40.0", - sha256="1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6", - deprecated=True, - ) - version( - "2.38.2", - sha256="73fa651ec0d89d73dd3070b129ce2203a66171dfc0bd2caa3570a9c93d2d0781", - deprecated=True, - ) - version( - "2.38.0", - sha256="dd50973c7757bcde15de6bcd3a6d462a445efd552604ae6435a0532fbbadae47", - deprecated=True, - ) - version( - "2.31.2", - sha256="9e467ed09894c802499fb2399cd9a89ed21c81700ce8f27f970a833efb1e47aa", - deprecated=True, - ) depends_on("c", type="build") - variant("x11", default=False, description="Enable X11 support", when="@:2.41") variant("tiff", default=False, description="Enable TIFF support(partially broken)") # Man page creation was getting docbook errors, see issue #18853 variant("man", default=False, description="Enable man page creation") - depends_on("meson@0.55.3:", type="build", when="@2.42.2:") - depends_on("meson@0.46.0:", type="build", when="@2.37.92:") - depends_on("meson@0.45.0:", type="build", when="@2.37.0:") - depends_on("ninja", type="build", when="@2.37.0:") - depends_on("shared-mime-info", when="@2.36.8: platform=linux") - depends_on("pkgconfig", type="build") - # Building the man pages requires libxslt and the Docbook stylesheets - depends_on("libxslt", type="build", when="+man") - depends_on("docbook-xsl@1.79.2:", type="build", when="+man") + with default_args(type="build"): + depends_on("meson@0.55.3:") + depends_on("pkgconfig") + depends_on("libxslt", when="+man") + depends_on("docbook-xsl@1.79.2:", when="+man") + + depends_on("shared-mime-info", when="platform=linux") depends_on("gettext") depends_on("glib@2.38.0:") depends_on("jpeg") @@ -88,68 +62,28 @@ class GdkPixbuf(Package): depends_on("zlib-api") depends_on("libtiff", when="+tiff") depends_on("gobject-introspection") - depends_on("libx11", when="+x11") - # Replace the docbook stylesheet URL with the one that our - # docbook-xsl package uses/recognizes. - # Pach modifies meson build files, so it only applies to versions that - # depend on meson. - patch("docbook-cdn.patch", when="@2.37.0:+man") + # Replace the docbook stylesheet URL with the one that our docbook-xsl package uses/recognizes. + patch("docbook-cdn.patch", when="+man") def url_for_version(self, version): url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/{0}/gdk-pixbuf-{1}.tar.xz" return url.format(version.up_to(2), version) def setup_run_environment(self, env): - env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def install(self, spec, prefix): - with working_dir("spack-build", create=True): - meson_args = std_meson_args + ["-Dman={0}".format("+man" in spec)] - # Only build tests when requested - if self.version >= Version("2.42.9"): - meson_args += ["-Dtests={0}".format(self.run_tests)] - # Based on suggestion by luigi-calori and the fixup shown by lee218llnl: - # https://github.com/spack/spack/pull/27254#issuecomment-974464174 - if spec.satisfies("+x11"): - if self.version >= Version("2.42"): - raise InstallError("+x11 is not valid for {0}".format(self.version)) - meson_args += ["-Dx11=true"] - meson("..", *meson_args) - ninja("-v") - if self.run_tests: - ninja("test") - ninja("install") - - def configure_args(self): - args = [] - # disable building of gtk-doc files following #9771 - args.append("--disable-gtk-doc-html") - true = which("true") - args.append("GTKDOC_CHECK={0}".format(true)) - args.append("GTKDOC_CHECK_PATH={0}".format(true)) - args.append("GTKDOC_MKPDF={0}".format(true)) - args.append("GTKDOC_REBASE={0}".format(true)) + def meson_args(self): + args = [f"-Dman={'true' if self.spec.satisfies('+man') else 'false'}"] + if self.spec.satisfies("@2.42.9:"): + args.append(f"-Dtests={'true' if self.run_tests else 'false'}") return args - @when("@:2.36") - def install(self, spec, prefix): - configure("--prefix={0}".format(prefix), *self.configure_args()) - make() - if self.run_tests: - make("check") - make("install") - if self.run_tests: - make("installcheck") - def setup_build_environment(self, env): # The "post-install.sh" script uses gdk-pixbuf-query-loaders, # which was installed earlier. diff --git a/var/spack/repos/builtin/packages/w3m/package.py b/var/spack/repos/builtin/packages/w3m/package.py index 5478c2348159e9..d4d693afbc46e3 100644 --- a/var/spack/repos/builtin/packages/w3m/package.py +++ b/var/spack/repos/builtin/packages/w3m/package.py @@ -68,7 +68,7 @@ class W3m(AutotoolsPackage): values=("gdk-pixbuf", "imlib2"), multi=False, ) - depends_on("gdk-pixbuf@2:+x11", when="imagelib=gdk-pixbuf +image") + depends_on("gdk-pixbuf@2:", when="imagelib=gdk-pixbuf +image") depends_on("imlib2@1.0.5:", when="imagelib=imlib2 +image") # fix for modern libraries From 11aa02b37adcb04925c75e8746587ea65b5cd812 Mon Sep 17 00:00:00 2001 From: Christophe Prud'homme Date: Mon, 28 Oct 2024 13:25:29 +0100 Subject: [PATCH 188/615] feelpp/spack#11 (#47243) --- .../repos/builtin/packages/fmi4cpp/package.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fmi4cpp/package.py diff --git a/var/spack/repos/builtin/packages/fmi4cpp/package.py b/var/spack/repos/builtin/packages/fmi4cpp/package.py new file mode 100644 index 00000000000000..837c3e8ef85031 --- /dev/null +++ b/var/spack/repos/builtin/packages/fmi4cpp/package.py @@ -0,0 +1,32 @@ +# 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) + +from spack.package import * + + +class Fmi4cpp(CMakePackage): + """FMI4cpp is a cross-platform FMI 2.0 implementation written in modern C++. + FMI4cpp supports both Co-simulation and Model Exchange. + """ + + homepage = "https://github.com/NTNU-IHB/FMI4cpp" + url = "https://github.com/NTNU-IHB/FMI4cpp/archive/refs/tags/v0.8.3.tar.gz" + git = "https://github.com/NTNU-IHB/FMI4cpp.git" + + maintainers("prudhomm") + license("MIT", checked_by="prudhomm") + + version("master", branch="master") + version("0.8.3", sha256="f48c630f087bdf8d7a04611f6f30942c870c3c1211a94ef2404c40baa4bcb2c9") + + variant("shared", default=True, description="Build shared library") + + depends_on("cxx", type="build") + depends_on("libzip") + depends_on("pugixml") + + def cmake_args(self): + args = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] + return args From fbd5c3d589ec1010713dab31ccf3a6c18762d77c Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Mon, 28 Oct 2024 17:05:44 -0400 Subject: [PATCH 189/615] py-pyscf: add v2.7.0 (#47272) --- var/spack/repos/builtin/packages/py-pyscf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyscf/package.py b/var/spack/repos/builtin/packages/py-pyscf/package.py index 4a12b557265e14..c94a68252a953e 100644 --- a/var/spack/repos/builtin/packages/py-pyscf/package.py +++ b/var/spack/repos/builtin/packages/py-pyscf/package.py @@ -18,6 +18,7 @@ class PyPyscf(PythonPackage): license("Apache-2.0") + version("2.7.0", sha256="ca8efc2f28d72c3130f26a967e7fa8d0bbc4a6b47d16a7c4c732ec85a31b7eec") version("2.6.2", sha256="744c89a8e4d38c4b5562f75fa68f9d079faeb23602d255fba0eb6d1bac97bca2") version("2.6.1", sha256="faeaeeb0c07fec5018937655511709a9c2445e3d7c421c0fa1ae5d889e4ab455") version("2.6.0", sha256="08ff920fedd4b257273d235fb4492535147c1e3154de5ab02b5446de93e200d8") From d48d993ae7b90ae332111e8c68326fa50243efb5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 28 Oct 2024 16:05:17 -0600 Subject: [PATCH 190/615] lammps: add heffte support (#47254) * lammps: add heffte support * Add Richard's suggestion --- var/spack/repos/builtin/packages/heffte/package.py | 3 ++- var/spack/repos/builtin/packages/lammps/package.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/heffte/package.py b/var/spack/repos/builtin/packages/heffte/package.py index 9496e1e23af74a..fd6d9ed5b41023 100644 --- a/var/spack/repos/builtin/packages/heffte/package.py +++ b/var/spack/repos/builtin/packages/heffte/package.py @@ -21,6 +21,7 @@ class Heffte(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("develop", branch="master") + version("2.4.1", sha256="de2cf26df5d61baac7841525db3f393cb007f79612ac7534fd4757f154ba3e6c") version("2.4.0", sha256="02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d") version("2.3.0", sha256="63db8c9a8822211d23e29f7adf5aa88bb462c91d7a18c296c3ef3a06be8d6171") version("2.2.0", sha256="332346d5c1d1032288d09839134c79e4a9704e213a2d53051e96c3c414c74df0") @@ -143,7 +144,7 @@ def test_make_test(self): options = [cmake_dir] # changing the default install path search to newer cmake convention - if self.spec.satisfies("@develop"): + if self.spec.satisfies("@2.4.1:"): options.append(self.define("Heffte_ROOT", self.spec.prefix)) else: options.append(self.define("Heffte_DIR", self.spec.prefix.lib.cmake.Heffte)) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 097870aff62f28..5b8601dcf16b46 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -641,6 +641,13 @@ def url_for_version(self, version): values=("kiss", "fftw3", "mkl"), multi=False, ) + variant( + "heffte", + default=False, + when="+kspace @20240207:", + description="Use heffte as distubuted FFT engine", + ) + variant( "fft_kokkos", default="fftw3", @@ -663,6 +670,9 @@ def url_for_version(self, version): depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpiio") depends_on("fftw-api@3", when="+kspace fft=fftw3") + depends_on("heffte", when="+heffte") + depends_on("heffte+fftw", when="+heffte fft=fftw3") + depends_on("heffte+mkl", when="+heffte fft=mkl") depends_on("mkl", when="+kspace fft=mkl") depends_on("hipfft", when="+kokkos+kspace+rocm fft_kokkos=hipfft") depends_on("fftw-api@3", when="+kokkos+kspace fft_kokkos=fftw3") @@ -927,6 +937,7 @@ def cmake_args(self): if spec.satisfies("+kspace"): args.append(self.define_from_variant("FFT", "fft")) + args.append(self.define_from_variant("FFT_USE_HEFFTE", "heffte")) if spec.satisfies("fft=fftw3 ^armpl-gcc") or spec.satisfies("fft=fftw3 ^acfl"): args.append(self.define("FFTW3_LIBRARY", self.spec["fftw-api"].libs[0])) args.append( From e81ce18cade3a9824e5c28cf78c99e3836241b4d Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Mon, 28 Oct 2024 19:28:03 -0700 Subject: [PATCH 191/615] cmd/solve: use interface from cmd/spec (#47182) Currently, `spack solve` has different spec selection semantics than `spack spec`. `spack solve` currently does not allow specifying a single spec when an environment is active. This PR modifies `spack solve` to inherit the interface from `spack spec`, and to use the same spec selection logic. This will allow for better use of `spack solve --show opt` for debugging. --------- Co-authored-by: Todd Gamblin --- lib/spack/spack/cmd/solve.py | 54 +++++-------------------------- lib/spack/spack/cmd/spec.py | 25 +++++++------- share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 16 +++++---- 4 files changed, 30 insertions(+), 67 deletions(-) diff --git a/lib/spack/spack/cmd/solve.py b/lib/spack/spack/cmd/solve.py index f5a9c09c3d395c..8adc06fdfbe24c 100644 --- a/lib/spack/spack/cmd/solve.py +++ b/lib/spack/spack/cmd/solve.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import argparse import re import sys @@ -12,13 +11,12 @@ import spack import spack.cmd -import spack.cmd.common.arguments +import spack.cmd.spec import spack.config import spack.environment import spack.hash_types as ht import spack.solver.asp as asp import spack.spec -from spack.cmd.common import arguments description = "concretize a specs using an ASP solver" section = "developer" @@ -41,42 +39,6 @@ def setup_parser(subparser): " solutions models found by asp program\n" " all all of the above", ) - - # Below are arguments w.r.t. spec display (like spack spec) - arguments.add_common_arguments(subparser, ["long", "very_long", "namespaces"]) - - install_status_group = subparser.add_mutually_exclusive_group() - arguments.add_common_arguments(install_status_group, ["install_status", "no_install_status"]) - - subparser.add_argument( - "-y", - "--yaml", - action="store_const", - dest="format", - default=None, - const="yaml", - help="print concrete spec as yaml", - ) - subparser.add_argument( - "-j", - "--json", - action="store_const", - dest="format", - default=None, - const="json", - help="print concrete spec as json", - ) - subparser.add_argument( - "-c", - "--cover", - action="store", - default="nodes", - choices=["nodes", "edges", "paths"], - help="how extensively to traverse the DAG (default: nodes)", - ) - subparser.add_argument( - "-t", "--types", action="store_true", default=False, help="show dependency types" - ) subparser.add_argument( "--timers", action="store_true", @@ -86,9 +48,8 @@ def setup_parser(subparser): subparser.add_argument( "--stats", action="store_true", default=False, help="print out statistics from clingo" ) - subparser.add_argument("specs", nargs=argparse.REMAINDER, help="specs of packages") - spack.cmd.common.arguments.add_concretizer_args(subparser) + spack.cmd.spec.setup_parser(subparser) def _process_result(result, show, required_format, kwargs): @@ -164,11 +125,12 @@ def solve(parser, args): # If we have an active environment, pick the specs from there env = spack.environment.active_environment() - if env and args.specs: - msg = "cannot give explicit specs when an environment is active" - raise RuntimeError(msg) - - specs = list(env.user_specs) if env else spack.cmd.parse_specs(args.specs) + if args.specs: + specs = spack.cmd.parse_specs(args.specs) + elif env: + specs = list(env.user_specs) + else: + tty.die("spack solve requires at least one spec or an active environment") solver = asp.Solver() output = sys.stdout if "asp" in show else None diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index e5cc951d695d40..188e5360886856 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -96,26 +96,25 @@ def spec(parser, args): if args.install_status: tree_context = spack.store.STORE.db.read_transaction - # Use command line specified specs, otherwise try to use environment specs. + env = ev.active_environment() + if args.specs: input_specs = spack.cmd.parse_specs(args.specs) concretized_specs = spack.cmd.parse_specs(args.specs, concretize=True) specs = list(zip(input_specs, concretized_specs)) - else: - env = ev.active_environment() - if env: - env.concretize() - specs = env.concretized_specs() + elif env: + env.concretize() + specs = env.concretized_specs() + if not args.format: # environments are printed together in a combined tree() invocation, # except when using --yaml or --json, which we print spec by spec below. - if not args.format: - tree_kwargs["key"] = spack.traverse.by_dag_hash - tree_kwargs["hashes"] = args.long or args.very_long - print(spack.spec.tree([concrete for _, concrete in specs], **tree_kwargs)) - return - else: - tty.die("spack spec requires at least one spec or an active environment") + tree_kwargs["key"] = spack.traverse.by_dag_hash + tree_kwargs["hashes"] = args.long or args.very_long + print(spack.spec.tree([concrete for _, concrete in specs], **tree_kwargs)) + return + else: + tty.die("spack spec requires at least one spec or an active environment") for input, output in specs: # With --yaml or --json, just print the raw specs to output diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 52f8a9ea416214..d8c58143c97a34 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1831,7 +1831,7 @@ _spack_restage() { _spack_solve() { if $list_options then - SPACK_COMPREPLY="-h --help --show -l --long -L --very-long -N --namespaces -I --install-status --no-install-status -y --yaml -j --json -c --cover -t --types --timers --stats -U --fresh --reuse --fresh-roots --reuse-deps --deprecated" + SPACK_COMPREPLY="-h --help --show --timers --stats -l --long -L --very-long -N --namespaces -I --install-status --no-install-status -y --yaml -j --json --format -c --cover -t --types -U --fresh --reuse --fresh-roots --reuse-deps --deprecated" else _all_packages fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 84da6412f13c66..afea0b1a57af6c 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -2747,12 +2747,16 @@ complete -c spack -n '__fish_spack_using_command restage' -s h -l help -f -a hel complete -c spack -n '__fish_spack_using_command restage' -s h -l help -d 'show this help message and exit' # spack solve -set -g __fish_spack_optspecs_spack_solve h/help show= l/long L/very-long N/namespaces I/install-status no-install-status y/yaml j/json c/cover= t/types timers stats U/fresh reuse fresh-roots deprecated +set -g __fish_spack_optspecs_spack_solve h/help show= timers stats l/long L/very-long N/namespaces I/install-status no-install-status y/yaml j/json format= c/cover= t/types U/fresh reuse fresh-roots deprecated complete -c spack -n '__fish_spack_using_command_pos_remainder 0 solve' -f -k -a '(__fish_spack_specs_or_id)' complete -c spack -n '__fish_spack_using_command solve' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command solve' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command solve' -l show -r -f -a show complete -c spack -n '__fish_spack_using_command solve' -l show -r -d 'select outputs' +complete -c spack -n '__fish_spack_using_command solve' -l timers -f -a timers +complete -c spack -n '__fish_spack_using_command solve' -l timers -d 'print out timers for different solve phases' +complete -c spack -n '__fish_spack_using_command solve' -l stats -f -a stats +complete -c spack -n '__fish_spack_using_command solve' -l stats -d 'print out statistics from clingo' complete -c spack -n '__fish_spack_using_command solve' -s l -l long -f -a long complete -c spack -n '__fish_spack_using_command solve' -s l -l long -d 'show dependency hashes as well as versions' complete -c spack -n '__fish_spack_using_command solve' -s L -l very-long -f -a very_long @@ -2764,17 +2768,15 @@ complete -c spack -n '__fish_spack_using_command solve' -s I -l install-status - complete -c spack -n '__fish_spack_using_command solve' -l no-install-status -f -a install_status complete -c spack -n '__fish_spack_using_command solve' -l no-install-status -d 'do not show install status annotations' complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -f -a format -complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -d 'print concrete spec as yaml' +complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -d 'print concrete spec as YAML' complete -c spack -n '__fish_spack_using_command solve' -s j -l json -f -a format -complete -c spack -n '__fish_spack_using_command solve' -s j -l json -d 'print concrete spec as json' +complete -c spack -n '__fish_spack_using_command solve' -s j -l json -d 'print concrete spec as JSON' +complete -c spack -n '__fish_spack_using_command solve' -l format -r -f -a format +complete -c spack -n '__fish_spack_using_command solve' -l format -r -d 'print concrete spec with the specified format string' complete -c spack -n '__fish_spack_using_command solve' -s c -l cover -r -f -a 'nodes edges paths' complete -c spack -n '__fish_spack_using_command solve' -s c -l cover -r -d 'how extensively to traverse the DAG (default: nodes)' complete -c spack -n '__fish_spack_using_command solve' -s t -l types -f -a types complete -c spack -n '__fish_spack_using_command solve' -s t -l types -d 'show dependency types' -complete -c spack -n '__fish_spack_using_command solve' -l timers -f -a timers -complete -c spack -n '__fish_spack_using_command solve' -l timers -d 'print out timers for different solve phases' -complete -c spack -n '__fish_spack_using_command solve' -l stats -f -a stats -complete -c spack -n '__fish_spack_using_command solve' -l stats -d 'print out statistics from clingo' complete -c spack -n '__fish_spack_using_command solve' -s U -l fresh -f -a concretizer_reuse complete -c spack -n '__fish_spack_using_command solve' -s U -l fresh -d 'do not reuse installed deps; build newest configuration' complete -c spack -n '__fish_spack_using_command solve' -l reuse -f -a concretizer_reuse From 25a5585f7d404d102826f4ad3066b34012d6ded7 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Mon, 28 Oct 2024 21:26:11 -0600 Subject: [PATCH 192/615] exawind: remove generated fortran dependencies (#47276) --- .../builtin/packages/amr-wind/package.py | 135 +++++------------- .../repos/builtin/packages/exawind/package.py | 5 +- .../builtin/packages/nalu-wind/package.py | 21 ++- .../repos/builtin/packages/tioga/package.py | 3 +- 4 files changed, 47 insertions(+), 117 deletions(-) diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index 75a3a0d5755f23..47919489006e4e 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -21,106 +21,41 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("main", branch="main", submodules=True) - version( - "3.1.6", tag="v3.1.6", commit="ca437affc6fd00490d8b14e244e53bf641207224", submodules=True - ) - version( - "3.1.5", tag="v3.1.5", commit="554f8aa1ac36c2bae17565c64d5bc33333cee396", submodules=True - ) - version( - "3.1.4", tag="v3.1.4", commit="e10f5ebd3141b9990a65ebe9f1bdca8554b59472", submodules=True - ) - version( - "3.1.3", tag="v3.1.3", commit="af8231ace69119133c4c8a906e98946ec5aa79c8", submodules=True - ) - version( - "3.1.2", tag="v3.1.2", commit="5edcac4496e30e450c0f21e7fa74f8b590dc3860", submodules=True - ) - version( - "3.1.1", tag="v3.1.1", commit="8ae06194fa47bf473615988f97a7b423d467b023", submodules=True - ) - version( - "3.1.0", tag="v3.1.0", commit="3e23581b132532bf70b09c38217ff9c46204f047", submodules=True - ) - version( - "3.0.2", tag="v3.0.2", commit="f867288dffecc6404189afa965189c2558cf9922", submodules=True - ) - version( - "3.0.1", tag="v3.0.1", commit="65aa85db5cb3bbabc767d5dde4b106b7022a0f90", submodules=True - ) - version( - "3.0.0", tag="v3.0.0", commit="2fbd345cfa7cb7277c1cb6a1323247579e1bbc32", submodules=True - ) - version( - "2.6.0", tag="v2.6.0", commit="31ef1137b00b304b62b84edaa5b819c0bf0b7436", submodules=True - ) - version( - "2.5.0", tag="v2.5.0", commit="f9f499b6926339f96b3ff260495b8782c045555c", submodules=True - ) - version( - "2.4.3", tag="v2.4.3", commit="4be85f376d4939f8e5534b7985917e4cfccedfaf", submodules=True - ) - version( - "2.4.2", tag="v2.4.2", commit="5ebb2abf2df9c87e6086d8f55a4d929ff0cdb37b", submodules=True - ) - version( - "2.4.1", tag="v2.4.1", commit="40accd372f850e10fcbeee6ddecc4d15fd6364c6", submodules=True - ) - version( - "2.4.0", tag="v2.4.0", commit="b8ab898b7e9e8e78455b61e303940b80d00d18ca", submodules=True - ) - version( - "2.3.2", tag="v2.3.2", commit="61cbb21e8dfdeea47a0add772cd52abac33c4901", submodules=True - ) - version( - "2.3.1", tag="v2.3.1", commit="cc51dadb34de9f333605a5bfb83b72c9310f676a", submodules=True - ) - version( - "2.3.0", tag="v2.3.0", commit="6ba000b628aa3178545cdbbea508cc2cb2e5c76c", submodules=True - ) - version( - "2.2.1", tag="v2.2.1", commit="e131a79f8e68be181390a2656f54268f90a9e78a", submodules=True - ) - version( - "2.2.0", tag="v2.2.0", commit="bc787f21deca9239928182e27400133934c62658", submodules=True - ) - version( - "2.1.0", tag="v2.1.0", commit="13e15b52f4a1651a3d72324a71ba1e18255663e7", submodules=True - ) - version( - "2.0.0", tag="v2.0.0", commit="ea448365033fc6bc9ee0febeb369b377f4fd8240", submodules=True - ) - version( - "1.4.0", tag="v1.4.0", commit="bdddf133e41a9b7b4c8ce28f1ea1bebec47678f5", submodules=True - ) - version( - "1.3.1", tag="v1.3.1", commit="63692889143599de57232e64a9c7e4af8f0a2e1e", submodules=True - ) - version( - "1.3.0", tag="v1.3.0", commit="f74d7b3801f0492e586d440fac729d9dec595a8b", submodules=True - ) - version( - "1.2.1", tag="v1.2.1", commit="7291737434ca339ecc765355eab88ddd529ff68f", submodules=True - ) - version( - "1.2.0", tag="v1.2.0", commit="db9add5c1c68583a9019cb7ba6776bd580b0ab3e", submodules=True - ) - version( - "1.1.0", tag="v1.1.0", commit="30396bf70f0bd5ac65dd0f7b29757b0e02b22459", submodules=True - ) - version( - "1.0.1", tag="v1.0.1", commit="aa9b7e8e63833e6ac1cc3f60fcba5140416cc139", submodules=True - ) - version( - "1.0.0", tag="v1.0.0", commit="885f4137ce7b9e6c60f48aa5e4c1a54f1418ea9e", submodules=True - ) - version( - "0.9.0", tag="v0.9.0", commit="cf66ebe31fd5f27b76a83451cd22f346e7a67160", submodules=True - ) - - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + version("3.1.6", tag="v3.1.6", submodules=True) + version("3.1.5", tag="v3.1.5", submodules=True) + version("3.1.4", tag="v3.1.4", submodules=True) + version("3.1.3", tag="v3.1.3", submodules=True) + version("3.1.2", tag="v3.1.2", submodules=True) + version("3.1.1", tag="v3.1.1", submodules=True) + version("3.1.0", tag="v3.1.0", submodules=True) + version("3.0.2", tag="v3.0.2", submodules=True) + version("3.0.1", tag="v3.0.1", submodules=True) + version("3.0.0", tag="v3.0.0", submodules=True) + version("2.6.0", tag="v2.6.0", submodules=True) + version("2.5.0", tag="v2.5.0", submodules=True) + version("2.4.3", tag="v2.4.3", submodules=True) + version("2.4.2", tag="v2.4.2", submodules=True) + version("2.4.1", tag="v2.4.1", submodules=True) + version("2.4.0", tag="v2.4.0", submodules=True) + version("2.3.2", tag="v2.3.2", submodules=True) + version("2.3.1", tag="v2.3.1", submodules=True) + version("2.3.0", tag="v2.3.0", submodules=True) + version("2.2.1", tag="v2.2.1", submodules=True) + version("2.2.0", tag="v2.2.0", submodules=True) + version("2.1.0", tag="v2.1.0", submodules=True) + version("2.0.0", tag="v2.0.0", submodules=True) + version("1.4.0", tag="v1.4.0", submodules=True) + version("1.3.1", tag="v1.3.1", submodules=True) + version("1.3.0", tag="v1.3.0", submodules=True) + version("1.2.1", tag="v1.2.1", submodules=True) + version("1.2.0", tag="v1.2.0", submodules=True) + version("1.1.0", tag="v1.1.0", submodules=True) + version("1.0.1", tag="v1.0.1", submodules=True) + version("1.0.0", tag="v1.0.0", submodules=True) + version("0.9.0", tag="v0.9.0", submodules=True) + + depends_on("c", type="build") + depends_on("cxx", type="build") variant("hypre", default=False, description="Enable Hypre integration") variant("ascent", default=False, description="Enable Ascent integration") diff --git a/var/spack/repos/builtin/packages/exawind/package.py b/var/spack/repos/builtin/packages/exawind/package.py index 28e304bffa7e9c..f7c611a918fe34 100644 --- a/var/spack/repos/builtin/packages/exawind/package.py +++ b/var/spack/repos/builtin/packages/exawind/package.py @@ -18,11 +18,12 @@ class Exawind(CMakePackage, CudaPackage, ROCmPackage): license("Apache-2.0") - version("master", branch="main", submodules=True, preferred=True) + version("master", branch="main", submodules=True) version("1.1.0", tag="v1.1.0", submodules=True) version("1.0.0", tag="v1.0.0", submodules=True) - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("amr_wind_gpu", default=False, description="Enable AMR-Wind on the GPU") variant("nalu_wind_gpu", default=False, description="Enable Nalu-Wind on the GPU") diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index 5e991e902819b2..d7247d7acd4c45 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -13,15 +13,6 @@ def _parse_float(val): return False -def submodules(package): - submodules = [] - if package.spec.satisfies("+wind-utils"): - submodules.append("wind-utils") - if package.spec.satisfies("+tests"): - submodules.append("reg_tests/mesh") - return submodules - - class NaluWind(CMakePackage, CudaPackage, ROCmPackage): """Nalu-Wind: Wind energy focused variant of Nalu.""" @@ -33,9 +24,9 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): tags = ["ecp", "ecp-apps"] - version("master", branch="master", submodules=submodules) - version("2.1.0", tag="v2.1.0", submodules=submodules) - version("2.0.0", tag="v2.0.0", submodules=submodules) + version("master", branch="master", submodules=True) + version("2.1.0", tag="v2.1.0", submodules=True) + version("2.0.0", tag="v2.0.0", submodules=True) variant("pic", default=True, description="Position independent code") variant( @@ -66,6 +57,10 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): "tests", default=False, description="Enable regression tests and clone the mesh submodule" ) + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+openfast") + depends_on("mpi") depends_on("yaml-cpp@0.5.3:") depends_on("openfast@4.0.0:+cxx+netcdf", when="+fsi") @@ -156,7 +151,6 @@ def cmake_args(self): args = [ self.define("CMAKE_CXX_COMPILER", spec["mpi"].mpicxx), - self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc), self.define("Trilinos_DIR", spec["trilinos"].prefix), self.define("YAML_DIR", spec["yaml-cpp"].prefix), self.define("CMAKE_CXX_STANDARD", "17"), @@ -177,6 +171,7 @@ def cmake_args(self): if spec.satisfies("+openfast"): args.append(self.define("OpenFAST_DIR", spec["openfast"].prefix)) + args.append(self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc)) if spec.satisfies("+tioga"): args.append(self.define("TIOGA_DIR", spec["tioga"].prefix)) diff --git a/var/spack/repos/builtin/packages/tioga/package.py b/var/spack/repos/builtin/packages/tioga/package.py index 29b8bb6289e330..62e3234ab11d9f 100644 --- a/var/spack/repos/builtin/packages/tioga/package.py +++ b/var/spack/repos/builtin/packages/tioga/package.py @@ -25,8 +25,7 @@ class Tioga(CMakePackage): version("1.0.0", git="https://github.com/Exawind/tioga.git", tag="v1.0.0") version("master", branch="master") - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("cxx", type="build") variant("shared", default=sys.platform != "darwin", description="Build shared libraries") variant("pic", default=True, description="Position independent code") From f81ca0cd89595835b634b77d0f63ab0bd6156331 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 29 Oct 2024 07:51:36 +0100 Subject: [PATCH 193/615] directives_meta.py: use startswith to test module part of spack.pkg (#47270) --- lib/spack/spack/directives_meta.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/directives_meta.py b/lib/spack/spack/directives_meta.py index 0768a40664f4e6..70ba0298a88a82 100644 --- a/lib/spack/spack/directives_meta.py +++ b/lib/spack/spack/directives_meta.py @@ -10,6 +10,7 @@ import llnl.util.lang import spack.error +import spack.repo import spack.spec #: Names of possible directives. This list is mostly populated using the @directive decorator. @@ -63,7 +64,7 @@ def __init__(cls, name, bases, attr_dict): # The instance is being initialized: if it is a package we must ensure # that the directives are called to set it up. - if "spack.pkg" in cls.__module__: + if cls.__module__.startswith(spack.repo.ROOT_PYTHON_NAMESPACE): # Ensure the presence of the dictionaries associated with the directives. # All dictionaries are defaultdicts that create lists for missing keys. for d in DirectiveMeta._directive_dict_names: From 962115b386a1acd7de564ceafba93885dbd12c80 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 29 Oct 2024 07:53:06 +0100 Subject: [PATCH 194/615] builder.py: builder_cls should be associated to spack.pkg module (#47269) --- lib/spack/spack/audit.py | 3 +-- lib/spack/spack/builder.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index 3ccdd5b9cd651f..6596b7e767d7d5 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -722,9 +722,8 @@ def _ensure_env_methods_are_ported_to_builders(pkgs, error_cls): ) builder_cls_names = [spack.builder.BUILDER_CLS[x].__name__ for x in build_system_names] - module = pkg_cls.module has_builders_in_package_py = any( - getattr(module, name, False) for name in builder_cls_names + spack.builder.get_builder_class(pkg_cls, name) for name in builder_cls_names ) if not has_builders_in_package_py: continue diff --git a/lib/spack/spack/builder.py b/lib/spack/spack/builder.py index 098f583d534d2d..b767f15b6dc765 100644 --- a/lib/spack/spack/builder.py +++ b/lib/spack/spack/builder.py @@ -12,6 +12,7 @@ import spack.error import spack.multimethod +import spack.repo #: Builder classes, as registered by the "builder" decorator BUILDER_CLS = {} @@ -74,6 +75,14 @@ def __call__(self, spec, prefix): return self.phase_fn(self.builder.pkg, spec, prefix) +def get_builder_class(pkg, name: str) -> Optional[type]: + """Return the builder class if a package module defines it.""" + cls = getattr(pkg.module, name, None) + if cls and cls.__module__.startswith(spack.repo.ROOT_PYTHON_NAMESPACE): + return cls + return None + + def _create(pkg): """Return a new builder object for the package object being passed as argument. @@ -99,9 +108,10 @@ class hierarchy (look at AspellDictPackage for an example of that) package_buildsystem = buildsystem_name(pkg) default_builder_cls = BUILDER_CLS[package_buildsystem] builder_cls_name = default_builder_cls.__name__ - builder_cls = getattr(pkg.module, builder_cls_name, None) - if builder_cls: - return builder_cls(pkg) + builder_class = get_builder_class(pkg, builder_cls_name) + + if builder_class: + return builder_class(pkg) # Specialized version of a given buildsystem can subclass some # base classes and specialize certain phases or methods or attributes. From 7af1a3d240b358805358a2094dbfa0654d057b95 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 29 Oct 2024 07:54:28 +0100 Subject: [PATCH 195/615] std_meson_args: deprecate (#47259) --- lib/spack/spack/audit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index 6596b7e767d7d5..cec0fbd42fd314 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -805,7 +805,7 @@ def _uses_deprecated_globals(pkgs, error_cls): file = spack.repo.PATH.filename_for_package_name(pkg_name) tree = ast.parse(open(file).read()) - visitor = DeprecatedMagicGlobals(("std_cmake_args",)) + visitor = DeprecatedMagicGlobals(("std_cmake_args", "std_meson_args")) visitor.visit(tree) if visitor.references_to_globals: errors.append( From ea1aa0714b83f3ea75045dccf160f46f8ef14356 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 29 Oct 2024 10:57:31 +0100 Subject: [PATCH 196/615] bootstrap: do not consider source when metadata file missing (#47278) --- lib/spack/spack/bootstrap/core.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/bootstrap/core.py b/lib/spack/spack/bootstrap/core.py index 7e40c5dea4a292..0c6127e63e8289 100644 --- a/lib/spack/spack/bootstrap/core.py +++ b/lib/spack/spack/bootstrap/core.py @@ -602,7 +602,10 @@ def bootstrapping_sources(scope: Optional[str] = None): current = copy.copy(entry) metadata_dir = spack.util.path.canonicalize_path(entry["metadata"]) metadata_yaml = os.path.join(metadata_dir, METADATA_YAML_FILENAME) - with open(metadata_yaml, encoding="utf-8") as stream: - current.update(spack.util.spack_yaml.load(stream)) - list_of_sources.append(current) + try: + with open(metadata_yaml, encoding="utf-8") as stream: + current.update(spack.util.spack_yaml.load(stream)) + list_of_sources.append(current) + except OSError: + pass return list_of_sources From 360dbe41f7b7a380651db3735ea6e0a7cf1b1920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Chevalier?= Date: Tue, 29 Oct 2024 13:28:12 +0100 Subject: [PATCH 197/615] kokkos: async malloc (#46464) --- var/spack/repos/builtin/packages/kokkos/package.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index ca9791fab14ee6..01ee5235e9c2ce 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -227,6 +227,10 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): conflicts("+cuda", when="cxxstd=17 ^cuda@:10") conflicts("+cuda", when="cxxstd=20 ^cuda@:11") + # Expose a way to disable CudaMallocAsync that can cause problems + # with some MPI such as cray-mpich + variant("alloc_async", default=False, description="Use CudaMallocAsync", when="@4.2: +cuda") + # SYCL and OpenMPTarget require C++17 or higher for cxxstdver in cxxstds[: cxxstds.index("17")]: conflicts( @@ -371,12 +375,9 @@ def cmake_args(self): if self.spec.satisfies("%oneapi") or self.spec.satisfies("%intel"): options.append(self.define("CMAKE_CXX_FLAGS", "-fp-model=precise")) - # Kokkos 4.2.00+ changed the default to Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC=on - # which breaks GPU-aware with Cray-MPICH - # See https://github.com/kokkos/kokkos/pull/6402 - # TODO: disable this once Cray-MPICH is fixed - if self.spec.satisfies("@4.2.00:") and self.spec.satisfies("^[virtuals=mpi] cray-mpich"): - options.append(self.define("Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC", False)) + options.append( + self.define_from_variant("Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC", "alloc_async") + ) # Remove duplicate options return lang.dedupe(options) From c302049b5dea718016ff2d886a4d6cb940d2be05 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:03:12 +0100 Subject: [PATCH 198/615] spglib: new version 2.5.0 (#47291) --- var/spack/repos/builtin/packages/spglib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/spglib/package.py b/var/spack/repos/builtin/packages/spglib/package.py index 7420d3ad75855e..b918fab2d0c073 100644 --- a/var/spack/repos/builtin/packages/spglib/package.py +++ b/var/spack/repos/builtin/packages/spglib/package.py @@ -20,6 +20,7 @@ class Spglib(CMakePackage): license("BSD-3-Clause") + version("2.5.0", sha256="b6026f5e85106c0c9ee57e54b9399890d0f29982e20e96ede0428b3efbe6b914") version("2.4.0", sha256="e33694b189c6864f719a59c31e2af55301a524fb68ba9fb65f08e95af471847d") version("2.3.1", sha256="c295dbea7d2fc9e50639aa14331fef277878c35f00ef0766e688bfbb7b17d44c") version("2.3.0", sha256="c05eb869018efe2efe5dcb2654cda19c5dd4c07434874205fa542f7766f7548e") From ca48233ef7b80b87988bbd26b88d46bb1f20ee41 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 29 Oct 2024 14:45:26 +0100 Subject: [PATCH 199/615] py-jupyter-core: set environment variables for extensions (#47192) * py-jupyter-core: set environment variables for extensions * Changes committed by gh-spack-pr --------- Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/py-jupyter-core/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index 8303cadb9a94c9..c41bbd45d83076 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.package import * @@ -45,3 +47,10 @@ class PyJupyterCore(PythonPackage): # Historical dependencies depends_on("py-setuptools", when="@:4.9.2", type=("build", "run")) + + def setup_dependent_run_environment(self, env, dependent_spec): + # https://docs.jupyter.org/en/stable/use/jupyter-directories.html + if os.path.exists(dependent_spec.prefix.etc.jupyter): + env.prepend_path("JUPYTER_CONFIG_PATH", dependent_spec.prefix.etc.jupyter) + if os.path.exists(dependent_spec.prefix.share.jupyter): + env.prepend_path("JUPYTER_PATH", dependent_spec.prefix.share.jupyter) From 1bff2f7034def08f00f109766d2c5760b85f5062 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 29 Oct 2024 15:06:01 +0100 Subject: [PATCH 200/615] py-mpi4py: add v4.0.1 (#47261) Co-authored-by: t. chantrait --- var/spack/repos/builtin/packages/py-mpi4py/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index 9bb50ac679f7a5..c447e700a142de 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -20,6 +20,7 @@ class PyMpi4py(PythonPackage): license("BSD-2-Clause", when="@:3") version("master", branch="master") + version("4.0.1", sha256="f3174b245775d556f4fddb32519a2066ef0592edc810c5b5a59238f9a0a40c89") version("4.0.0", sha256="820d31ae184d69c17d9b5d55b1d524d56be47d2e6cb318ea4f3e7007feff2ccc") version("3.1.6", sha256="c8fa625e0f92b082ef955bfb52f19fa6691d29273d7d71135d295aa143dee6cb") version("3.1.5", sha256="a706e76db9255135c2fb5d1ef54cb4f7b0e4ad9e33cbada7de27626205f2a153") From 20a6b22f7819f3350b5a2b04555d585e970e8a17 Mon Sep 17 00:00:00 2001 From: "Jose E. Roman" Date: Tue, 29 Oct 2024 15:06:32 +0100 Subject: [PATCH 201/615] New patch release SLEPc 3.22.1 (#47257) --- var/spack/repos/builtin/packages/py-slepc4py/package.py | 1 + var/spack/repos/builtin/packages/slepc/package.py | 1 + 2 files changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index f02707046b5aed..41d65e294e4504 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -18,6 +18,7 @@ class PySlepc4py(PythonPackage): license("BSD-2-Clause") version("main", branch="main") + version("3.22.1", sha256="056d98bf09f5202d25842d5a4a4f553445103e1e26155da52f007c508f3140f8") version("3.22.0", sha256="53db52a72e126787768732790ca73dbc6ff6e49d4d1152e9c3641ba71b97738e") version("3.21.2", sha256="f611ff74e4749f21445b2369dbd0edf404cdf639eecafd54187d0a2865d521a0") version("3.21.1", sha256="bc8e0e270643eef9b63b249080b8fe4433be0b697d55032d9f768ef310bd7b07") diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 92f7c93da8b2a9..019f676696b96a 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -22,6 +22,7 @@ class Slepc(Package, CudaPackage, ROCmPackage): test_requires_compiler = True version("main", branch="main") + version("3.22.1", sha256="badb5cb038d09dbf1cc8f34d194673ab011c69cc46888101955c786d21c8d8c9") version("3.22.0", sha256="45eb4d085875b50108c91fd9168ed17bc9158cc3b1e530ac843b26d9981c3db0") version("3.21.2", sha256="306fa649750509b3957b9f9311bff5dc1d20be5c5d494dd6472584c439b931f6") version("3.21.1", sha256="beb33f0a15c3ce81744b15ad09ddf84dae70dbf3475c5ef032b8549ab87d6d8a") From ffd7830bfa68e6f6241ed555830f0c30bad111c5 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 29 Oct 2024 15:33:41 +0100 Subject: [PATCH 202/615] cbflib: improve syntax for querying %gcc version (#47280) Signed-off-by: Massimiliano Culpo --- var/spack/repos/builtin/packages/cbflib/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cbflib/package.py b/var/spack/repos/builtin/packages/cbflib/package.py index d883fdcd5eeef8..5277b3a12488e5 100644 --- a/var/spack/repos/builtin/packages/cbflib/package.py +++ b/var/spack/repos/builtin/packages/cbflib/package.py @@ -49,8 +49,7 @@ def edit(self, spec, prefix): mf.filter(r"^C\+\+.+", "C++ = {0}".format(spack_cxx)) mf.filter("gfortran", spack_fc) mf.filter(r"^INSTALLDIR .+", "INSTALLDIR = {0}".format(prefix)) - real_version = Version(self.compiler.get_real_version()) - if real_version >= Version("10"): + if self.spec.satisfies("%gcc@10:"): mf.filter(r"^F90FLAGS[ \t]*=[ \t]*(.+)", "F90FLAGS = \\1 -fallow-invalid-boz") def build(self, spec, prefix): From 7f609ba9341317960b9a7ab6e8a83e48a8f90987 Mon Sep 17 00:00:00 2001 From: Lin Guo Date: Tue, 29 Oct 2024 10:18:06 -0700 Subject: [PATCH 203/615] wrf: add v4.6.0 and v4.6.1 versions (#47203) --- var/spack/repos/builtin/packages/wrf/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index e343992a6abd87..e7187645c77b85 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -70,6 +70,16 @@ class Wrf(Package): maintainers("MichaelLaufer", "ptooley") tags = ["windows"] + version( + "4.6.1", + sha256="b8ec11b240a3cf1274b2bd609700191c6ec84628e4c991d3ab562ce9dc50b5f2", + url="https://github.com/wrf-model/WRF/releases/download/v4.6.1/v4.6.1.tar.gz", + ) + version( + "4.6.0", + sha256="1bb010f9e20b40d33d9df55a602ea9eb54c5444a7316c00a95e1cc44b209021e", + url="https://github.com/wrf-model/WRF/releases/download/v4.6.0/v4.6.0.tar.gz", + ) version( "4.5.2", sha256="408ba6aa60d9cd51d6bad2fa075a3d37000eb581b5d124162885b049c892bbdc", From f889b2a95ef126723bf6003fd8d5ed2a0e86f625 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 29 Oct 2024 11:19:36 -0600 Subject: [PATCH 204/615] gromacs: add missing sycl contraint (#47274) --- var/spack/repos/builtin/packages/gromacs/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 0d8942d66f1218..d273f42299d0f1 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -116,7 +116,7 @@ class Gromacs(CMakePackage, CudaPackage): description="Enable multi-GPU FFT support with HeFFTe", ) variant("opencl", default=False, description="Enable OpenCL support") - variant("sycl", default=False, when="@2021:", description="Enable SYCL support") + variant("sycl", default=False, when="@2021: %clang", description="Enable SYCL support") variant( "intel-data-center-gpu-max", default=False, From ffc904aa6b0a75c7a4b47b7af1af52f4b0488973 Mon Sep 17 00:00:00 2001 From: Bernhard Kaindl Date: Tue, 29 Oct 2024 17:22:10 +0000 Subject: [PATCH 205/615] r-textshaping,r-ragg: Add dep on pkgconfig, type="build" and handle freetype@2.13.3 (#47091) * r-textshaping: build-dep on pkgconfig to find harfbuzz * r-ragg: Fix build with freetype@2.13.3 --- var/spack/repos/builtin/packages/r-ragg/package.py | 6 ++++++ var/spack/repos/builtin/packages/r-textshaping/package.py | 1 + 2 files changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/r-ragg/package.py b/var/spack/repos/builtin/packages/r-ragg/package.py index 0d0abcb60c0d6e..399b5209f7ecd0 100644 --- a/var/spack/repos/builtin/packages/r-ragg/package.py +++ b/var/spack/repos/builtin/packages/r-ragg/package.py @@ -28,3 +28,9 @@ class RRagg(RPackage): depends_on("libpng") depends_on("libtiff") depends_on("jpeg") + + def flag_handler(self, name, flags): + # Freetype 2.13.3 broke the public interface by switching char/unsigned char: + if name == "cxxflags" and self.spec["freetype"].version >= Version("2.13.3"): + flags.append("-fpermissive") + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/r-textshaping/package.py b/var/spack/repos/builtin/packages/r-textshaping/package.py index 877fe54114bf6a..2de9d3270cf129 100644 --- a/var/spack/repos/builtin/packages/r-textshaping/package.py +++ b/var/spack/repos/builtin/packages/r-textshaping/package.py @@ -23,6 +23,7 @@ class RTextshaping(RPackage): depends_on("r@3.2.0:", type=("build", "run")) depends_on("r-systemfonts@1.0.0:", type=("build", "run")) depends_on("r-cpp11@0.2.1:", type=("build", "run")) + depends_on("pkgconfig", type="build") depends_on("freetype") depends_on("harfbuzz") depends_on("fribidi") From dbe7b6bc6b70980bb624e9b20c613dc2f3825fc7 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Tue, 29 Oct 2024 13:23:20 -0400 Subject: [PATCH 206/615] quantum-espresso: add v7.4.0 (#47268) --- var/spack/repos/builtin/packages/quantum-espresso/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py index af1d61855195d3..ea8715a64dbbdc 100644 --- a/var/spack/repos/builtin/packages/quantum-espresso/package.py +++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py @@ -25,6 +25,7 @@ class QuantumEspresso(CMakePackage, Package): license("GPL-2.0-only") version("develop", branch="develop") + version("7.4", sha256="b15dcfe25f4fbf15ccd34c1194021e90996393478226e601d876f7dea481d104") version("7.3.1", sha256="2c58b8fadfe4177de5a8b69eba447db5e623420b070dea6fd26c1533b081d844") version("7.3", sha256="edc2a0f3315c69966df4f82ec86ab9f682187bc9430ef6d2bacad5f27f08972c") version("7.2", sha256="b348a4a7348b66a73545d9ca317a2645755c98d343c1cfe8def475ad030808c0") From 741a4a5d4fa322a24bba42339b766eb4e4d241c3 Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Tue, 29 Oct 2024 12:25:21 -0500 Subject: [PATCH 207/615] petsc, py-petsc4py: add v3.22.1 (#47267) --- var/spack/repos/builtin/packages/petsc/package.py | 1 + var/spack/repos/builtin/packages/py-petsc4py/package.py | 1 + 2 files changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 876419cb85dcae..0a0d61da856919 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -23,6 +23,7 @@ class Petsc(Package, CudaPackage, ROCmPackage): tags = ["e4s"] version("main", branch="main") + version("3.22.1", sha256="7117d3ae6827f681ed9737939d4e86896b4751e27cca941bb07e5703f19a0a7b") version("3.22.0", sha256="2c03f7c0f7ad2649240d4989355cf7fb7f211b75156cd7d424e1d9dd7dfb290b") version("3.21.6", sha256="cb2dc00742a89cf8acf9ff8aae189e6864e8b90f4997f087be6e54ff39c30d74") version("3.21.5", sha256="4eb1ec04c1a8988bd524f71f8d7d980dc1853d5be8791c0f19f3c09eef71fdd2") diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index 38a79296de536c..df4522dabc399c 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -20,6 +20,7 @@ class PyPetsc4py(PythonPackage): license("BSD-2-Clause") version("main", branch="main") + version("3.22.1", sha256="a7fd321458b72356e46c4bc5bd93d173c9c2f91018cf21f614a631fe2aa6466a") version("3.22.0", sha256="b35fc833d41c7969be8a530494fcc81741d77e0dc33fba2f4050cdbd0ad881ae") version("3.21.6", sha256="d7a6d41e1463b04b9711b53b347d15f590f9354fae37aae14ad69100286129aa") version("3.21.5", sha256="70e6fa795e9abd8014faec0203cd0cc3efd79f4647c97cafc33776421c9ab1e8") From d776dead5655e0635061bb73a7489a43144eabdd Mon Sep 17 00:00:00 2001 From: Valentin Volkl Date: Tue, 29 Oct 2024 18:26:35 +0100 Subject: [PATCH 208/615] gaudi: gdb doesn't build on macos/arm64 (#47266) * gaudi: gdb doesn't build on macos/arm64 * fix imports --- var/spack/repos/builtin/packages/gaudi/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index 92dc3985fde149..b580eeec77c471 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + from spack.package import * @@ -124,7 +126,8 @@ class Gaudi(CMakePackage): depends_on("cppunit", when="+cppunit") depends_on("doxygen +graphviz", when="+docs") depends_on("gperftools", when="+gperftools") - depends_on("gdb") + # gdb is optional, but useful to have as gaudi adds hooks for it if present during build + depends_on("gdb", when=sys.platform != "darwin") depends_on("heppdt", when="+heppdt") depends_on("jemalloc", when="+jemalloc") depends_on("libunwind", when="+unwind") From 65daf17b54cf6712bc00369ea79025bec04ebe7e Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Tue, 29 Oct 2024 18:28:18 +0100 Subject: [PATCH 209/615] acts dependencies: new versions as of 2024/10/28 (#47265) This commit adds a new version of ACTS and detray. --- var/spack/repos/builtin/packages/acts/package.py | 1 + var/spack/repos/builtin/packages/detray/package.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 7bcbef780ad16d..7845ada663b639 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -41,6 +41,7 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version("main", branch="main") version("master", branch="main", deprecated=True) # For compatibility + version("37.2.0", commit="821144dc40d35b44aee0d7857a0bd1c99e4a3932", submodules=True) version("37.1.0", commit="fa6ad4d52e0bd09cf8c78507fcbb18e9ac2c87a3", submodules=True) version("37.0.1", commit="998b9c9dd42d5160c2540f8fa820505869bfdb79", submodules=True) version("37.0.0", commit="117feaaadc7a2336755274e0cd70ba58a047a1de", submodules=True) diff --git a/var/spack/repos/builtin/packages/detray/package.py b/var/spack/repos/builtin/packages/detray/package.py index 1ea2022dfb3f88..1d08d4134fa57c 100644 --- a/var/spack/repos/builtin/packages/detray/package.py +++ b/var/spack/repos/builtin/packages/detray/package.py @@ -20,6 +20,7 @@ class Detray(CMakePackage): license("MPL-2.0", checked_by="stephenswat") + version("0.80.0", sha256="a12f3e333778ddd20a568b5c8df5b2375f9a4d74caf921822c1864b07b3f8ab7") version("0.79.0", sha256="3b9f18cb003e59795a0e4b1414069ac8558b975714626449293a71bc4398a380") version("0.78.0", sha256="ca3a348f4e12ed690c3106197e107b9c393b6902224b2543b00382050864bcf3") version("0.77.0", sha256="c2c72f65a7ff2426335b850c0b3cfbbbf666208612b2458c97a534ecf8029cb8") @@ -63,6 +64,7 @@ class Detray(CMakePackage): depends_on("cmake@3.11:", type="build") depends_on("vecmem@1.6.0:") + depends_on("vecmem@1.8.0:", when="@0.76:") depends_on("covfie@0.10.0:") depends_on("nlohmann-json@3.11.0:", when="+json") depends_on("dfelibs@20211029:") @@ -93,6 +95,9 @@ def cmake_args(self): self.define_from_variant("DETRAY_SMATRIX_PLUGIN", "smatrix"), self.define_from_variant("DETRAY_IO_CSV", "csv"), self.define_from_variant("DETRAY_IO_JSON", "json"), + self.define_from_variant("DETRAY_VC_PLUGIN", "vc"), + self.define_from_variant("DETRAY_VC_AOS_PLUGIN", "vc"), + self.define_from_variant("DETRAY_VC_SOA_PLUGIN", "vc"), self.define("DETRAY_SVG_DISPLAY", True), self.define("DETRAY_SETUP_ACTSVG", True), self.define("DETRAY_BUILD_TESTING", False), From 5bca7187a52e9a5d135c5092cf1abf5fbeb7e718 Mon Sep 17 00:00:00 2001 From: James Taliaferro <44253038+taliaferro@users.noreply.github.com> Date: Tue, 29 Oct 2024 10:30:13 -0700 Subject: [PATCH 210/615] py-uv: new version (#47275) This adds the current latest version of py-uv. While working on this, I also found that uv (including older versions) has a build dependency on cmake which was not specified in the package, so I added it as a dependency. I also found that on my machine, the build process had trouble finding cmake, so I set the path to it explicitly as an environment variable. --- var/spack/repos/builtin/packages/py-uv/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-uv/package.py b/var/spack/repos/builtin/packages/py-uv/package.py index 472732da1d058c..c872d974c83789 100644 --- a/var/spack/repos/builtin/packages/py-uv/package.py +++ b/var/spack/repos/builtin/packages/py-uv/package.py @@ -14,6 +14,7 @@ class PyUv(PythonPackage): license("APACHE 2.0 or MIT") + version("0.4.27", sha256="c13eea45257362ecfa2a2b31de9b62fbd0542e211a573562d98ab7c8fc50d8fc") version("0.4.17", sha256="01564bd760eff885ad61f44173647a569732934d1a4a558839c8088fbf75e53f") version("0.4.16", sha256="2144995a87b161d063bd4ef8294b1e948677bd90d01f8394d0e3fca037bb847f") version("0.4.15", sha256="8e36b8e07595fc6216d01e729c81a0b4ff029a93cc2ef987a73d3b650d6d559c") @@ -21,5 +22,9 @@ class PyUv(PythonPackage): depends_on("rust", type=("build", "run")) depends_on("python@3.8:", type=("build", "run")) depends_on("py-maturin@1:1", type="build") + depends_on("cmake", type="build") + + def setup_build_environment(self, env): + env.set("CMAKE", self.spec["cmake"].prefix.bin.cmake) executables = ["^uv$"] From 60cb628283d51e400b75c502e97f9ef7ba85a59a Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Tue, 29 Oct 2024 13:34:03 -0400 Subject: [PATCH 211/615] py-pycifrw: add v4.4.6 (#47262) --- var/spack/repos/builtin/packages/py-pycifrw/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pycifrw/package.py b/var/spack/repos/builtin/packages/py-pycifrw/package.py index 37d6c4c37a3925..8262fca5bc3306 100644 --- a/var/spack/repos/builtin/packages/py-pycifrw/package.py +++ b/var/spack/repos/builtin/packages/py-pycifrw/package.py @@ -15,6 +15,7 @@ class PyPycifrw(PythonPackage): license("Python-2.0") + version("4.4.6", sha256="02bf5975e70ab71540bff62fbef3e8354ac707a0f0ab914a152047962891ef15") version("4.4.1", sha256="cef7662f475e0eb78a55c2d55774d474e888c96b0539e5f08550afa902cdc4e1") depends_on("c", type="build") # generated From b8e3246e8907fc2326473083bc953d11e61bc1e8 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 29 Oct 2024 19:06:26 +0100 Subject: [PATCH 212/615] llnl.util.lang: add classes to help with deprecations (#47279) * Add a descriptor to have a class level constant This descriptor helps intercept places where we set a value on instances. It does not really behave like "const" in C-like languages, but is the simplest implementation that might still be useful. * Add a descriptor to deprecate properties/attributes of an object This descriptor is used as a base class. Derived classes may implement a factory to return an adaptor to the attribute being deprecated. The descriptor can either warn, or raise an error, when usage of the deprecated attribute is intercepted. --------- Co-authored-by: Harmen Stoppels --- lib/spack/llnl/util/lang.py | 55 ++++++++++++++++++++++++++ lib/spack/spack/test/llnl/util/lang.py | 37 +++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 5efe27b8b119f4..326d25e79ba38e 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -11,6 +11,7 @@ import re import sys import traceback +import warnings from datetime import datetime, timedelta from typing import Callable, Iterable, List, Tuple, TypeVar @@ -914,6 +915,21 @@ def ensure_last(lst, *elements): lst.append(lst.pop(lst.index(elt))) +class Const: + """Class level constant, raises when trying to set the attribute""" + + __slots__ = ["value"] + + def __init__(self, value): + self.value = value + + def __get__(self, instance, owner): + return self.value + + def __set__(self, instance, value): + raise TypeError(f"Const value does not support assignment [value={self.value}]") + + class TypedMutableSequence(collections.abc.MutableSequence): """Base class that behaves like a list, just with a different type. @@ -1018,3 +1034,42 @@ def __init__(self, callback): def __get__(self, instance, owner): return self.callback(owner) + + +class DeprecatedProperty: + """Data descriptor to error or warn when a deprecated property is accessed. + + Derived classes must define a factory method to return an adaptor for the deprecated + property, if the descriptor is not set to error. + """ + + __slots__ = ["name"] + + #: 0 - Nothing + #: 1 - Warning + #: 2 - Error + error_lvl = 0 + + def __init__(self, name: str) -> None: + self.name = name + + def __get__(self, instance, owner): + if instance is None: + return self + + if self.error_lvl == 1: + warnings.warn( + f"accessing the '{self.name}' property of '{instance}', which is deprecated" + ) + elif self.error_lvl == 2: + raise AttributeError(f"cannot access the '{self.name}' attribute of '{instance}'") + + return self.factory(instance, owner) + + def __set__(self, instance, value): + raise TypeError( + f"the deprecated property '{self.name}' of '{instance}' does not support assignment" + ) + + def factory(self, instance, owner): + raise NotImplementedError("must be implemented by derived classes") diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index abf2c5b1346bd3..52dcf3950a452b 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -336,3 +336,40 @@ def test_grouped_exception_base_type(): message = h.grouped_message(with_tracebacks=False) assert "catch-runtime-error" in message assert "catch-value-error" not in message + + +def test_class_level_constant_value(): + """Tests that the Const descriptor does not allow overwriting the value from an instance""" + + class _SomeClass: + CONST_VALUE = llnl.util.lang.Const(10) + + with pytest.raises(TypeError, match="not support assignment"): + _SomeClass().CONST_VALUE = 11 + + +def test_deprecated_property(): + """Tests the behavior of the DeprecatedProperty descriptor, which is can be used when + deprecating an attribute. + """ + + class _Deprecated(llnl.util.lang.DeprecatedProperty): + def factory(self, instance, owner): + return 46 + + class _SomeClass: + deprecated = _Deprecated("deprecated") + + # Default behavior is to just return the deprecated value + s = _SomeClass() + assert s.deprecated == 46 + + # When setting error_level to 1 the attribute warns + _SomeClass.deprecated.error_lvl = 1 + with pytest.warns(UserWarning): + assert s.deprecated == 46 + + # When setting error_level to 2 an exception is raised + _SomeClass.deprecated.error_lvl = 2 + with pytest.raises(AttributeError): + _ = s.deprecated From 52471bab02ad48a75d27442fe328c38eaf3372d6 Mon Sep 17 00:00:00 2001 From: Andrey Perestoronin Date: Tue, 29 Oct 2024 18:50:30 +0000 Subject: [PATCH 213/615] Added packages to for intel-2025.0.0 release (#47264) * Added packages to for intel-2025.0.0 release * fix style * pin mkl to 2024.2.2 until e4s can upgrade to 2025 compiler and ginkgo compatibility issue can be resolved. --------- Co-authored-by: Robert Cohn --- .../builtin/packages/intel-oneapi-advisor/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-ccl/package.py | 6 ++++++ .../packages/intel-oneapi-compilers/package.py | 11 +++++++++++ .../builtin/packages/intel-oneapi-dal/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-dnn/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-dpct/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-dpl/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-ipp/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-ippcp/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-mkl/package.py | 7 +++++++ .../builtin/packages/intel-oneapi-mpi/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-tbb/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-vtune/package.py | 6 ++++++ 13 files changed, 84 insertions(+) diff --git a/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py b/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py index 6523c0c1edd81e..354c01f17d174c 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py @@ -24,6 +24,12 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/advisor.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fe95ae4a-3692-4e31-919d-3e7bdf5832f1/intel-advisor-2025.0.0.798_offline.sh", + sha256="bf85d4b0bd199a2babdff6b4bd3885ce569a3ad0e992b99b2e14dbb30af88cd4", + expand=False, + ) version( "2024.3.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e36c14f6-6142-44ff-b498-d4ff169cc8b0/l_oneapi_advisor_p_2024.3.0.43_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py index ae26272fa392fe..78f939f16ff47f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py @@ -27,6 +27,12 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage): depends_on("intel-oneapi-mpi") + version( + "2021.14.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/88a7a6db-816c-4cd5-993f-821729da5648/intel-oneccl-2021.14.0.506_offline.sh", + sha256="2a02ebf10e9b129df8538520b4b343c5ac30350ada6bd1f2bdc9b4ef0f46e165", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4b4cf672-c1f9-4bac-97c4-f4ae10a0a020/l_oneapi_ccl_p_2021.13.1.32_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index 9a965c2d50f56b..3fc63be6522921 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -10,6 +10,17 @@ from spack.package import * versions = [ + { + "version": "2025.0.0", + "cpp": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ac92f2bb-4818-4e53-a432-f8b34d502f23/intel-dpcpp-cpp-compiler-2025.0.0.740_offline.sh", + "sha256": "04fadf63789acee731895e631db63f65a98b8279db3d0f48bdf0d81e6103bdd8", + }, + "ftn": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/69f79888-2d6c-4b20-999e-e99d72af68d4/intel-fortran-compiler-2025.0.0.723_offline.sh", + "sha256": "2be6d607ce84f35921228595b118fbc516d28587cbc4e6dcf6b7219e5cd1a9a9", + }, + }, { "version": "2024.2.1", "cpp": { diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py index 97bddf49d5a74a..afebb68a8e0637 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py @@ -26,6 +26,12 @@ class IntelOneapiDal(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onedal.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d9f2cdb2-93ec-4c78-a3fb-a59d27050c16/intel-onedal-2025.0.0.958_offline.sh", + sha256="be6c4130c29a77323515d1febcd55163f1db3e1cecdc8d477617cb8e560e4a3f", + expand=False, + ) version( "2024.7.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ed2c397a-9a78-4466-9179-b39b7da07e83/l_daal_oneapi_p_2024.7.0.14_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py index 93a34ef4cd1f1c..8d682d268d40d0 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py @@ -26,6 +26,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/87e117ab-039b-437d-9c80-dcd5c9e675d5/intel-onednn-2025.0.0.862_offline.sh", + sha256="267f63e8a3fe2a37c92873e53f3bf14a2cf680e888005cb6deb2014bc3be077c", + expand=False, + ) version( "2024.2.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7c850be0-b17d-4b7f-898d-3bc5fc36aa8d/l_onednn_p_2024.2.1.76_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py index 5acc3766782371..1db00291522532 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py @@ -19,6 +19,12 @@ class IntelOneapiDpct(IntelOneApiPackage): homepage = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html#gs.2p8km6" + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/de77e9b7-1fa2-4329-8777-2de569fee5d9/intel-dpcpp-ct-2025.0.0.912_offline.sh", + sha256="a675a0c6261c31c73ca8c37e9d6b4bd19018e9fcba72800c245ed61eb0fac9ee", + expand=False, + ) version( "2024.2.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e3b7b68d-65dd-4d03-9119-ce3ad448657e/l_dpcpp-ct_p_2024.2.1.64_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py index f631242b634a67..5f0877cf0f68df 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py @@ -22,6 +22,12 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage): homepage = "https://github.com/oneapi-src/oneDPL" + version( + "2022.7.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/85ad74ff-f4fa-45e2-b50d-67d637d42baa/intel-onedpl-2022.7.0.647_offline.sh", + sha256="8eecb6bd35ad414248fc03f9fd8ef4ec504d0ce44724b2c23d42f5f08e046a3f", + expand=False, + ) version( "2022.6.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fe007d71-c49f-4cdd-8a95-5c8e29c5b19c/l_oneDPL_p_2022.6.1.15_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py index 95781edbb690e8..99b2fea2d05a47 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py @@ -27,6 +27,12 @@ class IntelOneapiIpp(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html" ) + version( + "2022.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/acf220fa-326d-4f6e-9b63-f2da47b6f680/intel-ipp-2022.0.0.809_offline.sh", + sha256="e5e9be64ed79d9f3b2a11d9cdb573bea4a3a9a5cf08e5b7cc713947e622abbd6", + expand=False, + ) version( "2021.12.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7e07b203-af56-4b52-b69d-97680826a8df/l_ipp_oneapi_p_2021.12.1.16_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py index bc988992c67423..ed40dbac3521a4 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py @@ -28,6 +28,12 @@ class IntelOneapiIppcp(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4592da40-6f1c-4d4b-aa5b-0bb97ec66c92/intel-cryptography-primitives-library-2025.0.0.616_offline.sh", + sha256="a529b52ad8b2bdc2ad8372e11e8dac0df1daebaf8f5ade8a7ceb9b8669778c42", + expand=False, + ) version( "2021.12.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/8d82c537-2756-4000-a6cf-d7fedbfb9499/l_ippcp_oneapi_p_2021.12.1.14_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py index 06c0252936da99..c233490408170f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py @@ -25,11 +25,18 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/79153e0f-74d7-45af-b8c2-258941adf58a/intel-onemkl-2025.0.0.940_offline.sh", + sha256="c0fe8c43718c56858df96ad469b22d9d5e5c1aa4b872e34c6cbebfb17bd15b9c", + expand=False, + ) version( "2024.2.2", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/89a381f6-f85d-4dda-ae62-30d51470f53c/l_onemkl_p_2024.2.2.17_offline.sh", sha256="6b64ab95567bee53d6cf7e78f9f7b15695902fb9da0d20c29e638ad001b6b348", expand=False, + preferred=True, ) version( "2024.2.1", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py index 023af78e4a056d..a20a1ac41cef4f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py @@ -21,6 +21,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/mpi-library.html" + version( + "2021.14.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4b14b28c-2ca6-4559-a0ca-8a157627e0c8/intel-mpi-2021.14.0.791_offline.sh", + sha256="81ea7aaf8039c134b4df40bab1423a269425d26bb90ac05f7decac39719d21f3", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/364c798c-4cad-4c01-82b5-e1edd1b476af/l_mpi_oneapi_p_2021.13.1.769_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py b/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py index 622814ee7ef4e5..ae07f734bdb0c4 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py @@ -22,6 +22,12 @@ class IntelOneapiTbb(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html" ) + version( + "2022.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9d5f5bd1-6021-41f7-aa3e-36d44c4ac190/intel-onetbb-2022.0.0.403_offline.sh", + sha256="02077de6748422c1b5396afc3806addd9b1e832d9807126b54f22ed18853f86f", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b9aad7b8-0a4c-4f95-a100-e0e2921d5777/l_tbb_oneapi_p_2021.13.1.15_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py index 74700b30008346..008dee29121d52 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py @@ -25,6 +25,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html" + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e7797b12-ce87-4df0-aa09-df4a272fc5d9/intel-vtune-2025.0.0.1130_offline.sh", + sha256="6742e5c6b1cd6e4efb794bde5d995ba738be1a991ac84678e0efca04fc080074", + expand=False, + ) version( "2024.3.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d7e1fdb1-cfc7-40fb-bf46-3719e9372d67/l_oneapi_vtune_p_2024.3.0.31_offline.sh", From 3108849121d5414c995638dac7d54452fba5f6e8 Mon Sep 17 00:00:00 2001 From: Georgia Stuart Date: Tue, 29 Oct 2024 16:16:45 -0500 Subject: [PATCH 214/615] Add new seqfu version (#47294) Signed-off-by: Georgia Stuart --- var/spack/repos/builtin/packages/seqfu/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/seqfu/package.py b/var/spack/repos/builtin/packages/seqfu/package.py index 53de9fd0a2528f..895d5386c2155c 100644 --- a/var/spack/repos/builtin/packages/seqfu/package.py +++ b/var/spack/repos/builtin/packages/seqfu/package.py @@ -13,7 +13,9 @@ class Seqfu(Package): url = "https://github.com/telatin/seqfu2/archive/refs/tags/v1.20.3.tar.gz" license("GPL-3.0", checked_by="dialvarezs") + maintainers("dialvarezs") + version("1.22.3", sha256="65c1090cafe0e760e68d15d450bccfd57c0a03d553fdabca26e2191f566fef62") version("1.20.3", sha256="1b287b99f3f1ac7045f4d551e781d6780ce168ba8e0a7bfaa0f5490f32e15938") depends_on("c", type="build") # generated @@ -22,7 +24,7 @@ class Seqfu(Package): depends_on("nim@2", type="build") depends_on("zlib", type="build") - patch("wno_incompatible_pointer_types.patch", when="%gcc@14:") + patch("wno_incompatible_pointer_types.patch", when="@:1.21%gcc@14:") def setup_build_environment(self, env): env.set("NIMBLE_DIR", ".nimble") From 8391c8eb875840d90e237185fa610f78b2e487f3 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 29 Oct 2024 15:17:10 -0600 Subject: [PATCH 215/615] nalu-wind: version 2.1.0 requires trilinos 15.1.1 (#47296) --- var/spack/repos/builtin/packages/nalu-wind/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index d7247d7acd4c45..f29c2aa27d3b2c 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -64,6 +64,7 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): depends_on("mpi") depends_on("yaml-cpp@0.5.3:") depends_on("openfast@4.0.0:+cxx+netcdf", when="+fsi") + depends_on("trilinos@15.1.1", when="@=2.1.0") depends_on("trilinos@13.4.1", when="@=2.0.0") depends_on("hypre@2.29.0:", when="@2.0.0:+hypre") depends_on( From 5d0c6c335037789b02e11dedf07eb564ed288ea8 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 29 Oct 2024 23:48:42 +0100 Subject: [PATCH 216/615] rocketmq: add v5.3.1 (#46976) and it installs. --- .../builtin/packages/rocketmq/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/rocketmq/package.py b/var/spack/repos/builtin/packages/rocketmq/package.py index 33d73d444cbdc4..95925f2465d791 100644 --- a/var/spack/repos/builtin/packages/rocketmq/package.py +++ b/var/spack/repos/builtin/packages/rocketmq/package.py @@ -16,16 +16,23 @@ class Rocketmq(Package): homepage = "https://rocketmq.apache.org/" url = "https://archive.apache.org/dist/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip" - license("Apache-2.0") - - version("4.6.0", sha256="584910d50639297808dd0b86fcdfaf431efd9607009a44c6258d9a0e227748fe") - version("4.5.2", sha256="f7711ef9c203d7133e70e0e1e887025d7dd80d29f6d5283ca6022b12576b8aba") - version("4.5.1", sha256="0c46e4b652b007d07e9c456eb2e275126b9210c27cd56bee518809f33c8ed437") - version("4.5.0", sha256="d75dc26291b47413f7c565bc65499501e3499f01beb713246586f72844e31042") - version("4.4.0", sha256="8a948e240e8d2ebbf4c40c180105d088a937f82a594cd1f2ae527b20349f1d34") - version("4.3.2", sha256="e31210a86266ee218eb6ff4f8ca6e211439895459c3bdad162067b573d9e3415") + license("Apache-2.0", checked_by="wdconinc") + + version("5.3.1", sha256="251d7261fa26d35eaffef6a2fce30880054af7a5883d578dd31574bf908a8b97") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-37582 + version("4.6.0", sha256="584910d50639297808dd0b86fcdfaf431efd9607009a44c6258d9a0e227748fe") + version("4.5.2", sha256="f7711ef9c203d7133e70e0e1e887025d7dd80d29f6d5283ca6022b12576b8aba") + version("4.5.1", sha256="0c46e4b652b007d07e9c456eb2e275126b9210c27cd56bee518809f33c8ed437") + version("4.5.0", sha256="d75dc26291b47413f7c565bc65499501e3499f01beb713246586f72844e31042") + version("4.4.0", sha256="8a948e240e8d2ebbf4c40c180105d088a937f82a594cd1f2ae527b20349f1d34") + version("4.3.2", sha256="e31210a86266ee218eb6ff4f8ca6e211439895459c3bdad162067b573d9e3415") depends_on("java@8:", type="run") + # UseBiasedLocking deprecated in java@15:, removed in java@21: + # https://openjdk.org/jeps/374, https://github.com/apache/rocketmq/pull/8809 + depends_on("java@:20", type="run") + def install(self, spec, prefix): install_tree(".", prefix) From 4de5b664cddc0c923db27b2e2f43ab95938fc976 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 29 Oct 2024 19:27:43 -0500 Subject: [PATCH 217/615] r-*: add new versions (#46093) * r-*: updates to latest versions * r-*: add new dependencies * r-proj: fix docstring line length * r-list: add homepage * r-*: add more dependencies * r-rmpi: use virtual dependencies, conflict openmpi@5: * r-cairo: require cairo +png; +pdf for some versions; cairo +fc when +ft * r-proj: set LD_LIBRARY_PATH since rpath not respected --- .../builtin/packages/r-acepack/package.py | 1 + .../builtin/packages/r-adabag/package.py | 7 +++- .../builtin/packages/r-adegraphics/package.py | 1 + .../builtin/packages/r-adephylo/package.py | 1 + .../builtin/packages/r-adespatial/package.py | 1 + .../repos/builtin/packages/r-aer/package.py | 1 + .../repos/builtin/packages/r-afex/package.py | 1 + .../builtin/packages/r-amelia/package.py | 1 + .../repos/builtin/packages/r-aod/package.py | 1 + .../repos/builtin/packages/r-ape/package.py | 1 + .../repos/builtin/packages/r-aplot/package.py | 3 ++ .../builtin/packages/r-argparse/package.py | 1 + .../repos/builtin/packages/r-arm/package.py | 27 +++++++++++++++ .../builtin/packages/r-askpass/package.py | 1 + .../packages/r-assertive-code/package.py | 1 + .../builtin/packages/r-backports/package.py | 1 + .../builtin/packages/r-bayesm/package.py | 1 + .../builtin/packages/r-bayesplot/package.py | 3 ++ .../repos/builtin/packages/r-bglr/package.py | 1 + .../repos/builtin/packages/r-bh/package.py | 1 + .../builtin/packages/r-biasedurn/package.py | 1 + .../builtin/packages/r-bigalgebra/package.py | 1 + .../repos/builtin/packages/r-biglm/package.py | 19 +++++++++++ .../packages/r-bigmemory-sri/package.py | 1 + .../builtin/packages/r-bigmemory/package.py | 1 + .../builtin/packages/r-bindrcpp/package.py | 1 + .../builtin/packages/r-biocmanager/package.py | 1 + .../builtin/packages/r-biomartr/package.py | 1 + .../builtin/packages/r-bitops/package.py | 1 + .../builtin/packages/r-blavaan/package.py | 4 +++ .../packages/r-blockmodeling/package.py | 1 + .../builtin/packages/r-bookdown/package.py | 2 ++ .../repos/builtin/packages/r-boot/package.py | 1 + .../repos/builtin/packages/r-brew/package.py | 1 + .../repos/builtin/packages/r-brio/package.py | 3 ++ .../repos/builtin/packages/r-brms/package.py | 8 +++-- .../packages/r-broom-helpers/package.py | 32 ++++++++++++++++++ .../repos/builtin/packages/r-broom/package.py | 3 +- .../repos/builtin/packages/r-bslib/package.py | 7 ++++ .../builtin/packages/r-bwstest/package.py | 1 + .../builtin/packages/r-cachem/package.py | 2 ++ .../repos/builtin/packages/r-cairo/package.py | 12 ++++++- .../repos/builtin/packages/r-callr/package.py | 1 + .../builtin/packages/r-caracas/package.py | 1 + .../builtin/packages/r-cardata/package.py | 2 +- .../packages/r-caretensemble/package.py | 11 +++++-- .../builtin/packages/r-caroline/package.py | 1 + .../repos/builtin/packages/r-cca/package.py | 1 + .../builtin/packages/r-checkmate/package.py | 1 + .../packages/r-chemometrics/package.py | 1 + .../repos/builtin/packages/r-chron/package.py | 1 + .../builtin/packages/r-circlize/package.py | 2 ++ .../builtin/packages/r-clarabel/package.py | 28 ++++++++++++++++ .../repos/builtin/packages/r-class/package.py | 1 + .../builtin/packages/r-classint/package.py | 1 + .../repos/builtin/packages/r-cli/package.py | 3 +- .../repos/builtin/packages/r-clock/package.py | 8 +++++ .../repos/builtin/packages/r-clue/package.py | 1 + .../builtin/packages/r-cluster/package.py | 1 + .../packages/r-clustergeneration/package.py | 1 + .../repos/builtin/packages/r-coda/package.py | 3 +- .../builtin/packages/r-codetools/package.py | 1 + .../repos/builtin/packages/r-coin/package.py | 1 + .../builtin/packages/r-colorspace/package.py | 1 + .../builtin/packages/r-commonmark/package.py | 1 + .../packages/r-compositions/package.py | 5 +-- .../builtin/packages/r-consrank/package.py | 23 +++++++++++++ .../builtin/packages/r-construct/package.py | 3 ++ .../builtin/packages/r-convevol/package.py | 5 ++- .../builtin/packages/r-copula/package.py | 1 + .../builtin/packages/r-corrplot/package.py | 1 + .../builtin/packages/r-countrycode/package.py | 1 + .../repos/builtin/packages/r-covr/package.py | 1 + .../builtin/packages/r-cowplot/package.py | 2 ++ .../repos/builtin/packages/r-cpp11/package.py | 3 ++ .../builtin/packages/r-crayon/package.py | 1 + .../builtin/packages/r-credentials/package.py | 1 + .../builtin/packages/r-crosstalk/package.py | 1 + .../repos/builtin/packages/r-crul/package.py | 1 + .../builtin/packages/r-cubature/package.py | 1 + .../builtin/packages/r-cubist/package.py | 1 + .../repos/builtin/packages/r-curl/package.py | 1 + .../repos/builtin/packages/r-cvxr/package.py | 4 ++- .../builtin/packages/r-data-table/package.py | 1 + .../repos/builtin/packages/r-dbi/package.py | 1 + .../builtin/packages/r-dbplyr/package.py | 12 +++++++ .../builtin/packages/r-debugme/package.py | 2 ++ .../builtin/packages/r-deldir/package.py | 1 + .../builtin/packages/r-deoptimr/package.py | 1 + .../repos/builtin/packages/r-desc/package.py | 3 +- .../builtin/packages/r-desolve/package.py | 1 + .../builtin/packages/r-diagrammer/package.py | 17 ++++++---- .../builtin/packages/r-digest/package.py | 1 + .../builtin/packages/r-diptest/package.py | 1 + .../repos/builtin/packages/r-dismo/package.py | 1 + .../packages/r-distributional/package.py | 10 +++--- .../builtin/packages/r-diversitree/package.py | 1 + .../repos/builtin/packages/r-doby/package.py | 13 ++++++-- .../builtin/packages/r-dotcall64/package.py | 1 + .../builtin/packages/r-downlit/package.py | 2 ++ .../repos/builtin/packages/r-dplyr/package.py | 2 ++ .../repos/builtin/packages/r-dqrng/package.py | 2 ++ .../repos/builtin/packages/r-dt/package.py | 2 ++ .../repos/builtin/packages/r-e1071/package.py | 1 + .../repos/builtin/packages/r-earth/package.py | 5 ++- .../builtin/packages/r-ecosolver/package.py | 1 + .../repos/builtin/packages/r-ecp/package.py | 1 + .../builtin/packages/r-ellipse/package.py | 1 + .../builtin/packages/r-emmeans/package.py | 1 + .../builtin/packages/r-envstats/package.py | 1 + .../repos/builtin/packages/r-ergm/package.py | 4 ++- .../packages/r-estimability/package.py | 4 +++ .../builtin/packages/r-europepmc/package.py | 1 + .../builtin/packages/r-evaluate/package.py | 2 ++ .../repos/builtin/packages/r-evd/package.py | 1 + .../packages/r-exactextractr/package.py | 1 + .../repos/builtin/packages/r-expm/package.py | 1 + .../builtin/packages/r-factominer/package.py | 1 + .../repos/builtin/packages/r-fansi/package.py | 1 + .../builtin/packages/r-farver/package.py | 1 + .../builtin/packages/r-fastcluster/package.py | 1 + .../builtin/packages/r-fastdigest/package.py | 1 + .../builtin/packages/r-fastdummies/package.py | 24 ++++++++++++++ .../builtin/packages/r-fastica/package.py | 1 + .../builtin/packages/r-fastmap/package.py | 1 + .../builtin/packages/r-fastmatch/package.py | 1 + .../builtin/packages/r-fastmatrix/package.py | 1 + .../repos/builtin/packages/r-fda/package.py | 1 + .../repos/builtin/packages/r-ff/package.py | 1 + .../builtin/packages/r-fields/package.py | 4 ++- .../builtin/packages/r-filehash/package.py | 1 + .../builtin/packages/r-filelock/package.py | 5 ++- .../packages/r-fitdistrplus/package.py | 2 ++ .../builtin/packages/r-flexclust/package.py | 1 + .../repos/builtin/packages/r-fnn/package.py | 2 ++ .../builtin/packages/r-fontawesome/package.py | 1 + .../builtin/packages/r-forecast/package.py | 2 ++ .../builtin/packages/r-foreign/package.py | 1 + .../repos/builtin/packages/r-fpc/package.py | 1 + .../builtin/packages/r-fracdiff/package.py | 1 + .../repos/builtin/packages/r-fs/package.py | 2 ++ .../packages/r-future-apply/package.py | 1 + .../builtin/packages/r-future/package.py | 2 ++ .../builtin/packages/r-gamlss-data/package.py | 1 + .../builtin/packages/r-gamlss-dist/package.py | 1 + .../builtin/packages/r-gamlss/package.py | 1 + .../builtin/packages/r-gargle/package.py | 2 ++ .../repos/builtin/packages/r-gbm/package.py | 1 + .../repos/builtin/packages/r-gbrd/package.py | 1 + .../packages/r-gdalutilities/package.py | 1 + .../repos/builtin/packages/r-gdata/package.py | 1 + .../packages/r-genomeinfodbdata/package.py | 1 + .../repos/builtin/packages/r-gensa/package.py | 1 + .../builtin/packages/r-geometries/package.py | 1 + .../builtin/packages/r-geomorph/package.py | 3 ++ .../repos/builtin/packages/r-geor/package.py | 1 + .../repos/builtin/packages/r-gert/package.py | 1 + .../builtin/packages/r-getopt/package.py | 1 + .../builtin/packages/r-ggally/package.py | 10 ++++-- .../builtin/packages/r-ggbeeswarm/package.py | 2 ++ .../builtin/packages/r-ggdendro/package.py | 2 ++ .../builtin/packages/r-ggforce/package.py | 1 + .../repos/builtin/packages/r-ggfun/package.py | 4 +++ .../repos/builtin/packages/r-ggmap/package.py | 3 +- .../builtin/packages/r-ggnewscale/package.py | 2 ++ .../builtin/packages/r-ggplot2/package.py | 5 +-- .../builtin/packages/r-ggplotify/package.py | 1 + .../builtin/packages/r-ggraph/package.py | 12 +++++-- .../builtin/packages/r-ggrastr/package.py | 1 + .../builtin/packages/r-ggrepel/package.py | 1 + .../builtin/packages/r-ggridges/package.py | 2 ++ .../repos/builtin/packages/r-ggsci/package.py | 1 + .../builtin/packages/r-ggstats/package.py | 33 +++++++++++++++++++ .../builtin/packages/r-ggthemes/package.py | 2 ++ .../repos/builtin/packages/r-ggvis/package.py | 1 + .../repos/builtin/packages/r-gh/package.py | 4 +++ .../repos/builtin/packages/r-git2r/package.py | 2 ++ .../builtin/packages/r-glmnet/package.py | 1 + .../builtin/packages/r-globals/package.py | 1 + .../repos/builtin/packages/r-glue/package.py | 2 ++ .../builtin/packages/r-gmodels/package.py | 1 + .../repos/builtin/packages/r-gmp/package.py | 1 + .../builtin/packages/r-googleauthr/package.py | 1 + .../builtin/packages/r-googledrive/package.py | 4 +++ .../packages/r-googlesheets4/package.py | 3 ++ .../builtin/packages/r-googlevis/package.py | 1 + .../builtin/packages/r-gparotation/package.py | 1 + .../builtin/packages/r-gplots/package.py | 1 + .../packages/r-graphlayouts/package.py | 1 + .../builtin/packages/r-grbase/package.py | 13 +++++--- .../repos/builtin/packages/r-gsa/package.py | 1 + .../repos/builtin/packages/r-gsodr/package.py | 3 +- .../repos/builtin/packages/r-gss/package.py | 1 + .../builtin/packages/r-gtable/package.py | 1 + .../builtin/packages/r-gtools/package.py | 1 + .../builtin/packages/r-gwmodel/package.py | 11 +++++-- .../builtin/packages/r-hardhat/package.py | 1 + .../repos/builtin/packages/r-haven/package.py | 1 + .../repos/builtin/packages/r-hdf5r/package.py | 1 + .../repos/builtin/packages/r-hh/package.py | 1 + .../repos/builtin/packages/r-highr/package.py | 1 + .../repos/builtin/packages/r-hmisc/package.py | 2 ++ .../builtin/packages/r-hoardr/package.py | 1 + .../builtin/packages/r-htmltable/package.py | 2 ++ .../builtin/packages/r-htmltools/package.py | 6 ++-- .../builtin/packages/r-htmlwidgets/package.py | 2 ++ .../builtin/packages/r-httpuv/package.py | 1 + .../repos/builtin/packages/r-httr/package.py | 2 ++ .../repos/builtin/packages/r-httr2/package.py | 6 ++++ .../builtin/packages/r-hydrogof/package.py | 1 + .../builtin/packages/r-hydrotsm/package.py | 12 ++++--- .../builtin/packages/r-igraph/package.py | 9 ++++- .../builtin/packages/r-imager/package.py | 3 ++ .../builtin/packages/r-influencer/package.py | 1 + .../builtin/packages/r-inline/package.py | 2 ++ .../builtin/packages/r-insight/package.py | 2 ++ .../builtin/packages/r-interp/package.py | 1 + .../builtin/packages/r-intervals/package.py | 1 + .../repos/builtin/packages/r-ipred/package.py | 1 + .../repos/builtin/packages/r-iso/package.py | 1 + .../repos/builtin/packages/r-jade/package.py | 1 + .../builtin/packages/r-kableextra/package.py | 9 +++-- .../builtin/packages/r-kernlab/package.py | 1 + .../builtin/packages/r-kernsmooth/package.py | 1 + .../repos/builtin/packages/r-klar/package.py | 1 + .../repos/builtin/packages/r-knitr/package.py | 5 +++ .../repos/builtin/packages/r-ks/package.py | 4 ++- .../builtin/packages/r-ksamples/package.py | 1 + .../builtin/packages/r-labeling/package.py | 1 + .../builtin/packages/r-labelled/package.py | 2 ++ .../repos/builtin/packages/r-later/package.py | 1 + .../builtin/packages/r-lattice/package.py | 1 + .../repos/builtin/packages/r-lava/package.py | 2 ++ .../builtin/packages/r-lavaan/package.py | 1 + .../builtin/packages/r-leafem/package.py | 1 + .../packages/r-leaflet-providers/package.py | 3 ++ .../builtin/packages/r-leaflet/package.py | 15 ++++++--- .../repos/builtin/packages/r-leaps/package.py | 1 + .../builtin/packages/r-leiden/package.py | 1 + .../repos/builtin/packages/r-lfe/package.py | 1 + .../repos/builtin/packages/r-lhs/package.py | 1 + .../builtin/packages/r-libcoin/package.py | 1 + .../builtin/packages/r-lifecycle/package.py | 3 ++ .../builtin/packages/r-limsolve/package.py | 1 + .../repos/builtin/packages/r-list/package.py | 30 +++++++++++++++++ .../builtin/packages/r-listenv/package.py | 1 + .../repos/builtin/packages/r-lme4/package.py | 4 +++ .../builtin/packages/r-locfit/package.py | 1 + .../repos/builtin/packages/r-loo/package.py | 2 ++ .../builtin/packages/r-lpsolve/package.py | 1 + .../builtin/packages/r-lpsolveapi/package.py | 3 ++ .../builtin/packages/r-lubridate/package.py | 1 + .../builtin/packages/r-lwgeom/package.py | 7 ++-- .../builtin/packages/r-magick/package.py | 1 + .../builtin/packages/r-maldiquant/package.py | 1 + .../builtin/packages/r-mapplots/package.py | 1 + .../repos/builtin/packages/r-maps/package.py | 1 + .../builtin/packages/r-maptools/package.py | 1 + .../builtin/packages/r-mapview/package.py | 5 ++- .../builtin/packages/r-markdown/package.py | 1 + .../repos/builtin/packages/r-mass/package.py | 2 ++ .../builtin/packages/r-matlab/package.py | 1 + .../builtin/packages/r-matrix/package.py | 4 ++- .../packages/r-matrixmodels/package.py | 2 ++ .../builtin/packages/r-matrixstats/package.py | 1 + .../builtin/packages/r-mclust/package.py | 1 + .../repos/builtin/packages/r-mcmc/package.py | 2 ++ .../builtin/packages/r-mcmcglmm/package.py | 1 + .../builtin/packages/r-mcmcpack/package.py | 4 +-- .../repos/builtin/packages/r-mco/package.py | 2 ++ .../repos/builtin/packages/r-mda/package.py | 1 + .../builtin/packages/r-memisc/package.py | 1 + .../r-mendelianrandomization/package.py | 4 +++ .../repos/builtin/packages/r-meta/package.py | 11 +++++-- .../builtin/packages/r-metafor/package.py | 1 + .../repos/builtin/packages/r-metap/package.py | 1 + .../repos/builtin/packages/r-mgcv/package.py | 1 + .../repos/builtin/packages/r-mice/package.py | 5 +++ .../packages/r-microbenchmark/package.py | 1 + .../repos/builtin/packages/r-minqa/package.py | 1 + .../builtin/packages/r-mlbench/package.py | 1 + .../repos/builtin/packages/r-mlr/package.py | 1 + .../builtin/packages/r-mockery/package.py | 1 + .../builtin/packages/r-multcomp/package.py | 1 + .../packages/r-multcompview/package.py | 1 + .../builtin/packages/r-multicool/package.py | 1 + .../builtin/packages/r-multitaper/package.py | 1 + .../builtin/packages/r-munsell/package.py | 1 + .../builtin/packages/r-mvtnorm/package.py | 1 + .../builtin/packages/r-nanotime/package.py | 1 + .../repos/builtin/packages/r-ncdf4/package.py | 1 + .../builtin/packages/r-network/package.py | 1 + .../builtin/packages/r-nimble/package.py | 3 ++ .../builtin/packages/r-nleqslv/package.py | 1 + .../repos/builtin/packages/r-nlme/package.py | 2 ++ .../builtin/packages/r-nloptr/package.py | 3 +- .../repos/builtin/packages/r-nmf/package.py | 1 + .../repos/builtin/packages/r-nmof/package.py | 2 ++ .../repos/builtin/packages/r-nnet/package.py | 1 + .../repos/builtin/packages/r-nnls/package.py | 1 + .../builtin/packages/r-nonnest2/package.py | 1 + .../builtin/packages/r-nor1mix/package.py | 1 + .../builtin/packages/r-openssl/package.py | 1 + .../builtin/packages/r-openxlsx/package.py | 1 + .../builtin/packages/r-optimx/package.py | 5 +++ .../builtin/packages/r-optparse/package.py | 1 + .../builtin/packages/r-ordinal/package.py | 3 ++ .../repos/builtin/packages/r-osqp/package.py | 2 ++ .../builtin/packages/r-packrat/package.py | 1 + .../builtin/packages/r-paleotree/package.py | 1 + .../repos/builtin/packages/r-pamr/package.py | 2 ++ .../repos/builtin/packages/r-pan/package.py | 3 ++ .../builtin/packages/r-parallelly/package.py | 1 + .../repos/builtin/packages/r-party/package.py | 1 + .../builtin/packages/r-partykit/package.py | 1 + .../builtin/packages/r-patchwork/package.py | 3 ++ .../builtin/packages/r-pbapply/package.py | 1 + .../builtin/packages/r-pbdzmq/package.py | 1 + .../builtin/packages/r-pbkrtest/package.py | 5 ++- .../repos/builtin/packages/r-pcapp/package.py | 2 ++ .../repos/builtin/packages/r-pegas/package.py | 1 + .../builtin/packages/r-permute/package.py | 2 +- .../builtin/packages/r-philentropy/package.py | 1 + .../builtin/packages/r-phylobase/package.py | 1 + .../builtin/packages/r-phytools/package.py | 4 ++- .../builtin/packages/r-pinfsc50/package.py | 1 + .../builtin/packages/r-pixmap/package.py | 1 + .../builtin/packages/r-pkgbuild/package.py | 13 +++++--- .../builtin/packages/r-pkgcache/package.py | 5 +-- .../builtin/packages/r-pkgdepends/package.py | 12 ++++--- .../builtin/packages/r-pkgdown/package.py | 19 +++++++++-- .../builtin/packages/r-pkgload/package.py | 5 ++- .../builtin/packages/r-pkgmaker/package.py | 1 + .../repos/builtin/packages/r-pki/package.py | 22 +++++++++++++ .../builtin/packages/r-plot3d/package.py | 1 + .../builtin/packages/r-plotly/package.py | 1 + .../builtin/packages/r-plotmo/package.py | 4 ++- .../builtin/packages/r-plotrix/package.py | 1 + .../repos/builtin/packages/r-pls/package.py | 1 + .../repos/builtin/packages/r-plyr/package.py | 1 + .../builtin/packages/r-pmcmrplus/package.py | 1 + .../builtin/packages/r-polspline/package.py | 1 + .../builtin/packages/r-polyclip/package.py | 2 ++ .../repos/builtin/packages/r-pool/package.py | 6 +++- .../builtin/packages/r-poorman/package.py | 1 + .../builtin/packages/r-popvar/package.py | 1 + .../builtin/packages/r-posterior/package.py | 1 + .../builtin/packages/r-powerlaw/package.py | 1 + .../builtin/packages/r-prabclus/package.py | 2 ++ .../builtin/packages/r-pracma/package.py | 1 + .../builtin/packages/r-prettyunits/package.py | 3 ++ .../repos/builtin/packages/r-proc/package.py | 1 + .../builtin/packages/r-processx/package.py | 1 + .../builtin/packages/r-prodlim/package.py | 3 ++ .../builtin/packages/r-profvis/package.py | 4 +++ .../builtin/packages/r-progress/package.py | 2 ++ .../builtin/packages/r-progressr/package.py | 1 + .../repos/builtin/packages/r-proj/package.py | 20 +++++++++-- .../repos/builtin/packages/r-proj4/package.py | 1 + .../builtin/packages/r-projpred/package.py | 20 ++++++----- .../builtin/packages/r-promises/package.py | 7 ++-- .../repos/builtin/packages/r-ps/package.py | 1 + .../repos/builtin/packages/r-pscbs/package.py | 7 ++++ .../builtin/packages/r-pspline/package.py | 1 + .../repos/builtin/packages/r-psych/package.py | 4 ++- .../repos/builtin/packages/r-purrr/package.py | 5 +++ .../repos/builtin/packages/r-qs/package.py | 2 ++ .../repos/builtin/packages/r-qtl/package.py | 1 + .../builtin/packages/r-quantmod/package.py | 1 + .../builtin/packages/r-quantreg/package.py | 1 + .../builtin/packages/r-quickjsr/package.py | 19 +++++++++++ .../builtin/packages/r-quickplot/package.py | 22 ++++++++----- .../repos/builtin/packages/r-r-oo/package.py | 2 ++ .../builtin/packages/r-r-utils/package.py | 1 + .../repos/builtin/packages/r-ragg/package.py | 1 + .../builtin/packages/r-rainbow/package.py | 1 + .../builtin/packages/r-ranger/package.py | 1 + .../packages/r-rapiserialize/package.py | 1 + .../builtin/packages/r-raster/package.py | 2 ++ .../builtin/packages/r-rbibutils/package.py | 1 + .../repos/builtin/packages/r-rcpp/package.py | 1 + .../builtin/packages/r-rcppannoy/package.py | 1 + .../packages/r-rcpparmadillo/package.py | 2 ++ .../builtin/packages/r-rcppblaze/package.py | 7 +++- .../builtin/packages/r-rcppcnpy/package.py | 1 + .../builtin/packages/r-rcppeigen/package.py | 4 ++- .../packages/r-rcppensmallen/package.py | 4 +++ .../builtin/packages/r-rcpphnsw/package.py | 1 + .../packages/r-rcppparallel/package.py | 1 + .../packages/r-rcppprogress/package.py | 2 +- .../builtin/packages/r-rcpproll/package.py | 1 + .../packages/r-rcppziggurat/package.py | 1 + .../repos/builtin/packages/r-rcurl/package.py | 1 + .../builtin/packages/r-rdpack/package.py | 1 + .../repos/builtin/packages/r-readr/package.py | 2 ++ .../builtin/packages/r-readxl/package.py | 2 ++ .../builtin/packages/r-recipes/package.py | 7 +++- .../builtin/packages/r-rematch/package.py | 1 + .../builtin/packages/r-remotes/package.py | 1 + .../repos/builtin/packages/r-renv/package.py | 1 + .../repos/builtin/packages/r-repr/package.py | 1 + .../builtin/packages/r-reprex/package.py | 2 ++ .../packages/r-reproducible/package.py | 20 ++++++----- .../builtin/packages/r-require/package.py | 2 ++ .../builtin/packages/r-reticulate/package.py | 4 +++ .../repos/builtin/packages/r-rfast/package.py | 2 ++ .../repos/builtin/packages/r-rgdal/package.py | 1 + .../builtin/packages/r-rgenoud/package.py | 1 + .../repos/builtin/packages/r-rgeos/package.py | 1 + .../repos/builtin/packages/r-rgexf/package.py | 1 + .../repos/builtin/packages/r-rgl/package.py | 2 ++ .../builtin/packages/r-rgooglemaps/package.py | 3 +- .../repos/builtin/packages/r-rio/package.py | 9 ++++- .../repos/builtin/packages/r-rjags/package.py | 1 + .../repos/builtin/packages/r-rjava/package.py | 1 + .../repos/builtin/packages/r-rjson/package.py | 2 ++ .../builtin/packages/r-rjsonio/package.py | 1 + .../repos/builtin/packages/r-rlang/package.py | 1 + .../repos/builtin/packages/r-rlist/package.py | 27 +++++++++++++++ .../builtin/packages/r-rmariadb/package.py | 4 ++- .../builtin/packages/r-rmarkdown/package.py | 4 ++- .../repos/builtin/packages/r-rmpfr/package.py | 1 + .../repos/builtin/packages/r-rmpi/package.py | 12 ++++--- .../repos/builtin/packages/r-rms/package.py | 6 +++- .../builtin/packages/r-rmysql/package.py | 1 + .../repos/builtin/packages/r-rnoaa/package.py | 1 + .../builtin/packages/r-robust/package.py | 1 + .../builtin/packages/r-robustbase/package.py | 1 + .../repos/builtin/packages/r-rodbc/package.py | 1 + .../builtin/packages/r-roxygen2/package.py | 3 ++ .../builtin/packages/r-rpart-plot/package.py | 1 + .../repos/builtin/packages/r-rpart/package.py | 1 + .../builtin/packages/r-rpostgres/package.py | 7 ++-- .../builtin/packages/r-rpostgresql/package.py | 1 + .../builtin/packages/r-rprojroot/package.py | 1 + .../builtin/packages/r-rrblup/package.py | 1 + .../repos/builtin/packages/r-rrcov/package.py | 1 + .../repos/builtin/packages/r-rrpp/package.py | 2 ++ .../builtin/packages/r-rsconnect/package.py | 7 ++++ .../repos/builtin/packages/r-rsnns/package.py | 1 + .../builtin/packages/r-rspectra/package.py | 1 + .../builtin/packages/r-rsqlite/package.py | 3 ++ .../repos/builtin/packages/r-rstan/package.py | 12 +++++++ .../builtin/packages/r-rstantools/package.py | 1 + .../builtin/packages/r-rstudioapi/package.py | 1 + .../repos/builtin/packages/r-rtsne/package.py | 1 + .../repos/builtin/packages/r-runit/package.py | 1 + .../builtin/packages/r-runjags/package.py | 1 + .../repos/builtin/packages/r-rvest/package.py | 7 +++- .../repos/builtin/packages/r-rzmq/package.py | 1 + .../repos/builtin/packages/r-s2/package.py | 1 + .../builtin/packages/r-sandwich/package.py | 1 + .../repos/builtin/packages/r-sass/package.py | 2 ++ .../builtin/packages/r-satellite/package.py | 1 + .../builtin/packages/r-scales/package.py | 3 ++ .../builtin/packages/r-scattermore/package.py | 1 + .../builtin/packages/r-scatterpie/package.py | 2 ++ .../packages/r-scatterplot3d/package.py | 1 + .../builtin/packages/r-sctransform/package.py | 2 ++ .../builtin/packages/r-segmented/package.py | 2 ++ .../builtin/packages/r-seqinr/package.py | 1 + .../repos/builtin/packages/r-servr/package.py | 2 ++ .../repos/builtin/packages/r-sets/package.py | 3 +- .../builtin/packages/r-seurat/package.py | 11 +++++++ .../packages/r-seuratobject/package.py | 6 ++++ .../repos/builtin/packages/r-sf/package.py | 1 + .../builtin/packages/r-sfheaders/package.py | 2 ++ .../builtin/packages/r-sfsmisc/package.py | 1 + .../builtin/packages/r-shadowtext/package.py | 1 + .../repos/builtin/packages/r-shape/package.py | 3 +- .../repos/builtin/packages/r-shiny/package.py | 3 ++ .../builtin/packages/r-signac/package.py | 5 +++ .../repos/builtin/packages/r-sm/package.py | 1 + .../builtin/packages/r-snakecase/package.py | 1 + .../builtin/packages/r-snowfall/package.py | 1 + .../repos/builtin/packages/r-sp/package.py | 3 ++ .../builtin/packages/r-spacetime/package.py | 1 + .../builtin/packages/r-spades-core/package.py | 16 +++++++-- .../packages/r-spades-tools/package.py | 24 +++++++++----- .../builtin/packages/r-spades/package.py | 6 ++++ .../repos/builtin/packages/r-spam/package.py | 2 ++ .../builtin/packages/r-sparsem/package.py | 1 + .../builtin/packages/r-spatial/package.py | 1 + .../builtin/packages/r-spatialeco/package.py | 32 +++++++++--------- .../builtin/packages/r-spatialreg/package.py | 6 +++- .../packages/r-spatstat-data/package.py | 2 ++ .../packages/r-spatstat-explore/package.py | 9 +++++ .../packages/r-spatstat-geom/package.py | 4 +++ .../packages/r-spatstat-linnet/package.py | 9 +++++ .../packages/r-spatstat-model/package.py | 8 +++++ .../packages/r-spatstat-random/package.py | 5 +++ .../packages/r-spatstat-sparse/package.py | 2 ++ .../packages/r-spatstat-univar/package.py | 23 +++++++++++++ .../packages/r-spatstat-utils/package.py | 2 ++ .../builtin/packages/r-spatstat/package.py | 9 +++++ .../builtin/packages/r-spdata/package.py | 1 + .../repos/builtin/packages/r-spdep/package.py | 2 ++ .../builtin/packages/r-speedglm/package.py | 2 ++ .../builtin/packages/r-splancs/package.py | 3 +- .../builtin/packages/r-splines2/package.py | 27 +++++++++++++++ .../builtin/packages/r-stabledist/package.py | 1 + .../builtin/packages/r-stanheaders/package.py | 3 ++ .../repos/builtin/packages/r-stars/package.py | 5 ++- .../packages/r-statnet-common/package.py | 1 + .../builtin/packages/r-stringfish/package.py | 1 + .../builtin/packages/r-stringi/package.py | 2 ++ .../builtin/packages/r-stringr/package.py | 3 ++ .../builtin/packages/r-styler/package.py | 3 ++ .../builtin/packages/r-subplex/package.py | 2 ++ .../builtin/packages/r-survey/package.py | 4 +++ .../builtin/packages/r-survival/package.py | 1 + .../builtin/packages/r-svglite/package.py | 2 ++ .../repos/builtin/packages/r-sys/package.py | 1 + .../builtin/packages/r-systemfonts/package.py | 2 ++ .../builtin/packages/r-tclust/package.py | 8 +++++ .../packages/r-teachingdemos/package.py | 1 + .../builtin/packages/r-tensora/package.py | 1 + .../repos/builtin/packages/r-terra/package.py | 1 + .../builtin/packages/r-tester/package.py | 1 + .../builtin/packages/r-testthat/package.py | 23 +++++++++++-- .../builtin/packages/r-textshaping/package.py | 5 ++- .../builtin/packages/r-tictoc/package.py | 1 + .../builtin/packages/r-tidycensus/package.py | 1 + .../builtin/packages/r-tidygraph/package.py | 3 ++ .../repos/builtin/packages/r-tidyr/package.py | 3 ++ .../builtin/packages/r-tidyselect/package.py | 4 ++- .../builtin/packages/r-tidytree/package.py | 1 + .../repos/builtin/packages/r-tiff/package.py | 1 + .../builtin/packages/r-tigris/package.py | 1 + .../builtin/packages/r-timechange/package.py | 1 + .../builtin/packages/r-timedate/package.py | 1 + .../builtin/packages/r-tinytex/package.py | 1 + .../builtin/packages/r-tinytiger/package.py | 4 ++- .../builtin/packages/r-tseries/package.py | 3 ++ .../repos/builtin/packages/r-ttr/package.py | 1 + .../builtin/packages/r-tweenr/package.py | 1 + .../repos/builtin/packages/r-tzdb/package.py | 2 ++ .../builtin/packages/r-ucminf/package.py | 3 ++ .../repos/builtin/packages/r-units/package.py | 1 + .../repos/builtin/packages/r-urca/package.py | 1 + .../builtin/packages/r-usethis/package.py | 4 +++ .../repos/builtin/packages/r-utf8/package.py | 1 + .../repos/builtin/packages/r-uuid/package.py | 1 + .../repos/builtin/packages/r-uwot/package.py | 2 ++ .../repos/builtin/packages/r-v8/package.py | 1 + .../repos/builtin/packages/r-vcd/package.py | 1 + .../repos/builtin/packages/r-vcfr/package.py | 1 + .../repos/builtin/packages/r-vegan/package.py | 2 ++ .../repos/builtin/packages/r-vgam/package.py | 1 + .../builtin/packages/r-vioplot/package.py | 1 + .../repos/builtin/packages/r-vipor/package.py | 2 ++ .../builtin/packages/r-viridis/package.py | 1 + .../builtin/packages/r-viridislite/package.py | 1 + .../repos/builtin/packages/r-vroom/package.py | 2 ++ .../repos/builtin/packages/r-waldo/package.py | 2 ++ .../builtin/packages/r-webshot/package.py | 1 + .../repos/builtin/packages/r-wgcna/package.py | 1 + .../repos/builtin/packages/r-withr/package.py | 2 ++ .../repos/builtin/packages/r-wk/package.py | 1 + .../builtin/packages/r-writexl/package.py | 20 +++++++++++ .../repos/builtin/packages/r-wru/package.py | 4 +++ .../repos/builtin/packages/r-xfun/package.py | 3 ++ .../builtin/packages/r-xgboost/package.py | 6 ++-- .../builtin/packages/r-xlconnect/package.py | 1 + .../repos/builtin/packages/r-xml/package.py | 1 + .../repos/builtin/packages/r-xml2/package.py | 6 +++- .../repos/builtin/packages/r-xopen/package.py | 1 + .../repos/builtin/packages/r-xts/package.py | 1 + .../builtin/packages/r-yaimpute/package.py | 1 + .../repos/builtin/packages/r-yaml/package.py | 1 + .../builtin/packages/r-yulab-utils/package.py | 9 +++++ .../packages/r-zcompositions/package.py | 1 + .../repos/builtin/packages/r-zip/package.py | 1 + 573 files changed, 1623 insertions(+), 183 deletions(-) create mode 100644 var/spack/repos/builtin/packages/r-arm/package.py create mode 100644 var/spack/repos/builtin/packages/r-biglm/package.py create mode 100644 var/spack/repos/builtin/packages/r-broom-helpers/package.py create mode 100644 var/spack/repos/builtin/packages/r-clarabel/package.py create mode 100644 var/spack/repos/builtin/packages/r-consrank/package.py create mode 100644 var/spack/repos/builtin/packages/r-fastdummies/package.py create mode 100644 var/spack/repos/builtin/packages/r-ggstats/package.py create mode 100644 var/spack/repos/builtin/packages/r-list/package.py create mode 100644 var/spack/repos/builtin/packages/r-pki/package.py create mode 100644 var/spack/repos/builtin/packages/r-quickjsr/package.py create mode 100644 var/spack/repos/builtin/packages/r-rlist/package.py create mode 100644 var/spack/repos/builtin/packages/r-spatstat-univar/package.py create mode 100644 var/spack/repos/builtin/packages/r-splines2/package.py create mode 100644 var/spack/repos/builtin/packages/r-writexl/package.py diff --git a/var/spack/repos/builtin/packages/r-acepack/package.py b/var/spack/repos/builtin/packages/r-acepack/package.py index 28353cb981e31a..32eda730e5b710 100644 --- a/var/spack/repos/builtin/packages/r-acepack/package.py +++ b/var/spack/repos/builtin/packages/r-acepack/package.py @@ -29,4 +29,5 @@ class RAcepack(RPackage): license("MIT") + version("1.4.2", sha256="5bffcd12b783f372bb6c50e35317744ac31597c91b6433442a7b0dce2f66ac91") version("1.4.1", sha256="82750507926f02a696f6cc03693e8d4a5ee7e92500c8c15a16a9c12addcd28b9") diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index 343b8c468d85a3..1f489a0c5bd9b8 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -34,12 +34,17 @@ class RAdabag(RPackage): license("GPL-2.0-or-later") + version("5.0", sha256="ec58756fda2e64753d21e28d9e27ed34f28020045b199a58dcea06a3e2c3d60e") version("4.2", sha256="47019eb8cefc8372996fbb2642f64d4a91d7cedc192690a8d8be6e7e03cd3c81") version("4.1", sha256="ff938c36122cdf58a71a59a6bf79a3c7816966ee7cc4907c4a0a3c0732e3d028") + depends_on("r@4.0.0:", type=("build", "run"), when="@5.0:") depends_on("r-rpart", type=("build", "run")) depends_on("r-caret", type=("build", "run")) - depends_on("r-foreach", type=("build", "run")) + depends_on("r-consrank@2.1.3:", type=("build", "run"), when="@5.0:") depends_on("r-doparallel", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run"), when="@5.0:") + depends_on("r-foreach", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run"), when="@5.0:") depends_on("r-mlbench", type=("build", "run"), when="@:4.1") diff --git a/var/spack/repos/builtin/packages/r-adegraphics/package.py b/var/spack/repos/builtin/packages/r-adegraphics/package.py index 1048a74d065fdc..a83b2cce4d9bcc 100644 --- a/var/spack/repos/builtin/packages/r-adegraphics/package.py +++ b/var/spack/repos/builtin/packages/r-adegraphics/package.py @@ -17,6 +17,7 @@ class RAdegraphics(RPackage): license("GPL-2.0-or-later") + version("1.0-21", sha256="e02a92b3a03220fd1f905f9541f506e43ad75b385a7febf74c80690364faeba8") version("1.0-18", sha256="8fe07fc0f73e9917e098de2ee8e6fdb3e07775446683b6222692a3298e4d563c") version("1.0-16", sha256="7ba59ce9aeefe1c25b4b118d08ef458ffd34115412c147cc428629e72a82ec3a") version("1.0-15", sha256="87bbcd072e9a898955f5ede4315e82365086a50a2887bf5bd2e94bbb4d3f678a") diff --git a/var/spack/repos/builtin/packages/r-adephylo/package.py b/var/spack/repos/builtin/packages/r-adephylo/package.py index 225b8bc1cfdce0..f113150a303429 100644 --- a/var/spack/repos/builtin/packages/r-adephylo/package.py +++ b/var/spack/repos/builtin/packages/r-adephylo/package.py @@ -16,6 +16,7 @@ class RAdephylo(RPackage): license("GPL-2.0-or-later") + version("1.1-16", sha256="b5ce5de26bbe6e40ca0650650acac3f613e5170d0b14dc5d6e6bbe83c416ce58") version("1.1-13", sha256="2aa132fee9d0a14ac09b0a96af40ac332cb4e13c892908803c335aa7319ca76d") version("1.1-11", sha256="154bf2645eac4493b85877933b9445442524ca4891aefe4e80c294c398cff61a") diff --git a/var/spack/repos/builtin/packages/r-adespatial/package.py b/var/spack/repos/builtin/packages/r-adespatial/package.py index 7fe07cbf9ecb7a..dbd61e3dc83305 100644 --- a/var/spack/repos/builtin/packages/r-adespatial/package.py +++ b/var/spack/repos/builtin/packages/r-adespatial/package.py @@ -19,6 +19,7 @@ class RAdespatial(RPackage): license("GPL-2.0-or-later") + version("0.3-23", sha256="70e0878b13212f9c450bf1e2bd1c5be87a1e24fed942941855a8dd2dd0c05f33") version("0.3-21", sha256="4ff65f9bc05892a2d37d34ab2b77dbd24f980adc891f5f94f8e56aec771ea79f") version("0.3-20", sha256="f88e009563087c52af5be490bd111cc38b0b70437bbfa189e846080a069b64eb") version("0.3-19", sha256="db50f1c42961e40bcef6d714a89a09b1345dab2dd013cea8e2122fdf99d5d223") diff --git a/var/spack/repos/builtin/packages/r-aer/package.py b/var/spack/repos/builtin/packages/r-aer/package.py index 8e4e5b57027973..013efef3cbe7ef 100644 --- a/var/spack/repos/builtin/packages/r-aer/package.py +++ b/var/spack/repos/builtin/packages/r-aer/package.py @@ -15,6 +15,7 @@ class RAer(RPackage): cran = "AER" + version("1.2-12", sha256="55c7b0f17ecd0dc6e1c54ab09b40e89676f44658eaad444c818133fae8d1ea86") version("1.2-10", sha256="650a5fb54a8addf8c86f1e0f88f4fac5349731bc5bf34762a991022140eedbdc") version("1.2-9", sha256="3b79390b14766419fc1e8912689bc462d4beb01aff9dad26d628aed69d04540d") version("1.2-7", sha256="3aee5c606313710c2dca6c1e9b2c20a145aa33f2a3ecc5cfcec66c8e91838a93") diff --git a/var/spack/repos/builtin/packages/r-afex/package.py b/var/spack/repos/builtin/packages/r-afex/package.py index 8d837804708020..1cf3e17b72d987 100644 --- a/var/spack/repos/builtin/packages/r-afex/package.py +++ b/var/spack/repos/builtin/packages/r-afex/package.py @@ -26,6 +26,7 @@ class RAfex(RPackage): license("GPL-2.0-or-later") + version("1.3-1", sha256="4a64fb7e86e3d081e576c0d744d1613f391656082962c5799cf3fc5e2ca631a8") version("1.3-0", sha256="f8e276a1070288c54b83db1d1214fd88fe8d8b8698cf0c2743ef2a45f61e1933") version("1.2-1", sha256="e3a8cecd46db9521039275a5bf27937afb3ec4021644cc4fac94096cc585aacb") version("1.2-0", sha256="8b57ffb8ba2f6354185fc79c8b0cab2703d753b89a100f4325bb2e4c7a3531c2") diff --git a/var/spack/repos/builtin/packages/r-amelia/package.py b/var/spack/repos/builtin/packages/r-amelia/package.py index ac363443653c3e..d2a70da851ad7b 100644 --- a/var/spack/repos/builtin/packages/r-amelia/package.py +++ b/var/spack/repos/builtin/packages/r-amelia/package.py @@ -27,6 +27,7 @@ class RAmelia(RPackage): cran = "Amelia" + version("1.8.2", sha256="4fb24a247ca20ba942e854f21e366fbbaf8fbcabc99efbb537511a10a732fc3e") version("1.8.1", sha256="120ce62a2acfc845dbeb155ce3f33b41ebad324bc73693a918a95194a9fc47e4") version("1.8.0", sha256="3ec1d5a68dac601b354227916aa8ec72fa1216b603dd887aae2b24cb69b5995e") version("1.7.6", sha256="63c08d374aaf78af46c34dc78da719b3085e58d9fabdc76c6460d5193a621bea") diff --git a/var/spack/repos/builtin/packages/r-aod/package.py b/var/spack/repos/builtin/packages/r-aod/package.py index bb1c02ed208009..230890b99d68f4 100644 --- a/var/spack/repos/builtin/packages/r-aod/package.py +++ b/var/spack/repos/builtin/packages/r-aod/package.py @@ -19,6 +19,7 @@ class RAod(RPackage): license("GPL-2.0-or-later") + version("1.3.3", sha256="b7245e8abf7d78cdfa7f74f6d90f79a418b883058aa3edd5977a60bdbed4087e") version("1.3.2", sha256="9b85be7b12b31ac076f2456853a5b18d8a79ce2b86d00055264529a0cd28515c") version("1.3.1", sha256="052d8802500fcfdb3b37a8e3e6f3fbd5c3a54e48c3f68122402d2ea3a15403bc") diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py index 79c01e29ef56da..7ab951511fa02a 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -29,6 +29,7 @@ class RApe(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("5.8", sha256="24ce729979e1bcc60317e71e5100ce54156ceb7484917b0d64260f733ae84d24") version("5.7-1", sha256="8b09c71218d8aa629e43bc807b433a4e30a61847d91b2810e31c366f0fe5057a") version("5.6-2", sha256="9b62450a0390a1f07df007d348ad4cedcd814d42cb11c5a300ed33550fd41257") version("5.6-1", sha256="25401e036576eed1200e15bf68879ccd85611303a3508b989e15164cd4c0f7f7") diff --git a/var/spack/repos/builtin/packages/r-aplot/package.py b/var/spack/repos/builtin/packages/r-aplot/package.py index a13354904ec241..537d9efc7550a6 100644 --- a/var/spack/repos/builtin/packages/r-aplot/package.py +++ b/var/spack/repos/builtin/packages/r-aplot/package.py @@ -20,6 +20,7 @@ class RAplot(RPackage): license("Artistic-2.0") + version("0.2.3", sha256="1fb062050199933f724164118cc3e5d85b60a3a4d4a466016bed2928b0310d6a") version("0.1.10", sha256="d937768241f887628b88bb3b49dd6cbe9b7dae39ae7054e7380a9836721a67d1") version("0.1.8", sha256="d931d7769dc7ce4bc938e8c068973721e89da0aa5f40a04f8a9119621b33459c") version("0.1.7", sha256="f6250f5f6d1addc8d5717be80a92c569bfd83d35bce2e3dbeb251c9ae1be8616") @@ -27,9 +28,11 @@ class RAplot(RPackage): version("0.1.4", sha256="cde9dfc1c6b38e370c1f7338651c37727efa57d52b646fec6b021855809492ac") version("0.1.2", sha256="899c4d101ddcedb1eba9803d78cf02288b63de25e2879add8add1165167509f0") + depends_on("r@4.1.0:", type=("build", "run"), when="@0.2.0:") depends_on("r-ggfun@0.0.4:", type=("build", "run"), when="@0.1.2:") depends_on("r-ggfun@0.0.6:", type=("build", "run"), when="@0.1.4:") depends_on("r-ggfun@0.0.9:", type=("build", "run"), when="@0.1.10:") + depends_on("r-ggfun@0.1.3:", type=("build", "run"), when="@0.2.1:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-ggplotify", type=("build", "run")) depends_on("r-patchwork", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-argparse/package.py b/var/spack/repos/builtin/packages/r-argparse/package.py index fbacffb18313e8..758c817412887a 100644 --- a/var/spack/repos/builtin/packages/r-argparse/package.py +++ b/var/spack/repos/builtin/packages/r-argparse/package.py @@ -17,6 +17,7 @@ class RArgparse(RPackage): license("GPL-2.0-or-later") + version("2.2.3", sha256="a50cc4e1221f063e472a8cfe7e881a1d4abed5ef93cf40d5f65a2528cdfd2674") version("2.2.2", sha256="b62c9bf5e6ca35fb7a2e614a916815c04cbf6c6db3f89f99b4df76470a4a856d") version("2.1.6", sha256="2ad7faad795878b88969ac5d91ba38f4e96deb85dfea7148c3510f0eaa3de592") version("2.1.5", sha256="83e112beb47733849980b286d93ac930f0cbe6ac78fcb94fc9f6b0eea882658d") diff --git a/var/spack/repos/builtin/packages/r-arm/package.py b/var/spack/repos/builtin/packages/r-arm/package.py new file mode 100644 index 00000000000000..c451ac36e19d21 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-arm/package.py @@ -0,0 +1,27 @@ +# 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) + +from spack.package import * + + +class RArm(RPackage): + """Functions to accompany A. Gelman and J. Hill, Data Analysis Using + Regression and Multilevel/Hierarchical Models, Cambridge University + Press, 2007.""" + + homepage = "https://github.com/suyusung/arm" + cran = "arm" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("1.14-4", sha256="425bcb0afea2efb668d15ed8daa430bb356c62587eba806fd91e37afac1807bd") + + depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r-mass", type=("build", "run")) + depends_on("r-matrix@1.0:", type=("build", "run")) + depends_on("r-lme4@1.0:", type=("build", "run")) + depends_on("r-abind", type=("build", "run")) + depends_on("r-coda", type=("build", "run")) + depends_on("r-nlme", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-askpass/package.py b/var/spack/repos/builtin/packages/r-askpass/package.py index 8c7d5a5d3ee88b..76563eb0efe205 100644 --- a/var/spack/repos/builtin/packages/r-askpass/package.py +++ b/var/spack/repos/builtin/packages/r-askpass/package.py @@ -22,6 +22,7 @@ class RAskpass(RPackage): license("MIT") + version("1.2.0", sha256="b922369781934d0ffc8d0c0177e8ace56796c2e6a726f65e460c16f792592cef") version("1.1", sha256="db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f") depends_on("r-sys@2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-assertive-code/package.py b/var/spack/repos/builtin/packages/r-assertive-code/package.py index 81b3036035ef93..cfab4f28a21d34 100644 --- a/var/spack/repos/builtin/packages/r-assertive-code/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-code/package.py @@ -16,6 +16,7 @@ class RAssertiveCode(RPackage): cran = "assertive.code" + version("0.0-4", sha256="2f820474ed20e06f65b284962c87cd1e85220a11cc7fcde09716f0eee5821387") version("0.0-3", sha256="ef80e8d1d683d776a7618e78ddccffca7f72ab4a0fcead90c670bb8f8cb90be2") depends_on("r@3.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-backports/package.py b/var/spack/repos/builtin/packages/r-backports/package.py index 45f7f2edd6a58b..9fa8a9c63d7d64 100644 --- a/var/spack/repos/builtin/packages/r-backports/package.py +++ b/var/spack/repos/builtin/packages/r-backports/package.py @@ -20,6 +20,7 @@ class RBackports(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.5.0", sha256="0d3ed9db8f1505e88967f48d669b2a257e0c6b7e6320ea64b946c1bd40897ca2") version("1.4.1", sha256="845c3c59fbb05e5a892c4231b955a0afdd331d82b7cc815bcff0672023242474") version("1.4.0", sha256="e7611565d24a852ad8b08579a7c67ad9121c1bda148bade98c7bec686e8dabbf") version("1.2.1", sha256="a2834bbd57e305e5d8010322f1906ea1789b3b5ba5eca77c5ff4248aceb7c2d5") diff --git a/var/spack/repos/builtin/packages/r-bayesm/package.py b/var/spack/repos/builtin/packages/r-bayesm/package.py index faebd2b48d6b2d..6af5198de1b65c 100644 --- a/var/spack/repos/builtin/packages/r-bayesm/package.py +++ b/var/spack/repos/builtin/packages/r-bayesm/package.py @@ -33,6 +33,7 @@ class RBayesm(RPackage): license("GPL-2.0-or-later") + version("3.1-6", sha256="17d72b9cdc090845f98e7a04640380d0baef8bc23d1487c8f64dc192fdb93cb5") version("3.1-5", sha256="f223074ca41ede293b48350eac77a565e034f0f8cf3dd72d0e1d126cc58047a2") version("3.1-4", sha256="061b216c62bc72eab8d646ad4075f2f78823f9913344a781fa53ea7cf4a48f94") version("3.1-3", sha256="51e4827eca8cd4cf3626f3c2282543df7c392b3ffb843f4bfb386fe104642a10") diff --git a/var/spack/repos/builtin/packages/r-bayesplot/package.py b/var/spack/repos/builtin/packages/r-bayesplot/package.py index adec1f7bebb528..3910a5bca320be 100644 --- a/var/spack/repos/builtin/packages/r-bayesplot/package.py +++ b/var/spack/repos/builtin/packages/r-bayesplot/package.py @@ -22,6 +22,7 @@ class RBayesplot(RPackage): license("GPL-3.0-or-later") + version("1.11.1", sha256="4f71e67391e0135acd3e890989b87025f3f8160242f532a8e1a0ed74ed0f3830") version("1.10.0", sha256="bb4cb92b1ae4cf8ae5f4b5cb092aba34af3d820d137e1f2265cca8f3e85113ff") version("1.9.0", sha256="0a81a4b99cf781334e57cfc3c469fad8b932a68204016a3bbca33cab4e2a1e43") version("1.8.1", sha256="d8d74201ea91fa5438714686ca22a947ec9375b6c12b0cfef010c57104b1aa2a") @@ -30,7 +31,9 @@ class RBayesplot(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-dplyr@0.8.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@1.11.0:") depends_on("r-ggridges", type=("build", "run")) + depends_on("r-ggridges@0.5.5:", type=("build", "run"), when="@1.11.1:") depends_on("r-glue", type=("build", "run")) depends_on("r-posterior", type=("build", "run"), when="@1.9.0:") depends_on("r-reshape2", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-bglr/package.py b/var/spack/repos/builtin/packages/r-bglr/package.py index 98a96e20b9e8e5..0a9e961c88b077 100644 --- a/var/spack/repos/builtin/packages/r-bglr/package.py +++ b/var/spack/repos/builtin/packages/r-bglr/package.py @@ -13,6 +13,7 @@ class RBglr(RPackage): license("GPL-3.0-only") + version("1.1.2", sha256="39476f3739bd86905a379e2d5de86ef1f8b0e10c311e350d95ce7aadb7b28224") version("1.1.0", sha256="97c5bb8a461eb408e907693811b2d917efc993000da06591a83a3f5529451ea7") version("1.0.9", sha256="440a96f9f502e0d6ecc8c00720d1ccdbab5ee8223e1def6c930edaa9a9de9099") version("1.0.8", sha256="5e969590d80b2f272c02a43b487ab1ffa13af386e0342993e6ac484fc82c9b95") diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index ec028b901db5d5..5745307b54dc54 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -26,6 +26,7 @@ class RBh(RPackage): cran = "BH" + version("1.84.0-0", sha256="6fb660755f572cd975073d7052075654acf8db12d208954ca223b8e4f77ef1ac") version("1.81.0-1", sha256="f51c8badd6f181e06353314e1d15a6ec1495cc498ee74b6fa4ea8aba6e97ff64") version("1.78.0-0", sha256="3b9e9d07682013e0c06a396dda176b405eab99a7273eca6c40d1b4c4110e8cb3") version("1.75.0-0", sha256="ae4c10992607dd697663f60675a46a5770851da159330bb63c4a68890bdd6f5a") diff --git a/var/spack/repos/builtin/packages/r-biasedurn/package.py b/var/spack/repos/builtin/packages/r-biasedurn/package.py index 9b626313ab0e13..4efc158c227c7a 100644 --- a/var/spack/repos/builtin/packages/r-biasedurn/package.py +++ b/var/spack/repos/builtin/packages/r-biasedurn/package.py @@ -18,6 +18,7 @@ class RBiasedurn(RPackage): cran = "BiasedUrn" + version("2.0.12", sha256="29b3b596431c5364e3be9aae2068adb44a205de31c66ec3fa1ef06a4ab8c5792") version("2.0.9", sha256="bac62bbbc3e2417772f8784996a6c2d0857adb42e86e46b1a9703b187a406b09") version("2.0.8", sha256="205e7f8da8fba76fbf4bd9d12a027599b685dedecc818aad39de5c51dc47b856") version("1.07", sha256="2377c2e59d68e758a566452d7e07e88663ae61a182b9ee455d8b4269dda3228e") diff --git a/var/spack/repos/builtin/packages/r-bigalgebra/package.py b/var/spack/repos/builtin/packages/r-bigalgebra/package.py index 741c9a4ca2443b..229d37cdbb44cc 100644 --- a/var/spack/repos/builtin/packages/r-bigalgebra/package.py +++ b/var/spack/repos/builtin/packages/r-bigalgebra/package.py @@ -22,6 +22,7 @@ class RBigalgebra(RPackage): license("LGPL-3.0-only OR Apache-2.0") + version("1.1.1", sha256="fc6a48b940cca86caf8372648a1b1e4066f2f6d618a77303a1c8766c5b7bbf1f") version("1.1.0", sha256="e51530287a64826a3dfb55f41594bc8123b7b4c9b2074f6c8de218fa8b525734") version("1.0.1", sha256="ff7e261d0aa0e0f498e926d923ac62fc5cb783fa1f74bb2ff76a09167388a9d2") version("1.0.0", sha256="f186b603bd660be0cc5b7a52c943e23e92fef264f0bc96a8858e38df6cfc4085") diff --git a/var/spack/repos/builtin/packages/r-biglm/package.py b/var/spack/repos/builtin/packages/r-biglm/package.py new file mode 100644 index 00000000000000..9fd2391596f2fa --- /dev/null +++ b/var/spack/repos/builtin/packages/r-biglm/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class RBiglm(RPackage): + """Regression for data too large to fit in memory.""" + + homepage = "https://cran.r-project.org/web/packages/biglm/index.html" + cran = "biglm" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("0.9-3", sha256="805d483dc58c041f1616267abeb39cecaaf7271a34e90668a5439383bf9a0d58") + + depends_on("r-dbi", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py b/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py index 80deb2b010e4ce..780050cf95248f 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py @@ -14,5 +14,6 @@ class RBigmemorySri(RPackage): cran = "bigmemory.sri" + version("0.1.8", sha256="029a4ed24aa17636a20b83857d55fe6a9283acb8b647cbc75280dea8ec987771") version("0.1.6", sha256="3bfa6ac966ce0ea93283f5856a853d0ee5ff85aedd7a7d1ca8a93d0aa642860c") version("0.1.3", sha256="55403252d8bae9627476d1f553236ea5dc7aa6e54da6980526a6cdc66924e155") diff --git a/var/spack/repos/builtin/packages/r-bigmemory/package.py b/var/spack/repos/builtin/packages/r-bigmemory/package.py index caeca61193a357..24f9e0ec3bad7b 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory/package.py @@ -18,6 +18,7 @@ class RBigmemory(RPackage): license("LGPL-3.0-only OR Apache-2.0") + version("4.6.4", sha256="fe3f576c0d87fd2820c0f436a202261dff353e50e5b86dd9c80fdea7ad60002d") version("4.6.1", sha256="b56e157c87ed6c4fc69d4cb9c697ae9a2001726e776e41aa7c48b35327b65141") version("4.5.36", sha256="18c67fbe6344b2f8223456c4f19ceebcf6c1166255eab81311001fd67a45ef0e") diff --git a/var/spack/repos/builtin/packages/r-bindrcpp/package.py b/var/spack/repos/builtin/packages/r-bindrcpp/package.py index 8bb8749e9957a2..dc804e6f7b7cfe 100644 --- a/var/spack/repos/builtin/packages/r-bindrcpp/package.py +++ b/var/spack/repos/builtin/packages/r-bindrcpp/package.py @@ -16,6 +16,7 @@ class RBindrcpp(RPackage): license("MIT") + version("0.2.3", sha256="662dae785aee715855415f4e743281ccbf0832e426084dc2f0ca9c9c908ec9fa") version("0.2.2", sha256="48130709eba9d133679a0e959e49a7b14acbce4f47c1e15c4ab46bd9e48ae467") version("0.2", sha256="d0efa1313cb8148880f7902a4267de1dcedae916f28d9a0ef5911f44bf103450") diff --git a/var/spack/repos/builtin/packages/r-biocmanager/package.py b/var/spack/repos/builtin/packages/r-biocmanager/package.py index 8bf3a70367d48d..40c1b0dc44710f 100644 --- a/var/spack/repos/builtin/packages/r-biocmanager/package.py +++ b/var/spack/repos/builtin/packages/r-biocmanager/package.py @@ -13,6 +13,7 @@ class RBiocmanager(RPackage): cran = "BiocManager" + version("1.30.24", sha256="645c423bb144dbd476cb308678bd36e06c1a3494115f157166dd3f59955ec7d1") version("1.30.20", sha256="b9e72d7687abbd785a69fecb530ec86ad92257a6be95b8e15953b193a516d5ea") version("1.30.19", sha256="6897ab1c58ab2fa3108e22d70bc4150c683bb4ac29355ba7886b88acc30c18e2") version("1.30.18", sha256="f763126b45614e1b83260da5311923eac50db24002f3c22fa5f667434a5b5c35") diff --git a/var/spack/repos/builtin/packages/r-biomartr/package.py b/var/spack/repos/builtin/packages/r-biomartr/package.py index cef67089bb4cdf..cc61ee3ef53e41 100644 --- a/var/spack/repos/builtin/packages/r-biomartr/package.py +++ b/var/spack/repos/builtin/packages/r-biomartr/package.py @@ -25,6 +25,7 @@ class RBiomartr(RPackage): license("GPL-2.0-only") + version("1.0.7", sha256="9d1d5c51b61ee67ce7ca18afdb0a136ef5709d92d077d80163f9d52ee6c28645") version("1.0.2", sha256="7fd6cccd915aa39e593fb7591107ab9792d98a119dd42f3f666e5184f4e42743") version("0.9.2", sha256="d88085696e9c5614828602254c33f2cdd3bbfeebc2f21a705eee3cb961097c89") diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index 2816e2f8001961..7cfcdeb49bb03b 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -16,6 +16,7 @@ class RBitops(RPackage): license("GPL-2.0-or-later") + version("1.0-8", sha256="78a14b9f69645dc65e1973e1f1a9968c53d5c5edc6aa1ac85661e1112f212738") version("1.0-7", sha256="e9b5fc92c39f94a10cd0e13f3d6e2a9c17b75ea01467077a51d47a5f708517c4") version("1.0-6", sha256="9b731397b7166dd54941fb0d2eac6df60c7a483b2e790f7eb15b4d7b79c9d69c") diff --git a/var/spack/repos/builtin/packages/r-blavaan/package.py b/var/spack/repos/builtin/packages/r-blavaan/package.py index 5858afc3246bf0..c6e8ec7059fbc3 100644 --- a/var/spack/repos/builtin/packages/r-blavaan/package.py +++ b/var/spack/repos/builtin/packages/r-blavaan/package.py @@ -18,6 +18,7 @@ class RBlavaan(RPackage): license("GPL-3.0-or-later") + version("0.5-5", sha256="a8d3bc5e9d15a2e8496950e87ed3c6bc6d769e761ec068e1f063f2d255330b6d") version("0.4-7", sha256="43577264a1faff3cf98fce2c03b729816b40a82d36846458b8026b62da3008c3") version("0.4-3", sha256="a9f9f7b32aab7e7f179340c9f0f9d154b5fac51352c4fd590d317c201fe81b74") version("0.4-1", sha256="afb077d72f84ef0b6f45ef2ccb8335358042943c32a3472a9ca239ebca1c4aa4") @@ -29,6 +30,7 @@ class RBlavaan(RPackage): depends_on("r-lavaan@0.6-7:", type=("build", "run"), when="@0.3-18:") depends_on("r-lavaan@0.6-10:", type=("build", "run"), when="@0.4-1:") depends_on("r-lavaan@0.6-14:", type=("build", "run"), when="@0.4-7:") + depends_on("r-lavaan@0.6-17:", type=("build", "run"), when="@0.5-3:") depends_on("r-rcpp@0.12.15:", type=("build", "run")) depends_on("r-coda", type=("build", "run")) depends_on("r-mnormt", type=("build", "run")) @@ -36,6 +38,7 @@ class RBlavaan(RPackage): depends_on("r-loo@2.0:", type=("build", "run")) depends_on("r-rstan@2.19.2:", type=("build", "run")) depends_on("r-rstan@2.21.2:", type=("build", "run"), when="@0.3-18:") + depends_on("r-rstan@2.26.0:", type=("build", "run"), when="@0.5-2:") depends_on("r-rstantools@1.5.0:", type=("build", "run")) depends_on("r-rcppparallel@5.0.1:", type=("build", "run")) depends_on("r-bayesplot", type=("build", "run")) @@ -43,6 +46,7 @@ class RBlavaan(RPackage): depends_on("r-future-apply", type=("build", "run")) depends_on("r-tmvnsim", type=("build", "run"), when="@0.3-18:") depends_on("r-stanheaders@2.18.1:", type=("build", "run")) + depends_on("r-stanheaders@2.26.0:", type=("build", "run"), when="@0.5-2:") depends_on("r-bh@1.69.0:", type=("build", "run")) depends_on("r-rcppeigen@0.3.3.4.0:", type=("build", "run")) depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-blockmodeling/package.py b/var/spack/repos/builtin/packages/r-blockmodeling/package.py index bc330e7b024276..a8fc9d5846caa1 100644 --- a/var/spack/repos/builtin/packages/r-blockmodeling/package.py +++ b/var/spack/repos/builtin/packages/r-blockmodeling/package.py @@ -16,6 +16,7 @@ class RBlockmodeling(RPackage): license("GPL-2.0-or-later") + version("1.1.5", sha256="3b6f910078c29b801651e3a686112e41e456c517e1b99fcda11bb12681bb1503") version("1.1.4", sha256="69ce17ed96ca754a6308edb62188e0040e357568b975ce8986f68ecb2fead2b8") version("1.1.3", sha256="5f705f92c9b96dcbdd6f109c6a99f88d70c576485369700b82391b6a75afbda6") version("1.0.5", sha256="18c227bb52f28aff4dae8929563474e3e006e238438c823b67dc6baa897f88ed") diff --git a/var/spack/repos/builtin/packages/r-bookdown/package.py b/var/spack/repos/builtin/packages/r-bookdown/package.py index b798a80533ab1a..2346bd0d8644cc 100644 --- a/var/spack/repos/builtin/packages/r-bookdown/package.py +++ b/var/spack/repos/builtin/packages/r-bookdown/package.py @@ -16,6 +16,7 @@ class RBookdown(RPackage): license("GPL-3.0-only") + version("0.40", sha256="58df4a044704b6c42a397f4e430a7fc8f6171bad1447872119aceafd158eac39") version("0.33", sha256="2288e1d0c383e6ab49202a18db6cc1a04c3adc1b25da646cc46167bc6c2892c3") version("0.29", sha256="5b4e3dc44a5c6574e3d9e19ebe7897d3ddcf6eaffe8214e1d272b545929ff723") version("0.26", sha256="c6207288cb72ea7c555cbad449c61278e94b742cac1f610879fb3f2d60b2b185") @@ -41,6 +42,7 @@ class RBookdown(RPackage): depends_on("r-xfun@0.13:", type=("build", "run"), when="@0.21:") depends_on("r-xfun@0.22:", type=("build", "run"), when="@0.24:") depends_on("r-xfun@0.29:", type=("build", "run"), when="@0.26:") + depends_on("r-xfun@0.39:", type=("build", "run"), when="@0.34:") depends_on("r-tinytex@0.12:", type=("build", "run"), when="@0.12:") depends_on("r-yaml@2.1.14:", type=("build", "run")) depends_on("r-yaml@2.1.19:", type=("build", "run"), when="@0.21:") diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index ae81554a166608..1d7b2442cba173 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -17,6 +17,7 @@ class RBoot(RPackage): license("custom") + version("1.3-30", sha256="5509d62bd6e6c21b6ef352ab7846d89027bddbfb727fd0cf55da59558bd3fe97") version("1.3-28.1", sha256="d4cde76fcc8ccc7ffa329de69147b66a6a93a10188e89342fd18207b1d02ff53") version("1.3-28", sha256="9f7158fd2714659f590c3955651893dc24bd8f39196bc5a4cc35b0b031744a32") version("1.3-25", sha256="464835fcb453072346ce49e4ae318e04c9dba682349be49db616623b6088fbbe") diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index 1e2398a8ea0e41..df202638bc1f7b 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -17,6 +17,7 @@ class RBrew(RPackage): license("GPL-2.0-only") + version("1.0-10", sha256="4181f7334e032ae0775c5dec49d6137eb25d5430ca3792d321793307b3dda38f") version("1.0-8", sha256="11652d5a7042d645cc5be5f9f97ff4d46083cea7d3ad2dd6ad1570b52c097826") version("1.0-7", sha256="38b859c1dca63479f6937c593da8f806f2b3279585bb6e20ecff1b898469e76e") version("1.0-6", sha256="d70d1a9a01cf4a923b4f11e4374ffd887ad3ff964f35c6f9dc0f29c8d657f0ed") diff --git a/var/spack/repos/builtin/packages/r-brio/package.py b/var/spack/repos/builtin/packages/r-brio/package.py index c4feef388bd3a2..310d3f655b639c 100644 --- a/var/spack/repos/builtin/packages/r-brio/package.py +++ b/var/spack/repos/builtin/packages/r-brio/package.py @@ -17,5 +17,8 @@ class RBrio(RPackage): license("MIT") + version("1.1.5", sha256="a9f22335ea39039de25bb27bccd5ff1ffb2b743579b31d150b6b91c9ea81d0b8") version("1.1.3", sha256="eaa89041856189bee545bf1c42c7920a0bb0f1f70bb477487c467ee3e8fedcc6") version("1.1.0", sha256="6bb3a3b47bea13f1a1e3dcdc8b9f688502643e4b40a481a34aa04a261aabea38") + + depends_on("r@3.6:", when="@1.1.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-brms/package.py b/var/spack/repos/builtin/packages/r-brms/package.py index e1ce9accb9fbff..45567c81d85fff 100644 --- a/var/spack/repos/builtin/packages/r-brms/package.py +++ b/var/spack/repos/builtin/packages/r-brms/package.py @@ -29,6 +29,7 @@ class RBrms(RPackage): license("GPL-2.0-only") + version("2.21.0", sha256="7289ff33c2a4b83584b7fece0a6aa53fd14b5881a467d417fbca5dbf62ec5d58") version("2.19.0", sha256="0e146842c7acfcc6b8273df536eabb5279fb3bf2ae27ce1696f7d838d94fe5c1") version("2.18.0", sha256="63914be03cd1c4e6333317d22d7827ba2dc0414cb0dc88337cf74763ba07e111") version("2.17.0", sha256="24e5a3a40b81bea558e8f660d0de7fd1a4c2080c7553baac98f34dd2682ece71") @@ -37,20 +38,22 @@ class RBrms(RPackage): version("2.15.0", sha256="c11701d1d8758590b74bb845b568b736e4455a81b114c7dfde0b27b7bd1bcc2f") depends_on("r@3.5.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@2.20.1:") depends_on("r-rcpp@0.12.0:", type=("build", "run")) depends_on("r-rstan@2.19.2:", type=("build", "run")) + depends_on("r-rstan@2.29.0:", type=("build", "run"), when="@2.21.0:") depends_on("r-ggplot2@2.0.0:", type=("build", "run")) depends_on("r-loo@2.3.1:", type=("build", "run")) depends_on("r-posterior@1.0.0:", type=("build", "run"), when="@2.16:") - depends_on("r-matrix@1.1.1:", type=("build", "run")) + depends_on("r-matrix@1.1-1:", type=("build", "run")) depends_on("r-mgcv@1.8-13:", type=("build", "run")) depends_on("r-rstantools@2.1.1:", type=("build", "run")) depends_on("r-bayesplot@1.5.0:", type=("build", "run")) - depends_on("r-shinystan@2.4.0:", type=("build", "run")) depends_on("r-bridgesampling@0.3-0:", type=("build", "run")) depends_on("r-glue@1.3.0:", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.19.0:") depends_on("r-future@1.19.0:", type=("build", "run")) + depends_on("r-future-apply@1.0.0:", type=("build", "run"), when="@2.21.0:") depends_on("r-matrixstats", type=("build", "run")) depends_on("r-nleqslv", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) @@ -58,4 +61,5 @@ class RBrms(RPackage): depends_on("r-abind", type=("build", "run")) depends_on("r-backports", type=("build", "run")) + depends_on("r-shinystan@2.4.0:", type=("build", "run"), when="@:2.20.4") depends_on("r-projpred@2.0.0:", type=("build", "run"), when="@:2.16.1") diff --git a/var/spack/repos/builtin/packages/r-broom-helpers/package.py b/var/spack/repos/builtin/packages/r-broom-helpers/package.py new file mode 100644 index 00000000000000..ac7b5314beae70 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-broom-helpers/package.py @@ -0,0 +1,32 @@ +# 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) + +from spack.package import * + + +class RBroomHelpers(RPackage): + """Provides suite of functions to work with regression model 'broom::tidy()' + tibbles. The suite includes functions to group regression model terms by + variable, insert reference and header rows for categorical variables, add + variable labels, and more.""" + + homepage = "https://larmarange.github.io/broom.helpers/" + cran = "broom.helpers" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("1.16.0", sha256="9a7bac8678cdcc9a7e0f3b6d287d375fd5f1e880c916ac4d661f02c2c84e2715") + + depends_on("r@4.2:", type=("build", "run"), when="@1.16.0:") + depends_on("r-broom@0.8:", type=("build", "run")) + depends_on("r-cli", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run")) + depends_on("r-labelled", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run")) + depends_on("r-purrr", type=("build", "run")) + depends_on("r-rlang@1.0.1:", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) + depends_on("r-tibble", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-broom/package.py b/var/spack/repos/builtin/packages/r-broom/package.py index 0f48847a4c438b..f755b886c9eb82 100644 --- a/var/spack/repos/builtin/packages/r-broom/package.py +++ b/var/spack/repos/builtin/packages/r-broom/package.py @@ -22,6 +22,7 @@ class RBroom(RPackage): license("MIT") + version("1.0.6", sha256="24cf36248dffbde38d3d81befa679e362bfd0526b9843bc536a85452a19fbccf") version("1.0.4", sha256="1d5f11b509786a8a45ffdd137243e24d6445f2944947cbd62a0734a06add0ad6") version("1.0.1", sha256="4b5e5aa485f0e23ed993088fc84159e31a00087e3a12327071dda25193382892") version("0.8.0", sha256="66a1095d4430450dc810a5cea61cd7e7bee0e23739dcf5ddc5b57c9894fcf999") @@ -39,7 +40,6 @@ class RBroom(RPackage): depends_on("r-backports", type=("build", "run"), when="@0.5.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@0.7.3:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.7.3:") depends_on("r-generics@0.0.2:", type=("build", "run"), when="@0.5.1:") depends_on("r-glue", type=("build", "run"), when="@0.7.3:") depends_on("r-lifecycle", type=("build", "run"), when="@1.0.4:") @@ -51,6 +51,7 @@ class RBroom(RPackage): depends_on("r-tidyr", type=("build", "run")) depends_on("r-tidyr@1.0.0:", type=("build", "run"), when="@0.7.3:") + depends_on("r-ellipsis", type=("build", "run"), when="@0.7.3:1.0.5") depends_on("r-plyr", type=("build", "run"), when="@:0.4.2") depends_on("r-psych", type=("build", "run"), when="@:0.4.2") depends_on("r-reshape2", type=("build", "run"), when="@:0.5.2") diff --git a/var/spack/repos/builtin/packages/r-bslib/package.py b/var/spack/repos/builtin/packages/r-bslib/package.py index f664c309595d6e..d277073d6ab0ed 100644 --- a/var/spack/repos/builtin/packages/r-bslib/package.py +++ b/var/spack/repos/builtin/packages/r-bslib/package.py @@ -18,20 +18,27 @@ class RBslib(RPackage): license("MIT") + version("0.8.0", sha256="fd182ddb1b128691d2b0c12882361732a23d451dbf4052ba70b11257e8d44b03") version("0.4.2", sha256="9a40b7a1bbe409af273e1e940d921ab198ea576548f06f055f552f70ff822f19") version("0.4.1", sha256="4ebd1fc84cd19b414e8f8c13fb95270fc28ede125b6e58b08c574ca8c9e0e62f") version("0.4.0", sha256="fbea4ecec726f23618e825624f1d9c03939f765ca5a490b171ebf95b815475c2") version("0.3.1", sha256="5f5cb56e5cab9039a24cd9d70d73b69c2cab5b2f5f37afc15f71dae0339d9849") depends_on("r@2.10:", type=("build", "run")) + depends_on("r-fastmap@1.1.1:", type=("build", "run"), when="@0.7.0:") depends_on("r-htmltools@0.5.2:", type=("build", "run")) depends_on("r-htmltools@0.5.4:", type=("build", "run"), when="@0.4.2:") + depends_on("r-htmltools@0.5.7:", type=("build", "run"), when="@0.6.0:") + depends_on("r-htmltools@0.5.8:", type=("build", "run"), when="@0.7.0:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-sass@0.4.0:", type=("build", "run")) depends_on("r-jquerylib@0.1.3:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@0.6.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-memoise", type=("build", "run"), when="@0.4.0:") depends_on("r-memoise@2.0.1:", type=("build", "run"), when="@0.4.1:") depends_on("r-mime", type=("build", "run"), when="@0.4.2:") + depends_on("r-sass@0.4.0:", type=("build", "run"), when="@0.5.0:") + depends_on("r-sass@0.4.9:", type=("build", "run"), when="@0.6.2:") depends_on("r-base64enc", type=("build", "run"), when="@0.4.2:") depends_on("r-cachem", type=("build", "run"), when="@0.4.0:") diff --git a/var/spack/repos/builtin/packages/r-bwstest/package.py b/var/spack/repos/builtin/packages/r-bwstest/package.py index 85a8808096db96..159401ee9c577b 100644 --- a/var/spack/repos/builtin/packages/r-bwstest/package.py +++ b/var/spack/repos/builtin/packages/r-bwstest/package.py @@ -17,6 +17,7 @@ class RBwstest(RPackage): cran = "BWStest" + version("0.2.3", sha256="4bc4cc27fcf0aa60c6497048b74528923aae852c98480900204835a8ebd714b2") version("0.2.2", sha256="faff1dd698f1673a6befacb94d14281077d4c19be035a0a3bf85d77c1dfd5509") depends_on("r-memoise", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cachem/package.py b/var/spack/repos/builtin/packages/r-cachem/package.py index b12ed8ef58ff60..7e5d9cc36ea52c 100644 --- a/var/spack/repos/builtin/packages/r-cachem/package.py +++ b/var/spack/repos/builtin/packages/r-cachem/package.py @@ -17,8 +17,10 @@ class RCachem(RPackage): license("MIT") + version("1.1.0", sha256="550839fc2ae5d865db475ba2c1714144f07fa0c052c72135b0e4a70287492e21") version("1.0.7", sha256="234fad2a947d1e1fb87d3fa92abf9197877772e31bc81ae5991ae69689b6320a") version("1.0.6", sha256="9a9452f7bcf3f79436c418b3c3290449fb8fd338714d9b992153754d112f1864") depends_on("r-rlang", type=("build", "run")) depends_on("r-fastmap", type=("build", "run")) + depends_on("r-fastmap@1.2.0:", when="@1.1.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cairo/package.py b/var/spack/repos/builtin/packages/r-cairo/package.py index 8f025f25711620..f852fcb5fb764f 100644 --- a/var/spack/repos/builtin/packages/r-cairo/package.py +++ b/var/spack/repos/builtin/packages/r-cairo/package.py @@ -25,6 +25,7 @@ class RCairo(RPackage): cran = "Cairo" + version("1.6-2", sha256="6b6f4c6f93178a1295860a9dc6dc45e60fec70f684d5c8d0b59baf5b8dd44d62") version("1.6-0", sha256="c762ac1d8daa4af527342360c256ed742de4e3031d997e9e59c9a369fcafb7d3") version("1.5-15", sha256="bb3ab1ff6431c15eb01a66ddf90695cd9a2af3d5a384753f5180cd0401d2e89d") version("1.5-14", sha256="067751face3b5771e72f9fb49bfeefb3a7bbecc060b672ab4393cb5935204c7b") @@ -34,5 +35,14 @@ class RCairo(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@2.4.0:", type=("build", "run")) - depends_on("cairo@1.2:") + # "The Cairo package requires cairo library 1.2.0 or higher with PNG support enabled" + # See https://www.rforge.net/Cairo/ + depends_on("cairo@1.2: +png") + # Disabled PDF support results in compilation failures in 1.6-1:1.6-2 + # See https://github.com/s-u/Cairo/pull/48 + depends_on("cairo +pdf", type=("build", "run"), when="@1.6-1:1.6-2") + # When cairo +ft, must also have +fc, for cairo_ft_font_face_create_for_pattern test + conflicts( + "^cairo ~fc", when="^cairo +ft", msg="For cairo freetype support, also need fontconfig." + ) depends_on("libxt") diff --git a/var/spack/repos/builtin/packages/r-callr/package.py b/var/spack/repos/builtin/packages/r-callr/package.py index 33abeee94dda7b..6e0b3731df7045 100644 --- a/var/spack/repos/builtin/packages/r-callr/package.py +++ b/var/spack/repos/builtin/packages/r-callr/package.py @@ -17,6 +17,7 @@ class RCallr(RPackage): license("MIT") + version("3.7.6", sha256="e4bce367e869e42eaeea05566d2033d8cee2103179b11cd9a401440b58a351f8") version("3.7.3", sha256="567bfedf073a1d4c5785f0553341608a214938110567b9a6495ff20ebb2fd04e") version("3.7.2", sha256="12da8a212679e450d8d43c3c6e61ed09b82047f376f316f6f6392f1638580307") version("3.7.0", sha256="d67255148595c6d0ba4c4d241bc9f6b5e00cafe25fdc13e38c10acc38653360a") diff --git a/var/spack/repos/builtin/packages/r-caracas/package.py b/var/spack/repos/builtin/packages/r-caracas/package.py index fea4048e4ef3cd..ab1edfe599ffd9 100644 --- a/var/spack/repos/builtin/packages/r-caracas/package.py +++ b/var/spack/repos/builtin/packages/r-caracas/package.py @@ -17,6 +17,7 @@ class RCaracas(RPackage): license("GPL-2.0-or-later") + version("2.1.1", sha256="3b31b5b1c2fa038e5a6df12cfe62390f9af0461873a38921d6c26468363c2661") version("2.0.0", sha256="9271239bf7457787371cbd44be74cb9909d67ab7c975b1744d8cf60d8b044b95") version("1.1.2", sha256="9c726c77508617e74d1a11ac6e276973df42e1ad81145db455cc6e420526c757") version("1.1.1", sha256="e14487c9492417cf5c7d7373c37dbb4fea4d91180a1a03154e51eaa7878b2769") diff --git a/var/spack/repos/builtin/packages/r-cardata/package.py b/var/spack/repos/builtin/packages/r-cardata/package.py index 400ff9f35c8e94..6966be3fb0b7df 100644 --- a/var/spack/repos/builtin/packages/r-cardata/package.py +++ b/var/spack/repos/builtin/packages/r-cardata/package.py @@ -19,4 +19,4 @@ class RCardata(RPackage): version("3.0-2", sha256="3b5c4eff1cc1e456a5331084774503eaa06cf61fb7acf6b9e8a6bfabd5735494") depends_on("r@3.0:", type=("build", "run")) - depends_on("r@3.5:", type=("build", "run"), when="@3.0-4:") + depends_on("r@3.5.0:", type=("build", "run"), when="@3.0-4:") diff --git a/var/spack/repos/builtin/packages/r-caretensemble/package.py b/var/spack/repos/builtin/packages/r-caretensemble/package.py index a3114fbd68ace9..8423e8ff99ac32 100644 --- a/var/spack/repos/builtin/packages/r-caretensemble/package.py +++ b/var/spack/repos/builtin/packages/r-caretensemble/package.py @@ -20,15 +20,20 @@ class RCaretensemble(RPackage): license("MIT") + version("4.0.0", sha256="9177ad477fd2872e944231764227bcf5e2eabc9916dabce91f1a2a2decc98f43") version("2.0.2", sha256="d8fcf3742beddc723b68677682708408cc11dcb8b36a0f70f03e7c4763e04f4d") version("2.0.1", sha256="7e595e604ce2d9d32afbc5404e6fcbcd7f80e687316e9ca3303aca3e44c3ef88") depends_on("r@3.2.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@4.0.0:") depends_on("r-pbapply", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) - depends_on("r-plyr", type=("build", "run")) + depends_on("r-patchwork", type=("build", "run"), when="@4.0.0:") + depends_on("r-rlang", type=("build", "run"), when="@4.0.0:") depends_on("r-lattice", type=("build", "run")) - depends_on("r-gridextra", type=("build", "run")) depends_on("r-data-table", type=("build", "run")) depends_on("r-caret", type=("build", "run")) + + depends_on("r-digest", type=("build", "run"), when="@:2.0.3") + depends_on("r-gridextra", type=("build", "run"), when="@:2.0.3") + depends_on("r-plyr", type=("build", "run"), when="@:2.0.3") diff --git a/var/spack/repos/builtin/packages/r-caroline/package.py b/var/spack/repos/builtin/packages/r-caroline/package.py index a4db03a3608980..ec7b9872f210f8 100644 --- a/var/spack/repos/builtin/packages/r-caroline/package.py +++ b/var/spack/repos/builtin/packages/r-caroline/package.py @@ -24,6 +24,7 @@ class RCaroline(RPackage): license("Artistic-2.0") + version("0.9.2", sha256="04dfc574b5f763b8c09e57b68657b8ae7e6aae36083dd71819c96f971d660297") version("0.9.0", sha256="7231daacf2f0e89d9363ea919071f8352ae487011f56e84a4054de11a9243ac8") version("0.8.0", sha256="58f464711f7279ca2aa173e6ce29d3308e01db37dccefbbf14cd7720c0231976") version("0.7.6", sha256="e7ba948f7d87f091b498dd0eec2ca4fdad7af4e2bbb67e0945c2f0d3f2eadda9") diff --git a/var/spack/repos/builtin/packages/r-cca/package.py b/var/spack/repos/builtin/packages/r-cca/package.py index c33b4e205c0b17..d6929127836ff9 100644 --- a/var/spack/repos/builtin/packages/r-cca/package.py +++ b/var/spack/repos/builtin/packages/r-cca/package.py @@ -17,6 +17,7 @@ class RCca(RPackage): cran = "CCA" + version("1.2.2", sha256="f3b347f15dadd887f31206906e845c4893ec0cd7dc0c7e97c11001434c3d2e64") version("1.2.1", sha256="28febfce7c46039240346410e70f9d8795b536fc4e7e0d48d5370bd23cba9bd0") depends_on("r@2.10:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-checkmate/package.py b/var/spack/repos/builtin/packages/r-checkmate/package.py index ac294085f09e84..92cbecec4f401f 100644 --- a/var/spack/repos/builtin/packages/r-checkmate/package.py +++ b/var/spack/repos/builtin/packages/r-checkmate/package.py @@ -17,6 +17,7 @@ class RCheckmate(RPackage): license("BSD-3-Clause") + version("2.3.2", sha256="7255732d6c2da51204128a910e8c0d05246324a0402fca4d0d99433af40a88e3") version("2.1.0", sha256="b784dd5163a0350d084ef34882d9781373839dedeaa9a8b8e6187d773d0d21c6") version("2.0.0", sha256="0dc25b0e20c04836359df1885d099c6e4ad8ae0e585a9e4107f7ea945d9c6fa4") version("1.9.4", sha256="faa25754b757fe483b876f5d07b73f76f69a1baa971420892fadec4af4bbad21") diff --git a/var/spack/repos/builtin/packages/r-chemometrics/package.py b/var/spack/repos/builtin/packages/r-chemometrics/package.py index fac0b96c3e44e6..be933d41dffa02 100644 --- a/var/spack/repos/builtin/packages/r-chemometrics/package.py +++ b/var/spack/repos/builtin/packages/r-chemometrics/package.py @@ -16,6 +16,7 @@ class RChemometrics(RPackage): license("GPL-3.0-or-later") + version("1.4.4", sha256="fd0edb1ebe321ff7677d0a668d7dfc79a7cd55f408a53d1f13db4cf6347aa881") version("1.4.2", sha256="b705832fa167dc24b52b642f571ed1efd24c5f53ba60d02c7797986481b6186a") version("1.4.1", sha256="7646da0077657d672356204aa2094be68e10ec13617f92ae97ff53a389053905") version("1.3.9", sha256="553eda53789b6a4d0f77842c175f98be5b9a04bccc9d2ba0ecde1bb5c8a53f21") diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index fbce82e224f0a4..eb9105173b6998 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -15,6 +15,7 @@ class RChron(RPackage): license("GPL-2.0-only") + version("2.3-61", sha256="a096957625a0438075b3486322ee07c753c7c4ba3efcd04a3ac92476d6c43b9b") version("2.3-60", sha256="0e0675cec55b6cea87fc5776846215e0445442554684120079e66013067491ee") version("2.3-58", sha256="057fc628cde330c22b9d20365316d3632c2d217f4f2f97d39b1d1a2c93f766d0") version("2.3-57", sha256="9645d86a84d1afc12a0accf4f826fdd40e6d050a313424ad70f8085e8f19c232") diff --git a/var/spack/repos/builtin/packages/r-circlize/package.py b/var/spack/repos/builtin/packages/r-circlize/package.py index 2409a909fa5ac3..e480f4d031c79d 100644 --- a/var/spack/repos/builtin/packages/r-circlize/package.py +++ b/var/spack/repos/builtin/packages/r-circlize/package.py @@ -25,6 +25,7 @@ class RCirclize(RPackage): license("MIT") + version("0.4.16", sha256="16dc32c7704906d13a9e5281bb396e92fb89a6b17fa5e201953240726b650b67") version("0.4.15", sha256="d602d55313fe7c675109153d6ed3b99bdba5292e1deefed71d5a21e0db595cc7") version("0.4.13", sha256="6cbadbf8e8b1abbd71a79080677d2b95f2bdd18f2e4d707c32d5c2ff26c5369b") version("0.4.12", sha256="b3b60caa5292cf980cf474c85f59582f6862925631a4da86a78eac05903252f4") @@ -33,6 +34,7 @@ class RCirclize(RPackage): version("0.4.0", sha256="abdc1bbe264be42c1d7b65869979da7cd131032fd6fd3f11f9744dae54e83f5c") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.4.16:") depends_on("r-globaloptions@0.1.0:", type=("build", "run")) depends_on("r-globaloptions@0.1.2:", type=("build", "run"), when="@0.4.12:") depends_on("r-shape", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-clarabel/package.py b/var/spack/repos/builtin/packages/r-clarabel/package.py new file mode 100644 index 00000000000000..8c78cdb0e87d5f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-clarabel/package.py @@ -0,0 +1,28 @@ +# 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) + +from spack.package import * + + +class RClarabel(RPackage): + """A versatile interior point solver that solves linear programs (LPs), + quadratic programs (QPs), second-order cone programs (SOCPs), semidefinite + programs (SDPs), and problems with exponential and power cone constraints + (). For quadratic objectives, unlike interior + point solvers based on the standard homogeneous self-dual embedding (HSDE) + model, 'Clarabel' handles quadratic objective without requiring any + epigraphical reformulation of its objective function. It can therefore + be significantly faster than other HSDE-based solvers for problems with + quadratic objective functions. Infeasible problems are detected using using + a homogeneous embedding technique.""" + + homepage = "https://oxfordcontrol.github.io/clarabel-r/" + cran = "clarabel" + + license("Apache-2.0", checked_by="wdconinc") + + version("0.9.0", sha256="50963022f8e5dc9d956193acf7b87194548dc4b3555bd844aa1f9f4d34f2c6bc") + + depends_on("rust", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index 8516aabd74339f..a55127d71da348 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -16,6 +16,7 @@ class RClass(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-22", sha256="b6994164e93843fcc7e08dfdc8c8b4af6a5a10ef7153d2e72a6855342508d15c") version("7.3-21", sha256="0c19404aa4d2da61a62495e788b07c8e429c4c5ee64486ea5e6dd347bcaecddf") version("7.3-20", sha256="e65b046bc72b312ff0c5dc7feba4fa3e9bc63387274d44911493782b85f65483") version("7.3-19", sha256="7820ae94b22009561a69ed1f8b2ca2a3814be6a656e9884738206997caecbe37") diff --git a/var/spack/repos/builtin/packages/r-classint/package.py b/var/spack/repos/builtin/packages/r-classint/package.py index 5eec1170fb0079..ebc37fb90d13bf 100644 --- a/var/spack/repos/builtin/packages/r-classint/package.py +++ b/var/spack/repos/builtin/packages/r-classint/package.py @@ -14,6 +14,7 @@ class RClassint(RPackage): cran = "classInt" + version("0.4-10", sha256="c3561eafbc493ac02840191d4f1e4d2ef437ca8eb20f41fc5eca28f00ee42b8b") version("0.4-9", sha256="5b11af7d08f8793c7b47ee7c68b8e371cb23027165d30abddbd8b2abcc20e1c3") version("0.4-8", sha256="6ae9617f5b71bbecfa204a4f36b5972808bafd060d87a4a5bac17f3ad2ca59b3") version("0.4-3", sha256="9ede7a2a7a6b6c114919a3315a884fb592e33b037a50a4fe45cbd4fe2fc434ac") diff --git a/var/spack/repos/builtin/packages/r-cli/package.py b/var/spack/repos/builtin/packages/r-cli/package.py index ff4540746592ae..95dd64f635eea6 100644 --- a/var/spack/repos/builtin/packages/r-cli/package.py +++ b/var/spack/repos/builtin/packages/r-cli/package.py @@ -20,6 +20,7 @@ class RCli(RPackage): license("MIT") + version("3.6.3", sha256="4295085f11221c54b1dd2b1d39a675a85dfd9f900294297567e1d36f65ac4841") version("3.6.1", sha256="be3006cec7e67f9ae25e21b4658c4bec680038c2ef7467df5f14da3311a05e36") version("3.4.1", sha256="1c585efbfd8b8685c66fac34bcb60f28c351691bb4b9931df214e6e47fd9744e") version("3.3.0", sha256="c3a9ebbcb9017fb9aeda4f7df5ca981e42b169cbd7ce13e592cda2cd74250d63") @@ -34,7 +35,7 @@ class RCli(RPackage): version("1.0.0", sha256="8fa3dbfc954ca61b8510f767ede9e8a365dac2ef95fe87c715a0f37d721b5a1d") depends_on("r@2.10:", type=("build", "run")) - depends_on("r@3,4:", type=("build", "run"), when="@3.3.0:") + depends_on("r@3.4:", type=("build", "run"), when="@3.3.0:") depends_on("r-assertthat", type=("build", "run"), when="@:2.3") depends_on("r-crayon@1.3.4:", type=("build", "run"), when="@:2.2") diff --git a/var/spack/repos/builtin/packages/r-clock/package.py b/var/spack/repos/builtin/packages/r-clock/package.py index 89ddd6dd78c8f9..628d6fd076636d 100644 --- a/var/spack/repos/builtin/packages/r-clock/package.py +++ b/var/spack/repos/builtin/packages/r-clock/package.py @@ -20,10 +20,18 @@ class RClock(RPackage): license("MIT") + version("0.7.1", sha256="432d2fc39d3f20e348f09a9b6136a02a588db585bab428d184da71bf6aa1f0d8") version("0.6.1", sha256="f80c385fd8229538968ffb71d7de53ddc82bfcec6641f8e76f299546c43c1702") depends_on("r@3.4:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@0.7.1:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@0.7.0:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@0.7.0:") depends_on("r-rlang@1.0.4:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@0.7.0:") depends_on("r-tzdb@0.3.0:", type=("build", "run")) + depends_on("r-tzdb@0.4.0:", type=("build", "run"), when="@0.7.0:") depends_on("r-vctrs@0.4.1:", type=("build", "run")) + depends_on("r-vctrs@0.6.1:", type=("build", "run"), when="@0.7.0:") depends_on("r-cpp11@0.4.2:", type=("build", "run")) + depends_on("r-cpp11@0.4.3:", type=("build", "run"), when="@0.7.0:") diff --git a/var/spack/repos/builtin/packages/r-clue/package.py b/var/spack/repos/builtin/packages/r-clue/package.py index ded46e1b06dce7..a7dd171c0947b7 100644 --- a/var/spack/repos/builtin/packages/r-clue/package.py +++ b/var/spack/repos/builtin/packages/r-clue/package.py @@ -13,6 +13,7 @@ class RClue(RPackage): license("GPL-2.0-only") + version("0.3-65", sha256="bdf8fdd35fb2b1c65d09766da79d930fa664a00aa497f03b636400eecb623ef8") version("0.3-64", sha256="f45cb7a84c87ddca2b9f7c2ea9505016d002e6fda23322e6d57466c7a4de28af") version("0.3-62", sha256="575a3fa2c4aa1ae5c7e35f4462f2f331d291d87916aa12f0d11f61988d5e1ed2") version("0.3-61", sha256="71311b16ce380fd9a8834be95b55b3d1b47e4ee2b8acb35b8d481138c314dc31") diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index 096fb45278e77f..f1e39c92bf6c65 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -17,6 +17,7 @@ class RCluster(RPackage): license("GPL-2.0-or-later") + version("2.1.6", sha256="d1c50efafd35a55387cc5b36086b97d5591e0b33c48dc718005d2f5907113164") version("2.1.4", sha256="c6f10ceca29a176ba833f24ebf71fd451629052c2338398ba286df5689d6f5b6") version("2.1.3", sha256="a3ad7a9455d634c4e0c6ccf8ea7a3a392a0ecf9c2bdb368d127ffa68a93164a9") version("2.1.2", sha256="5c8aa760fb6dda4fcfe6196e561ffcd2dc12b1a6c7659cb90be2cde747311499") diff --git a/var/spack/repos/builtin/packages/r-clustergeneration/package.py b/var/spack/repos/builtin/packages/r-clustergeneration/package.py index 603effe4592e1f..7a15cdce707579 100644 --- a/var/spack/repos/builtin/packages/r-clustergeneration/package.py +++ b/var/spack/repos/builtin/packages/r-clustergeneration/package.py @@ -20,6 +20,7 @@ class RClustergeneration(RPackage): cran = "clusterGeneration" + version("1.3.8", sha256="0f842256582ab41bcd00ee08ea6d7e231ff362fe0156a53347873e9636f73a70") version("1.3.7", sha256="534f29d8f7ed11e6e9a496f15845b588ec7133f3da5e6def8140b88500e52d5c") version("1.3.4", sha256="7c591ad95a8a9d7fb0e4d5d80dfd78f7d6a63cf7d11eb53dd3c98fdfb5b868aa") diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index 4824988bbbc910..28d673c5b7bbcd 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -17,10 +17,11 @@ class RCoda(RPackage): license("GPL-2.0-or-later") + version("0.19-4.1", sha256="f4b451d86fbb56ff9ade043ddd6b0944368c37d0dad12d02837750ecdc708ad6") version("0.19-4", sha256="422d3cfd34797a3631e9c4812431940599c0ca4bb9937797bed07b7b1d6fe58f") version("0.19-3", sha256="d3df1fc848bcf1af8fae13d61eeab60e99a3d4b4db384bec4326f909f502c5d6") version("0.19-2", sha256="678a7e6a87a2723089daeb780ea37ac3d4319b37eabe26928ea3fa9c9b1eda0d") version("0.19-1", sha256="d41ff5731da6805170769dba75dd011ab33f916d15b2336001f279e21a524491") - depends_on("r@2.14:", type=("build", "run")) + depends_on("r@2.14.0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index a4c600538894b7..03c20803e6b947 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -13,6 +13,7 @@ class RCodetools(RPackage): license("GPL-2.0-or-later") + version("0.2-20", sha256="3be6f375ec178723ddfd559d1e8e85bfeee04a5fbaf9f53f2f844e1669fea863") version("0.2-19", sha256="c4b7e567c87f33dad85de92f79641e5e5b5deede6d19a9dfa47133d191782dab") version("0.2-18", sha256="1a9ea6b9792dbd1688078455929385acc3a5e4bef945c77bec1261fa4a084c28") version("0.2-16", sha256="c276757c3adabaf700f2ea25835892b09bc1bd438ebd17c805ea9073ed8a74b6") diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index 0ea41175c6c825..857799c03dd7a2 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -17,6 +17,7 @@ class RCoin(RPackage): license("GPL-2.0-only") + version("1.4-3", sha256="8a6302dbf3ef570cd9f69ce7b6cd3d3b928dc776f840bbd767af132e0080b974") version("1.4-2", sha256="7546d1f27a82d98b4b3e43e4659eba0f74a67d5919ce85d2fb360282ba3cfbb2") version("1.3-1", sha256="5de2519a6e2b059bba9d74c58085cccaff1aaaa0454586ed164a108ebd1b2062") version("1.3-0", sha256="adcebb37e0a7dfddbf8ec1e09c12a809bd76d90b5b8ff2b1048a75252ba11ef8") diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index b5d6797bda4ef3..f0c3b42f1c85f1 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -29,6 +29,7 @@ class RColorspace(RPackage): license("BSD-3-Clause") + version("2.1-1", sha256="e721cee5f4d6e4b0fc8eb18265e316b4f856fd3be02f0775a26032663758cd0b") version("2.1-0", sha256="04078abb6b54119c90dc7085d62916bf292ccb163e213f9ea70567d1be82614c") version("2.0-3", sha256="e75681cc4dd6e4b70303fd96a6d4597065dc6bffcaa4ae4244b73ff19016857f") version("2.0-2", sha256="b891cd2ec129ed5f116429345947bcaadc33969758a108521eb0cf36bd12183a") diff --git a/var/spack/repos/builtin/packages/r-commonmark/package.py b/var/spack/repos/builtin/packages/r-commonmark/package.py index e06c44e2ace496..63ca1a3691e1ee 100644 --- a/var/spack/repos/builtin/packages/r-commonmark/package.py +++ b/var/spack/repos/builtin/packages/r-commonmark/package.py @@ -20,6 +20,7 @@ class RCommonmark(RPackage): license("BSD-2-Clause") + version("1.9.1", sha256="9517a13f4ce4a99bb157493453b04419b222cb65a9471cd3b11e5045ac0db53b") version("1.9.0", sha256="6dd01a5a26c8d436486abf69c2f6ad0f8dd1c811f575c31983aeb4dbd376548f") version("1.8.1", sha256="96adcb093de3d2e48811af402da70e7222a313b97f1e979e0cbe84dd59bd5cbe") version("1.8.0", sha256="7d07e72937b1cf158e69f183722bf79dbb91b8967a9dd29f4fa145500c2be668") diff --git a/var/spack/repos/builtin/packages/r-compositions/package.py b/var/spack/repos/builtin/packages/r-compositions/package.py index 03906a4d14925f..435acef76ce519 100644 --- a/var/spack/repos/builtin/packages/r-compositions/package.py +++ b/var/spack/repos/builtin/packages/r-compositions/package.py @@ -17,6 +17,7 @@ class RCompositions(RPackage): license("GPL-2.0-or-later") + version("2.0-8", sha256="c5063488f456992b5821458b3237322addffd3451ae91f9474707886971ef290") version("2.0-6", sha256="45d374ebfdcc2c9f6cc738d196caf83a2297ed2aefe2cc99007fcbeb78a61c34") version("2.0-4", sha256="7b9c7a3bf654fb02d9eb1b4a7566469b2f5232f3b2c1b324c02239fd31060faf") version("2.0-1", sha256="84a291308faf858e5a9d9570135c2da5e57b0887f407903485fa85d09da61a0f") @@ -28,6 +29,6 @@ class RCompositions(RPackage): depends_on("r-tensora", type=("build", "run")) depends_on("r-robustbase", type=("build", "run")) depends_on("r-bayesm", type=("build", "run")) - depends_on("r-mass", type=("build", "run"), when="@2.0-1:") + depends_on("r-mass", type=("build", "run"), when="@2.0-0:") - depends_on("r-energy", type=("build", "run"), when="@:1.40-2") + depends_on("r-energy", type=("build", "run"), when="@:1.40-5") diff --git a/var/spack/repos/builtin/packages/r-consrank/package.py b/var/spack/repos/builtin/packages/r-consrank/package.py new file mode 100644 index 00000000000000..239fde3bd397ce --- /dev/null +++ b/var/spack/repos/builtin/packages/r-consrank/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class RConsrank(RPackage): + """Compute the median ranking according to the Kemeny's axiomatic approach.""" + + homepage = "https://www.r-project.org/" + cran = "ConsRank" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("2.1.4", sha256="c213c6008fcb617a2144d75b41b25520ffadcf38686cc5050e10ce1363ac3000") + + depends_on("r-rgl", type=("build", "run")) + depends_on("r-rlist@0.4.2:", type=("build", "run")) + depends_on("r-proxy", type=("build", "run")) + depends_on("r-gtools", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-construct/package.py b/var/spack/repos/builtin/packages/r-construct/package.py index 14f97e5aeaac70..3b81c3cdc7b86b 100644 --- a/var/spack/repos/builtin/packages/r-construct/package.py +++ b/var/spack/repos/builtin/packages/r-construct/package.py @@ -18,6 +18,7 @@ class RConstruct(RPackage): cran = "conStruct" + version("1.0.6", sha256="110982ed8036ccefb6bf662909779521e1b9095e9e0b5b99973df23171a5b502") version("1.0.5", sha256="4d953073bd1f374a91655b4889ab1b65d92a1c89ea39eb3dac5cd852a42b8a7c") version("1.0.4", sha256="4e585b718a361061bc1432cea46fc65f802fb0ef58e4516d33e1af99bbfe90ce") version("1.0.3", sha256="b449c133a944ad05a28f84f312ed4ccbc1574c4659aa09c678618d2ae9008310") @@ -26,12 +27,14 @@ class RConstruct(RPackage): depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-rcpp@0.12.0:", type=("build", "run")) depends_on("r-rstan@2.18.1:", type=("build", "run")) + depends_on("r-rstan@2.26.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-rstantools@1.5.0:", type=("build", "run")) depends_on("r-caroline", type=("build", "run")) depends_on("r-gtools", type=("build", "run")) depends_on("r-foreach", type=("build", "run")) depends_on("r-doparallel", type=("build", "run")) depends_on("r-stanheaders@2.18.0:", type=("build", "run")) + depends_on("r-stanheaders@2.26.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-bh@1.66.0:", type=("build", "run")) depends_on("r-rcppeigen@0.3.3.3.0:", type=("build", "run")) depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@1.0.5:") diff --git a/var/spack/repos/builtin/packages/r-convevol/package.py b/var/spack/repos/builtin/packages/r-convevol/package.py index 6dbcbc60cf8bb3..4f660abb02c5f2 100644 --- a/var/spack/repos/builtin/packages/r-convevol/package.py +++ b/var/spack/repos/builtin/packages/r-convevol/package.py @@ -18,6 +18,7 @@ class RConvevol(RPackage): license("GPL-2.0-only") + version("2.2.1", sha256="9b197d8735e61f78825ec2d81380b0f4352a3783c2c51254f4eb415ab45a9b48") version("2.0.0", sha256="690664b93c1f144a409e80b2ebfc20dc34f0eb9405607d15e066e8db573e84de") version("1.3", sha256="d6b24b9796a559f5280e277746189d141151ade4b14cc6b4c2d9d496d7f314ac") @@ -25,5 +26,7 @@ class RConvevol(RPackage): depends_on("r-ape", type=("build", "run")) depends_on("r-cluster", type=("build", "run")) depends_on("r-geiger", type=("build", "run")) - depends_on("r-mass", type=("build", "run")) + depends_on("r-magick", type=("build", "run"), when="@2.2.0:") depends_on("r-phytools", type=("build", "run")) + + depends_on("r-mass", type=("build", "run"), when="@:2.1") diff --git a/var/spack/repos/builtin/packages/r-copula/package.py b/var/spack/repos/builtin/packages/r-copula/package.py index 79f7bee3610390..c4ca7bbfcd9f71 100644 --- a/var/spack/repos/builtin/packages/r-copula/package.py +++ b/var/spack/repos/builtin/packages/r-copula/package.py @@ -26,6 +26,7 @@ class RCopula(RPackage): license("GPL-3.0-or-later OR custom") + version("1.1-4", sha256="f4d78b7f4860797620dfe15c62cbeeb319b2dbbacab75062652d467c4ef6504f") version("1.1-2", sha256="88f9454d25e4dcdf53d8ca5156daf48e664769f5e13b1e835ed64f37251587d3") version("1.1-0", sha256="9ab76e6256534db2a18d3880143b8c67e385767010de861bbde25212aa75d924") version("1.0-1", sha256="d09b2ccffc7379e48b00952aa6b282baf502feebaf55cc44e93f881d7b909742") diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index dd132968c1ab4d..8313ed99b37ff4 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -17,6 +17,7 @@ class RCorrplot(RPackage): license("MIT") + version("0.94", sha256="8e855daf7392dfec8dab7da2845b6d01e24030837a66ce7d8d4673eb0a7e55f4") version("0.92", sha256="e8c09f963f9c4837036c439ebfe00fa3a6e462ccbb786d2cf90850ddcd9428bd") version("0.84", sha256="0dce5e628ead9045580a191f60c58fd7c75b4bbfaaa3307678fc9ed550c303cc") version("0.77", sha256="54b66ff995eaf2eee3f3002509c6f27bb5bd970b0abde41893ed9387e93828d3") diff --git a/var/spack/repos/builtin/packages/r-countrycode/package.py b/var/spack/repos/builtin/packages/r-countrycode/package.py index f0a9746bc72f6d..e6fe87390dc26e 100644 --- a/var/spack/repos/builtin/packages/r-countrycode/package.py +++ b/var/spack/repos/builtin/packages/r-countrycode/package.py @@ -16,6 +16,7 @@ class RCountrycode(RPackage): license("GPL-3.0-only") + version("1.6.0", sha256="f9db110e32c0bcc90eed85303277660de37a777681bb78e8898b6fc5f2253db6") version("1.4.0", sha256="99dfe7652c1e631b9e0f8fac0b0163e7a3fdde8476498555d553e0d1c5fdccc4") version("1.3.0", sha256="34361416e771ece1d56dc56f79416c8b7f9591885773becae270684d095bc70f") version("1.2.0", sha256="32c65702dcc33d512ff99f14c12f4e0c48fe7ed7c8aa2f0a64194576d129dd40") diff --git a/var/spack/repos/builtin/packages/r-covr/package.py b/var/spack/repos/builtin/packages/r-covr/package.py index 70d3c8adc89a3c..b989c17a9f81b8 100644 --- a/var/spack/repos/builtin/packages/r-covr/package.py +++ b/var/spack/repos/builtin/packages/r-covr/package.py @@ -21,6 +21,7 @@ class RCovr(RPackage): license("MIT") + version("3.6.4", sha256="2b6204036510c629d0b1d58daaee34d4e38baf54164f8d4c9afd6d6b1fb1862a") version("3.6.2", sha256="ace68ce7516147b4d77f591a498cbd7b2803062c1b47252e7a35081af0ea485b") version("3.6.1", sha256="ffbe15438c1a4f274c14cacfb944480e284f1ab60808d5e840c015cc57c51157") version("3.5.1", sha256="a54cfc3623ea56084158ac5d7fe33f216f45191f6dcddab9c9ed4ec1d9d8ac6c") diff --git a/var/spack/repos/builtin/packages/r-cowplot/package.py b/var/spack/repos/builtin/packages/r-cowplot/package.py index a70068b2f3d8c6..3666e21891ece6 100644 --- a/var/spack/repos/builtin/packages/r-cowplot/package.py +++ b/var/spack/repos/builtin/packages/r-cowplot/package.py @@ -21,6 +21,7 @@ class RCowplot(RPackage): license("GPL-2.0-only") + version("1.1.3", sha256="8756971af5c50381cf00ec7ed622fd5cf3d70f534bdfa3ebadd157b5aef5b273") version("1.1.1", sha256="c7dce625b456dffc59ba100c816e16226048d12fdd29a7335dc1f6f6e12eed48") version("1.0.0", sha256="70f9a7c46d10f409d1599f1afc9fd3c947051cf2b430f01d903c64ef1e6c98a5") version("0.9.3", sha256="3e10475fd7506ea9297ed72eb1a3acf858c6fa99d26e46fc39654eba000c3dcb") @@ -33,6 +34,7 @@ class RCowplot(RPackage): depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-ggplot2@2.1.1:", type=("build", "run")) depends_on("r-ggplot2@2.2.1:", type=("build", "run"), when="@1.1.1:") + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@1.1.2:") depends_on("r-gtable", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.0.0:") depends_on("r-scales", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cpp11/package.py b/var/spack/repos/builtin/packages/r-cpp11/package.py index 4a36d4ce113448..5bbad8485e760f 100644 --- a/var/spack/repos/builtin/packages/r-cpp11/package.py +++ b/var/spack/repos/builtin/packages/r-cpp11/package.py @@ -18,7 +18,10 @@ class RCpp11(RPackage): license("MIT") + version("0.4.7", sha256="801d1266824c3972642bce2db2a5fd0528a65ec845c58eb5a886edf082264344") version("0.4.3", sha256="f1a60e4971a86dbbcf6a16bbd739b59bb66d9c45d93cfd8dedc2a87e302598f1") version("0.4.2", sha256="403ce0bf82358d237176053b0fb1e958cb6bfa4d0fb3555bf5801db6a6939b99") version("0.4.0", sha256="1768fd07dc30dfbbf8f3fb1a1183947cb7e1dfd909165c4d612a63c163a41e87") version("0.2.5", sha256="6fef9306c0c3043252c987e77c99ef679b2ea46dffafae318dbeb38ad21a2e20") + + depends_on("r@3.5.0:", when="@0.4.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index 23db2f98c1a514..087de49d926ef8 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -19,6 +19,7 @@ class RCrayon(RPackage): license("MIT") + version("1.5.3", sha256="3e74a0685541efb5ea763b92cfd5c859df71c46b0605967a0b5dbb7326e9da69") version("1.5.2", sha256="70a9a505b5b3c0ee6682ad8b965e28b7e24d9f942160d0a2bad18eec22b45a7a") version("1.5.1", sha256="c025c73b78a8e88e8e4363c8e1a941da5089a7baea39e59ea5342ab9ebe45df9") version("1.4.2", sha256="ee34397f643e76e30588068d4c93bd3c9afd2193deacccacb3bffcadf141b857") diff --git a/var/spack/repos/builtin/packages/r-credentials/package.py b/var/spack/repos/builtin/packages/r-credentials/package.py index 8ac8114ba6a88c..42f4e0ea427aa2 100644 --- a/var/spack/repos/builtin/packages/r-credentials/package.py +++ b/var/spack/repos/builtin/packages/r-credentials/package.py @@ -21,6 +21,7 @@ class RCredentials(RPackage): license("MIT") + version("2.0.1", sha256="2c7cfc45bd4afa9a2c2b85d43e907b212da3468781e1b617737bd095253c358b") version("1.3.2", sha256="2ffa7c11bedbfa034adf553d0a2f2e4f6a496b858af753a09a89219cff9028b8") version("1.3.0", sha256="c119ec26fd97b977c3b0cd1eb8fad3c59b84df6262c3adbf5ee9f3d6c9903ff1") diff --git a/var/spack/repos/builtin/packages/r-crosstalk/package.py b/var/spack/repos/builtin/packages/r-crosstalk/package.py index 1009261d8ce7d9..352064eb784a87 100644 --- a/var/spack/repos/builtin/packages/r-crosstalk/package.py +++ b/var/spack/repos/builtin/packages/r-crosstalk/package.py @@ -17,6 +17,7 @@ class RCrosstalk(RPackage): license("MIT") + version("1.2.1", sha256="680cf08416d6d5a1194dd85ee5695c268af9d4d01b201448e1d486c6e06014f1") version("1.2.0", sha256="4237baab35cd246a8a98fb9cf4ce53b6ddbc31d00742ded4edea0479613d1ea0") version("1.1.0.1", sha256="36a70b10bc11826e314c05f9579fd791b9ac3b3a2cfed4d4ca74ce1ad991300e") version("1.0.0", sha256="b31eada24cac26f24c9763d9a8cbe0adfd87b264cf57f8725027fe0c7742ca51") diff --git a/var/spack/repos/builtin/packages/r-crul/package.py b/var/spack/repos/builtin/packages/r-crul/package.py index c7e94bb9af06da..ac399ca1e4713e 100644 --- a/var/spack/repos/builtin/packages/r-crul/package.py +++ b/var/spack/repos/builtin/packages/r-crul/package.py @@ -20,6 +20,7 @@ class RCrul(RPackage): license("MIT") + version("1.5.0", sha256="db733778d2815f9d974b00e8df7c821cd638e069e08d73adfa606add201ebd9d") version("1.3", sha256="8058617d8b3724acb5b89d0e6e63f381df5c56565128b250a65eceb2b8081e2d") version("1.2.0", sha256="be1a149b21cf219ef55adfb56a6a5eb9892a9acf0d5f5421a22e52f2a7066f8c") version("1.0.0", sha256="2ade500f6cf89b2d0ca8496b8d4df9937d6f802a35c9ad10d9fab8632cdb1027") diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 23a01172eb0065..d00dfb9d66a437 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -20,6 +20,7 @@ class RCubature(RPackage): license("GPL-3.0-only") + version("2.1.1", sha256="b37220e733f4e610e089e69896f66dc5bc461478a040321c19600ec5d07ea684") version("2.0.4.6", sha256="330c9dc2be9bf6815473fd40efa8c2de47c1ed286cb097d0ff846b56c9e9f95a") version("2.0.4.5", sha256="a81f118e5b7950a4a29e5509f8a40d7b87544fb25783917242000561379c9023") version("2.0.4.4", sha256="087b3b2c4f25d873fa95e9d38766a17a7201d03a6f4960f1e080a8db8b67d569") diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index 1a753e92853b01..5467bc8701a8e1 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -13,6 +13,7 @@ class RCubist(RPackage): cran = "Cubist" + version("0.4.4", sha256="51d5fff104b69de75e08a3e14eaf67ff13ffda5be4b60f79236793475c241590") version("0.4.2.1", sha256="f07afed59019a3febc04acc3e58728e42b42910940a1d529f9fc482931d09157") version("0.4.0", sha256="3a1f74d44300e3a38a10e3693fc019cfcca221d62d7c416abebb20811e965578") version("0.3.0", sha256="88a76e7f858a8e978a73a97ce6a3504201d889517b39ce862cef734dcf9eb263") diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 20b768c144e07b..c9a7978dd28100 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -23,6 +23,7 @@ class RCurl(RPackage): license("MIT") + version("5.2.1", sha256="4a7a4d8c08aa1bca2fcd9c58ade7b4b0ea2ed9076d0521071be29baac8adfa90") version("5.0.0", sha256="d7f3cac9b513914ffa8f6f64e6fa5dd96c8273378ace6b0c16b71bc6ba59c9b2") version("4.3.3", sha256="3567b6acad40dad68acfe07511c853824839d451a50219a96dd6d125ed617c9e") version("4.3.2", sha256="90b1facb4be8b6315bb3d272ba2dd90b88973f6ea1ab7f439550230f8500a568") diff --git a/var/spack/repos/builtin/packages/r-cvxr/package.py b/var/spack/repos/builtin/packages/r-cvxr/package.py index 20ace982f7755c..d12dc088cf45ed 100644 --- a/var/spack/repos/builtin/packages/r-cvxr/package.py +++ b/var/spack/repos/builtin/packages/r-cvxr/package.py @@ -22,13 +22,15 @@ class RCvxr(RPackage): license("Apache-2.0") + version("1.0-14", sha256="4d027cc2b933720ded4edcc098fde1259992673825abdb109fd84fee4af57cdb") version("1.0-11", sha256="e92a9638f35f4909e2a29c3b7106081e3dae7ff88b14bb6466b87fbdc80b972a") depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpp@0.12.12:", type=("build", "run")) depends_on("r-bit64", type=("build", "run")) + depends_on("r-clarabel@0.9.0:", type=("build", "run"), when="@1.0-14:") depends_on("r-gmp", type=("build", "run")) depends_on("r-rmpfr", type=("build", "run")) depends_on("r-ecosolver@0.5.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index 425c739112781e..c80fffb70863d6 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -18,6 +18,7 @@ class RDataTable(RPackage): license("MPL-2.0-no-copyleft-exception") + version("1.15.4", sha256="ab8065ff946d59ecaaf5eaf91a975495c07c30caad97a71205c72e41a740cb53") version("1.14.8", sha256="14b2ce5367df9c9bb58f373555066f5dcb629c156149b5565de36d69557139fd") version("1.14.4", sha256="4862a7c26e8309108fd1f5296616407b9ff9e4e1be5cdedcb717f114c2e348f0") version("1.14.2", sha256="f741b951e5937440139514aedbae78dbd6862d825066848bdb006aa02c2f3d2b") diff --git a/var/spack/repos/builtin/packages/r-dbi/package.py b/var/spack/repos/builtin/packages/r-dbi/package.py index bab7446c766bc7..1eafed4f136ba7 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -15,6 +15,7 @@ class RDbi(RPackage): cran = "DBI" + version("1.2.3", sha256="cf6708a7566a80929f06575aa345fae354714159ed5fab5db14306fc5d0d2dbe") version("1.1.3", sha256="38bb33753da5bddb78893a5228a5d269dae3bf16f21dc5d9853ac9c24d31428d") version("1.1.2", sha256="56ec377d471c76ac234ddfd313bd01a050c99fb6fa5f704f5333b34a5d714f58") version("1.1.1", sha256="572ab3b8a6421d0ac3e7665c4c842826f1723af98fca25d4f43edb419e771344") diff --git a/var/spack/repos/builtin/packages/r-dbplyr/package.py b/var/spack/repos/builtin/packages/r-dbplyr/package.py index 5841bc5e46143a..566669b469d76d 100644 --- a/var/spack/repos/builtin/packages/r-dbplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dbplyr/package.py @@ -18,6 +18,7 @@ class RDbplyr(RPackage): license("MIT") + version("2.5.0", sha256="bb475bdbe89487b189ecc257b5c92007a7458803c81aa77bfc4ed46f5f24bcff") version("2.3.2", sha256="0ddc00595ec6b21962d0bb6f470f5f7c9d61c74a4f92681a37e94e1295707fac") version("2.2.1", sha256="a6f3f644c068fe1a3b3e99a3a10de55a150d43ef20b5130e6724d142afcb0df7") version("2.1.1", sha256="aba4cf47b85ab240fd3ec4cd8d512f6e1958201e151577c1a2ebc3d6ebc5bc08") @@ -30,34 +31,45 @@ class RDbplyr(RPackage): version("1.1.0", sha256="7b1e456a2d1056fa6284582cd82d2df66d06b3eea92e9995f5a91a45f246f69d") depends_on("r@3.1:", type=("build", "run")) + depends_on("r@3.6:", type=("build", "run"), when="@2.4.0:") depends_on("r-blob@1.2.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@2.2.1:") depends_on("r-cli@3.4.1:", type=("build", "run"), when="@2.3.2:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-dbi@1.0.0:", type=("build", "run")) + depends_on("r-dbi@1.1.3:", type=("build", "run"), when="@2.4.0:") depends_on("r-dplyr@0.8.0:", type=("build", "run")) depends_on("r-dplyr@1.0.3:", type=("build", "run"), when="@2.1.0") depends_on("r-dplyr@1.0.4:", type=("build", "run"), when="@2.1.1:") depends_on("r-dplyr@1.0.9:", type=("build", "run"), when="@2.2.1:") depends_on("r-dplyr@1.1.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-dplyr@1.1.2:", type=("build", "run"), when="@2.4.0:") depends_on("r-glue@1.2.0:", type=("build", "run")) + depends_on("r-glue@1.6.2:", type=("build", "run"), when="@2.4.0:") depends_on("r-lifecycle", type=("build", "run"), when="@2.0.0:") depends_on("r-lifecycle@1.0.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@2.3.2:") depends_on("r-magrittr", type=("build", "run"), when="@2.0.0:") depends_on("r-pillar@1.5.0:", type=("build", "run"), when="@2.2.1:") + depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@2.4.0:") depends_on("r-purrr@0.2.5:", type=("build", "run")) depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@2.3.2:") depends_on("r-r6@2.2.2:", type=("build", "run")) depends_on("r-rlang@0.2.0:", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.2.1:") depends_on("r-rlang@1.0.6:", type=("build", "run"), when="@2.3.2:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-tibble@1.4.2:", type=("build", "run")) + depends_on("r-tibble@3.2.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-tidyr@1.3.0:", type=("build", "run"), when="@2.3.2:") depends_on("r-tidyselect@0.2.4:", type=("build", "run")) depends_on("r-tidyselect@1.2.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-tidyselect@1.2.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-vctrs", type=("build", "run"), when="@2.1:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@2.2.1:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@2.4.0:") depends_on("r-withr", type=("build", "run"), when="@2.0.0:") + depends_on("r-withr@2.5.0:", type=("build", "run"), when="@2.4.0:") depends_on("r-ellipsis", type=("build", "run"), when="@2.1.1") depends_on("r-assertthat", type=("build", "run"), when="@:2.2.1") diff --git a/var/spack/repos/builtin/packages/r-debugme/package.py b/var/spack/repos/builtin/packages/r-debugme/package.py index d17b8edc7477a6..f74474f44401b3 100644 --- a/var/spack/repos/builtin/packages/r-debugme/package.py +++ b/var/spack/repos/builtin/packages/r-debugme/package.py @@ -16,6 +16,8 @@ class RDebugme(RPackage): license("MIT") + version("1.2.0", sha256="b22605ad3b20d460308d8c9c18116e56c4d6ff10577608eaf58802998171f099") version("1.1.0", sha256="4dae0e2450d6689a6eab560e36f8a7c63853abbab64994028220b8fd4b793ab1") + depends_on("r@3.6:", type=("build", "run"), when="@1.2.0:") depends_on("r-crayon", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index 4bc422d960cefa..32d433d942d9b0 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -19,6 +19,7 @@ class RDeldir(RPackage): license("GPL-2.0-or-later") + version("2.0-4", sha256="d418acb28ec3707b6d64c7466d0cefbb49b098537f37558d8f7a5befd34a4653") version("1.0-6", sha256="6df6d8325c607e0b7d63cbc53c29e774eff95ad4acf9c7ec8f70693b0505f8c5") version("0.2-3", sha256="2d24800f5ec6ad9dc57b9b265365b29c07717f4562d8f3e6344336d3340c364e") version("0.1-23", sha256="e0112bce9fc94daf73596a0fff9b3958b80872e3bbb487be73e157b13a6f201d") diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py index d2de5443815614..8fcfa4dfa7a701 100644 --- a/var/spack/repos/builtin/packages/r-deoptimr/package.py +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -19,6 +19,7 @@ class RDeoptimr(RPackage): cran = "DEoptimR" + version("1.1-3", sha256="8dd8a61b07b02022493d7021dc62ef2c4dc2d596cff897846713c5f8dd784694") version("1.0-12", sha256="6136f98031bceaa691c5725222eca2d0f750a7b7fb60216480633635a9613d79") version("1.0-11", sha256="1874b30f4b75f9bfa891986598f1ebe1fce27fdced14f8f417d3535cac08165b") version("1.0-10", sha256="774f7ba0ac9c73aaab4567024b98afdb58098905726e72bceeeb9e380e782ad5") diff --git a/var/spack/repos/builtin/packages/r-desc/package.py b/var/spack/repos/builtin/packages/r-desc/package.py index 2fb79bce33298f..c56459871e19b8 100644 --- a/var/spack/repos/builtin/packages/r-desc/package.py +++ b/var/spack/repos/builtin/packages/r-desc/package.py @@ -16,6 +16,7 @@ class RDesc(RPackage): license("MIT") + version("1.4.3", sha256="54468da73dd78fc9e7c565c41cfe3331802c2134b2e61a9ad197215317092f26") version("1.4.2", sha256="758acf14be478c09ba7e84ade3a7ce512becf35d44e5e6a997b932065f2a227c") version("1.4.1", sha256="8f9ebb51eccf925b2e76bc65ecf495e8f3882b8c0053023f396622f0402d6f54") version("1.4.0", sha256="8220e4c706449b8121b822e70b1414f391ef419aed574836a234c63b83e5d649") @@ -25,7 +26,7 @@ class RDesc(RPackage): depends_on("r@3.4:", type=("build", "run"), when="@1.4.1:") depends_on("r-cli", type=("build", "run"), when="@1.4.1:") depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) + depends_on("r-rprojroot", type=("build", "run"), when="@:1.4.2") depends_on("r-assertthat", type=("build", "run"), when="@:1.2") depends_on("r-crayon", type=("build", "run"), when="@:1.4.0") diff --git a/var/spack/repos/builtin/packages/r-desolve/package.py b/var/spack/repos/builtin/packages/r-desolve/package.py index 45407eb75ae902..2b64e6e85b1f13 100644 --- a/var/spack/repos/builtin/packages/r-desolve/package.py +++ b/var/spack/repos/builtin/packages/r-desolve/package.py @@ -23,6 +23,7 @@ class RDesolve(RPackage): cran = "deSolve" + version("1.40", sha256="8c09ae6bb6875b569b9844eede30b790f39fc227f5c9d045fa63ce1b22f500ef") version("1.35", sha256="96f17f497713754f84ff56c3538c6d05b9f5229f9a2a32aafec7d7cdc721d488") version("1.34", sha256="2254305f44dde22ac685fef4c60e29a0608af0197c803107365d1d80b75c9f21") version("1.33", sha256="71de979e05ce7e472308ac5218e97efe976051364ba579b10940dc1fe4c8b684") diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index 4e71673b051285..76de9e965df287 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -18,6 +18,7 @@ class RDiagrammer(RPackage): cran = "DiagrammeR" + version("1.0.11", sha256="e873e3d6e198232408161661001ddcb04c9a56065bb4703c925e538462f4c4df") version("1.0.9", sha256="64a426fe27110dddd8b0c1223ae4c397a2e553ae5e81ddd4ff67c026cfc40abf") version("1.0.8", sha256="b9157b26215edda4fe0a1b9330a597d5b01a5d7e660a9832f593b87c584dd233") version("1.0.7", sha256="6af291a7136657b9f7c67b96cd7f3afe99662cf5a477ebbb213a6c53df623050") @@ -28,10 +29,10 @@ class RDiagrammer(RPackage): depends_on("r@3.2.0:", type=("build", "run"), when="@0.9.2:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.7") + depends_on("r-cli", type=("build", "run"), when="@1.0.11:") depends_on("r-dplyr@0.7.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-dplyr@0.7.6:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-dplyr@1.0.7:", type=("build", "run"), when="@1.0.7:") - depends_on("r-downloader@0.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue@1.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue@1.3.0:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-glue@1.5.0:", type=("build", "run"), when="@1.0.7:") @@ -43,8 +44,7 @@ class RDiagrammer(RPackage): depends_on("r-igraph@1.1.2:", type=("build", "run")) depends_on("r-igraph@1.2.2:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-igraph@1.2.11:", type=("build", "run"), when="@1.0.7:") - depends_on("r-influencer@0.1.0:", type=("build", "run")) - depends_on("r-influencer@0.1.0.1:", type=("build", "run"), when="@1.0.7:") + depends_on("r-igraph@1.4.0:", type=("build", "run"), when="@1.0.11:") depends_on("r-magrittr@1.5:", type=("build", "run"), when="@1.0.0:") depends_on("r-purrr@0.2.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-purrr@0.2.5:", type=("build", "run"), when="@1.0.6.1:") @@ -55,6 +55,7 @@ class RDiagrammer(RPackage): depends_on("r-rlang@0.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rlang@0.2.2:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-rlang@0.4:", type=("build", "run"), when="@1.0.7:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.11:") depends_on("r-rstudioapi@0.7:", type=("build", "run")) depends_on("r-scales@0.5.0:", type=("build", "run")) depends_on("r-scales@1.0.0:", type=("build", "run"), when="@1.0.6.1:") @@ -67,11 +68,15 @@ class RDiagrammer(RPackage): depends_on("r-tidyr@0.8.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-tidyr@0.8.1:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-tidyr@1.1:", type=("build", "run"), when="@1.0.7:") - depends_on("r-viridis@0.5.0:", type=("build", "run"), when="@1.0.0:") - depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@1.0.6.1:") - depends_on("r-viridis@0.6.2:", type=("build", "run"), when="@1.0.7:") + depends_on("r-viridislite@0.4.2:", type=("build", "run"), when="@1.0.11:") depends_on("r-visnetwork@2.0.3:", type=("build", "run")) depends_on("r-visnetwork@2.0.4:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-visnetwork@2.1.0:", type=("build", "run"), when="@1.0.7:") + depends_on("r-downloader@0.4:", type=("build", "run"), when="@1.0.0:1.0.10") + depends_on("r-influencer@0.1.0:", type=("build", "run"), when="@:1.0.9") + depends_on("r-influencer@0.1.0.1:", type=("build", "run"), when="@1.0.7:1.0.9") + depends_on("r-viridis@0.5.0:", type=("build", "run"), when="@1.0.0:1.0.10") + depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@1.0.6.1:1.0.10") + depends_on("r-viridis@0.6.2:", type=("build", "run"), when="@1.0.7:1.0.10") depends_on("r-rgexf@0.15.3:", type=("build", "run"), when="@1.0.0:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 48150288b8933d..e41ec4e9dfd3d0 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -30,6 +30,7 @@ class RDigest(RPackage): license("GPL-2.0-or-later") + version("0.6.37", sha256="82c4d149994b8a4a9af930f5a8e47420829935abed41f3f9030e94b6a48f0321") version("0.6.31", sha256="5a284f490eaca6750f695f00a584cfca3f180ca1046ac1107202141149d431b9") version("0.6.30", sha256="7b8059943be7dba6053268dfcc229de1bb0b55db497b2943541a6abace076aa7") version("0.6.29", sha256="792c1f14a4c8047745152f5e45ce7351978af8d770c29d2ea39c7acd5d619cd9") diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index c862c0b74dbd63..30f2f17795fbeb 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -17,5 +17,6 @@ class RDiptest(RPackage): license("GPL-2.0-or-later") + version("0.77-1", sha256="224eae00f483ce0fb131719065667227417cc98ad2beda55bfd5efe2bb612813") version("0.76-0", sha256="508a5ebb161519cd0fcd156dc047b51becb216d545d62c6522496463f94ec280") version("0.75-7", sha256="462900100ca598ef21dbe566bf1ab2ce7c49cdeab6b7a600a50489b05f61b61b") diff --git a/var/spack/repos/builtin/packages/r-dismo/package.py b/var/spack/repos/builtin/packages/r-dismo/package.py index 93aedbad8f5705..0e2778904d45d0 100644 --- a/var/spack/repos/builtin/packages/r-dismo/package.py +++ b/var/spack/repos/builtin/packages/r-dismo/package.py @@ -17,6 +17,7 @@ class RDismo(RPackage): license("GPL-3.0-or-later") + version("1.3-14", sha256="67a0f2e95562dd2aa612d52dfffab86985b52591a5ed7891b58b26667b394cd7") version("1.3-9", sha256="3924521db67716b004a4c870985c65d037edfe926b14222740fd6c2b2093beee") version("1.3-5", sha256="812e1932d42c0f40acf2ab5c5b2d068f93128caf648626e1d11baf1a09340ee7") version("1.3-3", sha256="fd65331ac18a4287ba0856b90508ddd0e2738c653eecc5f3eb2b14e1d06949ca") diff --git a/var/spack/repos/builtin/packages/r-distributional/package.py b/var/spack/repos/builtin/packages/r-distributional/package.py index 524f21bd63874b..7daba35a5cbb47 100644 --- a/var/spack/repos/builtin/packages/r-distributional/package.py +++ b/var/spack/repos/builtin/packages/r-distributional/package.py @@ -21,6 +21,7 @@ class RDistributional(RPackage): license("GPL-3.0-only") + version("0.4.0", sha256="09b5f3279bed4c79575f75d5f7f5e3e593c7838434a78c89f0b7184e8f20e602") version("0.3.2", sha256="c883d633398233aee5a8ca6b587687f765bdfe0732a84e4961e7f71ac0d008f8") version("0.3.1", sha256="727e56cbcf0c8a8adacca8030214ddbd14f68ee28d0aad716467bd68b027235f") version("0.3.0", sha256="fab36c7346617d8f2ca4b3cd0e3c9da93cb2f95fb7f102a3ae88670e694751d6") @@ -30,9 +31,10 @@ class RDistributional(RPackage): depends_on("r-rlang@0.4.5:", type=("build", "run")) depends_on("r-generics", type=("build", "run")) depends_on("r-numderiv", type=("build", "run")) - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-scales", type=("build", "run")) - depends_on("r-farver", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run")) + + depends_on("r-ggplot2", type=("build", "run"), when="@:0.3.2") + depends_on("r-scales", type=("build", "run"), when="@:0.3.2") + depends_on("r-farver", type=("build", "run"), when="@:0.3.2") + depends_on("r-digest", type=("build", "run"), when="@:0.3.2") depends_on("r-ellipsis", type=("build", "run"), when="@:0.3.0") diff --git a/var/spack/repos/builtin/packages/r-diversitree/package.py b/var/spack/repos/builtin/packages/r-diversitree/package.py index 4b3d646833192c..9960ba3b24c41f 100644 --- a/var/spack/repos/builtin/packages/r-diversitree/package.py +++ b/var/spack/repos/builtin/packages/r-diversitree/package.py @@ -21,6 +21,7 @@ class RDiversitree(RPackage): license("GPL-2.0-or-later") + version("0.10-0", sha256="c13627e04bc55b61de218a6bf6fa44680970604f82eed88417d1de5717d782f6") version("0.9-16", sha256="4c236970b58e56b922352f3f5d97010c74d8ec5783b375c311fe11abfb99f967") version("0.9-15", sha256="c739ef3d4fcc24fd6855b1d297d31e0f89fbaff1efe8a2d149044458ecd363ea") version("0.9-11", sha256="4caa6a468f93de9f1c8c30e4457f34bb8346e1acdaf74f684005bfa86a950ecb") diff --git a/var/spack/repos/builtin/packages/r-doby/package.py b/var/spack/repos/builtin/packages/r-doby/package.py index 8c7015b84464a4..9f989aca41cd1f 100644 --- a/var/spack/repos/builtin/packages/r-doby/package.py +++ b/var/spack/repos/builtin/packages/r-doby/package.py @@ -16,16 +16,25 @@ class RDoby(RPackage): cran = "doBy" + version("4.6.22", sha256="2aa7e236de98af73de54a46214ceac50fdf69d90b12bb37f2779a501f40b0b0d") version("4.6.16", sha256="d5937eb57d293b0bc2e581ff2e1e628671cb4eacddc0b9574dc28a5316ecbbe7") depends_on("r@3.6.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@4.6.18:") + depends_on("r@4.2.0:", type=("build", "run"), when="@4.6.21:") + depends_on("r-boot", type=("build", "run"), when="@4.6.21:") depends_on("r-broom", type=("build", "run")) + depends_on("r-cowplot", type=("build", "run"), when="@4.6.21:") depends_on("r-deriv", type=("build", "run")) depends_on("r-dplyr", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) depends_on("r-mass", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) depends_on("r-microbenchmark", type=("build", "run")) - depends_on("r-pbkrtest@0.4-8.1:", type=("build", "run")) + depends_on("r-modelr", type=("build", "run"), when="@4.6.21:") + depends_on("r-rlang", type=("build", "run"), when="@4.6.21:") depends_on("r-tibble", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run"), when="@4.6.21:") + + depends_on("r-magrittr", type=("build", "run"), when="@:4.6.20") + depends_on("r-pbkrtest@0.4-8.1:", type=("build", "run"), when="@:4.6.21") diff --git a/var/spack/repos/builtin/packages/r-dotcall64/package.py b/var/spack/repos/builtin/packages/r-dotcall64/package.py index 5c78fcd8358243..7a7a3864f9f14f 100644 --- a/var/spack/repos/builtin/packages/r-dotcall64/package.py +++ b/var/spack/repos/builtin/packages/r-dotcall64/package.py @@ -18,6 +18,7 @@ class RDotcall64(RPackage): cran = "dotCall64" + version("1.1-1", sha256="21b8d7d747c07aaf8a82d61ec98fe0539afcaa5a565d9c2fc55be65b6af2c91b") version("1.0-2", sha256="e0c7728aebbea5ebf06dfeefae4fc0a240e6dde7c2bf13f2ed041b91d337a4ac") version("1.0-1", sha256="f10b28fcffb9453b1d8888a72c8fd2112038b5ac33e02a481492c7bd249aa5c6") version("1.0-0", sha256="69318dc6b8aecc54d4f789c8105e672198363b395f1a764ebaeb54c0473d17ad") diff --git a/var/spack/repos/builtin/packages/r-downlit/package.py b/var/spack/repos/builtin/packages/r-downlit/package.py index 5a2e92028e3ebc..a6930c886134dd 100644 --- a/var/spack/repos/builtin/packages/r-downlit/package.py +++ b/var/spack/repos/builtin/packages/r-downlit/package.py @@ -18,9 +18,11 @@ class RDownlit(RPackage): license("MIT") + version("0.4.4", sha256="55c377dcee4adc48c1060e14079f3d1832453d066a2cf070530caa210c48f828") version("0.4.2", sha256="33dff66909104d1a5ba8e57b1288986e82b61fd5e91dce0cd358d53724b37e3c") depends_on("r@3.4.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.4.4:") depends_on("r-brio", type=("build", "run")) depends_on("r-desc", type=("build", "run")) depends_on("r-digest", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index edd2e01091e8c2..85d7aff1f78b78 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -16,6 +16,7 @@ class RDplyr(RPackage): license("MIT") + version("1.1.4", sha256="cf730414d5d4ab387b4e9890a4b1df9d17a3903488e8da8df1cf2e11e44558cb") version("1.1.2", sha256="c220c38a3a44977c43eeae3d9aef90e8bb297150cad0993ea8d3cc13150096e3") version("1.0.10", sha256="3ab639f627b4e439052df18f193f0ccab223225a4ae2ff8c18aba4f9807e0f2b") version("1.0.9", sha256="e2e1f7312618b4e32ada9a1da79cef32eaec12acd408c973a6b069c6be4fb46b") @@ -63,6 +64,7 @@ class RDplyr(RPackage): depends_on("r-vctrs@0.3.5:", type=("build", "run"), when="@1.0.3:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.0.9:") depends_on("r-vctrs@0.6.0:", type=("build", "run"), when="@1.1.2:") + depends_on("r-vctrs@0.6.4:", type=("build", "run"), when="@1.1.4:") depends_on("r-pillar@1.5.1:", type=("build", "run"), when="@1.0.6:") depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@1.1.2:") diff --git a/var/spack/repos/builtin/packages/r-dqrng/package.py b/var/spack/repos/builtin/packages/r-dqrng/package.py index 51a7793a1b342a..f85215b4c79aa9 100644 --- a/var/spack/repos/builtin/packages/r-dqrng/package.py +++ b/var/spack/repos/builtin/packages/r-dqrng/package.py @@ -26,10 +26,12 @@ class RDqrng(RPackage): license("AGPL-3.0-only OR custom") + version("0.4.1", sha256="3d9df935020c3c2538bc712456079925c4b379d67407c83fbc008340e353288f") version("0.3.0", sha256="4beeabfe245ce7196b07369f2a7d277cb08869ad8b45a22c6354c4cc70a39abb") version("0.2.1", sha256="e149c105b1db31e7f46b1aebf31d911a109e380923f3696fc56a53197fc1e866") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.3.1:") depends_on("r-rcpp@0.12.16:", type=("build", "run")) depends_on("r-bh@1.64.0-1:", type=("build", "run")) depends_on("r-sitmo@2.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index 3fd34dff09e433..db589f34335ce1 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -18,6 +18,7 @@ class RDt(RPackage): license("Apache-2.0") + version("0.33", sha256="e145dadb1ce3db7c837f4313a8b5615b5b8ae63063ec2df93e528529717b27b8") version("0.27", sha256="e32fdccd2be430933cff88a9ce79045bfdbe3e08e0cd8d15037445808613289a") version("0.26", sha256="c412932be126d44f415559258e1d65adc0e84c3dfb9a70ce3196a2f877f7030c") version("0.25", sha256="0dfc8713062e1fe4e0428936367f35a0a41616c27b6d9b002bdfda58091c442b") @@ -35,6 +36,7 @@ class RDt(RPackage): depends_on("r-htmltools@0.3.6:", type=("build", "run")) depends_on("r-htmlwidgets@1.3:", type=("build", "run")) + depends_on("r-httpuv", type=("build", "run"), when="@0.29:") depends_on("r-jsonlite@0.9.16:", type=("build", "run"), when="@0.8:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-crosstalk", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index b2e66ec2aebcf4..dfeed53f3b378e 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -18,6 +18,7 @@ class RE1071(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.7-14", sha256="754d97ab073acc07b909a190f87f021e31e07269c8632c53166a6c2843e65195") version("1.7-13", sha256="da94e191af6e69aa0f9e3250d4b823674cc869339d914f761ebf2824177b6b2f") version("1.7-12", sha256="91e052d0a521db74a66df90adb28db601f2a2cca38b03dcad030ac2fdc5c5dcf") version("1.7-11", sha256="48c18e10e7cabc742d37b563672e2eddb6061f2378b69e5563be79ab9948d92f") diff --git a/var/spack/repos/builtin/packages/r-earth/package.py b/var/spack/repos/builtin/packages/r-earth/package.py index 92e3c072bb9b80..3fae5b8896208a 100644 --- a/var/spack/repos/builtin/packages/r-earth/package.py +++ b/var/spack/repos/builtin/packages/r-earth/package.py @@ -17,6 +17,7 @@ class REarth(RPackage): license("GPL-3.0-only") + version("5.3.3", sha256="786a0fcabb3db13e0e0a4ba61ecccb7e171030b39bc97926f8e7159485d2f572") version("5.3.2", sha256="c844d75edf9a2706a911bb05ed4287aad9acf6f3fed357e037763a300eac0bea") version("5.3.1", sha256="0bbe06ba974ceb8ec5de1d59cb53f9487d1828d7130fe2503c48b6cb449c4b03") version("5.3.0", sha256="05ace806271a74b3ddf8718a93237fe2a8550a8659ebd87f8079c0bda5e02437") @@ -26,4 +27,6 @@ class REarth(RPackage): depends_on("r-formula@1.2-3:", type=("build", "run")) depends_on("r-plotmo@3.5.4:", type=("build", "run")) depends_on("r-plotmo@3.6.0:", type=("build", "run"), when="@5.3.0") - depends_on("r-teachingdemos@2.10:", type=("build", "run")) + depends_on("r-plotmo@3.6.0:", type=("build", "run"), when="@5.3.3:") + + depends_on("r-teachingdemos@2.10:", type=("build", "run"), when="@:5.3.2") diff --git a/var/spack/repos/builtin/packages/r-ecosolver/package.py b/var/spack/repos/builtin/packages/r-ecosolver/package.py index d61d3979d157fa..bb57f5be6aba83 100644 --- a/var/spack/repos/builtin/packages/r-ecosolver/package.py +++ b/var/spack/repos/builtin/packages/r-ecosolver/package.py @@ -17,6 +17,7 @@ class REcosolver(RPackage): cran = "ECOSolveR" + version("0.5.5", sha256="2594ed1602b2fe159cc9aff3475e9cba7c1927b496c3daeabc1c0d227943ecc7") version("0.5.4", sha256="5d7489e8176c1df3f3f1290732243429280efca4f837916e6b6faa6dc8a8e324") depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-ecp/package.py b/var/spack/repos/builtin/packages/r-ecp/package.py index ed1b5341819a84..7aec827a94f122 100644 --- a/var/spack/repos/builtin/packages/r-ecp/package.py +++ b/var/spack/repos/builtin/packages/r-ecp/package.py @@ -21,6 +21,7 @@ class REcp(RPackage): license("GPL-2.0-or-later") + version("3.1.5", sha256="9e2389632447a80a5e9937f15a98c092c33f5460e6ceb904971fcff3eda8a29e") version("3.1.4", sha256="1b98bf25a7659517dc98d1b950fe2a5fed9ef8f750893b3a9e06e9c6d59cc04d") version("3.1.3", sha256="a80ab10bafe30cc96287b9220e44c4b4eda40f5dd0546e4d2a2e1baab514c058") version("3.1.1", sha256="d2ab194e22e6ab0168222fbccfcf2e25c6cd51a73edc959086b0c6e0a7410268") diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index 7c791bf1b5db54..e798ce3b2b66b6 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -20,6 +20,7 @@ class REllipse(RPackage): license("GPL-2.0-or-later") + version("0.5.0", sha256="cde8553973ce2cc04324318b3df13890d585987171fedfe2efbf1430f82cc2f3") version("0.4.5", sha256="39c475851380deeb9361464f8f32fa2ee250f24604791c00680a54aaaaba8936") version("0.4.3", sha256="02ef2b11c3462a8b800332e522183f4c7c40c7d2d66c5174d5f3f6d8cc68a946") version("0.4.2", sha256="1719ce9a00b9ac4d56dbf961803085b892d3359726fda3567bb989ddfed9a5f2") diff --git a/var/spack/repos/builtin/packages/r-emmeans/package.py b/var/spack/repos/builtin/packages/r-emmeans/package.py index bf2a67120a07ba..150e26a6496be0 100644 --- a/var/spack/repos/builtin/packages/r-emmeans/package.py +++ b/var/spack/repos/builtin/packages/r-emmeans/package.py @@ -21,6 +21,7 @@ class REmmeans(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.10.4", sha256="66653623c5984f99ba481a8611d6cf3b829e577f07bbe4043f279a3f8fbadcc3") version("1.8.5", sha256="5c88b415b5a42d8c1aa63af090c4987326530ea6d0e60bab9b5fb7e99a982415") version("1.8.2", sha256="785973457d8a6547df489f87b62987d44a68c4b9018661d38ca11ee34e49d209") version("1.8.1-1", sha256="79fc5e44255427b038d0dbe2c9887d84984baacb11bb9a9078cd8d0dca2e6577") diff --git a/var/spack/repos/builtin/packages/r-envstats/package.py b/var/spack/repos/builtin/packages/r-envstats/package.py index 6a03accb0d17c2..58fae609b76cca 100644 --- a/var/spack/repos/builtin/packages/r-envstats/package.py +++ b/var/spack/repos/builtin/packages/r-envstats/package.py @@ -23,6 +23,7 @@ class REnvstats(RPackage): cran = "EnvStats" + version("2.8.1", sha256="12952b9eaa64b7bdbaaa5c6b7acb3aa1028ddfa4e5de7ddfea54f900c452d6a6") version("2.7.0", sha256="09a6f0d5b60856c7298371e4a8a085a1db7abf0e71ccb9a2dc9ca24248fb5d81") version("2.5.0", sha256="4f77aa66c9dbbe411370a6dd5b9e514823d5506bbcdad9dc09a9e4268d65a7f7") version("2.4.0", sha256="49459e76412037b3d8021bd83ee93d140bc3e715a2a2282a347ef60061900514") diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index b5434cfa37b655..f30fe867777458 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -19,6 +19,7 @@ class RErgm(RPackage): license("GPL-3.0-only") + version("4.6.0", sha256="b471a60c39eb5b478e06dd0caf1d085f4b0927f1c260de699f1c8d4fe831a7f7") version("4.4.0", sha256="2db152cc7fdd71d6f0065603405f30bf5e206591da39b8f542178ec6d6126173") version("4.3.1", sha256="3ff63c81ea4061ac0c79247fcd2e614494624f7f1df57a4634927e7e90800ed3") version("4.2.3", sha256="35d15373d4a8445872eb3713c81c6c6ac34b72096e0cdb04292a468e65ae9288") @@ -44,7 +45,7 @@ class RErgm(RPackage): depends_on("r-trust@0.1.7:", type=("build", "run")) depends_on("r-trust@0.1.8:", type=("build", "run"), when="@4.1.2:") depends_on("r-matrix@1.2-17:", type=("build", "run")) - depends_on("r-matrix@1.3.2:", type=("build", "run"), when="@4.1.2:") + depends_on("r-matrix@1.3-2:", type=("build", "run"), when="@4.1.2:") depends_on("r-lpsolveapi@5.5.2.0.17.7:", type=("build", "run"), when="@4.1.2:") depends_on("r-mass@7.3-51.4:", type=("build", "run")) depends_on("r-mass@7.3.53.1:", type=("build", "run"), when="@4.1.2:") @@ -54,6 +55,7 @@ class RErgm(RPackage): depends_on("r-statnet-common@4.6.0:", type=("build", "run"), when="@4.2.1:") depends_on("r-statnet-common@4.7.0:", type=("build", "run"), when="@4.3.1:") depends_on("r-statnet-common@4.8.0:", type=("build", "run"), when="@4.4.0:") + depends_on("r-statnet-common@4.9.0:", type=("build", "run"), when="@4.5.0:") depends_on("r-rle", type=("build", "run"), when="@3.11.0:") depends_on("r-rle@0.9.2:", type=("build", "run"), when="@4.1.2:") depends_on("r-purrr@0.3.2:", type=("build", "run"), when="@3.10.0:") diff --git a/var/spack/repos/builtin/packages/r-estimability/package.py b/var/spack/repos/builtin/packages/r-estimability/package.py index 545001ea96da06..9a246b6ec6a3a9 100644 --- a/var/spack/repos/builtin/packages/r-estimability/package.py +++ b/var/spack/repos/builtin/packages/r-estimability/package.py @@ -19,5 +19,9 @@ class REstimability(RPackage): license("GPL-3.0-or-later") + version("1.5.1", sha256="3ca6b96a39fd8877e8636f94d20f34308b7296c1376c646703d27df8591644e9") version("1.4.1", sha256="c65aaf1e452f3947013d3ce05ae674d48492081f615a942592dc91db780f1124") version("1.3", sha256="a33179c5fbd6a1a623d90cb6f1743148f92c09429fac466867f3ea70946a2e32") + + depends_on("r@4.1.0:", when="@1.5.1:", type=("build", "run")) + depends_on("r@4.3.0:", when="@1.5:1.5.0", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-europepmc/package.py b/var/spack/repos/builtin/packages/r-europepmc/package.py index 64a9c094626f88..082450f3c9e538 100644 --- a/var/spack/repos/builtin/packages/r-europepmc/package.py +++ b/var/spack/repos/builtin/packages/r-europepmc/package.py @@ -25,6 +25,7 @@ class REuropepmc(RPackage): license("GPL-3.0-only") + version("0.4.3", sha256="25945534527bd89a6dcd9e371e3c2a68f3fe2046587daf1563be16eac9dd1998") version("0.4.1", sha256="c1ba91a2a99432cabe18e86fea33ac9d20dbb3ac0b58f430d464b4d8ecba4a9a") version("0.4", sha256="d55f62963d0ee84830654bbc78f4ad8285e376b04be137cbeaf8ad2a98b7969c") version("0.3", sha256="5044a253d223e2bb8502063cd03c0fe4db856467e497d650da7ccd8f75d0f8d9") diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index 86aeb872a928c8..bb16d16b85b129 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -16,6 +16,7 @@ class REvaluate(RPackage): license("MIT") + version("0.24.0", sha256="e23d764a58e7525257d57da4ccfee9d6f63b5b3c18bf01c76818ec8c9c587fd6") version("0.20", sha256="35f5d9e85603600b58960923d591c5ca1115153febba7c612867d8b5598afff0") version("0.18", sha256="7f4eecdc97ac286d5c7a39c454fe6798da38ef634bf9305c595faa8facb2bf36") version("0.17", sha256="49c743c94cb967911af0e5555861a3762cd840b98578882671b583cff86ba963") @@ -26,5 +27,6 @@ class REvaluate(RPackage): version("0.9", sha256="e8118c9d6ec479c0e712913848404431b6b6c0282f3c131acaf9a677ab5fc6ae") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.24.0:") depends_on("r-stringr@0.6.2:", type=("build", "run"), when="@:0.11") diff --git a/var/spack/repos/builtin/packages/r-evd/package.py b/var/spack/repos/builtin/packages/r-evd/package.py index 09a3a103566d78..5737dac4e00dac 100644 --- a/var/spack/repos/builtin/packages/r-evd/package.py +++ b/var/spack/repos/builtin/packages/r-evd/package.py @@ -19,6 +19,7 @@ class REvd(RPackage): license("GPL-3.0-only") + version("2.3-7", sha256="4a899df15d39be4a8d544de4f5e4690b4673790a46da6a6c9c2a70fef3b55648") version("2.3-6.1", sha256="662c592d3f5c5693dbf1c673d1137c4a60a347e330b71be1f3933f201d2c8971") version("2.3-6", sha256="8edb8bc4f06d246c4343fd923bb5d5df99724d6db8821bfd996220343a834cb6") version("2.3-3", sha256="2fc5ef2e0c3a2a9392425ddd45914445497433d90fb80b8c363877baee4559b4") diff --git a/var/spack/repos/builtin/packages/r-exactextractr/package.py b/var/spack/repos/builtin/packages/r-exactextractr/package.py index 28eb6fe05f63c0..a9a6e5b05899d3 100644 --- a/var/spack/repos/builtin/packages/r-exactextractr/package.py +++ b/var/spack/repos/builtin/packages/r-exactextractr/package.py @@ -16,6 +16,7 @@ class RExactextractr(RPackage): license("Apache-2.0") + version("0.10.0", sha256="9b7fc3c6f0e9e89596a1992240ecbb8e2893f4addffaecbd852403c10a0943de") version("0.9.1", sha256="f0cf367c25a45b09eda1d435c8c818590ff4de86162f675e3172821d1853f4a1") version("0.9.0", sha256="705a355534f427dc832af2a294aaf928c10c72d6335d38aed86da64d814eb18d") version("0.8.2", sha256="cc32ab3af8d881a7e7836c296ea42f3fdabf3373ec1de0b154dbfe9870ee8a74") diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index 944d12211ff647..c1ece1ae786473 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -16,6 +16,7 @@ class RExpm(RPackage): license("GPL-2.0-or-later") + version("1.0-0", sha256="02c536f8f6af55b132210a50b1e9694a3549806bf97c49e0fe03595945aab254") version("0.999-7", sha256="28f249b914b8dd33eee16663fc793e57afd0e301e16067bf9f27fa8e591ba0f1") version("0.999-6", sha256="2c79912fd2e03fcf89c29f09555880934402fcb2359af8b4579d79b4f955addc") version("0.999-4", sha256="58d06427a08c9442462b00a5531e2575800be13ed450c5a1546261251e536096") diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index 39b8379a45a501..d1dab128f04a46 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -20,6 +20,7 @@ class RFactominer(RPackage): cran = "FactoMineR" + version("2.11", sha256="32c26b42cb4dd8d7a8c845f1e8562fa0e3ebded19d3c1284c3504df09974f063") version("2.8", sha256="c09086f7ae4c4855ed6f1e8303b497e250ab6cf101feb3db6c8a93510e5ff851") version("2.6", sha256="81261608c097b863e004a0c6cdc4bdfd6e7bf49c6ec20e211233eda2e5268f75") version("2.4", sha256="b9e3adce9a66b4daccc85fa67cb0769d6be230beeb126921b386ccde5db2e851") diff --git a/var/spack/repos/builtin/packages/r-fansi/package.py b/var/spack/repos/builtin/packages/r-fansi/package.py index 11d4708e17ef0a..74f31d835c3a2a 100644 --- a/var/spack/repos/builtin/packages/r-fansi/package.py +++ b/var/spack/repos/builtin/packages/r-fansi/package.py @@ -16,6 +16,7 @@ class RFansi(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.0.6", sha256="ea9dc690dfe50a7fad7c5eb863c157d70385512173574c56f4253b6dfe431863") version("1.0.4", sha256="3163214e6c40922bbb495229259ed8ce1bebd98b77098a6936d234e43da9c49f") version("1.0.3", sha256="86a7b83d8c9d28baebbde310cd0b459d0950a9c7ff1a6276ce5858f6a89bc06a") version("1.0.2", sha256="d1e2cf2e10613abe19071e3dab7c564ebcf85ad13cbee25fa1999267af01b557") diff --git a/var/spack/repos/builtin/packages/r-farver/package.py b/var/spack/repos/builtin/packages/r-farver/package.py index e7d36ca104c4c7..980cb7118eb652 100644 --- a/var/spack/repos/builtin/packages/r-farver/package.py +++ b/var/spack/repos/builtin/packages/r-farver/package.py @@ -21,6 +21,7 @@ class RFarver(RPackage): license("MIT") + version("2.1.2", sha256="528823b95daab4566137711f1c842027a952bea1b2ae6ff098e2ca512b17fe25") version("2.1.1", sha256="0dcfda6ca743f465372790bcff1bcbc6a7145fdac1c682b021f654e8c6c996ce") version("2.1.0", sha256="e5c8630607049f682fb3002b99ca4f5e7c6b94f8b2a4342df594e7853b77cef4") version("2.0.3", sha256="0e1590df79ec6078f10426411b96216b70568a4eaf3ffd84ca723add0ed8e5cc") diff --git a/var/spack/repos/builtin/packages/r-fastcluster/package.py b/var/spack/repos/builtin/packages/r-fastcluster/package.py index bdc1f96110fb45..685ab3f3993557 100644 --- a/var/spack/repos/builtin/packages/r-fastcluster/package.py +++ b/var/spack/repos/builtin/packages/r-fastcluster/package.py @@ -24,6 +24,7 @@ class RFastcluster(RPackage): license("BSD-2-Clause OR GPL-2.0-only OR custom") + version("1.2.6", sha256="852a05458fb0b64497e9cf8f0182b599d1c2b1e9af03ec45f7c0c9280c1f8d19") version("1.2.3", sha256="1f229129e1cddc78c7bb5ecc90c4d28ed810ee68cf210004c7cdfa12cfaf2a01") version("1.1.25", sha256="f3661def975802f3dd3cec5b2a1379f3707eacff945cf448e33aec0da1ed4205") diff --git a/var/spack/repos/builtin/packages/r-fastdigest/package.py b/var/spack/repos/builtin/packages/r-fastdigest/package.py index aa1aea798887eb..b6fe0390d79008 100644 --- a/var/spack/repos/builtin/packages/r-fastdigest/package.py +++ b/var/spack/repos/builtin/packages/r-fastdigest/package.py @@ -23,4 +23,5 @@ class RFastdigest(RPackage): license("Artistic-2.0") + version("0.6-4", sha256="b2b6a550d90446bed911c9ad7642efd2a869257ecc5b9eb57e66b2cd4ef109a0") version("0.6-3", sha256="62a04aa39f751cf9bb7ff43cadb3c1a8d2270d7f3e8550a2d6ca9e1d8ca09a09") diff --git a/var/spack/repos/builtin/packages/r-fastdummies/package.py b/var/spack/repos/builtin/packages/r-fastdummies/package.py new file mode 100644 index 00000000000000..44ff1bb9982993 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-fastdummies/package.py @@ -0,0 +1,24 @@ +# 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) + +from spack.package import * + + +class RFastdummies(RPackage): + """Fast Creation of Dummy (Binary) Columns and Rows from Categorical + Variables.""" + + homepage = "https://jacobkap.github.io/fastDummies/" + cran = "fastDummies" + + license("MIT", checked_by="wdconinc") + + version("1.7.4", sha256="95904d4b67efc3faafa47cae9473c9d75653bc3fb6ad0083869ebf9f7960dd08") + + depends_on("r@2.1:", type=("build", "run")) + depends_on("r@2.10:", type=("build", "run"), when="@1.0.0:") + depends_on("r-data-table", type=("build", "run")) + depends_on("r-tibble", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-fastica/package.py b/var/spack/repos/builtin/packages/r-fastica/package.py index 9c64c3130cfe5d..a22516c3b12f62 100644 --- a/var/spack/repos/builtin/packages/r-fastica/package.py +++ b/var/spack/repos/builtin/packages/r-fastica/package.py @@ -14,6 +14,7 @@ class RFastica(RPackage): cran = "fastICA" + version("1.2-5.1", sha256="65916ee9a44598a5d50c43d96de5fb11730e0a5a5938e5859f1a928d31f3d985") version("1.2-3", sha256="e9ef82644cb64bb49ae3b7b6e0885f4fb2dc08ae030f8c76fe8dd8507b658950") version("1.2-2", sha256="32223593374102bf54c8fdca7b57231e4f4d0dd0be02d9f3500ad41b1996f1fe") diff --git a/var/spack/repos/builtin/packages/r-fastmap/package.py b/var/spack/repos/builtin/packages/r-fastmap/package.py index a97657a321fe86..3d50ab69ba3b09 100644 --- a/var/spack/repos/builtin/packages/r-fastmap/package.py +++ b/var/spack/repos/builtin/packages/r-fastmap/package.py @@ -20,6 +20,7 @@ class RFastmap(RPackage): license("MIT") + version("1.2.0", sha256="b1da04a2915d1d057f3c2525e295ef15016a64e6667eac83a14641bbd83b9246") version("1.1.1", sha256="3623809dd016ae8abd235200ba7834effc4b916915a059deb76044137c5c7173") version("1.1.0", sha256="9113e526b4c096302cfeae660a06de2c4c82ae4e2d3d6ef53af6de812d4c822b") version("1.0.1", sha256="4778b05dfebd356f8df980dfeff3b973a72bca14898f870e5c40c1d84db9faec") diff --git a/var/spack/repos/builtin/packages/r-fastmatch/package.py b/var/spack/repos/builtin/packages/r-fastmatch/package.py index e95677e309d607..3d5773182b04bf 100644 --- a/var/spack/repos/builtin/packages/r-fastmatch/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatch/package.py @@ -18,6 +18,7 @@ class RFastmatch(RPackage): license("GPL-2.0-only") + version("1.1-4", sha256="9a914cac9c1ea2984bd44eebe421e1636504907a8064ae26347fe3ec2b9bd56b") version("1.1-3", sha256="1defa0b08bc3f48e4c3e4ba8df4f1b9e8299932fd8c747c67d32de44f90b9861") version("1.1-0", sha256="20b51aa4838dbe829e11e951444a9c77257dcaf85130807508f6d7e76797007d") diff --git a/var/spack/repos/builtin/packages/r-fastmatrix/package.py b/var/spack/repos/builtin/packages/r-fastmatrix/package.py index c086bcc21e1cb0..27102cdc092b2a 100644 --- a/var/spack/repos/builtin/packages/r-fastmatrix/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatrix/package.py @@ -30,6 +30,7 @@ class RFastmatrix(RPackage): license("GPL-3.0-only") + version("0.5-772", sha256="72601bae9a59f467c5da9ccf08788f0233cdbb2420b6b2aa43a42a2632ff9c55") version("0.5", sha256="fb5f251a98425161e9dbbbb7edf95226725255b1474aad03ab046c7c6c6c3f12") version("0.4-1245", sha256="ee2e12b5dcda4585cca21f2c0ac144706f6fd26024586e91d622c6cd66d1d873") version("0.4-1", sha256="494a1aad38dcec28956eba8d095c964b20c5388dfb6dc2a23848ae37ea61cde5") diff --git a/var/spack/repos/builtin/packages/r-fda/package.py b/var/spack/repos/builtin/packages/r-fda/package.py index 0f5aa30a7f3f83..93a4d3a3d05bdd 100644 --- a/var/spack/repos/builtin/packages/r-fda/package.py +++ b/var/spack/repos/builtin/packages/r-fda/package.py @@ -19,6 +19,7 @@ class RFda(RPackage): license("GPL-2.0-or-later") + version("6.1.8", sha256="ef8d858a2879491aa2c441d171ba14462bf27852d16e8420fa49aab83f42c407") version("6.0.5", sha256="14445776fc65284cd6cae98e5b4dd14c2626d96db5f78c0fcc6aabce5419b8f1") version("6.0.3", sha256="205814b9812664e8201221f99e0e8391aa49dba2ae287dc404c57c0c492477d3") version("5.5.1", sha256="dcaa2f6ae226d35855bc79c6967f60d45404b984c0afaec215b139c4b8dea23a") diff --git a/var/spack/repos/builtin/packages/r-ff/package.py b/var/spack/repos/builtin/packages/r-ff/package.py index 04017a2835a3ce..ad2bec47239335 100644 --- a/var/spack/repos/builtin/packages/r-ff/package.py +++ b/var/spack/repos/builtin/packages/r-ff/package.py @@ -56,6 +56,7 @@ class RFf(RPackage): license("GPL-2.0-only OR GPL-3.0-only OR custom") + version("4.0.12", sha256="08af355a9a10fe29d48d085abc7cf1f975e1a4a670668a4f8d9632d087fb41bf") version("4.0.9", sha256="722053271987a0c9673c3ff9e7968bbab47979d529a2fe6bb1a3179408ee3c4f") version("4.0.7", sha256="0a47333d31c7afc3f95387166e21a3e4c763cbef47d9b5927753aef4ff8d83fa") version("4.0.5", sha256="9aba9e271144ec224063ddba0d791e2fcdb9c912d48fdc49e204fce628355037") diff --git a/var/spack/repos/builtin/packages/r-fields/package.py b/var/spack/repos/builtin/packages/r-fields/package.py index 27cb884cc0d33f..9cb19fc61483cf 100644 --- a/var/spack/repos/builtin/packages/r-fields/package.py +++ b/var/spack/repos/builtin/packages/r-fields/package.py @@ -38,6 +38,7 @@ class RFields(RPackage): license("GPL-2.0-or-later") + version("16.2", sha256="3910950cd5476e7e3d17d00dabfa37a6491019426c74b6955a2fbe5648a3b3e4") version("14.1", sha256="57c4c5592443d2ee869014b3199989b5edd1aff52e24f1cd313b8f9b34a95434") version("13.3", sha256="c652838b1ae7eb368831522824bfbc1d1db7b9d1db5e9bb52b194098549944c3") version("11.6", sha256="8600d1d992c40668cc2ab01b3c17d0e1bd44a001ec7ba9f468bc0e9ef87c59db") @@ -46,5 +47,6 @@ class RFields(RPackage): depends_on("r@3.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@14.1:") depends_on("r-spam", type=("build", "run")) - depends_on("r-viridis", type=("build", "run"), when="@13.3:") + depends_on("r-viridis", type=("build", "run"), when="@13.3:14.2") + depends_on("r-viridislite", type=("build", "run"), when="@14.3:") depends_on("r-maps", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-filehash/package.py b/var/spack/repos/builtin/packages/r-filehash/package.py index 3c931a8239a848..a4cc9c8297b388 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -23,6 +23,7 @@ class RFilehash(RPackage): license("GPL-2.0-or-later") + version("2.4-6", sha256="558b446ba354c6fa88f694e8d6d068f999d1e7b626164eb2aeacccbb0dee81b1") version("2.4-5", sha256="3b1ee2794dd61e525ee44db16611c65957691d77bb26ae481eba988bb55da22c") version("2.4-3", sha256="f394e2c93233e8ad1c104562ea9349855dc8e303131f559cd59834f9aa3e41bd") version("2.4-2", sha256="b6d056f75d45e315943a4618f5f62802612cd8931ba3f9f474b595140a3cfb93") diff --git a/var/spack/repos/builtin/packages/r-filelock/package.py b/var/spack/repos/builtin/packages/r-filelock/package.py index 3aba76da0895bd..18bd42a6d440a9 100644 --- a/var/spack/repos/builtin/packages/r-filelock/package.py +++ b/var/spack/repos/builtin/packages/r-filelock/package.py @@ -16,8 +16,7 @@ class RFilelock(RPackage): license("MIT") + version("1.0.3", sha256="2dcd0ec453f5ec4d96f69b0c472569d57d3c5f9956a82a48492ee02f12071137") version("1.0.2", sha256="ac2915950789b16c43a625a2b8dab6ba423588db4a7d0daa75b74518b82b1403") - depends_on("r-callr@2.0.0:", type=("build", "run")) - depends_on("r-covr", type=("build", "run")) - depends_on("r-testthat", type=("build", "run")) + depends_on("r@3.4:", type=("build", "run"), when="@1.0.3:") diff --git a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py index 5602ed82aa10b0..9dcf4e3b4c9b4e 100644 --- a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py +++ b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py @@ -24,6 +24,7 @@ class RFitdistrplus(RPackage): license("GPL-2.0-or-later") + version("1.2-1", sha256="68b4215a9dfff65880a3ba6f7febe4929b197611344932b79af05d91dc584558") version("1.1-11", sha256="26274f2b710b2417a8bca314d400abf320d4ccf0387ad082743056699501b53d") version("1.1-8", sha256="f3c72310f40773b3839a9506c3cb781d044e09b94f2f38d332bb24e5f9960f5a") version("1.1-6", sha256="17c2990041a3bb7479f3c3a6d13d96c989db8eaddab17eff7e1fbe172a5b96be") @@ -34,5 +35,6 @@ class RFitdistrplus(RPackage): depends_on("r@3.5.0:", type=("build", "run"), when="@1.1-6:") depends_on("r-mass", type=("build", "run")) depends_on("r-survival", type=("build", "run")) + depends_on("r-rlang", type=("build", "run"), when="@1.2-1:") depends_on("r-npsurv", type=("build", "run"), when="@:1.0-14") diff --git a/var/spack/repos/builtin/packages/r-flexclust/package.py b/var/spack/repos/builtin/packages/r-flexclust/package.py index bbc9fff7000e54..5566dbaf222ce6 100644 --- a/var/spack/repos/builtin/packages/r-flexclust/package.py +++ b/var/spack/repos/builtin/packages/r-flexclust/package.py @@ -21,6 +21,7 @@ class RFlexclust(RPackage): license("GPL-2.0-only") + version("1.4-2", sha256="0c4720d691e36091cedafa26ee1f0ddc7af931168096df00b9bf6d64fdd35a55") version("1.4-1", sha256="d67977df059e622832358069509f8968d506074320a45d34bfd21c65f898538d") version("1.4-0", sha256="82fe445075a795c724644864c7ee803c5dd332a89ea9e6ccf7cd1ae2d1ecfc74") version("1.3-5", sha256="dbf49969c93a7b314d9dc3299a0764ed9a804ba7dcbdc08a1235f244f4b85059") diff --git a/var/spack/repos/builtin/packages/r-fnn/package.py b/var/spack/repos/builtin/packages/r-fnn/package.py index c9e235eb4dcf0a..96565f2e33a4b6 100644 --- a/var/spack/repos/builtin/packages/r-fnn/package.py +++ b/var/spack/repos/builtin/packages/r-fnn/package.py @@ -15,6 +15,7 @@ class RFnn(RPackage): cran = "FNN" + version("1.1.4", sha256="db4db5a348c6051fe547193c282b6e5cc839f68f51e0afccf4939f35e9a2fc27") version("1.1.3.2", sha256="d701a13487979ebb07a071f4cc83fcf4daea5832d1f3923bce1e0d671dfe0e87") version("1.1.3.1", sha256="52b0e20611481a95bced40be4126f44b002fd3a9c4c9674bb34db4e1e3b5be5a") version("1.1.3", sha256="de763a25c9cfbd19d144586b9ed158135ec49cf7b812938954be54eb2dc59432") @@ -26,3 +27,4 @@ class RFnn(RPackage): version("0.6-2", sha256="f1fc410c341175bdb11a75b063c8c987e15b632378b56148d3566b91fca53a31") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@1.1.4:") diff --git a/var/spack/repos/builtin/packages/r-fontawesome/package.py b/var/spack/repos/builtin/packages/r-fontawesome/package.py index 90a63abb63170b..8709192c266922 100644 --- a/var/spack/repos/builtin/packages/r-fontawesome/package.py +++ b/var/spack/repos/builtin/packages/r-fontawesome/package.py @@ -19,6 +19,7 @@ class RFontawesome(RPackage): license("MIT") + version("0.5.2", sha256="da3de2a9717084d1400d48edd783f06c66b8c910ce9c8d753d1b7d99be1c5cc9") version("0.5.1", sha256="f4ebbbe2ee8d2e2c0342b72095cfe668bd9800ea6c4bf7180300544bde7e566c") version("0.4.0", sha256="760a0bc5b50ddbce1160b123f3b3d76342167519d75641dc2c5b952fa8d4242f") version("0.3.0", sha256="4deefcf4d4580d84213f863351c2a23c39adbd2f8762d7477ec2faa8235a1a31") diff --git a/var/spack/repos/builtin/packages/r-forecast/package.py b/var/spack/repos/builtin/packages/r-forecast/package.py index 713c688d18cd1c..0a502898804931 100644 --- a/var/spack/repos/builtin/packages/r-forecast/package.py +++ b/var/spack/repos/builtin/packages/r-forecast/package.py @@ -17,6 +17,7 @@ class RForecast(RPackage): license("GPL-3.0-only") + version("8.23.0", sha256="ffc3d41138f498fb286f0ebfeb72d15f9f7a8e953abf3c351ebf95fc188a1880") version("8.21", sha256="fdd131795a9d3fb399d76a9aa66a0c276637caaa9ec0c75fbe386189d005c6c2") version("8.18", sha256="5920baa8d9d81988000d0e2edcea61c05126b5cb923cb5921a6fcd7bc312d8dd") version("8.16", sha256="9f01eb895a883a7e1e23725b167b46edc1b0b152fd4120278aaa5f7b2621767f") @@ -39,5 +40,6 @@ class RForecast(RPackage): depends_on("r-timedate", type=("build", "run")) depends_on("r-tseries", type=("build", "run")) depends_on("r-urca", type=("build", "run"), when="@8.6:") + depends_on("r-withr", type=("build", "run"), when="@8.23.0:") depends_on("r-zoo", type=("build", "run")) depends_on("r-rcpparmadillo@0.2.35:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-foreign/package.py b/var/spack/repos/builtin/packages/r-foreign/package.py index 18e6d6ac46ac42..65ef468cb2d7ab 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -18,6 +18,7 @@ class RForeign(RPackage): license("GPL-2.0-or-later") + version("0.8-87", sha256="1a24acf4c8e87acc740599e950388b88e5beab7e54f699a015366fbd86db2856") version("0.8-84", sha256="17edf302c7568a122dc496a61a4a886ef7c02224a235d945b473611c79c98549") version("0.8-83", sha256="87eae73f780b6bbcf0a45b3e21d1c87be0404aa2d5b455df92ab45516030721b") version("0.8-82", sha256="f8ed0684d59bec7f3a39cde1aa5ec7b3e6e36aaecacb28120c9c54f7b13f80fb") diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index 7b29d95d0fb7a3..9ef1e36324eb2d 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -30,6 +30,7 @@ class RFpc(RPackage): license("GPL-2.0-or-later") + version("2.2-12", sha256="555996b4c7e78a28067df25ac657b5065ec79b6b2cd76080382c2d5b43104787") version("2.2-10", sha256="99b4548f2eca1a092a31bc2fa4e4bd1d6b50fdfacf3218588c879ceec99147d2") version("2.2-9", sha256="29b0006e96c8645645d215d3378551bd6525aaf45abde2d9f12933cf6e75fa38") version("2.2-3", sha256="8100a74e6ff96b1cd65fd22494f2d200e54ea5ea533cfca321fa494914bdc3b7") diff --git a/var/spack/repos/builtin/packages/r-fracdiff/package.py b/var/spack/repos/builtin/packages/r-fracdiff/package.py index ac7209584ba049..fe3009ec5e6448 100644 --- a/var/spack/repos/builtin/packages/r-fracdiff/package.py +++ b/var/spack/repos/builtin/packages/r-fracdiff/package.py @@ -18,6 +18,7 @@ class RFracdiff(RPackage): license("GPL-2.0-or-later") + version("1.5-3", sha256="0f90946b4092feff93fad094a2c91bb47c8051595210e86c029c70238dbf7fc0") version("1.5-2", sha256="ac5f881330287f5bc68b5cdce4fb74156a95356ffb875ee171538bc44200f437") version("1.5-1", sha256="b8103b32a4ca3a59dda1624c07da08ecd144c7a91a747d1f4663e99421950eb6") version("1.4-2", sha256="983781cedc2b4e3ba9fa020213957d5133ae9cd6710bc61d6225728e2f6e850e") diff --git a/var/spack/repos/builtin/packages/r-fs/package.py b/var/spack/repos/builtin/packages/r-fs/package.py index 01da707587f2e4..03481f2bd0ad51 100644 --- a/var/spack/repos/builtin/packages/r-fs/package.py +++ b/var/spack/repos/builtin/packages/r-fs/package.py @@ -16,6 +16,7 @@ class RFs(RPackage): license("MIT") + version("1.6.4", sha256="7e06290f2dbe36f54fdf51b748a4b00b8b0f68967b5754e37e0c83df7fea5ac8") version("1.6.2", sha256="548b7c0ed5ab26dc4fbd88707ae12987bcaef834dbc6de4e17d453846dc436b2") version("1.5.2", sha256="35cad1781d6d17c1feb56adc4607079c6844b63794d0ce1e74bb18dbc11e1987") version("1.5.0", sha256="36df1653571de3c628a4f769c4627f6ac53d0f9e4106d9d476afb22ae9603897") @@ -23,6 +24,7 @@ class RFs(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.6.2:") + depends_on("r@3.6:", type=("build", "run"), when="@1.6.4:") depends_on("gmake", type="build") depends_on("r-rcpp", type=("build", "run"), when="@:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-future-apply/package.py b/var/spack/repos/builtin/packages/r-future-apply/package.py index 43d35b3845b46a..7854e9a90cf52f 100644 --- a/var/spack/repos/builtin/packages/r-future-apply/package.py +++ b/var/spack/repos/builtin/packages/r-future-apply/package.py @@ -19,6 +19,7 @@ class RFutureApply(RPackage): cran = "future.apply" + version("1.11.2", sha256="f4a635b0fa5e0d826d2f8da6bc1fa5bb055e640c29a85c644931d08ab2d81387") version("1.10.0", sha256="dee92dd84812fe8c55064c0f0e6d806c0c29848b5a5fc4a7725d6a4b623e94aa") version("1.9.1", sha256="4f22ccd5caa62077581c6adc4d35543451e547220270aed3f1abcbaa6a202133") version("1.9.0", sha256="6166c1c5ce30b9745059c3d30c8110f7c1d51871e58aa414f195cb1f91c467f5") diff --git a/var/spack/repos/builtin/packages/r-future/package.py b/var/spack/repos/builtin/packages/r-future/package.py index 5cdaa6a99430cc..3cc6d0ecc884f0 100644 --- a/var/spack/repos/builtin/packages/r-future/package.py +++ b/var/spack/repos/builtin/packages/r-future/package.py @@ -28,6 +28,7 @@ class RFuture(RPackage): license("LGPL-2.1-or-later") + version("1.34.0", sha256="5839d4fd1f8beb1b18b27a7c50c1eb2bb5d80acd926b1bce9323637c8b2dfa5d") version("1.32.0", sha256="d5bb74512d069745184dd580a36449dc0b50d95b1cbbbc1605db82de596f2f76") version("1.29.0", sha256="856d1fd51d2f998c6572490c49fdcc27e5f3e0c1ade75eecdbf64a2cd0954373") version("1.28.0", sha256="6fdda66acd9a255e5baa70ff5dacd3c57ab2ecc2d87fd6abeebdfb939c051bf6") @@ -52,3 +53,4 @@ class RFuture(RPackage): depends_on("r-parallelly@1.30.0:", type=("build", "run"), when="@1.24.0:") depends_on("r-parallelly@1.32.1:", type=("build", "run"), when="@1.28.0:") depends_on("r-parallelly@1.34.0:", type=("build", "run"), when="@1.32.0:") + depends_on("r-parallelly@1.38.0:", type=("build", "run"), when="@1.34.0:") diff --git a/var/spack/repos/builtin/packages/r-gamlss-data/package.py b/var/spack/repos/builtin/packages/r-gamlss-data/package.py index 327f62a42ea766..da3363959306e1 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-data/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-data/package.py @@ -15,6 +15,7 @@ class RGamlssData(RPackage): cran = "gamlss.data" + version("6.0-6", sha256="bae0db19d95500b3f49f855d4ebd3ddb071c5e2d9104b27e0a73865f4909ab22") version("6.0-2", sha256="dbb3b6f855540928ccdbda497f8d552144895e34565799e8b595e704096db71e") version("5.1-4", sha256="0d3777d8c3cd76cef273aa6bde40a91688719be401195ed9bfd1e85bd7d5eeb5") version("5.1-3", sha256="4941180e7eebe97678ba02ca24c2a797bcb69d92cd34600215a94110e2a70470") diff --git a/var/spack/repos/builtin/packages/r-gamlss-dist/package.py b/var/spack/repos/builtin/packages/r-gamlss-dist/package.py index 46a8f63ad000cd..dc7b3e2380d3a0 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-dist/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-dist/package.py @@ -21,6 +21,7 @@ class RGamlssDist(RPackage): cran = "gamlss.dist" + version("6.1-1", sha256="d2db3a7658799c2ef212aa18cb75a3ecf4f73faf8c13dfdc3c14b21ae0129069") version("6.0-5", sha256="0f88afdfb148de79d3ece66bf4631ea0dc3ecf1188680802abffd6bc7139a20e") version("6.0-3", sha256="ec90ea83cd81b894c73f987f69814077697be33abf0708e0f3e2a39d02c912bf") version("6.0-1", sha256="b563b4de6bcedcfa4f8d29198a47004e38fd2de6e0509c788015d4e3feb18154") diff --git a/var/spack/repos/builtin/packages/r-gamlss/package.py b/var/spack/repos/builtin/packages/r-gamlss/package.py index b052d0e2dc7a78..4ab3444a07606e 100644 --- a/var/spack/repos/builtin/packages/r-gamlss/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss/package.py @@ -20,6 +20,7 @@ class RGamlss(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("5.4-22", sha256="01e6908df92691147b884a8d58025473e18d7bf58d5f5a2d7e4f18b2a451fe2d") version("5.4-12", sha256="9f791039f7e5c3cf3f6a2da955994a8c41c43044a2d77d99b289e4f82118a6f0") version("5.4-3", sha256="6619d4fdc183ab492615d44961a126c827d18db20a0d59362e54de877f0a3076") version("5.3-4", sha256="72707187471fd35c5379ae8c9b7b0ca87e302557f09cb3979d1cdb2e2500b01a") diff --git a/var/spack/repos/builtin/packages/r-gargle/package.py b/var/spack/repos/builtin/packages/r-gargle/package.py index 9f396884521579..9e65e185270fa3 100644 --- a/var/spack/repos/builtin/packages/r-gargle/package.py +++ b/var/spack/repos/builtin/packages/r-gargle/package.py @@ -18,12 +18,14 @@ class RGargle(RPackage): license("MIT") + version("1.5.2", sha256="4a5beb046eb50a168b4baf5d1fcd8ac20d698e7fcb6b6ef46a436ded5b039001") version("1.4.0", sha256="8e0f1edf5595d4fd27bd92f98af1cc0c1349975803d9d6f3ff0c25ee2440498b") version("1.2.1", sha256="f367e2c82f403167ae84058303a4fb0402664558a2abf0b495474a7ef1a2f020") version("1.2.0", sha256="4d46ca2933f19429ca5a2cfe47b4130a75c7cd9931c7758ade55bac0c091d73b") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@1.2.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.5.0:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-cli@3.0.1:", type=("build", "run"), when="@1.4.0:") depends_on("r-fs@1.3.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-gbm/package.py b/var/spack/repos/builtin/packages/r-gbm/package.py index 6204c12b686f29..2c6bed64576bc3 100644 --- a/var/spack/repos/builtin/packages/r-gbm/package.py +++ b/var/spack/repos/builtin/packages/r-gbm/package.py @@ -20,6 +20,7 @@ class RGbm(RPackage): license("GPL-2.0-or-later OR custom") + version("2.2.2", sha256="029ad2bac10c98979cf69206e94f2cc51a50667ec035f2474c44fb841950c4f4") version("2.1.8.1", sha256="8d2456124552658ee9500707c4e9992cf42cb88705008c32ea258efb4f2be80b") version("2.1.8", sha256="7d5de3b980b8f23275e86ac9bed48a497c9aa53c58e407dfd676309f38272ec1") version("2.1.5", sha256="06fbde10639dfa886554379b40a7402d1f1236a9152eca517e97738895a4466f") diff --git a/var/spack/repos/builtin/packages/r-gbrd/package.py b/var/spack/repos/builtin/packages/r-gbrd/package.py index e44000f09e38d6..39d79da7326703 100644 --- a/var/spack/repos/builtin/packages/r-gbrd/package.py +++ b/var/spack/repos/builtin/packages/r-gbrd/package.py @@ -14,4 +14,5 @@ class RGbrd(RPackage): cran = "gbRd" + version("0.4.12", sha256="48cd1d2a845f4b54c307473d2fa07a4ef6a644272f91c6a953844e66cd832338") version("0.4-11", sha256="0251f6dd6ca987a74acc4765838b858f1edb08b71dbad9e563669b58783ea91b") diff --git a/var/spack/repos/builtin/packages/r-gdalutilities/package.py b/var/spack/repos/builtin/packages/r-gdalutilities/package.py index 125dafba92f0de..671c68f93728d8 100644 --- a/var/spack/repos/builtin/packages/r-gdalutilities/package.py +++ b/var/spack/repos/builtin/packages/r-gdalutilities/package.py @@ -23,6 +23,7 @@ class RGdalutilities(RPackage): cran = "gdalUtilities" + version("1.2.5", sha256="2a72e990080ad626205c78edc6614959b564413b7fc23132008b7259723571a7") version("1.2.4", sha256="56d2582324977f2ae0a8bc42f740cd93b22c71eb8ee6a68b5b07083e409db8c7") version("1.2.1", sha256="8f5dcc0c077bf972da9d574c62c992935311afb76a97f03ace719bc6da214a9c") version("1.2.0", sha256="ead446f7f77f952b72b9ed80c5e415cb9d8d30cfb2439c8d1a8156fa55e2b65b") diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index 51ff21edf0d933..1c24477f549ead 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -35,6 +35,7 @@ class RGdata(RPackage): license("GPL-2.0-only") + version("3.0.0", sha256="a456b9921765a705fe8e51780dfbbc6ca005abc948b2f80effeccd468601b17f") version("2.18.0.1", sha256="5e2f3d5b9398d52a4c07a4d35f5f936450a44567c7db8d8f68b4cc6946e032d9") version("2.18.0", sha256="4b287f59f5bbf5fcbf18db16477852faac4a605b10c5284c46b93fa6e9918d7f") version("2.17.0", sha256="8097ec0e4868f6bf746f821cff7842f696e874bb3a84f1b2aa977ecd961c3e4e") diff --git a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py index dde99a8f618eeb..22091935c7cd04 100644 --- a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py +++ b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py @@ -47,3 +47,4 @@ class RGenomeinfodbdata(RPackage): depends_on("r@3.5:", type=("build", "run"), when="@1.2.1:") depends_on("r@3.3:", type=("build", "run"), when="@0.99.0:1.1.0") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.2.10:") diff --git a/var/spack/repos/builtin/packages/r-gensa/package.py b/var/spack/repos/builtin/packages/r-gensa/package.py index 7402c6808fc250..96402ef9a7036a 100644 --- a/var/spack/repos/builtin/packages/r-gensa/package.py +++ b/var/spack/repos/builtin/packages/r-gensa/package.py @@ -14,6 +14,7 @@ class RGensa(RPackage): cran = "GenSA" + version("1.1.14", sha256="66e455bb0e66d3c04af84d9dddc9b89f40b4cf9fe9ad1cf0714bcf30aa1b6837") version("1.1.8", sha256="375e87541eb6b098584afccab361dc28ff09d03cf1d062ff970208e294eca216") version("1.1.7", sha256="9d99d3d0a4b7770c3c3a6de44206811272d78ab94481713a8c369f7d6ae7b80f") diff --git a/var/spack/repos/builtin/packages/r-geometries/package.py b/var/spack/repos/builtin/packages/r-geometries/package.py index 68728af1d3adf2..7c262ea9eb8c39 100644 --- a/var/spack/repos/builtin/packages/r-geometries/package.py +++ b/var/spack/repos/builtin/packages/r-geometries/package.py @@ -18,6 +18,7 @@ class RGeometries(RPackage): license("MIT") + version("0.2.4", sha256="c6292acc336bb8520b8cb3672566f993fd077cb1f6f980ae39b9c9f56b971410") version("0.2.2", sha256="32d3063de0f8a751382788f85ebaee5f39d68e486253c159d553bb3d72d69141") version("0.2.0", sha256="8cf5094f3c2458fef5d755799c766afd27c66cd1c292574a6ab532d608360314") diff --git a/var/spack/repos/builtin/packages/r-geomorph/package.py b/var/spack/repos/builtin/packages/r-geomorph/package.py index 6cce7f23134a71..d4144663fb4bb0 100644 --- a/var/spack/repos/builtin/packages/r-geomorph/package.py +++ b/var/spack/repos/builtin/packages/r-geomorph/package.py @@ -18,6 +18,7 @@ class RGeomorph(RPackage): license("GPL-3.0-or-later") + version("4.0.8", sha256="14b4ad5a03fb58d9e7d02ddc4d0756553e9480ded3e68fd699249d58870f0c55") version("4.0.5", sha256="900d41f95a610b026763797f290ce94c10827a59b05030ed01c841c59264313b") version("4.0.4", sha256="dfded29070bc06bf1dc0d6fedaa16fea9f8eef76f0a7443a11f2835c328c6b0a") version("4.0.3", sha256="8fd77bedf2ee85f1e4aaac4b22253810d12dba0b79d78d67695d237b7184e263") @@ -31,9 +32,11 @@ class RGeomorph(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@3.3.2:") + depends_on("r@4.4.0:", type=("build", "run"), when="@4.0.8:") depends_on("r-matrix", type=("build", "run")) depends_on("r-rrpp", type=("build", "run"), when="@3.0.7:") depends_on("r-rrpp@1.0.0:", type=("build", "run"), when="@4.0.1:") + depends_on("r-rrpp@2.0.1:", type=("build", "run"), when="@4.0.8:") depends_on("r-rgl", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) depends_on("r-ape", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-geor/package.py b/var/spack/repos/builtin/packages/r-geor/package.py index 60cc131b92cec1..9ac4d6fd8b8ad9 100644 --- a/var/spack/repos/builtin/packages/r-geor/package.py +++ b/var/spack/repos/builtin/packages/r-geor/package.py @@ -15,6 +15,7 @@ class RGeor(RPackage): cran = "geoR" + version("1.9-4", sha256="ae9d977cebe0f93b2593542f8d6d060467984dcf174e84ba632307c035d7ebbd") version("1.9-2", sha256="7ce3f5256a33a9de71b22a08caba634e77344889aac7d9eed02625a90254b9d9") version("1.8-1", sha256="990647804590b925a50f72897b24bbabd331cebef0be1696a60528b2f79d6fd3") version("1.7-5.2.1", sha256="3895e49c005a5745738d190ccaad43bb0aa49c74465d4d0b4dd88c5850ed63b9") diff --git a/var/spack/repos/builtin/packages/r-gert/package.py b/var/spack/repos/builtin/packages/r-gert/package.py index 3ac439d4207bab..1f603de052fbb8 100644 --- a/var/spack/repos/builtin/packages/r-gert/package.py +++ b/var/spack/repos/builtin/packages/r-gert/package.py @@ -19,6 +19,7 @@ class RGert(RPackage): license("MIT") + version("2.1.1", sha256="42037c041b284ae7ef4da68b784f2dfc3f72701534a8330265b1abc382eda964") version("1.9.2", sha256="42ca1b4bcafb1fdbbc7f54df0ee4476ecd19e9e7d563b53fe7064e0086ab665e") version("1.9.1", sha256="751d18760a08ae00b8de73dc3e564cf4e76b1f47c7179101320e1b70152e1fdd") version("1.6.0", sha256="8c440aeebabf1cb3b57124ec9280e0f46b2ab56f2bca07d72b5c7a7f4edc2964") diff --git a/var/spack/repos/builtin/packages/r-getopt/package.py b/var/spack/repos/builtin/packages/r-getopt/package.py index 79b26170f133a6..a2d60d3cedcf59 100644 --- a/var/spack/repos/builtin/packages/r-getopt/package.py +++ b/var/spack/repos/builtin/packages/r-getopt/package.py @@ -19,6 +19,7 @@ class RGetopt(RPackage): license("GPL-2.0-or-later") + version("1.20.4", sha256="87d36cbe6dba41dbc1d78d845210266cdd08c7440d977d738a6e45db14221e8b") version("1.20.3", sha256="531f5fdfdcd6b96a73df2b39928418de342160ac1b0043861e9ea844f9fbf57f") version("1.20.2", sha256="3d6c12d32d6cd4b2909be626e570e158b3ed960e4739510e3a251e7f172de38e") version("1.20.1", sha256="1522c35b13e8546979725a68b75e3bc9d156fb06569067472405f6b8591d8654") diff --git a/var/spack/repos/builtin/packages/r-ggally/package.py b/var/spack/repos/builtin/packages/r-ggally/package.py index dac799bacf2cfd..8a2907206754e0 100644 --- a/var/spack/repos/builtin/packages/r-ggally/package.py +++ b/var/spack/repos/builtin/packages/r-ggally/package.py @@ -18,6 +18,7 @@ class RGgally(RPackage): cran = "GGally" + version("2.2.1", sha256="8bb326665936a63f6eef92a2af1a11d1fae78dbd28d6980608d2b38ee1f586c6") version("2.1.2", sha256="30352f36bf061bc98bdd5fa373ea0f23d007040bd908c7c018c8e627e0fb28e5") version("2.1.0", sha256="7ffb86b8a4e79543cf7e6bb1e3684d738ecd8e0ba89e8ef38991898b18dd6c53") version("1.4.0", sha256="9a47cdf004c41f5e4024327b94227707f4dad3a0ac5556d8f1fba9bf0a6355fe") @@ -27,15 +28,20 @@ class RGgally(RPackage): depends_on("r-ggplot2@2.2.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-ggplot2@3.3.4:", type=("build", "run"), when="@2.1.2:") + depends_on("r-ggplot2@3.4.4:", type=("build", "run"), when="@2.2.0:") depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@2.1.0:") - depends_on("r-forcats", type=("build", "run"), when="@2.1.0:") + depends_on("r-ggstats", type=("build", "run"), when="@2.2.0:") depends_on("r-gtable@0.2.0:", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run"), when="@2.1.0:") depends_on("r-plyr@1.8.3:", type=("build", "run")) depends_on("r-progress", type=("build", "run")) depends_on("r-rcolorbrewer", type=("build", "run")) - depends_on("r-reshape@0.8.5:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.4.0:") depends_on("r-scales@1.1.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-tidyr", type=("build", "run"), when="@2.1.0:") + depends_on("r-tidyr@1.3.0:", type=("build", "run"), when="@2.2.0:") + depends_on("r-magrittr", type=("build", "run"), when="@2.2.0:") depends_on("openssl", when="@1.4.0:") + + depends_on("r-forcats", type=("build", "run"), when="@2.1.0:2.1") + depends_on("r-reshape@0.8.5:", type=("build", "run"), when="@:2.1") diff --git a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py index 5915714aff0413..d8738700faaf25 100644 --- a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py +++ b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py @@ -17,12 +17,14 @@ class RGgbeeswarm(RPackage): license("GPL-3.0-or-later") + version("0.7.2", sha256="fd7ca265bb892dde514d5f8d6a853fb8b32d7a673b05e9c8b50544a523299ce5") version("0.7.1", sha256="f41550335149bc2122fed0dd280d980cecd02ace79e042d5e03c1f102200ac92") version("0.6.0", sha256="bbac8552f67ff1945180fbcda83f7f1c47908f27ba4e84921a39c45d6e123333") depends_on("r@3.0.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@0.7.1:") depends_on("r-beeswarm", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@0.7.2:") depends_on("r-lifecycle", type=("build", "run"), when="@0.7.1:") depends_on("r-ggplot2@2.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@0.7.1:") diff --git a/var/spack/repos/builtin/packages/r-ggdendro/package.py b/var/spack/repos/builtin/packages/r-ggdendro/package.py index 657d9a4d49f566..21bfda18c262aa 100644 --- a/var/spack/repos/builtin/packages/r-ggdendro/package.py +++ b/var/spack/repos/builtin/packages/r-ggdendro/package.py @@ -21,9 +21,11 @@ class RGgdendro(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.2.0", sha256="1940c34ddb30083a4c3bc3be98b6b466dcc78e03ac22a32088744db8bff7aa69") version("0.1.23", sha256="3a33e988c4fe12eec540876ad8ba09bda998773b2d2a90e043ebae4a69fa8eb8") version("0.1.22", sha256="f0a65f3498c1abc3076df0fb56364b63bdf5d212d8931f85bcc6997510916b6a") version("0.1-20", sha256="125cae904fa5d426cccaf32ebe9c6297e9ef0c6fd3f19f61513834d03a0cf8ff") + depends_on("r@3.5:", type=("build", "run"), when="@0.2.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-ggplot2@0.9.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggforce/package.py b/var/spack/repos/builtin/packages/r-ggforce/package.py index 0c73a818132577..cf8063a2423eb8 100644 --- a/var/spack/repos/builtin/packages/r-ggforce/package.py +++ b/var/spack/repos/builtin/packages/r-ggforce/package.py @@ -19,6 +19,7 @@ class RGgforce(RPackage): license("MIT") + version("0.4.2", sha256="c145b0e6ed6847d409ed2fe103b81234855bc0661cde2bfb4410fb23680e51a8") version("0.4.1", sha256="b44219fb63c45fa003c64bca323452f16dcace635204bc0127d3244c0f451873") version("0.3.3", sha256="2a283bb409da6b96929863a926b153bcc59b2c6f00551805db1d1d43e5929f2f") version("0.3.2", sha256="4cce8acb60ce06af44c1c76bbacd7de129eed9b51ed6a85e03a9bf55b0eff4d2") diff --git a/var/spack/repos/builtin/packages/r-ggfun/package.py b/var/spack/repos/builtin/packages/r-ggfun/package.py index 9c73c7fa48e7b7..c1aebd8afb1784 100644 --- a/var/spack/repos/builtin/packages/r-ggfun/package.py +++ b/var/spack/repos/builtin/packages/r-ggfun/package.py @@ -16,6 +16,7 @@ class RGgfun(RPackage): license("Artistic-2.0") + version("0.1.5", sha256="fe6c01fd68c17497f23f76dfd4e5a6edd79a6e86850b8c5054748f31527b16d3") version("0.0.9", sha256="5c740e9d1e73b77658f41ed65e21492f4e71b12c7c9ff4b9e52ebf5f8f197612") version("0.0.8", sha256="9471a12fc7af203a419767b845e6b6c1e63c080370cb8f2dac80187194122273") version("0.0.7", sha256="a83b5fb95f61e366f96d6d8e6b04dafff8e885e7c80c913614876b50ebb8e174") @@ -23,5 +24,8 @@ class RGgfun(RPackage): version("0.0.5", sha256="b1e340a8932d2cffbbbf6070ce96c9356599e9955a2b6534fcb17e599c575783") version("0.0.4", sha256="5926365f9a90baf47320baf48c40f515ef570f9c767484adea5f04219964d21e") + depends_on("r@4.1.0:", type=("build", "run"), when="@0.1.2:") + depends_on("r-cli", type=("build", "run"), when="@0.1.3:") + depends_on("r-dplyr", type=("build", "run"), when="@0.1.5:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index 9a007a055fb28a..c0b6fe8a04fc48 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -18,6 +18,7 @@ class RGgmap(RPackage): license("GPL-2.0-only") + version("4.0.0", sha256="0de639357c066e3b632eb960fd811276558ce29aefa2f77ef711ff5841c734f5") version("3.0.2", sha256="ba5fe3975fd4ca1a5fbda4910c9705ac2edacec75c658177edaf87f1c55cdcae") version("3.0.1", sha256="fc824b547f1fd0b52b6fbd18a82fe6f29f97b1f592e2c61baf4686ddfd47e35d") version("3.0.0", sha256="96c24ffdc0710d0633ac4721d599d2c06f43a29c59d1e85c94ff0af30dfdb58d") @@ -26,7 +27,6 @@ class RGgmap(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-ggplot2@2.2.0:", type=("build", "run")) - depends_on("r-rgooglemaps", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-plyr", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) @@ -44,6 +44,7 @@ class RGgmap(RPackage): depends_on("r-cli", type=("build", "run"), when="@3.0.1:") depends_on("r-rlang", type=("build", "run"), when="@3.0.1:") + depends_on("r-rgooglemaps", type=("build", "run"), when="@:3.0.2") depends_on("r-proto", type=("build", "run"), when="@:2.6.2") depends_on("r-reshape2", type=("build", "run"), when="@:2.6.2") depends_on("r-mapproj", type=("build", "run"), when="@:2.6.2") diff --git a/var/spack/repos/builtin/packages/r-ggnewscale/package.py b/var/spack/repos/builtin/packages/r-ggnewscale/package.py index 5c0d929a7f8163..8e4518e837e3e9 100644 --- a/var/spack/repos/builtin/packages/r-ggnewscale/package.py +++ b/var/spack/repos/builtin/packages/r-ggnewscale/package.py @@ -15,6 +15,8 @@ class RGgnewscale(RPackage): license("GPL-3.0-only") + version("0.5.0", sha256="b7f0dcb38d0e8cb4179d92f38b20489905ceb2a9602b68e2c72997d795c4df2d") version("0.4.8", sha256="c7fefa6941ecbc789507e59be13fa96327fe2549681a938c43beb06ca22a9700") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-ggplot2@3.5.0:", type=("build", "run"), when="@0.5.0:") diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index a7f919b38cc0f8..61b80a6a7fcfec 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -35,12 +35,12 @@ class RGgplot2(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@3.2.0:") depends_on("r@3.3:", type=("build", "run"), when="@3.3.4:") + depends_on("r@3.5:", type=("build", "run"), when="@3.5.0:") depends_on("r-cli", type=("build", "run"), when="@3.4.0:") depends_on("r-glue", type=("build", "run"), when="@3.3.3:") depends_on("r-gtable@0.1.1:", type=("build", "run")) depends_on("r-isoband", type=("build", "run"), when="@3.3.3:") - depends_on("r-lifecycle@1.0.1:", type=("build", "run"), when="@3.4.0:") - depends_on("r-lifecycle@unknown:", type=("build", "run"), when="@3.4.2:") + depends_on("r-lifecycle@1.0.1.1:", type=("build", "run"), when="@3.4.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-mgcv", type=("build", "run"), when="@3.2.0:") depends_on("r-rlang@0.3.0:", type=("build", "run"), when="@3.0.0:") @@ -52,6 +52,7 @@ class RGgplot2(RPackage): depends_on("r-scales@1.3.0:", type=("build", "run"), when="@3.5.0:") depends_on("r-tibble", type=("build", "run")) depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@3.4.0:") + depends_on("r-vctrs@0.6.0:", type=("build", "run"), when="@3.5.1:") depends_on("r-withr@2.0.0:", type=("build", "run"), when="@3.0.0:") depends_on("r-withr@2.5.0:", type=("build", "run"), when="@3.4.0:") diff --git a/var/spack/repos/builtin/packages/r-ggplotify/package.py b/var/spack/repos/builtin/packages/r-ggplotify/package.py index b87ca84a9d7d12..561d5ea54761cd 100644 --- a/var/spack/repos/builtin/packages/r-ggplotify/package.py +++ b/var/spack/repos/builtin/packages/r-ggplotify/package.py @@ -19,6 +19,7 @@ class RGgplotify(RPackage): license("Artistic-2.0") + version("0.1.2", sha256="01bae5759e14e211bddb04413e094ba31399b513989894ea08602d202f990e87") version("0.1.0", sha256="178f73d6d3dc391c3efb1a62c95fe38587044f9e3288dffb915d3687941bb38a") version("0.0.5", sha256="035ea6a70023c4819c8a486d0fd94c2765aa4d6df318747e104eeb9829b9d65d") version("0.0.3", sha256="7e7953a2933aa7127a0bac54375e3e0219a0744cfc3249c3d7b76065f7a51892") diff --git a/var/spack/repos/builtin/packages/r-ggraph/package.py b/var/spack/repos/builtin/packages/r-ggraph/package.py index cc887295f08b27..ad065c45374b10 100644 --- a/var/spack/repos/builtin/packages/r-ggraph/package.py +++ b/var/spack/repos/builtin/packages/r-ggraph/package.py @@ -19,6 +19,7 @@ class RGgraph(RPackage): license("MIT") + version("2.2.1", sha256="4405f8a907ad8fee68b5d4991f0bc8f35d6c0facbb7467c2ce425d3ec8b23af1") version("2.1.0", sha256="686fdb22dc4f613273fb755ec42399a208b4d10348eecd1a217afd4612245c1f") version("2.0.6", sha256="7b0ac90d834a3ce5641b4bca159d59d09607ddaab592908361b75cffb648d40a") version("2.0.5", sha256="e36ad49dba92ee8652e18b1fb197be0ceb9f0a2f8faee2194453a62578449654") @@ -27,20 +28,25 @@ class RGgraph(RPackage): depends_on("r@2.10:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) - depends_on("r-rcpp@0.12.2:", type=("build", "run")) + depends_on("r-ggplot2@3.5.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-ggforce@0.3.1:", type=("build", "run")) depends_on("r-igraph@1.0.0:", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-mass", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) - depends_on("r-gtable", type=("build", "run")) depends_on("r-ggrepel", type=("build", "run")) depends_on("r-viridis", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-tidygraph", type=("build", "run")) depends_on("r-graphlayouts@0.5.0:", type=("build", "run")) + depends_on("r-graphlayouts@1.1.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-withr", type=("build", "run"), when="@2.0.4:") depends_on("r-lifecycle", type=("build", "run"), when="@2.1.0:") + depends_on("r-memoise", type=("build", "run"), when="@2.2.0:") depends_on("r-vctrs", type=("build", "run"), when="@2.1.0:") depends_on("r-cli", type=("build", "run"), when="@2.1.0:") + depends_on("r-cpp11", type=("build", "run"), when="@2.2.0:") + + depends_on("r-rcpp@0.12.2:", type=("build", "run"), when="@:2.1.0") + depends_on("r-digest", type=("build", "run"), when="@:2.1.0") + depends_on("r-gtable", type=("build", "run"), when="@:2.1.0") diff --git a/var/spack/repos/builtin/packages/r-ggrastr/package.py b/var/spack/repos/builtin/packages/r-ggrastr/package.py index 67f07d652dc2fc..c25cf879ec2d05 100644 --- a/var/spack/repos/builtin/packages/r-ggrastr/package.py +++ b/var/spack/repos/builtin/packages/r-ggrastr/package.py @@ -18,6 +18,7 @@ class RGgrastr(RPackage): license("MIT") + version("1.0.2", sha256="cb27406dca99cea6440adf6edb7eb53141b60322452f5a5d4409e36516ad20d1") version("1.0.1", sha256="82d6e90fa38dec85e829f71018532ed5b709a50a585455fc07cb3bae282f5d1f") depends_on("r@3.2.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index ecb836d2bb666f..790f13ec54257d 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -17,6 +17,7 @@ class RGgrepel(RPackage): license("GPL-3.0-only OR custom") + version("0.9.5", sha256="d1e600e56c2ad345961ed23f30f04b81c631ff94bd6762a260c62e0206cf8caa") version("0.9.3", sha256="b9eba0e2edee84db0276b49e4834b65f5369edc4bc56f4cacc13e0d1c39a005c") version("0.9.2", sha256="0a3088c48177528e2a65defebbc4f09a744ebb44408588f688811f8d0d827488") version("0.9.1", sha256="29fb916d4799ba6503a5dd019717ffdf154d2aaae9ff1736f03e2be24af6bdfc") diff --git a/var/spack/repos/builtin/packages/r-ggridges/package.py b/var/spack/repos/builtin/packages/r-ggridges/package.py index b91e7d0b8d3c0e..48fae13e222df0 100644 --- a/var/spack/repos/builtin/packages/r-ggridges/package.py +++ b/var/spack/repos/builtin/packages/r-ggridges/package.py @@ -17,6 +17,7 @@ class RGgridges(RPackage): license("GPL-2.0-only OR custom") + version("0.5.6", sha256="efccaa309a150d11c6b402b912e618ea041f25cca3101f32cd821a6f41684e35") version("0.5.4", sha256="2bf71c2034804cec637e6748dc51d8cadad01d3ea4d14ace754327f082e8d851") version("0.5.3", sha256="f5eafab17f2d4a8a2a83821ad3e96ae7c26b62bbce9de414484c657383c7b42e") version("0.5.1", sha256="01f87cdcdf2052ed9c078d9352465cdeda920a41e2ca55bc154c1574fc651c36") @@ -27,6 +28,7 @@ class RGgridges(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r-ggplot2@2.2.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run"), when="@0.5.3:") + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@0.5.5:") depends_on("r-scales@0.4.1:", type=("build", "run")) depends_on("r-withr@2.1.1:", type=("build", "run"), when="@0.5.0:") diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py index 5c5f4a75fb76d5..fd0574863f1f4b 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -17,6 +17,7 @@ class RGgsci(RPackage): license("GPL-3.0-or-later") + version("3.2.0", sha256="41d8ed4c01c3740028bdf2ba9c5550f1142061e4a40c93b1d2160719c59c3c4a") version("3.0.0", sha256="8901316516d78f82a2a8685d93ba479424bcfd8cb5e28a28adbd50e68964e129") version("2.9", sha256="4af14e6f3657134c115d5ac5e65a2ed74596f9a8437c03255447cd959fe9e33c") version("2.8", sha256="b4ce7adce7ef23edf777866086f98e29b2b45b58fed085bbd1ffe6ab52d74ae8") diff --git a/var/spack/repos/builtin/packages/r-ggstats/package.py b/var/spack/repos/builtin/packages/r-ggstats/package.py new file mode 100644 index 00000000000000..b1b3678954085a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggstats/package.py @@ -0,0 +1,33 @@ +# 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) + +from spack.package import * + + +class RGgstats(RPackage): + """Provides new statistics, new geometries and new positions for + 'ggplot2' and a suite of functions to facilitate the creation of + statistical plots.""" + + homepage = "https://larmarange.github.io/ggstats/" + cran = "ggstats" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("0.6.0", sha256="f80aaa229f542cb18174b9ab82b0026c6bd3331f22bf2662712ab6af480b6d80") + + depends_on("r-broom-helpers@1.14.0:", type=("build", "run")) + depends_on("r-cli", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run")) + depends_on("r-forcats", type=("build", "run")) + depends_on("r-ggplot2@3.4.0:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run")) + depends_on("r-patchwork", type=("build", "run")) + depends_on("r-purrr", type=("build", "run")) + depends_on("r-rlang", type=("build", "run")) + depends_on("r-scales", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggthemes/package.py b/var/spack/repos/builtin/packages/r-ggthemes/package.py index a2689071ebba13..d325a1add6f3ba 100644 --- a/var/spack/repos/builtin/packages/r-ggthemes/package.py +++ b/var/spack/repos/builtin/packages/r-ggthemes/package.py @@ -19,11 +19,13 @@ class RGgthemes(RPackage): license("GPL-2.0-only") + version("5.1.0", sha256="074819acfe8bb2233426a0fef3bb448c5ce817bb14d517252fa05932e28bbd0e") version("4.2.4", sha256="7b35168cf5b68f6f52dd533a1b345ec87e09d1a85ca68e8dc5377cdf95718567") version("4.2.0", sha256="5bb3fe94819fe2cce7865f07a6e6ea5c59d3996f78d1c0836ad406f69efb3367") depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@5.0.0:") depends_on("r-purrr", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-stringr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggvis/package.py b/var/spack/repos/builtin/packages/r-ggvis/package.py index ac8864a19c3d79..75ead306ea1f9d 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -17,6 +17,7 @@ class RGgvis(RPackage): license("GPL-2.0-only OR custom") + version("0.4.9", sha256="69b9d184789c90aedd2f336d43033a8b710a16b052580bf9e7ce229ac25ba12f") version("0.4.8", sha256="3d5480a0b97a57c26b595785f826b13d7695dab1f1dd8fcf5d7964fa8546a26a") version("0.4.7", sha256="9e6b067e11d497c796d42156570e2481afb554c5db265f42afbb74d2ae0865e3") version("0.4.4", sha256="1332ea122b768688c8a407a483be80febc4576de0ec8929077738421b27cafaf") diff --git a/var/spack/repos/builtin/packages/r-gh/package.py b/var/spack/repos/builtin/packages/r-gh/package.py index e20962e5930ff1..7be200eaeec618 100644 --- a/var/spack/repos/builtin/packages/r-gh/package.py +++ b/var/spack/repos/builtin/packages/r-gh/package.py @@ -15,6 +15,7 @@ class RGh(RPackage): license("MIT") + version("1.4.1", sha256="76bd3f2a31eeaf76a633362899a20b0f7e8fb6159d4777baf3da2a47854292af") version("1.4.0", sha256="68c69fcd18429b378e639a09652465a4e92b7b5b5704804d0c5b1ca2b9b58b71") version("1.3.1", sha256="fbaea2abdeceb03d28839fd0e58c2eea01092f9ef92dcc044718ef0d298612ef") version("1.3.0", sha256="a44039054e8ca56496f2d9c7a10cdadf4a7383bc91086e768ba7e7f1fbcaed1c") @@ -23,13 +24,16 @@ class RGh(RPackage): version("1.0.1", sha256="f3c02b16637ae390c3599265852d94b3de3ef585818b260d00e7812595b391d2") depends_on("r@3.4:", type=("build", "run"), when="@1.3.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.4.1:") depends_on("r-cli", type=("build", "run"), when="@1.1.0:") depends_on("r-cli@2.0.1:", type=("build", "run"), when="@1.2.0:") depends_on("r-cli@3.0.1:", type=("build", "run"), when="@1.3.1:") depends_on("r-gitcreds", type=("build", "run"), when="@1.2.0:") + depends_on("r-glue", type=("build", "run"), when="@1.4.1:") depends_on("r-httr2", type=("build", "run"), when="@1.4.0:") depends_on("r-ini", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.4.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.4.0:") depends_on("r-httr@1.2:", type=("build", "run"), when="@1.1.0:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index a6718ceec1ce27..3586585e516b06 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -17,6 +17,7 @@ class RGit2r(RPackage): license("GPL-2.0-only") + version("0.33.0", sha256="1855b68d0e22566f1c255fdcb8e13282a2bebf55cbc804a8591dc8047f0e1895") version("0.32.0", sha256="1b5d254c0c684a56751d26d482823d0006964eb1f55c558f365d037f5e984671") version("0.31.0", sha256="f1db9278fa4604600a64beaedcf86dda595d7c8a10cdb1f7300a6635e73cd66d") version("0.30.1", sha256="85d913ddc7659e32c1b98ebc247fa1cc1b7717a5bd413fa78ea84696986ca840") @@ -30,6 +31,7 @@ class RGit2r(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@0.31.0:") + depends_on("r@4.0:", type=("build", "run"), when="@0.33.0:") depends_on("libgit2") depends_on("zlib-api") depends_on("openssl") diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index 1f613f021ac739..31e9bf049919c1 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -20,6 +20,7 @@ class RGlmnet(RPackage): license("GPL-2.0-only") + version("4.1-8", sha256="1ddbe5ce07076d1bdf58b0202ebd0ceac8eeb4796c5175681adb9e58c30ddcfe") version("4.1-7", sha256="b3a0b606d99df0256eb68e6ebd271e071b246900a4379641af2e7d548c70eaa8") version("4.1-4", sha256="f6b0f70a0b3d81ff91c2b94f795a2a32e90dd458270f1a29e49e085dd65000f9") version("4.1-3", sha256="64bc35aa40b6e580cfb8a21e649eb103e996e8747a10c476b8bb9545c846325a") diff --git a/var/spack/repos/builtin/packages/r-globals/package.py b/var/spack/repos/builtin/packages/r-globals/package.py index 954094aeca6e63..c9c1cca547b182 100644 --- a/var/spack/repos/builtin/packages/r-globals/package.py +++ b/var/spack/repos/builtin/packages/r-globals/package.py @@ -19,6 +19,7 @@ class RGlobals(RPackage): license("LGPL-2.1-or-later") + version("0.16.3", sha256="d73ced94248d8b81d29d774bdfc41496274d7da683a5d84440aed6a501a18c5b") version("0.16.2", sha256="682c26a95fa6c4e76a3a875be1a3192fc5b88e036c80dfa3b256add0336d770a") version("0.16.1", sha256="f7f63a575a3dd518c6afeabb4116bd26692a2a250df113059bc1a5b4711a1e95") version("0.15.0", sha256="f83689a420590b0d62b049c40a944c1c8c7202b3f1cc12102712c63104e99496") diff --git a/var/spack/repos/builtin/packages/r-glue/package.py b/var/spack/repos/builtin/packages/r-glue/package.py index a52dfa812fa89f..e31323deda5e22 100644 --- a/var/spack/repos/builtin/packages/r-glue/package.py +++ b/var/spack/repos/builtin/packages/r-glue/package.py @@ -19,6 +19,7 @@ class RGlue(RPackage): license("MIT") + version("1.7.0", sha256="1af51b51f52c1aeb3bfe9349f55896dd78b5542ffdd5654e432e4d646e4a86dc") version("1.6.2", sha256="9da518f12be584c90e75fe8e07f711ee3f6fc0d03d817f72c25dc0f66499fdbf") version("1.6.1", sha256="318c2f9544f1204216009f512793c44d6bbe178ff2012f56fa5ffb5e1da978db") version("1.6.0", sha256="77bef37ef2c47aad6188ea772880591c5763cce4b1c256e10e68e7c3ec6b4338") @@ -32,3 +33,4 @@ class RGlue(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@1.4.2:") depends_on("r@3.4:", type=("build", "run"), when="@1.6.0:") + depends_on("r@3.6:", when="@1.7.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index f43e4c2660faf2..7f1cf3a5fa3244 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -13,6 +13,7 @@ class RGmodels(RPackage): license("GPL-2.0-only") + version("2.19.1", sha256="bb57b83274dcc6c62eeb0d0b041d81ed19daca927bcd3872c4667ccfe3e9888d") version("2.18.1.1", sha256="da7d48021b7cd2fd8a7cd8d0bb9658b12342a32698a13877b25ca94aa03f1e95") version("2.18.1", sha256="626140a34eb8c53dd0a06511a76c71bc61c48777fa76fcc5e6934c9c276a1369") version("2.16.2", sha256="ab018894bdb376c5bd6bc4fbc4fe6e86590f4106795a586ef196fbb6699ec47d") diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py index 85d4797c3a266d..615fba4dd2f4ca 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -17,6 +17,7 @@ class RGmp(RPackage): license("GPL-2.0-or-later") + version("0.7-4", sha256="a7d6b40f77d2619c11db5170b8f47336f7c5fa1db7eed0ac9d8a432e41053919") version("0.7-1", sha256="a6873dc65218905cb7615cb8e2522258f3740e29c0632473d58a1cb409835db6") version("0.6-7", sha256="6333fe691f267aa29f8078f7f738dda50c496f660357276fd33e28d607363f85") version("0.6-6", sha256="87fa95a8084855d2137b3863b6b8f3c277280dbe3a6a230e359cf32c3bed2793") diff --git a/var/spack/repos/builtin/packages/r-googleauthr/package.py b/var/spack/repos/builtin/packages/r-googleauthr/package.py index 81e0152f89bdf7..6e7953fb88d944 100644 --- a/var/spack/repos/builtin/packages/r-googleauthr/package.py +++ b/var/spack/repos/builtin/packages/r-googleauthr/package.py @@ -15,6 +15,7 @@ class RGoogleauthr(RPackage): cran = "googleAuthR" + version("2.0.2", sha256="fd55c85b5f78aa52b6e5cabd4143162cb497ab7288c8db3676acf58a0f393996") version("2.0.1", sha256="9b19a63bc250151674f20b27389baa95c10cc62dc7c3c0ff12a8d684bdb8a14b") version("2.0.0", sha256="ba504baf3bde2e1b3e988bee7602df5765cc6ca542cf0ab76a782c4e60966feb") diff --git a/var/spack/repos/builtin/packages/r-googledrive/package.py b/var/spack/repos/builtin/packages/r-googledrive/package.py index 9f39117c087821..c9e45bb0cf687a 100644 --- a/var/spack/repos/builtin/packages/r-googledrive/package.py +++ b/var/spack/repos/builtin/packages/r-googledrive/package.py @@ -15,20 +15,24 @@ class RGoogledrive(RPackage): license("MIT") + version("2.1.1", sha256="0b8b4f74ba3630b0347249a32a80bc5fc2e8b63ad2952702f30162bd2d38fb82") version("2.1.0", sha256="0d70353bbf1bebc96d3987ebd9cbb2b0902e6ddc4cdccece3d07c2bb688c4b74") version("2.0.0", sha256="605c469a6a086ef4b049909c2e20a35411c165ce7ce4f62d68fd39ffed8c5a26") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@2.1.0:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.1:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-gargle@1.2.0:", type=("build", "run")) depends_on("r-gargle@1.3.0:", type=("build", "run"), when="@2.1.0:") + depends_on("r-gargle@1.5.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-glue@1.4.2:", type=("build", "run")) depends_on("r-httr", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run")) depends_on("r-magrittr", type=("build", "run")) depends_on("r-pillar", type=("build", "run")) + depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-purrr@0.2.3:", type=("build", "run")) depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@2.1.0:") depends_on("r-rlang@0.4.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-googlesheets4/package.py b/var/spack/repos/builtin/packages/r-googlesheets4/package.py index a959eb236b1151..0a1afe0dc2984a 100644 --- a/var/spack/repos/builtin/packages/r-googlesheets4/package.py +++ b/var/spack/repos/builtin/packages/r-googlesheets4/package.py @@ -21,6 +21,7 @@ class RGooglesheets4(RPackage): license("MIT") + version("1.1.1", sha256="c5cc63348c54b9de8492e7b12b249245746ea1ff33e306f12431f4fc9386fccf") version("1.1.0", sha256="50e15543bef5b8d8cda36f6ea8a1d59b256d889cd3cedddc91f00ae30c8c8ec9") version("1.0.1", sha256="284ecbce98944093cb065c1b0b32074eae7b45fd74b87d7815c7ca6deca76591") version("1.0.0", sha256="0a107d76aac99d6db48d97ce55810c1412b2197f457b8476f676169a36c7cc7a") @@ -28,11 +29,13 @@ class RGooglesheets4(RPackage): depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.0.1:") depends_on("r@3.5:", type=("build", "run"), when="@1.1.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.1.1:") depends_on("r-cellranger", type=("build", "run")) depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-curl", type=("build", "run")) depends_on("r-gargle@1.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-gargle@1.3.0:", type=("build", "run"), when="@1.1.0:") + depends_on("r-gargle@1.5.0:", type=("build", "run"), when="@1.1.1:") depends_on("r-glue@1.3.0:", type=("build", "run")) depends_on("r-googledrive@2.0.0:", type=("build", "run")) depends_on("r-googledrive@2.1.0:", type=("build", "run"), when="@1.1.0:") diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 8200e7c0d62bdc..93a6e5b93d23dd 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -19,6 +19,7 @@ class RGooglevis(RPackage): license("CC-BY-SA-4.0") + version("0.7.3", sha256="5647ff552de5216b56ae758f29e411d04b754f482adbd3f41277d741b7708c6b") version("0.7.1", sha256="335931059ea8645f824b01a06d30fafb4e38b47cd610a5eee20628801767f218") version("0.7.0", sha256="5f1636024e678f9973e3ce605b46f46ea9cdffd58b98e315b495e66f34eb02e9") version("0.6.11", sha256="f8c90b6c51da7bf184bff6762d98fc24faba1b634724ecdb987161ee10987b97") diff --git a/var/spack/repos/builtin/packages/r-gparotation/package.py b/var/spack/repos/builtin/packages/r-gparotation/package.py index d1a486174641af..20c35487d6b2e6 100644 --- a/var/spack/repos/builtin/packages/r-gparotation/package.py +++ b/var/spack/repos/builtin/packages/r-gparotation/package.py @@ -14,6 +14,7 @@ class RGparotation(RPackage): cran = "GPArotation" + version("2024.3-1", sha256="88f657af29789591d581e0c529fd50ef1307abfb33e0403209bd3e591e2654da") version("2023.3-1", sha256="8748086c3d45286b7c9a81f0f8e58df75a09ba555d48a6eb8cd94af0c7c92a26") version("2022.10-2", sha256="04f72d8f3a9c204df5df904be563ec272a8437a707daee8823b2a690dde21917") version("2022.4-1", sha256="231e7edcdcc091fbecfb4f2e88d1a4344967cf7ea58074b385a4b8b48d9da224") diff --git a/var/spack/repos/builtin/packages/r-gplots/package.py b/var/spack/repos/builtin/packages/r-gplots/package.py index bde5c06bef5850..f56d39a4537021 100644 --- a/var/spack/repos/builtin/packages/r-gplots/package.py +++ b/var/spack/repos/builtin/packages/r-gplots/package.py @@ -34,6 +34,7 @@ class RGplots(RPackage): license("GPL-2.0-only") + version("3.1.3.1", sha256="1ae1de94f27583ad84543a15f042b8dbd0850c56447929c7157787d755211af2") version("3.1.3", sha256="9f853b9e205264d087e61e8825f797ce36c9eb585b187dab794563613a526716") version("3.1.1", sha256="f9ae19c2574b6d41adbeccaf7bc66cf56d7b2769004daba7e0038d5fbd821339") version("3.0.1.1", sha256="7db103f903a25d174cddcdfc7b946039b61e236c95084b90ad17f1a41da3770c") diff --git a/var/spack/repos/builtin/packages/r-graphlayouts/package.py b/var/spack/repos/builtin/packages/r-graphlayouts/package.py index 7a0aadaed50965..57e5a06145277f 100644 --- a/var/spack/repos/builtin/packages/r-graphlayouts/package.py +++ b/var/spack/repos/builtin/packages/r-graphlayouts/package.py @@ -19,6 +19,7 @@ class RGraphlayouts(RPackage): license("MIT") + version("1.1.1", sha256="7bc2459a02b1339ac01184a76687a3e50de5680f4699b5966a3f2e6a882f3801") version("0.8.4", sha256="778d8f7e190b05d0dbbaa7e6dbdfc0b8fef3c83b71333a6fa89926e6c04690fd") version("0.8.3", sha256="f9e4e5d794b4d1c6eba962490b3220d09b73e10893f5fa3be210240bfc654421") version("0.8.2", sha256="0fa2777a2c159f3ef1209cd96838d2651d144c9c971abfef1d22bc6376f47bec") diff --git a/var/spack/repos/builtin/packages/r-grbase/package.py b/var/spack/repos/builtin/packages/r-grbase/package.py index ce963aa539325e..d304465f2f6ae2 100644 --- a/var/spack/repos/builtin/packages/r-grbase/package.py +++ b/var/spack/repos/builtin/packages/r-grbase/package.py @@ -26,6 +26,7 @@ class RGrbase(RPackage): cran = "gRbase" + version("2.0.2", sha256="36720e49b82e360166386c9b3bf17838aeb6d9b921e7e01d48f8a115f9a02e97") version("1.8.9", sha256="dacab442d896e4593c6196e8446b75c4144a1c4ebc3f039dc624516038193d7e") version("1.8.8", sha256="fdd5d1ca8adb74e8bd2b210c9a652a10e60a90b40450cd8a295b06af41acf9db") version("1.8.7", sha256="01d77e1b029ac22b4e13f07384285f363733a42aba842eddfc5e1aceea99f808") @@ -35,13 +36,15 @@ class RGrbase(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.6.0:", type=("build", "run"), when="@1.8-6.7:") - depends_on("r-biocmanager", type=("build", "run"), when="@1.8.7:") - depends_on("r-graph", type=("build", "run")) - depends_on("r-rbgl", type=("build", "run")) - depends_on("r-rgraphviz", type=("build", "run"), when="@1.8-6.7:") + depends_on("r@4.2.0:", type=("build", "run"), when="@2.0.2:") depends_on("r-igraph", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.1") depends_on("r-matrix", type=("build", "run")) depends_on("r-rcpp@0.11.1:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) depends_on("r-rcpparmadillo", type=("build", "run")) + + depends_on("r-biocmanager", type=("build", "run"), when="@1.8.7:1.9") + depends_on("r-graph", type=("build", "run"), when="@:1.9") + depends_on("r-rbgl", type=("build", "run"), when="@:1.9") + depends_on("r-rgraphviz", type=("build", "run"), when="@1.8-6.7:1.9") diff --git a/var/spack/repos/builtin/packages/r-gsa/package.py b/var/spack/repos/builtin/packages/r-gsa/package.py index 71c0da0a61bfdb..cb18bcb178375d 100644 --- a/var/spack/repos/builtin/packages/r-gsa/package.py +++ b/var/spack/repos/builtin/packages/r-gsa/package.py @@ -11,5 +11,6 @@ class RGsa(RPackage): cran = "GSA" + version("1.03.3", sha256="5459786190f40339addc45e7bb58c6a983548aa8feac7277ea7ec0662c5a282c") version("1.03.2", sha256="177d6059fc645d3d8883806d2dea1c5dfc68efdada9aadde8a96b6d57acf35b8") version("1.03.1", sha256="e192d4383f53680dbd556223ea5f8cad6bae62a80a337ba5fd8d05a8aee6a917") diff --git a/var/spack/repos/builtin/packages/r-gsodr/package.py b/var/spack/repos/builtin/packages/r-gsodr/package.py index da64fb09535cc8..128bd3219c47a2 100644 --- a/var/spack/repos/builtin/packages/r-gsodr/package.py +++ b/var/spack/repos/builtin/packages/r-gsodr/package.py @@ -31,6 +31,7 @@ class RGsodr(RPackage): license("MIT") + version("4.1.1", sha256="d5bf80244b5562206f459cb0ed588c11f8edf4eb2a26e2715be7938ec6be92e0") version("3.1.8", sha256="f43668b14be30632086b832be83c74fa7c25e123fbce0d0203e992a0c11e7c8d") version("3.1.6", sha256="fbeac54e86fba1e4415b41608ca59cf50be1b421cc890eb5c5b0d6d1c9229f6a") version("3.1.5", sha256="37682141707d7e29fab653ccdeb154fea2c085080f686b33f1a54140608e824d") @@ -43,7 +44,7 @@ class RGsodr(RPackage): depends_on("r-curl", type=("build", "run")) depends_on("r-data-table@1.11.6:", type=("build", "run"), when="@:2.1.2") depends_on("r-data-table", type=("build", "run")) - depends_on("r-httr", type=("build", "run")) depends_on("r-r-utils", type=("build", "run")) + depends_on("r-httr", type=("build", "run"), when="@:3.1.8") depends_on("r-future-apply", type=("build", "run"), when="@:2.1.2") diff --git a/var/spack/repos/builtin/packages/r-gss/package.py b/var/spack/repos/builtin/packages/r-gss/package.py index 6cc95a075d8364..22b02013056b76 100644 --- a/var/spack/repos/builtin/packages/r-gss/package.py +++ b/var/spack/repos/builtin/packages/r-gss/package.py @@ -16,6 +16,7 @@ class RGss(RPackage): license("GPL-2.0-or-later") + version("2.2-7", sha256="3b13144702c570c83462b4ea2ad17f4bd630cff5bf2ab0347a33c7e86a4f3f6a") version("2.2-4", sha256="953e89dfe3bee9cac51df3e5325bf4d1496ad76e4393706c4efdb1834c0c7441") version("2.2-3", sha256="24306401cf4e5869f8a690eca7e17c044ece83edd66969bd2daf5976272d244b") version("2.2-2", sha256="1da4da894378ee730cff9628e8b4d2a0d7dfa344b94e5bce6953e66723c21fe4") diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index 1e05bf47a54989..eb6c091d62ce6d 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -19,6 +19,7 @@ class RGtable(RPackage): license("MIT") + version("0.3.5", sha256="b19fc1a30359945adbab7d4e915fe95523a839c380e34ae705d70b7ebddeea72") version("0.3.3", sha256="2f9a58d978e2a487b7fd8841539ea33cf948e55ddf6f7a9bd2dd3362600a7b3a") version("0.3.1", sha256="8bd62c5722d5188914d667cabab12991c555f657f4f5ce7b547571ae3aec7cb5") version("0.3.0", sha256="fd386cc4610b1cc7627dac34dba8367f7efe114b968503027fb2e1265c67d6d3") diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index 2a6d23fc12c779..9cff33ad4e6d23 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -45,6 +45,7 @@ class RGtools(RPackage): license("GPL-2.0-only") + version("3.9.5", sha256="dee9b6c1152db1a5dc427d074b32bbbb738708683f17a95e0e95e4d79fdf174b") version("3.9.4", sha256="59cf8b194fe98b1cc05dbb4d686810a1068f59d8b402b731548a898ece85f111") version("3.9.3", sha256="7afb53277b382d5752f4597ae433f3c0addf5e8eb24d01a9562faf2a01e33133") version("3.9.2.1", sha256="ec5febad7bb33812684b39679b0bce8a668361b87714f7388546e0f4ac02af5f") diff --git a/var/spack/repos/builtin/packages/r-gwmodel/package.py b/var/spack/repos/builtin/packages/r-gwmodel/package.py index 4a83437510d5c0..74c48ee274fa76 100644 --- a/var/spack/repos/builtin/packages/r-gwmodel/package.py +++ b/var/spack/repos/builtin/packages/r-gwmodel/package.py @@ -24,6 +24,7 @@ class RGwmodel(RPackage): cran = "GWmodel" + version("2.3-3", sha256="5f69d000d7ffba491f1dafbad5ec0b5fcbbdb28831092252a8b409163d6ad33c") version("2.2-9", sha256="3696e0f24994df4f393dbcb2e74bc0808704b80e1203247be3911fc3bcdb5f18") version("2.2-8", sha256="5b1890dbf75502e89b651efd9158be77b3cfa764a5717f9889f438ed2b0a4da2") version("2.2-2", sha256="4e2b221b85fbc828ffc4f057c137ded849afcaac2a75c27d2d6d0a6db17f8a06") @@ -32,14 +33,18 @@ class RGwmodel(RPackage): version("2.0-9", sha256="b479af2c19d4aec30f1883d00193d52e342c609c1badcb51cc0344e4404cffa7") depends_on("r@3.0.0:", type=("build", "run")) - depends_on("r-maptools@0.5-2:", type=("build", "run")) depends_on("r-robustbase", type=("build", "run")) + depends_on("r-sf", type=("build", "run"), when="@2.3-1:") depends_on("r-sp", type=("build", "run")) - depends_on("r-sp@1.4-0:", type=("build", "run"), when="@2.2-2:") - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-sp@1.4-0.1:", type=("build", "run"), when="@2.2-0:") depends_on("r-spatialreg", type=("build", "run")) depends_on("r-spacetime", type=("build", "run")) depends_on("r-spdep", type=("build", "run")) depends_on("r-fnn", type=("build", "run"), when="@2.1-1:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpp@1.0.12:", type=("build", "run"), when="@2.3-3:") depends_on("r-rcpparmadillo", type=("build", "run")) + depends_on("r-rcppeigen", type=("build", "run"), when="@2.3-3:") depends_on("gmake", type="build") + + depends_on("r-maptools@0.5-2:", type=("build", "run"), when="@:2.2") diff --git a/var/spack/repos/builtin/packages/r-hardhat/package.py b/var/spack/repos/builtin/packages/r-hardhat/package.py index 88330864e76803..9966baaf3eec55 100644 --- a/var/spack/repos/builtin/packages/r-hardhat/package.py +++ b/var/spack/repos/builtin/packages/r-hardhat/package.py @@ -21,6 +21,7 @@ class RHardhat(RPackage): license("MIT") + version("1.4.0", sha256="46d023ddfc8f940cd889478fa91c42e894a0df58a10f3b6c0eb688a500b2b3ad") version("1.3.0", sha256="fe9ff009e2ba6dd4d70cbb541430f88d85c0a28d6a1c2772e4910c79b81fe82e") version("1.2.0", sha256="f9320eccb1b5f624a46fa074e3ccc202c383b77098ecd08b193aeb47daedad78") version("1.0.0", sha256="2740dc243a440e7d32370a78f9258255faea6d900075901cf6009c651769e7bd") diff --git a/var/spack/repos/builtin/packages/r-haven/package.py b/var/spack/repos/builtin/packages/r-haven/package.py index 220171dbcea1f1..8bd719fa2b8022 100644 --- a/var/spack/repos/builtin/packages/r-haven/package.py +++ b/var/spack/repos/builtin/packages/r-haven/package.py @@ -33,6 +33,7 @@ class RHaven(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@2.1.1:") depends_on("r@3.4:", type=("build", "run"), when="@2.5.0:") + depends_on("r@3.6:", type=("build", "run"), when="@2.5.4:") depends_on("r-cli@3.0.0:", type=("build", "run"), when="@2.5.0:") depends_on("r-forcats@0.2.0:", type=("build", "run")) depends_on("r-hms", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hdf5r/package.py b/var/spack/repos/builtin/packages/r-hdf5r/package.py index 259c32003b9f16..257fb41bb7df3f 100644 --- a/var/spack/repos/builtin/packages/r-hdf5r/package.py +++ b/var/spack/repos/builtin/packages/r-hdf5r/package.py @@ -20,6 +20,7 @@ class RHdf5r(RPackage): license("Apache-2.0 OR custom") + version("1.3.11", sha256="9795d667bc72acfabece1e3ece1aa4e60e8194cb4eb8b46985efccd19a55a8c4") version("1.3.8", sha256="b53281e2cf57447965849748e972de2f7fe8df0cee3538ef5813c33c7ed2302b") version("1.3.7", sha256="6e8a02843ed1c970cb41f97e2acee34853d3b70ce617bc9bcff07c41b98f295b") version("1.3.5", sha256="87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f") diff --git a/var/spack/repos/builtin/packages/r-hh/package.py b/var/spack/repos/builtin/packages/r-hh/package.py index da38dfed21b413..9f8fc014c5f88f 100644 --- a/var/spack/repos/builtin/packages/r-hh/package.py +++ b/var/spack/repos/builtin/packages/r-hh/package.py @@ -25,6 +25,7 @@ class RHh(RPackage): cran = "HH" + version("3.1-52", sha256="d5495e18df65de613d9bdc43729ca2ac27746b15b90c06502b2ee5e2458d0383") version("3.1-49", sha256="12cef0cb0a07c745026d925aee2970913e1f3f0705a58bc2741bf4940c80b87b") version("3.1-47", sha256="50910ac7de49122df56c6e42413535601c74bbef9240ad8977e3267273d087c0") version("3.1-43", sha256="2ed35c8fc97092e9d2ce3439a2ec342d5d7bd93ad8f5266995cc80d88cd2235b") diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 7452077ba82f4a..ea8d5febbdadff 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -17,6 +17,7 @@ class RHighr(RPackage): license("GPL-2.0-or-later") + version("0.11", sha256="e90d14284001963325a84a9dbeef029609d52515da8d65c87ae61be21b7fe0a7") version("0.10", sha256="ec55bc1ff66390ed66806dc2a7b6c17dbfd089b3d73fe2e369017f8cb4bc347b") version("0.9", sha256="beff11390d936c90fdcc00e7ed0eb72220f3de403a51b56659e3d3e0b6d8ed4d") version("0.8", sha256="4bd01fba995f68c947a99bdf9aca15327a5320151e10bd0326fad50a6d8bc657") diff --git a/var/spack/repos/builtin/packages/r-hmisc/package.py b/var/spack/repos/builtin/packages/r-hmisc/package.py index 2ea88f61d0f89b..e2dc348b458769 100644 --- a/var/spack/repos/builtin/packages/r-hmisc/package.py +++ b/var/spack/repos/builtin/packages/r-hmisc/package.py @@ -17,6 +17,7 @@ class RHmisc(RPackage): cran = "Hmisc" + version("5.1-3", sha256="3c61772ff7a78ca5855189faa810c74117dc5df240103adc6e90eb94e9c605eb") version("5.0-1", sha256="db390f8f8a150cb5cffb812e9609a8e8632ceae0dc198528f190fd670ba8fa59") version("4.7-1", sha256="325d571a68b2198eabd258a8d86143cac659ffa70e474088a18e9b58ab882e7f") version("4.7-0", sha256="29ec2d9ca11c790c350e93323126bef4f498c69c41c31bb335fd04671e0f87bd") @@ -26,6 +27,7 @@ class RHmisc(RPackage): version("4.2-0", sha256="9e9614673288dd00295f250fa0bf96fc9e9fed692c69bf97691081c1a01411d9") version("4.1-1", sha256="991db21cdf73ffbf5b0239a4876b2e76fd243ea33528afd88dc968792f281498") + depends_on("r@4.1.0:", type=("build", "run"), when="@5.1-2:") depends_on("r-formula", type=("build", "run")) depends_on("r-ggplot2@2.2:", type=("build", "run")) depends_on("r-cluster", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hoardr/package.py b/var/spack/repos/builtin/packages/r-hoardr/package.py index 1002268151896c..dfeffebdd952c2 100644 --- a/var/spack/repos/builtin/packages/r-hoardr/package.py +++ b/var/spack/repos/builtin/packages/r-hoardr/package.py @@ -19,6 +19,7 @@ class RHoardr(RPackage): license("MIT") + version("0.5.4", sha256="4e031ac1317584451c09bc8288ed73fb2d6ceea3c10d29dbb4be08157e489a37") version("0.5.3", sha256="b9e4d1350e1fde7db922e55128306e3768ee46ff9532f05c96543dcae383647c") version("0.5.2", sha256="819113f0e25da105f120a676b5173872a4144f2f6f354cad14b35f898e76dc54") diff --git a/var/spack/repos/builtin/packages/r-htmltable/package.py b/var/spack/repos/builtin/packages/r-htmltable/package.py index e381c8773dc321..d6fc8d50c56630 100644 --- a/var/spack/repos/builtin/packages/r-htmltable/package.py +++ b/var/spack/repos/builtin/packages/r-htmltable/package.py @@ -18,6 +18,7 @@ class RHtmltable(RPackage): cran = "htmlTable" + version("2.4.3", sha256="3739d01bff313ccd206b63940a8252b037f0521d041c721a4e0d195abd6ef6dd") version("2.4.1", sha256="3a7f3e75d886dc398fd1d3cae907b536fff6af3a3d2c18349ef12ec06d310f93") version("2.4.0", sha256="4ca2b5616d77cfeee8ae5ca74307b86407d478b12d1ce17ba9c447e233b89a9d") version("2.1.0", sha256="4049339b317cbec1c8c7930e2e36cf0fc8b002516092dd270bb794d8db02f0bf") @@ -25,6 +26,7 @@ class RHtmltable(RPackage): version("1.11.2", sha256="64a273b1cdf07a7c57b9031315ca665f95d78e70b4320d020f64a139278877d1") version("1.9", sha256="5b487a7f33af77db7d987bf61f3ef2ba18bb629fe7b9802409f8b3485c603132") + depends_on("r@4.1:", type=("build", "run"), when="@2.4.2:") depends_on("r-stringr", type=("build", "run")) depends_on("r-knitr@1.6:", type=("build", "run")) depends_on("r-magrittr@1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index 8af75e17e41365..643f2b00c2104c 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -15,6 +15,7 @@ class RHtmltools(RPackage): license("GPL-2.0-or-later") + version("0.5.8.1", sha256="f9f62293ec06c353c4584db6ccedb06a2da12e485208bd26b856f17dd013f176") version("0.5.5", sha256="c8b23fab855a89c6ed0f6d6c7cad0ff9c5ae329c0bdb479940443ee752f26659") version("0.5.3", sha256="2c451b369ea8918358e2b280f548816664fe0143222c609e6bfb1f9cd2f7324f") version("0.5.2", sha256="7dc7d50436e5a82a5801f85bcd2f572a06a98b4027d71aa17b4854ec9b2767fb") @@ -26,9 +27,10 @@ class RHtmltools(RPackage): depends_on("r@2.14.1:", type=("build", "run")) depends_on("r-digest", type=("build", "run")) depends_on("r-base64enc", type=("build", "run"), when="@0.5.1:") - depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@0.5.2:") depends_on("r-rlang", type=("build", "run"), when="@0.5.1:") + depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@0.5.2:") + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@0.5.7:") depends_on("r-fastmap@1.1.0:", type=("build", "run"), when="@0.5.2:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.5.5:") + depends_on("r-ellipsis", type=("build", "run"), when="@0.5.5:0.5.7") depends_on("r-rcpp", type=("build", "run"), when="@:0.3.6") diff --git a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py index 95e0cbd21c22d1..f7b0a0c38e3e75 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -17,6 +17,7 @@ class RHtmlwidgets(RPackage): license("MIT") + version("1.6.4", sha256="7cb08f0b30485dac26f72e4056ec4ed8825d1398e8b9f25ed63db228fe3a0ed0") version("1.6.2", sha256="7fda1672a4c0fbc203c790677b6ee7c40d2c2d72be4f6772f75288fc712b10bc") version("1.5.4", sha256="1a3fc60f40717de7f1716b754fd1c31a132e489a2560a278636ee78eba46ffc1") version("1.5.3", sha256="01a5833182cc224bd100be2815e57e67b524de9f2bb1542787b6e3d1303f0f29") @@ -27,6 +28,7 @@ class RHtmlwidgets(RPackage): depends_on("r-htmltools@0.3:", type=("build", "run")) depends_on("r-htmltools@0.5.4:", type=("build", "run"), when="@1.6.2:") + depends_on("r-htmltools@0.5.7:", type=("build", "run"), when="@1.6.3:") depends_on("r-jsonlite@0.9.16:", type=("build", "run")) depends_on("r-yaml", type=("build", "run")) depends_on("r-rmarkdown", type=("build", "run"), when="@1.6.2:") diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index e54167e7d60efd..8801ddadc3ef53 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -21,6 +21,7 @@ class RHttpuv(RPackage): license("GPL-2.0-or-later OR custom") + version("1.6.15", sha256="5e6ded3623a39df3e1db6cb7e7292b4c03c80b3c6c5faaac3b78b711cb205ed0") version("1.6.9", sha256="8d77f25b22fa7473b45007c2048e9a38d3792d59b2716e1fcdf9e99bd585d95d") version("1.6.6", sha256="41395fd324c5cb884d4f2a8060744758904119db22eeb312f2ea1e7ad7711293") version("1.6.5", sha256="f5f63629ca5e9d0e396a89982d95b5286726c0cb425166f35a3ad32a60a79156") diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index 028903fd0c251f..a66b9a2c55fda8 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -17,6 +17,7 @@ class RHttr(RPackage): license("MIT") + version("1.4.7", sha256="1555e6c2fb67bd38ff11b479f74aa287b2d93f4add487aec53b836ff07de3a3a") version("1.4.5", sha256="f93bac7f882b0df099abca47dd5aae3686fb3cd2d3e9926fcd639bcddff76f6c") version("1.4.4", sha256="41d82523f3ee260d409a7b5ae4136190cbc5aecbc270b40ed7064f83e7f5435d") version("1.4.3", sha256="9a8613fa96173ac910c021391af1ced4d0609169049c802cf7cdfe1c40897c6a") @@ -32,6 +33,7 @@ class RHttr(RPackage): depends_on("r@3.2:", type=("build", "run"), when="@1.4.1:") depends_on("r@3.5:", type=("build", "run"), when="@1.4.5:") depends_on("r-curl@3.0.0:", type=("build", "run")) + depends_on("r-curl@5.0.2:", type=("build", "run"), when="@1.4.7:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-mime", type=("build", "run")) depends_on("r-openssl@0.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-httr2/package.py b/var/spack/repos/builtin/packages/r-httr2/package.py index 4ca63c8d50684d..29f21c022cc990 100644 --- a/var/spack/repos/builtin/packages/r-httr2/package.py +++ b/var/spack/repos/builtin/packages/r-httr2/package.py @@ -18,15 +18,21 @@ class RHttr2(RPackage): license("MIT") + version("1.0.2", sha256="d1f8e37f74a59f4e1b3b886e5f453336ba14251e500acdccc8f4f7d2b9300048") version("0.2.2", sha256="5d1ab62541f7817112519f0f9d00d6a2555bab5b2da7f5c6d579b0c307d7f2bf") depends_on("r@3.4:", type=("build", "run")) + depends_on("r@4.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-curl", type=("build", "run")) + depends_on("r-curl@5.1.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.0.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-openssl", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-rappdirs", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@1.0.0:") depends_on("r-withr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hydrogof/package.py b/var/spack/repos/builtin/packages/r-hydrogof/package.py index 3f5f11b161aa76..de6840e4a4d509 100644 --- a/var/spack/repos/builtin/packages/r-hydrogof/package.py +++ b/var/spack/repos/builtin/packages/r-hydrogof/package.py @@ -19,6 +19,7 @@ class RHydrogof(RPackage): cran = "hydroGOF" + version("0.6-0", sha256="fb1839da5d6c2d0bbff961b4bb39d149b487b59dc36017aada9d3484a842269e") version("0.4-0", sha256="6a109740e36549a9369b5960b869e5e0a296261df7b6faba6cb3bd338d59883b") depends_on("r@2.10.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hydrotsm/package.py b/var/spack/repos/builtin/packages/r-hydrotsm/package.py index 2fd5cde5e956cc..5cfc85af6cc565 100644 --- a/var/spack/repos/builtin/packages/r-hydrotsm/package.py +++ b/var/spack/repos/builtin/packages/r-hydrotsm/package.py @@ -22,14 +22,18 @@ class RHydrotsm(RPackage): cran = "hydroTSM" + version("0.7-0", sha256="a6e1f0f74a5b8f3a7c05d020739342278b0a54e7b63a66a755db5599ebf94a8e") version("0.6-0", sha256="5be759845ce05ca579ed2657c85d497b78c3060d737e84fcd457153045db4ad7") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.7-0:") depends_on("r-zoo@1.7-2:", type=("build", "run")) depends_on("r-xts@0.9-7:", type=("build", "run")) depends_on("r-e1071", type=("build", "run")) - depends_on("r-gstat", type=("build", "run")) - depends_on("r-automap", type=("build", "run")) - depends_on("r-sp@1.1-0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) - depends_on("r-maptools", type=("build", "run")) + depends_on("r-classint", type=("build", "run"), when="@0.7-0:") + + depends_on("r-gstat", type=("build", "run"), when="@:0.6.0") + depends_on("r-automap", type=("build", "run"), when="@:0.6.0") + depends_on("r-sp@1.1-0:", type=("build", "run"), when="@:0.6.0") + depends_on("r-maptools", type=("build", "run"), when="@:0.6.0") diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index dba6d2beabbd6d..cb89fe650b86bf 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -17,6 +17,7 @@ class RIgraph(RPackage): license("GPL-2.0-or-later") + version("2.0.3", sha256="8e8a172d4567219474562cfb1085496be3ab356483c4e88011aca1fc3b2d8f76") version("1.4.2", sha256="7d5300adb1a25a6470cada8630e35ef416181147ab624d5a0a8d3552048c4ae5") version("1.3.5", sha256="9e615d67b6b5b57dfa54ec2bbc8c29da8f7c3fe82af1e35ab27273b1035b9bd4") version("1.3.1", sha256="505a2ba7c417ceaf869240cc1c9a5f3fbd75f8d9dfcfe048df1326c6ec41144e") @@ -28,12 +29,18 @@ class RIgraph(RPackage): version("1.0.1", sha256="dc64ed09b8b5f8d66ed4936cde3491974d6bc5178dd259b6eab7ef3936aa5602") depends_on("r@3.0.2:", type=("build", "run"), when="@1.4.2:") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.5.0:") + depends_on("r-cli", type=("build", "run"), when="@1.5.0:") + depends_on("r-cpp11@0.2.0:", type=("build", "run"), when="@1.4.2:") + depends_on("r-cpp11@0.4.7:", type=("build", "run"), when="@1.6.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.5.0.1:") + depends_on("r-vctrs", type=("build", "run"), when="@2.0.3:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-pkgconfig@2.0.0:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.3.5:") - depends_on("r-cpp11@0.2.0:", type=("build", "run"), when="@1.4.2:") + depends_on("r-vctrs", type=("build", "run"), when="@2.0.2:") depends_on("gmp") depends_on("gmp@4.38:", when="@1.2.11:") depends_on("libxml2") diff --git a/var/spack/repos/builtin/packages/r-imager/package.py b/var/spack/repos/builtin/packages/r-imager/package.py index b132cfee0f1611..6b36e21629cf9f 100644 --- a/var/spack/repos/builtin/packages/r-imager/package.py +++ b/var/spack/repos/builtin/packages/r-imager/package.py @@ -20,6 +20,7 @@ class RImager(RPackage): license("LGPL-3.0-only") + version("1.0.2", sha256="7c849086cb17d6c5aefc106217363e14afbcda2a9e0120687d40805b5e1c566a") version("0.42.19", sha256="187abccba648ecece5e466ca6333acd5c8fdd1476daa2d04d5fa9ec5400ae1e2") version("0.42.13", sha256="d90a9893d11190ba249c7fae5bd6517a77907efbce2941452cb2aec57bb5cf7f") version("0.42.11", sha256="47f8b7ff8d05a5191e30ad1869f12a62bdbe3142b22b12a6032dec9b5f8532a8") @@ -29,8 +30,10 @@ class RImager(RPackage): depends_on("r+X") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rcpp@0.11.5:", type=("build", "run")) + depends_on("r-rcpp@1.0.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-stringr", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-influencer/package.py b/var/spack/repos/builtin/packages/r-influencer/package.py index e3e60fa1dfd4aa..b26eeb2e580c49 100644 --- a/var/spack/repos/builtin/packages/r-influencer/package.py +++ b/var/spack/repos/builtin/packages/r-influencer/package.py @@ -20,6 +20,7 @@ class RInfluencer(RPackage): cran = "influenceR" + version("0.1.5", sha256="8164e4820f769032fab97c9ca486d33e83309641fcc4875065d8f5a43b20f58c") version("0.1.0.1", sha256="63c46f1175fced33fb1b78d4d56e37fbee09b408945b0106dac36e3344cd4766") version("0.1.0", sha256="4fc9324179bd8896875fc0e879a8a96b9ef2a6cf42a296c3b7b4d9098519e98a") diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index d7601ea0a0302b..0ac66b8e79a6c1 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -20,3 +20,5 @@ class RInline(RPackage): version("0.3.17", sha256="792857b2ebd408d6523424d2f6bb7297e241d4b28ab32372f6a9240c8cd554f3") version("0.3.15", sha256="ff043fe13c1991a3b285bed256ff4a9c0ba10bee764225a34b285875b7d69c68") version("0.3.14", sha256="fd34d6bf965148d26d983a022a0ff7bc1a5831f6ca066deee3f6139894dfc931") + + depends_on("r@2.4.0:", when="@0.3.16:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-insight/package.py b/var/spack/repos/builtin/packages/r-insight/package.py index 2f9f27c8ded0b6..23b0ce72763893 100644 --- a/var/spack/repos/builtin/packages/r-insight/package.py +++ b/var/spack/repos/builtin/packages/r-insight/package.py @@ -23,6 +23,7 @@ class RInsight(RPackage): license("GPL-3.0-only") + version("0.20.3", sha256="b60e189849cd3c368e9c2b2174e89c2dfbba3b34e84feb8a20af1bb758116bb2") version("0.19.1", sha256="1042629644c66b1a372fd4471d38adccc0c3a329879ef685b14b65575c1c98eb") version("0.18.6", sha256="ab0dc3c8ec765f2e93f7bcc3a7abb05140f71db24d50bf8cdd595a5a4e771cae") version("0.18.4", sha256="6e3f378bc2eb30c0300103bdd8a3e74371199b36867b45978ec9690a6fda0c5f") @@ -33,3 +34,4 @@ class RInsight(RPackage): depends_on("r@3.4:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@0.18.4:") + depends_on("r@3.6:", type=("build", "run"), when="@0.19.2:") diff --git a/var/spack/repos/builtin/packages/r-interp/package.py b/var/spack/repos/builtin/packages/r-interp/package.py index 800ecaf9a5b395..e7df13df3b210b 100644 --- a/var/spack/repos/builtin/packages/r-interp/package.py +++ b/var/spack/repos/builtin/packages/r-interp/package.py @@ -32,6 +32,7 @@ class RInterp(RPackage): license("GPL-2.0-or-later") + version("1.1-6", sha256="3674044e5334ecdf124054303929c084fc0797d3123e28576a230492ea6ecd34") version("1.1-4", sha256="4f7b5d388132a4d76e8635e2a7c4fa0d705df2b49e7d108faa16ce2236e34d06") version("1.1-3", sha256="b74e606b38cfb02985c1f9e3e45093620f76c0307b1b0b4058761e871eb5fa3f") diff --git a/var/spack/repos/builtin/packages/r-intervals/package.py b/var/spack/repos/builtin/packages/r-intervals/package.py index 60006c590a02ff..39f6181ad5177e 100644 --- a/var/spack/repos/builtin/packages/r-intervals/package.py +++ b/var/spack/repos/builtin/packages/r-intervals/package.py @@ -13,6 +13,7 @@ class RIntervals(RPackage): license("Artistic-2.0") + version("0.15.4", sha256="50c0e1e3aab3e7b72cc1f0a6559d96caa3a360e969c38538479907e6cbe39f8f") version("0.15.3", sha256="8501fef7c74b9be874e807839518aae85e79bf4a047cd52169b52c6d9b41dfc4") version("0.15.2", sha256="0bd23b0ce817ddd851238233d8a5420bf3a6d29e75fd361418cbc50118777c57") version("0.15.1", sha256="9a8b3854300f2055e1492c71932cc808b02feac8c4d3dbf6cba1c7dbd09f4ae4") diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index b07211585534a2..fe127d79a79c15 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -17,6 +17,7 @@ class RIpred(RPackage): license("GPL-2.0-or-later") + version("0.9-15", sha256="a4752de11121262f3f4c43163efa34e05e42cdf4f8496d8897be6f410dc0ee4b") version("0.9-14", sha256="81c83dc847d09c3db52ef15e36cd4dac38c50eead1008ddd458b9e89d7528f35") version("0.9-13", sha256="6168a062d93c2d3063c064a8f242cd3716dee99822e20363a1801261319c4c98") version("0.9-12", sha256="d6e1535704d39415a799d7643141ffa4f6f55597f03e763f4ccd5d8106005843") diff --git a/var/spack/repos/builtin/packages/r-iso/package.py b/var/spack/repos/builtin/packages/r-iso/package.py index 4f8ec037d0d2e6..1eb77a26957f0a 100644 --- a/var/spack/repos/builtin/packages/r-iso/package.py +++ b/var/spack/repos/builtin/packages/r-iso/package.py @@ -14,6 +14,7 @@ class RIso(RPackage): cran = "Iso" + version("0.0-21", sha256="b6842ae1c7b629ebb63355f50bb2e5d96e5696fa59590807ac6028b6dce28fa6") version("0.0-18.1", sha256="2fa5f78a7603cbae94a5e38e791938596a053d48c609a7c120a19cbb7d93c66f") version("0.0-18", sha256="2d7e8c4452653364ee086d95cea620c50378e30acfcff129b7261e1756a99504") version("0.0-17", sha256="c007d6eaf6335a15c1912b0804276ff39abce27b7a61539a91b8fda653629252") diff --git a/var/spack/repos/builtin/packages/r-jade/package.py b/var/spack/repos/builtin/packages/r-jade/package.py index 3047b0916d8a40..5ffd0424b211c2 100644 --- a/var/spack/repos/builtin/packages/r-jade/package.py +++ b/var/spack/repos/builtin/packages/r-jade/package.py @@ -18,6 +18,7 @@ class RJade(RPackage): cran = "JADE" + version("2.0-4", sha256="d4b3d65a33cae454d3ab13343bceabfb3f6b8004ac64ae7bd86dee92a1cd2055") version("2.0-3", sha256="56d68a993fa16fc6dec758c843960eee840814c4ca2271e97681a9d2b9e242ba") depends_on("r-clue", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-kableextra/package.py b/var/spack/repos/builtin/packages/r-kableextra/package.py index 38ae8c03eba9c4..16da516e32d068 100644 --- a/var/spack/repos/builtin/packages/r-kableextra/package.py +++ b/var/spack/repos/builtin/packages/r-kableextra/package.py @@ -18,20 +18,23 @@ class RKableextra(RPackage): cran = "kableExtra" + version("1.4.0", sha256="8fe2cc9fc2e8991685c4dc9e4904459e6f572c945319befde36d76f3ab527409") version("1.3.4", sha256="091ffac282cf9257edcec1a06da38b5e6516f111296bedb934e32f5692ffbbb0") depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-knitr@1.16:", type=("build", "run")) + depends_on("r-knitr@1.33:", type=("build", "run"), when="@1.4.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-stringr@1.0:", type=("build", "run")) depends_on("r-xml2@1.1.1:", type=("build", "run")) - depends_on("r-rvest", type=("build", "run")) depends_on("r-rmarkdown@1.6.0:", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-viridislite", type=("build", "run")) depends_on("r-htmltools", type=("build", "run")) depends_on("r-rstudioapi", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) - depends_on("r-webshot", type=("build", "run")) depends_on("r-digest", type=("build", "run")) depends_on("r-svglite", type=("build", "run")) + + depends_on("r-rvest", type=("build", "run"), when="@:1.3.4") + depends_on("r-glue", type=("build", "run"), when="@:1.3.4") + depends_on("r-webshot", type=("build", "run"), when="@:1.3.4") diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index 7e1289948d4ed6..858ef588e51bb5 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -18,6 +18,7 @@ class RKernlab(RPackage): license("GPL-2.0-only") + version("0.9-33", sha256="70c0787d6d3762c89bb68218fbee19e861fcb5d4c05b787a9692055d95dd3061") version("0.9-32", sha256="654ef34e343deb4d2c4c139a44e5397d6e38876088ce1c53c7deb087935d6fdc") version("0.9-31", sha256="7359c665c1c5e6780e1ce44b143347c8eec839301c3079d7f19e29159873278a") version("0.9-30", sha256="48fc3a839ae57e8ab6ec26a34093ca3306391e7b271bef6e69812e2b4859ee81") diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index 2c19b6b76bcd3a..9977170c76e679 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -14,6 +14,7 @@ class RKernsmooth(RPackage): cran = "KernSmooth" + version("2.23-24", sha256="d0b3ec39547ffd92565e91b0c3bb637f3b30e7a46afe416d8790b8c4f528ac5f") version("2.23-20", sha256="20eb75051e2473933d41eedc9945b03c632847fd581e2207d452cf317fa5ec39") version("2.23-18", sha256="8334800c5ad2305539d2731b929ea34f50fa4269ba87277b699fd5be5b03c490") version("2.23-15", sha256="8b72d23ed121a54af188b2cda4441e3ce2646359309885f6455b82c0275210f6") diff --git a/var/spack/repos/builtin/packages/r-klar/package.py b/var/spack/repos/builtin/packages/r-klar/package.py index bef15e27e149d0..b3bc4308d68310 100644 --- a/var/spack/repos/builtin/packages/r-klar/package.py +++ b/var/spack/repos/builtin/packages/r-klar/package.py @@ -20,6 +20,7 @@ class RKlar(RPackage): cran = "klaR" + version("1.7-3", sha256="d36c041c017cdb5ba3dbf7fb61d5ce3908d8e780eb2912fc99471394fcb8e3e5") version("1.7-2", sha256="8035c3edb8257973184ad5a2109fc7c77c32da913cb9dd0c2f1c373e6fccbd61") version("1.7-1", sha256="0354bafb1a202bc439660ecfcfe78359bc2881a69d15ff64afa049e4eb171d25") version("1.7-0", sha256="b4795250ef19fd1b5e1b9a59343fd01159a33dbdbb504a06258220e37a718198") diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index 08e5dd22e4f02d..0a605579aaacaa 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -17,6 +17,7 @@ class RKnitr(RPackage): license("GPL-2.0-or-later") + version("1.48", sha256="501b5926da7da1e8df61958639537e4c30110a0a8de07381afd92b31b9bff197") version("1.42", sha256="9344f1a0089e4da101def54aee38d7cfe3b2022d75c560141d8cc22ac65130f3") version("1.40", sha256="9b8f95ff367a0e52f024bda30315ec7cdd6a5b82371a1aaed95ab4eea78535bc") version("1.39", sha256="c91a65edebdca779af7f7480fa6636667497c9291ad55d6efd982db0bb91ac72") @@ -38,6 +39,7 @@ class RKnitr(RPackage): depends_on("r-evaluate@0.10:", type=("build", "run")) depends_on("r-evaluate@0.15:", type=("build", "run"), when="@1.39:") depends_on("r-highr", type=("build", "run")) + depends_on("r-highr@0.11:", type=("build", "run"), when="@1.47:") depends_on("r-yaml@2.1.19:", type=("build", "run")) depends_on("r-xfun", type=("build", "run"), when="@1.23:") depends_on("r-xfun@0.15:", type=("build", "run"), when="@1.30") @@ -46,6 +48,9 @@ class RKnitr(RPackage): depends_on("r-xfun@0.27:", type=("build", "run"), when="@1.37:") depends_on("r-xfun@0.29:", type=("build", "run"), when="@1.39:") depends_on("r-xfun@0.34:", type=("build", "run"), when="@1.42:") + depends_on("r-xfun@0.39:", type=("build", "run"), when="@1.43:") + depends_on("r-xfun@0.43:", type=("build", "run"), when="@1.46:") + depends_on("r-xfun@0.44:", type=("build", "run"), when="@1.47:") depends_on("pandoc", type="build") depends_on("py-rst2pdf", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ks/package.py b/var/spack/repos/builtin/packages/r-ks/package.py index 9ef0ad456fb171..9db06ce08da461 100644 --- a/var/spack/repos/builtin/packages/r-ks/package.py +++ b/var/spack/repos/builtin/packages/r-ks/package.py @@ -18,6 +18,7 @@ class RKs(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.14.2", sha256="f19130476cfafec26bba102b66ecbaeb80a9312c62d55eeec54d1aec75803fcb") version("1.14.0", sha256="2db9c56b7b0217b324bbf1e0f66bb94d3f7067a75c5823cbc7d369d63bbb4391") version("1.13.5", sha256="d1c4d06d704f301628455787ba929add1e774debc343d0952a768abea6cc7815") version("1.13.3", sha256="defb80df665d987f1751899f7a9809cb5a770f3c74266d7fbc7b9493616dce73") @@ -36,5 +37,6 @@ class RKs(RPackage): depends_on("r-mgcv", type=("build", "run")) depends_on("r-multicool", type=("build", "run")) depends_on("r-mvtnorm@1.0-0:", type=("build", "run")) - depends_on("r-plot3d", type=("build", "run"), when="@1.13.3:") depends_on("r-pracma", type=("build", "run"), when="@1.13.3:") + + depends_on("r-plot3d", type=("build", "run"), when="@1.13.3:1.14.1") diff --git a/var/spack/repos/builtin/packages/r-ksamples/package.py b/var/spack/repos/builtin/packages/r-ksamples/package.py index fc0bb71af3a616..b9363d05308dbc 100644 --- a/var/spack/repos/builtin/packages/r-ksamples/package.py +++ b/var/spack/repos/builtin/packages/r-ksamples/package.py @@ -24,6 +24,7 @@ class RKsamples(RPackage): cran = "kSamples" + version("1.2-10", sha256="2d66cc0511fb1be3190c5a285dcd93d02419468ee1ff5ae6d0838f16df2b578d") version("1.2-9", sha256="ba3ec4af3dfcf7cf12f0b784ef67bfea565e16985647ead904629886cc1542ff") depends_on("r-suppdists", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-labeling/package.py b/var/spack/repos/builtin/packages/r-labeling/package.py index cafeae89614e39..62202903af1a55 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -15,5 +15,6 @@ class RLabeling(RPackage): license("MIT OR custom") + version("0.4.3", sha256="c62f4fc2cc74377d7055903c5f1913b7295f7587456fe468592738a483e264f2") version("0.4.2", sha256="e022d79276173e0d62bf9e37d7574db65ab439eb2ae1833e460b1cff529bd165") version("0.3", sha256="0d8069eb48e91f6f6d6a9148f4e2dc5026cabead15dd15fc343eff9cf33f538f") diff --git a/var/spack/repos/builtin/packages/r-labelled/package.py b/var/spack/repos/builtin/packages/r-labelled/package.py index 7d3e5d852631fa..755ff749c69849 100644 --- a/var/spack/repos/builtin/packages/r-labelled/package.py +++ b/var/spack/repos/builtin/packages/r-labelled/package.py @@ -18,6 +18,7 @@ class RLabelled(RPackage): license("GPL-3.0-or-later") + version("2.13.0", sha256="9e2e82a42343b62f8a476d4dd7b13e9ffb3ee2c4e23bdf2cd29ef25b3dffa237") version("2.11.0", sha256="eddc5299ca448ea9c244960af65b95f4164495febd609f719e0f453598a0e5dd") version("2.10.0", sha256="5e93e29dcbbf0f6273b502b744695426e238ffe106f1db2bb5daeb1f17c9c40a") version("2.9.1", sha256="9eb10b245f64f3fb7346121aa4cd98638946e1cc4208dd5e28791ef8fd62fa40") @@ -34,5 +35,6 @@ class RLabelled(RPackage): depends_on("r-vctrs", type=("build", "run")) depends_on("r-stringr", type=("build", "run"), when="@2.9.0:") depends_on("r-tidyr", type=("build", "run")) + depends_on("r-tidyselect", type=("build", "run"), when="@2.13.0:") depends_on("r-pillar", type=("build", "run"), when="@:2.7.0") diff --git a/var/spack/repos/builtin/packages/r-later/package.py b/var/spack/repos/builtin/packages/r-later/package.py index 78f29762a9ee0d..0093ebf261d66f 100644 --- a/var/spack/repos/builtin/packages/r-later/package.py +++ b/var/spack/repos/builtin/packages/r-later/package.py @@ -16,6 +16,7 @@ class RLater(RPackage): license("MIT") + version("1.3.2", sha256="52f5073d33cd0d3c12e56526c9c53c323ebafcc79b22cc6e51fb0c41ee2b561e") version("1.3.0", sha256="08f50882ca3cfd2bb68c83f1fcfbc8f696f5cfb5a42c1448c051540693789829") version("1.1.0.1", sha256="71baa7beae774a35a117e01d7b95698511c3cdc5eea36e29732ff1fe8f1436cd") version("0.8.0", sha256="6b2a28b43c619b2c7890840c62145cd3a34a7ed65b31207fdedde52efb00e521") diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index 78c7afeb11b87a..ed00c72206705e 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -18,6 +18,7 @@ class RLattice(RPackage): license("GPL-2.0-or-later") + version("0.22-6", sha256="4b377211e472ece7872b9d6759f9b9c660b09594500462eb6146312a1d4d00f7") version("0.21-8", sha256="8ad3d6974262e6cab6cc8fec38aa279b5b2f2524adf6f3eab56f68302b60c329") version("0.20-45", sha256="22388d92bdb7d3959da84d7308d9026dd8226ef07580783729e8ad2f7d7507ad") version("0.20-44", sha256="57b908e3c7ada08a38ad857ee44f44fdf9cfa59d5d9500bda2ccc9c7e96cdb9b") diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index 25c4232c2beba6..e6488a566d15e6 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -23,6 +23,7 @@ class RLava(RPackage): license("GPL-3.0-only") + version("1.8.0", sha256="8db996eeca012c58736f2d3b97f569c03e9361e20f31513c090a9386eb87e87f") version("1.7.2.1", sha256="d42b1f5c7e4e76718e4f014c44608295f82b5de0eb25ce8e9b35c40c7839ef2e") version("1.7.0", sha256="3078da69f3828812bcd093acc2d1cd2c8cbc8480d81da222ae49a55bcb2e5e24") version("1.6.10", sha256="7a88f8a885872e2abb3011c446e9e1c4884cd4dbe6ab4cfe9207538e5560232e") @@ -32,6 +33,7 @@ class RLava(RPackage): version("1.4.7", sha256="d5cbd4835a94855478efb93051eece965db116ead203f4dd4e09d9a12d52f4bf") depends_on("r@3.0:", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.7.4:") depends_on("r-future-apply", type=("build", "run"), when="@1.6.10:") depends_on("r-progressr", type=("build", "run"), when="@1.6.10:") depends_on("r-numderiv", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-lavaan/package.py b/var/spack/repos/builtin/packages/r-lavaan/package.py index a1361283d1a7e9..abd18dcc20214a 100644 --- a/var/spack/repos/builtin/packages/r-lavaan/package.py +++ b/var/spack/repos/builtin/packages/r-lavaan/package.py @@ -16,6 +16,7 @@ class RLavaan(RPackage): license("GPL-2.0-or-later") + version("0.6-18", sha256="b907cacd6c4a2320138cb2206f17b60acf077453540bcb9cc94659fc9a48df51") version("0.6-15", sha256="9a43f3e999f9b3003a8c46a615902e01d6701d28a871d657751dd2ff3928ed9b") version("0.6-12", sha256="8048273e4102f8355ba123c8aff94a9e5a8e9ac9e02a73e986b106ceed4d079e") version("0.6-11", sha256="2cc193b82463a865cd8dadb7332409fdebf47e4035d5fe8dbf3414a7ae18d308") diff --git a/var/spack/repos/builtin/packages/r-leafem/package.py b/var/spack/repos/builtin/packages/r-leafem/package.py index 6a1ebaa35f5607..22feaf3df6f757 100644 --- a/var/spack/repos/builtin/packages/r-leafem/package.py +++ b/var/spack/repos/builtin/packages/r-leafem/package.py @@ -20,6 +20,7 @@ class RLeafem(RPackage): license("MIT") + version("0.2.3", sha256="defd5baa4383da4182e97d41145c7a9633a987de05c465eb99a7a452fbf375e3") version("0.2.0", sha256="97eb78b3eaf6012940f2c4f73effd8ff2d39aa46fef5f2ddf0005990b07dba8d") version("0.1.6", sha256="ca50e0a699f564449248511857a2df0d48cd07de3157e099478a19b533088156") version("0.1.3", sha256="6f123fc15efadb85d317c01003e3b7af5dc925cffe0bbe774b1b39b6bd67f304") diff --git a/var/spack/repos/builtin/packages/r-leaflet-providers/package.py b/var/spack/repos/builtin/packages/r-leaflet-providers/package.py index 6d3f39a792375b..725c0e21a19e07 100644 --- a/var/spack/repos/builtin/packages/r-leaflet-providers/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet-providers/package.py @@ -18,6 +18,9 @@ class RLeafletProviders(RPackage): license("BSD-2-Clause") + version("2.0.0", sha256="c5ceeadc8088c9840a8249f0347501cdba0119be97219a01ea2050d1dd4a8666") version("1.9.0", sha256="9e8fc75c83313ab24663c2e718135459599549ed6e7396086cacb44e36cfd67b") depends_on("r@2.10:", type=("build", "run")) + + depends_on("r-htmltools", type=("build", "run"), when="@2.0.0:") diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index 7b17cf605c4ddb..2697b1eb836ab5 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -17,6 +17,7 @@ class RLeaflet(RPackage): license("GPL-3.0-only") + version("2.2.2", sha256="d2877b8d394116cc648456a828c5b825728be6a7afbbb3d55cc142c91a1ab8eb") version("2.1.2", sha256="26d8671e8c99d85a4c257d8fb8c07ba899a2b95f801652598578f5cc5c724039") version("2.1.1", sha256="32f6a043759a0d2d98ea05739b7b4c55a266aa01272e48243e3c44046c7a5677") version("2.0.4.1", sha256="b0f038295f1de5d32d9ffa1d0dbc1562320190f2f1365f3a5e95863fff88901f") @@ -25,17 +26,23 @@ class RLeaflet(RPackage): version("1.0.1", sha256="f25a8e10c9616ccb5504bb874c533bc44fb7e438e073d4fe4484dee0951a9bc3") depends_on("r@3.1.0:", type=("build", "run")) - depends_on("r-base64enc", type=("build", "run")) depends_on("r-crosstalk", type=("build", "run"), when="@2.0.0:") depends_on("r-htmlwidgets", type=("build", "run")) depends_on("r-htmlwidgets@1.5.4:", type=("build", "run"), when="@2.1.1:") depends_on("r-htmltools", type=("build", "run")) + depends_on("r-jquerylib", type=("build", "run"), when="@2.2.0:") + depends_on("r-leaflet-providers@1.8.0:", type=("build", "run"), when="@2.0.4.1:") + depends_on("r-leaflet-providers@2.0.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-magrittr", type=("build", "run")) - depends_on("r-markdown", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-rcolorbrewer", type=("build", "run")) depends_on("r-raster", type=("build", "run")) + depends_on("r-raster@3.6.3:", type=("build", "run"), when="@2.2.0:") depends_on("r-scales@1.0.0:", type=("build", "run")) depends_on("r-sp", type=("build", "run")) - depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@2.0.0:") - depends_on("r-leaflet-providers@1.8.0:", type=("build", "run"), when="@2.0.4.1:") + depends_on("r-viridislite", type=("build", "run"), when="@2.2.0:") + depends_on("r-xfun", type=("build", "run"), when="@2.2.0:") + + depends_on("r-base64enc", type=("build", "run"), when="@:2.1.2") + depends_on("r-markdown", type=("build", "run"), when="@:2.1.2") + depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@2.0.0:2.1.2") diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index ee2ae5752b582d..fd8f9095f0cb51 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -15,5 +15,6 @@ class RLeaps(RPackage): license("GPL-2.0-or-later") + version("3.2", sha256="a0d6bebb676e5cdc0ecf3e3a07163ce0d60b6fe72a083d91f0413e11a8a96fad") version("3.1", sha256="3d7c3a102ce68433ecf167ece96a7ebb4207729e4defd0ac8fc00e7003f5c3b6") version("3.0", sha256="55a879cdad5a4c9bc3b5697dd4d364b3a094a49d8facb6692f5ce6af82adf285") diff --git a/var/spack/repos/builtin/packages/r-leiden/package.py b/var/spack/repos/builtin/packages/r-leiden/package.py index 045f47f7f5d4fd..17abea1f72de09 100644 --- a/var/spack/repos/builtin/packages/r-leiden/package.py +++ b/var/spack/repos/builtin/packages/r-leiden/package.py @@ -19,6 +19,7 @@ class RLeiden(RPackage): license("GPL-3.0-only OR custom") + version("0.4.3.1", sha256="a9ecbbcfa2724d8fdd0133af569278e036b25b6e2cbb23d453092cc6b3fc30e2") version("0.4.3", sha256="6a464b4b860e621749b3b701bb7ceb07e23c1a36be241c3e13b18105eb980938") version("0.4.2", sha256="cace86748c4aa1720508210658ee2f63f7875be5bac215084001fdc59d22e2bd") version("0.3.9", sha256="81754276e026a9a8436476365bbadf0f15a403a525a349cb56418da5d8edea0d") diff --git a/var/spack/repos/builtin/packages/r-lfe/package.py b/var/spack/repos/builtin/packages/r-lfe/package.py index fc00f5b69d04f5..0fc064e6a4f74c 100644 --- a/var/spack/repos/builtin/packages/r-lfe/package.py +++ b/var/spack/repos/builtin/packages/r-lfe/package.py @@ -24,6 +24,7 @@ class RLfe(RPackage): license("Artistic-2.0") + version("3.0-0", sha256="342d05c32932d0db755c35a7e27da1001a38e375866c6f61a18259faf0430399") version("2.9-0", sha256="7c9a9cd74ad98c65b67477eb6924409d7e372d01d7ed50fa2edb6fa34e02223c") version("2.8-8", sha256="0fc22928fa16f22ee66c8e426a0e994346ad2f67b3c5aea597f3eeffbd85ab71") version("2.8-7.1", sha256="d6a1efd8c43f84fa291e4959938f16e85bf5feef113515aaca1fe90075a78c50") diff --git a/var/spack/repos/builtin/packages/r-lhs/package.py b/var/spack/repos/builtin/packages/r-lhs/package.py index b04915a5a2d87d..7277c6a42daaf7 100644 --- a/var/spack/repos/builtin/packages/r-lhs/package.py +++ b/var/spack/repos/builtin/packages/r-lhs/package.py @@ -16,6 +16,7 @@ class RLhs(RPackage): license("GPL-3.0-only") + version("1.2.0", sha256="6b4b773c6b322f1ffb3e2ef49c244ec8a3958a0346a1cc8f42f0d0951e8b0724") version("1.1.6", sha256="e37fce44efe6a371677ba2f72f9e1e48270a0fdc60872d05def89270586cd23f") version("1.1.5", sha256="7a3c6fdcc953490e51026e17a0b1a9dc0ca8d03e6fc989457a7cdda2075b6339") version("1.1.3", sha256="e43b8d48db1cf26013697e2a798ed1d31d1ee1790f2ebfecb280176c0e0c06d1") diff --git a/var/spack/repos/builtin/packages/r-libcoin/package.py b/var/spack/repos/builtin/packages/r-libcoin/package.py index 34c66ac1f80a3e..b22b63182d8eb3 100644 --- a/var/spack/repos/builtin/packages/r-libcoin/package.py +++ b/var/spack/repos/builtin/packages/r-libcoin/package.py @@ -18,6 +18,7 @@ class RLibcoin(RPackage): license("GPL-2.0-only") + version("1.0-10", sha256="3023e0495d0789765bdf04c0ef0990a57b48fefa322c55f20e250d2d70d67eaf") version("1.0-9", sha256="2d7dd0b7c6dfc20472430570419ea36a714da7bbafd336da1fb53c5c6463d9eb") version("1.0-6", sha256="48afc1415fc89b29e4f2c8b6f6db3cffef1531580e5c806ad7cacf4afe6a4e5a") version("1.0-4", sha256="91dcbaa0ab8c2109aa54c3eda29ad0acd67c870efcda208e27acce9d641c09c5") diff --git a/var/spack/repos/builtin/packages/r-lifecycle/package.py b/var/spack/repos/builtin/packages/r-lifecycle/package.py index 6a72cd526ae15b..4ef0c7327b42d4 100644 --- a/var/spack/repos/builtin/packages/r-lifecycle/package.py +++ b/var/spack/repos/builtin/packages/r-lifecycle/package.py @@ -22,6 +22,7 @@ class RLifecycle(RPackage): license("MIT") + version("1.0.4", sha256="ada4d3c7e84b0c93105e888647c5754219a8334f6e1f82d5afaf83d4855b91cc") version("1.0.3", sha256="6459fdc3211585c0cdf120427579c12149b02161efe273a64b825c05e9aa69c2") version("1.0.1", sha256="1da76e1c00f1be96ca34e122ae611259430bf99d6a1b999fdef70c00c30f7ba0") version("0.2.0", sha256="29746e8dee05d4e36f9c612e8c7a903a4f648a36b3b94c9776e518c38a412224") @@ -29,7 +30,9 @@ class RLifecycle(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r@3.3:", type=("build", "run"), when="@1:") depends_on("r@3.4:", type=("build", "run"), when="@1.0.3:") + depends_on("r@3.6:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.0.3:") depends_on("r-glue", type=("build", "run")) depends_on("r-rlang@0.4.0:", type=("build", "run")) depends_on("r-rlang@1.0.6:", type=("build", "run"), when="@1.0.3:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.4:") diff --git a/var/spack/repos/builtin/packages/r-limsolve/package.py b/var/spack/repos/builtin/packages/r-limsolve/package.py index ae67f10b813fbf..2d042d4e43c85b 100644 --- a/var/spack/repos/builtin/packages/r-limsolve/package.py +++ b/var/spack/repos/builtin/packages/r-limsolve/package.py @@ -18,6 +18,7 @@ class RLimsolve(RPackage): cran = "limSolve" + version("1.5.7.1", sha256="a5945217bbf512724297883f8d7c65846a11202266b2b6bb3355372935e85b92") version("1.5.6", sha256="b97ea9930383634c8112cdbc42f71c4e93fe0e7bfaa8f401921835cb44cb49a0") depends_on("r@2.10:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-list/package.py b/var/spack/repos/builtin/packages/r-list/package.py new file mode 100644 index 00000000000000..25113da7b65aa9 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-list/package.py @@ -0,0 +1,30 @@ +# 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) + +from spack.package import * + + +class RList(RPackage): + """Allows researchers to conduct multivariate statistical analyses + of survey data with list experiments.""" + + homepage = "https://cran.r-project.org/web/packages/list/index.html" + cran = "list" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("9.2.6", sha256="6a2b1dd9cdee87d739605fb38463cb6e04680c94b73f51fbd39b5552a62432e4") + + depends_on("r@3.2.0:", type=("build", "run")) + depends_on("r-sandwich@2.3-3:", type=("build", "run")) + depends_on("r-vgam@0.9-8:", type=("build", "run")) + depends_on("r-magic@1.5-6:", type=("build", "run")) + depends_on("r-gamlss-dist@4.3-4:", type=("build", "run")) + depends_on("r-mass@7.3-40:", type=("build", "run")) + depends_on("r-quadprog@1.5-5:", type=("build", "run")) + depends_on("r-corpcor@1.6.7:", type=("build", "run")) + depends_on("r-mvtnorm@1.0-2:", type=("build", "run")) + depends_on("r-coda@0.17-1:", type=("build", "run")) + depends_on("r-arm", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-listenv/package.py b/var/spack/repos/builtin/packages/r-listenv/package.py index d9370a0b79b499..568202242fdc86 100644 --- a/var/spack/repos/builtin/packages/r-listenv/package.py +++ b/var/spack/repos/builtin/packages/r-listenv/package.py @@ -17,6 +17,7 @@ class RListenv(RPackage): license("LGPL-2.1-or-later") + version("0.9.1", sha256="422aaf487b91c6512b83c05536f8dac255db79b16ee85254acc59a3fda8c1c3b") version("0.9.0", sha256="352841e04f0725d361b78cfdc75e00511f740d97237dd651ea86aa5484674887") version("0.8.0", sha256="fd2aaf3ff2d8d546ce33d1cb38e68401613975117c1f9eb98a7b41facf5c485f") version("0.7.0", sha256="6126020b111870baea08b36afa82777cd578e88c17db5435cd137f11b3964555") diff --git a/var/spack/repos/builtin/packages/r-lme4/package.py b/var/spack/repos/builtin/packages/r-lme4/package.py index cff157fee17a2d..024091b3a1bd35 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -18,6 +18,7 @@ class RLme4(RPackage): license("GPL-2.0-or-later") + version("1.1-35.5", sha256="7d6664db7ea96429562efe1058da58985d779d6fe79ec6f4e86ba68047135170") version("1.1-33", sha256="d956a5ed7cbcc016114a836bad89acf6cdafcd0f82a7d85e3805ced936b40910") version("1.1-31", sha256="5affd1e33d3fece5ec0a6c7663eb12328e64147f8aa92675ce6453c4fe72edfd") version("1.1-30", sha256="fdabdfc4b64cff05ae9506a766c948a953eeb6db71761f9401b36d6d9979300f") @@ -32,7 +33,9 @@ class RLme4(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@1.1-16:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.1-31:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.1-35.5:") depends_on("r-matrix@1.2-1:", type=("build", "run")) + depends_on("r-matrix@1.2-3:", type=("build", "run"), when="@1.1-35.5:") depends_on("r-mass", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) depends_on("r-boot", type=("build", "run"), when="@1.1-21:") @@ -41,5 +44,6 @@ class RLme4(RPackage): depends_on("r-nloptr@1.0.4:", type=("build", "run")) depends_on("r-rcpp@0.10.5:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) + depends_on("r-rcppeigen@0.3.3.9.4:", type=("build", "run"), when="@1.1-35.1:") depends_on("r-statmod", type=("build", "run"), when="@1.1-26") diff --git a/var/spack/repos/builtin/packages/r-locfit/package.py b/var/spack/repos/builtin/packages/r-locfit/package.py index 932e614ba5fe22..8f0bbe58bb0d0f 100644 --- a/var/spack/repos/builtin/packages/r-locfit/package.py +++ b/var/spack/repos/builtin/packages/r-locfit/package.py @@ -16,6 +16,7 @@ class RLocfit(RPackage): license("GPL-2.0-or-later") + version("1.5-9.10", sha256="4c20661814993a87ca435f42b0814bacb87c5a9ccc2ff55e4cae718cb176ac06") version("1.5-9.7", sha256="48e5fcd089fbc609d8e4c62c390425fba1dd167ad95ae0bddc175cbbe1517aff") version("1.5-9.6", sha256="1ee89e4003cb769feae61ada7ac0a971df30644824f7ed84a21dd5719f713476") version("1.5-9.5", sha256="fd9f2bad9d8beec8be4843dc80e38ebe0f388835a7003490f67e57eeb9e6de23") diff --git a/var/spack/repos/builtin/packages/r-loo/package.py b/var/spack/repos/builtin/packages/r-loo/package.py index 68f9e89684aefd..909a7fd95d6a7e 100644 --- a/var/spack/repos/builtin/packages/r-loo/package.py +++ b/var/spack/repos/builtin/packages/r-loo/package.py @@ -24,6 +24,7 @@ class RLoo(RPackage): license("GPL-3.0-or-later") + version("2.8.0", sha256="aab727a95a2e1c0e5005188e7daa6eba52455fa0c5869130d53cee5a8963244c") version("2.6.0", sha256="66da60fdf53a62cbc93797fa696a4cc43bce77f1721dd4bc1a58d25b3f981210") version("2.5.1", sha256="866a2f54a4e8726cc3062e27daa8a073e6ac4aeb6719af7845284f7a668745f1") version("2.4.1", sha256="bc21fb6b4a93a7e95ee1be57e4e787d731895fb8b4743c26b30b43adee475b50") @@ -35,4 +36,5 @@ class RLoo(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r-checkmate", type=("build", "run")) depends_on("r-matrixstats@0.52:", type=("build", "run")) + depends_on("r-posterior@1.5.0:", type=("build", "run"), when="@2.7.0:") depends_on("pandoc@1.12.3:") diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 01847c815886ce..208dbf496237fb 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -17,6 +17,7 @@ class RLpsolve(RPackage): cran = "lpSolve" + version("5.6.20", sha256="3ffe06a0685123c36cd306b874f89a59a70c864c8f78c5569f82a86abedc21db") version("5.6.18", sha256="751e1926fcd81b852b6c0d5ea7ecd9311ef6fbdbce9143b7872fea79590de712") version("5.6.17", sha256="f725802bd9dc05c6913daf48f2458441ad4d2996056d0942737886d8b76c9288") version("5.6.16", sha256="18a11e5184914e02b056d3d8f54ad92e4bbce651d930d61430570b4ae2ecbb2a") diff --git a/var/spack/repos/builtin/packages/r-lpsolveapi/package.py b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py index 3e313013b17d7f..9018b79f2c8f14 100644 --- a/var/spack/repos/builtin/packages/r-lpsolveapi/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py @@ -16,6 +16,9 @@ class RLpsolveapi(RPackage): cran = "lpSolveAPI" + version( + "5.5.2.0-17.12", sha256="4f00a9d27055ddf3e2a4b0a529b720861b9f916f2ceb1fe0b71e4c52da5b70ef" + ) version( "5.5.2.0-17.9", sha256="7b52ecf3f1174f771fe24e62502be6d31acc3e48a12473e35ad0a89fc2517811" ) diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index f3ea109ef55c62..a2b37be10874df 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -20,6 +20,7 @@ class RLubridate(RPackage): license("GPL-2.0-or-later") + version("1.9.3", sha256="2b6e1406d231b0a14d60b99cc406d159fea5465a5694725ad25343f12cf37fff") version("1.9.2", sha256="8976431a4affe989261cbaa5e09cd44bb42a3b16eed59a42c1698da34c6544a7") version("1.9.0", sha256="b936041f8a71894ef930cfff61b45833e0dd148b5b16697f4f541d25b31a903a") version("1.8.0", sha256="87d66efdb1f3d680db381d7e40a202d35645865a0542e2f270ef008a19002ba5") diff --git a/var/spack/repos/builtin/packages/r-lwgeom/package.py b/var/spack/repos/builtin/packages/r-lwgeom/package.py index c25ea73c5d5419..2b09ba6336888f 100644 --- a/var/spack/repos/builtin/packages/r-lwgeom/package.py +++ b/var/spack/repos/builtin/packages/r-lwgeom/package.py @@ -17,6 +17,7 @@ class RLwgeom(RPackage): license("GPL-2.0-only") + version("0.2-14", sha256="26db6cf7dbc8cf43a70e5e2a34941a1c4b65e182f86f58d64ff9f614b3be929c") version("0.2-11", sha256="7fd73cf58981f9566d946bf63ed6575ea0c70634abeaf4e60ef9615040d63419") version("0.2-9", sha256="69b2a2efdafb0b32c801932eee7cd2c4b8402cede6487f4dfea4e14873091aa8") version("0.2-8", sha256="f48a92de222da0590b37a30d5cbf2364555044a842795f6b488afecc650b8b34") @@ -25,8 +26,10 @@ class RLwgeom(RPackage): depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-rcpp", type=("build", "run")) depends_on("r-units", type=("build", "run")) - depends_on("r-sf@0.9-3:", type=("build", "run")) - depends_on("r-sf@0.6-0:", type=("build", "run"), when="@0.2-9:") + depends_on("r-sf@0.6-0:", type=("build", "run"), when="@0.1-3:") + depends_on("r-sf@0.9-0:", type=("build", "run"), when="@0.2-2:") + depends_on("r-sf@0.9-3:", type=("build", "run"), when="@0.2-4:") + depends_on("r-sf@1.0-15:", type=("build", "run"), when="@0.2-14:") depends_on("geos@3.5.0:") depends_on("proj@4.8.0:6.999") depends_on("sqlite", when="@0.2-8:") diff --git a/var/spack/repos/builtin/packages/r-magick/package.py b/var/spack/repos/builtin/packages/r-magick/package.py index c722a4b67cdcd6..f8f507f93f4ee0 100644 --- a/var/spack/repos/builtin/packages/r-magick/package.py +++ b/var/spack/repos/builtin/packages/r-magick/package.py @@ -24,6 +24,7 @@ class RMagick(RPackage): license("MIT") + version("2.8.4", sha256="45c803370f0d96b729db8114b3e2187cbe6fac13133b67b96a91c8eae734ea0a") version("2.7.4", sha256="e28d67737590f8c19e4cf00a9c74e59d0e45f9ece363ed105b5f40e821e8f02f") version("2.7.3", sha256="83877b2e23ea43fbc1164de9c2422eafbe7858393ac384df5adf3a7eec122441") version("2.6.0", sha256="66585336e3ff18793ae9e2726af67a6672622f270468670ab5fe5e013bc48ecc") diff --git a/var/spack/repos/builtin/packages/r-maldiquant/package.py b/var/spack/repos/builtin/packages/r-maldiquant/package.py index 3d646cd433c5c9..baf6e8c6a16971 100644 --- a/var/spack/repos/builtin/packages/r-maldiquant/package.py +++ b/var/spack/repos/builtin/packages/r-maldiquant/package.py @@ -20,6 +20,7 @@ class RMaldiquant(RPackage): cran = "MALDIquant" + version("1.22.3", sha256="fd094f0ea1a163ad1bd290e789ad827a76075d82ae5ce8a8e53a7095a7479383") version("1.22.1", sha256="0a52a55dbe76a7e7ca50c5555fea4381eeda0c215c66e420d8dc9bfd2992411c") version("1.21", sha256="0771f82034aa6a77af67f3572c900987b7e6b578d04d707c6e06689d021a2ff8") version("1.19.3", sha256="a730327c1f8d053d29e558636736b7b66d0671a009e0004720b869d2c76ff32c") diff --git a/var/spack/repos/builtin/packages/r-mapplots/package.py b/var/spack/repos/builtin/packages/r-mapplots/package.py index f19a3424c1f2e9..4ec8d101b21783 100644 --- a/var/spack/repos/builtin/packages/r-mapplots/package.py +++ b/var/spack/repos/builtin/packages/r-mapplots/package.py @@ -18,6 +18,7 @@ class RMapplots(RPackage): license("GPL-2.0-or-later") + version("1.5.2", sha256="ed0e151d6865549d1a10882984a7fb29bc89a7b94ad69e512f90937b981c8a18") version("1.5.1", sha256="37e96d34f37922180e07bb63b4514e07d42eee5bbf0885b278286ee48cf142a3") depends_on("r@2.10.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index b6b6e19dc51794..13840200da6784 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -16,6 +16,7 @@ class RMaps(RPackage): license("GPL-2.0-only") + version("3.4.2", sha256="53e57b889f1779cfd4a116a8ed3eded7ed29a73a1b9506248772a389c8404b0c") version("3.4.1", sha256="e693a5218ed8122e92d73a98a475d9016f2293c7852c8048677daa7649086400") version("3.4.0", sha256="7918ccb2393ca19589d4c4e77d9ebe863dc6317ebfc1ff41869dbfaf439f5747") version("3.3.0", sha256="199afe19a4edcef966ae79ef802f5dcc15a022f9c357fcb8cae8925fe8bd2216") diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index 8ca517229139e6..00278c11b817e3 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -17,6 +17,7 @@ class RMaptools(RPackage): cran = "maptools" + version("1.1-8", sha256="5e8579e3f559161935f1dde622ece703eefa2a28a677ce553d7f27611e66e0f7") version( "1.1-6", sha256="d6a5df52db03b2231f21921b693c67f85df3c3b376181aa13ef4f21710f69308", diff --git a/var/spack/repos/builtin/packages/r-mapview/package.py b/var/spack/repos/builtin/packages/r-mapview/package.py index aa7f0dc717b86c..47f23046d54658 100644 --- a/var/spack/repos/builtin/packages/r-mapview/package.py +++ b/var/spack/repos/builtin/packages/r-mapview/package.py @@ -18,6 +18,7 @@ class RMapview(RPackage): license("GPL-3.0-or-later OR custom") + version("2.11.2", sha256="414d7f732b3aaf62005e279d7b0febf50aed2183bf05522c4fccaa92117328b0") version("2.11.0", sha256="87f8cf562a0918201082a743438b9af47429bdb8871511235d72505107f4d30a") version("2.10.0", sha256="b597902c654b9abf1163bb9d4f1044fef85d0a52c8dc6538ca46b0024f63baaa") version("2.9.0", sha256="170cb2b5e67cbeb177f87bd2eab1ecabc44a1042addbcd95a85b2ec4a00eb690") @@ -33,10 +34,12 @@ class RMapview(RPackage): depends_on("r-leafpop", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-raster", type=("build", "run")) + depends_on("r-raster@3.6.3:", type=("build", "run"), when="@2.11.2:") depends_on("r-satellite", type=("build", "run")) depends_on("r-scales@0.2.5:", type=("build", "run")) depends_on("r-servr", type=("build", "run"), when="@2.10.0:") depends_on("r-sf", type=("build", "run")) depends_on("r-sp", type=("build", "run")) - depends_on("r-webshot", type=("build", "run")) depends_on("gmake", type="build") + + depends_on("r-webshot", type=("build", "run"), when="@:2.11.0") diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index 2453101e8ecc16..6f3ed794bbd62b 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -19,6 +19,7 @@ class RMarkdown(RPackage): license("MIT") + version("1.13", sha256="385421c674cf5bf2ba04d1df7c16bb5d857bec03755a36321999ac37f5b3cfd9") version("1.6", sha256="46228b8d8161ae4b651b4662364eb35a3b91e6a7a457fe99d0e709f2a6f559ea") version("1.3", sha256="b1773e94e7b927c3a8540c2704b06e0f7721a0e3538a93abd58fff420ecb30f1") version("1.1", sha256="8d8cd47472a37362e615dbb8865c3780d7b7db694d59050e19312f126e5efc1b") diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 035d1ed9007e9a..4120bc3c4d1d11 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -14,6 +14,7 @@ class RMass(RPackage): cran = "MASS" + version("7.3-61", sha256="3144c8bf579dd7b7c47c259728c27f53f53e294e7ed307da434dfd144e800a90") version("7.3-59", sha256="454200bec7a52835fbb7f9fe8e01a7aaa728b3ab87b068fc6d900e01c930da5a") version("7.3-58.1", sha256="f704e4e2fb131740d023ae1755c925c2e684886a3061b08e26397135f1231420") version("7.3-57", sha256="bd8b880105bc1aadb2db699086f74bd92a8611287979a24243187f9d80795a8d") @@ -28,3 +29,4 @@ class RMass(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@3.3.0:", type=("build", "run"), when="@7.3-55:") depends_on("r@4.2.0:", type=("build", "run"), when="@7.3-59:") + depends_on("r@4.4.0:", type=("build", "run"), when="@7.3-60.1:") diff --git a/var/spack/repos/builtin/packages/r-matlab/package.py b/var/spack/repos/builtin/packages/r-matlab/package.py index 1483e712473cd4..f0b0666a19effa 100644 --- a/var/spack/repos/builtin/packages/r-matlab/package.py +++ b/var/spack/repos/builtin/packages/r-matlab/package.py @@ -15,6 +15,7 @@ class RMatlab(RPackage): license("Artistic-2.0") + version("1.0.4.1", sha256="fc3fba560b73a9bf0a4f317340856c91af2c9dcc80f5df291f3f7e6d6ac4fd50") version("1.0.4", sha256="1988a2220703444a575f2bad4eb090a0da71478599eb53081dd7237b7ec216ea") version("1.0.2", sha256="a23dec736c51ae1864c1a53caac556a2f98e8020138a3b121badb0f5b7984154") diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index 16dbc8fe2f7cd9..a2d8cda3aa2754 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -18,6 +18,7 @@ class RMatrix(RPackage): license("GPL-3.0-only") + version("1.7-0", sha256="fb97bba0df370222eb4f7e2da2e94dd01053b5e054b1c51829ff9a6efc08ad37") version("1.5-4", sha256="15ceb61993d61b442068104abb46e6d91b5a1179c01eeb64563b853abab66f06") version("1.5-1", sha256="557dba0358172d67dc63eb5db90841915bb5ce1528f941a8005ae808d635575d") version("1.4-1", sha256="42b24f1d1e94482b0ff0ef1292e2df29f69694bdbee47b3d6bfeec46fafb2f7e") @@ -32,7 +33,8 @@ class RMatrix(RPackage): version("1.2-6", sha256="4b49b639b7bf612fa3d1c1b1c68125ec7859c8cdadae0c13f499f24099fd5f20") depends_on("r@3.0.1:", type=("build", "run")) - depends_on("r@3.2.0:", type=("build", "run"), when="@1.2.13:") + depends_on("r@3.2.0:", type=("build", "run"), when="@1.2-13:") depends_on("r@3.6.0:", type=("build", "run"), when="@1.3-2:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.3-3:") + depends_on("r@4.4.0:", type=("build", "run"), when="@1.7-0:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index ead6d5734c31cb..d5839d1ec77a7c 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -14,6 +14,7 @@ class RMatrixmodels(RPackage): cran = "MatrixModels" + version("0.5-3", sha256="c2db5406c6b0b9d348b44eea215a39c64fc087099fea1342a04d50326577f20f") version("0.5-1", sha256="3fc55bdfa5ab40c75bf395e90983d14c9715078c33c727c1658e4e1f36e43ea9") version("0.5-0", sha256="a87faf1a185219f79ea2307e6787d293e1d30bf3af9398e8cfe1e079978946ed") version("0.4-1", sha256="fe878e401e697992a480cd146421c3a10fa331f6b37a51bac83b5c1119dcce33") @@ -22,3 +23,4 @@ class RMatrixmodels(RPackage): depends_on("r@3.6.0:", type=("build", "run"), when="@0.5-1:") depends_on("r-matrix@1.1-5:", type=("build", "run")) depends_on("r-matrix@1.4-2:", type=("build", "run"), when="@0.5-1:") + depends_on("r-matrix@1.6-0:", type=("build", "run"), when="@0.5-2:") diff --git a/var/spack/repos/builtin/packages/r-matrixstats/package.py b/var/spack/repos/builtin/packages/r-matrixstats/package.py index aeb8639d0862ff..5a90d3d3337f3f 100644 --- a/var/spack/repos/builtin/packages/r-matrixstats/package.py +++ b/var/spack/repos/builtin/packages/r-matrixstats/package.py @@ -17,6 +17,7 @@ class RMatrixstats(RPackage): cran = "matrixStats" + version("1.3.0", sha256="413ee607d95b243c514b4a7c4944c2caea1fb264d27c96ff547c3939f893245a") version("0.63.0", sha256="c000b60421742eb035ff4ceedd3e588a79e4b28985484f0c81361e5a6c351f5f") version("0.62.0", sha256="85e2016b6dd20cbfe32d38a2ef2578ae80e688d9a3590aefd1d2f4bf4bd44eca") version("0.61.0", sha256="dbd3c0ec59b1ae62ff9b4c2c90c4687cbd680d1796f6fdd672319458d4d2fd9a") diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py index 76ad0b7e0e52ee..4eb1b82d5c4fba 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -19,6 +19,7 @@ class RMclust(RPackage): license("GPL-2.0-or-later") + version("6.1.1", sha256="ddd7018e5e6ea7f92c7fc9872b391491b7e91c2cd89ef1dcaf4408afb5116775") version("6.0.0", sha256="de7c306ecba1ef0f4e4a56c748ce08149417496b711beefb032d561a4c28122a") version("5.4.10", sha256="2a1bbbf3c4a17df08d1ba8bc4d3c6d9c7241ed5fd68b8aabe660115597b60672") version("5.4.9", sha256="65f123c6af86cf5eb511c81ae0eafa60da7b2085bfea1a08bdc3116081da9568") diff --git a/var/spack/repos/builtin/packages/r-mcmc/package.py b/var/spack/repos/builtin/packages/r-mcmc/package.py index 3e32f58cefdc73..0b65a3ddbd6c91 100644 --- a/var/spack/repos/builtin/packages/r-mcmc/package.py +++ b/var/spack/repos/builtin/packages/r-mcmc/package.py @@ -21,6 +21,8 @@ class RMcmc(RPackage): license("MIT") + version("0.9-8", sha256="6a06440d4b58e8a7f122747d92046ff40da4bb58a20bf642228a648a0c826ea7") version("0.9-7", sha256="b7c4d3d5f9364c67a4a3cd49296a61c315ad9bd49324a22deccbacb314aa8260") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@0.9-8:") diff --git a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py index 7519f5075145a7..83cd8b62c2138e 100644 --- a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py @@ -15,6 +15,7 @@ class RMcmcglmm(RPackage): cran = "MCMCglmm" + version("2.36", sha256="66ffd9aaf8035c7abe7208c8514c60cb56c8c6a170de207d6608f5c44a4f8af1") version("2.34", sha256="829151cca93b05979ece98157e7789d5e5c1c0b4942d69aa9886de03d16091f1") version("2.33", sha256="b56d72e799f8ed5fa2a05ecc743e5b8051f9cc2de57ad3e6de2dcb1c1715d4fc") version("2.32", sha256="a9156e1e0d0f912f2f239476dc8765dc61c480f903381be7ec5db05bd6d3f0b3") diff --git a/var/spack/repos/builtin/packages/r-mcmcpack/package.py b/var/spack/repos/builtin/packages/r-mcmcpack/package.py index 80a0d6ac68dc0b..4e3e289afdfbdf 100644 --- a/var/spack/repos/builtin/packages/r-mcmcpack/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcpack/package.py @@ -19,6 +19,7 @@ class RMcmcpack(RPackage): cran = "MCMCpack" + version("1.7-0", sha256="846073d710017ec1dc9a2b4616cb6aeb60ce04e3500a37214522818d34045def") version("1.6-3", sha256="cb14ba20690b31fd813b05565484c866425f072a5ad99a5cbf1da63588958db3") version("1.6-0", sha256="b5b9493457d11d4dca12f7732bd1b3eb1443852977c8ee78393126f13deaf29b") version("1.5-0", sha256="795ffd3d62bf14d3ecb3f5307bd329cd75798cf4b270ff0e768bc71a35de0ace") @@ -26,9 +27,8 @@ class RMcmcpack(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r-coda@0.11-3:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) + depends_on("r-mass", type=("build", "run")) depends_on("r-mcmc", type=("build", "run")) depends_on("r-quantreg", type=("build", "run")) - depends_on("r-mass", type=("build", "run"), when="@:1.6-0") - conflicts("%gcc@:3") diff --git a/var/spack/repos/builtin/packages/r-mco/package.py b/var/spack/repos/builtin/packages/r-mco/package.py index 1f9d061f04060d..541e0636bd3294 100644 --- a/var/spack/repos/builtin/packages/r-mco/package.py +++ b/var/spack/repos/builtin/packages/r-mco/package.py @@ -17,8 +17,10 @@ class RMco(RPackage): license("GPL-2.0-only") + version("1.17", sha256="8288e99159a541855bd286baf586e61201e286dfd244080aef128871b1699ea2") version("1.15.6", sha256="17ebe279cb9c89b7cd8054ac50d3b657d2b10dadbc584b88da7e79c3a9680582") version("1.0-15.1", sha256="3c13ebc8c1f1bfa18f3f95b3998c57fde5259876e92456b6c6d4c59bef07c193") version("1.0-15", sha256="a25e3effbb6dcae735fdbd6c0bfc775e9fbbcc00dc00076b69c53fe250627055") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.4.0:", type=("build", "run"), when="@1.17:") diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index ea00d0f377f547..555d28efb4f2f8 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -16,6 +16,7 @@ class RMda(RPackage): license("GPL-2.0-only") + version("0.5-4", sha256="f25f7f28807d0fa478b1b55eb9d026ebc30577d9d5ff288f9abfe1f3fdb8a759") version("0.5-3", sha256="bda6409c17f385fae97da458cc742334e7b47aab8217a975b7551e2e18d38463") version("0.5-2", sha256="344f2053215ddf535d1554b4539e9b09067dac878887cc3eb995cef421fc00c3") version("0.4-10", sha256="7036bc622a8fea5b2de94fc19e6b64f5f0c27e5d743ae7646e116af08c9de6a5") diff --git a/var/spack/repos/builtin/packages/r-memisc/package.py b/var/spack/repos/builtin/packages/r-memisc/package.py index 983cf8f3557f92..b79ef63ca60b04 100644 --- a/var/spack/repos/builtin/packages/r-memisc/package.py +++ b/var/spack/repos/builtin/packages/r-memisc/package.py @@ -20,6 +20,7 @@ class RMemisc(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.99.31.7", sha256="b403185850520db18ebd608df85c76df80e6c64af428cdc4e49c2fe487483637") version("0.99.31.6", sha256="52336b4ffc6e60c3ed10ccc7417231582b0d2e4c5c3b2184396a7d3ca9c1d96e") depends_on("r@3.3.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py b/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py index 45e0017a92fe46..c2aaec6da70b17 100644 --- a/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py +++ b/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py @@ -17,6 +17,7 @@ class RMendelianrandomization(RPackage): cran = "MendelianRandomization" + version("0.10.0", sha256="0851e91f826424f20fd4a58348ffe161d147bdc091d24d676e14d4cd6180e13c") version("0.7.0", sha256="cad7cc1b6964fc7d299864378694c5fd947caa83796a1958e581299796b854c7") depends_on("r@3.0.1:", type=("build", "run")) @@ -30,3 +31,6 @@ class RMendelianrandomization(RPackage): depends_on("r-quantreg@5.01:", type=("build", "run")) depends_on("r-rjson", type=("build", "run")) depends_on("r-glmnet", type=("build", "run")) + depends_on("r-numderiv", type=("build", "run"), when="@0.10.0:") + depends_on("r-rcpp", type=("build", "run"), when="@0.10.0:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@0.10.0:") diff --git a/var/spack/repos/builtin/packages/r-meta/package.py b/var/spack/repos/builtin/packages/r-meta/package.py index 9a1facc53419c3..aa15244e8da6c7 100644 --- a/var/spack/repos/builtin/packages/r-meta/package.py +++ b/var/spack/repos/builtin/packages/r-meta/package.py @@ -26,11 +26,18 @@ class RMeta(RPackage): license("GPL-2.0-or-later") + version("7.0-0", sha256="d8ead9c94f0d2b42766b8ea8358f40d0641cdcc9c25ba4b9a5fff1a59497de7d") version("6.2-1", sha256="2c2a0d4d8f3b07211120b232a155e3e1312164ce18817e0d5693c8da5da1d6cc") version("6.2-0", sha256="8ec8fb412996bbe17d3ca073f15c191a77bad486b08f39d7b8c2d07360ad5781") depends_on("r@4.0.0:", type=("build", "run")) - depends_on("r-metafor@3.0-0:", type=("build", "run")) - depends_on("r-lme4", type=("build", "run")) depends_on("r-compquadform", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run"), when="@7.0-0:") + depends_on("r-lme4", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run"), when="@7.0-0:") + depends_on("r-metadat", type=("build", "run"), when="@7.0-0:") + depends_on("r-metafor@3.0-0:", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@7.0-0:") + depends_on("r-readr", type=("build", "run"), when="@7.0-0:") + depends_on("r-stringr", type=("build", "run"), when="@7.0-0:") depends_on("r-xml2", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-metafor/package.py b/var/spack/repos/builtin/packages/r-metafor/package.py index 0d7716b13f57a3..df0be2ae80919e 100644 --- a/var/spack/repos/builtin/packages/r-metafor/package.py +++ b/var/spack/repos/builtin/packages/r-metafor/package.py @@ -31,6 +31,7 @@ class RMetafor(RPackage): license("GPL-2.0-or-later") + version("4.6-0", sha256="07344cc3bd87b8bd25ef998e9a6ce322ae8e448ef5af06ec3e79631724e18666") version("4.0-0", sha256="5cd552ebaf225b745c2e4d944ca80986dd1ad6f1a4c902fb646f3cb11b8dc23b") version("3.8-1", sha256="d694577f954144d8a5eeab6521fe1c87e68ddf9ecfd7ccc915d01533371b0514") diff --git a/var/spack/repos/builtin/packages/r-metap/package.py b/var/spack/repos/builtin/packages/r-metap/package.py index 514c44074d9418..4e144ec6e71eb2 100644 --- a/var/spack/repos/builtin/packages/r-metap/package.py +++ b/var/spack/repos/builtin/packages/r-metap/package.py @@ -19,6 +19,7 @@ class RMetap(RPackage): license("GPL-2.0-only") + version("1.11", sha256="34e8c9fc3ccaae23f57389001987de02339416f843084869f92ff635052093b7") version("1.8", sha256="ee9501a8de8a4c47af1632e6053e42ef53fc4b8bdf0f2759edc4d3eefaf5552b") version("1.7", sha256="d9b511607d0e37de4428549061c5577a4e812b0f55bb7ed887d1b24711f58c42") version("1.4", sha256="5fac23d823d0ad4eebc3f97620364e25f7b41f8d0c3579f6c09ec059940b85a5") diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index a0e59e0b84eee7..92416dc5bfd334 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -21,6 +21,7 @@ class RMgcv(RPackage): license("GPL-2.0-or-later") + version("1.9-1", sha256="700fbc37bedd3a49505b9bc4949faee156d9cfb4f669d797d06a10a15a5bdb32") version("1.8-42", sha256="087fc38b64ad06f2149eafc54f2679dd8840cf6fc488e66cf131e3c1de2db6c7") version("1.8-41", sha256="2f7a030fe2be75edef6bd96147df46c2262f3cdc44c383d8f82b401df44fe690") version("1.8-40", sha256="dbe627266c3b339232e2d4228d5370ba88c86540319e6891d161242efba7e4a5") diff --git a/var/spack/repos/builtin/packages/r-mice/package.py b/var/spack/repos/builtin/packages/r-mice/package.py index d61198a6c3e1b1..8fe870277bf45a 100644 --- a/var/spack/repos/builtin/packages/r-mice/package.py +++ b/var/spack/repos/builtin/packages/r-mice/package.py @@ -25,6 +25,7 @@ class RMice(RPackage): license("GPL-2.0-or-later") + version("3.16.0", sha256="29f0285185a540337e9dde2357690c82d174f115be701ee2f0a7083173a44040") version("3.15.0", sha256="3d64dd260e3dce9c4c2f7be8c99f3063769df9ccfd3a0fc827c2de0ac842e87b") version("3.14.0", sha256="f87bb73d8bfee36c6bf4f15779c59ff6b70c70ca25b1388b4ee236757276d605") version("3.12.0", sha256="575d9e650d5fc8cd66c0b5a2f1e659605052b26d61f772fff5eed81b414ef144") @@ -36,9 +37,13 @@ class RMice(RPackage): depends_on("r-broom", type=("build", "run")) depends_on("r-dplyr", type=("build", "run")) depends_on("r-generics", type=("build", "run"), when="@3.12.0:") + depends_on("r-glmnet", type=("build", "run"), when="@3.16.0:") depends_on("r-lattice", type=("build", "run")) + depends_on("r-mitml", type=("build", "run"), when="@3.16.0:") + depends_on("r-nnet", type=("build", "run"), when="@3.16.0:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) + depends_on("r-rpart", type=("build", "run"), when="@3.16.0:") depends_on("r-tidyr", type=("build", "run"), when="@3.12.0:") depends_on("r-cpp11", type=("build", "run"), when="@3.12.0:") diff --git a/var/spack/repos/builtin/packages/r-microbenchmark/package.py b/var/spack/repos/builtin/packages/r-microbenchmark/package.py index 5382fa8ac55b1f..6b43c99afc58e2 100644 --- a/var/spack/repos/builtin/packages/r-microbenchmark/package.py +++ b/var/spack/repos/builtin/packages/r-microbenchmark/package.py @@ -16,5 +16,6 @@ class RMicrobenchmark(RPackage): license("BSD-2-Clause") + version("1.4.10", sha256="04cc41be72708dce8d31ff1cb105d88cc9f167250ea00fe9a165c99204b9b481") version("1.4.9", sha256="443d2caf370ef33e4ac2773176ad9eb86f8790f43b430968ef9647699dbbffd2") version("1.4-7", sha256="268f13c6323dd28cc2dff7e991bb78b814a8873b4a73f4a3645f40423da984f6") diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index 44337b542c5dce..a7dfbe87cb1f96 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -16,6 +16,7 @@ class RMinqa(RPackage): license("GPL-2.0-only") + version("1.2.8", sha256="5941e4b9b01978fc6d9fe24e6ca60cca66883fe9fa6ff3cbfa32aa1ac9db5467") version("1.2.5", sha256="9b83562390990d04b2c61b63ac9a7c9ecab0d35c460d232596e3c73bdc89f4be") version("1.2.4", sha256="cfa193a4a9c55cb08f3faf4ab09c11b70412523767f19894e4eafc6e94cccd0c") diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index f70c74bece3ff7..c99a10467bc674 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -16,6 +16,7 @@ class RMlbench(RPackage): license("GPL-2.0-only") + version("2.1-5", sha256="4dbfd652adda7c0caf544d3a6cd23a2ee97c22faefe4d15b8a6782061cc9e76f") version("2.1-3", sha256="b1f92be633243185ab86e880a1e1ac5a4dd3c535d01ebd187a4872d0a8c6f194") version("2.1-1", sha256="748141d56531a39dc4d37cf0a5165a40b653a04c507e916854053ed77119e0e6") diff --git a/var/spack/repos/builtin/packages/r-mlr/package.py b/var/spack/repos/builtin/packages/r-mlr/package.py index 00c402838ed252..8927e32c22eb32 100644 --- a/var/spack/repos/builtin/packages/r-mlr/package.py +++ b/var/spack/repos/builtin/packages/r-mlr/package.py @@ -24,6 +24,7 @@ class RMlr(RPackage): license("BSD-2-Clause") + version("2.19.2", sha256="85e67049f1067a7eae0f0e5b5c4e4e46a25407a17750512220f438a0fa5097c5") version("2.19.1", sha256="9d52afd54d9d5746e798134d5675818cee65caa53d7eaf317d46ba88d5865202") version("2.19.0", sha256="1149c9b453896481c85906045aa82d511d96979ddecbe5a3faf04f9f4a5e6113") version("2.18.0", sha256="c2fe74e90ed32e5f4cbb0c09a1742051688d87db2f12dd408ddad0f5afc7f8d3") diff --git a/var/spack/repos/builtin/packages/r-mockery/package.py b/var/spack/repos/builtin/packages/r-mockery/package.py index 12e25a80e62f5f..8ccce8f80291d7 100644 --- a/var/spack/repos/builtin/packages/r-mockery/package.py +++ b/var/spack/repos/builtin/packages/r-mockery/package.py @@ -19,6 +19,7 @@ class RMockery(RPackage): license("MIT") + version("0.4.4", sha256="072220a0f2455fca91649fc7ce4ed503cfaa965aa769d1bd0fd6622b222845c3") version("0.4.3", sha256="9fc9f1565c51e51b33634e9fc5328211559a561f095bc4d0fa8bd8b7533d476a") version("0.4.2", sha256="988e249c366ee7faf277de004084cf5ca24b5c8a8c6e3842f1b1362ce2f7ea9b") version("0.4.1", sha256="959d83f8b21e9a89c06c73f310356790c2d63d5ba39b2b60c6777a4eb33909c1") diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index 6fd24c0aa9cc0a..3e709c8621b78d 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -19,6 +19,7 @@ class RMultcomp(RPackage): license("GPL-2.0-only") + version("1.4-26", sha256="a100bbdfaffb8b9cf9a59decf80267421673c4f1eef44c0bc3f77be16b3a69ec") version("1.4-23", sha256="425154a58bd8f2dbaff5d16e97b03473cbc0d571b1c2e4dd66a13c6d20a8cde1") version("1.4-20", sha256="328be4fa4189bde4a7bc645d9ae5ea071ebe31ed658c8c48c4e45aa8e8c42cfc") version("1.4-19", sha256="f03473b1cfbc714cd85a0ee948e2ecdb23bcdccbe95e27237ee25e9c71e3e557") diff --git a/var/spack/repos/builtin/packages/r-multcompview/package.py b/var/spack/repos/builtin/packages/r-multcompview/package.py index bbb75b1dc4deea..6e95f5fa844f20 100644 --- a/var/spack/repos/builtin/packages/r-multcompview/package.py +++ b/var/spack/repos/builtin/packages/r-multcompview/package.py @@ -18,5 +18,6 @@ class RMultcompview(RPackage): cran = "multcompView" + version("0.1-10", sha256="38f249b22758c9f727b1656d1a08c6022a06a1ea319364ff680147d64598ad8a") version("0.1-9", sha256="1f3993e9d51f3c7a711a881b6a20081a85ffab60c27828ceb3640a6b4c887397") version("0.1-8", sha256="123d539172ad6fc63d83d1fc7f356a5ed7b691e7803827480118bebc374fd8e5") diff --git a/var/spack/repos/builtin/packages/r-multicool/package.py b/var/spack/repos/builtin/packages/r-multicool/package.py index fd79b36bde6dc3..a709fbf6bab917 100644 --- a/var/spack/repos/builtin/packages/r-multicool/package.py +++ b/var/spack/repos/builtin/packages/r-multicool/package.py @@ -29,6 +29,7 @@ class RMulticool(RPackage): license("GPL-2.0-only") + version("1.0.1", sha256="bd72de1fbd7ea32018d6af09ac2af80871ebe26bf9dfdf1ba53f87e6cff56c1f") version("0.1-12", sha256="487d28d9c3c606be0cf56e2d8f8b0d79fb71949c68886ea9251fbb1c01664a36") version("0.1-11", sha256="1c907e64af2ac39facdf431a5691e69649f64af1f50e198ae39da5bf30026476") version("0.1-10", sha256="5bb0cb0d9eb64420c862877247a79bb0afadacfe23262ec8c3fa26e5e34d6ff9") diff --git a/var/spack/repos/builtin/packages/r-multitaper/package.py b/var/spack/repos/builtin/packages/r-multitaper/package.py index 024e7bbe305539..5784745e4d0d5c 100644 --- a/var/spack/repos/builtin/packages/r-multitaper/package.py +++ b/var/spack/repos/builtin/packages/r-multitaper/package.py @@ -22,6 +22,7 @@ class RMultitaper(RPackage): license("GPL-2.0-or-later") + version("1.0-17", sha256="3430ca62be2ee491d29b05e461647327a8977743241af2d3c39277c920170af3") version("1.0-15", sha256="837d71f3b46fbce2bea210449cf75e609f5363ff23b7808f5f115fdc51e6a3be") version("1.0-14", sha256="c84c122541dc2874131446e23b212259b3b00590d701efee49e6740fd74a8d13") diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index 44e8c0c4280f95..fd67db64021fb2 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -19,6 +19,7 @@ class RMunsell(RPackage): license("MIT") + version("0.5.1", sha256="03a2fd9ac40766cded96dfe33b143d872d0aaa262a25482ce19161ca959429a6") version("0.5.0", sha256="d0f3a9fb30e2b5d411fa61db56d4be5733a2621c0edf017d090bdfa5e377e199") version("0.4.3", sha256="397c3c90af966f48eebe8f5d9e40c41b17541f0baaa102eec3ea4faae5a2bd49") diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 57fead3897e9ed..00d927b93df30a 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -16,6 +16,7 @@ class RMvtnorm(RPackage): license("GPL-2.0-only") + version("1.2-6", sha256="c4dedc3c296ed8e5fd2faecdba6de302bca1dd2e96b84fd846c47a54286acd31") version("1.1-3", sha256="ff4e302139ba631280fc9c4a2ab168596bfd09e17a805974199b043697c02448") version("1.1-1", sha256="e965dad5e93babb7ded25b5ebdbd52332191b61f897d68853a379a07620d45de") version("1.0-11", sha256="0321612de99aa9bc75a45c7e029d3372736014223cbdefb80d8cae600cbc7252") diff --git a/var/spack/repos/builtin/packages/r-nanotime/package.py b/var/spack/repos/builtin/packages/r-nanotime/package.py index 35af382e82f65e..07d29c1cd30997 100644 --- a/var/spack/repos/builtin/packages/r-nanotime/package.py +++ b/var/spack/repos/builtin/packages/r-nanotime/package.py @@ -18,6 +18,7 @@ class RNanotime(RPackage): license("GPL-2.0-or-later") + version("0.3.9", sha256="cc2965edfd68f83a84142ead27a5a84e1c5b2931ec911dddecb3e0bc3ffa79d8") version("0.3.7", sha256="a771782653aef62a071682907fd7bd611f7f98fc80beda227d619aae166ccb15") version("0.3.6", sha256="df751a5cb11ca9ac8762cd1e33bc73e7d20fde9339d2c46bc6f85873388568df") version("0.3.5", sha256="44deaae58452bacea4855d018212593811401c2afc460ffb11905479013923a0") diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index 874a36f0639b38..0c74f80b6a8f34 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -28,6 +28,7 @@ class RNcdf4(RPackage): license("GPL-3.0-or-later") + version("1.23", sha256="8b05fee9f79dc0605e487dd5d031d2c7dcaedec8f47904983b1c26739894da89") version("1.21", sha256="2f5ae7def382c595c66b6ed0ea0529f8337108eb73de39939f9762f3fb21b30d") version("1.19", sha256="cb8d139211fc7475c435ce9f6a43e47710603409dc523b053c8b7de9848dfb63") version("1.17", sha256="db95c4729d3187d1a56dfd019958216f442be6221bd15e23cd597e6129219af6") diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index bea112a0b85d98..9028bd9c21f7cd 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -17,6 +17,7 @@ class RNetwork(RPackage): license("GPL-2.0-or-later") + version("1.18.2", sha256="bf33892db9cabba9cd1597f09ef0e1277d63520a8cebd2d919e0d41fc706a27b") version("1.18.1", sha256="c80d70352967d8480cfa801f2a31bfe130e2ad4dbf2c07b0046e57f3013cd243") version("1.18.0", sha256="59f4b10174c87c8742c6b3c93c5e47833042375f5f872fdd23155b4a5244ce5b") version("1.17.2", sha256="9588a198807c8c68da147f479ca9af5bcb4468cf91b6a90b8044d313d9fa30f7") diff --git a/var/spack/repos/builtin/packages/r-nimble/package.py b/var/spack/repos/builtin/packages/r-nimble/package.py index 816780deebf76a..c85b3e059f6cea 100644 --- a/var/spack/repos/builtin/packages/r-nimble/package.py +++ b/var/spack/repos/builtin/packages/r-nimble/package.py @@ -28,6 +28,7 @@ class RNimble(RPackage): license("BSD-3-Clause OR GPL-2.0-or-later") + version("1.2.1", sha256="2e8571e73e5b7553ee84db376444c18e211d4ba542ed415004c5128cb6802587") version("0.13.1", sha256="dc70caab64a8a4e44fb13fa6d67f6f2a0453fa684669e24718758bb2a8cf8530") version("0.12.2", sha256="2af7a3ab159a7f0b3b4b139da1db45be4b602f2c0e115cb0403b060ab0101a1b") version("0.12.1", sha256="3520f3212a48c8cbe08a6a8e57b3a72180594f7c09f647d1daf417c9857867d8") @@ -38,5 +39,7 @@ class RNimble(RPackage): depends_on("r@3.1.2:", type=("build", "run")) depends_on("r-igraph", type=("build", "run")) depends_on("r-coda", type=("build", "run")) + depends_on("r-numderiv", type=("build", "run"), when="@1.2.1:") + depends_on("r-pracma", type=("build", "run"), when="@1.2.1:") depends_on("r-r6", type=("build", "run")) depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-nleqslv/package.py b/var/spack/repos/builtin/packages/r-nleqslv/package.py index da58b461a9f1cf..86dd4de0c7dab7 100644 --- a/var/spack/repos/builtin/packages/r-nleqslv/package.py +++ b/var/spack/repos/builtin/packages/r-nleqslv/package.py @@ -19,6 +19,7 @@ class RNleqslv(RPackage): license("GPL-2.0-or-later") + version("3.3.5", sha256="1298172d2fe67d8d6b742ce7e792f6b897f081da5c94d34f14970ab531f04b3a") version("3.3.4", sha256="2783e7525bcd155dd8cedf5a41b7db65cd1fa0e095cd937371448316f3930fcf") version("3.3.3", sha256="2e46dfce95ddfd7ed5208413ee41f6bdf1ae18414fb1d0c146d9da3af12ac633") version("3.3.2", sha256="f54956cf67f9970bb3c6803684c84a27ac78165055745e444efc45cfecb63fed") diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index f08f3a4b2c5b65..38f6eeb5bc180b 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -15,6 +15,7 @@ class RNlme(RPackage): license("GPL-2.0-or-later") + version("3.1-166", sha256="237a14ee8d78755b11a7efe234b95be40b46fbdd1b4aaf463f6d532be1909762") version("3.1-162", sha256="ba6da2575554afa2614c4cba9971f8a9f8a07622d201284cb78899f3d6a2dc67") version("3.1-160", sha256="d4454623194876b083774c662fd223bc3b9e8325824cb758b8adecd5dc0d8a08") version("3.1-159", sha256="9bb05f5c3146e2d75078e668821485a3e9ca246fd5d7db2ef1963d3735d919bf") @@ -32,4 +33,5 @@ class RNlme(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@3.1-131.1") depends_on("r@3.5.0:", type=("build", "run"), when="@3.1-134:3.1-135") depends_on("r@3.4.0:", type=("build", "run"), when="@3.1-135.5:") + depends_on("r@3.6.0:", type=("build", "run"), when="@3.1-165:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-nloptr/package.py b/var/spack/repos/builtin/packages/r-nloptr/package.py index 9d53c849160508..946812061b9981 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -25,6 +25,7 @@ class RNloptr(RPackage): license("LGPL-3.0-or-later") + version("2.1.1", sha256="4cdaf55dfdeb090119f2c2ca77f617962524654da4511bacd650f62bb6dad8ea") version("2.0.3", sha256="7b26ac1246fd1bd890817b0c3a145456c11aec98458b8518de863650b99616d7") version("2.0.0", sha256="65ca3149cfc9ba15ac10a91f34b5d86b20f5fd693f44e3edf3e392402911619a") version("1.2.2.3", sha256="af08b74fd5e7b4cb455fe67ed759346cbb8f3b9a4178f5f117e0092e5c9af6ff") @@ -32,7 +33,7 @@ class RNloptr(RPackage): version("1.2.1", sha256="1f86e33ecde6c3b0d2098c47591a9cd0fa41fb973ebf5145859677492730df97") version("1.0.4", sha256="84225b993cb1ef7854edda9629858662cc8592b0d1344baadea4177486ece1eb") - depends_on("r-testthat", when="@2.0.0:") + depends_on("r-testthat", when="@2.0.0:2.1.0") depends_on("nlopt@2.4.0:") depends_on("nlopt@2.7.0:", when="@2.0.0:") diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index 744605ac88498f..db582ce04fecb5 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -18,6 +18,7 @@ class RNmf(RPackage): cran = "NMF" + version("0.27", sha256="af4302efca4a7654fecd31c376f1bb3496428279a50b8d5691c8a7e66e3f3ef9") version("0.26", sha256="8d44562ef5f33f3811929f944c9d029ec25526d2ddddfe7c8a5b6e23adbc2ec0") version("0.24.0", sha256="481811d35b3bbc07e9a60e2f853b05ef26581b43be9c6c4bab81151b8dcadd93") version("0.23.0", sha256="0f0cca01b37bf46fce90d2e951df609d3d377908aa607825083fd0c47cc24753") diff --git a/var/spack/repos/builtin/packages/r-nmof/package.py b/var/spack/repos/builtin/packages/r-nmof/package.py index 52dcda0ebdde33..a19a76d26029a8 100644 --- a/var/spack/repos/builtin/packages/r-nmof/package.py +++ b/var/spack/repos/builtin/packages/r-nmof/package.py @@ -19,6 +19,7 @@ class RNmof(RPackage): cran = "NMOF" + version("2.8-0", sha256="6dc53a9be41e673e9b2fcb2783aa82090db5455f079b8aac4c388d679f6ec28a") version("2.7-1", sha256="b03e309df35b3fb0980c8a171e1cd1c69739fa6ab7a8992c043166fae4644e23") version("2.7-0", sha256="11eeda730262418f22d24d8f72d363a05ac4c3c1130b88f4eafb1b8d81c83160") version("2.5-1", sha256="0468ba72364cbdf90781824dfb1a60324203e2248d93cb6f1ffd6eb0d271f390") @@ -27,3 +28,4 @@ class RNmof(RPackage): version("1.6-0", sha256="5484cd43c28aaf23d560c2dde8bcd8dd440a205d2214eb50e02fe0bb42ec2755") depends_on("r@2.14:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@2.8-0:") diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index 63b8c5fc3233c7..7dab7edbf0c014 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -16,6 +16,7 @@ class RNnet(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-19", sha256="a9241f469270d3b03bbab7dc0d3c6a06a84010af16ba82fd3bd6660b35382ce7") version("7.3-18", sha256="d29aebfb5cb00071eecf754d55db5d474a6fda88860df5c9d31ba89aa8d9e3d0") version("7.3-17", sha256="ee750bb8164aa058edf93823af987ab2c7ec64128dce2abeaae1b7d3661e9a67") version("7.3-14", sha256="5d1b9e9764d74d16c651f18f949aa4e9e2995ba64633cbfa2c6a7355ae30f4af") diff --git a/var/spack/repos/builtin/packages/r-nnls/package.py b/var/spack/repos/builtin/packages/r-nnls/package.py index 3fb292aa7e1d9c..e1575760df6669 100644 --- a/var/spack/repos/builtin/packages/r-nnls/package.py +++ b/var/spack/repos/builtin/packages/r-nnls/package.py @@ -17,4 +17,5 @@ class RNnls(RPackage): license("GPL-2.0-or-later") + version("1.5", sha256="cd70feb286f86f6dead75da693a8f67c9bd3b91eb738e6e6ac659e3b8c7a3452") version("1.4", sha256="0e5d77abae12bc50639d34354f96a8e079408c9d7138a360743b73bd7bce6c1f") diff --git a/var/spack/repos/builtin/packages/r-nonnest2/package.py b/var/spack/repos/builtin/packages/r-nonnest2/package.py index 3899ba0a474c87..a12129ba5a0b1a 100644 --- a/var/spack/repos/builtin/packages/r-nonnest2/package.py +++ b/var/spack/repos/builtin/packages/r-nonnest2/package.py @@ -20,6 +20,7 @@ class RNonnest2(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.5-7", sha256="e440c2464b3bd3b452e02583bb280eecba6acecf0f2c04b6b9fe4dcdd128db3e") version("0.5-5", sha256="027f510e322122fc75c936251a95ddd392f96047ac86e0fae6cf8f883ac7aab5") depends_on("r@3.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-nor1mix/package.py b/var/spack/repos/builtin/packages/r-nor1mix/package.py index 2f6b7907c37032..6e2747be40ceb2 100644 --- a/var/spack/repos/builtin/packages/r-nor1mix/package.py +++ b/var/spack/repos/builtin/packages/r-nor1mix/package.py @@ -19,5 +19,6 @@ class RNor1mix(RPackage): license("GPL-2.0-or-later") + version("1.3-3", sha256="97bfd0f8c847fa68bf607aaa465845a34ac8a7a262315073026a6a1937dd076e") version("1.3-0", sha256="9ce4ee92f889a4a4041b5ea1ff09396780785a9f12ac46f40647f74a37e327a0") version("1.2-3", sha256="435e6519e832ef5229c51ccb2619640e6b50dfc7470f70f0c938d18a114273af") diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index be058a55493255..eb061bf5d4ead6 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -24,6 +24,7 @@ class ROpenssl(RPackage): license("MIT") + version("2.2.1", sha256="25a12328d584212d8d4c095b3d2a71152c5d2bc4adda7a9addb25da01136f78d") version("2.0.6", sha256="77f3032a16270f0d1734f269b8d348eedc75b277812854386091143082c1b3f3") version("2.0.4", sha256="a1a5c65127c20c0ca3b46f2c4f4d3817276a887a231569537c1373e7740a5cec") version("2.0.3", sha256="7cde98520bec857f043fb6aae92334e2ae0dcd86108adc9b18ca298ec16286aa") diff --git a/var/spack/repos/builtin/packages/r-openxlsx/package.py b/var/spack/repos/builtin/packages/r-openxlsx/package.py index d9a311a07d2780..dfcb39680d2b42 100644 --- a/var/spack/repos/builtin/packages/r-openxlsx/package.py +++ b/var/spack/repos/builtin/packages/r-openxlsx/package.py @@ -18,6 +18,7 @@ class ROpenxlsx(RPackage): license("MIT") + version("4.2.6.1", sha256="c208c506a5d6a1d89a18c2b0bedceb467a461939128f2d7916efbf41e7a17aa9") version("4.2.5.2", sha256="ee7089e7e5832ef22ee0d0eebf7cca5096ce23afb2bcdb58700be62526fc9b67") version("4.2.5.1", sha256="64d224380809d8d19788b02daf9d6dae45262594b81f5e013d37d34daf0945c8") version("4.2.5", sha256="65d06d2819b656ac30fc78437ee712a83fb5a7ab750f56268e5c9e578c582519") diff --git a/var/spack/repos/builtin/packages/r-optimx/package.py b/var/spack/repos/builtin/packages/r-optimx/package.py index b079c0226ca9b2..de159d7b6492b7 100644 --- a/var/spack/repos/builtin/packages/r-optimx/package.py +++ b/var/spack/repos/builtin/packages/r-optimx/package.py @@ -22,10 +22,15 @@ class ROptimx(RPackage): license("GPL-2.0-only") + version( + "2023-10.21", sha256="0d732d5604c26af59cfb95b80ed4e226c9c10422e2d82a6cc06b92f9ba6a44b5" + ) version("2022-4.30", sha256="ebe9887a22296cf4b2db07981aaa1f898bf7c17fb61a4b398c228d4077d0b410") version( "2021-10.12", sha256="39384c856b5efa3992cd230548b60eff936d428111ad6ad5b8fb98a3bcbb7943" ) version("2020-4.2", sha256="6381c25c322287fc98ab1b2965d3f68c9a92c587c76aca1d33fd6428b2167101") + depends_on("r-nloptr", type=("build", "run"), when="@2023-10.21:") depends_on("r-numderiv", type=("build", "run")) + depends_on("r-pracma", type=("build", "run"), when="@2023-10.21:") diff --git a/var/spack/repos/builtin/packages/r-optparse/package.py b/var/spack/repos/builtin/packages/r-optparse/package.py index 90ab226ce4a23d..6e8cb4c2eadc4d 100644 --- a/var/spack/repos/builtin/packages/r-optparse/package.py +++ b/var/spack/repos/builtin/packages/r-optparse/package.py @@ -17,6 +17,7 @@ class ROptparse(RPackage): license("GPL-2.0-or-later") + version("1.7.5", sha256="0cc917505780786e69b8ceca4b3840ed7b0c011495108ec05af3871965415712") version("1.7.3", sha256="6287e1af051d4a65037900ce7b30bd962039450dd4eab63b6f2491eace6a07ed") version("1.7.1", sha256="324e304c13efd565d766766193d4ccd75e2cd949dfcfb416afc3939489071fe7") version("1.6.6", sha256="51779d497146e9354b1153713d939e81551e08948c2b00e4b117b1377c0b60d0") diff --git a/var/spack/repos/builtin/packages/r-ordinal/package.py b/var/spack/repos/builtin/packages/r-ordinal/package.py index 6e7cc275734d16..702e439b1bd0b8 100644 --- a/var/spack/repos/builtin/packages/r-ordinal/package.py +++ b/var/spack/repos/builtin/packages/r-ordinal/package.py @@ -25,6 +25,9 @@ class ROrdinal(RPackage): license("GPL-2.0-or-later") + version( + "2023.12-4.1", sha256="2c9dcfa438c964ff1825033d0759d25f404a2a4c5252b81e40f19cffc18e38b1" + ) version( "2022.11-16", sha256="5488ad1dfa531a09d017d68d7393d376c8bc49cceeaa6a3e5f7d57b99168d493" ) diff --git a/var/spack/repos/builtin/packages/r-osqp/package.py b/var/spack/repos/builtin/packages/r-osqp/package.py index a02f97fe441a75..22077432ac18db 100644 --- a/var/spack/repos/builtin/packages/r-osqp/package.py +++ b/var/spack/repos/builtin/packages/r-osqp/package.py @@ -18,10 +18,12 @@ class ROsqp(RPackage): license("Apache-2.0 OR custom") + version("0.6.3.3", sha256="ff3d8e4ec7764333144d461eb5ea7a4adbf5b5f29f84c3ec3e60a93802e2f5bb") version("0.6.0.8", sha256="14034045ae4ae5ec4eae4944653d41d94282fa85a0cd53614ac86f34fd02ed97") version("0.6.0.7", sha256="ee6584d02341e3f1d8fab3b2cb93defd6c48d561297d82a6bedb3e7541868203") depends_on("r-rcpp@0.12.14:", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) + depends_on("r-matrix@1.6-1:", type=("build", "run"), when="@0.6.3:") depends_on("r-r6", type=("build", "run")) depends_on("cmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index f62071662ee0ed..55110d1834984e 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -17,6 +17,7 @@ class RPackrat(RPackage): license("GPL-2.0-only") + version("0.9.2", sha256="69df5943257e6c4d06f3d907241b668b53dedece72158ca935260b8b8e1672d7") version("0.9.1", sha256="414013c6044d2985e69bbc8494c152716b6f81ca15b329c731cfe8f965fd3344") version("0.8.1", sha256="45db0301fa6a0a6944b070ac219cd1fa754bac24e517e59758cdc51e8aed23da") version("0.8.0", sha256="3025b9052974bec00fb09299226b80004d48e611e15a65e5a0bc49d3538844ef") diff --git a/var/spack/repos/builtin/packages/r-paleotree/package.py b/var/spack/repos/builtin/packages/r-paleotree/package.py index 48507c3653e045..0f8149cfac109b 100644 --- a/var/spack/repos/builtin/packages/r-paleotree/package.py +++ b/var/spack/repos/builtin/packages/r-paleotree/package.py @@ -17,6 +17,7 @@ class RPaleotree(RPackage): license("CC0-1.0") + version("3.4.7", sha256="cb28c8a7929905b50094439423b7839174f7ae1b652607583528d44e102f6317") version("3.4.5", sha256="c4dceb3352b74730643aa9f62ceb7f020ce6763614ba334723aadf0eb003d125") version("3.4.4", sha256="8809c3395e6904669db8c7cc3b54dd5c3c76948c8568d310cf02e4a5dbc678e4") version("3.3.25", sha256="aa64b9120075581229439227a12db776d052b03eb5f9721692a16a9402ac8712") diff --git a/var/spack/repos/builtin/packages/r-pamr/package.py b/var/spack/repos/builtin/packages/r-pamr/package.py index b16f865fbb660a..4883fa47bb7a6a 100644 --- a/var/spack/repos/builtin/packages/r-pamr/package.py +++ b/var/spack/repos/builtin/packages/r-pamr/package.py @@ -15,9 +15,11 @@ class RPamr(RPackage): license("GPL-2.0-only") + version("1.57", sha256="01968f7620f1a5e4be1ce666f7ff52211b9dcf6cf5948112c7441aabae56af3d") version("1.56.1", sha256="d0e527f2336ee4beee91eefb2a8f0dfa96413d9b5a5841d6fc7ff821e67c9779") version("1.55", sha256="ed910194937a6097ec79234d84777856fd520b111a7c79f7c86dc607169cc3c3") depends_on("r@2.10:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@1.57:") depends_on("r-cluster", type=("build", "run")) depends_on("r-survival", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pan/package.py b/var/spack/repos/builtin/packages/r-pan/package.py index c50d192d007429..a44741afc873fa 100644 --- a/var/spack/repos/builtin/packages/r-pan/package.py +++ b/var/spack/repos/builtin/packages/r-pan/package.py @@ -20,5 +20,8 @@ class RPan(RPackage): license("GPL-3.0-only") + version("1.9", sha256="cd91232d653783ea7f34c0eebaa80c472b5501b21eea500c4c1a8e57116c6eea") version("1.6", sha256="adc0df816ae38bc188bce0aef3aeb71d19c0fc26e063107eeee71a81a49463b6") version("1.4", sha256="e6a83f0799cc9714f5052f159be6e82ececd013d1626f40c828cda0ceb8b76dc") + + depends_on("r@2.10:", when="@1.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-parallelly/package.py b/var/spack/repos/builtin/packages/r-parallelly/package.py index ad333a9de4556a..ca52c9bb829df0 100644 --- a/var/spack/repos/builtin/packages/r-parallelly/package.py +++ b/var/spack/repos/builtin/packages/r-parallelly/package.py @@ -24,6 +24,7 @@ class RParallelly(RPackage): license("LGPL-2.1-or-later") + version("1.38.0", sha256="632c823c64d1bb840b2a5ff2cb2f5ffc743d62d5090a3cde55a2ebdde230d1aa") version("1.35.0", sha256="3f5e9b6507196aab052c5e67f8b524b75aa356731c5eaffbadde76c967ad5dcd") version("1.32.1", sha256="31c685f59ac7ff702fe2720910780378113adf0df0baf048a62eef94524cca90") version("1.31.1", sha256="40c7fc3d842fa928448e574091a521bead2367bf97545c744ca78ea9af3117da") diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index 4c0783c34c9bbd..adb388f56785ea 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -30,6 +30,7 @@ class RParty(RPackage): license("GPL-2.0-only") + version("1.3-17", sha256="f0e076b1e743cf50274b57d3a69526461fac5e499fc33d73825f293076f27d4b") version("1.3-13", sha256="def05e7f0c59f1b1ecf0ab3929cff75ae8c2691aaf52292cad4371281b897e7b") version("1.3-11", sha256="3ea41a1775d40bc6d0bdf657b98d939d99f98925ac985a31c969735c56618c9c") version("1.3-10", sha256="e5892955f6ce662ade568e646d1d672c3ecbf5d4e74b4a887a353e6160f7b56a") diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index c65bd967e30c3f..aa345616874bed 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -25,6 +25,7 @@ class RPartykit(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.2-22", sha256="0f0015aa970b10a85d1fabfd2fcf35a6552e292fe151766e348c105f7f5c0adb") version("1.2-20", sha256="63509aa3ed2d7417ad284c037cef66bc837fdb7a97967957e79b9fee8ed2e0da") version("1.2-16", sha256="e643d4e29c1894497e3dd5fe274783319d0044dec50282ed807cebc21736ddb2") version("1.2-15", sha256="b2e9454b2f4b9a39c9581c5871462f00acef4eeee5696ce3e32cfa1468d1e3ac") diff --git a/var/spack/repos/builtin/packages/r-patchwork/package.py b/var/spack/repos/builtin/packages/r-patchwork/package.py index 96b701585f6847..f025aa8e9f73df 100644 --- a/var/spack/repos/builtin/packages/r-patchwork/package.py +++ b/var/spack/repos/builtin/packages/r-patchwork/package.py @@ -20,8 +20,11 @@ class RPatchwork(RPackage): license("MIT") + version("1.2.0", sha256="cc31ea13560c424de9bfe2287d926a7d9e6cc8da2d5561402bb145b4f51b68a1") version("1.1.2", sha256="dab9d5d2d704d591717eaa6efeacf09cb6cd7bee2ca2c46d18414e8503ac8977") version("1.1.1", sha256="cf0d7d9f92945729b499d6e343441c55007d5b371206d5389b9e5154dc7cf481") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) depends_on("r-gtable", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.1.3:") + depends_on("r-rlang", type=("build", "run"), when="@1.1.3:") diff --git a/var/spack/repos/builtin/packages/r-pbapply/package.py b/var/spack/repos/builtin/packages/r-pbapply/package.py index 070035aca81824..221fc29544b036 100644 --- a/var/spack/repos/builtin/packages/r-pbapply/package.py +++ b/var/spack/repos/builtin/packages/r-pbapply/package.py @@ -19,6 +19,7 @@ class RPbapply(RPackage): license("GPL-2.0-or-later") + version("1.7-2", sha256="aeed8c8c308c7e3827daf10b01b8ed4b88c1d68cea57d72d67c600c0ce0dae13") version("1.7-0", sha256="64b8e931e0a09031c20b66173ce80a646043b8f135d329bc86226a11c6b706c0") version("1.5-0", sha256="effdfee286e5ba9534dc2ac3cee96590a37f5cd2af28c836d00c25ca9f070a55") version("1.4-3", sha256="8fe6287535be766b5a688810e2cc1ca4e668ac6b42b6e832473fe5701133eb21") diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index c3ee4bbac8befb..95da65e1e9c71b 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -22,6 +22,7 @@ class RPbdzmq(RPackage): license("GPL-3.0-or-later") + version("0.3-11", sha256="da7e204d857370201f75a05fbd808a2f409d440cc96855bb8f48f4a5dd75405b") version("0.3-9", sha256="d033238d0a9810581f6b40c7c75263cfc495a585653bbff98e957c37954e0fb6") version("0.3-8", sha256="eded4ccf6ee54a59e06061f1c6e67a8ec36e03c6ab2318af64446d8f95505465") version("0.3-7", sha256="df2d2be14b2f57a64d76cdda4c01fd1c3d9aa12221c63524c01c71849df11808") diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 912c6de655b21b..9dba98bf8c20c6 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -24,6 +24,7 @@ class RPbkrtest(RPackage): license("GPL-2.0-or-later") + version("0.5.3", sha256="b03e5156fef6a4a2ea67c1d15c051799e63acafef2f89962c580645266e6ba63") version("0.5.2", sha256="8e79adf035a0fcf3c82145ad55847497379e009f7be880ba3007ebeb2e69b6e3") version("0.5.1", sha256="b2a3452003d93890f122423b3f2487dcb6925440f5b8a05578509e98b6aec7c5") version("0.5-0.1", sha256="f56525488c6efe4a5cbf849bf9a82747041478605b166c29bad54e464e46f469") @@ -35,12 +36,14 @@ class RPbkrtest(RPackage): depends_on("r@3.2.3:", type=("build", "run"), when="@0.4-6:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.5-0.1:") depends_on("r@4.1.0:", type=("build", "run"), when="@0.5.2:") + depends_on("r@4.2.0:", type=("build", "run"), when="@0.5.3:") depends_on("r-lme4@1.1-10:", type=("build", "run")) depends_on("r-lme4@1.1-31:", type=("build", "run"), when="@0.5.2:") depends_on("r-broom", type=("build", "run"), when="@0.5-0.1:") + depends_on("r-doby", type=("build", "run"), when="@0.5.3:") depends_on("r-dplyr", type=("build", "run"), when="@0.5-0.1:") depends_on("r-mass", type=("build", "run")) - depends_on("r-matrix@1.2.3:", type=("build", "run")) + depends_on("r-matrix@1.2-3:", type=("build", "run")) depends_on("r-numderiv", type=("build", "run"), when="@0.5-0.1:") depends_on("r-knitr", type=("build", "run"), when="@0.5-0.1:0.5.1") depends_on("r-magrittr", type=("build", "run"), when="@0.5-0.1:0.5.1") diff --git a/var/spack/repos/builtin/packages/r-pcapp/package.py b/var/spack/repos/builtin/packages/r-pcapp/package.py index 536c2e65da8a9e..7a362a7396bf77 100644 --- a/var/spack/repos/builtin/packages/r-pcapp/package.py +++ b/var/spack/repos/builtin/packages/r-pcapp/package.py @@ -16,6 +16,7 @@ class RPcapp(RPackage): cran = "pcaPP" + version("2.0-5", sha256="674faed967016a19f9d927506d6b3f4fc7ff2b2ab5679b2368429ee2c61b7c10") version("2.0-3", sha256="1aac554f039753bf9d026090e47d66b82bf3f1f75479ed0adefa3f7bbb55d603") version("2.0-2", sha256="a18b66974e0bfa5af6505acd777d04fd605b32f06009073488ee2f44280bb54b") version("2.0-1", sha256="9690e2f263162452d5a14bd8c52264cb70b317d30907411af4e5b6df4086121a") @@ -28,4 +29,5 @@ class RPcapp(RPackage): version("1.9-60", sha256="9a4b471957ac39ed7c860e3165bf8e099b5b55cf814654adb58f9d19df2718e7") version("1.9-50", sha256="137637314fba6e11883c63b0475d8e50aa7f363e064baa1e70245f7692565b56") + depends_on("r@3.6.2:", type=("build", "run"), when="@2.0-4:") depends_on("r-mvtnorm", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pegas/package.py b/var/spack/repos/builtin/packages/r-pegas/package.py index c60f86f2bc7398..955281e8108535 100644 --- a/var/spack/repos/builtin/packages/r-pegas/package.py +++ b/var/spack/repos/builtin/packages/r-pegas/package.py @@ -22,6 +22,7 @@ class RPegas(RPackage): license("GPL-2.0-or-later") + version("1.3", sha256="103eb2b29d70e71315809421abdf6f2e8ada9c466469c6e3e7cc0314b9cd3dc8") version("1.2", sha256="9d39f3937c09ea6e2189949a23879bb366f5ca1df3a6aac411c7d2b73837ad55") version("1.1", sha256="87ba91a819496dfc3abdcc792ff853a6d49caae6335598a24c23e8851505ed59") version("0.14", sha256="7df90e6c4a69e8dbed2b3f68b18f1975182475bf6f86d4159256b52fd5332053") diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index 28e711039470c9..3b23775f414c32 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -25,4 +25,4 @@ class RPermute(RPackage): version("0.9-5", sha256="d2885384a07497e8df273689d6713fc7c57a7c161f6935f3572015e16ab94865") version("0.9-4", sha256="a541a5f5636ddd67fd856d3e11224f15bc068e96e23aabe3e607a7e7c2fc1cf1") - depends_on("r@2.14:", type=("build", "run")) + depends_on("r@2.14.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-philentropy/package.py b/var/spack/repos/builtin/packages/r-philentropy/package.py index 3bca7876a36eb7..f8d68c8e47df70 100644 --- a/var/spack/repos/builtin/packages/r-philentropy/package.py +++ b/var/spack/repos/builtin/packages/r-philentropy/package.py @@ -22,6 +22,7 @@ class RPhilentropy(RPackage): license("GPL-2.0-only") + version("0.8.0", sha256="3aa6d4918168f4fe2c56ea3f26381b0ffc02f1d5b9b95e294bac1a34bf66be3e") version("0.7.0", sha256="ce72e2327aee80aeeb630caa33be6a35e4f2b8a7491842d8c21099b9c43584b7") version("0.6.0", sha256="138acf2aedab17c9d367def378e35c8aba80d9e786284b2866955cea1c24eeb6") version("0.5.0", sha256="b39e9a825458f3377e23b2a133180566780e89019e9d22a6a5b7ca87c49c412f") diff --git a/var/spack/repos/builtin/packages/r-phylobase/package.py b/var/spack/repos/builtin/packages/r-phylobase/package.py index 6ef5f16f86cbe7..877479fdf8108d 100644 --- a/var/spack/repos/builtin/packages/r-phylobase/package.py +++ b/var/spack/repos/builtin/packages/r-phylobase/package.py @@ -16,6 +16,7 @@ class RPhylobase(RPackage): license("GPL-2.0-or-later") + version("0.8.12", sha256="9b81ca60dc6215e74b720880cc2db3abc1f7e6d8785ea7d7df95a950f0778f20") version("0.8.10", sha256="5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b") depends_on("r-ade4", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-phytools/package.py b/var/spack/repos/builtin/packages/r-phytools/package.py index 894bf1daae403f..fbe68ae74b8380 100644 --- a/var/spack/repos/builtin/packages/r-phytools/package.py +++ b/var/spack/repos/builtin/packages/r-phytools/package.py @@ -32,6 +32,7 @@ class RPhytools(RPackage): license("GPL-2.0-or-later") + version("2.3-0", sha256="973020a695be3fef94a37d7d6732d9352b66e44d30feb554d267b6aeb646d081") version("1.5-1", sha256="f8be59abbff1f5032be4523c361da53b0d5b71677fedebba6d7cbae2dca7e101") version("1.2-0", sha256="ba3c684118c0eaab4601b21988c553ce7ee019df1714d2ac8d4451075f843b86") version("1.0-3", sha256="bfe2aec6aae8235264c1494eee42be494fed81a676c6de9e39c57a6e3682b37d") @@ -48,6 +49,7 @@ class RPhytools(RPackage): depends_on("r-clustergeneration", type=("build", "run")) depends_on("r-coda", type=("build", "run")) depends_on("r-combinat", type=("build", "run")) + depends_on("r-deoptim", type=("build", "run"), when="@2.2-0:") depends_on("r-doparallel", type=("build", "run"), when="@1.5-1:") depends_on("r-expm", type=("build", "run")) depends_on("r-foreach", type=("build", "run"), when="@1.5-1:") @@ -57,8 +59,8 @@ class RPhytools(RPackage): depends_on("r-numderiv", type=("build", "run")) depends_on("r-optimparallel", type=("build", "run"), when="@1.2-0:") depends_on("r-phangorn@2.3.1:", type=("build", "run")) - depends_on("r-plotrix", type=("build", "run")) depends_on("r-scatterplot3d", type=("build", "run")) depends_on("r-animation", type=("build", "run"), when="@:0.6-99") depends_on("r-gtools", type=("build", "run"), when="@0.6-99:0.7-70") + depends_on("r-plotrix", type=("build", "run"), when="@:2.0-2") diff --git a/var/spack/repos/builtin/packages/r-pinfsc50/package.py b/var/spack/repos/builtin/packages/r-pinfsc50/package.py index 2c0808598ccce2..c2f91b8d1d0764 100644 --- a/var/spack/repos/builtin/packages/r-pinfsc50/package.py +++ b/var/spack/repos/builtin/packages/r-pinfsc50/package.py @@ -21,6 +21,7 @@ class RPinfsc50(RPackage): license("GPL-2.0-or-later") + version("1.3.0", sha256="971627cf4567fdb34db26010f2db44cfac5ff07f327d3247e778638cc4e849bf") version("1.2.0", sha256="ed1fe214b9261feef8abfbf724c2bd9070d68e99a6ea95208aff2c57bbef8794") depends_on("r@3.2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pixmap/package.py b/var/spack/repos/builtin/packages/r-pixmap/package.py index 25158831a2b0b4..b8a1808f4d14be 100644 --- a/var/spack/repos/builtin/packages/r-pixmap/package.py +++ b/var/spack/repos/builtin/packages/r-pixmap/package.py @@ -16,5 +16,6 @@ class RPixmap(RPackage): license("GPL-2.0-only") + version("0.4-13", sha256="e3dbc641a0497575b45a4140dadc6bf43cdf39b02393f93f1b0ee4f4d026e711") version("0.4-12", sha256="893ba894d4348ba05e6edf9c1b4fd201191816b444a214f7a6b2c0a79b0a2aec") version("0.4-11", sha256="6fa010749a59cdf56aad9f81271473b7d55697036203f2cd5d81372bcded7412") diff --git a/var/spack/repos/builtin/packages/r-pkgbuild/package.py b/var/spack/repos/builtin/packages/r-pkgbuild/package.py index 9289da8fb73d33..35498c04a8df18 100644 --- a/var/spack/repos/builtin/packages/r-pkgbuild/package.py +++ b/var/spack/repos/builtin/packages/r-pkgbuild/package.py @@ -17,6 +17,7 @@ class RPkgbuild(RPackage): license("MIT") + version("1.4.4", sha256="5972843cd43654715cdbdd28f50af013fa3d1c213146654992b2b5f39ed0e2a8") version("1.4.0", sha256="357f3c40c99650eaa8a715991ff1355a553acb165f217ed204712f698ba55ed6") version("1.3.1", sha256="7c6a82d1e6b19e136a7d16095743c50cd7b6340eeda594e4a8e14d74972ddb48") version("1.2.0", sha256="2e19308d3271fefd5e118c6d132d6a2511253b903620b5417892c72d2010a963") @@ -26,15 +27,17 @@ class RPkgbuild(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.4.0:") + depends_on("r@3.5:", type=("build", "run"), when="@1.4.3:") depends_on("r-callr@2.0.0:", type=("build", "run")) depends_on("r-callr@3.2.0:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli", type=("build", "run")) depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.4.0:") - depends_on("r-crayon", type=("build", "run")) depends_on("r-desc", type=("build", "run")) - depends_on("r-prettyunits", type=("build", "run")) depends_on("r-processx", type=("build", "run"), when="@1.4.0:") depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) - depends_on("r-withr@2.1.2:", type=("build", "run")) - depends_on("r-withr@2.3.0:", type=("build", "run"), when="@1.3.1:") + + depends_on("r-crayon", type=("build", "run"), when="@:1.4.2") + depends_on("r-prettyunits", type=("build", "run"), when="@:1.4.2") + depends_on("r-rprojroot", type=("build", "run"), when="@:1.4.2") + depends_on("r-withr@2.1.2:", type=("build", "run"), when="@:1.4.0") + depends_on("r-withr@2.3.0:", type=("build", "run"), when="@1.3.1:1.4.0") diff --git a/var/spack/repos/builtin/packages/r-pkgcache/package.py b/var/spack/repos/builtin/packages/r-pkgcache/package.py index 4f7db9e75be88d..33d28cf77c928d 100644 --- a/var/spack/repos/builtin/packages/r-pkgcache/package.py +++ b/var/spack/repos/builtin/packages/r-pkgcache/package.py @@ -17,6 +17,7 @@ class RPkgcache(RPackage): license("MIT") + version("2.2.2", sha256="7ebd6cc5fc0325eae504877dfe9651f90e51b3b9778cecc8aae2671b617b5be3") version("2.1.0", sha256="cfc03c2060028097972c32c3f2d922d7a598dfd963e5e5250d85a3dfa2f2e206") version("2.0.3", sha256="80deafd60f15dda029536d4ce13c37ef91c49cb6636323daadbf3d64a67da028") version("2.0.2", sha256="6860b5b7046ef349c2fdad4ba3aecb57c7516fba952a19e3ff7cccb7f859f881") @@ -31,10 +32,8 @@ class RPkgcache(RPackage): depends_on("r-curl@3.2:", type=("build", "run")) depends_on("r-filelock", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) - depends_on("r-prettyunits", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-processx@3.3.0.9001:", type=("build", "run")) - depends_on("r-rappdirs", type=("build", "run")) depends_on("r-assertthat", type=("build", "run"), when="@:1.3.0") depends_on("r-digest", type=("build", "run"), when="@:1.3.0") @@ -42,3 +41,5 @@ class RPkgcache(RPackage): depends_on("r-tibble", type=("build", "run"), when="@:1.3.0") depends_on("r-uuid", type=("build", "run"), when="@:1.3.0") depends_on("r-glue", type=("build", "run"), when="@:2.0.2") + depends_on("r-prettyunits", type=("build", "run"), when="@:2.2.0") + depends_on("r-rappdirs", type=("build", "run"), when="@:2.2.0") diff --git a/var/spack/repos/builtin/packages/r-pkgdepends/package.py b/var/spack/repos/builtin/packages/r-pkgdepends/package.py index 73ba6e593b87db..fc85a9557a83dc 100644 --- a/var/spack/repos/builtin/packages/r-pkgdepends/package.py +++ b/var/spack/repos/builtin/packages/r-pkgdepends/package.py @@ -22,34 +22,38 @@ class RPkgdepends(RPackage): license("MIT") + version("0.7.2", sha256="b17e22d01250916b06868317359239ca9273d7765b5ead9481b47cf0d96acd26") version("0.5.0", sha256="eadc98e335f9d2cc10b31cf7a5b55fe3308266fbd6f46d5dbd37b5d90bfcf1bc") version("0.3.2", sha256="61db529965f973847b4d1337c6556527a89953cad09d231a6e6ca2145a426a21") version("0.3.1", sha256="8e4263a1792871ee9629b0d6a8caeb53b77012db3b5be91b432f3553cd2a80be") version("0.2.0", sha256="59afdbe0e59663088ba4facac5cd011a0a05b0b9c540103fb8b9f0a673bf4d94") depends_on("r@3.4:", type=("build", "run"), when="@0.3.1:") + depends_on("r@3.5:", type=("build", "run"), when="@0.7.0:") depends_on("r-callr@3.3.1:", type=("build", "run")) depends_on("r-cli@2.1.0:", type=("build", "run")) depends_on("r-cli@3.6.0:", type=("build", "run"), when="@0.5.0:") depends_on("r-curl", type=("build", "run")) depends_on("r-desc@1.2.0:", type=("build", "run")) + depends_on("r-desc@1.4.3:", type=("build", "run"), when="@0.7.1:") depends_on("r-filelock@1.0.2:", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) depends_on("r-lpsolve", type=("build", "run")) depends_on("r-pkgbuild@1.0.2:", type=("build", "run")) depends_on("r-pkgcache@1.3.0:", type=("build", "run")) depends_on("r-pkgcache@2.0.0:", type=("build", "run"), when="@0.3.1:") depends_on("r-pkgcache@2.1.0:", type=("build", "run"), when="@0.5.0:") - depends_on("r-prettyunits@1.1.1:", type=("build", "run")) + depends_on("r-pkgcache@2.2.0:", type=("build", "run"), when="@0.6.0:") depends_on("r-processx@3.4.2:", type=("build", "run")) depends_on("r-ps", type=("build", "run")) depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) - depends_on("r-withr@2.1.1:", type=("build", "run")) depends_on("r-zip@2.1.0:", type=("build", "run")) depends_on("r-zip@2.3.0:", type=("build", "run"), when="@0.5.0:") + depends_on("r-glue", type=("build", "run"), when="@:0.7.0") + depends_on("r-prettyunits@1.1.1:", type=("build", "run"), when="@:0.7.0") + depends_on("r-rprojroot", type=("build", "run"), when="@:0.7.0") + depends_on("r-withr@2.1.1:", type=("build", "run"), when="@:0.5.0") depends_on("r-rematch2", type=("build", "run"), when="@:0.2.0") depends_on("r-tibble", type=("build", "run"), when="@:0.2.0") depends_on("r-crayon", type=("build", "run"), when="@:0.3.2") diff --git a/var/spack/repos/builtin/packages/r-pkgdown/package.py b/var/spack/repos/builtin/packages/r-pkgdown/package.py index 14cb41076c0d5e..017b64e16034e3 100644 --- a/var/spack/repos/builtin/packages/r-pkgdown/package.py +++ b/var/spack/repos/builtin/packages/r-pkgdown/package.py @@ -17,29 +17,42 @@ class RPkgdown(RPackage): license("MIT") + version("2.1.0", sha256="c4d1df3b738d66e60db71e57c01c86c46f2fe58f972c9e2403c07a1436279fb4") version("2.0.7", sha256="f33872869dfa8319182d87e90eab3245ff69293b3b791471bf9538afb81b356a") version("2.0.6", sha256="d29a65c8a5b189fd89842e769f58f8c2369a55406269eabfb66d41d0fe1c7f69") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.6:", type=("build", "run"), when="@2.0.8:") depends_on("r-bslib@0.3.1:", type=("build", "run")) + depends_on("r-bslib@0.5.1:", type=("build", "run"), when="@2.0.8:") depends_on("r-callr@2.0.2:", type=("build", "run")) depends_on("r-callr@3.7.3:", type=("build", "run"), when="@2.0.7:") depends_on("r-cli", type=("build", "run")) + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@2.0.8:") depends_on("r-desc", type=("build", "run")) + depends_on("r-desc@1.4.0:", type=("build", "run"), when="@2.0.8:") depends_on("r-digest", type=("build", "run")) depends_on("r-downlit@0.4.0:", type=("build", "run")) + depends_on("r-downlit@0.4.4:", type=("build", "run"), when="@2.1.0:") + depends_on("r-fontawesome", type=("build", "run"), when="@2.1.0:") depends_on("r-fs@1.4.0:", type=("build", "run")) - depends_on("r-httr@1.4.2:", type=("build", "run")) + depends_on("r-httr2@1.0.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-jsonlite", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-memoise", type=("build", "run")) + depends_on("r-openssl", type=("build", "run"), when="@2.1.0:") depends_on("r-purrr", type=("build", "run")) + depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@2.0.8:") depends_on("r-ragg", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@2.0.9:") depends_on("r-rmarkdown@1.1.9007:", type=("build", "run")) + depends_on("r-rmarkdown@2.27:", type=("build", "run"), when="@2.1.0:") depends_on("r-tibble", type=("build", "run")) depends_on("r-whisker", type=("build", "run")) depends_on("r-withr@2.4.3:", type=("build", "run")) depends_on("r-xml2@1.3.1:", type=("build", "run")) depends_on("r-yaml", type=("build", "run")) depends_on("pandoc") + + depends_on("r-httr@1.4.2:", type=("build", "run"), when="@:2.0.9") + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.9") + depends_on("r-memoise", type=("build", "run"), when="@:2.0.9") diff --git a/var/spack/repos/builtin/packages/r-pkgload/package.py b/var/spack/repos/builtin/packages/r-pkgload/package.py index 5d22035a99e780..3a6b717b956ef6 100644 --- a/var/spack/repos/builtin/packages/r-pkgload/package.py +++ b/var/spack/repos/builtin/packages/r-pkgload/package.py @@ -17,6 +17,7 @@ class RPkgload(RPackage): license("GPL-3.0-only") + version("1.4.0", sha256="09e4885e9cc25af29063a525da0b2ac9dd66fc7a95ea085bf5060312e3a67549") version("1.3.4", sha256="60b04b948cda4dc56257b1e89f9b0a4b1273cacecdb2bd995d66dd76e89926ce") version("1.3.3", sha256="b0898122876479cc4a35cd566654b3a7b50f8ac105565dbf3f8b9d4283816959") version("1.3.2.1", sha256="a1987b123fcbdb9d908b6dc55a04d3cf47d68cfa5090186e4876a429313374b2") @@ -31,10 +32,12 @@ class RPkgload(RPackage): depends_on("r-cli", type=("build", "run"), when="@1.1.0:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@1.3.0:") - depends_on("r-crayon", type=("build", "run"), when="@1.1.0:") + depends_on("r-crayon", type=("build", "run"), when="@1.1.0:1.3") depends_on("r-desc", type=("build", "run")) depends_on("r-glue", type=("build", "run"), when="@1.3.0:") depends_on("r-fs", type=("build", "run"), when="@1.3.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.4.0:") + depends_on("r-processx", type=("build", "run"), when="@1.4.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-rlang@1.0.3:", type=("build", "run"), when="@1.3.0:1.3.3") depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.3.4:") diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index 47efa743ec4041..af688596a32530 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -21,6 +21,7 @@ class RPkgmaker(RPackage): license("GPL-2.0-or-later") + version("0.32.10", sha256="972b0473a64408ccc4841fa3f09a567cc32811e69c3c7e42a2f391a5eb2e2933") version("0.32.8", sha256="0ff3578d2c051b544c3f105cfe4801575aac1564add048f9e952c53a8ccd1745") version("0.32.2", sha256="ce45b22def771a9c90a414093823e6befe7e23489c500eeccee5154b44d3ef91") version("0.27", sha256="17a289d8f596ba5637b07077b3bff22411a2c2263c0b7de59fe848666555ec6a") diff --git a/var/spack/repos/builtin/packages/r-pki/package.py b/var/spack/repos/builtin/packages/r-pki/package.py new file mode 100644 index 00000000000000..612dbecdbce823 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pki/package.py @@ -0,0 +1,22 @@ +# 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) + +from spack.package import * + + +class RPki(RPackage): + """Public Key Infrastucture functions such as verifying certificates, + RSA encription and signing which can be used to build PKI infrastructure + and perform cryptographic tasks.""" + + homepage = "http://www.rforge.net/PKI" + cran = "PKI" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("0.1-14", sha256="c024e81977b978b705460df96639e3369420bd7e8f4f3242ec796255dc1b7966") + + depends_on("r@2.9.0:", type=("build", "run")) + depends_on("r-base64enc", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-plot3d/package.py b/var/spack/repos/builtin/packages/r-plot3d/package.py index 0ba526522a76cd..31a6ed7e753661 100644 --- a/var/spack/repos/builtin/packages/r-plot3d/package.py +++ b/var/spack/repos/builtin/packages/r-plot3d/package.py @@ -15,6 +15,7 @@ class RPlot3d(RPackage): cran = "plot3D" + version("1.4.1", sha256="db6df74844dda9177f2be024762b2f0e63182916e987a09480514d078d55d1f4") version("1.4", sha256="d04a45197646fb36bc38870c1c2351cb56b912bd772b1ebfa25eaeef35fda9c0") version("1.3", sha256="b9e4ec2789e34ad249318900e186868650e1a33466b385cb492a45466db3dfc9") version("1.1.1", sha256="f6fe4a001387132626fc553ed1d5720d448b8064eb5a6917458a798e1d381632") diff --git a/var/spack/repos/builtin/packages/r-plotly/package.py b/var/spack/repos/builtin/packages/r-plotly/package.py index 9b266588fdf4d4..ba3ba33ad13b84 100644 --- a/var/spack/repos/builtin/packages/r-plotly/package.py +++ b/var/spack/repos/builtin/packages/r-plotly/package.py @@ -17,6 +17,7 @@ class RPlotly(RPackage): license("MIT") + version("4.10.4", sha256="cfa995b7ed55d31a196707a3ae6ea352dd907cef3058a3bf1956fde39366d867") version("4.10.1", sha256="ac0921a1cba24e17a0f3a0a28b7a40ac930e17fe5caa9c3973c9a8d1e20c367a") version("4.10.0", sha256="bd995c654dbc8c09a84adaba8def99766919e3894caf18b551bb26b2f591389a") version("4.9.3", sha256="d44d1a16d96de28bc2d36f1c897384215eeec44d109546c6e9c2707db0880120") diff --git a/var/spack/repos/builtin/packages/r-plotmo/package.py b/var/spack/repos/builtin/packages/r-plotmo/package.py index de5de683ee83b4..2f0cb89e819b98 100644 --- a/var/spack/repos/builtin/packages/r-plotmo/package.py +++ b/var/spack/repos/builtin/packages/r-plotmo/package.py @@ -17,6 +17,7 @@ class RPlotmo(RPackage): license("GPL-3.0-only") + version("3.6.3", sha256="6917cd8185325f1f2998fb14def9e6a8d93f1b708cf70d7c443d3960c9189b7b") version("3.6.2", sha256="cde33a8ec558b12d8e11d7d0531e73f6678a25ee589b79897d2fc425a3fd353c") version("3.6.1", sha256="245a0c87f0cca08746c6fdc60da2e3856cd69b1a2b7b5641293c620d4ae04343") version("3.6.0", sha256="c05afcc442f9542868beea5c3c40fb93b049f9b61c42725b2a1e2bc750c241e3") @@ -25,4 +26,5 @@ class RPlotmo(RPackage): depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-formula@1.2-3:", type=("build", "run")) depends_on("r-plotrix", type=("build", "run")) - depends_on("r-teachingdemos", type=("build", "run")) + + depends_on("r-teachingdemos", type=("build", "run"), when="@:3.6.2") diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 9a74b4ceb74b53..bbeecbe9f3cb26 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -15,6 +15,7 @@ class RPlotrix(RPackage): license("GPL-2.0-or-later") + version("3.8-4", sha256="e6a22d93ab61c67af21cbbe1fe333c06934cf576a44745bf2beee59bceaae8d6") version("3.8-2", sha256="bb72953102889cea41cd6521874e35d2458ebd10aab97ba6f262e102cac0bc1f") version("3.7-8", sha256="8ccd1f7e656413b9956cea614c986ce9cc61366deba356afb38cee6672a59480") version("3.7-6", sha256="83d5f7574592953288b4fe39c4c0dd7670d097598ad7f6bddbb0687a32954e46") diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index b5cdc6df154562..5990dc20614e6a 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -17,6 +17,7 @@ class RPls(RPackage): license("GPL-2.0-only") + version("2.8-4", sha256="785b1b63639754811bec124fcd46bd821c76611380f49a7555695a2969b3d562") version("2.8-1", sha256="e22e7febeef1a6800b97ee7f6eb03dc1d6681aba7f9298449c9e6375fa78f28c") version("2.8-0", sha256="eff3a92756ca34cdc1661fa36d2bf7fc8e9f4132d2f1ef9ed0105c83594618bf") version("2.7-3", sha256="8f1d960ab74f05fdd11c4c7a3d30ff9e263fc658f5690b67278ca7c045d0742c") diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index e0cd4ca9f3acf7..34387c943f6ca0 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -21,6 +21,7 @@ class RPlyr(RPackage): license("MIT") + version("1.8.9", sha256="15b5e7f711d53bf41b8687923983b8ef424563aa2f74c5195feb5b1df1aee103") version("1.8.8", sha256="a73211b4bbe13e4e5e764966a8dd90172c1cc311938dd464d142e1c7a701070c") version("1.8.7", sha256="7d9fdaf1157035a49c3661da3bbaa7bfcf782aafe1b98f7b5a68b0520046e87f") version("1.8.6", sha256="ea55d26f155443e9774769531daa5d4c20a0697bb53abd832e891b126c935287") diff --git a/var/spack/repos/builtin/packages/r-pmcmrplus/package.py b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py index 047b2bffa94bc5..e5e76090bf7a12 100644 --- a/var/spack/repos/builtin/packages/r-pmcmrplus/package.py +++ b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py @@ -36,6 +36,7 @@ class RPmcmrplus(RPackage): cran = "PMCMRplus" + version("1.9.10", sha256="d883f897fa26a0bca0ba464dac7b360c6adee2c7867097e91fc7588030ed1f70") version("1.9.6", sha256="7f4791566d7dfaed0883187c52fbb845797ff6a1066e77667683ce96391b72d7") version("1.9.4", sha256="1ec36674bb6d2fac3a1b0889c4672e40849c7e3565ffb34bb73b61f973bba19a") version("1.9.3", sha256="76baba60f57343fa5bb6f6d2ea27aab77178e02b0d2f9d5d74abde7d18994f03") diff --git a/var/spack/repos/builtin/packages/r-polspline/package.py b/var/spack/repos/builtin/packages/r-polspline/package.py index ed627a8781b775..f773e956218cbb 100644 --- a/var/spack/repos/builtin/packages/r-polspline/package.py +++ b/var/spack/repos/builtin/packages/r-polspline/package.py @@ -17,6 +17,7 @@ class RPolspline(RPackage): license("GPL-2.0-or-later") + version("1.1.25", sha256="2943fc4cd922300afeaa58e6a0e4c21e5a0f7255e6367c7ea6ad136fce1e9ba3") version("1.1.22", sha256="b2f2198f020d7d492a87bad2b58a6cc9ae91d95b7330dd12b9b1145c72d7457b") version("1.1.20", sha256="6992484e9e41036debef1e705e26959f8f5c7a68d3e1fda58273d2a72297a1b5") version("1.1.19", sha256="953e3c4d007c3ef86ac2af3c71b272a99e8e35b194bdd58575785558c6711f66") diff --git a/var/spack/repos/builtin/packages/r-polyclip/package.py b/var/spack/repos/builtin/packages/r-polyclip/package.py index 55c5ff6f81d59f..93eaf4a57e7400 100644 --- a/var/spack/repos/builtin/packages/r-polyclip/package.py +++ b/var/spack/repos/builtin/packages/r-polyclip/package.py @@ -21,7 +21,9 @@ class RPolyclip(RPackage): license("BSL-1.0") + version("1.10-7", sha256="f58eaac3a5b2f6711c0c5f12fff91cf80a245ae45878f7217880ab062b5550d3") version("1.10-4", sha256="84d2c9778771d3759b49d7d16fb54c8ddc5397da3b1d21074bc4aa42c02e6f56") version("1.10-0", sha256="74dabc0dfe5a527114f0bb8f3d22f5d1ae694e6ea9345912909bae885525d34b") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@1.10-7:") diff --git a/var/spack/repos/builtin/packages/r-pool/package.py b/var/spack/repos/builtin/packages/r-pool/package.py index 56c8ad12266c2f..cb713e912457d3 100644 --- a/var/spack/repos/builtin/packages/r-pool/package.py +++ b/var/spack/repos/builtin/packages/r-pool/package.py @@ -17,12 +17,16 @@ class RPool(RPackage): license("MIT") + version("1.0.3", sha256="c461f96928c3e524a52018160d2406f3a1f5ef5abbae54ae89fe7ecd4c1a1cec") version("1.0.1", sha256="73d5dffd55e80fdadb88401f12570fcf08e932c4c86761931241f9841fddadbf") version("0.1.6", sha256="cdbe5f6c7f757c01893dc9870df0fb8d300829da0e427f6c2559b01caa52d9e1") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-dbi", type=("build", "run")) + depends_on("r-dbi@1.2.1:", type=("build", "run"), when="@1.0.3:") depends_on("r-r6", type=("build", "run")) - depends_on("r-withr", type=("build", "run"), when="@1.0.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-later@1.0.0:", type=("build", "run")) + + depends_on("r-withr", type=("build", "run"), when="@1.0.1") diff --git a/var/spack/repos/builtin/packages/r-poorman/package.py b/var/spack/repos/builtin/packages/r-poorman/package.py index ea5c5ac0e4a80b..09945188155804 100644 --- a/var/spack/repos/builtin/packages/r-poorman/package.py +++ b/var/spack/repos/builtin/packages/r-poorman/package.py @@ -16,6 +16,7 @@ class RPoorman(RPackage): license("MIT") + version("0.2.7", sha256="089418293cdfde3b46bf53e891a3a8ad924d953a1a7e5ae981de54ebde62b4aa") version("0.2.6", sha256="328e0a3e610f17e845d95cd9c0803e0367d6f5835706e8b0ed921fc500983774") version("0.2.5", sha256="b92b30ce0f4f02c4fa4a4e90673ef2e0ed8de9b9080dd064506581989fcc0716") diff --git a/var/spack/repos/builtin/packages/r-popvar/package.py b/var/spack/repos/builtin/packages/r-popvar/package.py index 90c15fa3cb6895..c7afc8c5c63bd2 100644 --- a/var/spack/repos/builtin/packages/r-popvar/package.py +++ b/var/spack/repos/builtin/packages/r-popvar/package.py @@ -22,6 +22,7 @@ class RPopvar(RPackage): cran = "PopVar" + version("1.3.1", sha256="adb0f6705b7bb984272db31f8ac6612100f7970aa7d0e5cfdef76124dd33ac98") version("1.3.0", sha256="3145c41c9aa1588d47aaf76c082e6b1c2fd95cf5014b98bd2867cbf2cec782f9") version("1.2.1", sha256="5e3df79634ab63708a431e4b8e6794675972ac6c58d2bc615726aa0f142f5f25") diff --git a/var/spack/repos/builtin/packages/r-posterior/package.py b/var/spack/repos/builtin/packages/r-posterior/package.py index 4d1c9fdc2c7f1f..859ad7c7999354 100644 --- a/var/spack/repos/builtin/packages/r-posterior/package.py +++ b/var/spack/repos/builtin/packages/r-posterior/package.py @@ -23,6 +23,7 @@ class RPosterior(RPackage): license("BSD-3-Clause") + version("1.6.0", sha256="34612a39fb15a8e3ba6ef5c32a041a4b5f77554216dd774563f46db1150bf40c") version("1.4.1", sha256="2b8953fa8d6890a105521023c431ddea725465eb95cf9454a88852e43ebb58d3") version("1.3.1", sha256="7000780290a24be86dbc406dd4338aec622d8dee1e471b68b55abb4872934d7a") version("1.2.1", sha256="b757e06885a1f21e7ad8f5a3feaecbe0a71ae8d766e4aec4c3aa2183a810afe1") diff --git a/var/spack/repos/builtin/packages/r-powerlaw/package.py b/var/spack/repos/builtin/packages/r-powerlaw/package.py index 4c664b9d152282..c73409dcbce4c7 100644 --- a/var/spack/repos/builtin/packages/r-powerlaw/package.py +++ b/var/spack/repos/builtin/packages/r-powerlaw/package.py @@ -16,6 +16,7 @@ class RPowerlaw(RPackage): cran = "poweRlaw" + version("0.80.0", sha256="713556af1f47e1de749670d08f963688908cfa80e9dfda590efd1a28441772cb") version("0.70.6", sha256="efc091449c5c6494c1c13c85a8eb95625d1c55ffffebe86c7ea16e4abbafa191") version("0.70.2", sha256="240f1454389b1a00ad483fb63e5b53243cc9367f21a3e7253ab2c293673459ab") version("0.70.1", sha256="15b1b8dadeb550c01b9f1308cfa64720be6fbf56afb80f6a096987d6a0055913") diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index 56d94d7ba93d81..df23c06398adac 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -21,11 +21,13 @@ class RPrabclus(RPackage): license("GPL-2.0-or-later") + version("2.3-3", sha256="005d000a9ac357e670de26e5b8fc4ddb1617351275fa43bf6d2e88b8774358c1") version("2.3-2", sha256="f421bcbcb557281e0de4a06b15f9a496adb5c640e883c0f7bb12051efc69e441") version("2.3-1", sha256="ef3294767d43bc3f72478fdaf0d1f13c8de18881bf9040c9f1add68af808b3c0") version("2.2-7.1", sha256="2c5bf3bbb0d225e04c53bb0e11e9c2a6809f0e46d95b8f6dc14b9dd6a2452975") version("2.2-6", sha256="41792980e40ba18204fab92d85120dcd468860e2204e52fb42636c6f7aee5a62") depends_on("r@2.1.0:", type=("build", "run")) + depends_on("r@2.10:", type=("build", "run"), when="@2.2-2:") depends_on("r-mass", type=("build", "run")) depends_on("r-mclust", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pracma/package.py b/var/spack/repos/builtin/packages/r-pracma/package.py index 2d4858d429a0b6..59d54e213252c5 100644 --- a/var/spack/repos/builtin/packages/r-pracma/package.py +++ b/var/spack/repos/builtin/packages/r-pracma/package.py @@ -18,6 +18,7 @@ class RPracma(RPackage): license("GPL-3.0-or-later") + version("2.4.4", sha256="1a4ef3af2197f999dbaa614bf5a70f09ec463d8c91feb5aa0d995de24ec6ba7f") version("2.4.2", sha256="1d50337fdfd9a8d704a64f01dae5d52b9a2bd6d872fdaa4a6685b8d3bde89c16") version("2.3.8", sha256="2302d454406e72711714732658d0c59c9d5a1ead698f22ee23f38cba63d42764") version("2.3.6", sha256="17ac83fd48c9155e00dc3f0433f95723505dc73d046860afd9001866d699b8de") diff --git a/var/spack/repos/builtin/packages/r-prettyunits/package.py b/var/spack/repos/builtin/packages/r-prettyunits/package.py index b3b317d3f601c9..8c0503a4eb2d5e 100644 --- a/var/spack/repos/builtin/packages/r-prettyunits/package.py +++ b/var/spack/repos/builtin/packages/r-prettyunits/package.py @@ -17,8 +17,11 @@ class RPrettyunits(RPackage): license("MIT") + version("1.2.0", sha256="f059f27e2a5c82e351fe05b87ad712f7afc273c651450453f59d99af5deeacea") version("1.1.1", sha256="9a199aa80c6d5e50fa977bc724d6e39dae1fc597a96413053609156ee7fb75c5") version("1.0.2", sha256="35a4980586c20650538ae1e4fed4d80fdde3f212b98546fc3c7d9469a1207f5c") + depends_on("r@2.10:", type=("build", "run"), when="@1.2.0:") + depends_on("r-magrittr", type=("build", "run"), when="@:1.0.2") depends_on("r-assertthat", type=("build", "run"), when="@:1.0.2") diff --git a/var/spack/repos/builtin/packages/r-proc/package.py b/var/spack/repos/builtin/packages/r-proc/package.py index eb2a3ee026af54..a89e84c78f561e 100644 --- a/var/spack/repos/builtin/packages/r-proc/package.py +++ b/var/spack/repos/builtin/packages/r-proc/package.py @@ -16,6 +16,7 @@ class RProc(RPackage): cran = "pROC" + version("1.18.5", sha256="5593c841a6df5a2f2d209d0c14401971eb9427092ed9c3ac2059273807b42c89") version("1.18.0", sha256="d5ef54b384176ece6d6448014ba40570a98181b58fee742f315604addb5f7ba9") version("1.17.0.1", sha256="221c726ffb81b04b999905effccfd3a223cd73cae70d7d86688e2dd30e51a6bd") diff --git a/var/spack/repos/builtin/packages/r-processx/package.py b/var/spack/repos/builtin/packages/r-processx/package.py index cf92432de3a65a..9c1e21cdf8c5d0 100644 --- a/var/spack/repos/builtin/packages/r-processx/package.py +++ b/var/spack/repos/builtin/packages/r-processx/package.py @@ -20,6 +20,7 @@ class RProcessx(RPackage): license("MIT") + version("3.8.4", sha256="6627672d7fb109f37dc1d0eaef913f4cfc7ad8ac807abf0397e6d37753b1e70b") version("3.8.1", sha256="e008472b81d4ca1a37a4ba7dd58e5e944f96ab2e44c8ccc8840d43e9fe99e93c") version("3.8.0", sha256="9270d9d26c4314151062801a5c1fc57556b4fcb41dbf3558cb5bd230b18ffb0b") version("3.7.0", sha256="de6a8d4135fc53ec35043fbaf6b000dc9597719345595d8479662a39dad55ed3") diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index 617aa47649a6d4..86754a10e86ce5 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -17,6 +17,9 @@ class RProdlim(RPackage): license("GPL-2.0-or-later") + version( + "2024.06.25", sha256="46961f654171aa7ef0ff94b23508ed59f6a438c3a3ba0d338cc3730224406764" + ) version( "2023.03.31", sha256="5510454f8511ca956666f27dfb77d875c56b9166188c33f22cd22b7615797800" ) diff --git a/var/spack/repos/builtin/packages/r-profvis/package.py b/var/spack/repos/builtin/packages/r-profvis/package.py index 709aca7e825642..787041fb2eb3d1 100644 --- a/var/spack/repos/builtin/packages/r-profvis/package.py +++ b/var/spack/repos/builtin/packages/r-profvis/package.py @@ -13,8 +13,12 @@ class RProfvis(RPackage): license("GPL-3.0-only OR custom") + version("0.3.8", sha256="ec02c75bc9907a73564e691adfa8e06651ca0bd73b7915412960231cd265b4b2") version("0.3.7", sha256="43974863cb793f81dbea4b94096343c321f7739c9038980405c9b16b04a906b9") depends_on("r@3.0:", type=("build", "run")) depends_on("r-htmlwidgets@0.3.2:", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@0.3.8:") + depends_on("r-rlang@0.4.9:", type=("build", "run"), when="@0.3.8:") depends_on("r-stringr", type=("build", "run")) + depends_on("r-vctrs", type=("build", "run"), when="@0.3.8:") diff --git a/var/spack/repos/builtin/packages/r-progress/package.py b/var/spack/repos/builtin/packages/r-progress/package.py index d3f41e6548513e..dbc314340b09ce 100644 --- a/var/spack/repos/builtin/packages/r-progress/package.py +++ b/var/spack/repos/builtin/packages/r-progress/package.py @@ -18,10 +18,12 @@ class RProgress(RPackage): license("MIT") + version("1.2.3", sha256="ea2b079b894de85c3ab12088c9c52aec06432245047a961d5b4b8aa6889f9276") version("1.2.2", sha256="b4a4d8ed55db99394b036a29a0fb20b5dd2a91c211a1d651c52a1023cc58ff35") version("1.2.1", sha256="7401e86ff76bef4d26508b74ee8bd169a0377b2738d9ec79ebff0b7fd5c55326") version("1.1.2", sha256="a9f4abfd9579b80967cd681041643fe9dfcc4eb3beeba45391bb64e9209baabb") + depends_on("r@3.6:", type=("build", "run"), when="@1.2.3:") depends_on("r-r6", type=("build", "run")) depends_on("r-prettyunits", type=("build", "run")) depends_on("r-hms", type=("build", "run"), when="@1.2.0:") diff --git a/var/spack/repos/builtin/packages/r-progressr/package.py b/var/spack/repos/builtin/packages/r-progressr/package.py index 457a09c4b0304a..d07c5124e952d9 100644 --- a/var/spack/repos/builtin/packages/r-progressr/package.py +++ b/var/spack/repos/builtin/packages/r-progressr/package.py @@ -31,6 +31,7 @@ class RProgressr(RPackage): license("GPL-3.0-or-later") + version("0.14.0", sha256="9a2899f879a5577f043be99c18d52bfe4d655cc52a96cae834e8a301b36258af") version("0.13.0", sha256="0ffb3dcadde0cc191bad0ff9e05d000aa65e2fc339cfc94ebbb263088df5a4e1") version("0.11.0", sha256="d8668c82348a20cca34bb18c0c94e6083dbb6dbea40615e07e4161aff7366cd9") version("0.10.1", sha256="8f83024b2a6f52996750d45bf6698c2b438fb1062985f1df936ba3af313caed1") diff --git a/var/spack/repos/builtin/packages/r-proj/package.py b/var/spack/repos/builtin/packages/r-proj/package.py index 78463c53d97f0b..34d502b5e2ad8a 100644 --- a/var/spack/repos/builtin/packages/r-proj/package.py +++ b/var/spack/repos/builtin/packages/r-proj/package.py @@ -9,13 +9,29 @@ class RProj(RPackage): """Generic Coordinate System Transformations Using 'PROJ'. - Currently non-operational, a harmless wrapper to allow package 'reproj' to - install and function while relying on the 'proj4' package.""" + A wrapper around the generic coordinate transformation software 'PROJ' + that transforms coordinates from one coordinate reference system ('CRS') + to another. This includes cartographic projections as well as geodetic + transformations. The intention is for this package to be used by + user-packages such as 'reproj', and that the older 'PROJ.4' and version 5 + pathways be provided by the 'proj4' package.""" cran = "PROJ" + version("0.5.0", sha256="fa6316693289a65d53a764b422f15072c34f440375264b822f2ddd2c6ec88c9b") version("0.4.0", sha256="dde90cfeca83864e61a7422e1573d2d55bb0377c32b9a8f550f47b8631121ce7") version("0.1.0", sha256="5186f221335e8092bbcd4d82bd323ee7e752c7c9cf83d3f94e4567e0b407aa6f") depends_on("r@2.10:", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run"), when="@0.4.0:") + + depends_on("r-lifecycle", type=("build", "run"), when="@0.5.0:") + depends_on("r-wk", type=("build", "run"), when="@0.5.0:") + + depends_on("proj@6.3.1:", type=("build", "run"), when="@0.4.5:") + # pkgconfig for proj requires libtiff-4 and libcurl + depends_on("libtiff@4", type=("build", "run")) + depends_on("curl", type=("build", "run")) + + def setup_build_environment(self, env): + env.prepend_path("LD_LIBRARY_PATH", self.spec["proj"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/r-proj4/package.py b/var/spack/repos/builtin/packages/r-proj4/package.py index d0d6d029850a53..db7522b89d4ec2 100644 --- a/var/spack/repos/builtin/packages/r-proj4/package.py +++ b/var/spack/repos/builtin/packages/r-proj4/package.py @@ -17,6 +17,7 @@ class RProj4(RPackage): license("GPL-2.0-only") + version("1.0-14", sha256="d3d571da92136666dd3658b6006a7d4d4254cdeada5cda21b05b0c0e692a00b6") version("1.0-12", sha256="4aeb8a54d5b459674093c76068b92dbd3ce99a4e5db8829fbae868c2e43776f8") version("1.0-11", sha256="c5f186530267005d53cc2e86849613b254ca4515a8b10310146f712d45a1d11d") version("1.0-10.1", sha256="66857cbe5cba4930b18621070f9a7263ea0d8ddc3e5a035a051a1496e4e1da19") diff --git a/var/spack/repos/builtin/packages/r-projpred/package.py b/var/spack/repos/builtin/packages/r-projpred/package.py index 35c3befa538c65..0446671c767202 100644 --- a/var/spack/repos/builtin/packages/r-projpred/package.py +++ b/var/spack/repos/builtin/packages/r-projpred/package.py @@ -21,29 +21,33 @@ class RProjpred(RPackage): license("GPL-3.0-only OR custom") + version("2.8.0", sha256="b383ddc5eca275737b96e4e3e14256b4f4abc4b29d292b5cebf3828d0921a1f6") version("2.5.0", sha256="b6ec123f5bf573d14cbd5431e3fbdee3215d71d3e263fcbec72bee5930044e39") version("2.2.1", sha256="6825ace07d1e580d5916bcd6bfd163460ae9008926f464e00deb7f2395cc72ad") version("2.1.2", sha256="a88a651e533c118aad0e8c2c905cfcf688d9c419ed195896036b8f6667b5cfb0") version("2.0.2", sha256="af0a9fb53f706090fe81b6381b27b0b6bd3f7ae1e1e44b0ada6f40972b09a55b") depends_on("r@3.5.0:", type=("build", "run")) - depends_on("r-loo@2.0.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@2.7.0:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-gtools", type=("build", "run"), when="@2.7.0:") + depends_on("r-ggplot2", type=("build", "run")) + depends_on("r-scales", type=("build", "run"), when="@2.6.0:") depends_on("r-rstantools@2.0.0:", type=("build", "run")) + depends_on("r-loo@2.0.0:", type=("build", "run")) depends_on("r-lme4", type=("build", "run")) depends_on("r-lme4@1.1-28:", type=("build", "run"), when="@2.5.0:") depends_on("r-mvtnorm", type=("build", "run"), when="@2.1.2:") - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) - depends_on("r-abind", type=("build", "run"), when="@2.5.0:") depends_on("r-mgcv", type=("build", "run")) depends_on("r-gamm4", type=("build", "run")) - depends_on("r-mclogit", type=("build", "run"), when="@2.5.0:") - depends_on("r-nnet", type=("build", "run"), when="@2.5.0:") - depends_on("r-ucminf", type=("build", "run"), when="@2.5.0:") - depends_on("r-ordinal", type=("build", "run"), when="@2.5.0:") + depends_on("r-abind", type=("build", "run"), when="@2.5.0:") depends_on("r-mass", type=("build", "run")) + depends_on("r-ordinal", type=("build", "run"), when="@2.5.0:") + depends_on("r-nnet", type=("build", "run"), when="@2.5.0:") + depends_on("r-mclogit", type=("build", "run"), when="@2.5.0:") depends_on("r-rcpparmadillo", type=("build", "run")) + depends_on("r-ucminf", type=("build", "run"), when="@2.5.0") depends_on("r-optimx", type=("build", "run"), when="@:2.0.2") depends_on("r-rngtools@1.2.4:", type=("build", "run"), when="@:2.0.2") depends_on("r-tidyverse", type=("build", "run"), when="@:2.0.2") diff --git a/var/spack/repos/builtin/packages/r-promises/package.py b/var/spack/repos/builtin/packages/r-promises/package.py index 32016c25724495..91cf59cbee48bd 100644 --- a/var/spack/repos/builtin/packages/r-promises/package.py +++ b/var/spack/repos/builtin/packages/r-promises/package.py @@ -19,12 +19,15 @@ class RPromises(RPackage): license("MIT") + version("1.3.0", sha256="f8209df3bab33340c1bc8c0d26caee2890fafb93129ff1423302abae5931fad3") version("1.2.0.1", sha256="8d3a8217909e91f4c2a2eebba5ac8fc902a9ac1a9e9d8a30815c9dc0f162c4b7") version("1.1.1", sha256="3718c6eb2c3362cbe89389e613118f783f9977dbf24757f85026e661199c5800") version("1.0.1", sha256="c2dbc7734adf009377a41e570dfe0d82afb91335c9d0ca1ef464b9bdcca65558") depends_on("r-r6", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-fastmap@1.1.0:", type=("build", "run"), when="@1.2.1:") depends_on("r-later", type=("build", "run")) - depends_on("r-rlang", type=("build", "run")) depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr@1.5:", type=("build", "run"), when="@1.2.1:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ps/package.py b/var/spack/repos/builtin/packages/r-ps/package.py index 89612d8233e912..c78023b660a9d8 100644 --- a/var/spack/repos/builtin/packages/r-ps/package.py +++ b/var/spack/repos/builtin/packages/r-ps/package.py @@ -16,6 +16,7 @@ class RPs(RPackage): license("MIT") + version("1.7.7", sha256="46fedcb2b8faa94ea1451e48e6f31a1e4ed3b12f529e645f9efcfca1003d22f2") version("1.7.5", sha256="1abc3ae3c55797b994973f7e43bf5c7bbb4da649a0dcfad36675e196dba4cb4e") version("1.7.2", sha256="9225ebdedb5c1b245bb38b01ce88084c0fc7eafcff6c4fda2e299003ace6b21a") version("1.7.1", sha256="9c458a377d47cc972d3cd0b2a17d0b7ad3cf3b62226410803072089a57a55ef1") diff --git a/var/spack/repos/builtin/packages/r-pscbs/package.py b/var/spack/repos/builtin/packages/r-pscbs/package.py index 1ac75ed63a739c..89a7f6e1faf53e 100644 --- a/var/spack/repos/builtin/packages/r-pscbs/package.py +++ b/var/spack/repos/builtin/packages/r-pscbs/package.py @@ -15,23 +15,30 @@ class RPscbs(RPackage): cran = "PSCBS" + version("0.67.0", sha256="2695d18d197a3bd729cca0940248ddc1880e4f54da95b9ecc5eda002a715cdbe") version("0.66.0", sha256="58805636e55e0fd3f57bd4a0e296a8bb3d57a7bdd0fdd5868a73ddc83d173a93") version("0.65.0", sha256="3365065d5375c599eb024bfff12c5f6b10a6b1a4fe4ba6f200f7e83618dd399a") depends_on("r@3.2.0:", type=("build", "run")) depends_on("r-r-methodss3@1.7.1:", type=("build", "run")) depends_on("r-r-methodss3@1.8.1:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-methodss3@1.8.2:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-oo@1.22.1:", type=("build", "run")) depends_on("r-r-oo@1.24.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-oo@1.25.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-utils@2.8.0:", type=("build", "run")) depends_on("r-r-utils@2.11.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-utils@2.12.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-cache@0.13.0:", type=("build", "run")) depends_on("r-r-cache@0.15.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-cache@0.16.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-matrixstats@0.54.0:", type=("build", "run")) depends_on("r-matrixstats@0.61.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-matrixstats@0.62.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-aroma-light@2.4.0:", type=("build", "run")) depends_on("r-dnacopy@1.42.0:", type=("build", "run")) depends_on("r-listenv@0.7.0:", type=("build", "run")) depends_on("r-listenv@0.8.0:", type=("build", "run"), when="@0.66.0:") depends_on("r-future@1.12.0:", type=("build", "run")) depends_on("r-future@1.22.1:", type=("build", "run"), when="@0.66.0:") + depends_on("r-future@1.28.0:", type=("build", "run"), when="@0.67.0:") diff --git a/var/spack/repos/builtin/packages/r-pspline/package.py b/var/spack/repos/builtin/packages/r-pspline/package.py index 03e2140fe43033..c77803682c28be 100644 --- a/var/spack/repos/builtin/packages/r-pspline/package.py +++ b/var/spack/repos/builtin/packages/r-pspline/package.py @@ -15,6 +15,7 @@ class RPspline(RPackage): license("custom") + version("1.0-20", sha256="eaa7cd9b870d5d10cf457c435ebcbe698ba0d463e3a996fbe758a4b57b93eb8a") version("1.0-19", sha256="ba55bf193f1df9785a0e13b7ef727d5fd2415b318cd6a26b48a2db490c4dfe40") version("1.0-18", sha256="f71cf293bd5462e510ac5ad16c4a96eda18891a0bfa6447dd881c65845e19ac7") diff --git a/var/spack/repos/builtin/packages/r-psych/package.py b/var/spack/repos/builtin/packages/r-psych/package.py index c474110e1e4fbe..75f9ce050abf80 100644 --- a/var/spack/repos/builtin/packages/r-psych/package.py +++ b/var/spack/repos/builtin/packages/r-psych/package.py @@ -29,6 +29,7 @@ class RPsych(RPackage): license("GPL-2.0-or-later") + version("2.4.6.26", sha256="2d191a95e0107a7f402a17729916099dff201d20c4435f8bf43e6e8a2fbbd2be") version("2.3.3", sha256="94a9f3c39f8243573752709b89eb8068e11dbe809f86ecf0225fb429556efb6f") version("2.2.9", sha256="4cd518bff387fef95067696b0a0b323310e6f4a063c3d242f2a50bcb17675571") version("2.2.5", sha256="dcc3f9b30ed44dfd1de0366295a308e0b52959eb7ac9cb3bc3f32dc5b15fc321") @@ -38,8 +39,9 @@ class RPsych(RPackage): version("1.8.10", sha256="e8901ddab14729bfccbd82a8824fbb6523c10c2cd8fb7199b1ca56a7ffcb6e58") version("1.7.8", sha256="f328ea602e22b0e7e5f310a8d19f305d8e0a3a86040cdfb64863b68b56d55135") - depends_on("r-mnormt", type=("build", "run")) + depends_on("r-gparotation", type=("build", "run"), when="@2.3.6:") depends_on("r-lattice", type=("build", "run")) + depends_on("r-mnormt", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) depends_on("r-foreign", type=("build", "run"), when="@:1.8.12") diff --git a/var/spack/repos/builtin/packages/r-purrr/package.py b/var/spack/repos/builtin/packages/r-purrr/package.py index b0b1acc7091c01..002bc75ebdd2c1 100644 --- a/var/spack/repos/builtin/packages/r-purrr/package.py +++ b/var/spack/repos/builtin/packages/r-purrr/package.py @@ -15,6 +15,7 @@ class RPurrr(RPackage): license("MIT") + version("1.0.2", sha256="2c1bc6bb88433dff0892b41136f2f5c23573b335ff35a4775c72aa57b48bbb63") version("1.0.1", sha256="0a7911be3539355a4c40d136f2602befcaaad5a3f7222078500bfb969a6f2ba2") version("0.3.5", sha256="a2386cd7e78a043cb9c14703023fff15ab1c879bf648816879d2c0c4a554fcef") version("0.3.4", sha256="23ebc93bc9aed9e7575e8eb9683ff4acc0270ef7d6436cc2ef4236a9734840b2") @@ -25,12 +26,16 @@ class RPurrr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@0.3.3:") depends_on("r@3.4.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@1.0.2:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.0.1:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@1.0.2:") depends_on("r-magrittr@1.5:", type=("build", "run")) depends_on("r-magrittr@1.5.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-rlang@0.3.1:", type=("build", "run")) depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@1.0.1:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.0.2:") depends_on("r-tibble", type=("build", "run"), when="@:0.2.9") diff --git a/var/spack/repos/builtin/packages/r-qs/package.py b/var/spack/repos/builtin/packages/r-qs/package.py index a4c64566a1692d..fc552f62b09f46 100644 --- a/var/spack/repos/builtin/packages/r-qs/package.py +++ b/var/spack/repos/builtin/packages/r-qs/package.py @@ -18,6 +18,7 @@ class RQs(RPackage): license("GPL-3.0-only") + version("0.26.3", sha256="8801a41f6e5161a55193dc9a75fcee8da1b0e02eebd7653ec05326d594321ee3") version("0.25.5", sha256="3f87388708a0fdfb0e68caade75ed771fd395cb4f649973459bc97f41d42064c") version("0.25.4", sha256="92c49206a9c1c66dbd95f12efc3a57acb728e1f8387b549c437519fb2b98a533") version("0.25.3", sha256="51adf6a112c19f78ceeefa55acf800c7e6bf2664e7d9cea9d932abb24f22be6b") @@ -26,6 +27,7 @@ class RQs(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run"), when="@0.25.2:") + depends_on("r-bh", type=("build", "run"), when="@0.26.0:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rapiserialize", type=("build", "run")) depends_on("r-rapiserialize@0.1.1:", type=("build", "run"), when="@0.25.4:") diff --git a/var/spack/repos/builtin/packages/r-qtl/package.py b/var/spack/repos/builtin/packages/r-qtl/package.py index 9497f5aa513466..ba93459f123151 100644 --- a/var/spack/repos/builtin/packages/r-qtl/package.py +++ b/var/spack/repos/builtin/packages/r-qtl/package.py @@ -17,6 +17,7 @@ class RQtl(RPackage): license("GPL-3.0-only") + version("1.66", sha256="d46a7d49f2d0875c0c1cba77c993f995e7cac4db5796dfb1c62d9fa4eb60d681") version("1.60", sha256="8e9e5dfe2c6a76d4f69fb27add93ed0859ed3eaa23347310c2b9e3f07359d8ad") version("1.58", sha256="6eca5ac177ae62304d63c224f161b0f3ac9327ec1a03da5d7df2d5ddf4b09d97") version("1.52", sha256="320ac6172f2911ee772472becd68ff49a357c99fe7454335e4a19090d5788960") diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index 2368def60f5c28..1771e645f4ace3 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -16,6 +16,7 @@ class RQuantmod(RPackage): license("GPL-3.0-only") + version("0.4.26", sha256="396c5d3241f77911d9f7738a60a9d728ed25b3dbce2fd92f5b11f9fcbcb8bb98") version("0.4.22", sha256="f29496f1ca9a9faf91aba70ac50bfe79303197ca8f1e369c96300005b5e6765e") version("0.4.20", sha256="f757df41595d885f7927e18f4835bc233d78d2d3ae48fd11c8874d4338c48e94") version("0.4.18", sha256="aa40448e93a1facf399213ac691784007731e869ad243fe762381ab099cd6c35") diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 9bff357602bb1e..939fa66209312b 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -21,6 +21,7 @@ class RQuantreg(RPackage): license("GPL-2.0-or-later") + version("5.98", sha256="a98cb259d8cf563f66a25ae8858794e574dd40de6206816ad61b1ffeb9686a61") version("5.95", sha256="4b05a81eceebbd927372cefdc4912dfa70b6dfcd96528489f78e125eb32a96cc") version("5.94", sha256="52d585ccb972ed7726b7d083f5635d3e42915847398e00fd6e0f69a5fe1b17c1") version("5.93", sha256="d4a94984a500bf4c92dec21013441f001a4aa0541c4c651384e257a4b4e9e539") diff --git a/var/spack/repos/builtin/packages/r-quickjsr/package.py b/var/spack/repos/builtin/packages/r-quickjsr/package.py new file mode 100644 index 00000000000000..10b191fc672024 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-quickjsr/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class RQuickjsr(RPackage): + """An 'R' interface to the 'QuickJS' portable 'JavaScript' engine. + The engine and all 'R' to 'JavaScript' interoperability is bundled + within the package, requiring no dependencies beyond a 'C' compiler.""" + + homepage = "https://bellard.org/quickjs/" + cran = "QuickJSR" + + license("MIT", checked_by="wdconinc") + + version("1.3.1", sha256="10559d6e84a838ec97acdbc6028a59e2121811d4a20e83c95cdb8fb4ce208fd1") diff --git a/var/spack/repos/builtin/packages/r-quickplot/package.py b/var/spack/repos/builtin/packages/r-quickplot/package.py index 7cb0c274698a23..c47c367c2a9f65 100644 --- a/var/spack/repos/builtin/packages/r-quickplot/package.py +++ b/var/spack/repos/builtin/packages/r-quickplot/package.py @@ -18,19 +18,23 @@ class RQuickplot(RPackage): maintainers("dorton21") + version("1.0.2", sha256="78b19e03f9925ea3a5b47c12fef58a154dc0d3598dbdda3fe4e47c6636ab4808") version("0.1.8", sha256="5927186ebbd86d2282c59dd28c4af6977ae5f9bc5766de8fce34b94bbfe33be7") version("0.1.6", sha256="48690a77ae961ed1032130621ef06b2eaf86ee592bf1057471a8c6d6a98ace55") depends_on("r@3.3.0:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@0.1.8:") - depends_on("r-backports", type=("build", "run")) + depends_on("r@4.1:", type=("build", "run"), when="@1.0.1:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-fpcompare", type=("build", "run")) - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-gridbase", type=("build", "run")) - depends_on("r-igraph", type=("build", "run")) - depends_on("r-raster", type=("build", "run")) - depends_on("r-rcolorbrewer", type=("build", "run")) - depends_on("r-rgdal", type=("build", "run")) - depends_on("r-rgeos", type=("build", "run")) - depends_on("r-sp", type=("build", "run")) + depends_on("r-terra", type=("build", "run"), when="@1.0.1:") + + depends_on("r-backports", type=("build", "run"), when="@:1.0.1") + depends_on("r-ggplot2", type=("build", "run"), when="@:1.0.1") + depends_on("r-gridbase", type=("build", "run"), when="@:1.0.1") + depends_on("r-igraph", type=("build", "run"), when="@:1.0.1") + depends_on("r-raster", type=("build", "run"), when="@:1.0.1") + depends_on("r-rcolorbrewer", type=("build", "run"), when="@:1.0.1") + depends_on("r-rgdal", type=("build", "run"), when="@:1.0.1") + depends_on("r-rgeos", type=("build", "run"), when="@:1.0.1") + depends_on("r-sp", type=("build", "run"), when="@:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-r-oo/package.py b/var/spack/repos/builtin/packages/r-r-oo/package.py index f15782b3bc3523..28ffc400bffa67 100644 --- a/var/spack/repos/builtin/packages/r-r-oo/package.py +++ b/var/spack/repos/builtin/packages/r-r-oo/package.py @@ -18,6 +18,7 @@ class RROo(RPackage): cran = "R.oo" + version("1.26.0", sha256="f7602b388c2216fbb4d1a31d4040ed92b40dc83d3e3746db7011637db4d44365") version("1.25.0", sha256="b8b19061774918ee7d9d4330c16c0ea505f7cd02d01343df1e8b2e4fb847beef") version("1.24.0", sha256="37a1dab8dd668ceba69a1ba36c0c60e9809e29b74bd56d1e8ed519e19c8e3bb6") version("1.23.0", sha256="f5124ce3dbb0a62e8ef1bfce2de2d1dc2f776e8c48fd8cac358f7f5feb592ea1") @@ -28,3 +29,4 @@ class RROo(RPackage): depends_on("r-r-methodss3@1.7.1:", type=("build", "run")) depends_on("r-r-methodss3@1.8.0:", type=("build", "run"), when="@1.24.0:") depends_on("r-r-methodss3@1.8.1:", type=("build", "run"), when="@1.25.0:") + depends_on("r-r-methodss3@1.8.2:", type=("build", "run"), when="@1.26.0:") diff --git a/var/spack/repos/builtin/packages/r-r-utils/package.py b/var/spack/repos/builtin/packages/r-r-utils/package.py index e673eb37572acc..91132f04dbae20 100644 --- a/var/spack/repos/builtin/packages/r-r-utils/package.py +++ b/var/spack/repos/builtin/packages/r-r-utils/package.py @@ -13,6 +13,7 @@ class RRUtils(RPackage): cran = "R.utils" + version("2.12.3", sha256="74d6e77a95a23381a490fea54be01b653d4b938a2dc75e749a694ab48302c40c") version("2.12.2", sha256="fe3cf1aa8641540634e96990294d0202d4d94ec79ce73aaf78e4eda30fcb8836") version("2.12.1", sha256="3eb82903bee99f9684cd9dbd4f92d682fdb82feb7ff32a70aa54550e9e09ad62") version("2.12.0", sha256="74de455220ea1e658ac503f5763a6be687d982eb61187779f4019a16db856503") diff --git a/var/spack/repos/builtin/packages/r-ragg/package.py b/var/spack/repos/builtin/packages/r-ragg/package.py index 399b5209f7ecd0..3bff5fdae80896 100644 --- a/var/spack/repos/builtin/packages/r-ragg/package.py +++ b/var/spack/repos/builtin/packages/r-ragg/package.py @@ -18,6 +18,7 @@ class RRagg(RPackage): license("MIT") + version("1.3.2", sha256="8037a45209fdd50acf101208af8e832b840a11ad4201cf7fb480de432e6b6931") version("1.2.5", sha256="936f4d75e0e01cdeefb9f57d121cdd7812d0de5a9e1a3a8315f92ce1c84da8f9") version("1.2.4", sha256="c547e5636a2eefaa0021a0d50fad1e813c2ce976ec0c9c3f796d38a110680dcd") version("1.2.3", sha256="976da0007ef0d4dbadda4734727b539671b65c1eff4ff392d734f4e2c846f2b2") diff --git a/var/spack/repos/builtin/packages/r-rainbow/package.py b/var/spack/repos/builtin/packages/r-rainbow/package.py index c5c88b9ca79239..9cdd8644d2331a 100644 --- a/var/spack/repos/builtin/packages/r-rainbow/package.py +++ b/var/spack/repos/builtin/packages/r-rainbow/package.py @@ -16,6 +16,7 @@ class RRainbow(RPackage): license("GPL-3.0-only") + version("3.8", sha256="eca456288b70fe4b6c74a587d8624d3b36d67f8f9ffc13320eefb17a952d823d") version("3.7", sha256="159dd90555eee237397f042d811f773aaee779f5036c4e0669a52c36e28d8db2") version("3.6", sha256="63d1246f88a498f3db0321b46a552163631b288a25b24400935db41326636e87") diff --git a/var/spack/repos/builtin/packages/r-ranger/package.py b/var/spack/repos/builtin/packages/r-ranger/package.py index a952be3532d2af..8672102bbfb12d 100644 --- a/var/spack/repos/builtin/packages/r-ranger/package.py +++ b/var/spack/repos/builtin/packages/r-ranger/package.py @@ -20,6 +20,7 @@ class RRanger(RPackage): license("GPL-3.0-only") + version("0.16.0", sha256="0395f93afdb807a7882c1fa8f183a26a871c5168ea0903566951298ef1138589") version("0.15.1", sha256="4d65d9ee7c5f2704a0e303a27222c02aa53e49f3c28dc0b4451371e37ada2b2e") version("0.14.1", sha256="5d99401d555da1cfb11c70e59d1bb545ce48720073a06a2a32eb396f622dee1b") version("0.13.1", sha256="60934f0accc21edeefddbb4ddebfdd7cd10a3d3e90b31aa2e6e4b7f50d632d0a") diff --git a/var/spack/repos/builtin/packages/r-rapiserialize/package.py b/var/spack/repos/builtin/packages/r-rapiserialize/package.py index 8b4e48ed9b569c..d25c382dc6fd2a 100644 --- a/var/spack/repos/builtin/packages/r-rapiserialize/package.py +++ b/var/spack/repos/builtin/packages/r-rapiserialize/package.py @@ -22,5 +22,6 @@ class RRapiserialize(RPackage): maintainers("dorton21") + version("0.1.3", sha256="9f413759eabb2acce2b9a363687ca365e1bbedaf9851d23a2ec3683a3d46f42b") version("0.1.2", sha256="9cc0bbb918eeadb394339c64b15324e8123fbb0061692f40102b111417a2600a") version("0.1.0", sha256="324d42c655c27b4647d194bfcd7c675da95c67ea3a74ce99853502022792a23e") diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index 1059e36a53431b..d57d33f6326b07 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -18,6 +18,7 @@ class RRaster(RPackage): license("GPL-3.0-or-later") + version("3.6-26", sha256="c65777225a46ada699e70098f54c60cf191d15e454fac9440aca439a4dbd5592") version("3.6-20", sha256="7e5be49f4e37a2c14a3b87661b252956643b959146cbdb08e983660c1d59a813") version("3.6-3", sha256="9f06e0f7c36258790a97421b3a26d98c9b6a2cb702f941e58ab0b18f21b0c3c6") version("3.5-15", sha256="29c7d3c5d34284f8b5a2ddc9989fbcf092ce209d5eb5310ebc772b5ebdfdd685") @@ -37,3 +38,4 @@ class RRaster(RPackage): depends_on("r-terra@1.5-12:", type=("build", "run"), when="@3.5-15:") depends_on("r-terra@1.6-16:", type=("build", "run"), when="@3.6-3:") depends_on("r-terra@1.6-41:", type=("build", "run"), when="@3.6-20:") + depends_on("r-terra@1.7-29:", type=("build", "run"), when="@3.6-23:") diff --git a/var/spack/repos/builtin/packages/r-rbibutils/package.py b/var/spack/repos/builtin/packages/r-rbibutils/package.py index f4c84e16ddf475..382b8aced4e27a 100644 --- a/var/spack/repos/builtin/packages/r-rbibutils/package.py +++ b/var/spack/repos/builtin/packages/r-rbibutils/package.py @@ -18,6 +18,7 @@ class RRbibutils(RPackage): license("GPL-2.0-only") + version("2.2.16", sha256="9c7c0fba47f63b1749005311c7174b40e72d95c863a67b736a84b8ff375a2aaf") version("2.2.13", sha256="ac235c60bf191ad1830b93045af1b2fe50a6978f6f63cecc4c514a8ba339efc2") version("2.2.9", sha256="b22c07ff916ec338e5a8c6e7e4302f06c9b88d64ee6a59ee4bf5d83a3d5eff86") version("2.2.8", sha256="f1aecdeeba99042d34de19234238c5bbdc18a26f271f6adf9c9b7e349d50d152") diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index f6e52df3a1cf6d..7f455481300ea2 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -23,6 +23,7 @@ class RRcpp(RPackage): cran = "Rcpp" + version("1.0.13", sha256="21fec650c113e57935fd86c7d1be190811f1ae036c1ee203bfbbf3ad5cdb22ce") version("1.0.12", sha256="0c7359cc43beee02761aa3df2baccede1182d29d28c9cd49964b609305062bd0") version("1.0.11", sha256="df757c3068599c6c05367900bcad93547ba3422d59802dbaca20fd74d4d2fa5f") version("1.0.10", sha256="1e65e24a9981251ab5fc4f9fd65fe4eab4ba0255be3400a8c5abe20b62b5d546") diff --git a/var/spack/repos/builtin/packages/r-rcppannoy/package.py b/var/spack/repos/builtin/packages/r-rcppannoy/package.py index 3277a206c08a3b..efe0cbb9784c29 100644 --- a/var/spack/repos/builtin/packages/r-rcppannoy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppannoy/package.py @@ -20,6 +20,7 @@ class RRcppannoy(RPackage): cran = "RcppAnnoy" + version("0.0.22", sha256="9f2121d787c4d3e7beccdd65f5d1de81f31c99d57d5d61ca3cc5af7169dd8f65") version("0.0.20", sha256="dcc6c7e091154d0a5698472e0fc7ed77976941c7376d21e019c90c3efaeacf85") version("0.0.19", sha256="89b209900516f3096b53c90937081fb8965c605c867aa465f1b3b68092b7688a") version("0.0.18", sha256="e4e7ddf071109b47b4fdf285db6d2155618ed73da829c30d8e64fc778e63c858") diff --git a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py index fd7f543b708131..16bd7ee5a93fa0 100644 --- a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py +++ b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py @@ -23,6 +23,7 @@ class RRcpparmadillo(RPackage): cran = "RcppArmadillo" + version("14.0.0-1", sha256="80c4d4fadc3ed92712affc50279de4c5f2e1f7ee777ad1f1b3f9f3e94a64ba90") version( "0.12.4.0.0", sha256="f6db54c465abc0a570a0da6f737d9fdf2187287fb235ce487b1903b5177482cb" ) @@ -59,3 +60,4 @@ class RRcpparmadillo(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@0.8.500.0:") depends_on("r-rcpp@0.11.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.8:", type=("build", "run"), when="@0.12.8.4.0:") diff --git a/var/spack/repos/builtin/packages/r-rcppblaze/package.py b/var/spack/repos/builtin/packages/r-rcppblaze/package.py index 817b604c3a8b34..274f2fe7dc0004 100644 --- a/var/spack/repos/builtin/packages/r-rcppblaze/package.py +++ b/var/spack/repos/builtin/packages/r-rcppblaze/package.py @@ -37,9 +37,14 @@ class RRcppblaze(RPackage): license("BSD-3-Clause") + version("1.0.1", sha256="2d152294dc231e4ab097a377ddeda6f2bbb608970c82563a893c77de08916227") version("0.2.2", sha256="67550ed8aea12a219047af61b41e5b9f991608a21ce9a8fbf7ac55da0f7c2742") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@4.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpp@0.11.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-matrix@1.1-0:", type=("build", "run")) - depends_on("r-bh@1.54.0-2:", type=("build", "run")) + depends_on("r-matrix@1.5-0:", type=("build", "run"), when="@1.0.0:") + + depends_on("r-bh@1.54.0-2:", type=("build", "run"), when="@:0.2.2") diff --git a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py index 550a3ba3c2134f..475e7862c39520 100644 --- a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py @@ -20,6 +20,7 @@ class RRcppcnpy(RPackage): license("BitTorrent-1.0") + version("0.2.12", sha256="856dbc857b2d425c80d9a1628e45743234fee2e68575aa9e2d29a6efae60c39a") version("0.2.11", sha256="5dbb36f2526c276fd79b8e08a30503dc401cdf54d8c40f61af758c9ee1192f55") version("0.2.10", sha256="77d6fbc86520a08da40d44c0b82767099f8f719ca95870d91efff1a9cab1ab9c") version("0.2.9", sha256="733f004ad1a8b0e5aafbf547c4349d2df3118afd57f1ff99f20e39135c6edb30") diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index 2b0899a537b0d4..c58708e5b4ee93 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -27,6 +27,7 @@ class RRcppeigen(RPackage): license("MPL-2.0") + version("0.3.4.0.1", sha256="25ed48f148b50aaadd92752d73e3eefe00ab4ecd4ae5662ae91a9ff3f72a4e26") version("0.3.3.9.3", sha256="5873a47fd6587d916f86119ab140c6736abf80ac45d06ff1c9d198708e7d1c76") version("0.3.3.9.2", sha256="2547e794d5a6fb8d9fbadf19e64afa0bcf413cc69ecf3f428995fa5a0fced493") version("0.3.3.9.1", sha256="8a0486249b778a4275a1168fc89fc7fc49c2bb031cb14b50a50089acae7fe962") @@ -36,6 +37,7 @@ class RRcppeigen(RPackage): version("0.3.2.9.0", sha256="25affba9065e3c12d67b1934d1ce97a928a4011a7738f7b90f0e9830409ec93b") version("0.3.2.8.1", sha256="ceccb8785531c5c23f9232b594e5372c214a114a08ec759115e946badd08d681") - depends_on("r-matrix@1.1-0:", type=("build", "run")) depends_on("r-rcpp@0.11.0:", type=("build", "run")) depends_on("r@3.6.0:", type=("build", "run"), when="@0.3.3.9.3:") + + depends_on("r-matrix@1.1-0:", type=("build", "run"), when="@:0.3.3.9.3") diff --git a/var/spack/repos/builtin/packages/r-rcppensmallen/package.py b/var/spack/repos/builtin/packages/r-rcppensmallen/package.py index a835b67d9a2372..32837f6befa080 100644 --- a/var/spack/repos/builtin/packages/r-rcppensmallen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppensmallen/package.py @@ -11,10 +11,14 @@ class RRcppensmallen(RPackage): cran = "RcppEnsmallen" + version( + "0.2.21.1.1", sha256="87396e259666c8797a00c4255d912da58c7880313a8c4e7d48c6384eb6161956" + ) version( "0.2.19.0.1", sha256="b4a9bde4dde309a52a47b56790389ecab14fe64066098d2a38b1b588ba3d8631" ) depends_on("r@3.3.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.2.20.0.1:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcpparmadillo@0.9.800.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py index 0400df4dc15637..15af171e213a0c 100644 --- a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py +++ b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py @@ -17,6 +17,7 @@ class RRcpphnsw(RPackage): cran = "RcppHNSW" + version("0.6.0", sha256="a5a6ed00a84143aa62aa67df66fcccae657d5db0a1f9bb4b955a8e94c2ff580f") version("0.4.1", sha256="4f0082154f77dcb7756d41cdbfe0f58316431b9027081321a27942f319097c74") version("0.3.0", sha256="a0eb4eea65e28ba31e8306a1856f7e617a192bd448b148f88abe99181cbde007") version("0.1.0", sha256="75a54c30953845dec685764c7b3b4cd7315197c91aef4ab3b4eb0a6293010a95") diff --git a/var/spack/repos/builtin/packages/r-rcppparallel/package.py b/var/spack/repos/builtin/packages/r-rcppparallel/package.py index c127625cc326ed..86f026cdaf4642 100644 --- a/var/spack/repos/builtin/packages/r-rcppparallel/package.py +++ b/var/spack/repos/builtin/packages/r-rcppparallel/package.py @@ -16,6 +16,7 @@ class RRcppparallel(RPackage): cran = "RcppParallel" + version("5.1.9", sha256="fd0861f3f0f7be4e0ef29c021e75beb351ae2eb18ce5d79e21f2725da4da114f") version("5.1.7", sha256="f9c30eb9ce1abffc590825d513d6d28dcbe970e36032dd7521febf04e905b29c") version("5.1.5", sha256="6396322b3b6d6f7019aac808ceb74707bc5c4ed01677fab408372c2a5508c2ea") version("5.0.2", sha256="8ca200908c6365aafb2063be1789f0894969adc03c0f523c6cc45434b8236f81") diff --git a/var/spack/repos/builtin/packages/r-rcppprogress/package.py b/var/spack/repos/builtin/packages/r-rcppprogress/package.py index 9693b278bcf7c6..2c177e8a682b9a 100644 --- a/var/spack/repos/builtin/packages/r-rcppprogress/package.py +++ b/var/spack/repos/builtin/packages/r-rcppprogress/package.py @@ -25,4 +25,4 @@ class RRcppprogress(RPackage): depends_on("cxx", type="build") # generated - depends_on("r-rcpp@0.9.4:", type=("build", "run"), when="@:0.4") + depends_on("r-rcpp@0.9.4:", type=("build", "run"), when="@:0.4.0") diff --git a/var/spack/repos/builtin/packages/r-rcpproll/package.py b/var/spack/repos/builtin/packages/r-rcpproll/package.py index a963f612903449..d9fa889e2e03d2 100644 --- a/var/spack/repos/builtin/packages/r-rcpproll/package.py +++ b/var/spack/repos/builtin/packages/r-rcpproll/package.py @@ -16,6 +16,7 @@ class RRcpproll(RPackage): cran = "RcppRoll" + version("0.3.1", sha256="d2f5d978b6feb8510ec1a1a50ba0e8bf9002bb77bfad7d120f5b30b8f56036df") version("0.3.0", sha256="cbff2096443a8a38a6f1dabf8c90b9e14a43d2196b412b5bfe5390393f743f6b") depends_on("r@2.15.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcppziggurat/package.py b/var/spack/repos/builtin/packages/r-rcppziggurat/package.py index e261a2745cccb3..9b1f89a11d0821 100644 --- a/var/spack/repos/builtin/packages/r-rcppziggurat/package.py +++ b/var/spack/repos/builtin/packages/r-rcppziggurat/package.py @@ -23,6 +23,7 @@ class RRcppziggurat(RPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + depends_on("r@3.0.0:", type=("build", "run"), when="@0.1.6:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcppgsl", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcurl/package.py b/var/spack/repos/builtin/packages/r-rcurl/package.py index 187bc3809849a5..c96541652a5fc4 100644 --- a/var/spack/repos/builtin/packages/r-rcurl/package.py +++ b/var/spack/repos/builtin/packages/r-rcurl/package.py @@ -21,6 +21,7 @@ class RRcurl(RPackage): cran = "RCurl" + version("1.98-1.16", sha256="1a8dc40e10593617348071c6265cc7fac22e26271564206b308a3badfc6c0da7") version("1.98-1.12", sha256="1a83fef04e9573b402171a6e4a4b27857a3d045eec8970f8f7233850bba626b2") version("1.98-1.9", sha256="f28d4871675ec3d2b45fb5d36f7647f546f81121510954c3ad24fdec1643cec5") version("1.98-1.6", sha256="6cb56864ac043195b658bbdb345518d561507d84ccd60362866e970c2f71d1a2") diff --git a/var/spack/repos/builtin/packages/r-rdpack/package.py b/var/spack/repos/builtin/packages/r-rdpack/package.py index cb3ecb5a5f273f..18d017edcd68e8 100644 --- a/var/spack/repos/builtin/packages/r-rdpack/package.py +++ b/var/spack/repos/builtin/packages/r-rdpack/package.py @@ -19,6 +19,7 @@ class RRdpack(RPackage): cran = "Rdpack" + version("2.6.1", sha256="39626397c4ab1706bfdc53433dbaa0a6cb691dcba68173945b5a9eb041acf945") version("2.4", sha256="7652add12b30fcba1f3a12493a089a4166079e78c47b95802a98595a3ff53581") version("2.3", sha256="c45e1ab8352b92ce03f26ece1f4db3716959fca2af9e826d5bd3c76b2151f7c5") version("2.1.3", sha256="8381a8866b9acf5acb2c80069684339c3921f1b45fa202719e8f6852fb4d55b8") diff --git a/var/spack/repos/builtin/packages/r-readr/package.py b/var/spack/repos/builtin/packages/r-readr/package.py index 2621ce060f23ff..c85022427a80e2 100644 --- a/var/spack/repos/builtin/packages/r-readr/package.py +++ b/var/spack/repos/builtin/packages/r-readr/package.py @@ -18,6 +18,7 @@ class RReadr(RPackage): license("MIT") + version("2.1.5", sha256="0fa65a5fe0a46cffe221b7696b52adb82dd4d7a692a895484e438e439594e10a") version("2.1.4", sha256="98144fa48c4fa61ef8c73ede8f87a2d2c5c44e9502b7875b266eb79984fbeb0d") version("2.1.3", sha256="d70dd55e80e87cf1387811fcdc3da92987a892ee75dae02f77ff074142618263") version("2.1.2", sha256="94afd03a1fa4abcf2985ec903bbf5995d7c590e1a50512ed80d081ef4fe10c1b") @@ -31,6 +32,7 @@ class RReadr(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@1.3.0:") depends_on("r@3.4:", type=("build", "run"), when="@2.1.3:") depends_on("r@3.5:", type=("build", "run"), when="@2.1.4:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.5:") depends_on("r-cli", type=("build", "run"), when="@1.4.0:") depends_on("r-cli@3.0.0:", type=("build", "run"), when="@2.1.2:") depends_on("r-cli@3.2.0:", type=("build", "run"), when="@2.1.3:") diff --git a/var/spack/repos/builtin/packages/r-readxl/package.py b/var/spack/repos/builtin/packages/r-readxl/package.py index 8867658ab7031a..5060121560c790 100644 --- a/var/spack/repos/builtin/packages/r-readxl/package.py +++ b/var/spack/repos/builtin/packages/r-readxl/package.py @@ -18,6 +18,7 @@ class RReadxl(RPackage): license("MIT") + version("1.4.3", sha256="7efebbcdefeb8523633db62b3eeb6ea2e4e81e3d010d8b2adb134011c09a5948") version("1.4.2", sha256="387304e2c5be0dca4861ec0232f0d92cc1882b660ca917f8f2a8a4ae858aba11") version("1.4.1", sha256="f6bebb7f940fb21baacd60345b7075c77eb1d026466c55e6a36148de680da1fa") version("1.4.0", sha256="ab9239c249f79b649f7665a612b3dbf4b774ab633115e6dee41091a8cb2491f7") @@ -28,6 +29,7 @@ class RReadxl(RPackage): depends_on("r@3.4:", type=("build", "run"), when="@1.4.0:") depends_on("r@3.5:", type=("build", "run"), when="@1.4.2:") + depends_on("r@3.6:", type=("build", "run"), when="@1.4.3:") depends_on("r-cellranger", type=("build", "run")) depends_on("r-tibble@1.3.1:", type=("build", "run")) depends_on("r-tibble@2.0.1:", type=("build", "run"), when="@1.4.0:") diff --git a/var/spack/repos/builtin/packages/r-recipes/package.py b/var/spack/repos/builtin/packages/r-recipes/package.py index 499c560a274af3..b80809a2f5fde8 100644 --- a/var/spack/repos/builtin/packages/r-recipes/package.py +++ b/var/spack/repos/builtin/packages/r-recipes/package.py @@ -19,6 +19,7 @@ class RRecipes(RPackage): license("MIT") + version("1.1.0", sha256="c5dc8876bc680272812bbb4be39a29464c42a7b773f8cc6d07ac4145f830206d") version("1.0.6", sha256="105e97127cdd6aaeb9fb3348e51a9c46e21fb8bcb734cb3bbd6dbdf2b6b2fc8f") version("1.0.2", sha256="1a7b5a9a2946fa34599935b6d93101ec559d8a901d49cc691972c75df8d5670e") version("1.0.1", sha256="9e3ae212413409bf41ec7d1a311586e12c0ca79943cef436707d041c57125bc9") @@ -29,11 +30,11 @@ class RRecipes(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.0.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.1.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-dplyr@1.1.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-cli", type=("build", "run"), when="@1.0.1:") depends_on("r-clock@0.6.1:", type=("build", "run"), when="@1.0.6:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.1.17:") depends_on("r-generics", type=("build", "run")) depends_on("r-generics@0.1.0:", type=("build", "run"), when="@0.1.15:") depends_on("r-generics@0.1.0.9000:", type=("build", "run"), when="@0.2.0:") @@ -43,6 +44,7 @@ class RRecipes(RPackage): depends_on("r-hardhat@0.1.6.9001:", type=("build", "run"), when="@0.2.0:") depends_on("r-hardhat@1.2.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-hardhat@1.3.0:", type=("build", "run"), when="@1.0.6:") + depends_on("r-hardhat@1.4.0:", type=("build", "run"), when="@1.1.0:") depends_on("r-ipred", type=("build", "run")) depends_on("r-ipred@0.9-12:", type=("build", "run"), when="@0.1.17:") depends_on("r-lifecycle", type=("build", "run"), when="@0.1.15:") @@ -55,6 +57,7 @@ class RRecipes(RPackage): depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-rlang@0.4.0:", type=("build", "run")) depends_on("r-rlang@1.0.3:", type=("build", "run"), when="@1.0.1:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.9:") depends_on("r-tibble", type=("build", "run")) depends_on("r-tidyr", type=("build", "run")) depends_on("r-tidyr@1.0.0:", type=("build", "run"), when="@0.1.15:") @@ -66,3 +69,5 @@ class RRecipes(RPackage): depends_on("r-vctrs", type=("build", "run"), when="@0.1.17:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-withr", type=("build", "run")) + + depends_on("r-ellipsis", type=("build", "run"), when="@0.1.17:1.0.10") diff --git a/var/spack/repos/builtin/packages/r-rematch/package.py b/var/spack/repos/builtin/packages/r-rematch/package.py index 54933633fc3819..1a188bd4264b46 100644 --- a/var/spack/repos/builtin/packages/r-rematch/package.py +++ b/var/spack/repos/builtin/packages/r-rematch/package.py @@ -16,4 +16,5 @@ class RRematch(RPackage): license("MIT") + version("2.0.0", sha256="15daf7bf2907aef8503635bc8631fce9fd75248a1fc2496825588c4bdf785c26") version("1.0.1", sha256="a409dec978cd02914cdddfedc974d9b45bd2975a124d8870d52cfd7d37d47578") diff --git a/var/spack/repos/builtin/packages/r-remotes/package.py b/var/spack/repos/builtin/packages/r-remotes/package.py index 6db1982ab0fded..4b9b40c792cfaf 100644 --- a/var/spack/repos/builtin/packages/r-remotes/package.py +++ b/var/spack/repos/builtin/packages/r-remotes/package.py @@ -18,6 +18,7 @@ class RRemotes(RPackage): license("MIT") + version("2.5.0", sha256="4d663f1426cd88d42f4070f23d969305c575e0499ed1397be6607b0770d2850c") version("2.4.2", sha256="f2ef875f24a485bf4f55a8c830f87cdd5db868f9a8cdb624dc452d0bf66ba516") version("2.2.0", sha256="12f234fd8c46f4ac54e06a3c60e4015ed2193a32762ca4dd6854f120136f33b8") version("2.1.1", sha256="4e590746fce618094089372b185e1ea234b3337b23c44c44118e942d0fb5118b") diff --git a/var/spack/repos/builtin/packages/r-renv/package.py b/var/spack/repos/builtin/packages/r-renv/package.py index 2f60c028645d17..fe9e81566aaa7d 100644 --- a/var/spack/repos/builtin/packages/r-renv/package.py +++ b/var/spack/repos/builtin/packages/r-renv/package.py @@ -19,6 +19,7 @@ class RRenv(RPackage): license("MIT") + version("1.0.7", sha256="7b60b58a23743803ab167f82f78663e86f778947b2bda07afa12689338794507") version("0.17.3", sha256="1c4f28cd233e1f539a2a091f1d118de83eb8aea5d5780dbdfb6bb8dcc6e4f5f0") version("0.16.0", sha256="f3a13e6b71e9be460db73bd9e11a3cb8a1d9bc05c6b77423957cbc2a7f8ba016") version("0.15.5", sha256="b4f1a9a7daa82f0c3123ebd4eeba06e98d5485215518e5292b25bc56741d582e") diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index 7146c4da14d9e4..a7ad7aaf29b47b 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -17,6 +17,7 @@ class RRepr(RPackage): license("GPL-3.0-or-later") + version("1.1.7", sha256="73bd696b4d4211096e0d1e382d5ce6591527d2ff400cc7ae8230f0235eed021b") version("1.1.6", sha256="3d2e6c9b363c1ec4811688deff7fb22093cadc9e0a333930382093d93c16673f") version("1.1.4", sha256="6f799ca83e0940618dd8c22e62ffdce5ec11ba3366c5306ae58b55b53c097040") version("1.1.0", sha256="743fe018f9e3e54067a970bc38b6b8c0c0498b43f88d179ac4a959c2013a5f96") diff --git a/var/spack/repos/builtin/packages/r-reprex/package.py b/var/spack/repos/builtin/packages/r-reprex/package.py index 3043c5e95aba3f..5b983f8b349cae 100644 --- a/var/spack/repos/builtin/packages/r-reprex/package.py +++ b/var/spack/repos/builtin/packages/r-reprex/package.py @@ -21,6 +21,7 @@ class RReprex(RPackage): license("MIT") + version("2.1.1", sha256="c860368cbc7ef90ea786fb61ab6fa42cd89b5258be48652abc20ad414001879c") version("2.0.2", sha256="a85b16e26112364a65c886efea050df08c17aadf1411fd14ec27d9ef13e87092") version("2.0.1", sha256="0e6d8667cacb63135476a766fba3a4f91e5ad86274ea66d2b1e6d773b5ca6426") version("0.3.0", sha256="203c2ae6343f6ff887e7a5a3f5d20bae465f6e8d9745c982479f5385f4effb6c") @@ -32,6 +33,7 @@ class RReprex(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@0.2.0:") depends_on("r@3.3:", type=("build", "run"), when="@1:") depends_on("r@3.4:", type=("build", "run"), when="@2.0.2:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.0:") depends_on("r-callr@2.0.0:", type=("build", "run")) depends_on("r-callr@3.3.1:", type=("build", "run"), when="@1:") depends_on("r-callr@3.6.0:", type=("build", "run"), when="@2:") diff --git a/var/spack/repos/builtin/packages/r-reproducible/package.py b/var/spack/repos/builtin/packages/r-reproducible/package.py index 94b3089e4bb62b..42c219d4090eb6 100644 --- a/var/spack/repos/builtin/packages/r-reproducible/package.py +++ b/var/spack/repos/builtin/packages/r-reproducible/package.py @@ -26,6 +26,7 @@ class RReproducible(RPackage): license("GPL-3.0-only") + version("2.1.0", sha256="9bdc44339e5e82a0082492cb63846699c7491c7ade74d9843b6173d4be84b92b") version("1.2.16", sha256="ec504cdc1adf305cd008ce65eff226e3cb60b7a454b2c8b98a871c84458546ae") version("1.2.10", sha256="fcee3aeb9d38c561c95df8663614ff0ed91a871719730766171b4ed19c82f729") version("1.2.8", sha256="6f453016404f6a2a235cb4d951a29aa7394dc3bd0b9cfc338dc85fb3d5045dd5") @@ -34,19 +35,22 @@ class RReproducible(RPackage): depends_on("r@3.5:", type=("build", "run")) depends_on("r@3.6:", type=("build", "run"), when="@1.2.8:") depends_on("r@4.0:", type=("build", "run"), when="@1.2.10:") + depends_on("r@4.1:", type=("build", "run"), when="@2.0.2:") depends_on("r-data-table@1.10.4:", type=("build", "run")) - depends_on("r-dbi", type=("build", "run")) depends_on("r-digest", type=("build", "run")) + depends_on("r-filelock", type=("build", "run"), when="@2.0.2:") depends_on("r-fpcompare", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) + depends_on("r-fs", type=("build", "run"), when="@2.0.9:") depends_on("r-lobstr", type=("build", "run"), when="@1.2.10:") - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-raster", type=("build", "run")) - depends_on("r-raster@3.5-15:", type=("build", "run"), when="@1.2.10:") - depends_on("r-rsqlite", type=("build", "run")) - depends_on("r-rlang", type=("build", "run")) - depends_on("r-sp@1.4-2:", type=("build", "run")) depends_on("unrar", type=("build", "run")) + depends_on("r-dbi", type=("build", "run"), when="@:2.0.1") depends_on("r-gdalutilities", type=("build", "run"), when="@1.2.8") + depends_on("r-glue", type=("build", "run"), when="@:2.0.1") + depends_on("r-lobstr", type=("build", "run"), when="@1.2.10:2.0.1") + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.1") + depends_on("r-raster@3.5-15:", type=("build", "run"), when="@1.2.10:2.0.1") depends_on("r-require", type=("build", "run"), when="@:1.2.10") + depends_on("r-rlang", type=("build", "run"), when="@:2.0.1") + depends_on("r-rsqlite", type=("build", "run"), when="@:2.0.1") + depends_on("r-sp@1.4-2:", type=("build", "run"), when="@:2.0.1") diff --git a/var/spack/repos/builtin/packages/r-require/package.py b/var/spack/repos/builtin/packages/r-require/package.py index 867c8417847479..edd15c5a6f7877 100644 --- a/var/spack/repos/builtin/packages/r-require/package.py +++ b/var/spack/repos/builtin/packages/r-require/package.py @@ -20,6 +20,7 @@ class RRequire(RPackage): maintainers("dorton21") + version("1.0.1", sha256="52256624b86178ec5efb86b992bbe5a24f2fa53687cec532c0a73b1852ce6800") version("0.3.0", sha256="de879999f71bd3009b58676673f26774119fa84d3d7fcc28d0b02f07d5c63968") version("0.1.4", sha256="1657dacff807ec8865892fce4d55cec9e31affafd90cb44ab59b704d29575a8c") version("0.1.2", sha256="c045c1cc69f6d6248306d88f6399699b9f86134a71b631e35b9101901593af1b") @@ -31,3 +32,4 @@ class RRequire(RPackage): depends_on("r@4.0:", type=("build", "run"), when="@0.1.2:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-remotes", type=("build", "run"), when="@:0.0.13") + depends_on("r-sys", type=("build", "run"), when="@0.3.1.9074:") diff --git a/var/spack/repos/builtin/packages/r-reticulate/package.py b/var/spack/repos/builtin/packages/r-reticulate/package.py index 120cce8a6e3de4..9d6f53afffaad9 100644 --- a/var/spack/repos/builtin/packages/r-reticulate/package.py +++ b/var/spack/repos/builtin/packages/r-reticulate/package.py @@ -19,6 +19,7 @@ class RReticulate(RPackage): license("Apache-2.0") + version("1.38.0", sha256="cb2f313e2351a3cde03be55561b592318ec5376fba3b10e371eeff1986deca8d") version("1.28", sha256="58a299ed18faaa3ff14936752fcc2b86e64ae18fc9f36befdfd492ccb251516f") version("1.26", sha256="3fd74823bde1b0e094db7c2bf6b40ee2501f8d724b4c35b53da95c3c588c74c5") version("1.25", sha256="2125af9e75939c3b7c0dc74f28f42606e816d63aa1143baf631c318ff5ff3a2c") @@ -29,9 +30,12 @@ class RReticulate(RPackage): version("1.13", sha256="adbe41d556b667c4419d563680f8608a56b0f792b8bc427b3bf4c584ff819de3") depends_on("r@3.0:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@1.30.0:") depends_on("r-matrix", type=("build", "run")) depends_on("r-rcpp@0.12.7:", type=("build", "run", "link")) + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.29.0:") depends_on("r-rcpptoml", type=("build", "run", "link"), when="@1.23:") + depends_on("r-rlang", type=("build", "run"), when="@1.29.0:") depends_on("r-here", type=("build", "run", "link"), when="@1.23:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-png", type=("build", "run", "link"), when="@1.23:") diff --git a/var/spack/repos/builtin/packages/r-rfast/package.py b/var/spack/repos/builtin/packages/r-rfast/package.py index d6ddfe5967c5e0..63d534f379d296 100644 --- a/var/spack/repos/builtin/packages/r-rfast/package.py +++ b/var/spack/repos/builtin/packages/r-rfast/package.py @@ -21,11 +21,13 @@ class RRfast(RPackage): cran = "Rfast" + version("2.1.0", sha256="f9e46cac99db756cd49c9cd83be8adc0d381e6c03102389bfdcb8258d02418ff") version("2.0.7", sha256="8f86159a4760a7124e1c91ae0b022c7e496f81590ea4e4af702bea44e8dedf8f") version("2.0.6", sha256="34694b5c67ce8fcbdc90aac2ac80a74d4b66515f383e6301aea7c020009ebe7f") version("2.0.4", sha256="959907e36e24620c07ec282b203b40214f4914f4928c07ee6491043c27af31d9") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-rcpp@0.12.3:", type=("build", "run")) + depends_on("r-rcppparallel", type=("build", "run"), when="@2.1.0:") depends_on("r-rcppziggurat", type=("build", "run")) depends_on("r-rcpparmadillo", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rgdal/package.py b/var/spack/repos/builtin/packages/r-rgdal/package.py index 4194c69d7f7f07..a472fbd9eaa7ce 100644 --- a/var/spack/repos/builtin/packages/r-rgdal/package.py +++ b/var/spack/repos/builtin/packages/r-rgdal/package.py @@ -23,6 +23,7 @@ class RRgdal(RPackage): cran = "rgdal" + version("1.6-7", sha256="555cedfdadb05db90b061d4b056f96d8b7010c00ea54bc6c1bbcc7684fadae33") version( "1.6-6", sha256="d742d7aadfc004771e61cac28a1faffeb4dbda981dea19115be11c541087399a", diff --git a/var/spack/repos/builtin/packages/r-rgenoud/package.py b/var/spack/repos/builtin/packages/r-rgenoud/package.py index 172196c919519a..dc489925fec2ef 100644 --- a/var/spack/repos/builtin/packages/r-rgenoud/package.py +++ b/var/spack/repos/builtin/packages/r-rgenoud/package.py @@ -15,6 +15,7 @@ class RRgenoud(RPackage): license("GPL-3.0-only") + version("5.9-0.10", sha256="e644ee640a097ed2d32be03db3603259981656fa459922035a8c531d692acde9") version("5.9-0.3", sha256="31560a8dad791f9c47a673e90d397b3fc60da1a58be1ae1486ace90d988eb55f") version("5.8-3.0", sha256="9beb11b5edab3ab3aa6001daa39668b240a8e0328be9d55db4e23ff88ce3235d") version("5.8-2.0", sha256="106c4f6a6df5159578e929a0141b3cfbaa88141a70703ff59a1fc48a27e2d239") diff --git a/var/spack/repos/builtin/packages/r-rgeos/package.py b/var/spack/repos/builtin/packages/r-rgeos/package.py index fae7ad271ea3be..2122332ecd7e26 100644 --- a/var/spack/repos/builtin/packages/r-rgeos/package.py +++ b/var/spack/repos/builtin/packages/r-rgeos/package.py @@ -30,6 +30,7 @@ class RRgeos(RPackage): cran = "rgeos" + version("0.6-4", sha256="9d03c4de96fd3fad55ff8d1ff8113dcaaa00f15d9d0588e54c9f91751bcede11") version( "0.6-2", sha256="2ee2bb8b0c20d7908ac55d4d1cf8292c624ab836e02599ce1871a249a59fe0af", diff --git a/var/spack/repos/builtin/packages/r-rgexf/package.py b/var/spack/repos/builtin/packages/r-rgexf/package.py index e9c146ced9005f..7498cd8798f262 100644 --- a/var/spack/repos/builtin/packages/r-rgexf/package.py +++ b/var/spack/repos/builtin/packages/r-rgexf/package.py @@ -21,6 +21,7 @@ class RRgexf(RPackage): license("MIT") + version("0.16.3", sha256="cddcc58a10092cfea32999d7baaf6eae9b34e649a16627ee0b466a7cf2c339b0") version("0.16.2", sha256="6ee052b0de99d0c7492366b991d345a51b3d0cc890d10a68b8670e1bd4fc8201") version("0.16.0", sha256="2a671df9ac70cfefd4092754317cb28e32a33df345b80e1975bf838e838245ee") version("0.15.3", sha256="2e8a7978d1fb977318e6310ba65b70a9c8890185c819a7951ac23425c6dc8147") diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index 67f0b5e874b109..37a0a0d4b58b9d 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -20,6 +20,7 @@ class RRgl(RPackage): license("GPL-2.0-or-later") + version("1.3.1", sha256="9fea7b59dd7fef9bbd783c745d68325ec753ef412699d168bb6c664a56506d49") version("1.1.3", sha256="4fa246c2ab06261ea81e09a7a489f34174b93359fe74a3db291f8d0eccd38aae") version("0.110.2", sha256="da1118c1990ae161a5787960fb22009601d2ee7d39ca9c97c31c70589bce346d") version("0.108.3.2", sha256="033af3aceade6c21d0a602958fff1c25c21febc7d0e867cf88860cfa25fc3c65") @@ -34,6 +35,7 @@ class RRgl(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run")) depends_on("r@3.3.0:", type=("build", "run"), when="@0.108.3:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.3.1:") depends_on("r-htmlwidgets", type=("build", "run")) depends_on("r-htmlwidgets@1.6.0:", type=("build", "run"), when="@1.1.3:") depends_on("r-htmltools", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index f2931bef8119a1..d3e59136454c62 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -16,6 +16,7 @@ class RRgooglemaps(RPackage): cran = "RgoogleMaps" + version("1.5.1", sha256="14fe6c37d935a1c5a9ac063c9c9c59a1e93c6f86907480792302f9a9452cf8a4") version("1.4.5.3", sha256="d1d5ad8db841754af175d4104a05c5c31e5cc445be314a3ac70483c31798680b") version("1.4.3", sha256="44cb62bcd23e5b4807e91c5825352eb8d38aaaeb3b38a8271ca9f21c1e1d4b19") version("1.4.2", sha256="b479996fcb72f067644a7ea7f00325e44e76efd202e84aaab022753c4a6d5584") @@ -23,6 +24,6 @@ class RRgooglemaps(RPackage): depends_on("r@2.10:", type=("build", "run")) depends_on("r-png", type=("build", "run")) - depends_on("r-sp", type=("build", "run"), when="@1.4.5.3:") + depends_on("r-sp", type=("build", "run"), when="@1.4.5.3:1.4.5.3") depends_on("r-rjsonio", type=("build", "run"), when="@1.2.0.5:1.2.0.7") diff --git a/var/spack/repos/builtin/packages/r-rio/package.py b/var/spack/repos/builtin/packages/r-rio/package.py index f120492fe933df..473ae6b88fff96 100644 --- a/var/spack/repos/builtin/packages/r-rio/package.py +++ b/var/spack/repos/builtin/packages/r-rio/package.py @@ -22,15 +22,22 @@ class RRio(RPackage): license("GPL-2.0-only") + version("1.2.2", sha256="51472a286ad82e1cafd4d87d774662650ccf40d788b59dc70e49fe754e045394") version("0.5.29", sha256="9fa63187e1814053e6ed2a164665b4924e08c3453adccb78f7211d403dcc5412") version("0.5.16", sha256="d3eb8d5a11e0a3d26169bb9d08f834a51a6516a349854250629072d59c29d465") depends_on("r@2.15.0:", type=("build", "run")) + depends_on("r@4.0:", when="@1.2:", type=("build", "run")) depends_on("r-foreign", type=("build", "run")) depends_on("r-haven@1.1.2:", type=("build", "run"), when="@0.5.26:") depends_on("r-haven@1.1.0:", type=("build", "run")) depends_on("r-curl@0.6:", type=("build", "run")) + depends_on("r-data-table@1.11.2:", when="@1:", type=("build", "run")) depends_on("r-data-table@1.9.8:", type=("build", "run")) + depends_on("r-lifecycle", when="@1:", type=("build", "run")) + depends_on("r-r-utils", when="@1:", type=("build", "run")) + depends_on("r-readr", when="@1.2.1:", type=("build", "run")) depends_on("r-readxl@0.1.1:", type=("build", "run")) - depends_on("r-openxlsx", type=("build", "run")) + depends_on("r-openxlsx", type=("build", "run"), when="@:0.5.30") depends_on("r-tibble", type=("build", "run")) + depends_on("r-writexl", when="@1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rjags/package.py b/var/spack/repos/builtin/packages/r-rjags/package.py index 3797aa89837798..4d0883a909269f 100644 --- a/var/spack/repos/builtin/packages/r-rjags/package.py +++ b/var/spack/repos/builtin/packages/r-rjags/package.py @@ -16,6 +16,7 @@ class RRjags(RPackage): license("GPL-2.0-only") + version("4-16", sha256="369d393e519ae26219ff44e6a8f07d9310a9bb06fa0ec9dcce33ce7c4bc7e7e7") version("4-14", sha256="313b5df702598ce3bbc5f8b027b654c8489420ca5a4e0a794954ea9f4837e2cb") version("4-13", sha256="f85cc34c5127b828d8a3fa3613ef29f147c868bdaf55eb0f7406c10abbf92b32") version("4-12", sha256="b91f34c3f9ebf78fa44bd661346fbb6f28a01693a7203ac133c98392dd273e10") diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 0a135ed48789f1..662ae85fd4d5c8 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -14,6 +14,7 @@ class RRjava(RPackage): cran = "rJava" + version("1.0-11", sha256="9ea0ccf5553d86f7de8649a8324766c4f0810f35b7be561640dd87fd37986417") version("1.0-6", sha256="e290d0493317a5d6c452793e92baa914e37ef03faef19b2e436329b4ec8658c6") version("0.9-13", sha256="5b1688f5044476b34f71d868b222ac5fce3a088f0c2b9e4591c1e48f3d8c75f4") version("0.9-11", sha256="c28ae131456a98f4d3498aa8f6eac9d4df48727008dacff1aa561fc883972c69") diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index 55bfe6a4af01a5..c0c3ea6ae52b00 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -15,6 +15,7 @@ class RRjson(RPackage): license("GPL-2.0-only") + version("0.2.22", sha256="06cdf67b72b6166a6ad399c8176b34f8a5a75fa5257ddbd46a2b99b2f39e1d27") version("0.2.21", sha256="982b56d35ccc0c7db0b20c1d3eab5f5f47c620309646fdc278ff1cc3433ea2e2") version("0.2.20", sha256="3a287c1e5ee7c333ed8385913c0a307daf99335fbdf803e9dcca6e3d5adb3f6c") version("0.2.19", sha256="5c2672461986f2b715416cab92ed262abe9875f31299bc8a1a072ef7c6dd49bc") @@ -25,3 +26,4 @@ class RRjson(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@4.0.0:", type=("build", "run"), when="@0.2.21:") + depends_on("r@4.4.0:", type=("build", "run"), when="@0.2.22:") diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index 63495d35d3cda7..86833a53685e66 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -27,6 +27,7 @@ class RRjsonio(RPackage): cran = "RJSONIO" + version("1.3-1.9", sha256="f173034b0c28873f417ee804b9e278aedd92e76eb56c7c6d71b1c02fa1193ece") version("1.3-1.8", sha256="f6f0576d3c7852b16295dfc897feebca064fe5dd29cdce7592f94c56823553f5") version("1.3-1.6", sha256="82d1c9ea7758b2a64ad683f9c46223dcba9aa8146b43c1115bf9aa76a657a09f") version("1.3-1.4", sha256="54142c931e15eca278a02dad5734026bb49d960471eb085008af825352953190") diff --git a/var/spack/repos/builtin/packages/r-rlang/package.py b/var/spack/repos/builtin/packages/r-rlang/package.py index 48a47e14479eee..6f630c0707ae4a 100644 --- a/var/spack/repos/builtin/packages/r-rlang/package.py +++ b/var/spack/repos/builtin/packages/r-rlang/package.py @@ -16,6 +16,7 @@ class RRlang(RPackage): license("MIT") + version("1.1.4", sha256="f2d74527508bf3287102470beb27de0d234c3cbba399c28d3312f2c83c64a6e1") version("1.1.2", sha256="2a0ee1dc6e5c59b283c32db5e74e869922a336197cb406fe92622b6ec66f8092") version("1.1.1", sha256="5e5ec9a7796977216c39d94b1e342e08f0681746657067ba30de11b8fa8ada99") version("1.1.0", sha256="f89859d91c9edc05fd7ccf21163fe53ad58da907ee273a93d5ab004a8649335b") diff --git a/var/spack/repos/builtin/packages/r-rlist/package.py b/var/spack/repos/builtin/packages/r-rlist/package.py new file mode 100644 index 00000000000000..672f6b7586c968 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rlist/package.py @@ -0,0 +1,27 @@ +# 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) + +from spack.package import * + + +class RRlist(RPackage): + """Provides a set of functions for data manipulation with + list objects, including mapping, filtering, grouping, sorting, + updating, searching, and other useful functions. Most functions + are designed to be pipeline friendly so that data processing with + lists can be chained.""" + + homepage = "https://renkun-ken.github.io/rlist/" + cran = "rlist" + + license("MIT", checked_by="wdconinc") + + version("0.4.6.2", sha256="ebde658d897c8a27a90ebb892b9e2bad15e2ad75557a7352fb08cbb5604e0997") + + depends_on("r@2.15:", type=("build", "run")) + depends_on("r-yaml", type=("build", "run")) + depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-xml", type=("build", "run")) + depends_on("r-data-table", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rmariadb/package.py b/var/spack/repos/builtin/packages/r-rmariadb/package.py index 740d434eaff766..231701e2bb21eb 100644 --- a/var/spack/repos/builtin/packages/r-rmariadb/package.py +++ b/var/spack/repos/builtin/packages/r-rmariadb/package.py @@ -15,6 +15,7 @@ class RRmariadb(RPackage): cran = "RMariaDB" + version("1.3.2", sha256="7c87ef0623218b9e79dd6a9b1a25f495520289603ca48f54ea45309bd8826828") version("1.2.2", sha256="c97c61ace584f9ad9929d3e3f366556e0eecad12bc98ea2979563a01475f468e") version("1.2.1", sha256="c9176a096854ce33a98ce0faef0065c50b5d356174f90cea742c70e130cf5f0c") version("1.1.0", sha256="9ffa63a15052876a51a7996ca4e6a5b7b937f594b5cc7ca5a86f43789e22a956") @@ -27,11 +28,12 @@ class RRmariadb(RPackage): depends_on("r-dbi@1.1.3:", type=("build", "run"), when="@1.2.2:") depends_on("r-hms@0.5.0:", type=("build", "run")) depends_on("r-lubridate", type=("build", "run"), when="@1.1.0:") - depends_on("r-rcpp@0.12.4:", type=("build", "run")) + depends_on("r-cpp11", type=("build", "run"), when="@1.3.0:") depends_on("r-rlang", type=("build", "run"), when="@1.2.1:") depends_on("r-plogr", type=("build", "run")) depends_on("mariadb-client") + depends_on("r-rcpp@0.12.4:", type=("build", "run"), when="@:1.2.2") depends_on("r-bh", type=("build", "run"), when="@:1.1.0") # Set the library explicitly to prevent configure from finding a system diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index 2b4e444e0ef688..767288056bc7b5 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -16,6 +16,7 @@ class RRmarkdown(RPackage): license("GPL-3.0-only") + version("2.28", sha256="a102a503a92d4203038c5a0675451daf9460df18efcabd5c23283ecefe75a085") version("2.21", sha256="c25b20a422d11a115c93460f41c488874002154abb349b14e0d6518682fdac28") version("2.17", sha256="aa576c458ec4c2e8468aaa4e3f60202d8d9c7ef54fa01d6b2d243bffee08c4be") version("2.16", sha256="d3d34e0419c419d3ab20eb60952a0f0f4c391d202277af55dcd673d25561fa71") @@ -38,7 +39,7 @@ class RRmarkdown(RPackage): depends_on("r-jquerylib", type=("build", "run"), when="@2.11:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-knitr@1.22:", type=("build", "run")) - depends_on("r-stringr@1.2.0:", type=("build", "run"), when="@1.6:") + depends_on("r-knitr@1.43:", type=("build", "run"), when="@2.26:") depends_on("r-tinytex@0.11:", type=("build", "run"), when="@1.10:") depends_on("r-tinytex@0.31:", type=("build", "run"), when="@2.8:") depends_on("r-xfun", type=("build", "run"), when="@1.13:") @@ -54,3 +55,4 @@ class RRmarkdown(RPackage): depends_on("r-mime", type=("build", "run"), when="@1.8:1.14") depends_on("r-catools", type=("build", "run"), when="@:1.7") depends_on("r-base64enc", type=("build", "run"), when="@:1.14") + depends_on("r-stringr@1.2.0:", type=("build", "run"), when="@1.6:2.25") diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index 7388730fc157d1..04b423d5abb74d 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -17,6 +17,7 @@ class RRmpfr(RPackage): cran = "Rmpfr" + version("0.9-5", sha256="bce9a2729efcd329a13910e2ecb4675b4626dd3322cd01b01cb835d516a5f31b") version("0.9-2", sha256="ed63da32f3b970900c87cdb728eb16ed9fb0c79114cdecdc09e573f50ff7175e") version("0.8-9", sha256="cfee5ab47d49c6433c372a267f7d849c8f7c61a84e00d08afb047eaafcdbbc8a") version("0.8-7", sha256="93c2db785ff705dcfc6fa7f0373c2426cdc2ef72ceb5b294edeb2952775f57d2") diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 88b9a301751980..2a706a42e12868 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -14,6 +14,7 @@ class RRmpi(RPackage): cran = "Rmpi" + version("0.7-2", sha256="8591fa9f50de52535a32b36e7ed142c6ca4e03fdfdbef79a1e27a63ed5322eef") version("0.7-1", sha256="17dae27dea9317aacabc2255dfcf2538fb3195472cedd521256ced9a20dd2dc1") version("0.6-9.2", sha256="358ac1af97402e676f209261a231f36a35e60f0301edf8ca53dac11af3c3bd1a") version("0.6-9", sha256="b2e1eac3e56f6b26c7ce744b29d8994ab6507ac88df64ebbb5af439414651ee6") @@ -24,10 +25,13 @@ class RRmpi(RPackage): depends_on("mpi") # The following MPI types are not supported - conflicts("^intel-mpi") - conflicts("^intel-parallel-studio") - conflicts("^mvapich2") - conflicts("^spectrum-mpi") + conflicts("^[virtuals=mpi] intel-mpi") + conflicts("^[virtuals=mpi] intel-parallel-studio") + conflicts("^[virtuals=mpi] mvapich2") + conflicts("^[virtuals=mpi] spectrum-mpi") + + # Rmpi's Open MPI implementation depends on v4.x ORTE runtime environment + conflicts("^[virtuals=mpi] openmpi@5:") def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/r-rms/package.py b/var/spack/repos/builtin/packages/r-rms/package.py index a14c2404c25241..289f9dd9a993f8 100644 --- a/var/spack/repos/builtin/packages/r-rms/package.py +++ b/var/spack/repos/builtin/packages/r-rms/package.py @@ -27,6 +27,7 @@ class RRms(RPackage): license("GPL-2.0-or-later") + version("6.8-1", sha256="9d38545749430763c242bae1181ce24a7f6f6b244e4c69348ab200b83925596a") version("6.6-0", sha256="f3abadb94339f3aedadd27e1aceade069bcb53c94bf246626b0dc94b16b6625c") version("6.3-0", sha256="6c41eb670daf5e4391cc2f2a19e20a591f90769c124300a7ccf555820140d3f9") version("6.2-0", sha256="10d58cbfe39fb434223834e29e5248c9384cded23e6267cfc99367d0f5ee24b6") @@ -38,9 +39,11 @@ class RRms(RPackage): version("5.1-1", sha256="c489948df5c434b40bcf5288844f5b4e08d157f36939d09230c1600f88d1bfe3") depends_on("r@3.5.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@6.8-0:") depends_on("r-hmisc@4.3-0:", type=("build", "run")) depends_on("r-hmisc@4.7-0:", type=("build", "run"), when="@6.3-0:") depends_on("r-hmisc@4.8-0:", type=("build", "run"), when="@6.6-0:") + depends_on("r-hmisc@5.1-0:", type=("build", "run"), when="@6.8-0:") depends_on("r-survival@3.1-6:", type=("build", "run")) depends_on("r-survival@3.1-12:", type=("build", "run"), when="@6.1-0:") depends_on("r-ggplot2@2.2:", type=("build", "run")) @@ -56,6 +59,7 @@ class RRms(RPackage): depends_on("r-cluster", type=("build", "run"), when="@6.1-0:") depends_on("r-digest", type=("build", "run"), when="@6.1-0:") depends_on("r-knitr", type=("build", "run"), when="@6.6-0:") - depends_on("r-kableextra", type=("build", "run"), when="@6.6-0:") depends_on("r-colorspace", type=("build", "run"), when="@6.6-0:") depends_on("r-lattice", type=("build", "run"), when="@:6.3-0") + + depends_on("r-kableextra", type=("build", "run"), when="@6.6-0:6.7-0") diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index 2e3639efdd42fc..fba82187857459 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -15,6 +15,7 @@ class RRmysql(RPackage): cran = "RMySQL" + version("0.10.27", sha256="f1735b689cd9bdb9c776a16138eaa1f6c5cbdbab5c1d292e1240e3bbf105bfab") version("0.10.25", sha256="ed130f9bd80ea9fd5b4fdbb6fa094c35646354507de68eb3d19a3cbc8b5a4794") version("0.10.24", sha256="ca1b9aacab6d76866ba09210ae881c3a7555bd5144ea0a0a446fceff80637241") version("0.10.23", sha256="f4ac7ed4fba83749819c07ce32d53ee024cf1cedebbda3b832644bff9edf4a15") diff --git a/var/spack/repos/builtin/packages/r-rnoaa/package.py b/var/spack/repos/builtin/packages/r-rnoaa/package.py index 5e059a6b534980..b8551eab7c92bb 100644 --- a/var/spack/repos/builtin/packages/r-rnoaa/package.py +++ b/var/spack/repos/builtin/packages/r-rnoaa/package.py @@ -22,6 +22,7 @@ class RRnoaa(RPackage): license("MIT") + version("1.4.0", sha256="a1869303b3fc14d9b3674451c0ce9331ddc26110b7474fe419ac37f7ffb63097") version("1.3.8", sha256="57974b48162637e98888f041d6f0e580d3c60bd5008af2d2bc659491f0deb98a") version("1.3.0", sha256="4c421ad6e4c2b25e4dea5351c338aed70bea6e382562412d1dad825a50b0d161") version("0.8.4", sha256="fb9ae771111dd5f638c1eff3290abad2ff9cc7e68a6678bf2414433ebed2dbbf") diff --git a/var/spack/repos/builtin/packages/r-robust/package.py b/var/spack/repos/builtin/packages/r-robust/package.py index a5bf5c16e107b1..37ad526b3dbe75 100644 --- a/var/spack/repos/builtin/packages/r-robust/package.py +++ b/var/spack/repos/builtin/packages/r-robust/package.py @@ -17,6 +17,7 @@ class RRobust(RPackage): license("GPL-3.0-or-later") + version("0.7-5", sha256="a3c02a9c9101b966907cb52b3193c4ef51864928ad99c3351edf5390532c1acc") version("0.7-1", sha256="efaac70c6399b2787938e23ea89039b4a6043e76601bd794ba0ddda1edee65df") version("0.7-0", sha256="5e1aac30e185e416c22445663704f39433af9fdb48452185f2c9beb3528084b9") version("0.6-1", sha256="496fd225f6bc6f734e338308f18475125aaf691b39e25308bddb284d3106117d") diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py index a05863c09574b0..37db5ba90f8c63 100644 --- a/var/spack/repos/builtin/packages/r-robustbase/package.py +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -19,6 +19,7 @@ class RRobustbase(RPackage): license("GPL-2.0-or-later") + version("0.99-4", sha256="a978d04fcd4bee7a4ebfa9f05e9abb4a1ca4d970867229a90698bed2fbf40cbc") version("0.95-1", sha256="862cd26db3ecdf34ab47c52d355fd65ffebbff448aea17999a9b95a1f13ba3ea") version("0.95-0", sha256="5cfaea1c46df6d45086614fea5f152c8da8ebfcadf33bb8df5b82e742eef9724") version("0.93-9", sha256="d75fb5075463fec61d063bced7003936e9198492328b6fae15f67e8415713c45") diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index e16a948741e307..d0fdeba36c27d8 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -15,6 +15,7 @@ class RRodbc(RPackage): license("GPL-2.0-or-later") + version("1.3-23", sha256="15cdd15ac0afb3294420c7593b04a5e4e31df175418b22a8ec075bf5855e0f3b") version("1.3-20", sha256="7f157bd1ca2502bea4247260aac5b0f3aa1026ddffe5c50b026f2d59c210fbd6") version("1.3-19", sha256="3afcbd6877cd8b7c8df4a94bacd041a51e5ac607810acb88efd380b45d2d4efe") version("1.3-17", sha256="469fc835f65c344d5c3eaa097ff278ee8e9f12f845722a9aad340115faa704f7") diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 60df397a81d3f0..97e60dac2d2185 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -18,6 +18,7 @@ class RRoxygen2(RPackage): license("MIT") + version("7.3.2", sha256="b788879f9132b7e2e656f442a6c592314676a9bf32d6a0a56e156cfa1ada011c") version("7.2.3", sha256="d844fab977d2575ab942fa1309ac7ff67f35f099a75d8b41c79efe6ea10416da") version("7.2.1", sha256="d2f0342591dc2b561fad8f6cf6fb3001e5e0bdd02be68bb2c6315f6bb82cda21") version("7.2.0", sha256="2ebfcfd567b9db6c606c6d42be1645b4e987f987995a2ad8954fa963a519448b") @@ -31,6 +32,7 @@ class RRoxygen2(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@6.1.0:") depends_on("r@3.2:", type=("build", "run"), when="@7.1.0:") depends_on("r@3.3:", type=("build", "run"), when="@7.1.2:") + depends_on("r@3.6:", type=("build", "run"), when="@7.3.0:") depends_on("r-brew", type=("build", "run")) depends_on("r-cli@3.3.0:", type=("build", "run"), when="@7.2.0:") depends_on("r-commonmark", type=("build", "run")) @@ -39,6 +41,7 @@ class RRoxygen2(RPackage): depends_on("r-pkgload@1.0.2:", type=("build", "run")) depends_on("r-purrr", type=("build", "run")) depends_on("r-purrr@0.3.3:", type=("build", "run"), when="@7.1.0:") + depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@7.3.0:") depends_on("r-r6@2.1.2:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@7.1.0:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@7.2.0:") diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py index 7ed71d89b96617..3a8b649d9b4dc9 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -14,6 +14,7 @@ class RRpartPlot(RPackage): cran = "rpart.plot" + version("3.1.2", sha256="3dca2a5d1a8e5eb5129fd6efce9c5f6b2fa241bfb65f2a8823a8db89f4b422b2") version("3.1.1", sha256="30736240058df21a96d10912a091d938f821d521a3bc4efb9aa4ef6fb233024d") version("3.1.0", sha256="2aaba0c0cabbc17aca9085248b0ad74ee7ff2b8f729e020e84b3917de174c15e") version("3.0.9", sha256="1150f5e9899b3b31b17160617cd99c3ad340c8361aeb229264a7a3a3a28015a4") diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index 24fd3ebd141ac9..36bd41d99cfd5b 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -17,6 +17,7 @@ class RRpart(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("4.1.23", sha256="f9b89aed6aa6cea656a2dcb271574e969ce2b1c98beb07bd91e17339f6daabaf") version("4.1.19", sha256="fe723ed0b5583fae8b40e6fecc29b357229cb11f2339b02a4e4f812926249565") version("4.1.16", sha256="27ec75258a5a3459ad999f5f36760ead974930744249605bf8465f234f31425c") version("4.1-15", sha256="2b8ebe0e9e11592debff893f93f5a44a6765abd0bd956b0eb1f70e9394cfae5c") diff --git a/var/spack/repos/builtin/packages/r-rpostgres/package.py b/var/spack/repos/builtin/packages/r-rpostgres/package.py index 0e829406e50370..c7adf3b7e10497 100644 --- a/var/spack/repos/builtin/packages/r-rpostgres/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgres/package.py @@ -14,6 +14,7 @@ class RRpostgres(RPackage): cran = "RPostgres" + version("1.4.7", sha256="3dd1f1d83bd8a25a0a86532c6971072fccea7b1769f601ad9daa8c9aa8f66924") version("1.4.5", sha256="70ff848cba51ddad4642a20e01cda1033e6f218b015a13380c30604bbd18c797") version("1.4.4", sha256="c9cc0648c432f837fd0eb4922db4903357244d5a2cedd04ea236f249b08acdfc") version("1.4.3", sha256="a5be494a54b6e989fadafdc6ee2dc5c4c15bb17bacea9ad540b175c693331be2") @@ -22,14 +23,16 @@ class RRpostgres(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-bit64", type=("build", "run")) depends_on("r-blob@1.2.0:", type=("build", "run")) + depends_on("r-cpp11", type=("build", "run"), when="@1.4.6:") depends_on("r-dbi@1.1.0:", type=("build", "run")) + depends_on("r-dbi@1.2.0:", type=("build", "run"), when="@1.4.7:") depends_on("r-hms@0.5.0:", type=("build", "run")) depends_on("r-hms@1.0.0:", type=("build", "run"), when="@1.4.3:") depends_on("r-lubridate", type=("build", "run")) - depends_on("r-rcpp@0.11.4.2:", type=("build", "run")) - depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.4.3:") depends_on("r-withr", type=("build", "run")) depends_on("r-plogr@0.2.0:", type=("build", "run")) depends_on("postgresql@9.0:") + depends_on("r-rcpp@0.11.4.2:", type=("build", "run"), when="@:1.4.5") + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.4.3:1.4.5") depends_on("r-bh", type=("build", "run"), when="@:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-rpostgresql/package.py b/var/spack/repos/builtin/packages/r-rpostgresql/package.py index 74715c6c5d8a18..74cd1832a1e2d2 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -23,6 +23,7 @@ class RRpostgresql(RPackage): license("PostgreSQL") + version("0.7-6", sha256="385939708b6a3657663409f91e165ded0ff5268d1dc6225e0f9b34764baf2d2c") version("0.7-5", sha256="6b5401ee55bd948ae7bc84520d789ceb422533a7d5e5bd6e10e3b54447f29fa1") version("0.7-4", sha256="b6adf60094f2b03dff1959147cde7f61c2f4c4576d77b2a263c63f8e3cd556c6") version("0.7-3", sha256="bdbca10329aeb357f05364772964716dfb5ce2470f7eb4a33770862b6ded71b9") diff --git a/var/spack/repos/builtin/packages/r-rprojroot/package.py b/var/spack/repos/builtin/packages/r-rprojroot/package.py index 0d6bea6d61b240..3d081b81fcdd29 100644 --- a/var/spack/repos/builtin/packages/r-rprojroot/package.py +++ b/var/spack/repos/builtin/packages/r-rprojroot/package.py @@ -17,6 +17,7 @@ class RRprojroot(RPackage): license("MIT") + version("2.0.4", sha256="b5f463fb25a24dac7a4ca916be57dbe22b5262e1f41e53871ca83e57d4336e99") version("2.0.3", sha256="50604247470e910cecfe9b76df754bf96a0d701f81b732f7aa9c90a20d30f897") version("2.0.2", sha256="5fa161f0d4ac3b7a99dc6aa2d832251001dc92e93c828593a51fe90afd019e1f") version("1.3-2", sha256="df5665834941d8b0e377a8810a04f98552201678300f168de5f58a587b73238b") diff --git a/var/spack/repos/builtin/packages/r-rrblup/package.py b/var/spack/repos/builtin/packages/r-rrblup/package.py index 85db94fb3ef34a..0759a2f0a34314 100644 --- a/var/spack/repos/builtin/packages/r-rrblup/package.py +++ b/var/spack/repos/builtin/packages/r-rrblup/package.py @@ -17,6 +17,7 @@ class RRrblup(RPackage): cran = "rrBLUP" + version("4.6.3", sha256="cd2a257ecb8252f352fd09189b538db62e4de4a51091cf392c18966c3f0c80cd") version("4.6.2", sha256="860f5e3f889593b6737f386743a2679322ec7d3557bea8e25482fd6cb745adff") version("4.6.1", sha256="e9230e74cc430a83ac5567071cb1c7f00b35c368f7d79bcc1cfde7225446c4db") version("4.6", sha256="28b475a1466fcdc1780caace75cf34155338fda496cebd5799315598a4bc84af") diff --git a/var/spack/repos/builtin/packages/r-rrcov/package.py b/var/spack/repos/builtin/packages/r-rrcov/package.py index a0822cb4e6725c..71895d0cf2bf46 100644 --- a/var/spack/repos/builtin/packages/r-rrcov/package.py +++ b/var/spack/repos/builtin/packages/r-rrcov/package.py @@ -23,6 +23,7 @@ class RRrcov(RPackage): license("GPL-3.0-or-later") + version("1.7-6", sha256="b8a2c07c42e4e76e9f90cb016cb72a40f6d2ce1f10d1753c06e3344f38e148de") version("1.7-2", sha256="0f01ed07cbc9e55dfcba27040a3f72237fb2fb86eda899472c2f96500220ecae") version("1.7-1", sha256="e115a09997b46c7eed33017f748632c7d50a95ad621f1f452f22dfc714c9a4e5") version("1.7-0", sha256="cbcca84a82d63fa50556aa8db29312b9bb588a638eb306ce4a81c271529228fd") diff --git a/var/spack/repos/builtin/packages/r-rrpp/package.py b/var/spack/repos/builtin/packages/r-rrpp/package.py index b9de4ebda6b3aa..a0e839f3c535b4 100644 --- a/var/spack/repos/builtin/packages/r-rrpp/package.py +++ b/var/spack/repos/builtin/packages/r-rrpp/package.py @@ -25,6 +25,7 @@ class RRrpp(RPackage): cran = "RRPP" + version("2.0.3", sha256="ff70976d4656c39bb02d842668c4d283bc2a26294d3aa2c6590f86a87fd8a2b5") version("1.3.1", sha256="50c7d4b20fb84088b0440c2f55ed146bcb35b0d9dda8581dca28e30b2fecbcd5") version("1.2.3", sha256="6eee638af94d69d4dd471a5e01243622dedef3c0c95b3363e21e8e11f0ea564c") version("1.1.2", sha256="2b563f3db9e349abe481444f48a1a3e6bc1154de8259b7a7060ab588287e80c0") @@ -34,6 +35,7 @@ class RRrpp(RPackage): version("0.3.0", sha256="34fea6ce7a78e4f38398d3b99585bab11a8171bc8b9a4e461b6d984ed1373739") depends_on("r@3.5.0:", type=("build", "run"), when="@0.6.2:") + depends_on("r@4.4.0:", type=("build", "run"), when="@2.0.3:") depends_on("r-ape", type=("build", "run"), when="@0.6.2:") depends_on("r-ggplot2", type=("build", "run"), when="@1.1.2:") depends_on("r-matrix", type=("build", "run"), when="@1.1.2:") diff --git a/var/spack/repos/builtin/packages/r-rsconnect/package.py b/var/spack/repos/builtin/packages/r-rsconnect/package.py index 2e5b56d586480f..bb7db9df32d842 100644 --- a/var/spack/repos/builtin/packages/r-rsconnect/package.py +++ b/var/spack/repos/builtin/packages/r-rsconnect/package.py @@ -17,6 +17,7 @@ class RRsconnect(RPackage): license("GPL-2.0-only") + version("1.3.1", sha256="47de8a832da493e2a1b3243fb42459a53eb193f75a1143348b7d8c7478cb5557") version("0.8.29", sha256="852899d2aaf90bcedf4d191a9e00c770e8ee4233235169fc97e6aa636de01c43") version("0.8.28", sha256="25b9a947772ada9593da5c48297b7a7dd0e11aa73fbb9a282631c75ec49616e0") version("0.8.27", sha256="0a44d5605fc7cd6855ea0235d662e4a323a24a2c214cc4f1696afbca3a8f169c") @@ -25,13 +26,19 @@ class RRsconnect(RPackage): version("0.8.17", sha256="64767a4d626395b7871375956a9f0455c3d64ff6e779633b0e554921d85da231") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-curl", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.0.0:") depends_on("r-digest", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.0.0:") depends_on("r-openssl", type=("build", "run")) depends_on("r-openssl@2.0.0:", type=("build", "run"), when="@0.8.26:") depends_on("r-packrat@0.6:", type=("build", "run"), when="@0.8.18:") depends_on("r-packrat@0.5:", type=("build", "run")) depends_on("r-packrat@0.6:", type=("build", "run"), when="@0.8.26:") + depends_on("r-pki", type=("build", "run"), when="@1.2.2:") + depends_on("r-renv@1.0.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rstudioapi@0.5:", type=("build", "run")) depends_on("r-yaml@2.1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rsnns/package.py b/var/spack/repos/builtin/packages/r-rsnns/package.py index 75c5dd094b63ff..a0323c1d768351 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -20,6 +20,7 @@ class RRsnns(RPackage): cran = "RSNNS" + version("0.4-17", sha256="424557d7326889e09e31e04d2a9b7224bed0bb4aa6f9e5433d7ce4fe04a35afc") version("0.4-15", sha256="4a4286444f50b28fb6294b8b49250fa6c43c8fddf2ee0550a3ae59a4212ec1b3") version("0.4-14", sha256="7f6262cb2b49b5d5979ccce9ded9cbb2c0b348fd7c9eabc1ea1d31c51a102c20") version("0.4-12", sha256="b18dfeda71573bc92c6888af72da407651bff7571967965fd3008f0d331743b9") diff --git a/var/spack/repos/builtin/packages/r-rspectra/package.py b/var/spack/repos/builtin/packages/r-rspectra/package.py index 76a264fd1cf995..68b56dff7d8747 100644 --- a/var/spack/repos/builtin/packages/r-rspectra/package.py +++ b/var/spack/repos/builtin/packages/r-rspectra/package.py @@ -22,6 +22,7 @@ class RRspectra(RPackage): cran = "RSpectra" + version("0.16-2", sha256="a2f149d79519fee79dabe1b174dfb847a916045315d5927a93cc6b005522aa7e") version("0.16-1", sha256="cba5d3403d6a7d0e27abf6279fbfea6e0d0fe36b28c688bbadb8eafb3841329a") version("0.16-0", sha256="aaf1cfc9ffe3a4c6684247899924e1c18306971dfef4bae1dc596a2fb42a64a9") version("0.15-0", sha256="1ad5698201007044a0420cb10b7c48e94312a8a1d22b9d946d5de1c6743969a9") diff --git a/var/spack/repos/builtin/packages/r-rsqlite/package.py b/var/spack/repos/builtin/packages/r-rsqlite/package.py index f81bdf06ac0704..2fe5dcc456480e 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -15,6 +15,7 @@ class RRsqlite(RPackage): cran = "RSQLite" + version("2.3.7", sha256="25e0572589e64264fe4e5d0495f5d85d977bacbb93a3fc631ede5b078db294ce") version("2.3.1", sha256="9ed23e160c401c14e41c40e9930f72697172b2c72933c2d2725a05e81e1f34ca") version("2.2.18", sha256="62196adb62ad8ec73ddce573e5391686e9359566e365b123ac4f299809944bea") version("2.2.14", sha256="2ae36a875ebc02497985b2ad9ddc6a5434f576e2ab25769580749d9e4f3b607c") @@ -30,6 +31,8 @@ class RRsqlite(RPackage): depends_on("r-blob@1.2.0:", type=("build", "run")) depends_on("r-dbi@1.0.0:", type=("build", "run")) depends_on("r-dbi@1.1.0:", type=("build", "run"), when="@2.2.10:") + depends_on("r-dbi@1.2.0:", type=("build", "run"), when="@2.3.5:") + depends_on("r-rlang", type=("build", "run"), when="@2.3.4:") depends_on("r-memoise", type=("build", "run")) depends_on("r-pkgconfig", type=("build", "run")) depends_on("r-plogr@0.2.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index 00da44c08d40ce..713ff0a2252655 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -23,6 +23,7 @@ class RRstan(RPackage): license("GPL-3.0-or-later") + version("2.32.6", sha256="3390d00191bbd3b0739dd19fe437b99a041a6b04be208877b48419d1348a1a70") version("2.21.8", sha256="b2d4edc315419037970c9fa2e8740b934966d88d40548152811f3d4a28475075") version("2.21.7", sha256="4495221310d390925b665c32e05ffabd3ae8857225bda65131a7ed2be41d6d45") version("2.21.5", sha256="86e4fe562d8ddcd0b02336f35a420fa8786dd21de7ca2bebb4ed6e9c252bb9ea") @@ -38,18 +39,29 @@ class RRstan(RPackage): depends_on("r@3.4.0:", type=("build", "run"), when="@2.18.1:") depends_on("r-stanheaders@2.18.1:", type=("build", "run")) depends_on("r-stanheaders@2.21.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-stanheaders@2.32.0:", type=("build", "run"), when="@2.26.23:") depends_on("r-ggplot2@2.0.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-ggplot2@3.3.5:", type=("build", "run"), when="@2.26.23:") depends_on("r-inline", type=("build", "run")) + depends_on("r-inline@0.3.19:", type=("build", "run"), when="@2.26.23:") depends_on("r-gridextra@2.0.0:", type=("build", "run")) + depends_on("r-gridextra@2.3:", type=("build", "run"), when="@2.26.23:") depends_on("r-rcpp@0.12.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@2.26.23:") depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@2.21.2:") + depends_on("r-rcppparallel@5.1.4:", type=("build", "run"), when="@2.26.23:") depends_on("r-loo@2.0.0:", type=("build", "run"), when="@2.18:") depends_on("r-loo@2.3.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-loo@2.4.1:", type=("build", "run"), when="@2.26.23:") depends_on("r-pkgbuild", type=("build", "run"), when="@2.18:") + depends_on("r-pkgbuild@1.2.0:", type=("build", "run"), when="@2.26.23:") + depends_on("r-quickjsr", type=("build", "run"), when="@2.26.23:") depends_on("r-rcppeigen@0.3.3.3.0:", type=("build", "run")) + depends_on("r-rcppeigen@0.3.4.0.0:", type=("build", "run"), when="@2.26.23:") depends_on("r-bh@1.69.0:", type=("build", "run")) depends_on("r-bh@1.72.0-2:", type=("build", "run"), when="@2.21.2:") + depends_on("r-bh@1.75.0-0:", type=("build", "run"), when="@2.26.23:") depends_on("gmake", type="build") depends_on("pandoc", type="build") diff --git a/var/spack/repos/builtin/packages/r-rstantools/package.py b/var/spack/repos/builtin/packages/r-rstantools/package.py index f2acce430cbe20..ab14cf382e075d 100644 --- a/var/spack/repos/builtin/packages/r-rstantools/package.py +++ b/var/spack/repos/builtin/packages/r-rstantools/package.py @@ -19,6 +19,7 @@ class RRstantools(RPackage): license("GPL-3.0-or-later") + version("2.4.0", sha256="bff72ca2f0352c6c5d2868823e286fdb73a6ead74508a4124cbcb222c83b4faa") version("2.3.1", sha256="82d4f2e884ffc894463bd37765606d5a9bef2ee631758840ec58636acdca6975") version("2.2.0", sha256="cb810baeb90c67668361b666c6862df9917aff6aaec63d2c3a485f28407c4eb7") version("2.1.1", sha256="c95b15de8ec577eeb24bb5206e7b685d882f88b5e6902efda924b7217f463d2d") diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index f581b5dd5c3363..3f56a5135e58e1 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -16,6 +16,7 @@ class RRstudioapi(RPackage): license("MIT") + version("0.16.0", sha256="74ffa867199e87a54386fbd26919233371f314f73d7338dd4e4695708fed4fe6") version("0.14", sha256="469d0987b1ad728a96c363a422fba712a5cebc8b11a5f7e953b4a671044dafc4") version("0.13", sha256="aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b") version("0.11", sha256="13e07fb7e2eba8cf1d885db2721901d676d219a1042d7ef5d166125e4905306b") diff --git a/var/spack/repos/builtin/packages/r-rtsne/package.py b/var/spack/repos/builtin/packages/r-rtsne/package.py index 3949660dff7d42..48d9e44a322350 100644 --- a/var/spack/repos/builtin/packages/r-rtsne/package.py +++ b/var/spack/repos/builtin/packages/r-rtsne/package.py @@ -15,6 +15,7 @@ class RRtsne(RPackage): cran = "Rtsne" + version("0.17", sha256="3aae6814d6c6d406785145f07374135652f2b26a58690dfd4bfbc8365dc5590b") version("0.16", sha256="52a05adc826c28212e97d11c54eba3fec45d14eb52039c0f47f62a8e338ffbd5") version("0.15", sha256="56376e4f0a382fad3d3d40e2cb0562224be5265b827622bcd235e8fc63df276c") version("0.13", sha256="1c3bffe3bd11733ee4fe01749c293669daafda1af2ec74f9158f6080625b999d") diff --git a/var/spack/repos/builtin/packages/r-runit/package.py b/var/spack/repos/builtin/packages/r-runit/package.py index 9c88a53ce58972..8de30e09b9e7ec 100644 --- a/var/spack/repos/builtin/packages/r-runit/package.py +++ b/var/spack/repos/builtin/packages/r-runit/package.py @@ -16,6 +16,7 @@ class RRunit(RPackage): license("GPL-2.0-only") + version("0.4.33", sha256="b2a4c5afc7ef9534dac5006f6ef1b2af68630bb73eb74ef70ec7ed53dae6cb5f") version("0.4.32", sha256="23a393059989000734898685d0d5509ece219879713eb09083f7707f167f81f1") depends_on("r@2.5.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-runjags/package.py b/var/spack/repos/builtin/packages/r-runjags/package.py index c9343dbf9f0668..0bb9196c2a5f2b 100644 --- a/var/spack/repos/builtin/packages/r-runjags/package.py +++ b/var/spack/repos/builtin/packages/r-runjags/package.py @@ -24,6 +24,7 @@ class RRunjags(RPackage): license("GPL-2.0-only") + version("2.2.2-4", sha256="6f656e4d0620c0806e596ddb4bfec3934534ec17c02da699fcbfd6720a6f424f") version("2.2.1-7", sha256="e81fdb15e59cdceda125d6ae7cf0cde93361ba80b123d51afd1ecdc993f25016") version("2.2.0-3", sha256="1b1fc0b0cfecf9ecdecc3abcba804cdc114b3c5352d5cc801602deeca90db528") version("2.2.0-2", sha256="e5dfeb83d36faf19ebe64429f6db64aedecf3c9a040fd5bf9c0200914bf5039a") diff --git a/var/spack/repos/builtin/packages/r-rvest/package.py b/var/spack/repos/builtin/packages/r-rvest/package.py index 0e3cb2b544c956..a1104d8d0feb26 100644 --- a/var/spack/repos/builtin/packages/r-rvest/package.py +++ b/var/spack/repos/builtin/packages/r-rvest/package.py @@ -16,6 +16,7 @@ class RRvest(RPackage): license("MIT") + version("1.0.4", sha256="7d707c6b2994cf7b6c1d665bec872d2ef5c55f30e7c343c447a8a386a6049ca6") version("1.0.3", sha256="a465ef7391afaa3c26eebe8c61db02314ac04c4d8de5aa53f090716763d21c1e") version("1.0.2", sha256="89bb477e0944c80298a52ccf650db8f6377fd7ed3c1bc7034d000f695fdf05a4") version("0.3.6", sha256="6a2ee3a25d2d738031edbc1b5e2410f2a4538dfbb9705af145f9039504b902fa") @@ -26,15 +27,19 @@ class RRvest(RPackage): depends_on("r@3.0.1:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@0.3.3") depends_on("r@3.2:", type=("build", "run"), when="@0.3.4:") + depends_on("r@3.6:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli", type=("build", "run"), when="@1.0.3:") depends_on("r-glue", type=("build", "run"), when="@1.0.3:") depends_on("r-httr@0.5:", type=("build", "run")) depends_on("r-lifecycle@1.0.0:", type=("build", "run"), when="@1:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.0.4:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.3:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.4:") depends_on("r-selectr", type=("build", "run")) depends_on("r-tibble", type=("build", "run"), when="@1:") depends_on("r-xml2", type=("build", "run")) depends_on("r-xml2@1.3:", type=("build", "run"), when="@1:") - depends_on("r-withr", type=("build", "run"), when="@1.0.3:") + + depends_on("r-withr", type=("build", "run"), when="@1.0.3") diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index 4d32899d5de6a2..5fc9d735d7f169 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -17,6 +17,7 @@ class RRzmq(RPackage): license("GPL-3.0-only") + version("0.9.13", sha256="8d603543b23a0b78352b4995c90c03d00686fef1d7a25004b66690191fb463f1") version("0.9.8", sha256="815a7eb502b1da3a84246b2dfb6594ca3f241a8675783e6bcdbbf9c952ec1c53") version("0.9.7", sha256="5f47b67b75fd4a230780406f7a55a3708ce8c014cff755a809a6bfa1a6925a45") version("0.9.6", sha256="80a3fc6eb6f7851224c4cd5e219ca4db0286551ad429359d4df853ccb9234316") diff --git a/var/spack/repos/builtin/packages/r-s2/package.py b/var/spack/repos/builtin/packages/r-s2/package.py index bf4d851e0854de..5555d6062d6f21 100644 --- a/var/spack/repos/builtin/packages/r-s2/package.py +++ b/var/spack/repos/builtin/packages/r-s2/package.py @@ -20,6 +20,7 @@ class RS2(RPackage): license("Apache-2.0") + version("1.1.7", sha256="30762c7150dd72e2f4a3d50e64b8b73b2d59b73275687ba3eea7a6e07f786878") version("1.1.2", sha256="8fb237531c6f4aa5b78fbe36d4fd15bfe852c1308fed58b04b3dae2bb73c0b57") version("1.1.0", sha256="e3aae968538fe80db5b3325474dd9d8ff7f0452b6c606d049a3cac72732ac416") version("1.0.7", sha256="2010c1c6ae29938ec9cd153a8b2c06a333ea4d647932369b2fc7d0c68d6d9e3f") diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 808fae8fb70309..a4729a707dbb1a 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -27,6 +27,7 @@ class RSandwich(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("3.1-0", sha256="96b0e105ee50391a1fd286e9556ba6669f08565fa30788b1a21bc861b0a023fa") version("3.0-2", sha256="6e30b6b554eb19430a60c45a8132fb7918ddb0013577bf6a62caeb163bdfe2b4") version("3.0-1", sha256="f6584b7084f3223bbc0c4722f53280496be73849747819b0cb4e8f3910284a89") version("3.0-0", sha256="828fe53b5e09db5015efd529b2db4dcd40251bce110fea7b0b219fa9ac36d529") diff --git a/var/spack/repos/builtin/packages/r-sass/package.py b/var/spack/repos/builtin/packages/r-sass/package.py index 4ac8e74774c482..e6a3fbd54743a2 100644 --- a/var/spack/repos/builtin/packages/r-sass/package.py +++ b/var/spack/repos/builtin/packages/r-sass/package.py @@ -18,12 +18,14 @@ class RSass(RPackage): license("MIT") + version("0.4.9", sha256="e133049aad7964e0f6150257e1470b3748f36029322265ee797b8caf7517d4d2") version("0.4.5", sha256="eba161d982d2db108c8c0b61ec6b41a20d3adec430c7cc39537ab388c1007a90") version("0.4.2", sha256="b409049d0de9fae853f46c19d353226c8e9244ce847bdada033d8669fc2c9646") version("0.4.1", sha256="850fcb6bd49085d5afd25ac18da0744234385baf1f13d8c0a320f4da2de608bb") version("0.4.0", sha256="7d06ca15239142a49e88bb3be494515abdd8c75f00f3f1b0ee7bccb55019bc2b") depends_on("r-fs", type=("build", "run")) + depends_on("r-fs@1.2.4:", type=("build", "run"), when="@0.4.7:") depends_on("r-rlang@0.4.10:", type=("build", "run")) depends_on("r-htmltools@0.5.1:", type=("build", "run")) depends_on("r-r6", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-satellite/package.py b/var/spack/repos/builtin/packages/r-satellite/package.py index c5bb5a77ba2f5e..e3ece86c2a4498 100644 --- a/var/spack/repos/builtin/packages/r-satellite/package.py +++ b/var/spack/repos/builtin/packages/r-satellite/package.py @@ -25,6 +25,7 @@ class RSatellite(RPackage): license("MIT") + version("1.0.5", sha256="3e4c382f905eb0b2d84f03423af2960854e5cf94905a373c6ba3f41a2b72a1ad") version("1.0.4", sha256="99e79577a70489930c32da46ac26453af53e21c2d3a99f51fbf1f55f2d80dc7c") version("1.0.2", sha256="6447476bd31216e5abe504221e465677954d07419b4174ab4f4e4f7a197969c5") diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index 38e64733b39619..02ca38d3bb6f2c 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -28,7 +28,10 @@ class RScales(RPackage): depends_on("r@2.13:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@1.0.0:") depends_on("r@3.2:", type=("build", "run"), when="@1.1.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.3.0:") + depends_on("r-cli", type=("build", "run"), when="@1.3.0:") depends_on("r-farver@2.0.3:", type=("build", "run"), when="@1.1.1:") + depends_on("r-glue", type=("build", "run"), when="@1.3.0:") depends_on("r-labeling", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run"), when="@1.1.1:") depends_on("r-munsell@0.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-scattermore/package.py b/var/spack/repos/builtin/packages/r-scattermore/package.py index 84f03f3dcf8f43..10c0964bdd2a68 100644 --- a/var/spack/repos/builtin/packages/r-scattermore/package.py +++ b/var/spack/repos/builtin/packages/r-scattermore/package.py @@ -16,6 +16,7 @@ class RScattermore(RPackage): license("GPL-3.0-or-later") + version("1.2", sha256="5534a87b0bdd1375f0fbffc1a5c980ad64e33a108435a67469b8324b580602d1") version("0.8", sha256="dbdd73d8261cb063464bb29d5c17733b7e87bc50a19948bc80439e19f2a9f8e5") version("0.7", sha256="f36280197b8476314d6ce81a51c4ae737180b180204043d2937bc25bf3a5dfa2") diff --git a/var/spack/repos/builtin/packages/r-scatterpie/package.py b/var/spack/repos/builtin/packages/r-scatterpie/package.py index 6fdd0ba32c9a13..106a5a1eced932 100644 --- a/var/spack/repos/builtin/packages/r-scatterpie/package.py +++ b/var/spack/repos/builtin/packages/r-scatterpie/package.py @@ -15,12 +15,14 @@ class RScatterpie(RPackage): license("Artistic-2.0") + version("0.2.3", sha256="704f1072ff934729aefdd659e5c81e62b59f5ae94dc36a1e1f52085dce896447") version("0.1.9", sha256="517fd6cc297aa33f0fbb2643e35ca41dc971166ea2e8ed78460bd4ef7a77a687") version("0.1.8", sha256="a6ccc63a8be63fa113704cf5d4893c1ec1b75d3081ab971bd70e650e708872a0") version("0.1.7", sha256="3f7807519cfe135066ca79c8d8a09b59da9aa6d8aaee5e9aff40cca3d0bebade") version("0.1.5", sha256="e13237b7effc302acafc1c9b520b4904e55875f4a3b804f653eed2940ca08840") depends_on("r@3.4.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@0.2.0:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-ggforce", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index f9f96803ee60b3..a7de5b624cf226 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -15,6 +15,7 @@ class RScatterplot3d(RPackage): license("GPL-2.0-only") + version("0.3-44", sha256="1c9c08348c3ed925f59df40cb73accc9e1a169ccfb1e8571f105f40fa98e6ec2") version("0.3-43", sha256="90d7bfb535b76008768306ea9209adfb48e0e07f36eabbb59ab6ddb6522f16a5") version("0.3-42", sha256="a9fedde70e1a846c4dcafbff20f115425206d507896d12c2b21ff052556c5216") version("0.3-41", sha256="4c8326b70a3b2d37126ca806771d71e5e9fe1201cfbe5b0d5a0a83c3d2c75d94") diff --git a/var/spack/repos/builtin/packages/r-sctransform/package.py b/var/spack/repos/builtin/packages/r-sctransform/package.py index 345c4d9a2aa82d..5444c52fc84bf4 100644 --- a/var/spack/repos/builtin/packages/r-sctransform/package.py +++ b/var/spack/repos/builtin/packages/r-sctransform/package.py @@ -20,6 +20,7 @@ class RSctransform(RPackage): license("GPL-3.0-only OR custom") + version("0.4.1", sha256="5f6be7f8be543e4c32c8007207b603a750881459370b7bb5afd63e8c8fabf171") version("0.3.5", sha256="c08e56df05d64ed04ee53eb9e1d4d321da8aff945e36d56db1d5ceb1cd7e6e0b") version("0.3.3", sha256="83af125c40f211e1ddae5098f88766aea1453c02ae98486081f3efadb3620b2b") version("0.3.2", sha256="5dbb0a045e514c19f51bbe11c2dba0b72dca1942d6eb044c36b0538b443475dc") @@ -28,6 +29,7 @@ class RSctransform(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.1.0:", type=("build", "run"), when="@0.3.2:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.3.3:") + depends_on("r@3.6.0:", type=("build", "run"), when="@0.4.0:") depends_on("r-dplyr", type=("build", "run"), when="@0.3.3:") depends_on("r-magrittr", type=("build", "run"), when="@0.3.3:") depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index 71a2c7cf9910ad..b546891122c302 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -22,6 +22,7 @@ class RSegmented(RPackage): license("GPL-2.0-or-later") + version("2.1-1", sha256="6723b0114b1142a7587f712d7a58ce0bebfb53864b84fa1e5d9d7824b17903dd") version("1.6-4", sha256="472c08ae3eb1c4e784aba45f3e745b0e946bef77c26fbb9f103fd35e1a349191") version("1.6-1", sha256="f609ca311c8ca45a7b0776b47d9df06aa175c4f17f8e7e9b33c64902ee00d56f") version("1.6-0", sha256="6baf7f0a4f5d37b945312d28fcbca47cc3c171d097c43a28cf7ffc998a4ce569") @@ -33,5 +34,6 @@ class RSegmented(RPackage): version("0.5-2.2", sha256="3aa7136370dd77911ba8e061b5215560d120bc71f355eeadc0856389dfecb2f1") version("0.5-1.4", sha256="b1dc5f79ccc076c2943b15fe4f339368afa241797b7e80c91b62132cfa66809c") + depends_on("r@3.5.0:", type=("build", "run"), when="@2.0-3:") depends_on("r-mass", type=("build", "run"), when="@1.4-0:") depends_on("r-nlme", type=("build", "run"), when="@1.6-0:") diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index dd12e8fa2aac44..7bf921e774099e 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -18,6 +18,7 @@ class RSeqinr(RPackage): license("GPL-2.0-or-later") + version("4.2-36", sha256="931a62a091a7aaaa5efadb1fe85f29e861e2506b75710ba3a6be9b58cb14b225") version("4.2-30", sha256="faf8fe533867eeef57fddfa6592e19d5984954d0670c6c7dbeab6411d55fee4b") version("4.2-16", sha256="c4f3253832fc255197bdce7b4dd381db606c6b787d2e888751b4963acf3a4032") version("4.2-8", sha256="584b34e9dec0320cef02096eb356a0f6115bbd24356cf62e67356963e9d5e9f7") diff --git a/var/spack/repos/builtin/packages/r-servr/package.py b/var/spack/repos/builtin/packages/r-servr/package.py index 9766f0b22b2441..cf8467a1a0f6af 100644 --- a/var/spack/repos/builtin/packages/r-servr/package.py +++ b/var/spack/repos/builtin/packages/r-servr/package.py @@ -17,6 +17,7 @@ class RServr(RPackage): license("GPL-2.0-or-later") + version("0.30", sha256="43f920161408871a042462b7c3353149a608941253541a19a9ce3408f9882d40") version("0.26", sha256="7588d7e00d5b2f77b0737f164f3d7b0ba7b1e8b60c0372a1d6452096e2d2031c") version("0.25", sha256="e6ae0d4c09e9037268b1c291c36c93ba0a74c31fe2fcb1f0652b2ae9fca5e73c") version("0.24", sha256="d94e1d31802ce6bbab7a5838ff94cbca8cd998237d834ff25fedf7514f41a087") @@ -26,4 +27,5 @@ class RServr(RPackage): depends_on("r-mime@0.2:", type=("build", "run")) depends_on("r-httpuv@1.5.2:", type=("build", "run")) depends_on("r-xfun", type=("build", "run")) + depends_on("r-xfun@0.42:", type=("build", "run"), when="@0.29:") depends_on("r-jsonlite", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-sets/package.py b/var/spack/repos/builtin/packages/r-sets/package.py index 308610786d0004..77484ffb9274e1 100644 --- a/var/spack/repos/builtin/packages/r-sets/package.py +++ b/var/spack/repos/builtin/packages/r-sets/package.py @@ -19,6 +19,7 @@ class RSets(RPackage): license("GPL-2.0-only") + version("1.0-25", sha256="5ca469218f9679f2372e33e56f781b52947ccbedf730b91a2d3a572993c024f4") version("1.0-24", sha256="e75733f5c9418eb09fb950a4a94ccf84ddd88231c61ee80d02b7f0917debcac9") version("1.0-23", sha256="e5b6bc52060421c572d7f2d99b25909a38eacabd5344a47e1cdb2662c62d690b") version("1.0-22", sha256="6fbf9aa6b0113a58e04f803ab35593feabb0fb55d486d54afb59e027008f9ec6") @@ -53,4 +54,4 @@ class RSets(RPackage): version("0.1", sha256="18dda6c9d526a2f41f2b49a472fb27a7f1bb9ce6ea137b8963e8ad6c378825d0") depends_on("r@2.6:", type=("build", "run"), when="@0.1:") - depends_on("r@2.7:", type=("build", "run"), when="@0.1-2:") + depends_on("r@2.7.0:", type=("build", "run"), when="@0.1-2:") diff --git a/var/spack/repos/builtin/packages/r-seurat/package.py b/var/spack/repos/builtin/packages/r-seurat/package.py index f8483751fccf5c..0af2d89f458776 100644 --- a/var/spack/repos/builtin/packages/r-seurat/package.py +++ b/var/spack/repos/builtin/packages/r-seurat/package.py @@ -19,6 +19,7 @@ class RSeurat(RPackage): cran = "Seurat" + version("5.1.0", sha256="adcfb43d7a8cc55eaa7a0954a082ac95e14059a82901913379bfec115e224d59") version("4.3.0", sha256="7ebacb3b86f74279de60b597f9a6e728f0668719811b0dca3425d21762fff97c") version("4.2.1", sha256="410238b6ca147451b43800a6e49c132fa5f6aacfe6b93b39a1e4d61257a9e35e") version("4.2.0", sha256="22a3d22a9ba255c4db5b37339b183fdfb91e2d37a8b8d58a9ff45b1bc414ebef") @@ -37,9 +38,11 @@ class RSeurat(RPackage): depends_on("r@4.0.0:", type=("build", "run"), when="@4.1.0:") depends_on("r-cluster", type=("build", "run"), when="@2.3.0:") depends_on("r-cowplot", type=("build", "run")) + depends_on("r-fastdummies", type=("build", "run"), when="@5.0.0:") depends_on("r-fitdistrplus", type=("build", "run"), when="@2.3.0:") depends_on("r-future", type=("build", "run"), when="@3.0.0:") depends_on("r-future-apply", type=("build", "run"), when="@3.0.0:") + depends_on("r-generics@0.1.3:", type=("build", "run"), when="@5.0.0:") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@3.2.3:") depends_on("r-ggrepel", type=("build", "run"), when="@3.0.0:") @@ -51,6 +54,7 @@ class RSeurat(RPackage): depends_on("r-jsonlite", type=("build", "run"), when="@3.2.3:") depends_on("r-kernsmooth", type=("build", "run"), when="@3.0.0:") depends_on("r-leiden@0.3.1:", type=("build", "run"), when="@3.1.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@5.0.0:") depends_on("r-lmtest", type=("build", "run"), when="@2.3.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-matrix@1.2-14:", type=("build", "run")) @@ -63,27 +67,34 @@ class RSeurat(RPackage): depends_on("r-plotly@4.9.0:", type=("build", "run"), when="@3.2.3:") depends_on("r-png", type=("build", "run"), when="@2.3.0:") depends_on("r-progressr", type=("build", "run"), when="@4.3.0:") + depends_on("r-purrr", type=("build", "run"), when="@4.4.0:") depends_on("r-rann", type=("build", "run"), when="@2.3.0:") depends_on("r-rcolorbrewer", type=("build", "run")) depends_on("r-rcpp@0.11.0:", type=("build", "run")) depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@4.1.0:") depends_on("r-rcppannoy", type=("build", "run"), when="@3.1.0:") depends_on("r-rcppannoy@0.0.18:", type=("build", "run"), when="@4.1.0:") + depends_on("r-rcpphnsw", type=("build", "run"), when="@5.0.0:") depends_on("r-reticulate", type=("build", "run"), when="@2.3.1:") depends_on("r-rlang", type=("build", "run"), when="@3.0.0:") depends_on("r-rocr", type=("build", "run")) + depends_on("r-rspectra", type=("build", "run"), when="@5.0.0:") depends_on("r-rtsne", type=("build", "run")) depends_on("r-scales", type=("build", "run"), when="@3.0.0:") depends_on("r-scattermore@0.7:", type=("build", "run"), when="@3.2.3:") + depends_on("r-scattermore@1.2:", type=("build", "run"), when="@4.4.0:") depends_on("r-sctransform@0.2.0:", type=("build", "run"), when="@3.0.0:") depends_on("r-sctransform@0.3.1:", type=("build", "run"), when="@3.2.3:") depends_on("r-sctransform@0.3.3:", type=("build", "run"), when="@4.1.0:") depends_on("r-sctransform@0.3.4:", type=("build", "run"), when="@4.2.0:") depends_on("r-sctransform@0.3.5:", type=("build", "run"), when="@4.2.1:") + depends_on("r-sctransform@0.4.0:", type=("build", "run"), when="@4.4.0:") + depends_on("r-sctransform@0.4.1:", type=("build", "run"), when="@5.0.0:") depends_on("r-seuratobject@4.0.4:", type=("build", "run"), when="@4.1.0:") depends_on("r-seuratobject@4.1.0:", type=("build", "run"), when="@4.1.1:") depends_on("r-seuratobject@4.1.2:", type=("build", "run"), when="@4.2.0:") depends_on("r-seuratobject@4.1.3:", type=("build", "run"), when="@4.2.1:") + depends_on("r-seuratobject@5.0.2:", type=("build", "run"), when="@5.0.0:") depends_on("r-shiny", type=("build", "run"), when="@3.2.3:") depends_on("r-spatstat-explore", type=("build", "run"), when="@4.2.1:") depends_on("r-spatstat-geom", type=("build", "run"), when="@4.1.0:") diff --git a/var/spack/repos/builtin/packages/r-seuratobject/package.py b/var/spack/repos/builtin/packages/r-seuratobject/package.py index 74d32ae36f8f4c..8240e6ccaaa7c1 100644 --- a/var/spack/repos/builtin/packages/r-seuratobject/package.py +++ b/var/spack/repos/builtin/packages/r-seuratobject/package.py @@ -20,20 +20,26 @@ class RSeuratobject(RPackage): cran = "SeuratObject" + version("5.0.2", sha256="ded30d21f445b7e353fe4a0c4954d45ad19fbe162615d9addf6732f9318ba0cf") version("4.1.3", sha256="585d2754f6165a367f0f458523f0a25d4d4160c929c931b27c5603cc6bd986d3") version("4.1.2", sha256="6a5945f501b573dbe44a15e7d969e63fd5be0c4f8e9d716b71ca29f695236d0d") version("4.1.0", sha256="9ca406cb3bd95c588e1a81c5383e3173a446cc0667142b139ca32685b4b20a05") version("4.0.4", sha256="585261b7d2045193accf817a29e2e3356e731f57c554bed37d232fa49784088c") depends_on("r@4.0.0:", type=("build", "run")) + depends_on("r@4.1.0:", when="@5.0.2:", type=("build", "run")) depends_on("r-future", type=("build", "run"), when="@4.1.0:") depends_on("r-future-apply", type=("build", "run"), when="@4.1.0:") + depends_on("r-generics", when="@5:", type=("build", "run")) + depends_on("r-lifecycle", when="@5:", type=("build", "run")) depends_on("r-matrix@1.3-3:", type=("build", "run")) depends_on("r-matrix@1.5-0:", type=("build", "run"), when="@4.1.2:") + depends_on("r-matrix@1.6-4:", when="@5.0.2:", type=("build", "run")) depends_on("r-progressr", type=("build", "run"), when="@4.1.0:") depends_on("r-rcpp@1.0.5:", type=("build", "run")) depends_on("r-sp", type=("build", "run"), when="@4.1.0:") depends_on("r-sp@1.5-0:", type=("build", "run"), when="@4.1.2:") + depends_on("r-spam", when="@5:", type=("build", "run")) depends_on("r-rlang@0.4.7:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-sf/package.py b/var/spack/repos/builtin/packages/r-sf/package.py index 8a98b2c2d69232..d122e494ef8ea4 100644 --- a/var/spack/repos/builtin/packages/r-sf/package.py +++ b/var/spack/repos/builtin/packages/r-sf/package.py @@ -19,6 +19,7 @@ class RSf(RPackage): license("GPL-2.0-only OR MIT") + version("1.0-16", sha256="e96e191011cdf2a073c773bdfc50ffd4a5d80f1da0ba1aa05db8015da45a9987") version("1.0-12", sha256="3778ebf58d824b1dfa6297ca8363714d5d85eda04c55ab2bf39597cac1d91287") version("1.0-9", sha256="85c0c71a0a64750281e79aa96e36d13e6285927008b2d37d699e52aba7d8013b") version("1.0-8", sha256="3ddc7090e79d6b5e3fad69e01254677ab5ec86a0b25e7e73493c8eac0ea98732") diff --git a/var/spack/repos/builtin/packages/r-sfheaders/package.py b/var/spack/repos/builtin/packages/r-sfheaders/package.py index 46d0172e3fbb24..12300042f5f804 100644 --- a/var/spack/repos/builtin/packages/r-sfheaders/package.py +++ b/var/spack/repos/builtin/packages/r-sfheaders/package.py @@ -17,11 +17,13 @@ class RSfheaders(RPackage): license("MIT") + version("0.4.4", sha256="f65ffe67b1d07beb6904b8960c66be684f5526b4d6450ab46c630c77e9b9bd07") version("0.4.2", sha256="ed9fb934c537fb6f126886f8e5997727de856e32fc3d38911b61a3a83faa7b2c") version("0.4.0", sha256="86bcd61018a0491fc8a1e7fb0422c918296287b82be299a79ccee8fcb515e045") depends_on("r-geometries@0.2.0:", type=("build", "run")) depends_on("r-geometries@0.2.2:", type=("build", "run"), when="@0.4.2:") + depends_on("r-geometries@0.2.4:", type=("build", "run"), when="@0.4.4:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcpp@1.0.10:", type=("build", "run"), when="@0.4.2:") depends_on("r@3.0.2:", type=("build", "run"), when="@0.4.2:") diff --git a/var/spack/repos/builtin/packages/r-sfsmisc/package.py b/var/spack/repos/builtin/packages/r-sfsmisc/package.py index e024fa2f8be048..6c128a2ad1a8ec 100644 --- a/var/spack/repos/builtin/packages/r-sfsmisc/package.py +++ b/var/spack/repos/builtin/packages/r-sfsmisc/package.py @@ -23,6 +23,7 @@ class RSfsmisc(RPackage): license("GPL-2.0-or-later") + version("1.1-19", sha256="869931dd35d2e18cf2f960b86da2638b7a03c92288c6d7a736a10fa5585cf23b") version("1.1-15", sha256="4afa42cf83a287f62cac21741fc0559dee9dbd69dee59a740defce9a0e7c81e6") version("1.1-13", sha256="a81710357de2dcdaf00d9fa30a29cde0dd83616edc358452fd6105ea88f34218") version("1.1-12", sha256="9b12184a28fff87cacd0c3602d0cf63acb4d0f3049ad3a6ff16177f6df350782") diff --git a/var/spack/repos/builtin/packages/r-shadowtext/package.py b/var/spack/repos/builtin/packages/r-shadowtext/package.py index f7f9eefa0a5bfc..7d5a0ba9979ff0 100644 --- a/var/spack/repos/builtin/packages/r-shadowtext/package.py +++ b/var/spack/repos/builtin/packages/r-shadowtext/package.py @@ -16,6 +16,7 @@ class RShadowtext(RPackage): license("Artistic-2.0") + version("0.1.4", sha256="87d0bea90e0090dd40f7cd8c380d185a9d4112a32a729d31859eaeca0cd46ee8") version("0.1.2", sha256="253c4e737dbb302aa0729e5074e84cbfde2a73bfd7a0fd2c74b557cb728bae7d") version("0.1.1", sha256="eb06581d7ed06c963eee47548932688fd48eba70b3ebd2a7b41a6501d6e00006") version("0.0.7", sha256="6e32b1dfd3d4816803848b876666185258b888286ec3d3e8500499ec3eba31e8") diff --git a/var/spack/repos/builtin/packages/r-shape/package.py b/var/spack/repos/builtin/packages/r-shape/package.py index 338cebd9601a7f..cb9f17c6b992e7 100644 --- a/var/spack/repos/builtin/packages/r-shape/package.py +++ b/var/spack/repos/builtin/packages/r-shape/package.py @@ -16,10 +16,11 @@ class RShape(RPackage): license("GPL-3.0-or-later") + version("1.4.6.1", sha256="43f9bd0f997fd6cf1838efd8b2509c9a6396513f4e54a20360481634affd22a4") version("1.4.6", sha256="b9103e5ed05c223c8147dbe3b87a0d73184697343634a353a2ae722f7ace0b7b") version("1.4.5", sha256="094a79b8f42226189227fd7af71868e42106caa25a4d7f80a26977e8bc84189f") version("1.4.4", sha256="f4cb1b7d7c84cf08d2fa97f712ea7eb53ed5fa16e5c7293b820bceabea984d41") version("1.4.3", sha256="720f6ca9c70a39a3900af9d074bff864b18ac58013b21d48b779047481b93ded") version("1.4.2", sha256="c6c08ba9cc2e90e5c9d3d5223529b57061a041f637886ad7665b9fa27465637a") - depends_on("r@2.0.1:", type=("build", "run")) + depends_on("r@2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index 91acdf5b46587f..1cc0eb3e3dab59 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -18,6 +18,7 @@ class RShiny(RPackage): license("GPL-3.0-only OR custom") + version("1.9.1", sha256="854b6a214f127d652de2e0e02d675fd53209b058c11911f56f8d41382ba654e3") version("1.8.1.1", sha256="a38d5fb5d750e2c2091ce9101f138c1f9bc7009bbb195227a3519c5d97e36753") version("1.7.4", sha256="bbfcdd7375013b8f59248b3f3f4e752acd445feb25179f3f7f65cd69614da4b5") version("1.7.3", sha256="b8ca9a39fa69ea9b270a7e9037198d95122c79bd493b865d909d343dd3523ada") @@ -57,7 +58,9 @@ class RShiny(RPackage): depends_on("r-commonmark@1.7:", type=("build", "run"), when="@1.5.0:") depends_on("r-glue@1.3.2:", type=("build", "run"), when="@1.5.0:") depends_on("r-bslib@0.3.0:", type=("build", "run"), when="@1.7.1:") + depends_on("r-bslib@0.6.0:", type=("build", "run"), when="@1.9.0:") depends_on("r-cachem", type=("build", "run"), when="@1.7.1:") + depends_on("r-cachem@1.1.0:", type=("build", "run"), when="@1.9.0:") depends_on("r-lifecycle@0.2.0:", type=("build", "run"), when="@1.7.1:") depends_on("r-digest", type=("build", "run"), when="@:1.5.0") diff --git a/var/spack/repos/builtin/packages/r-signac/package.py b/var/spack/repos/builtin/packages/r-signac/package.py index 0188ca933440a3..26001125b652f9 100644 --- a/var/spack/repos/builtin/packages/r-signac/package.py +++ b/var/spack/repos/builtin/packages/r-signac/package.py @@ -18,11 +18,13 @@ class RSignac(RPackage): cran = "Signac" + version("1.14.0", sha256="e0aad9e2c27c148fdd376081c2de1e3db46b1835eac83ef41fe562e08363c59e") version("1.9.0", sha256="b8ff36427e5919fd420daa1f50cf8c71935293ee7f88560041acb993b5e3afa8") version("1.8.0", sha256="9c4b123f4d077111c7e6dd1659483ada984300c8e923672ca924e46fb6a1dd06") version("1.7.0", sha256="5e4456eeab29fa2df7f6236b050dec8cb9c073d7652a89ee5030a27f94e5e4bf") depends_on("r@4.0.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@1.14.0:") depends_on("r-genomeinfodb@1.29.3:", type=("build", "run")) depends_on("r-genomicranges", type=("build", "run")) depends_on("r-iranges", type=("build", "run")) @@ -30,11 +32,13 @@ class RSignac(RPackage): depends_on("r-rsamtools", type=("build", "run")) depends_on("r-s4vectors", type=("build", "run")) depends_on("r-seuratobject@4.0.0:", type=("build", "run")) + depends_on("r-seuratobject@5.0.2:", type=("build", "run"), when="@1.14.0:") depends_on("r-data-table", type=("build", "run")) depends_on("r-dplyr@1.0.0:", type=("build", "run")) depends_on("r-future", type=("build", "run")) depends_on("r-future-apply", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) + depends_on("r-rlang", type=("build", "run"), when="@1.10.0:") depends_on("r-irlba", type=("build", "run")) depends_on("r-pbapply", type=("build", "run")) depends_on("r-tidyr", type=("build", "run")) @@ -47,4 +51,5 @@ class RSignac(RPackage): depends_on("r-rcpp", type=("build", "run")) depends_on("r-tidyselect", type=("build", "run")) depends_on("r-vctrs", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.12.0:") depends_on("zlib-api") diff --git a/var/spack/repos/builtin/packages/r-sm/package.py b/var/spack/repos/builtin/packages/r-sm/package.py index 60879f612c79d4..c52d11a2db3a33 100644 --- a/var/spack/repos/builtin/packages/r-sm/package.py +++ b/var/spack/repos/builtin/packages/r-sm/package.py @@ -17,6 +17,7 @@ class RSm(RPackage): license("GPL-2.0-or-later") + version("2.2-6.0", sha256="27a6e3291a572c3d30f25982902ccde5299230061e5dc1a38fb52aaac2561d61") version("2.2-5.7.1", sha256="ea0cc32eb14f6c18beba0bede66ed37bc5341bd3f76c1a7ae56d7254693e1457") version("2.2-5.7", sha256="2607a2cafc68d7e99005daf99e36f4a66eaf569ebb6b7500e962642cf58be80f") version("2.2-5.6", sha256="b890cd7ebe8ed711ab4a3792c204c4ecbe9e6ca1fd5bbc3925eba5833a839c30") diff --git a/var/spack/repos/builtin/packages/r-snakecase/package.py b/var/spack/repos/builtin/packages/r-snakecase/package.py index fc895fbf5b0d25..4d06c77185d5c4 100644 --- a/var/spack/repos/builtin/packages/r-snakecase/package.py +++ b/var/spack/repos/builtin/packages/r-snakecase/package.py @@ -16,6 +16,7 @@ class RSnakecase(RPackage): license("GPL-3.0-only") + version("0.11.1", sha256="2a5f9791337ca42e392f23fb873eb44f74810583e9aa7c62fda2f28f9e750821") version("0.11.0", sha256="998420a58391ac85785e60bcdf6fd6927c82758ad2859a9a73a0e57299e8c1cf") depends_on("r@3.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-snowfall/package.py b/var/spack/repos/builtin/packages/r-snowfall/package.py index 0f5473d70d8d88..fb3b1b77c63138 100644 --- a/var/spack/repos/builtin/packages/r-snowfall/package.py +++ b/var/spack/repos/builtin/packages/r-snowfall/package.py @@ -19,6 +19,7 @@ class RSnowfall(RPackage): license("GPL-2.0-or-later") + version("1.84-6.3", sha256="2641932b01041e34b7afb1261f649755b4c8d6560080e0e2ee549ffdf3b8b143") version("1.84-6.2", sha256="9b467ab2b992455c6e1aeabe375c5694761fa1cf8aaf4f003ca47102b656353b") version("1.84-6.1", sha256="5c446df3a931e522a8b138cf1fb7ca5815cc82fcf486dbac964dcbc0690e248d") diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index b0c228fd6dc977..54483d6c2afb67 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -18,6 +18,7 @@ class RSp(RPackage): license("GPL-2.0-or-later") + version("2.1-4", sha256="e185e7fb61d2d7dbc50fd765a93e170fa778083a653588db1f5e99d019479f0a") version("1.6-0", sha256="f5977fbe80e7dee8e95d41fe0ef9d87c2c984422bb529ea5211fd38a13f9fcda") version("1.5-1", sha256="69b9eab481d389bbb736d2adcf50c180aca248c3ffc4ebda8ffe2accc5f229df") version("1.5-0", sha256="939a06adf78ec8de7a663d6ca5bba426780852b357773446b00cc298200ff81c") @@ -29,4 +30,6 @@ class RSp(RPackage): version("1.2-3", sha256="58b3a9e395ca664ee61b20b480be4eb61576daca44c3d3f6f9a943bb0155879a") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.2.0:", type=("build", "run"), when="@2.0-0:") + depends_on("r@3.5.0:", type=("build", "run"), when="@2.1-0:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spacetime/package.py b/var/spack/repos/builtin/packages/r-spacetime/package.py index e3c0310fcbff62..65dc4624032460 100644 --- a/var/spack/repos/builtin/packages/r-spacetime/package.py +++ b/var/spack/repos/builtin/packages/r-spacetime/package.py @@ -20,6 +20,7 @@ class RSpacetime(RPackage): license("GPL-2.0-or-later") + version("1.3-1", sha256="1942a51949e82d19a652fc09e61d738f8eca6ed992783cc1d0164313d71521cf") version("1.3-0", sha256="2e9902a5c6f355f0b8e23237cf3b1553f22d7d79493bdbdb99e49104b9ef541b") version("1.2-8", sha256="4297a027ab4cff32e41cec65aa7d92af66c7a885fd2322b010b0af9a14f24c59") version("1.2-6", sha256="8fd46606ed9589ffce19368d40004890f96e8fe77f13b546e6a2f8b9ced0dd81") diff --git a/var/spack/repos/builtin/packages/r-spades-core/package.py b/var/spack/repos/builtin/packages/r-spades-core/package.py index 4aacc1dd26cb16..d6b2158fa3dcf3 100644 --- a/var/spack/repos/builtin/packages/r-spades-core/package.py +++ b/var/spack/repos/builtin/packages/r-spades-core/package.py @@ -23,6 +23,7 @@ class RSpadesCore(RPackage): maintainers("dorton21") + version("2.1.0", sha256="aee1a3093dfe04210719a7ced12d522299845bbd794f7eb78308f3a5b613762b") version("1.1.0", sha256="67af4f3f153b75a0865fde2457c5d951c2f2184d07c557879b7a8c43a6e7ad66") version("1.0.10", sha256="05e20f7d9aeef9ba68e50e993ef3027b8c85afc5e3f83f5ecaee9d1a7873e379") version("1.0.9", sha256="1176a41a1af334388c1b16ff4ed9a6f30007bb5ed1fa14d798c59461042537dd") @@ -30,17 +31,26 @@ class RSpadesCore(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@1.0.10:") + depends_on("r@4.1:", type=("build", "run"), when="@2.0.2:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.4:") depends_on("r-quickplot@0.1.4:", type=("build", "run")) depends_on("r-reproducible@1.2.1.9007:", type=("build", "run")) depends_on("r-reproducible@1.2.7:", type=("build", "run"), when="@1.0.9:") depends_on("r-reproducible@1.2.9:", type=("build", "run"), when="@1.1.0:") - depends_on("r-crayon", type=("build", "run")) + depends_on("r-reproducible@2.1.0:", type=("build", "run"), when="@2.1.0:") + depends_on("r-cli", type=("build", "run"), when="@2.1.0:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-data-table@1.11.0:", type=("build", "run"), when="@1.0.9:") - depends_on("r-fastdigest", type=("build", "run")) + depends_on("r-fs", type=("build", "run"), when="@2.0.3:") depends_on("r-igraph@1.0.1:", type=("build", "run")) depends_on("r-lobstr", type=("build", "run"), when="@1.1.0:") + depends_on("r-quickplot@1.0.2:", type=("build", "run"), when="@2.1.0:") depends_on("r-qs@0.21.1:", type=("build", "run")) - depends_on("r-raster@2.5-8:", type=("build", "run")) depends_on("r-require@0.0.7:", type=("build", "run")) + depends_on("r-require@0.3.1:", type=("build", "run"), when="@2.0.2:") + depends_on("r-terra@1.7-46:", type=("build", "run"), when="@2.0.3:") depends_on("r-whisker", type=("build", "run")) + + depends_on("r-crayon", type=("build", "run"), when="@:2.0.5") + depends_on("r-fastdigest", type=("build", "run"), when="@:1.1.0") + depends_on("r-raster@2.5-8:", type=("build", "run"), when="@:1.1.0") diff --git a/var/spack/repos/builtin/packages/r-spades-tools/package.py b/var/spack/repos/builtin/packages/r-spades-tools/package.py index 809ad5f86d3453..a5427ce5a65e52 100644 --- a/var/spack/repos/builtin/packages/r-spades-tools/package.py +++ b/var/spack/repos/builtin/packages/r-spades-tools/package.py @@ -19,6 +19,7 @@ class RSpadesTools(RPackage): maintainers("dorton21") + version("2.0.7", sha256="f1c62cc76ff75119ae54e35be81d5819a282c547f77292e4f392599465e7b2cf") version("1.0.1", sha256="6b0d69c8737ff06e2cf312ff94b298b81f4c50af2efd498a124b99ed66a2be9a") version("1.0.0", sha256="1172b96ada7052fcaa3a113ed31eeb1b67dba70f40fa74cbb378c6e75e9235dc") version("0.3.10", sha256="ba4c075b534caaca413e2e97711b5475c2679d9546c8fee4a07fb2bb94d52c94") @@ -28,19 +29,24 @@ class RSpadesTools(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r@3.6:", type=("build", "run"), when="@0.3.9:") depends_on("r@4.0:", type=("build", "run"), when="@0.3.10:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.6:") depends_on("r-backports", type=("build", "run")) depends_on("r-checkmate@1.8.2:", type=("build", "run")) - depends_on("r-circstats@0.2-4:", type=("build", "run")) depends_on("r-data-table@1.10.4:", type=("build", "run")) - depends_on("r-fastmatch@1.1-0:", type=("build", "run")) depends_on("r-fpcompare@0.2.1:", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-quickplot", type=("build", "run")) - depends_on("r-raster@2.5-8:", type=("build", "run")) depends_on("r-rcpp@0.12.12:", type=("build", "run")) - depends_on("r-require", type=("build", "run"), when="@0.3.10:") - depends_on("r-rgeos", type=("build", "run")) - depends_on("r-sp@1.2-4:", type=("build", "run")) - + depends_on("r-reproducible@2.0.2:", type=("build", "run"), when="@2.0.0:") + depends_on("r-reproducible@2.0.5:", type=("build", "run"), when="@2.0.1:") + depends_on("r-reproducible@2.0.9:", type=("build", "run"), when="@2.0.5:") + depends_on("r-terra", type=("build", "run"), when="@2.0.0:") + + depends_on("r-circstats@0.2-4:", type=("build", "run"), when="@:1.0.1") + depends_on("r-fastmatch@1.1-0:", type=("build", "run"), when="@:1.0.1") + depends_on("r-magrittr", type=("build", "run"), when="@:1.0.1") + depends_on("r-quickplot", type=("build", "run"), when="@:1.0.1") + depends_on("r-raster@2.5-8:", type=("build", "run"), when="@:1.0.1") depends_on("r-reproducible@0.2.0:", type=("build", "run"), when="@:0.3.6") depends_on("r-reproducible@1.2.7:", type=("build", "run"), when="@0.3.9") + depends_on("r-require", type=("build", "run"), when="@0.3.10:1.0.1") + depends_on("r-rgeos", type=("build", "run"), when="@:1.0.1") + depends_on("r-sp@1.2-4:", type=("build", "run"), when="@:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-spades/package.py b/var/spack/repos/builtin/packages/r-spades/package.py index f7db62f71dfb7c..dd2f112cb063f9 100644 --- a/var/spack/repos/builtin/packages/r-spades/package.py +++ b/var/spack/repos/builtin/packages/r-spades/package.py @@ -26,6 +26,7 @@ class RSpades(RPackage): maintainers("dorton21") + version("2.0.11", sha256="a88e202d1fe6fa700dfc176018a07cc5dd9ac9a8d0695eb6bc507ace52b68a32") version("2.0.9", sha256="f68080318bc922c6d8c495e6d963acdbb24dc90a3e8013e3e2f894b40a584c85") version("2.0.8", sha256="2230704f700d07bda25a23ab5c6630a093c9ed2fe3c47ab6294eebaf1d86f03f") version("2.0.7", sha256="5b62e9d701aa178be57f22369a5d043c9793a1bd3dcd4acac18c5a6b906ed8a0") @@ -33,10 +34,15 @@ class RSpades(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@2.0.8:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.10:") depends_on("r-quickplot", type=("build", "run")) + depends_on("r-quickplot@1.0.2:", type=("build", "run"), when="@2.0.10:") depends_on("r-reproducible@1.2.1.9007:", type=("build", "run")) depends_on("r-reproducible@1.2.2:", type=("build", "run"), when="@2.0.9:") + depends_on("r-reproducible@2.0.10:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-core@1.0.4:", type=("build", "run")) + depends_on("r-spades-core@2.0.3:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-tools", type=("build", "run")) + depends_on("r-spades-tools@2.0.5:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-addins", type=("build", "run"), when="@:2.0.6") diff --git a/var/spack/repos/builtin/packages/r-spam/package.py b/var/spack/repos/builtin/packages/r-spam/package.py index 845a6147f30f12..6612bb66bb4474 100644 --- a/var/spack/repos/builtin/packages/r-spam/package.py +++ b/var/spack/repos/builtin/packages/r-spam/package.py @@ -21,6 +21,7 @@ class RSpam(RPackage): license("LGPL-2.0-only OR BSD-3-Clause") + version("2.10-0", sha256="719c86a23801ecf051ffd8291912ee3567af4010e74af470fbf09e274728ac79") version("2.9-1", sha256="c32e219279988b1bfc258aaf64f5a46efa558202848a9ae64946ffbe8b497ddb") version("2.8-0", sha256="d98177435b028d1c706d0197ea8132bfaffae6052c3ce6064a7f64178512d6aa") version("2.6-0", sha256="638fdd658e94f7544b46f6b6568b20a9f390bcd703aff572a3a5249fef66be5c") @@ -29,3 +30,4 @@ class RSpam(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@2.9-1:") depends_on("r-dotcall64", type=("build", "run")) + depends_on("r-rcpp@1.0.8.3:", type=("build", "run"), when="@2.10-0:") diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 0c9254fad8a8df..17b270cc03f44e 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -15,6 +15,7 @@ class RSparsem(RPackage): cran = "SparseM" + version("1.84-2", sha256="2580fdbb8679e76c92b9f0c5bd9bb503c4cb6a750ef6ae96595441690ce98665") version("1.81", sha256="bd838f381ace680fa38508ff70b3d83cb9ffa28ac1ab568509249bca53c34b33") version("1.78", sha256="d6b79ec881a10c91cb03dc23e6e783080ded9db4f2cb723755aa0d7d29a8b432") version("1.77", sha256="a9329fef14ae4fc646df1f4f6e57efb0211811599d015f7bc04c04285495d45c") diff --git a/var/spack/repos/builtin/packages/r-spatial/package.py b/var/spack/repos/builtin/packages/r-spatial/package.py index 401e685f9c5d54..5a2c17f3353288 100644 --- a/var/spack/repos/builtin/packages/r-spatial/package.py +++ b/var/spack/repos/builtin/packages/r-spatial/package.py @@ -15,6 +15,7 @@ class RSpatial(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-17", sha256="f1003ed8cff2a47169a4787c8be46e8c2c501cc06c8b1e5f97bf62507e5f5dd7") version("7.3-16", sha256="e46565a64c5ec148a77789867e5103746462a41de294539b230bad2a0e16e406") version("7.3-15", sha256="e5613be94d6f5c1f54813dadc96e4a86b3417dea28106cc90cb24dfd6c3c8cef") version("7.3-12", sha256="7639039ee7407bd088e1b253376b2cb4fcdf4cc9124d6b48e4119d5cda872d63") diff --git a/var/spack/repos/builtin/packages/r-spatialeco/package.py b/var/spack/repos/builtin/packages/r-spatialeco/package.py index 40b51335c87910..f71a8a26243ba6 100644 --- a/var/spack/repos/builtin/packages/r-spatialeco/package.py +++ b/var/spack/repos/builtin/packages/r-spatialeco/package.py @@ -19,6 +19,7 @@ class RSpatialeco(RPackage): cran = "spatialEco" + version("2.0-2", sha256="533b8e938df196609a6c85270c0bdc279287c5ee222de9e05ac745713a3ab57c") version("2.0-0", sha256="9a2384e875ec465d1a2ccd392acc90d4469eb62babd32bb90e30b27a921153f6") version("1.3-7", sha256="38688466d9a2a56675e2fe45cf69833a163133ad3afb6f95e9ac2e8eab221b7a") version("1.3-5", sha256="d4fb211124edf828333841c44a5af01165c53d89af460144214d81e3c13983c7") @@ -28,24 +29,25 @@ class RSpatialeco(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@1.3-7:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0-2:") depends_on("r-sf", type=("build", "run")) - depends_on("r-spatstat-explore", type=("build", "run"), when="@2.0-0:") depends_on("r-terra", type=("build", "run"), when="@2.0-0:") - depends_on("r-spatstat-geom", type=("build", "run"), when="@1.3-7:") - depends_on("r-spatstat-geom@3.0-3:", type=("build", "run"), when="@2.0-0:") - depends_on("r-spdep", type=("build", "run")) - depends_on("r-spatialpack@0.3:", type=("build", "run")) - depends_on("r-envstats", type=("build", "run")) - depends_on("r-mgcv", type=("build", "run")) - depends_on("r-yaimpute", type=("build", "run")) - depends_on("r-rms", type=("build", "run")) - depends_on("r-rann", type=("build", "run")) - depends_on("r-rcurl", type=("build", "run")) - depends_on("r-readr", type=("build", "run")) - depends_on("r-cluster", type=("build", "run")) - depends_on("r-ks", type=("build", "run"), when="@2.0-0:") - depends_on("r-mass", type=("build", "run")) + depends_on("r-spatstat-explore", type=("build", "run"), when="@2.0-0") + depends_on("r-spatstat-geom", type=("build", "run"), when="@1.3-7:2.0-0") + depends_on("r-spatstat-geom@3.0-3:", type=("build", "run"), when="@2.0-0") + depends_on("r-spdep", type=("build", "run"), when="@:2.0-0") + depends_on("r-spatialpack@0.3:", type=("build", "run"), when="@:2.0-0") + depends_on("r-envstats", type=("build", "run"), when="@:2.0-0") + depends_on("r-mgcv", type=("build", "run"), when="@:2.0-0") + depends_on("r-yaimpute", type=("build", "run"), when="@:2.0-0") + depends_on("r-rms", type=("build", "run"), when="@:2.0-0") + depends_on("r-rann", type=("build", "run"), when="@:2.0-0") + depends_on("r-rcurl", type=("build", "run"), when="@:2.0-0") + depends_on("r-readr", type=("build", "run"), when="@:2.0-0") + depends_on("r-cluster", type=("build", "run"), when="@:2.0-0") + depends_on("r-ks", type=("build", "run"), when="@2.0-0") + depends_on("r-mass", type=("build", "run"), when="@:2.0-0") depends_on("r-dplyr", type=("build", "run"), when="@:1.3-2") depends_on("r-exactextractr", type=("build", "run"), when="@:1.3-2") depends_on("r-maptools", type=("build", "run"), when="@:1.3-2") diff --git a/var/spack/repos/builtin/packages/r-spatialreg/package.py b/var/spack/repos/builtin/packages/r-spatialreg/package.py index 7f187dbf57c166..89f37bc51c79c2 100644 --- a/var/spack/repos/builtin/packages/r-spatialreg/package.py +++ b/var/spack/repos/builtin/packages/r-spatialreg/package.py @@ -35,6 +35,7 @@ class RSpatialreg(RPackage): license("GPL-2.0-only") + version("1.3-5", sha256="eefeaa2f22d3652a23c30c8ff81364f419634e466cdb0c2d9c7bcef9287b00c4") version("1.2-8", sha256="150cb77ca09800d93af7de37440072d59ac7e41acb45ab42fc1c0e59edd7f9de") version("1.2-6", sha256="9b384117a31ab5fe830325b3eacbec5eb9d40bf0e9ca3c75ea15ca6b78fbd41d") version("1.2-3", sha256="09e0e65f043975d5c1d4be99ef9f29cf0790e962dcde9b7e45a7027d268fce22") @@ -44,12 +45,15 @@ class RSpatialreg(RPackage): depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-spdata", type=("build", "run")) + depends_on("r-spdata@2.3.1:", type=("build", "run"), when="@1.3-4:") depends_on("r-matrix", type=("build", "run")) depends_on("r-sf", type=("build", "run"), when="@1.2-1:") depends_on("r-spdep", type=("build", "run")) - depends_on("r-expm", type=("build", "run")) + depends_on("r-spdep@1.3-1:", type=("build", "run"), when="@1.3-1:") + depends_on("r-expm", type=("build", "run"), when="@:1.2-10") depends_on("r-coda", type=("build", "run")) depends_on("r-mass", type=("build", "run")) + depends_on("r-multcomp", type=("build", "run"), when="@1.2-9:") depends_on("r-boot", type=("build", "run")) depends_on("r-learnbayes", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-data/package.py b/var/spack/repos/builtin/packages/r-spatstat-data/package.py index bcb503e91d9412..f043688b31ac7b 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-data/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-data/package.py @@ -13,6 +13,7 @@ class RSpatstatData(RPackage): cran = "spatstat.data" + version("3.1-2", sha256="9b9b416303b8040f723400f3dc454cda75cff1d958660767e7b824503b490b77") version("3.0-1", sha256="8eeb4b1de356e9cef42f58b5e0fc7ced2a476a1306e09395ba97253b22dd5300") version("3.0-0", sha256="cff9058a88489020a4a05b9576cd452f37fa9b42084873c474d06931f5187057") version("2.2-0", sha256="d3943bb4f6509d60bf68e79ce4533c5ec5261f411da6b0ef5238c124fc37c3e5") @@ -27,4 +28,5 @@ class RSpatstatData(RPackage): depends_on("r-spatstat-utils@2.1-0:", type=("build", "run"), when="@2.1-2:") depends_on("r-spatstat-utils@3.0-0:", type=("build", "run"), when="@3.0-0:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-1:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-2:") depends_on("r-matrix", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-explore/package.py b/var/spack/repos/builtin/packages/r-spatstat-explore/package.py index 373c33f4255dfe..292ba6b28eac07 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-explore/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-explore/package.py @@ -25,19 +25,28 @@ class RSpatstatExplore(RPackage): cran = "spatstat.explore" + version("3.3-2", sha256="a24827d24a86f2f20f8dcbbb5f57f5ab43345fa346c572099b84d867e7bf85ed") version("3.1-0", sha256="87ef4882652db3b834214bfc776dd7d23d931a9227de12f19722aeb1029d086e") version("3.0-3", sha256="137444a46d26d88241336feece63ed7b006a9328cfe3861d4b8ab7b4bed963a7") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run")) + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@:") + depends_on("r-spatstat-data@3.1-2:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-geom@3.0:", type=("build", "run")) depends_on("r-spatstat-geom@3.0-5:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-geom@3.2-9:", type=("build", "run"), when="@:") + depends_on("r-spatstat-geom@3.3-2:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-random@3.0:", type=("build", "run")) depends_on("r-spatstat-random@3.1:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-random@3.3-1:", type=("build", "run"), when="@3.3-2:") depends_on("r-nlme", type=("build", "run")) + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-utils@3.0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.1-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-sparse@3.0:", type=("build", "run")) + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-goftest@1.2-2:", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-abind", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-geom/package.py b/var/spack/repos/builtin/packages/r-spatstat-geom/package.py index 8070c59daf6bad..94f62c92590b6a 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-geom/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-geom/package.py @@ -26,6 +26,7 @@ class RSpatstatGeom(RPackage): cran = "spatstat.geom" + version("3.3-2", sha256="cbc08a6924edbf0f1ea104136d5b2200caeecbd6c2cb4d55d4f56af9beea570f") version("3.1-0", sha256="184a96679babcbff4897c5a471e034eb1bb7127c6cf668e8cc2c2c74bdea47fe") version("3.0-3", sha256="6e5b56c60e774a0cdcaa5a8ffde071225f233832446a341588bd8a7840913c84") version("2.4-0", sha256="32b89a409ce87ffe901e4c8720a26cac9629f9816e163c4ad68b7aa012d69e67") @@ -34,8 +35,11 @@ class RSpatstatGeom(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@2.0-0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.0-3:") + depends_on("r-spatstat-data@3.1:", type=("build", "run"), when="@3.3-2:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0:", type=("build", "run"), when="@3.0-3:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-2:") depends_on("r-deldir@1.0-2:", type=("build", "run")) depends_on("r-polyclip@1.10-0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py b/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py index cae0f1106f143f..995ad70fd09791 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py @@ -39,22 +39,31 @@ class RSpatstatLinnet(RPackage): cran = "spatstat.linnet" + version("3.2-1", sha256="1af0d8063c72650f17c6b79afb07e69e0b6a9794583e8f0c38c6624d91dc11bf") version("3.1-0", sha256="b9b0ad66af169ca1ef3da852578d7b65521cf55f4a72c43ae5b1f2d4f47bf00c") version("2.3-2", sha256="9c78a4b680debfff0f3ae934575c30d03ded49bc9a7179475384af0ebaf13778") version("2.3-1", sha256="119ba6e3da651aa9594f70a7a35349209534215aa640c2653aeddc6aa25038c3") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-model@3.2-1:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-model@3.2-11.005:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-explore@3.0-6:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-explore@3.2-7.006:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-data@2.1-0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@3.1-5:") depends_on("r-spatstat-geom@2.3-0:", type=("build", "run")) depends_on("r-spatstat-geom@3.0-6:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-geom@3.2-9.028:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-random@2.2-0:", type=("build", "run"), when="@2.3-2:") depends_on("r-spatstat-random@3.1-3:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-random@3.2-3.003:", type=("build", "run"), when="@3.2-1:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.2-1:") depends_on("r-matrix", type=("build", "run")) depends_on("r-spatstat-sparse@2.0:", type=("build", "run")) depends_on("r-spatstat-sparse@3.0:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-core@2.3-2:", type=("build", "run"), when="@2.3-2:2.3-2") diff --git a/var/spack/repos/builtin/packages/r-spatstat-model/package.py b/var/spack/repos/builtin/packages/r-spatstat-model/package.py index 1a84bfd784dc39..a29c32b000c316 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-model/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-model/package.py @@ -32,17 +32,25 @@ class RSpatstatModel(RPackage): cran = "spatstat.model" + version("3.3-1", sha256="5c1c969b5f2bbfdfe91ad31cd912f31b91ec9cc7651ecec86c1d7a562161afa7") version("3.2-3", sha256="8ad7d2644773571a5c579ceebb98b735dccc97e9b4b109ea39b4ce3faedb14ea") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run")) + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@3.2-11:") depends_on("r-spatstat-geom@3.0-5:", type=("build", "run")) + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-random@3.1-4:", type=("build", "run")) + depends_on("r-spatstat-random@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-explore@3.1-0:", type=("build", "run")) + depends_on("r-spatstat-explore@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-nlme", type=("build", "run")) depends_on("r-rpart", type=("build", "run")) + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run")) + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-sparse@3.0:", type=("build", "run")) + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-mgcv", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-abind", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-random/package.py b/var/spack/repos/builtin/packages/r-spatstat-random/package.py index 2a8cf215742877..f967f4d0239093 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-random/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-random/package.py @@ -25,6 +25,7 @@ class RSpatstatRandom(RPackage): cran = "spatstat.random" + version("3.3-1", sha256="83026bce8802e14423edfa0a0f9c8279ef74565992bdac1804dfec357988bbd3") version("3.1-4", sha256="a6cd75e187a992fd8dae535f6745e12801635a344ca51bd2fe048debea3df7d3") version("3.0-1", sha256="938c845c063b8781bf894c0a67537e7b2a7c425a4beba4a95ec9d2c37b43e5b6") version("2.2-0", sha256="45f0bbdb9dbd53b6c4151c3cdd098451cf787729717ccbb063cd1f33910e604d") @@ -33,9 +34,13 @@ class RSpatstatRandom(RPackage): depends_on("r-spatstat-data@2.1-0:", type=("build", "run")) depends_on("r-spatstat-data@2.2-0.003:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-data@3.1:", type=("build", "run"), when="@3.3-0:") depends_on("r-spatstat-geom@2.4-0:", type=("build", "run")) depends_on("r-spatstat-geom@2.4-0.023:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-geom@3.0-5:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.3-0:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-0:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@2.3-1.003:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py index 932c51884ffa1e..e2080bc2062f43 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py @@ -15,6 +15,7 @@ class RSpatstatSparse(RPackage): cran = "spatstat.sparse" + version("3.1-0", sha256="63be5dc5818339b878a14a39815dab730b28029d51bac5233e88f5e2464bbbe9") version("3.0-1", sha256="2c1cf0ddad366aa4230bd03241a1ef87ed635f53a6943fc4a6c2d371626d0d1c") version("3.0-0", sha256="99be0a3c7592760fdf1668dc0811f75ed91c400390d1ecc3d5e643255f501ad2") version("2.1-1", sha256="9a35ad69715b767b3ae60b02dce05ccf108fcccdf95bbc8f7d02557bcbde7303") @@ -27,3 +28,4 @@ class RSpatstatSparse(RPackage): depends_on("r-spatstat-utils@2.1-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-0:", type=("build", "run"), when="@3.0-0:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-1:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-univar/package.py b/var/spack/repos/builtin/packages/r-spatstat-univar/package.py new file mode 100644 index 00000000000000..6cc988eb3022a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-univar/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class RSpatstatUnivar(RPackage): + """Estimation of one-dimensional probability distributions including + kernel density estimation, weighted empirical cumulative distribution + functions, Kaplan-Meier and reduced-sample estimators for right-censored + data, heat kernels, kernel properties, quantiles and integration.""" + + homepage = "http://spatstat.org/" + cran = "spatstat.univar" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("3.0-0", sha256="00bc501d9bec32231207f0562433193bd680606ce465131caa5e2704b4ff4771") + + depends_on("r@3.5.0:", type=("build", "run"), when="@3.0-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@2.0-3.011:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-utils/package.py b/var/spack/repos/builtin/packages/r-spatstat-utils/package.py index 2a5490c177afb9..ab4ddd6c1a397b 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-utils/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-utils/package.py @@ -14,6 +14,7 @@ class RSpatstatUtils(RPackage): cran = "spatstat.utils" + version("3.1-0", sha256="c30c3154700005f4bae9b428924248046128f7150b873e36e3897a622f962d3d") version("3.0-2", sha256="be60cd2cf21a6b3f71ba60553c045fd87884a4e57744f60e6eb0a2d096314615") version("3.0-1", sha256="cba1c7806564fd9145ca15edf77233d6ba5609f0989f7812221f5fc1ece0b91a") version("2.3-1", sha256="5b914308df0585993084b5e95967864eea0314c98ed6af58267b64b2235dfe22") @@ -23,3 +24,4 @@ class RSpatstatUtils(RPackage): version("1.15-0", sha256="90e07d730b6939f47f93c939afae10874b2c82bd402960ede4133de67dca2a0c") depends_on("r@3.3.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@3.1-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat/package.py b/var/spack/repos/builtin/packages/r-spatstat/package.py index 766b10079e68ea..c38424cf60641f 100644 --- a/var/spack/repos/builtin/packages/r-spatstat/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat/package.py @@ -50,6 +50,7 @@ class RSpatstat(RPackage): license("GPL-2.0-or-later") + version("3.1-1", sha256="5649309818c6e76c8b8ee7b66a25dcbd2b358d90da56f67dd961b5cf9ff55512") version("3.0-5", sha256="b926ed55dfeb95b09fb441f44d85204277eee00e42ac258c0a08baa1ce263bb1") version("2.3-4", sha256="4ea0f8d70b926b92bf4a06521f985a0bb6d573619f5d526957c87860ccb999da") version("2.3-0", sha256="da02443722f2c7ef9d59a2799b7b8002c94cecf73f2b0d2b29280d39f49c4c06") @@ -59,23 +60,31 @@ class RSpatstat(RPackage): depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-model@3.2-3:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-model@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-explore@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-explore@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-data@1.4-2:", type=("build", "run")) depends_on("r-spatstat-data@2.1-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-data@2.1-2:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-data@3.0-1:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-data@3.1-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-geom@2.3-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-geom@2.4-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-geom@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-random@2.2-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-random@3.1-4:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-random@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-linnet@2.3-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-linnet@2.3-2:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-linnet@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-linnet@3.2-0:", type=("build", "run"), when="@3.1-1:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-utils@1.17:", type=("build", "run")) depends_on("r-spatstat-utils@2.2-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-utils@2.3-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-1:") depends_on("r-rpart", type=("build", "run"), when="@:1.64-1") depends_on("r-nlme", type=("build", "run"), when="@:1.64-1") diff --git a/var/spack/repos/builtin/packages/r-spdata/package.py b/var/spack/repos/builtin/packages/r-spdata/package.py index 7a4a7e225ebbe7..028bda6521e16e 100644 --- a/var/spack/repos/builtin/packages/r-spdata/package.py +++ b/var/spack/repos/builtin/packages/r-spdata/package.py @@ -20,6 +20,7 @@ class RSpdata(RPackage): cran = "spData" + version("2.3.1", sha256="8c377f2123b7b274c5ca0de656ccd30aaba1b5b245be58a842395311ecc70075") version("2.2.2", sha256="878a58e98b6cf259432149ecb4e5d66ada59466e1b5b0dafa60ec839e90104ed") version("2.2.0", sha256="6e9c0a72f29021a84e9049b147c9e0186f14876a4a1663ad98bbb33440ee901f") version("2.0.1", sha256="c635a3e2e5123b4cdb2e6877b9b09e3d50169e1512a53b2ba2db7fbe63b990fc") diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index 63f980382cd8bf..2383c056e1e893 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -23,6 +23,7 @@ class RSpdep(RPackage): license("GPL-2.0-or-later") + version("1.3-5", sha256="ba8efa06ddbc12408f4f6d4c85606d84922131d9c05953e0b23b81f03e56e626") version("1.2-8", sha256="8d9fb4cb10d1035526ad6d9f7a11972efb0e3137dcff176d73df6ebfe96c9190") version("1.2-7", sha256="9dac594825bf2d0aa31e845bfec05d8ce206327840fe455391741dbbdf9c9eea") version("1.2-4", sha256="a9f4d5af56efb1a2bcd3e85fe4d0e8a42896a2c30a790b2487e1ebadf398a677") @@ -37,6 +38,7 @@ class RSpdep(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@0.7-8:") depends_on("r-sp@1.0:", type=("build", "run")) depends_on("r-spdata@0.2.6.0:", type=("build", "run"), when="@1.0-2:") + depends_on("r-spdata@2.3.1:", type=("build", "run"), when="@1.3-5:") depends_on("r-sf", type=("build", "run"), when="@1.0-2:") depends_on("r-deldir", type=("build", "run")) depends_on("r-boot@1.3-1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-speedglm/package.py b/var/spack/repos/builtin/packages/r-speedglm/package.py index 9ec7b5a82472ae..e967e7ffc97748 100644 --- a/var/spack/repos/builtin/packages/r-speedglm/package.py +++ b/var/spack/repos/builtin/packages/r-speedglm/package.py @@ -16,9 +16,11 @@ class RSpeedglm(RPackage): license("GPL-2.0-or-later") + version("0.3-5", sha256="f8663677c10ff324c5639402060ddd2b1a1e917445cb0f8f84e146b85e82bb4b") version("0.3-4", sha256="1a12db7dbceaaf5cf4f9a0c03e2a2b9f32e91b697daf2ccfe81bbae9ac3046ce") version("0.3-3", sha256="d065d0ee42fb772760fca8d97ad2aa56cd76b1d9ecb4e97478ec362429e16738") version("0.3-2", sha256="5fcaf18324dc754152f528a44894944063303f780d33e58569ea7c306bfc45ac") + depends_on("r-biglm", type=("build", "run"), when="@0.3-5:") depends_on("r-matrix", type=("build", "run")) depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-splancs/package.py b/var/spack/repos/builtin/packages/r-splancs/package.py index 2dbe2fb03352e7..a964aa09cabe45 100644 --- a/var/spack/repos/builtin/packages/r-splancs/package.py +++ b/var/spack/repos/builtin/packages/r-splancs/package.py @@ -17,9 +17,10 @@ class RSplancs(RPackage): license("GPL-2.0-or-later") + version("2.01-45", sha256="8bccf1d61d7feaab52da07a9c95aa66bcd3986a6b214f13b232c1e2bea4b76d3") version("2.01-43", sha256="b351565e1f69f6c86a29d921d3a18d5896c4586e2ab8c73bb3df8e75630fc448") version("2.01-42", sha256="8c0af4764521e20b629dba6afd5c284e7be48786f378c37668eacfa26d2ef0aa") version("2.01-40", sha256="79744381ebc4a361740a36dca3c9fca9ae015cfe0bd585b7856a664a3da74363") - depends_on("r@2.10:", type=("build", "run")) + depends_on("r@2.10.0:", type=("build", "run")) depends_on("r-sp@0.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-splines2/package.py b/var/spack/repos/builtin/packages/r-splines2/package.py new file mode 100644 index 00000000000000..bf1ae174c52cc3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-splines2/package.py @@ -0,0 +1,27 @@ +# 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) + +from spack.package import * + + +class RSplines2(RPackage): + """Constructs basis functions of B-splines, M-splines, I-splines, convex + splines (C-splines), periodic splines, natural cubic splines, generalized + Bernstein polynomials, their derivatives, and integrals (except C-splines) + by closed-form recursive formulas. It also contains a C++ head-only library + integrated with Rcpp. See Wang and Yan (2021) + for details.""" + + homepage = "https://wwenjie.org/splines2" + cran = "splines2" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("0.5.3", sha256="c27e7bd12d615095f765f4c1ed3cb9e39b922653aabbe88c4ca3ac31e6a01ddc") + + depends_on("r@3.2.3:", type=("build", "run")) + + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpparmadillo", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-stabledist/package.py b/var/spack/repos/builtin/packages/r-stabledist/package.py index 747a119144c5e5..1a8e0c40df11c3 100644 --- a/var/spack/repos/builtin/packages/r-stabledist/package.py +++ b/var/spack/repos/builtin/packages/r-stabledist/package.py @@ -16,6 +16,7 @@ class RStabledist(RPackage): license("GPL-2.0-or-later") + version("0.7-2", sha256="26671710c0d8e3c815b56e6e4f6bc9ea0509db47c0ef5b8acfbfa16095a16fd5") version("0.7-1", sha256="06c5704d3a3c179fa389675c537c39a006867bc6e4f23dd7e406476ed2c88a69") depends_on("r@3.1.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 4ce431492efe98..f6f63c610a3290 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -27,6 +27,7 @@ class RStanheaders(RPackage): cran = "StanHeaders" + version("2.32.10", sha256="c3125b8d7dc4c6b7082258b2fa6c9530c2e4714c89ffd08b8e72f4c9f4108582") version("2.21.0-7", sha256="27546e064f0e907e031d9185ad55245d118d82fbe3074ecb1d76fae8b9f2336b") version("2.21.0-6", sha256="a0282a054d0e6ab310ec7edcffa953b77c7e4a858d9ac7028aab1b4fb4ce8cf3") version("2.18.1-10", sha256="8a9f7e22105428e97d14f44f75395c37cf8c809de148d279c620024452b3565a") @@ -37,5 +38,7 @@ class RStanheaders(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@2.18.0:") depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@2.21.0:") + depends_on("r-rcppparallel@5.1.4:", type=("build", "run"), when="@2.26.25:") depends_on("r-rcppeigen", type=("build", "run"), when="@2.21.0:") + depends_on("r-rcppeigen@0.3.4.0.0:", type=("build", "run"), when="@2.32.8:") depends_on("pandoc", type="build") diff --git a/var/spack/repos/builtin/packages/r-stars/package.py b/var/spack/repos/builtin/packages/r-stars/package.py index 20f393bbe3ffde..94552ddf7d0648 100644 --- a/var/spack/repos/builtin/packages/r-stars/package.py +++ b/var/spack/repos/builtin/packages/r-stars/package.py @@ -15,6 +15,7 @@ class RStars(RPackage): cran = "stars" + version("0.6-6", sha256="70ca3509adfb4227ca8910d47c87f587ec06d8ef4577af63fe772757844ec7ac") version("0.6-1", sha256="1f78db3adab9ebbfc9d98c6cc592708d893b5d7fd7fd876af454042ef42204a7") version("0.5-6", sha256="e0413c95423635f7f7b2520813382e911257da8ace9b743da9fe3eab568a9461") @@ -22,7 +23,9 @@ class RStars(RPackage): depends_on("r-abind", type=("build", "run")) depends_on("r-sf@1.0-8:", type=("build", "run")) depends_on("r-sf@1.0-10:", type=("build", "run"), when="@0.6-1:") + depends_on("r-sf@1.0-15:", type=("build", "run"), when="@0.6-5:") depends_on("r-classint@0.4-1:", type=("build", "run")) - depends_on("r-lwgeom", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-units", type=("build", "run")) + + depends_on("r-lwgeom", type=("build", "run"), when="@:0.6-3") diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py index f02f6d0cb4cebb..e71cf28c478bc2 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -14,6 +14,7 @@ class RStatnetCommon(RPackage): cran = "statnet.common" + version("4.9.0", sha256="a485dc6e363a993d87336fbd1027adb1cd7b9103447fd63904cae4dc3bfc2dd7") version("4.8.0", sha256="def999130673fbcb315fecf3620a2559864f51961a828625aa5cd5fded7946f0") version("4.7.0", sha256="b69731a606b56b729b1917375efafb572b960ce5000a0fc2ec5222fd7d80a1b3") version("4.6.0", sha256="ddad51128b50d465e1d1aca3a53b452810b9ba578e96b08b8f50f5850d7bb21d") diff --git a/var/spack/repos/builtin/packages/r-stringfish/package.py b/var/spack/repos/builtin/packages/r-stringfish/package.py index 14c846404ed634..729c0b09f97f3b 100644 --- a/var/spack/repos/builtin/packages/r-stringfish/package.py +++ b/var/spack/repos/builtin/packages/r-stringfish/package.py @@ -18,6 +18,7 @@ class RStringfish(RPackage): license("GPL-3.0-only") + version("0.16.0", sha256="3608bc83900246297b38df46954bd9aa3b6f463a56eefbe80cfc713eab797993") version("0.15.7", sha256="34b1703a8876a40860d35f88a94e069832a7d2bc86189ff07af84ff04fd4b735") version("0.15.5", sha256="9df21146a7710e5a9ab4bb53ebc231a580c798b7e541b8d78df53207283f8129") version("0.14.2", sha256="9373cfc715cda1527fd20179435977b8e59e19d8c5ef82a31e519f93fb624ced") diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index abc075ec2a75f1..805cf78970eb75 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -22,6 +22,7 @@ class RStringi(RPackage): license("custom") + version("1.8.4", sha256="c219f8f64d1a2bfd4ca9528452d44d30db1899af14f4b9ef248412443bc669f3") version("1.7.12", sha256="efe8ac2900001f986a75db5641fbb24587a6d23de274a6a85c39dfa58921e009") version("1.7.8", sha256="538918b1cd6ed1d8a2dd5ab146ba800a088e99f93c52dcd82615b6e127478b1c") version("1.7.6", sha256="0ea3d5afec5701977ff53de9afbaceb53b00aa34f5fb641cadc1eeb7759119ec") @@ -36,6 +37,7 @@ class RStringi(RPackage): depends_on("r@2.14:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@1.6.1:") + depends_on("r@3.4:", type=("build", "run"), when="@1.8.1:") depends_on("icu4c@52:") depends_on("icu4c@55:", when="@1.5.3:") # since version 1.6.1 there is also a SystemRequirement on C++11 diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index 90fcda65fb417d..97ca2ce28a6811 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -19,6 +19,7 @@ class RStringr(RPackage): license("MIT") + version("1.5.1", sha256="a4adec51bb3f04214b1d8ef40d3a58949f21b1497cbeaf2ba552e0891eef45de") version("1.5.0", sha256="52b159d7700a139111b4caf939e7c9c6ab3e01185181400d70a74c552826633a") version("1.4.1", sha256="ec0d8e90caa3e107f18c188ed313dea8bfd12a738011b0be09ef5362360ddcb1") version("1.4.0", sha256="87604d2d3a9ad8fd68444ce0865b59e2ffbdb548a38d6634796bbd83eeb931dd") @@ -29,12 +30,14 @@ class RStringr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.3:", type=("build", "run"), when="@1.5.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.5.1:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.5.0:") depends_on("r-cli", type=("build", "run"), when="@1.5.0:") depends_on("r-stringi@1.1.7:", type=("build", "run")) depends_on("r-stringi@1.5.3:", type=("build", "run"), when="@1.5.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-vctrs", type=("build", "run"), when="@1.5.0:") + depends_on("r-vctrs@0.4.0:", type=("build", "run"), when="@1.5.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.5.0:") depends_on("r-glue@1.2.0:", type=("build", "run"), when="@1.3.0:") depends_on("r-glue@1.6.1:", type=("build", "run"), when="@1.5.0:") diff --git a/var/spack/repos/builtin/packages/r-styler/package.py b/var/spack/repos/builtin/packages/r-styler/package.py index a64f522bccc1a9..4fc81952dacdee 100644 --- a/var/spack/repos/builtin/packages/r-styler/package.py +++ b/var/spack/repos/builtin/packages/r-styler/package.py @@ -15,6 +15,7 @@ class RStyler(RPackage): license("MIT") + version("1.10.3", sha256="adb9c22111a8669bdce6d4a5c09e0ad353e07c3488373484a258028203bfda41") version("1.9.1", sha256="c80fa3c062f007645ec820b5b087d4d5784e7797cc88d030ab59fb5823ded0bb") version("1.8.1", sha256="15505fa85f0aa2902bc8af3f00b2aeb205d41a92b77bffbd176d657753ee81e9") version("1.8.0", sha256="4f8b74c1ac158b0a4433b6008da6bb708f3c9ed1c7fb9bb5d79748858cb484c7") @@ -24,6 +25,7 @@ class RStyler(RPackage): depends_on("r@3.4.0:", type=("build", "run"), when="@1.7.0:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.8.0:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.10.0:") depends_on("r-cli@1.1.0:", type=("build", "run")) depends_on("r-cli@3.1.1:", type=("build", "run"), when="@1.7.0:") depends_on("r-magrittr@1.0.1:", type=("build", "run")) @@ -32,6 +34,7 @@ class RStyler(RPackage): depends_on("r-r-cache@0.14.0:", type=("build", "run")) depends_on("r-r-cache@0.15.0:", type=("build", "run"), when="@1.6.2:") depends_on("r-rlang@0.1.1:", type=("build", "run")) + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.10.0:") depends_on("r-rprojroot@1.1:", type=("build", "run")) depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.8.0:") depends_on("r-withr@1.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-subplex/package.py b/var/spack/repos/builtin/packages/r-subplex/package.py index 9199d1e852debe..25f6eda8ca7282 100644 --- a/var/spack/repos/builtin/packages/r-subplex/package.py +++ b/var/spack/repos/builtin/packages/r-subplex/package.py @@ -16,6 +16,7 @@ class RSubplex(RPackage): license("GPL-3.0-only") + version("1.9", sha256="07a9ea8cba46a6eec037f8c6e87279c122479ccc560a96bd3086d653f95d69b7") version("1.8", sha256="3bc31d8990380c9f790c9c7d84cb2e39f4945eff934eddfa1196d597465be5a5") version("1.7", sha256="d5ecf4a484936d71cb294f08c3968ef5a8dcbdc861bfc0e97e3b1ab99afff887") version("1.6", sha256="0d05da1622fffcd20a01cc929fc6c2b7df40a8246e7018f7f1f3c175b774cbf9") @@ -24,3 +25,4 @@ class RSubplex(RPackage): version("1.4-1", sha256="94b7b961aaa229a6f025151191ed50272af1394be69f1c41146b9e8c786caec6") depends_on("r@2.5.1:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@1.9:") diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index 9cc9e7b6c65a54..c9c51f056cd941 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -21,6 +21,7 @@ class RSurvey(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("4.4-2", sha256="8a4a0f3122f0971f7c8756805add781192c655f507b235801dd78457a8d2f1bd") version("4.1-1", sha256="05e89a1678a39e32bfb41af8a31d643b04fc4d2660a96e701825e6bffcd75a52") version("4.0", sha256="b053f40f4cfa90507ca524f72d3b3a4b4869def52f11f907a14f1c6d90063de1") version("3.36", sha256="90f32e9d2b52eacf881e6717a4b5edfc5a3beb5da516f8372293549589d79475") @@ -31,9 +32,12 @@ class RSurvey(RPackage): depends_on("r@2.16.0:", type=("build", "run"), when="@3.32:") depends_on("r@3.1.0:", type=("build", "run"), when="@3.35:") depends_on("r@3.5.0:", type=("build", "run"), when="@4.1-1:") + depends_on("r@4.1.0:", type=("build", "run"), when="@4.4-2:") depends_on("r-matrix", type=("build", "run"), when="@3.31:") depends_on("r-survival", type=("build", "run"), when="@3.31:") depends_on("r-lattice", type=("build", "run"), when="@3.31:") depends_on("r-minqa", type=("build", "run"), when="@3.34:") depends_on("r-numderiv", type=("build", "run"), when="@3.34:") depends_on("r-mitools@2.4:", type=("build", "run"), when="@3.36:") + depends_on("r-rcpp@0.12.8:", type=("build", "run"), when="@4.4:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@4.4:") diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 79b6b0e0293b55..052c27d368fe42 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -17,6 +17,7 @@ class RSurvival(RPackage): license("LGPL-2.0-or-later") + version("3.7-0", sha256="cd96b08ec928b0028f69c942cc788e190b4543c8518d71deb6d8a712de44feef") version("3.5-5", sha256="1375a509554b0258e04e27baca2e073e179406e2a9a71e6d3e0c777072568476") version("3.4-0", sha256="a48e23d47265fe4d90fb5f0f9fc388906014f8063211980856985db9e89cf812") version("3.3-1", sha256="14878705cd0c7edcfead79011444aa84f680759293bde8634721c49f37cb4dc7") diff --git a/var/spack/repos/builtin/packages/r-svglite/package.py b/var/spack/repos/builtin/packages/r-svglite/package.py index 2003f6a798c21f..babdf515f2b58c 100644 --- a/var/spack/repos/builtin/packages/r-svglite/package.py +++ b/var/spack/repos/builtin/packages/r-svglite/package.py @@ -16,12 +16,14 @@ class RSvglite(RPackage): license("GPL-2.0-or-later") + version("2.1.3", sha256="f0a8564e6f9127f4d1e05cf5a5f36b4e244aee0008e27473e504c63873ef0a54") version("2.1.1", sha256="48700169eec1b05dbee9e2bae000aa84c544617b018cb3ac431a128cfd8dac56") version("2.1.0", sha256="ad40f590c7e80ae83001a3826b6e8394ba733446ed51fd55faeda974ab839c9b") version("2.0.0", sha256="76e625fe172a5b7ce99a67b6d631b037b3f7f0021cfe15f2e15e8851b89defa5") depends_on("r+X", type=("build", "run")) depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@2.1.2:") depends_on("r-systemfonts@1.0.0:", type=("build", "run")) depends_on("r-cpp11", type=("build", "run")) depends_on("libpng") diff --git a/var/spack/repos/builtin/packages/r-sys/package.py b/var/spack/repos/builtin/packages/r-sys/package.py index 117130dc41fcf5..bee43018e268b9 100644 --- a/var/spack/repos/builtin/packages/r-sys/package.py +++ b/var/spack/repos/builtin/packages/r-sys/package.py @@ -19,6 +19,7 @@ class RSys(RPackage): license("MIT") + version("3.4.2", sha256="b7bdce66f0fb681830ea6fb77b5a2c6babb43920abb1eddc733f95c0a63ce5b3") version("3.4.1", sha256="324e6d8fde58264e62bc04867b719c5fd16296de1542689801b8cb13621ecf52") version("3.4", sha256="17f88fbaf222f1f8fd07919461093dac0e7175ae3c3b3264b88470617afd0487") version("3.2", sha256="2819498461fe2ce83d319d1a47844e86bcea6d01d10861818dba289e7099bbcc") diff --git a/var/spack/repos/builtin/packages/r-systemfonts/package.py b/var/spack/repos/builtin/packages/r-systemfonts/package.py index fffb2dcdc7a805..4d4f38f6390590 100644 --- a/var/spack/repos/builtin/packages/r-systemfonts/package.py +++ b/var/spack/repos/builtin/packages/r-systemfonts/package.py @@ -21,11 +21,13 @@ class RSystemfonts(RPackage): license("MIT") + version("1.1.0", sha256="1941069bd20320284ec026a38c53cb736be60bda431303ceaf8fd27ae13fb644") version("1.0.4", sha256="ef766c75b942f147d382664a00d6a4930f1bfe0cce9d88943f571682a85a84c0") version("1.0.3", sha256="647c99d5ea6f90a49768ea7b10b39816af6be85168475273369fd973a20dbbba") version("1.0.1", sha256="401db4d9e78e3a5e00b7a0b4fbad7fbb1c584734469b65fe5b7ebe1851c7a797") depends_on("r@3.2.0:", type=("build", "run")) depends_on("r-cpp11@0.2.1:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.1.0:") depends_on("fontconfig") depends_on("freetype") diff --git a/var/spack/repos/builtin/packages/r-tclust/package.py b/var/spack/repos/builtin/packages/r-tclust/package.py index 964e8746050f48..28e5169388cdd5 100644 --- a/var/spack/repos/builtin/packages/r-tclust/package.py +++ b/var/spack/repos/builtin/packages/r-tclust/package.py @@ -18,6 +18,7 @@ class RTclust(RPackage): license("GPL-3.0-only") + version("2.0-4", sha256="a6667167778b974afc968340161171a7911415bcc1220dc7f0f350552f560578") version("1.5-4", sha256="2b55da5e351c5054c9627f57a43084518a138a1d8097e35a364db0eff63471a8") version("1.5-2", sha256="492674b30a465e5f4a22ba0ce5556ed4d8e57b29090f9b5b94ad655d064e6f8b") version("1.5-1", sha256="73328b30774bb0767d613d7f2b60b75706b19fab864c712645ea18181f1af327") @@ -30,3 +31,10 @@ class RTclust(RPackage): version("1.1-02", sha256="f73c0d7a495552f901b710cf34e114c0ba401d5a17c48156313245904bcccad4") depends_on("r@2.12.0:", type=("build", "run")) + depends_on("r@3.6.2:", type=("build", "run"), when="@1.5-6:") + + depends_on("r-doparallel", type=("build", "run"), when="@2.0:") + depends_on("r-foreach", type=("build", "run"), when="@2.0:") + depends_on("r-mass", type=("build", "run"), when="@2.0:") + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@2.0:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@2.0:") diff --git a/var/spack/repos/builtin/packages/r-teachingdemos/package.py b/var/spack/repos/builtin/packages/r-teachingdemos/package.py index 72d8ccbcc41aed..45c58294c5047d 100644 --- a/var/spack/repos/builtin/packages/r-teachingdemos/package.py +++ b/var/spack/repos/builtin/packages/r-teachingdemos/package.py @@ -15,6 +15,7 @@ class RTeachingdemos(RPackage): cran = "TeachingDemos" + version("2.13", sha256="f80eb952b7d1a0cde3bed8152f9c4e9eceaa3f635209b2af9a11e785e8c0fbcc") version("2.12", sha256="3e75405ce1affa406d6df85e06f96381412bc7a2810b25d8c81bfe64c4698644") version("2.10", sha256="2ef4c2e36ba13e32f66000e84281a3616584c86b255bca8643ff3fe4f78ed704") diff --git a/var/spack/repos/builtin/packages/r-tensora/package.py b/var/spack/repos/builtin/packages/r-tensora/package.py index 1e962ddcdbfa52..0c1c67061f70ec 100644 --- a/var/spack/repos/builtin/packages/r-tensora/package.py +++ b/var/spack/repos/builtin/packages/r-tensora/package.py @@ -18,6 +18,7 @@ class RTensora(RPackage): license("GPL-2.0-or-later") + version("0.36.2.1", sha256="06588261fe7dff6a8edafe2b9d436b39a3b46c754f2ed327ae6322561a617db7") version("0.36.2", sha256="8e8947566bd3b65a54de4269df1abaa3d49cf5bfd2a963c3274a524c8a819ca7") version("0.36.1", sha256="c7ffe12b99867675b5e9c9f31798f9521f14305c9d9f9485b171bcbd8697d09c") version("0.36", sha256="97b3e72f26ca3a756d045008764d787a32c68f0a276fb7a29b6e1b4592fdecf6") diff --git a/var/spack/repos/builtin/packages/r-terra/package.py b/var/spack/repos/builtin/packages/r-terra/package.py index d71f827e72ae34..7f4abc51edbd3e 100644 --- a/var/spack/repos/builtin/packages/r-terra/package.py +++ b/var/spack/repos/builtin/packages/r-terra/package.py @@ -23,6 +23,7 @@ class RTerra(RPackage): license("GPL-3.0-or-later") + version("1.7-78", sha256="658956b79d8a1371aefdf7300316f1756b58d436ba549ade012307684b2d4b7e") version("1.7-29", sha256="3f39b052a34c9f1166a342be4c25bbdc1e2c81402edb734901d63fc6fa547ca5") version("1.6-17", sha256="db888f4220ca511332f4d011345b2b207fcc1de26d2eae473e0eeb5dfd8bbc02") version("1.5-21", sha256="091ee928ccaa6561aa9f8ee6c1c99f139dc89f1653c2a76a035cca14d404f43f") diff --git a/var/spack/repos/builtin/packages/r-tester/package.py b/var/spack/repos/builtin/packages/r-tester/package.py index 3d25497a42a403..ee8387ad3125e1 100644 --- a/var/spack/repos/builtin/packages/r-tester/package.py +++ b/var/spack/repos/builtin/packages/r-tester/package.py @@ -15,6 +15,7 @@ class RTester(RPackage): license("GPL-3.0-only") + version("0.2.0", sha256="bec8141b8572ca8d19a270a2eaec23aa4c01a167f32f2e05a4bf353418a0020b") version("0.1.7", sha256="b9c645119c21c69450f3d366c911ed92ac7c14ef61652fd676a38fb9d420b5f4") depends_on("r@3.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index 756b98bad21d8d..dcf74f0b19e7a5 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -17,6 +17,7 @@ class RTestthat(RPackage): license("MIT") + version("3.2.1.1", sha256="d785ce3975939e28b61048b0e28d881c80904534ff21e5b1a79a0a934124e9f7") version("3.1.7", sha256="1ad86b1739481c6c46359a6634ecc706bf513f34b26d7a62cbc719bbd4658eab") version("3.1.5", sha256="a8f56b9426206ddfc30b550c82ff2f042ebe1c2f5bfd4184aec8facac8f5b7fc") version("3.1.4", sha256="a47eec031b4e186a8bd331031371b2347063a283050eca2adbfaa37d7a6c9c09") @@ -29,34 +30,52 @@ class RTestthat(RPackage): version("1.0.2", sha256="0ef7df0ace1fddf821d329f9d9a5d42296085350ae0d94af62c45bd203c8415e") depends_on("r@3.1:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-brio", type=("build", "run"), when="@3.0.1:") + depends_on("r-brio@1.1.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-callr@3.5.1:", type=("build", "run"), when="@3.0.1:") + depends_on("r-callr@3.7.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-cli", type=("build", "run"), when="@2.0.0:") depends_on("r-cli@2.2.0:", type=("build", "run"), when="@3.0.1:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@3.1.4:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@3.1.5:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-desc", type=("build", "run"), when="@3.0.1:") + depends_on("r-desc@1.4.2:", type=("build", "run"), when="@3.2.0:") depends_on("r-digest", type=("build", "run")) - depends_on("r-ellipsis", type=("build", "run"), when="@2.3.2:") - depends_on("r-ellipsis@0.2.0:", type=("build", "run"), when="@3.0.1:") + depends_on("r-digest@0.6.33:", type=("build", "run"), when="@3.2.0:") depends_on("r-evaluate", type=("build", "run"), when="@2.2.0:") + depends_on("r-evaluate@0.21:", type=("build", "run"), when="@3.2.0:") depends_on("r-jsonlite", type=("build", "run"), when="@3.0.1:") + depends_on("r-jsonlite@1.8.7:", type=("build", "run"), when="@3.2.0:") depends_on("r-lifecycle", type=("build", "run"), when="@3.0.1:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr@2.0.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-pkgload", type=("build", "run"), when="@2.3.2:") + depends_on("r-pkgload@1.3.2.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-praise", type=("build", "run")) + depends_on("r-praise@1.0.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-processx", type=("build", "run"), when="@3.0.1:") + depends_on("r-processx@3.8.2:", type=("build", "run"), when="@3.2.0:") depends_on("r-ps@1.3.4:", type=("build", "run"), when="@3.0.1:") + depends_on("r-ps@1.7.5:", type=("build", "run"), when="@3.2.0:") depends_on("r-r6@2.2.0:", type=("build", "run")) + depends_on("r-r6@2.5.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-rlang@0.3.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-rlang@0.4.1:", type=("build", "run"), when="@2.3.2:") depends_on("r-rlang@0.4.9:", type=("build", "run"), when="@3.0.1:") depends_on("r-rlang@1.0.1:", type=("build", "run"), when="@3.1.4:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-waldo@0.2.1:", type=("build", "run"), when="@3.0.1:") depends_on("r-waldo@0.2.4:", type=("build", "run"), when="@3.1.1:") depends_on("r-waldo@0.4.0:", type=("build", "run"), when="@3.1.4:") + depends_on("r-waldo@0.5.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-withr@2.0.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-withr@2.3.0:", type=("build", "run"), when="@3.0.1:") depends_on("r-withr@2.4.3:", type=("build", "run"), when="@3.1.2:") + depends_on("r-withr@2.5.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-crayon@1.3.4:", type=("build", "run"), when="@:3.1.4") + depends_on("r-ellipsis", type=("build", "run"), when="@2.3.2:3.2.0") + depends_on("r-ellipsis@0.2.0:", type=("build", "run"), when="@3.0.1:3.2.0") diff --git a/var/spack/repos/builtin/packages/r-textshaping/package.py b/var/spack/repos/builtin/packages/r-textshaping/package.py index 2de9d3270cf129..1c75b421d14a4e 100644 --- a/var/spack/repos/builtin/packages/r-textshaping/package.py +++ b/var/spack/repos/builtin/packages/r-textshaping/package.py @@ -18,11 +18,14 @@ class RTextshaping(RPackage): license("MIT") + version("0.4.0", sha256="35e940786bb278560de61bb55d4f46f8c86c878d0461613ceb8c98ba9b239d7a") version("0.3.6", sha256="80e2c087962f55ce2811fbc798b09f5638c06c6b28c10cd3cb3827005b902ada") depends_on("r@3.2.0:", type=("build", "run")) - depends_on("r-systemfonts@1.0.0:", type=("build", "run")) depends_on("r-cpp11@0.2.1:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@0.4.0:") + depends_on("r-systemfonts@1.0.0:", type=("build", "run")) + depends_on("r-systemfonts@1.1.0:", type=("build", "run"), when="@0.4.0:") depends_on("pkgconfig", type="build") depends_on("freetype") depends_on("harfbuzz") diff --git a/var/spack/repos/builtin/packages/r-tictoc/package.py b/var/spack/repos/builtin/packages/r-tictoc/package.py index 726315142308af..ad06c0a532a4c9 100644 --- a/var/spack/repos/builtin/packages/r-tictoc/package.py +++ b/var/spack/repos/builtin/packages/r-tictoc/package.py @@ -22,6 +22,7 @@ class RTictoc(RPackage): license("Apache-2.0 OR custom") + version("1.2.1", sha256="8fcdb7c9a1e4b4817bcab654effd64dea6ec749a7901d4060d5b5c625fc88833") version("1.2", sha256="f05ea4b4142a90b0dc5d10356be3748625ef86bbd0e4399c56455654165ff20c") version("1.1", sha256="120f868ba276bda70c8edef5d6c092586cf73db0fa02eb5459d8f55350fb474d") version("1.0.1", sha256="a09a1535c417ddf6637bbbda5fca6edab6c7f7b252a64e57e99d4d0748712705") diff --git a/var/spack/repos/builtin/packages/r-tidycensus/package.py b/var/spack/repos/builtin/packages/r-tidycensus/package.py index 19b3865c0dd573..855763530f7882 100644 --- a/var/spack/repos/builtin/packages/r-tidycensus/package.py +++ b/var/spack/repos/builtin/packages/r-tidycensus/package.py @@ -20,6 +20,7 @@ class RTidycensus(RPackage): license("MIT") + version("1.6.5", sha256="b846406eeff21cf8035f6cfe0479eadb5fec67e02ef7106294f9d2ddff45f122") version("1.3.2", sha256="ca47323f19c94a3c767bef59986f4a6cb4e455b3eb21ea64f1b3d6339443c515") version("1.2.3", sha256="23bc58bb6e20e1056e40dca55a49576b5e186fdb324f00fa9d5c07fb675f32ff") version("1.2.2", sha256="5cdbb92314061c9d8d3d62f623699fa115d7faae1f4a961d55ab905538f8e7cc") diff --git a/var/spack/repos/builtin/packages/r-tidygraph/package.py b/var/spack/repos/builtin/packages/r-tidygraph/package.py index 0b4496c6edda6c..4331c3fa9056c9 100644 --- a/var/spack/repos/builtin/packages/r-tidygraph/package.py +++ b/var/spack/repos/builtin/packages/r-tidygraph/package.py @@ -19,6 +19,7 @@ class RTidygraph(RPackage): license("MIT") + version("1.3.1", sha256="aac1d4bb9396081bbeecbde11a3cd1a26a56bd6b1f608a628b359cb37c18ac1a") version("1.2.3", sha256="b09c06b12583ae57edd1ec01e61a0e1b7a4b82358361fb28a6046dbece475687") version("1.2.2", sha256="d555cad6b5b56bd2edaa29950a0fd15942e972db21561bfd5cd64fd9a8936470") version("1.2.1", sha256="2fbdc2db18c5ad48c72f14d2d04111f4b0d4c434ad87c280eda3bcb98673ad36") @@ -30,6 +31,8 @@ class RTidygraph(RPackage): depends_on("r-dplyr@0.8.5:", type=("build", "run"), when="@1.2.0:") depends_on("r-igraph", type=("build", "run")) depends_on("r-igraph@1.3.0:", type=("build", "run"), when="@1.2.3:") + depends_on("r-igraph@2.0.0:", type=("build", "run"), when="@1.3.1:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.3.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-r6", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index 1a690a07a22aa3..3e9d7eb748e170 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -21,6 +21,7 @@ class RTidyr(RPackage): license("MIT") + version("1.3.1", sha256="e820c261cb5543f572f49276a7bdc7302aa4215da4bf850b1b939a315353835d") version("1.3.0", sha256="8d532b9366fdd3ec9827b51830e559a49d073425007c766025f0e603964e0a9d") version("1.2.1", sha256="6971766d3663dc75c2328ab257816f4e42d9fdc05c2d87d171b8b9b5ecce61af") version("1.2.0", sha256="8cd01da9e97827521d01ea50b9225f2705c46b7538bbf74bec6249a04c1213a8") @@ -33,6 +34,7 @@ class RTidyr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@1.3.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.3.1:") depends_on("r-dplyr@0.7.0:", type=("build", "run")) depends_on("r-dplyr@0.8.2:", type=("build", "run"), when="@1.1.2:") depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@1.2.0:") @@ -46,6 +48,7 @@ class RTidyr(RPackage): depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@1.3.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-rlang@1.0.4:", type=("build", "run"), when="@1.3.0:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.3.1:") depends_on("r-tibble", type=("build", "run")) depends_on("r-tibble@2.1.1:", type=("build", "run"), when="@1.1.2:") depends_on("r-tidyselect@0.2.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-tidyselect/package.py b/var/spack/repos/builtin/packages/r-tidyselect/package.py index 91c1235e7bc1b8..e7fcba5f2c31f1 100644 --- a/var/spack/repos/builtin/packages/r-tidyselect/package.py +++ b/var/spack/repos/builtin/packages/r-tidyselect/package.py @@ -17,6 +17,7 @@ class RTidyselect(RPackage): license("MIT") + version("1.2.1", sha256="169e97ba0bbfbcdf4a80534322751f87a04370310c40e27f04aac6525d45903c") version("1.2.0", sha256="538d26b727e37d618e2efd3b00836048f103112a03e6994bf07a02392e269e3b") version("1.1.2", sha256="0389a3b15417954a30d6d692f6ebdd3d0f318cb94a5c9b05365df2f4ea1d8270") version("1.1.1", sha256="18eb6a6746196a81ce19ee6cbf1db0c33f494177b97e2419312ef25a00ae486b") @@ -38,10 +39,11 @@ class RTidyselect(RPackage): depends_on("r-vctrs@0.2.2:", type=("build", "run"), when="@1.1.0:") depends_on("r-vctrs@0.3.0:", type=("build", "run"), when="@1.1.1:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.2.0:") + depends_on("r-vctrs@0.5.2:", type=("build", "run"), when="@1.2.1:") depends_on("r-rcpp@0.12.0:", type=("build", "run"), when="@:0.2.5") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@1.2.0:") depends_on("r-ellipsis", type=("build", "run"), when="@1.1.0:1.1.2") - depends_on("r-purrr", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@:1.1.2") depends_on("r-purrr@0.3.2:", type=("build", "run"), when="@1.1.0:1.1.2") diff --git a/var/spack/repos/builtin/packages/r-tidytree/package.py b/var/spack/repos/builtin/packages/r-tidytree/package.py index 53ec7b519e7722..9636cedcd1b67c 100644 --- a/var/spack/repos/builtin/packages/r-tidytree/package.py +++ b/var/spack/repos/builtin/packages/r-tidytree/package.py @@ -18,6 +18,7 @@ class RTidytree(RPackage): license("Artistic-2.0") + version("0.4.6", sha256="dba909ba767283fa76795a67e048ff1c8cd339c7e44f64c9698c70ecb3d92292") version("0.4.2", sha256="cb831a66d8afa5e21f5072e4fbebcbd2228881090d0040f87605f5aeefda155e") version("0.4.1", sha256="fbc4364d17e1b1c26ed06af0cdf36c88a5bc562fdbd4731ab179e30bba4009eb") version("0.3.9", sha256="12435d4f4c4d734b2a758cb13eb3b44bdfa8fdfa79a6e81fb99f7ce3a5d82edf") diff --git a/var/spack/repos/builtin/packages/r-tiff/package.py b/var/spack/repos/builtin/packages/r-tiff/package.py index b99b115da6047f..d133e132af148f 100644 --- a/var/spack/repos/builtin/packages/r-tiff/package.py +++ b/var/spack/repos/builtin/packages/r-tiff/package.py @@ -17,6 +17,7 @@ class RTiff(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.1-12", sha256="df10ce719f92597572763182f7cb03686b8d7fb9123d036a4daf5b10738e815c") version("0.1-11", sha256="b8c3ea15114d972f8140541c7b01f5ce2e5322af1f63c1a083aaf766fd3eec75") version("0.1-10", sha256="535154e89e85e14fe697469d2c59826a44c7937e7eca2eaca1aee6b0fe320afe") version("0.1-6", sha256="623bd9c16a426df7e6056738c5d91da86ea9b49df375eea6b5127e4e458dc4fb") diff --git a/var/spack/repos/builtin/packages/r-tigris/package.py b/var/spack/repos/builtin/packages/r-tigris/package.py index cb556f39c81f92..909fe240eaf374 100644 --- a/var/spack/repos/builtin/packages/r-tigris/package.py +++ b/var/spack/repos/builtin/packages/r-tigris/package.py @@ -16,6 +16,7 @@ class RTigris(RPackage): license("MIT") + version("2.1", sha256="796bed6ce003323815d606886472bf21c101656fca8a593daa3b69cb3bd6fd97") version("2.0.1", sha256="d87c6b0c11ffb967699d345c6bfcfa82581a0753e1130bf0c927b2960b074d8c") version("1.6.1", sha256="927e8da3f7120bcc10f0b4ded95687512693e069f082eea7aea6302a2f1b2db2") version("1.6", sha256="fa14fbbaf44f5ade1cc92e6e4e4ed2e775bc7c106310711d16b0135a948a1661") diff --git a/var/spack/repos/builtin/packages/r-timechange/package.py b/var/spack/repos/builtin/packages/r-timechange/package.py index 27425f56bdb623..97ffb606e87390 100644 --- a/var/spack/repos/builtin/packages/r-timechange/package.py +++ b/var/spack/repos/builtin/packages/r-timechange/package.py @@ -21,6 +21,7 @@ class RTimechange(RPackage): license("GPL-3.0-only") + version("0.3.0", sha256="d85c0b5514ab9578d16032e703c33f197feaed1a424c834ebfcbf0ad46ae46b4") version("0.2.0", sha256="3d602008052123daef94a5c3f5154c5461b4ec0432ab70c37273d7ddd252f7f1") version("0.1.1", sha256="8503919d233d7d7b81fe47692f0f2d6742ff4cae7320a5522bf98f077f5d7f70") diff --git a/var/spack/repos/builtin/packages/r-timedate/package.py b/var/spack/repos/builtin/packages/r-timedate/package.py index 60d51b27944ea9..c299e1ba86bff2 100644 --- a/var/spack/repos/builtin/packages/r-timedate/package.py +++ b/var/spack/repos/builtin/packages/r-timedate/package.py @@ -21,6 +21,7 @@ class RTimedate(RPackage): cran = "timeDate" + version("4032.109", sha256="402841bda47e8c31f49773de2ff5447e9780bc7c8af5fb18be9287b546fcb958") version("4022.108", sha256="a5949b4fe2f6bdff751fc0793df8e3150cc25c078d48a28c066c10a6c4bfceef") version("4021.106", sha256="14adf1ec6cbd80f11a243fa66ea943725a7a4c75923ae2d8e424235d500b10e2") version("3043.102", sha256="377cba03cddab8c6992e31d0683c1db3a73afa9834eee3e95b3b0723f02d7473") diff --git a/var/spack/repos/builtin/packages/r-tinytex/package.py b/var/spack/repos/builtin/packages/r-tinytex/package.py index 754386ac724945..71efa6f83af93e 100644 --- a/var/spack/repos/builtin/packages/r-tinytex/package.py +++ b/var/spack/repos/builtin/packages/r-tinytex/package.py @@ -20,6 +20,7 @@ class RTinytex(RPackage): license("MIT") + version("0.52", sha256="932a713b9fdd52fe8869e8c38d03f15602f2c02ec543d4dabffde2a3981f513a") version("0.45", sha256="0c2fbbd09e80af80ca6b685bf0653f070da97b85413d39af966aba28f376e92c") version("0.42", sha256="205f7a1978118aa38b6d9f7d3e1667c635da262b43967d1a879520284c2e22b1") version("0.39", sha256="f22e9b77c200fe44cc073b759c2b2bc3310a2382d897282548aa02dcbabc25ed") diff --git a/var/spack/repos/builtin/packages/r-tinytiger/package.py b/var/spack/repos/builtin/packages/r-tinytiger/package.py index 930f366c341531..832df344c2f882 100644 --- a/var/spack/repos/builtin/packages/r-tinytiger/package.py +++ b/var/spack/repos/builtin/packages/r-tinytiger/package.py @@ -23,13 +23,15 @@ class RTinytiger(RPackage): license("MIT") + version("0.0.9", sha256="fe9b1098a2d1d4722f8a7657a9244afcd3d6b7f4f112fc6a92c2fb75da07de59") version("0.0.4", sha256="818328b5095d9e8b302f1a04d004cd3ec6e62d945dbd757fe15e9ab768a7459e") version("0.0.3", sha256="841d92dd4185b9bff5eef0d3635805c5a3efb1bc4ff0a1101ef264417e37921c") depends_on("r@2.0.0:", type=("build", "run")) depends_on("r@2.10:", type=("build", "run"), when="@0.0.4:") - depends_on("r-rlang") depends_on("r-cli") depends_on("r-glue") depends_on("r-curl") depends_on("r-sf") + + depends_on("r-rlang", type=("build", "run"), when="@:0.0.8") diff --git a/var/spack/repos/builtin/packages/r-tseries/package.py b/var/spack/repos/builtin/packages/r-tseries/package.py index 55c8888de3986d..bf8fa57c602a31 100644 --- a/var/spack/repos/builtin/packages/r-tseries/package.py +++ b/var/spack/repos/builtin/packages/r-tseries/package.py @@ -13,6 +13,7 @@ class RTseries(RPackage): license("GPL-2.0-only") + version("0.10-57", sha256="18754bb7642728916e30e67cb75462a296699b9b1f2ef1fb9803199f00f89bee") version("0.10-53", sha256="ec388ee6d022752bbebbecbf22d793d31f3734982e3f2e3ffd8dde14bffcca56") version("0.10-52", sha256="9399c8dbedb3b44b8b3b854f6e8867e0a14f3727a7aa66ec9c6eff069ead8f45") version("0.10-51", sha256="a55f20704883710ab58ea479e20cf0f263c50d54282f693793cda4af664c207f") @@ -23,6 +24,8 @@ class RTseries(RPackage): version("0.10-42", sha256="827f79858715c700e8cabd2c27853ba88ad0e05eb043bc94e126b155a75546c4") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@3.4.0:", type=("build", "run"), when="@0.10-57:") + depends_on("r-jsonlite", type=("build", "run"), when="@0.10-54:") depends_on("r-quadprog", type=("build", "run")) depends_on("r-zoo", type=("build", "run")) depends_on("r-quantmod@0.4-9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index 74b7203b52c63d..9517b98fcd209e 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -15,6 +15,7 @@ class RTtr(RPackage): cran = "TTR" + version("0.24.4", sha256="89732b9c359bae2f41cd23db649f0897c10fab0702d780c4c25a997322710284") version("0.24.3", sha256="4d9aef32647664be5cf965b05f21ed62cde9425fa87c21530852e05ef7aaba87") version("0.24.2", sha256="2587b988d9199474a19470b9b999b99133d0d8aa45410813e05c5f0ed763711b") version("0.23-4", sha256="eb17604da986213b3b924f0af65c3d089502a658a253ee34f6b8f6caccf6bfa2") diff --git a/var/spack/repos/builtin/packages/r-tweenr/package.py b/var/spack/repos/builtin/packages/r-tweenr/package.py index 254f43f96f19b3..ec6b9f42303346 100644 --- a/var/spack/repos/builtin/packages/r-tweenr/package.py +++ b/var/spack/repos/builtin/packages/r-tweenr/package.py @@ -19,6 +19,7 @@ class RTweenr(RPackage): license("MIT") + version("2.0.3", sha256="efabe512a45d653787ba40f87f3e23add4037f88573a102fa9ac7a5ff43c8cbe") version("2.0.2", sha256="64bbfded418d4880e3636f434571c20303d2f66be6950d64583a864fbb661ff3") version("1.0.2", sha256="1805f575da6705ca4e5ec1c4605222fc826ba806d9ff9af41770294fe08ff69f") version("1.0.1", sha256="efd68162cd6d5a4f6d833dbf785a2bbce1cb7b9f90ba3fb060931a4bd705096b") diff --git a/var/spack/repos/builtin/packages/r-tzdb/package.py b/var/spack/repos/builtin/packages/r-tzdb/package.py index 8f606a1a1e9e43..596b3a4acd95d6 100644 --- a/var/spack/repos/builtin/packages/r-tzdb/package.py +++ b/var/spack/repos/builtin/packages/r-tzdb/package.py @@ -23,10 +23,12 @@ class RTzdb(RPackage): license("MIT") + version("0.4.0", sha256="4253c66041bdddfd463c98183bf0052fbcacdb7c5cff9eadbb858b3dcf9d3a23") version("0.3.0", sha256="6099f0ec1fba692b51b4360aa776902a39f10dae815933c31994b8e4d4277038") version("0.2.0", sha256="c335905d452b400af7ed54b916b5246cb3f47ede0602911a2bcb25a1cf56d5a9") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@0.3.0:") + depends_on("r@3.5.0:", type=("build", "run"), when="@0.4.0:") depends_on("r-cpp11@0.4.0:", type=("build", "run")) depends_on("r-cpp11@0.4.2:", type=("build", "run"), when="@0.3.0:") diff --git a/var/spack/repos/builtin/packages/r-ucminf/package.py b/var/spack/repos/builtin/packages/r-ucminf/package.py index ba6dc6e92af8bc..76ec1fef1b1727 100644 --- a/var/spack/repos/builtin/packages/r-ucminf/package.py +++ b/var/spack/repos/builtin/packages/r-ucminf/package.py @@ -19,5 +19,8 @@ class RUcminf(RPackage): license("GPL-2.0-or-later") + version("1.2.2", sha256="4bdb6ae769fa49a167cfdc92dc544ba3b6f34df6c08810cfb0c55613aff5bd29") version("1.1-4.1", sha256="01a5b6f373ad267d22e2c29b8f7b6e31a1a148e48f4413e6a38e51aa049976b2") version("1.1-4", sha256="a2eb382f9b24e949d982e311578518710f8242070b3aa3314a331c1e1e7f6f07") + + depends_on("r@3.5.0:", when="@1.2.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-units/package.py b/var/spack/repos/builtin/packages/r-units/package.py index 01ebe5a976f5de..83719b38cac0ea 100644 --- a/var/spack/repos/builtin/packages/r-units/package.py +++ b/var/spack/repos/builtin/packages/r-units/package.py @@ -22,6 +22,7 @@ class RUnits(RPackage): license("GPL-2.0-only") + version("0.8-5", sha256="d95e80af760b053e10a1e33ce1f0c1280a84e84bd4b1d9c34d1fe9fc153603b1") version("0.8-1", sha256="d3e1ba246b4c97205bc3da3cf45d6b5bd5c196b8d421b84b4e94b2090985cd9a") version("0.8-0", sha256="9c46fe138e8c1c3d3a51268776412f02d09673656516148cccb71b1071beb21a") version("0.7-2", sha256="b90be023431100632b3081747af9e743e615452b4ad38810991f7b024b7040eb") diff --git a/var/spack/repos/builtin/packages/r-urca/package.py b/var/spack/repos/builtin/packages/r-urca/package.py index 2dcbdb474b29a5..178ceca85b7ac8 100644 --- a/var/spack/repos/builtin/packages/r-urca/package.py +++ b/var/spack/repos/builtin/packages/r-urca/package.py @@ -16,6 +16,7 @@ class RUrca(RPackage): license("GPL-2.0-or-later") + version("1.3-4", sha256="fe3d6ce5041f1e7caaf3137dfb6187640bcd2d208e19c59ee1202355ac0acb16") version("1.3-3", sha256="43baa8b6735f8325a69e6a43686f4fecd77a0eb7f60da25b4fc5c51b9271e9f1") version("1.3-0", sha256="621cc82398e25b58b4a16edf000ed0a1484d9a0bc458f734e97b6f371cc76aaa") diff --git a/var/spack/repos/builtin/packages/r-usethis/package.py b/var/spack/repos/builtin/packages/r-usethis/package.py index 497cfe55a70646..70eafc1274bc59 100644 --- a/var/spack/repos/builtin/packages/r-usethis/package.py +++ b/var/spack/repos/builtin/packages/r-usethis/package.py @@ -18,6 +18,7 @@ class RUsethis(RPackage): license("MIT") + version("3.0.0", sha256="98f850f9ceaae37eb16ccd1232275b4e8f818c115c67151fa99096c477f7ccb5") version("2.1.6", sha256="31dc6707577065ac1d4acb7d4cbf135942727c5cc2699092198c544be86f6818") version("2.1.5", sha256="7d539e16ecdc1cd45ba1a215d42d8b9c16bc38280ddd27048003dbb37b16f052") version("2.0.0", sha256="22aa2b59f36a8701a4648554c7b0e010253bf917a0f431f06efac7d8a6b59854") @@ -26,6 +27,7 @@ class RUsethis(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@2.1.5:") + depends_on("r@3.6:", type=("build", "run"), when="@2.2.0:") depends_on("r-cli", type=("build", "run"), when="@1.6.1:") depends_on("r-cli@3.0.1:", type=("build", "run"), when="@2.1.5:") depends_on("r-clipr@0.3.0:", type=("build", "run")) @@ -33,6 +35,7 @@ class RUsethis(RPackage): depends_on("r-curl@2.7:", type=("build", "run")) depends_on("r-desc", type=("build", "run")) depends_on("r-desc@1.4.0:", type=("build", "run"), when="@2.1.5:") + depends_on("r-desc@1.4.2:", type=("build", "run"), when="@2.2.0:") depends_on("r-fs@1.3.0:", type=("build", "run")) depends_on("r-gert@1.0.2:", type=("build", "run"), when="@2.0.0:") depends_on("r-gert@1.4.1:", type=("build", "run"), when="@2.1.5:") @@ -50,6 +53,7 @@ class RUsethis(RPackage): depends_on("r-rlang@0.4.3:", type=("build", "run"), when="@1.6.1:") depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@2.1.5:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.1.6:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-rprojroot@1.2:", type=("build", "run")) depends_on("r-rstudioapi", type=("build", "run")) depends_on("r-whisker", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-utf8/package.py b/var/spack/repos/builtin/packages/r-utf8/package.py index ac87cb8e0464e9..09a2d22c500403 100644 --- a/var/spack/repos/builtin/packages/r-utf8/package.py +++ b/var/spack/repos/builtin/packages/r-utf8/package.py @@ -16,6 +16,7 @@ class RUtf8(RPackage): license("Apache-2.0 OR custom") + version("1.2.4", sha256="418f824bbd9cd868d2d8a0d4345545c62151d321224cdffca8b1ffd98a167b7d") version("1.2.3", sha256="c0a88686591f4ad43b52917d0964e9df4c62d8858fe25135a1bf357dfcbd6347") version("1.2.2", sha256="a71aee87d43a9bcf29249c7a5a2e9ca1d2a836e8d5ee3a264d3062f25378d8f4") version("1.1.4", sha256="f6da9cadfc683057d45f54b43312a359cf96ec2731c0dda18a8eae31d1e31e54") diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index a8b3bcc731ec23..deecee84276ca7 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -17,6 +17,7 @@ class RUuid(RPackage): license("MIT") + version("1.2-1", sha256="f90e49733d7d6ea7cf91abdc07b7d0e9a34a4b993e6914d754f0621281fc4b96") version("1.1-0", sha256="e75b50ee7dc8c4c8e7083023e954ffd1c6a004431bf5e9094463e46aa760f42f") version("1.0-3", sha256="456e4633659f20242fd7cd585ad005a3e07265f1d1db383fca6794c8ac2c8346") version("0.1-4", sha256="98e0249dda17434bfa209c2058e9911e576963d4599be9f7ea946e664f8ca93e") diff --git a/var/spack/repos/builtin/packages/r-uwot/package.py b/var/spack/repos/builtin/packages/r-uwot/package.py index c5e5d78dbdb689..c18015609e45cc 100644 --- a/var/spack/repos/builtin/packages/r-uwot/package.py +++ b/var/spack/repos/builtin/packages/r-uwot/package.py @@ -24,6 +24,7 @@ class RUwot(RPackage): license("GPL-3.0-or-later") + version("0.2.2", sha256="d9938c43d29530d4b36d1b2649cc679b09945a740db2cd3a266242b1aa9a6cd1") version("0.1.14", sha256="8016e8192b7e72604ca71840cbe43fa1d2caed8a8ad7cbf20e85cd3b384a9fe0") version("0.1.11", sha256="4fcf90f1369a2a1f01db9e05a2365b155b2ada8e51e1f7f3ba5122d86affd41b") version("0.1.10", sha256="6ee1b6027bce679cd5a35f647f516a5b327632234bcf323c7f3d5b5e10807d23") @@ -36,6 +37,7 @@ class RUwot(RPackage): depends_on("r-rcppannoy@0.0.17:", type=("build", "run"), when="@0.1.10:") depends_on("r-irlba", type=("build", "run")) depends_on("r-rcppprogress", type=("build", "run")) + depends_on("r-rspectra", type=("build", "run"), when="@0.2.2:") depends_on("r-dqrng", type=("build", "run")) depends_on("r-rcppparallel", type=("build", "run"), when="@:0.1.3") diff --git a/var/spack/repos/builtin/packages/r-v8/package.py b/var/spack/repos/builtin/packages/r-v8/package.py index 423c952e82b8e6..0d4dbf747dfa27 100644 --- a/var/spack/repos/builtin/packages/r-v8/package.py +++ b/var/spack/repos/builtin/packages/r-v8/package.py @@ -15,6 +15,7 @@ class RV8(RPackage): cran = "V8" + version("5.0.0", sha256="668fb759f973016e1e6aae21d711e83226d6895b43b2476c77feadf47896b21a") version("4.3.0", sha256="7e395c4faed0d2a9d647820269d2d374953fc67c6108d57d63e93ec570dbe0d0") version("4.2.2", sha256="50653527198637a37c010052f394839f50a3c643975aac1d04e42d36f8e5313b") version("4.2.1", sha256="99881af4798d11da0adccd8e4e1aa5dc4adccf5e3572724c14f6f90c2b8c3ff0") diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 14933c740c03c0..47bb1bb196f176 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -20,6 +20,7 @@ class RVcd(RPackage): license("GPL-2.0-only") + version("1.4-12", sha256="c931ef115529931cddb1d5caec4d4d3569ebf12aadde719b2f5019812c9ded88") version("1.4-11", sha256="7a54e855689e1429d46e0d4d7a956f96b0ad2fd0c7084fa023902c55849e0932") version("1.4-10", sha256="7188192afa289350cc1b89790f4f8f5a5114c1c88bee7715a0c8f5347aa0b35b") version("1.4-9", sha256="a5b420ad5ff1a27fa92f98099a8b43f2dded7e5f60297b3e4d947ad6f039568f") diff --git a/var/spack/repos/builtin/packages/r-vcfr/package.py b/var/spack/repos/builtin/packages/r-vcfr/package.py index f8320ac87e6a56..a818ee8b6b5117 100644 --- a/var/spack/repos/builtin/packages/r-vcfr/package.py +++ b/var/spack/repos/builtin/packages/r-vcfr/package.py @@ -22,6 +22,7 @@ class RVcfr(RPackage): maintainers("dorton21") + version("1.15.0", sha256="df17e48b961d96f2a78a1a15037df674f57d0445f2669e401543d8082f0b49fa") version("1.14.0", sha256="8576dbd2e5a707dabc20acbbea3fe18b6a783910e622423ac203609a386204cb") version("1.13.0", sha256="743ce845732ada638f0f8a2cd789cd06aa25d818fec87c8bdb998f7c77089ebc") version("1.12.0", sha256="dd87ff010365de363864a44ca49887c0fdad0dd18d0d9c66e44e39c2d4581d52") diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index 5821e4b266fc5b..9fa33c733c0f49 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -16,6 +16,7 @@ class RVegan(RPackage): license("GPL-2.0-only") + version("2.6-6.1", sha256="7d2a5e700a6639bef203d6e35dfe6e8cc1dd7440957334317b61a9dafbb90b60") version("2.6-4", sha256="5d8ad4bebe79ae2bbd840a34100cf54c62f089c66ea484a542a201afcba21d06") version("2.6-2", sha256="ab77d110c959d19b0c6268ae0c8f78c897e2419eff3f1f7b19c1bb2f8db7c059") version("2.5-7", sha256="e63b586951ea7d8b0118811f329c700212892ec1db3b93951603ce1d68aa462a") @@ -27,6 +28,7 @@ class RVegan(RPackage): depends_on("r@3.1.0:", type=("build", "run"), when="@2.5-1") depends_on("r@3.2.0:", type=("build", "run"), when="@2.5-2:") depends_on("r@3.4.0:", type=("build", "run"), when="@2.5-5:") + depends_on("r@4.1.0:", type=("build", "run"), when="@2.6-6:") depends_on("r-permute@0.9-0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-vgam/package.py b/var/spack/repos/builtin/packages/r-vgam/package.py index 1a51917d721f39..74191bc257e5d9 100644 --- a/var/spack/repos/builtin/packages/r-vgam/package.py +++ b/var/spack/repos/builtin/packages/r-vgam/package.py @@ -28,6 +28,7 @@ class RVgam(RPackage): cran = "VGAM" + version("1.1-11", sha256="de9d909bd2bcfccf55d24f96999e0780ca45ec29030e227a722eb24e378b33a5") version("1.1-8", sha256="d4c0f1d4e356d88ab6f39c05076ff97ebef6d20b7fbf1b0fa31d40c73d0ad1cc") version("1.1-7", sha256="a4c52d392332477eac557c84b732f3c03dd48f75db3884e23c71cf99d991757e") version("1.1-6", sha256="446a61bac5dd4794e05d20c2f3901eec54afac52c6e23ce2787c5575170dd417") diff --git a/var/spack/repos/builtin/packages/r-vioplot/package.py b/var/spack/repos/builtin/packages/r-vioplot/package.py index 8cf9bf66acbe59..59eab53e5da084 100644 --- a/var/spack/repos/builtin/packages/r-vioplot/package.py +++ b/var/spack/repos/builtin/packages/r-vioplot/package.py @@ -16,6 +16,7 @@ class RVioplot(RPackage): license("BSD-3-Clause") + version("0.5.0", sha256="b04e91ccb810573d13a2ac1136bc6e4747c4c663fa53ff1ce7327c1a13530965") version("0.4.0", sha256="5729b483e3a4f7c81d2cc22c8bc5211b64e289734e9da5b5696c4974067867b5") version("0.3.7", sha256="06475d9a47644245ec91598e9aaef7db1c393802d9fc314420ac5139ae56adb6") version("0.3.5", sha256="1b64833c1bd6851036cf1c400c7d0036a047e71def94a399c897263b4b303e2a") diff --git a/var/spack/repos/builtin/packages/r-vipor/package.py b/var/spack/repos/builtin/packages/r-vipor/package.py index aa0b4a3273a223..3151ccbb1ec14a 100644 --- a/var/spack/repos/builtin/packages/r-vipor/package.py +++ b/var/spack/repos/builtin/packages/r-vipor/package.py @@ -17,7 +17,9 @@ class RVipor(RPackage): license("GPL-2.0-or-later") + version("0.4.7", sha256="baad41e9ddaa13b5a1db1abab34253b27d5b99e5a6a649b2036aaf1483370b9e") version("0.4.5", sha256="7d19251ac37639d6a0fed2d30f1af4e578785677df5e53dcdb2a22771a604f84") version("0.4.4", sha256="5abfd7869dae42ae2e4f52206c23433a43b485b1220685e445877ee5864a3f5c") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.4.7:") diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index 8807a1a30115ca..4de67f1f7c012c 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -21,6 +21,7 @@ class RViridis(RPackage): license("MIT") + version("0.6.5", sha256="862b5cb6be115deea0207cdd3c8bb33de28552cfdc29900777512fd488d0005c") version("0.6.2", sha256="69b58cd1d992710a08b0b227fd0a9590430eea3ed4858099412f910617e41311") version("0.5.1", sha256="ddf267515838c6eb092938133035cee62ab6a78760413bfc28b8256165701918") version("0.5.0", sha256="fea477172c1e11be40554545260b36d6ddff3fe6bc3bbed87813ffb77c5546cd") diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index 4b6a08da391eb3..d9b31c46c7cf82 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -19,6 +19,7 @@ class RViridislite(RPackage): cran = "viridisLite" + version("0.4.2", sha256="893f111d31deccd2cc959bc9db7ba2ce9020a2dd1b9c1c009587e449c4cce1a1") version("0.4.1", sha256="a896db1ccae5fc1a8b3764d02f24cef74ef7a8341cf9f3401c4efe799870ea97") version("0.4.0", sha256="849955dc8ad9bc52bdc50ed4867fd92a510696fc8294e6971efa018437c83c6a") version("0.3.0", sha256="780ea12e7c4024d5ba9029f3a107321c74b8d6d9165262f6e64b79e00aa0c2af") diff --git a/var/spack/repos/builtin/packages/r-vroom/package.py b/var/spack/repos/builtin/packages/r-vroom/package.py index 9843483ddf7515..99af883c81db73 100644 --- a/var/spack/repos/builtin/packages/r-vroom/package.py +++ b/var/spack/repos/builtin/packages/r-vroom/package.py @@ -19,6 +19,7 @@ class RVroom(RPackage): license("MIT") + version("1.6.5", sha256="7bdca21e58c9c5049d7445d182f59fd399193cb2f4318d083de0a559ec9b5761") version("1.6.1", sha256="eb0e33d53212f9c7e8b38d632c98bd5015365cc13f55dadb15ff0d404b31807c") version("1.6.0", sha256="a718ccdf916442693af5392944774d8aec5ce48f417871f9de84dd1089d26ca6") version("1.5.7", sha256="d087cb148f71c222fc89199d03df2502689149873414a6d89c2f006d3a109fde") @@ -26,6 +27,7 @@ class RVroom(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.6.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.6.4:") depends_on("r-bit64", type=("build", "run")) depends_on("r-crayon", type=("build", "run")) depends_on("r-cli", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-waldo/package.py b/var/spack/repos/builtin/packages/r-waldo/package.py index 69b70bcd053bea..77ba7a5e26d182 100644 --- a/var/spack/repos/builtin/packages/r-waldo/package.py +++ b/var/spack/repos/builtin/packages/r-waldo/package.py @@ -17,10 +17,12 @@ class RWaldo(RPackage): license("MIT") + version("0.5.2", sha256="82cdae1ab2c5e7e5dbf5c6bdf832020b46e152732053fb45de7c9a81afdf2e05") version("0.4.0", sha256="57ee89eec9bcbba58cf8fa29c8e097f038768c30833eaf812682826333127eaa") version("0.3.1", sha256="ec2c8c1afbc413f8db8b6b0c6970194a875f616ad18e1e72a004bc4497ec019b") version("0.2.3", sha256="1fbab22fe9be6ca8caa3df7306c763d7025d81ab6f17b85daaf8bdc8c9455c53") + depends_on("r@3.6:", type=("build", "run"), when="@0.5.2:") depends_on("r-cli", type=("build", "run")) depends_on("r-diffobj", type=("build", "run")) depends_on("r-diffobj@0.3.4:", type=("build", "run"), when="@0.3.1:") diff --git a/var/spack/repos/builtin/packages/r-webshot/package.py b/var/spack/repos/builtin/packages/r-webshot/package.py index 044732bf6b8417..9f63294f240824 100644 --- a/var/spack/repos/builtin/packages/r-webshot/package.py +++ b/var/spack/repos/builtin/packages/r-webshot/package.py @@ -16,6 +16,7 @@ class RWebshot(RPackage): license("GPL-2.0-only") + version("0.5.5", sha256="d675913ccac80e0af8ee396f95a24124eae6c42d80aed9f47f7a88218ecbb913") version("0.5.4", sha256="3dc2b9baef7855e1deea060276b9ccc6375eee36b7100987cbb1f8e5cd7a8f24") version("0.5.3", sha256="b7c4f2be61c8c4730202a9c3604072478e30cb85b423b7497cd703cc3f49dbc0") version("0.5.2", sha256="f183dc970157075b51ac543550a7a48fa3428b9c6838abb72fe987c21982043f") diff --git a/var/spack/repos/builtin/packages/r-wgcna/package.py b/var/spack/repos/builtin/packages/r-wgcna/package.py index b11908f1052e60..55ffd8739e1aa8 100644 --- a/var/spack/repos/builtin/packages/r-wgcna/package.py +++ b/var/spack/repos/builtin/packages/r-wgcna/package.py @@ -20,6 +20,7 @@ class RWgcna(RPackage): cran = "WGCNA" + version("1.72-5", sha256="03439143ff235c17f0dbca7dd6362afa8ddb5a72594f5c2df1c6df1caca2e79d") version("1.72-1", sha256="1dbf82761ef3e76464b18fc9f698ad0f971aafecabf66ca937b950930bd57fdc") version("1.71", sha256="21f5349e888ea76241912600ee5c35a0d2fd50180568b9b08b2b597f099bf708") version("1.70-3", sha256="b9843b839728183af6b746f239e9519d438b294613362b556002acdb8522cbd4") diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index b678ee0b112e91..b0ec21dda4a1ec 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -18,6 +18,7 @@ class RWithr(RPackage): license("MIT") + version("3.0.1", sha256="d573f1ac2f733c7dd89669feb495d68f1f15d7a9774473c2e46a9848945a3841") version("2.5.0", sha256="37317b3ed790a08407072993a05ab255f6305f95a12a16e0e28aa6aa80fc8bc0") version("2.4.3", sha256="9bdac7459ccc6c2d599ecfd132a7f0aa68d958942d9fe7dbb0442c9eda129d4c") version("2.4.2", sha256="48f96a4cb780cf6fd5fbbea1f1eb04ea3102d7a4a644cae1ed1e91139dcbbac8") @@ -29,3 +30,4 @@ class RWithr(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@2.2:") + depends_on("r@3.6.0:", type=("build", "run"), when="@3.0.1:") diff --git a/var/spack/repos/builtin/packages/r-wk/package.py b/var/spack/repos/builtin/packages/r-wk/package.py index 4b3497b89d7649..d445018ee36207 100644 --- a/var/spack/repos/builtin/packages/r-wk/package.py +++ b/var/spack/repos/builtin/packages/r-wk/package.py @@ -20,6 +20,7 @@ class RWk(RPackage): license("MIT") + version("0.9.2", sha256="33675edd9baedb09bf69a3a55fec3190e2bf57a5f4f63f94bc06861b5e83e5f8") version("0.7.2", sha256="6f8b72f54e2efea62fda8bc897124b43a39b81cffa9569103d06d95f946eab2f") version("0.7.0", sha256="e24327d38f2ff2d502c67c60eba3b4e44079a64ed8b805df64f231dc4712a2de") version("0.6.0", sha256="af2c2837056a6dcc9f64d5ace29601d6d668c95769f855ca0329648d7326eaf5") diff --git a/var/spack/repos/builtin/packages/r-writexl/package.py b/var/spack/repos/builtin/packages/r-writexl/package.py new file mode 100644 index 00000000000000..84f8d76b47700a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-writexl/package.py @@ -0,0 +1,20 @@ +# 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) + +from spack.package import * + + +class RWritexl(RPackage): + """Zero-dependency data frame to xlsx exporter based on 'libxlsxwriter'. + Fast and no Java or Excel required.""" + + homepage = "https://docs.ropensci.org/writexl/" + cran = "writexl" + + license("BSD-2-Clause", checked_by="wdconinc") + + version("1.5.0", sha256="e253dc58f00abf51e9b727ae132e8b301e359fb23df0afc40c3ebec3fb096dce") + + depends_on("zlib-api", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-wru/package.py b/var/spack/repos/builtin/packages/r-wru/package.py index ef07ef21b40d83..a945fa30b920e1 100644 --- a/var/spack/repos/builtin/packages/r-wru/package.py +++ b/var/spack/repos/builtin/packages/r-wru/package.py @@ -25,6 +25,7 @@ class RWru(RPackage): license("GPL-3.0-or-later") + version("3.0.3", sha256="8430fc83609cda110eb340d104d408d362110d15d23208e7f5213cfeeb4a13b5") version("1.0.1", sha256="80b3f54cb2de77ea005755a2de3acfb923a1d380c0dbd52bc4d3e3fcb1d6f1fc") version("1.0.0", sha256="4eae65644981d0b99d3610adf40340b3606f40e6cd578e76a745524ba927e417") version("0.1-12", sha256="896ef4718109ab9fee686f050a3269cbab1589ef2aff7a45fc11a67f7bb35a29") @@ -45,6 +46,7 @@ class RWru(RPackage): depends_on("r@3.2.0:", type=("build", "run"), when="@0.0-1:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.0-10:") depends_on("r@4.1.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-cli", type=("build", "run"), when="@3.0.0:") depends_on("r-devtools", type=("build", "run"), when="@0.0-2:0.1-12") depends_on("r-devtools@1.10.0:", type=("build", "run"), when="@0.1-1:0.1-12") depends_on("r-dplyr", type=("build", "run"), when="@1.0.0:") @@ -53,6 +55,8 @@ class RWru(RPackage): depends_on("r-purrr", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpp", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpparmadillo", type=("build", "run"), when="@1.0.0:") + depends_on("r-rlang", type=("build", "run"), when="@3.0.0:") depends_on("r-piggyback", type=("build", "run"), when="@1.0.0:") depends_on("r-piggyback@0.1.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-pl94171", type=("build", "run"), when="@1.0.0:") + depends_on("r-tidyr", type=("build", "run"), when="@3.0.0:") diff --git a/var/spack/repos/builtin/packages/r-xfun/package.py b/var/spack/repos/builtin/packages/r-xfun/package.py index 57f44f4912a49b..84cc89d0684349 100644 --- a/var/spack/repos/builtin/packages/r-xfun/package.py +++ b/var/spack/repos/builtin/packages/r-xfun/package.py @@ -16,6 +16,7 @@ class RXfun(RPackage): license("MIT") + version("0.47", sha256="999874fdbf4df2e686a3cb134bfef782c0d3eb0141006191ca1eda94ce232c4b") version("0.39", sha256="d0ecaabb243dd3496da6029932fcdd4772914843de7ffd0b78a172efde1356c9") version("0.34", sha256="50e76c1febb988c044e44fb78e1abc1ba681173c9ff3c336f4c0ad71e6a2853d") version("0.33", sha256="45fbc2d252867b69bbde64d4a4e3d2e049ad1d3a84984e9cfb242d8d1f41ee6c") @@ -24,3 +25,5 @@ class RXfun(RPackage): version("0.24", sha256="e3e39a95202f6db4f6de3a8b9a344074a4944a3a8a522d44971390c905e2b583") version("0.20", sha256="284239d12a3d5ea7d1ef8b1382fb0a7a4661af54c85510501279681871da7c10") version("0.8", sha256="c2f8ecf8b57ddec02f9be7f417d9e22fc1ae2c7db8d70aa703fc62bf4a5c5416") + + depends_on("r@3.2.0:", when="@0.47:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 9abb3f87a86dd4..317c910a4d8461 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -23,6 +23,7 @@ class RXgboost(RPackage): license("Apache-2.0 OR custom") + version("1.7.8.1", sha256="394d6fd00b2fe97549c7a7e6598df86448cdfbd7c0af45b0c17f7b9e81bc1be9") version("1.7.5.1", sha256="4ec0833f206f84e5983e9f373ea64903bec488f751fba6f75a6f4702b1c965bc") version("1.6.0.1", sha256="9ae99a20997e1b02ffd21cabada2a55e53f5754746238ee900de5eb6cd964ebd") version("1.5.0.2", sha256="4750b9a289d8cb685291939eed7c493bb42c5cc154ef98e13100abb1727eab13") @@ -40,9 +41,6 @@ class RXgboost(RPackage): depends_on("r-jsonlite@1.0:", type=("build", "run"), when="@1.5.0.2:") depends_on("gmake", type="build") - # This is not listed as required, but installation fails without it - # ERROR: dependency 'stringr' is not available for package 'xgboost' - depends_on("r-stringr", type=("build", "run")) - + depends_on("r-stringr", type=("build", "run"), when="@:0.7") depends_on("r-stringi@0.5.2:", type=("build", "run"), when="@:0.90.0.2") depends_on("r-magrittr@1.5:", type=("build", "run"), when="@:1.3.2.1") diff --git a/var/spack/repos/builtin/packages/r-xlconnect/package.py b/var/spack/repos/builtin/packages/r-xlconnect/package.py index a91a83c1bd823e..841cea86d5ac3f 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -14,6 +14,7 @@ class RXlconnect(RPackage): cran = "XLConnect" + version("1.0.10", sha256="e3c267cb1e6a6fb3a9fb132e60649182ee7a28e4e9188c72786fb843aad6e2b4") version("1.0.7", sha256="821dba231c3c3147455e7525119b51e5dc001984c638b7ce519d0974b32de677") version("1.0.6", sha256="b233b9f74d1464b78d5dd28bd8a1fa46ca6254518da2d3bda3c978a3f4aaa4f9") version("1.0.5", sha256="975c2ef57f28ccfac79ae5d285b7e82e60791fb121052616c10bc52e2bca16ad") diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index 7c69fe12e6ec30..a66775fda7d58a 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -15,6 +15,7 @@ class RXml(RPackage): cran = "XML" + version("3.99-0.17", sha256="6e233265ff69ff2f59f56fe4abc5af70e2cfa6d99aec6ad2afd2bf2c0d98a2d8") version("3.99-0.14", sha256="2cb6a61a4d8d89e311994f47df09913d4ce5281317d42c78af4aafd75a31f1f9") version("3.99-0.12", sha256="cb209425c886bf405dc03fda8854e819bd9b2d4e4b031c71c5120b7302a36d14") version("3.99-0.11", sha256="c523bd8e6419d44a477038396e9c3b3ec70a67ed85a0c9bfa8b9445f91647fc8") diff --git a/var/spack/repos/builtin/packages/r-xml2/package.py b/var/spack/repos/builtin/packages/r-xml2/package.py index 33165efa43f8e6..306c5aa0c3643c 100644 --- a/var/spack/repos/builtin/packages/r-xml2/package.py +++ b/var/spack/repos/builtin/packages/r-xml2/package.py @@ -16,6 +16,7 @@ class RXml2(RPackage): license("MIT") + version("1.3.6", sha256="e81991ff99bff3616dde8683c1327194e3ea64fa3b8062f52d8ce32673dd308f") version("1.3.3", sha256="cb4e9c0d31618ed67d2bfa4c7b5e52680e11612ed356a8164b541d44163c1c8d") version("1.3.2", sha256="df22f9e7e3189d8c9b8804eaf0105324fdac983cffe743552f6d76613600a4cf") version("1.2.2", sha256="3050f147c4335be2925a576557bbda36bd52a5bba3110d47b740a2dd811a78f4") @@ -23,7 +24,10 @@ class RXml2(RPackage): version("1.1.1", sha256="00f3e3b66b76760c19da5f6dddc98e6f30de36a96b211e59e1a3f4ff58763116") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@1.3.6:") depends_on("libxml2") - depends_on("r-rcpp@0.12.12:", type=("build", "run"), when="@:1.2") depends_on("r-bh", type=("build", "run"), when="@:1.1.1") + depends_on("r-cli", type=("build", "run"), when="@1.3.6:") + depends_on("r-rcpp@0.12.12:", type=("build", "run"), when="@:1.2") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.3.6:") diff --git a/var/spack/repos/builtin/packages/r-xopen/package.py b/var/spack/repos/builtin/packages/r-xopen/package.py index e2086426414906..577246068b259c 100644 --- a/var/spack/repos/builtin/packages/r-xopen/package.py +++ b/var/spack/repos/builtin/packages/r-xopen/package.py @@ -16,6 +16,7 @@ class RXopen(RPackage): license("MIT") + version("1.0.1", sha256="e3b278b8c324a1aa2650141dd89d01253eea5c2555007422c797915689b29aec") version("1.0.0", sha256="e207603844d69c226142be95281ba2f4a056b9d8cbfae7791ba60535637b3bef") depends_on("r@3.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index af45b05ae06b5d..468a19f8f9fa72 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -18,6 +18,7 @@ class RXts(RPackage): license("GPL-2.0-or-later") + version("0.14.0", sha256="d28b16eefa9876a815bad3fc204779c197e3a0d7796b8dae8856fe153f5fcfd9") version("0.13.1", sha256="2c3907c6d0162e48d1898647105bbb32cfe0cb005788481a64ee675a941d825d") version("0.13.0", sha256="188e4d1d8c3ec56a544dfb9da002e8aac80b9303d0a5a1f62ff0e960aeef9674") version("0.12.2", sha256="9c287ceaeb758ff4c9596be6a688db5683d50b45e7610e6d068891ca10dca743") diff --git a/var/spack/repos/builtin/packages/r-yaimpute/package.py b/var/spack/repos/builtin/packages/r-yaimpute/package.py index bee3635d39d8d5..6fda7d1e8c3886 100644 --- a/var/spack/repos/builtin/packages/r-yaimpute/package.py +++ b/var/spack/repos/builtin/packages/r-yaimpute/package.py @@ -22,6 +22,7 @@ class RYaimpute(RPackage): cran = "yaImpute" + version("1.0-34", sha256="b4c898c95fca784480bbbc239c78c85dc9f45a96c34c563ea7e81248ef8a8a73") version("1.0-33", sha256="58595262eb1bc9ffeeadca78664c418ea24b4e894744890c00252c5ebd02512c") version("1.0-32", sha256="08eee5d851b80aad9c7c80f9531aadd50d60e4b16b3a80657a50212269cd73ff") diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index f8cb214c859267..d9ada94424604a 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -16,6 +16,7 @@ class RYaml(RPackage): license("BSD-3-Clause") + version("2.3.10", sha256="e236d42d366e361d4855aa4f520260debd53a31e4786442b94770b045da02a6d") version("2.3.7", sha256="d20cb219e0f9c48aba02f132f81cfa9ecda5e22c925e36726840218ed56680ab") version("2.3.6", sha256="5dd19d8d6654ef2e4ccd6216ce8e96ca5185ae6143f95194955f6908a6e1ba26") version("2.3.5", sha256="3edf6c0554a0e184a25e8bec5721a2e66b4ab0dceb3737428e22705e52eb5140") diff --git a/var/spack/repos/builtin/packages/r-yulab-utils/package.py b/var/spack/repos/builtin/packages/r-yulab-utils/package.py index 30137e8782079b..a5de07b5736869 100644 --- a/var/spack/repos/builtin/packages/r-yulab-utils/package.py +++ b/var/spack/repos/builtin/packages/r-yulab-utils/package.py @@ -13,6 +13,15 @@ class RYulabUtils(RPackage): cran = "yulab.utils" + version("0.1.6", sha256="589be7ad1425f7d84dc3748f352fc432e494edb725209c05e28ca2a44f34beec") version("0.0.6", sha256="973a51b8d1284060aec34e94849eea6783439dbcbf85083dd4f1a5df4f927b25") version("0.0.5", sha256="6ecd4dc5dae40e86b7a462fdac3ab8c0b276dcae5a284eb43390a05b01e3056b") version("0.0.4", sha256="38850663de53a9166b8e85deb85be1ccf1a5b310bbe4355f3b8bc823ed1b49ae") + + depends_on("r-cli", when="@0.1.0:", type=("build", "run")) + depends_on("r-digest", when="@0.1.0:", type=("build", "run")) + depends_on("r-fs", when="@0.1.0:", type=("build", "run")) + depends_on("r-httr2", when="@0.1.6:", type=("build", "run")) + depends_on("r-rlang", when="@0.0.7:", type=("build", "run")) + + depends_on("r-memoise", when="@0.0.7:0.1.5", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-zcompositions/package.py b/var/spack/repos/builtin/packages/r-zcompositions/package.py index 110f4a120ed891..67ce6f10be70f0 100644 --- a/var/spack/repos/builtin/packages/r-zcompositions/package.py +++ b/var/spack/repos/builtin/packages/r-zcompositions/package.py @@ -16,6 +16,7 @@ class RZcompositions(RPackage): cran = "zCompositions" + version("1.5.0-4", sha256="73188e1e065a042723ed7a48df04e22317b204222d40744b83e8c392aae16aaf") version("1.4.0-1", sha256="33ee11f635cb87cc9c0617e1cfc91f1ac41c6cfe2b70fc441e226015939230e7") version("1.4.0", sha256="a00d7d0ba861988b1836e947fd521d58137a4def04a5d7aa73a099314b7e530c") version("1.3.4", sha256="ae22c86fe92368a26265933f42eecc518b9b69e7d9b698bc31bfaabfc3c48e95") diff --git a/var/spack/repos/builtin/packages/r-zip/package.py b/var/spack/repos/builtin/packages/r-zip/package.py index 8f17fba4579a3d..4d0dfe08deafaa 100644 --- a/var/spack/repos/builtin/packages/r-zip/package.py +++ b/var/spack/repos/builtin/packages/r-zip/package.py @@ -17,6 +17,7 @@ class RZip(RPackage): license("MIT") + version("2.3.1", sha256="83754408781c525917f36535865d28214893de0778b5f337e050cb543cacc28f") version("2.3.0", sha256="33eba844922af9981732ee6ec1582d46cf04c562344f09a0f0f14a22c6f74543") version("2.2.2", sha256="e16cde23bb283efbe9b6bce19575c716c371d09033b42514471ccb444c0a8ea4") version("2.2.1", sha256="14873d0874813139411c120d8b209af71e4e087871eeb963f235411eb1061422") From 161b2d7cb027b2146f465cb1df2ed511fba2ad81 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Oct 2024 09:18:56 +0100 Subject: [PATCH 218/615] std_pip_args: use PythonPipBuilder.std_args(...) instead (#47260) --- var/spack/repos/builtin/packages/cmor/package.py | 4 ++-- var/spack/repos/builtin/packages/faiss/package.py | 15 +++++++-------- .../repos/builtin/packages/fenics/package.py | 4 ++-- .../repos/builtin/packages/flatbuffers/package.py | 4 ++-- .../repos/builtin/packages/jsonnet/package.py | 4 ++-- .../repos/builtin/packages/lammps/package.py | 4 ++-- var/spack/repos/builtin/packages/mxnet/package.py | 4 ++-- var/spack/repos/builtin/packages/nvtx/package.py | 3 +-- .../repos/builtin/packages/py-dgl/package.py | 4 ++-- .../repos/builtin/packages/py-jaxlib/package.py | 4 ++-- .../repos/builtin/packages/py-keras/package.py | 4 ++-- .../repos/builtin/packages/py-meldmd/package.py | 6 +++--- .../builtin/packages/py-onnxruntime/package.py | 4 ++-- .../repos/builtin/packages/py-or-tools/package.py | 4 ++-- .../py-pennylane-lightning-kokkos/package.py | 4 ++-- .../packages/py-pennylane-lightning/package.py | 4 ++-- .../repos/builtin/packages/py-pip/package.py | 8 ++++---- .../builtin/packages/py-pynucleus/package.py | 5 ++--- .../builtin/packages/py-setuptools/package.py | 4 ++-- .../py-tensorboard-data-server/package.py | 4 ++-- .../packages/py-tensorflow-estimator/package.py | 4 ++-- .../builtin/packages/py-tensorflow-hub/package.py | 4 ++-- .../packages/py-tensorflow-probability/package.py | 4 ++-- .../builtin/packages/py-tensorflow/package.py | 7 +++---- .../repos/builtin/packages/py-tfdlpack/package.py | 4 ++-- .../repos/builtin/packages/py-wheel/package.py | 4 ++-- var/spack/repos/builtin/packages/sgpp/package.py | 4 ++-- .../repos/builtin/packages/sourmash/package.py | 4 ++-- .../repos/builtin/packages/tamaas/package.py | 4 ++-- .../repos/builtin/packages/treelite/package.py | 4 ++-- 30 files changed, 68 insertions(+), 72 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index 56db33761540be..817ffbe9a1c973 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -76,5 +77,4 @@ def install(self, spec, prefix): make("install") if spec.satisfies("+python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", ".") diff --git a/var/spack/repos/builtin/packages/faiss/package.py b/var/spack/repos/builtin/packages/faiss/package.py index 5af55c95df5103..ceb57a874ec0d3 100644 --- a/var/spack/repos/builtin/packages/faiss/package.py +++ b/var/spack/repos/builtin/packages/faiss/package.py @@ -5,6 +5,7 @@ import os +from spack.build_systems import autotools, cmake, python from spack.package import * @@ -91,7 +92,7 @@ def setup_run_environment(self, env): env.append_path("LD_LIBRARY_PATH", os.path.join(python_platlib, "faiss")) -class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): +class CMakeBuilder(cmake.CMakeBuilder): def cmake_args(self): spec = self.spec args = [ @@ -113,20 +114,19 @@ def install(self, pkg, spec, prefix): super().install(pkg, spec, prefix) if spec.satisfies("+python"): - class CustomPythonPipBuilder(spack.build_systems.python.PythonPipBuilder): + class CustomPythonPipBuilder(python.PythonPipBuilder): def __init__(self, pkg, build_dirname): - spack.build_systems.python.PythonPipBuilder.__init__(self, pkg) + python.PythonPipBuilder.__init__(self, pkg) self.build_dirname = build_dirname @property def build_directory(self): return os.path.join(self.pkg.stage.path, self.build_dirname, "faiss", "python") - customPip = CustomPythonPipBuilder(pkg, self.build_dirname) - customPip.install(pkg, spec, prefix) + CustomPythonPipBuilder(pkg, self.build_dirname).install(pkg, spec, prefix) -class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(autotools.AutotoolsBuilder): def configure_args(self): args = [] args.extend(self.with_or_without("cuda", activation_value="prefix")) @@ -156,8 +156,7 @@ def install(self, pkg, spec, prefix): if self.spec.satisfies("+python"): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*python.PythonPipBuilder.std_args(pkg), f"--prefix={prefix}", ".") if "+tests" not in self.spec: return diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index ec9d77b5c4ad1a..cec4412ee6579d 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * from spack.pkg.builtin.boost import Boost @@ -194,5 +195,4 @@ def setup_run_environment(self, env): def install_python_interface(self): if self.spec.satisfies("+python"): with working_dir("python"): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/flatbuffers/package.py b/var/spack/repos/builtin/packages/flatbuffers/package.py index 38cac7d8e9835c..38ac09ef24babd 100644 --- a/var/spack/repos/builtin/packages/flatbuffers/package.py +++ b/var/spack/repos/builtin/packages/flatbuffers/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -59,8 +60,7 @@ def python_install(self): if self.spec.satisfies("+python"): pydir = join_path(self.stage.source_path, "python") with working_dir(pydir): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/jsonnet/package.py b/var/spack/repos/builtin/packages/jsonnet/package.py index 37d7464653a084..24d5465b40947e 100644 --- a/var/spack/repos/builtin/packages/jsonnet/package.py +++ b/var/spack/repos/builtin/packages/jsonnet/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -40,5 +41,4 @@ def install_targets(self): @run_after("install") def python_install(self): if "+python" in self.spec: - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 5b8601dcf16b46..6b8287b49ce2d4 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -6,6 +6,7 @@ import os from spack.build_environment import optimization_flags +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -1003,5 +1004,4 @@ def install_python(self): os.environ["LAMMPS_VERSION_FILE"] = join_path( self.stage.source_path, "src", "version.h" ) - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py index 084b1d241556da..690b3803aa3a9e 100644 --- a/var/spack/repos/builtin/packages/mxnet/package.py +++ b/var/spack/repos/builtin/packages/mxnet/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -126,5 +127,4 @@ def cmake_args(self): def install_python(self): if "+python" in self.spec: with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/nvtx/package.py b/var/spack/repos/builtin/packages/nvtx/package.py index ef2ecfa64c9249..c6f6af43817774 100644 --- a/var/spack/repos/builtin/packages/nvtx/package.py +++ b/var/spack/repos/builtin/packages/nvtx/package.py @@ -48,6 +48,5 @@ def install(self, spec, prefix): install("./nvtx-config.cmake", prefix) # added by the patch above - args = std_pip_args + ["--prefix=" + prefix, "."] with working_dir(self.build_directory): - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/py-dgl/package.py b/var/spack/repos/builtin/packages/py-dgl/package.py index f16980179eba06..814041b93b90ef 100644 --- a/var/spack/repos/builtin/packages/py-dgl/package.py +++ b/var/spack/repos/builtin/packages/py-dgl/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -132,8 +133,7 @@ def cmake_args(self): def install(self, spec, prefix): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") # Older versions do not install correctly if self.spec.satisfies("@:0.4.3"): diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index 5bae94ebaf5bc3..3ba330388e2a02 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * rocm_dependencies = [ @@ -194,7 +195,6 @@ def install(self, spec, prefix): python(*args) with working_dir(self.wrapped_package_object.tmp_path): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.wrapped_package_object.tmp_path) remove_linked_tree(self.wrapped_package_object.buildtmp) diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 0864c36993a842..c4c5aa558574f3 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -199,6 +200,5 @@ def install(self, spec, prefix): build_pip_package("--src", buildpath) with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-meldmd/package.py b/var/spack/repos/builtin/packages/py-meldmd/package.py index 2f8538154795af..4160aad0b46a19 100644 --- a/var/spack/repos/builtin/packages/py-meldmd/package.py +++ b/var/spack/repos/builtin/packages/py-meldmd/package.py @@ -5,6 +5,7 @@ import os +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -52,11 +53,10 @@ def cmake_args(self): @run_after("install") def install_python(self): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") with working_dir(join_path(self.build_directory, "python")): make("MeldPluginPatch") - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") for _, _, files in os.walk(self.spec["openmm"].prefix.lib.plugins): for f in files: os.symlink( diff --git a/var/spack/repos/builtin/packages/py-onnxruntime/package.py b/var/spack/repos/builtin/packages/py-onnxruntime/package.py index 7ea80f69d69406..a5d375f8169298 100644 --- a/var/spack/repos/builtin/packages/py-onnxruntime/package.py +++ b/var/spack/repos/builtin/packages/py-onnxruntime/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -211,6 +212,5 @@ def cmake_args(self): @run_after("install") def install_python(self): """Install everything from build directory.""" - args = std_pip_args + ["--prefix=" + prefix, "."] with working_dir(self.build_directory): - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/py-or-tools/package.py b/var/spack/repos/builtin/packages/py-or-tools/package.py index 2e917b5a7cf2e8..8400f7ae217986 100644 --- a/var/spack/repos/builtin/packages/py-or-tools/package.py +++ b/var/spack/repos/builtin/packages/py-or-tools/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -57,5 +58,4 @@ def install(self, spec, prefix): with working_dir(self.build_directory): make("install") with working_dir(join_path(self.build_directory, "python")): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py index aee29c340b91eb..4513912e67336e 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py @@ -2,6 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -143,8 +144,7 @@ def build(self, pkg, spec, prefix): python("setup.py", "build_ext", *args) def install(self, pkg, spec, prefix): - pip_args = std_pip_args + [f"--prefix={prefix}", "."] - pip(*pip_args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") super().install(pkg, spec, prefix) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py index 030125cebd6eb4..383e03a2d2f34b 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -113,8 +114,7 @@ def build(self, pkg, spec, prefix): python("setup.py", "build_ext", *args) def install(self, pkg, spec, prefix): - pip_args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*pip_args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") super().install(pkg, spec, prefix) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 8d7dd6561c5631..7f63c25837bd3e 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -5,6 +5,7 @@ import os import sys +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -76,15 +77,14 @@ def install(self, spec, prefix): # itself, see: # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 whl = self.stage.archive_file - args = std_pip_args + ["--prefix=" + prefix, whl] if sys.platform == "win32": # On Windows for newer versions of pip, you must bootstrap pip first. # In order to achieve this, use the pip.pyz zipapp version of pip to # bootstrap the pip wheel install. - args.insert(0, os.path.join(self.stage.source_path, "pip.pyz")) + script = os.path.join(self.stage.source_path, "pip.pyz") else: - args.insert(0, os.path.join(whl, "pip")) - python(*args) + script = os.path.join(whl, "pip") + python(script, *PythonPipBuilder.std_args(self), f"--prefix={prefix}", whl) def setup_dependent_package(self, module, dependent_spec: Spec): setattr(module, "pip", python.with_default_args("-m", "pip")) diff --git a/var/spack/repos/builtin/packages/py-pynucleus/package.py b/var/spack/repos/builtin/packages/py-pynucleus/package.py index 9664e7ce9f37bd..a70fb4dfd68a6b 100644 --- a/var/spack/repos/builtin/packages/py-pynucleus/package.py +++ b/var/spack/repos/builtin/packages/py-pynucleus/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -59,11 +60,9 @@ def setup_build_environment(self, env): @run_before("install") def install_python(self): - prefix = self.prefix for subpackage in ["packageTools", "base", "metisCy", "fem", "multilevelSolver", "nl"]: with working_dir(subpackage): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") @run_after("install") def install_additional_files(self): diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index bdfc00a9e15d8d..677c4c06d2cef4 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -95,5 +96,4 @@ def install(self, spec, prefix): # # We work around this issue by installing setuptools from wheels whl = self.stage.archive_file - args = ["-m", "pip"] + std_pip_args + ["--prefix=" + prefix, whl] - python(*args) + python("-m", "pip", *PythonPipBuilder.std_args(self), f"--prefix={prefix}", whl) diff --git a/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py b/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py index e778ecf5e13f9e..5a2b3043c20ca7 100644 --- a/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py +++ b/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py @@ -5,6 +5,7 @@ import glob +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -60,5 +61,4 @@ def install(self, spec, prefix): ) wheel = glob.glob("*.whl")[0] - args = std_pip_args + ["--prefix=" + prefix, wheel] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", wheel) diff --git a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py index 02ed47516997f3..d3308b15b3abf0 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -97,6 +98,5 @@ def install(self, spec, prefix): buildpath = join_path(self.stage.source_path, "spack-build") build_pip_package("--src", buildpath) with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py b/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py index 58916a38d03dda..b126d8a455ed25 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -78,8 +79,7 @@ def install(self, spec, prefix): ) with working_dir(insttmp_path): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(tmp_path) remove_linked_tree(insttmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py b/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py index 9f8360d432dcc6..4c73617d39c3ee 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -118,7 +119,6 @@ def install(self, spec, prefix): bazel(*args) with working_dir(join_path("bazel-bin", "pip_pkg.runfiles", "tensorflow_probability")): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 5529198ba03ea3..f9844ac1945711 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -9,6 +9,7 @@ import tempfile from spack.build_environment import optimization_flags +from spack.build_systems.python import PythonPipBuilder from spack.package import * rocm_dependencies = [ @@ -888,12 +889,10 @@ def install(self, spec, prefix): ) with working_dir(buildpath): wheel = glob.glob("*.whl")[0] - args = std_pip_args + ["--prefix=" + prefix, wheel] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", wheel) else: buildpath = join_path(self.stage.source_path, "spack-build") with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(tmp_path) diff --git a/var/spack/repos/builtin/packages/py-tfdlpack/package.py b/var/spack/repos/builtin/packages/py-tfdlpack/package.py index f3c79f69a8860e..d910096cfdbe93 100644 --- a/var/spack/repos/builtin/packages/py-tfdlpack/package.py +++ b/var/spack/repos/builtin/packages/py-tfdlpack/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -40,8 +41,7 @@ def cmake_args(self): def install(self, spec, prefix): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") def setup_run_environment(self, env): # Prevent TensorFlow from taking over the whole GPU diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 38e4c3062d690a..582918513d73f4 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -43,5 +44,4 @@ def install(self, spec, prefix): # To build wheel from source, you need setuptools and wheel already installed. # We get around this by using a pre-built wheel, see: # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 - args = std_pip_args + ["--prefix=" + prefix, self.stage.archive_file] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", self.stage.archive_file) diff --git a/var/spack/repos/builtin/packages/sgpp/package.py b/var/spack/repos/builtin/packages/sgpp/package.py index caae561d41b8a9..367547e8b932b4 100644 --- a/var/spack/repos/builtin/packages/sgpp/package.py +++ b/var/spack/repos/builtin/packages/sgpp/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * from spack.pkg.builtin.boost import Boost @@ -190,5 +191,4 @@ def install_args(self, spec, prefix): @run_after("install") def python_install(self): if "+python" in self.spec: - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/sourmash/package.py b/var/spack/repos/builtin/packages/sourmash/package.py index 102fc499ee5aaa..abcf9f60c37eaf 100644 --- a/var/spack/repos/builtin/packages/sourmash/package.py +++ b/var/spack/repos/builtin/packages/sourmash/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -35,8 +36,7 @@ def install(self, spec, prefix): cargo = Executable("cargo") cargo("build", "--release") # install python package - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", ".") # move sourmash.so into expected place site_packages = join_path(python_platlib, "sourmash") lib_ext = "dylib" if spec.platform == "Darwin" else "so" diff --git a/var/spack/repos/builtin/packages/tamaas/package.py b/var/spack/repos/builtin/packages/tamaas/package.py index 57ce90a4717181..8e742a2a99171a 100644 --- a/var/spack/repos/builtin/packages/tamaas/package.py +++ b/var/spack/repos/builtin/packages/tamaas/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -101,5 +102,4 @@ def install(self, spec, prefix): scons("install-lib", *args) if spec.satisfies("+python"): - args = ["-m", "pip"] + std_pip_args + ["--prefix=" + prefix, "build-release/python"] - python(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", "build-release/python") diff --git a/var/spack/repos/builtin/packages/treelite/package.py b/var/spack/repos/builtin/packages/treelite/package.py index a7bf2c853fb799..d1ca6ccec376ef 100644 --- a/var/spack/repos/builtin/packages/treelite/package.py +++ b/var/spack/repos/builtin/packages/treelite/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -50,5 +51,4 @@ def cmake_args(self): def python_install(self): if "+python" in self.spec: with working_dir("python"): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") From 44d09f2b2bc08b92ac7129b803f90cc1be328585 Mon Sep 17 00:00:00 2001 From: Alex Hedges Date: Wed, 30 Oct 2024 04:35:30 -0400 Subject: [PATCH 219/615] Fix typo in default `concretizer.yaml` (#47307) This was caught by `codespell` when I copied the config file into an internal repository. --- etc/spack/defaults/concretizer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index 5bbf580bcf826a..b3b0605459125c 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -42,7 +42,7 @@ concretizer: # "minimal": allows the duplication of 'build-tools' nodes only (e.g. py-setuptools, cmake etc.) # "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG) strategy: minimal - # Option to specify compatiblity between operating systems for reuse of compilers and packages + # Option to specify compatibility between operating systems for reuse of compilers and packages # Specified as a key: [list] where the key is the os that is being targeted, and the list contains the OS's # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's # requires two entries i.e. os_compatible: {sonoma: [monterey], monterey: [sonoma]} From 8a10eff757307bc10d0b577c0f92bdc9172c0df8 Mon Sep 17 00:00:00 2001 From: Alex Hedges Date: Wed, 30 Oct 2024 04:38:36 -0400 Subject: [PATCH 220/615] Fix errors found by running `spack audit externals` (#47308) The problem was that `+` is part of the regex grammar, so it needs to be escaped. --- var/spack/repos/builtin/packages/gcc/detection_test.yaml | 2 +- var/spack/repos/builtin/packages/nvhpc/detection_test.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/detection_test.yaml b/var/spack/repos/builtin/packages/gcc/detection_test.yaml index c0195bb8ca1b7b..67b5bc1e129e0f 100644 --- a/var/spack/repos/builtin/packages/gcc/detection_test.yaml +++ b/var/spack/repos/builtin/packages/gcc/detection_test.yaml @@ -26,7 +26,7 @@ paths: extra_attributes: compilers: c: ".*/bin/gcc" - cxx: ".*/bin/g++" + cxx: ".*/bin/g\\+\\+" # Mock a version < 7 of GCC that requires -dumpversion and # errors with -dumpfullversion diff --git a/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml b/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml index bdf1c6b596c4dd..fc8ccfafc84553 100644 --- a/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml +++ b/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml @@ -24,7 +24,7 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" - layout: - executables: @@ -51,7 +51,7 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" - layout: - executables: @@ -78,5 +78,5 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" From 34b2f28a5eae00ff27d03a0639e52f993ef29a55 Mon Sep 17 00:00:00 2001 From: Alex Hedges Date: Wed, 30 Oct 2024 04:40:35 -0400 Subject: [PATCH 221/615] Fix malformed RST link in documentation (#47309) --- lib/spack/docs/contribution_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst index 97f181b85b7387..110bea56daf2d6 100644 --- a/lib/spack/docs/contribution_guide.rst +++ b/lib/spack/docs/contribution_guide.rst @@ -184,7 +184,7 @@ Style Tests Spack uses `Flake8 `_ to test for `PEP 8 `_ conformance and -`mypy ` for type checking. PEP 8 is +`mypy `_ for type checking. PEP 8 is a series of style guides for Python that provide suggestions for everything from variable naming to indentation. In order to limit the number of PRs that were mostly style changes, we decided to enforce PEP 8 conformance. Your PR From 9ac261af584c1ad6bdbcbad8b5ab1aec9283fa11 Mon Sep 17 00:00:00 2001 From: Veselin Dobrev Date: Wed, 30 Oct 2024 01:43:31 -0700 Subject: [PATCH 222/615] Add latest OpenSSL versions. Deprecate previous versions. (#47316) --- .../repos/builtin/packages/openssl/package.py | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index a974bc8c97fb90..cf0e5544fb1919 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -30,26 +30,47 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package license("Apache-2.0") - version("3.3.1", sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e") - version("3.2.2", sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7") - version("3.1.6", sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7") - version("3.0.14", sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca") + version("3.4.0", sha256="e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf") + version("3.3.2", sha256="2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281") + version("3.2.3", sha256="52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239") + version("3.1.7", sha256="053a31fa80cf4aebe1068c987d2ef1e44ce418881427c4464751ae800c31d06c") + version("3.0.15", sha256="23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533") + version( + "3.3.1", + sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e", + deprecated=True, + ) version( "3.3.0", sha256="53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02", deprecated=True, ) + version( + "3.2.2", + sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7", + deprecated=True, + ) version( "3.2.1", sha256="83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39", deprecated=True, ) + version( + "3.1.6", + sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7", + deprecated=True, + ) version( "3.1.5", sha256="6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262", deprecated=True, ) + version( + "3.0.14", + sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca", + deprecated=True, + ) version( "3.0.13", sha256="88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313", From 354615d4918d5ceb42b9477b068ce525c54f9ad9 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 30 Oct 2024 12:15:01 +0100 Subject: [PATCH 223/615] Spec.dependencies: allow to filter on virtuals (#47284) Signed-off-by: Massimiliano Culpo --- lib/spack/llnl/util/lang.py | 9 --- lib/spack/spack/spec.py | 94 ++++++++++++++++++-------------- lib/spack/spack/test/spec_dag.py | 42 ++++++++++++++ 3 files changed, 96 insertions(+), 49 deletions(-) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 326d25e79ba38e..f43773346a948d 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -871,15 +871,6 @@ class UnhashableArguments(TypeError): """Raise when an @memoized function receives unhashable arg or kwarg values.""" -def enum(**kwargs): - """Return an enum-like class. - - Args: - **kwargs: explicit dictionary of enums - """ - return type("Enum", (object,), kwargs) - - T = TypeVar("T") diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index d64507a9a1784f..fc65dcb64b8eaf 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -963,10 +963,6 @@ def _sort_by_dep_types(dspec: DependencySpec): return dspec.depflag -#: Enum for edge directions -EdgeDirection = lang.enum(parent=0, child=1) - - @lang.lazy_lexicographic_ordering class _EdgeMap(collections.abc.Mapping): """Represent a collection of edges (DependencySpec objects) in the DAG. @@ -980,26 +976,20 @@ class _EdgeMap(collections.abc.Mapping): __slots__ = "edges", "store_by_child" - def __init__(self, store_by=EdgeDirection.child): - # Sanitize input arguments - msg = 'unexpected value for "store_by" argument' - assert store_by in (EdgeDirection.child, EdgeDirection.parent), msg - - #: This dictionary maps a package name to a list of edges - #: i.e. to a list of DependencySpec objects - self.edges = {} - self.store_by_child = store_by == EdgeDirection.child + def __init__(self, store_by_child: bool = True) -> None: + self.edges: Dict[str, List[DependencySpec]] = {} + self.store_by_child = store_by_child - def __getitem__(self, key): + def __getitem__(self, key: str) -> List[DependencySpec]: return self.edges[key] def __iter__(self): return iter(self.edges) - def __len__(self): + def __len__(self) -> int: return len(self.edges) - def add(self, edge: DependencySpec): + def add(self, edge: DependencySpec) -> None: key = edge.spec.name if self.store_by_child else edge.parent.name if key in self.edges: lst = self.edges[key] @@ -1008,8 +998,8 @@ def add(self, edge: DependencySpec): else: self.edges[key] = [edge] - def __str__(self): - return "{deps: %s}" % ", ".join(str(d) for d in sorted(self.values())) + def __str__(self) -> str: + return f"{{deps: {', '.join(str(d) for d in sorted(self.values()))}}}" def _cmp_iter(self): for item in sorted(itertools.chain.from_iterable(self.edges.values())): @@ -1026,24 +1016,32 @@ def copy(self): return clone - def select(self, parent=None, child=None, depflag: dt.DepFlag = dt.ALL): - """Select a list of edges and return them. + def select( + self, + *, + parent: Optional[str] = None, + child: Optional[str] = None, + depflag: dt.DepFlag = dt.ALL, + virtuals: Optional[List[str]] = None, + ) -> List[DependencySpec]: + """Selects a list of edges and returns them. If an edge: + - Has *any* of the dependency types passed as argument, - - Matches the parent and/or child name, if passed + - Matches the parent and/or child name + - Provides *any* of the virtuals passed as argument + then it is selected. The deptypes argument needs to be a flag, since the method won't convert it for performance reason. Args: - parent (str): name of the parent package - child (str): name of the child package + parent: name of the parent package + child: name of the child package depflag: allowed dependency types in flag form - - Returns: - List of DependencySpec objects + virtuals: list of virtuals on the edge """ if not depflag: return [] @@ -1062,6 +1060,10 @@ def select(self, parent=None, child=None, depflag: dt.DepFlag = dt.ALL): # Filter by allowed dependency types selected = (dep for dep in selected if not dep.depflag or (depflag & dep.depflag)) + # Filter by virtuals + if virtuals is not None: + selected = (dep for dep in selected if any(v in dep.virtuals for v in virtuals)) + return list(selected) def clear(self): @@ -1470,8 +1472,8 @@ def __init__( self.architecture = None self.compiler = None self.compiler_flags = FlagMap(self) - self._dependents = _EdgeMap(store_by=EdgeDirection.parent) - self._dependencies = _EdgeMap(store_by=EdgeDirection.child) + self._dependents = _EdgeMap(store_by_child=False) + self._dependencies = _EdgeMap(store_by_child=True) self.namespace = None # initial values for all spec hash types @@ -1591,7 +1593,7 @@ def _get_dependency(self, name): return deps[0] def edges_from_dependents( - self, name=None, depflag: dt.DepFlag = dt.ALL + self, name=None, depflag: dt.DepFlag = dt.ALL, *, virtuals: Optional[List[str]] = None ) -> List[DependencySpec]: """Return a list of edges connecting this node in the DAG to parents. @@ -1599,20 +1601,25 @@ def edges_from_dependents( Args: name (str): filter dependents by package name depflag: allowed dependency types + virtuals: allowed virtuals """ - return [d for d in self._dependents.select(parent=name, depflag=depflag)] + return [ + d for d in self._dependents.select(parent=name, depflag=depflag, virtuals=virtuals) + ] def edges_to_dependencies( - self, name=None, depflag: dt.DepFlag = dt.ALL + self, name=None, depflag: dt.DepFlag = dt.ALL, *, virtuals: Optional[List[str]] = None ) -> List[DependencySpec]: - """Return a list of edges connecting this node in the DAG - to children. + """Returns a list of edges connecting this node in the DAG to children. Args: name (str): filter dependencies by package name depflag: allowed dependency types + virtuals: allowed virtuals """ - return [d for d in self._dependencies.select(child=name, depflag=depflag)] + return [ + d for d in self._dependencies.select(child=name, depflag=depflag, virtuals=virtuals) + ] @property def edge_attributes(self) -> str: @@ -1635,17 +1642,24 @@ def edge_attributes(self) -> str: return f"[{result}]" def dependencies( - self, name=None, deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL + self, + name=None, + deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL, + *, + virtuals: Optional[List[str]] = None, ) -> List["Spec"]: - """Return a list of direct dependencies (nodes in the DAG). + """Returns a list of direct dependencies (nodes in the DAG) Args: - name (str): filter dependencies by package name + name: filter dependencies by package name deptype: allowed dependency types + virtuals: allowed virtuals """ if not isinstance(deptype, dt.DepFlag): deptype = dt.canonicalize(deptype) - return [d.spec for d in self.edges_to_dependencies(name, depflag=deptype)] + return [ + d.spec for d in self.edges_to_dependencies(name, depflag=deptype, virtuals=virtuals) + ] def dependents( self, name=None, deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL @@ -3519,8 +3533,8 @@ def _dup(self, other, deps: Union[bool, dt.DepTypes, dt.DepFlag] = True, clearde self.architecture = other.architecture.copy() if other.architecture else None self.compiler = other.compiler.copy() if other.compiler else None if cleardeps: - self._dependents = _EdgeMap(store_by=EdgeDirection.parent) - self._dependencies = _EdgeMap(store_by=EdgeDirection.child) + self._dependents = _EdgeMap(store_by_child=False) + self._dependencies = _EdgeMap(store_by_child=True) self.compiler_flags = other.compiler_flags.copy() self.compiler_flags.spec = self self.variants = other.variants.copy() diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 0d1fe4abcfccfb..05cc15f3dabbb8 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -756,6 +756,48 @@ def test_spec_tree_respect_deptypes(self): out = s.tree(deptypes=("link", "run")) assert "version-test-pkg" not in out + @pytest.mark.parametrize( + "query,expected_length,expected_satisfies", + [ + ({"virtuals": ["mpi"]}, 1, ["mpich", "mpi"]), + ({"depflag": dt.BUILD}, 2, ["mpich", "mpi", "callpath"]), + ({"depflag": dt.BUILD, "virtuals": ["mpi"]}, 1, ["mpich", "mpi"]), + ({"depflag": dt.LINK}, 2, ["mpich", "mpi", "callpath"]), + ({"depflag": dt.BUILD | dt.LINK}, 2, ["mpich", "mpi", "callpath"]), + ({"virtuals": ["lapack"]}, 0, []), + ], + ) + def test_query_dependency_edges( + self, default_mock_concretization, query, expected_length, expected_satisfies + ): + """Tests querying edges to dependencies on the following DAG: + + [ ] mpileaks@=2.3 + [bl ] ^callpath@=1.0 + [bl ] ^dyninst@=8.2 + [bl ] ^libdwarf@=20130729 + [bl ] ^libelf@=0.8.13 + [bl ] ^mpich@=3.0.4 + """ + mpileaks = default_mock_concretization("mpileaks") + edges = mpileaks.edges_to_dependencies(**query) + assert len(edges) == expected_length + for constraint in expected_satisfies: + assert any(x.spec.satisfies(constraint) for x in edges) + + def test_query_dependents_edges(self, default_mock_concretization): + """Tests querying edges from dependents""" + mpileaks = default_mock_concretization("mpileaks") + mpich = mpileaks["mpich"] + + # Recover the root with 2 different queries + edges_of_link_type = mpich.edges_from_dependents(depflag=dt.LINK) + edges_with_mpi = mpich.edges_from_dependents(virtuals=["mpi"]) + assert edges_with_mpi == edges_of_link_type + + # Check a node dependend upon by 2 parents + assert len(mpileaks["libelf"].edges_from_dependents(depflag=dt.LINK)) == 2 + def test_tree_cover_nodes_reduce_deptype(): """Test that tree output with deptypes sticks to the sub-dag of interest, instead of looking From 8bc0b2e0869ba5ba99258fb98615521708ca9e40 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Oct 2024 12:44:51 +0100 Subject: [PATCH 224/615] Spec.__str__: use full hash (#47322) The idea is that `spack -e env add ./concrete-spec.json` would list the full hash in the specs, so that (a) it's not ambiguous and (b) it could in principle results in constant time lookup instead of linear time substring match in large build caches. --- lib/spack/spack/spec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index fc65dcb64b8eaf..e5b9cad4312764 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -4042,7 +4042,7 @@ def format_path( def __str__(self): if self._concrete: - return self.format("{name}{@version}{/hash:7}") + return self.format("{name}{@version}{/hash}") if not self._dependencies: return self.format() From cbf4d3967a29db1e49129964a2f2fef4da7461a6 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Oct 2024 13:14:15 +0100 Subject: [PATCH 225/615] add std_pip_args global to the audit list (#47320) --- lib/spack/spack/audit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index cec0fbd42fd314..dc988ac90edd97 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -805,7 +805,7 @@ def _uses_deprecated_globals(pkgs, error_cls): file = spack.repo.PATH.filename_for_package_name(pkg_name) tree = ast.parse(open(file).read()) - visitor = DeprecatedMagicGlobals(("std_cmake_args", "std_meson_args")) + visitor = DeprecatedMagicGlobals(("std_cmake_args", "std_meson_args", "std_pip_args")) visitor.visit(tree) if visitor.references_to_globals: errors.append( From 8892c878ce173022c0efb18b35f1b21afd7a072b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Oct 2024 13:48:32 +0100 Subject: [PATCH 226/615] types: remove singleton union in globals (#47282) --- lib/spack/spack/caches.py | 11 ++--------- lib/spack/spack/config.py | 12 ++++-------- lib/spack/spack/repo.py | 13 ++++++------- lib/spack/spack/store.py | 7 ++----- 4 files changed, 14 insertions(+), 29 deletions(-) diff --git a/lib/spack/spack/caches.py b/lib/spack/spack/caches.py index 58594059a58d09..f2d4bfeec07a33 100644 --- a/lib/spack/spack/caches.py +++ b/lib/spack/spack/caches.py @@ -5,7 +5,6 @@ """Caches used by Spack to store data""" import os -from typing import Union import llnl.util.lang from llnl.util.filesystem import mkdirp @@ -32,12 +31,8 @@ def _misc_cache(): return spack.util.file_cache.FileCache(path) -FileCacheType = Union[spack.util.file_cache.FileCache, llnl.util.lang.Singleton] - #: Spack's cache for small data -MISC_CACHE: Union[spack.util.file_cache.FileCache, llnl.util.lang.Singleton] = ( - llnl.util.lang.Singleton(_misc_cache) -) +MISC_CACHE: spack.util.file_cache.FileCache = llnl.util.lang.Singleton(_misc_cache) # type: ignore def fetch_cache_location(): @@ -74,6 +69,4 @@ def store(self, fetcher, relative_dest): #: Spack's local cache for downloaded source archives -FETCH_CACHE: Union[spack.fetch_strategy.FsCache, llnl.util.lang.Singleton] = ( - llnl.util.lang.Singleton(_fetch_cache) -) +FETCH_CACHE: spack.fetch_strategy.FsCache = llnl.util.lang.Singleton(_fetch_cache) # type: ignore diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index 94f8e4ff04ea6d..afd8f30baccbb9 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -714,7 +714,7 @@ def print_section(self, section: str, blame: bool = False, *, scope=None) -> Non @contextlib.contextmanager def override( path_or_scope: Union[ConfigScope, str], value: Optional[Any] = None -) -> Generator[Union[lang.Singleton, Configuration], None, None]: +) -> Generator[Configuration, None, None]: """Simple way to override config settings within a context. Arguments: @@ -756,9 +756,7 @@ def override( COMMAND_LINE_SCOPES: List[str] = [] -def _add_platform_scope( - cfg: Union[Configuration, lang.Singleton], name: str, path: str, writable: bool = True -) -> None: +def _add_platform_scope(cfg: Configuration, name: str, path: str, writable: bool = True) -> None: """Add a platform-specific subdirectory for the current platform.""" platform = spack.platforms.host().name scope = DirectoryConfigScope( @@ -792,9 +790,7 @@ def config_paths_from_entry_points() -> List[Tuple[str, str]]: return config_paths -def _add_command_line_scopes( - cfg: Union[Configuration, lang.Singleton], command_line_scopes: List[str] -) -> None: +def _add_command_line_scopes(cfg: Configuration, command_line_scopes: List[str]) -> None: """Add additional scopes from the --config-scope argument, either envs or dirs.""" import spack.environment.environment as env # circular import @@ -875,7 +871,7 @@ def create() -> Configuration: #: This is the singleton configuration instance for Spack. -CONFIG: Union[Configuration, lang.Singleton] = lang.Singleton(create) +CONFIG: Configuration = lang.Singleton(create) # type: ignore def add_from_file(filename: str, scope: Optional[str] = None) -> None: diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py index 3f54b02299b5ba..f3872aed8d1d1f 100644 --- a/lib/spack/spack/repo.py +++ b/lib/spack/spack/repo.py @@ -41,6 +41,7 @@ import spack.provider_index import spack.spec import spack.tag +import spack.util.file_cache import spack.util.git import spack.util.naming as nm import spack.util.path @@ -589,7 +590,7 @@ def __init__( self, package_checker: FastPackageChecker, namespace: str, - cache: "spack.caches.FileCacheType", + cache: spack.util.file_cache.FileCache, ): self.checker = package_checker self.packages_path = self.checker.packages_path @@ -682,7 +683,7 @@ class RepoPath: def __init__( self, *repos: Union[str, "Repo"], - cache: Optional["spack.caches.FileCacheType"], + cache: Optional[spack.util.file_cache.FileCache], overrides: Optional[Dict[str, Any]] = None, ) -> None: self.repos: List[Repo] = [] @@ -964,7 +965,7 @@ def __init__( self, root: str, *, - cache: "spack.caches.FileCacheType", + cache: spack.util.file_cache.FileCache, overrides: Optional[Dict[str, Any]] = None, ) -> None: """Instantiate a package repository from a filesystem path. @@ -1439,9 +1440,7 @@ def _path(configuration=None): return create(configuration=configuration) -def create( - configuration: Union["spack.config.Configuration", llnl.util.lang.Singleton] -) -> RepoPath: +def create(configuration: spack.config.Configuration) -> RepoPath: """Create a RepoPath from a configuration object. Args: @@ -1464,7 +1463,7 @@ def create( #: Singleton repo path instance -PATH: Union[RepoPath, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_path) +PATH: RepoPath = llnl.util.lang.Singleton(_path) # type: ignore # Add the finder to sys.meta_path REPOS_FINDER = ReposFinder() diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index 5884f241492441..abd7d9250007c0 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -39,9 +39,6 @@ DEFAULT_INSTALL_TREE_ROOT = os.path.join(spack.paths.opt_path, "spack") -ConfigurationType = Union["spack.config.Configuration", "llnl.util.lang.Singleton"] - - def parse_install_tree(config_dict): """Parse config settings and return values relevant to the store object. @@ -207,7 +204,7 @@ def __reduce__(self): ) -def create(configuration: ConfigurationType) -> Store: +def create(configuration: spack.config.Configuration) -> Store: """Create a store from the configuration passed as input. Args: @@ -240,7 +237,7 @@ def _create_global() -> Store: #: Singleton store instance -STORE: Union[Store, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_create_global) +STORE: Store = llnl.util.lang.Singleton(_create_global) # type: ignore def reinitialize(): From 9d03170cb2d7fc78023947e2953727b3e7210fbf Mon Sep 17 00:00:00 2001 From: Cameron Stanavige Date: Wed, 30 Oct 2024 08:08:01 -0700 Subject: [PATCH 227/615] scr: release v3.1.0, including components (#45737) SCR and the SCR components have new releases - AXL v0.9.0 - MPI variant added to AXL package - ER v0.5.0 - KVTREE v1.5.0 - Rankstr v0.4.0 - Shuffile v0.4.0 - Spatha v0.4.0 - dtcmp v1.1.5 - lwgrp v1.0.6 - Redset v0.4.0 - New variants added to Redset - SCR v3.1.0 - Added Flux resourse manager - Added pthreads variant - Removed deprecated release candidates and references - Cleaned up component dependency versions - Updated versions within variants and cleaned up cmake_args --- .../repos/builtin/packages/axl/package.py | 8 + .../repos/builtin/packages/dtcmp/package.py | 4 +- .../repos/builtin/packages/er/package.py | 1 + .../repos/builtin/packages/kvtree/package.py | 1 + .../repos/builtin/packages/lwgrp/package.py | 1 + .../repos/builtin/packages/rankstr/package.py | 1 + .../repos/builtin/packages/redset/package.py | 15 +- .../repos/builtin/packages/scr/package.py | 140 ++++++++---------- .../builtin/packages/shuffile/package.py | 1 + .../repos/builtin/packages/spath/package.py | 1 + 10 files changed, 87 insertions(+), 86 deletions(-) diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py index 998cdc8cd184d2..119cf81da28336 100644 --- a/var/spack/repos/builtin/packages/axl/package.py +++ b/var/spack/repos/builtin/packages/axl/package.py @@ -27,6 +27,7 @@ class Axl(CMakePackage): license("MIT") version("main", branch="main") + version("0.9.0", sha256="da2d74092fb230754a63db3cd5ba72a233ee8153dec28cc604fa8465280299ba") version("0.8.0", sha256="9fcd4eae143a67ff02622feda2a541b85e9a108749c039faeb473cbbc2330459") version("0.7.1", sha256="526a055c072c85cc989beca656717e06b128f148fda8eb19d1d9b43a3325b399") version("0.7.0", sha256="840ef61eadc9aa277d128df08db4cdf6cfa46b8fcf47b0eee0972582a61fbc50") @@ -64,6 +65,9 @@ class Axl(CMakePackage): validator=async_api_validator, ) + variant("mpi", default=True, description="Build with MPI support", when="@0.7.1:") + depends_on("mpi", when="@0.7.1: +mpi") + variant("pthreads", default=True, description="Enable Pthread support", when="@0.6:") variant("bbapi", default=True, description="Enable IBM BBAPI support") @@ -86,6 +90,10 @@ def cmake_args(self): args = [] args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix)) + args.append(self.define_from_variant("MPI")) + if spec.satisfies("+mpi"): + args.append(self.define("MPI_C_COMPILER", spec["mpi"].mpicc)) + if spec.satisfies("@:0.3.0"): apis = list(spec.variants["async_api"].value) if "daemon" in apis: diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py index 1fa7c28e1dc143..c331ea2ed36c33 100644 --- a/var/spack/repos/builtin/packages/dtcmp/package.py +++ b/var/spack/repos/builtin/packages/dtcmp/package.py @@ -17,6 +17,7 @@ class Dtcmp(AutotoolsPackage): maintainers("gonsie", "camstan", "adammoody") version("main", branch="main") + version("1.1.5", sha256="959c28999b8d1dd2e8703172db55392e38114fde0cd54dfad04555622c5e5974") version("1.1.4", sha256="dd83d8cecd68e13b78b68e88675cc5847cde06742b7740e140b98f4a08127dd3") version("1.1.3", sha256="90b32cadd0ff2f4fa7fc916f8dcfdbe6918e3e285e0292a2470772478ca0aab5") version("1.1.2", sha256="76e1d1fed89bf6abf003179a7aed93350d5ce6282cb000b02a241ec802ec399d") @@ -30,7 +31,8 @@ class Dtcmp(AutotoolsPackage): depends_on("lwgrp") depends_on("lwgrp@main", when="@main") - depends_on("lwgrp@1.0.5", when="@1.1.4") + depends_on("lwgrp@1.0.3:", when="@1.1.2:") + depends_on("lwgrp@1.0.5:", when="@1.1.4:") variant("shared", default=True, description="Build with shared libraries") depends_on("lwgrp+shared", when="+shared") diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py index 499091390e7c7f..8dc7622d981370 100644 --- a/var/spack/repos/builtin/packages/er/package.py +++ b/var/spack/repos/builtin/packages/er/package.py @@ -19,6 +19,7 @@ class Er(CMakePackage): license("MIT") version("main", branch="main") + version("0.5.0", sha256="dbde4da1fe115b67334085446d413f7365ba94c0a34cb1c38b83944e8fba4d0b") version("0.4.0", sha256="6cb5b6724ddac5c1f5ed6b326a5f3bf5d4eb1c6958a48218e6ca9bb7c02e48a8") version("0.3.0", sha256="01bc71bfb2ebb015ccb948f2bb9138b70972a3e8be0e53f9a4844e46b106a36c") version("0.2.0", sha256="9ddfe2b63682ed0e89685f9b7d5259ef82b802aba55c8ee78cc15a7adbad6bc0") diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py index 68328da1975431..865c712c14ca3c 100644 --- a/var/spack/repos/builtin/packages/kvtree/package.py +++ b/var/spack/repos/builtin/packages/kvtree/package.py @@ -20,6 +20,7 @@ class Kvtree(CMakePackage): license("MIT") version("main", branch="main") + version("1.5.0", sha256="9617948bdb905615aeb0604d4998d92eb970ecd5c9c851116266972462f0b350") version("1.4.0", sha256="48a36fd578f0d1198a9c1512d6446c830b915ace5bb97539eec615495bee5a51") version("1.3.0", sha256="8281e075772d3534183c46133553d5765455d79ed98a895743663db891755ca9") version("1.2.0", sha256="ecd4b8bc479c33ab4f23fc764445a3bb353a1d15c208d011f5577a32c182477f") diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index 79a55066209442..eb0dc95ed764f1 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -17,6 +17,7 @@ class Lwgrp(AutotoolsPackage): maintainers("CamStan", "gonsie", "adammoody") version("main", branch="main") + version("1.0.6", sha256="9f697978361b4bd9914beaaafffcee0b62a480a9a7dd3d75176910cebda81438") version("1.0.5", sha256="16b579e13b8a5218f4fe1b8715f6aafb09133a0cefbcd6b2eaf73802955dee6b") version("1.0.4", sha256="0c933df7658660a0225f8e3a940eb2621efa4421397859417c8d90d906d4e90a") version("1.0.3", sha256="20b2fc3908bfdf04d1c177f86e227a147214cd155c548b3dd75e54c78e1c1c47") diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py index f9df699bcf1700..1fe8a9cf3ee0ca 100644 --- a/var/spack/repos/builtin/packages/rankstr/package.py +++ b/var/spack/repos/builtin/packages/rankstr/package.py @@ -19,6 +19,7 @@ class Rankstr(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="f33c920aa67b867d0fa2001d98f6762e90f59a41b2f66c27a63cff6bd6afeb1b") version("0.3.0", sha256="5e6378a8fe155b4c6c5cf45db8aaf0562d88e93471d0e12c1e922252ffcce5e6") version("0.2.0", sha256="a3f7fd8015156c1b600946af759a03e099e05c83e7b2da6bac394fe7c0d4efae") version("0.1.0", sha256="b68239d67b2359ecc067cc354f86ccfbc8f02071e60d28ae0a2449f2e7f88001") diff --git a/var/spack/repos/builtin/packages/redset/package.py b/var/spack/repos/builtin/packages/redset/package.py index 6ef28e138e6f17..b38e4b2f14fbfd 100644 --- a/var/spack/repos/builtin/packages/redset/package.py +++ b/var/spack/repos/builtin/packages/redset/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Redset(CMakePackage): +class Redset(CMakePackage, CudaPackage): """Create MPI communicators for disparate redundancy sets""" homepage = "https://github.com/ecp-veloc/redset" @@ -19,6 +19,7 @@ class Redset(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="d278a5d3c1323915c379e2077dbfab1248044c86a04fc56faee6681c66380451") version("0.3.0", sha256="007ca5e7e5f4400e22ad7bca82e366cd51c73f28067c955cc16d7d0ff0c06a1b") version("0.2.0", sha256="0438b0ba56dafcd5694a8fceeb5a932901307353e056ab29817d30b8387f787f") version("0.1.0", sha256="baa75de0d0d6de64ade50cff3d38ee89fd136ce69869182bdaefccf5be5d286d") @@ -38,7 +39,11 @@ class Redset(CMakePackage): depends_on("rankstr@:0.2.0", when="@:0.2.0") depends_on("rankstr@0.3.0:", when="@0.3.0:") - variant("shared", default=True, description="Build with shared libraries") + variant("cuda", default=False, description="Enable CUDA support", when="@0.4:") + variant("openmp", default=False, description="Enable OpenMP support", when="@0.4:") + variant("pthreads", default=False, description="Enable Pthread support", when="@0.4:") + + variant("shared", default=True, description="Build with shared libraries", when="@0.1:") depends_on("kvtree+shared", when="@0.1: +shared") depends_on("kvtree~shared", when="@0.1: ~shared") depends_on("rankstr+shared", when="@0.1: +shared") @@ -51,7 +56,9 @@ def cmake_args(self): args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix)) args.append(self.define("WITH_RANKSTR_PREFIX", spec["rankstr"].prefix)) - if spec.satisfies("@0.1.0:"): - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("ENABLE_CUDA", "cuda")) + args.append(self.define_from_variant("ENABLE_OPENMP", "openmp")) + args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads")) return args diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index 9737365255d905..7ec48f4ac77223 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -12,6 +12,8 @@ def detect_scheduler(): if which("aprun"): return "APRUN" + if which("flux"): + return "FLUX" if which("jsrun"): return "LSF" return "SLURM" @@ -33,21 +35,12 @@ class Scr(CMakePackage): version("legacy", branch="legacy") version( - "3.0.1", - sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a", + "3.1.0", + sha256="ca1f37c84e0ff7a307e68f213c8cc868974d7fb30f16826853a711c7c3a55ffa", preferred=True, ) - version("3.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc") - version( - "3.0rc2", - sha256="4b2a718af56b3683e428d25a2269c038e9452db734221d370e3023a491477fad", - deprecated=True, - ) - version( - "3.0rc1", - sha256="bd31548a986f050024429d8ee3644eb135f047f98a3d503a40c5bd4a85291308", - deprecated=True, - ) + version("3.0.1", sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a") + version("3.0.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc") version("2.0.0", sha256="471978ae0afb56a20847d3989b994fbd680d1dea21e77a5a46a964b6e3deed6b") version( "1.2.2", @@ -79,39 +72,31 @@ class Scr(CMakePackage): # SCR legacy is anything 2.x.x or earlier # SCR components is anything 3.x.x or later - depends_on("axl@0.7.1", when="@3.0.1") - depends_on("er@0.2.0", when="@3.0.1") - depends_on("kvtree@1.3.0", when="@3.0.1") - depends_on("rankstr@0.1.0", when="@3.0.1") - depends_on("redset@0.2.0", when="@3.0.1") - depends_on("shuffile@0.2.0", when="@3.0.1") - depends_on("spath@0.2.0 +mpi", when="@3.0.1") - depends_on("dtcmp@1.1.4", when="@3.0.1") - - depends_on("axl@0.6.0", when="@3.0.0") - depends_on("er@0.2.0", when="@3.0.0") - depends_on("kvtree@1.3.0", when="@3.0.0") - depends_on("rankstr@0.1.0", when="@3.0.0") - depends_on("redset@0.2.0", when="@3.0.0") - depends_on("shuffile@0.2.0", when="@3.0.0") - depends_on("spath@0.2.0", when="@3.0.0") - depends_on("dtcmp@1.1.4", when="@3.0.0") - - depends_on("axl@0.5.0:", when="@3.0rc2") - depends_on("er@0.1.0:", when="@3.0rc2") - depends_on("kvtree@1.2.0:", when="@3.0rc2") - depends_on("rankstr@0.1.0:", when="@3.0rc2") - depends_on("redset@0.1.0:", when="@3.0rc2") - depends_on("shuffile@0.1.0:", when="@3.0rc2") - depends_on("spath@0.1.0:", when="@3.0rc2") - - depends_on("axl@0.4.0", when="@3.0rc1") - depends_on("er@0.0.4", when="@3.0rc1") - depends_on("kvtree@1.1.1", when="@3.0rc1") - depends_on("rankstr@0.0.3", when="@3.0rc1") - depends_on("redset@0.0.5", when="@3.0rc1") - depends_on("shuffile@0.0.4", when="@3.0rc1") - depends_on("spath@0.0.2", when="@3.0rc1") + with when("@3.1.0"): + depends_on("axl@0.8.0: +mpi") + depends_on("er@0.5.0") + depends_on("kvtree@1.4.0:") + depends_on("rankstr@0.3.0:") + depends_on("redset@0.4.0") + depends_on("shuffile@0.3.0:") + depends_on("spath@0.3.0: +mpi") + depends_on("dtcmp@1.1.5") + + with when("@3.0.1"): + depends_on("axl@0.7.1 +mpi") + depends_on("er@0.3.0") + + with when("@3.0.0"): + depends_on("axl@0.6.0") + depends_on("er@0.2.0") + + with when("@3.0.0:3.0.1"): + depends_on("kvtree@1.3.0") + depends_on("rankstr@0.2.0") + depends_on("redset@0.2.0") + depends_on("shuffile@0.2.0") + depends_on("spath@0.2.0 +mpi") + depends_on("dtcmp@1.1.4:") # DTCMP is an optional dependency up until 3.x, required thereafter variant( @@ -127,14 +112,15 @@ class Scr(CMakePackage): "libyogrt", default=True, description="Build SCR with libyogrt for get_time_remaining." ) depends_on("libyogrt scheduler=slurm", when="+libyogrt resource_manager=SLURM") + depends_on("libyogrt scheduler=flux", when="+libyogrt resource_manager=FLUX") depends_on("libyogrt scheduler=lsf", when="+libyogrt resource_manager=LSF") depends_on("libyogrt", when="+libyogrt") # PDSH required up to 3.0rc1, optional thereafter # TODO spack currently assumes 3.0.0 = 3.0 = 3 < 3.0rc1 < 3.0rc2 - variant("pdsh", default=True, when="@3.0.0,3.0rc2:", description="Enable use of PDSH") + variant("pdsh", default=True, when="@3:", description="Enable use of PDSH") depends_on("pdsh+static_modules", type=("build", "run"), when="+pdsh") - depends_on("pdsh+static_modules", type=("build", "run"), when="@:2,3.0rc1") + depends_on("pdsh+static_modules", type=("build", "run"), when="@:2") variant( "scr_config", @@ -154,7 +140,7 @@ class Scr(CMakePackage): variant( "resource_manager", default=detect_scheduler(), - values=("SLURM", "APRUN", "LSF", "NONE"), + values=("SLURM", "APRUN", "FLUX", "LSF", "NONE"), multi=False, description="Resource manager for which to configure SCR.", ) @@ -169,32 +155,27 @@ class Scr(CMakePackage): description="Asynchronous data transfer API to use with SCR.", ) - variant("bbapi", default=True, when="@3.0rc2:", description="Enable IBM BBAPI support") + variant("pthreads", default=True, when="@3:", description="Enable Pthread support") + depends_on("axl+pthreads", when="+pthreads") + + variant("bbapi", default=False, when="@3:", description="Enable IBM BBAPI support") depends_on("axl+bbapi", when="+bbapi") depends_on("axl~bbapi", when="~bbapi") variant( "bbapi_fallback", default=False, - when="@3:", + when="@3: +bbapi", description="Using BBAPI, if source or destination don't support \ file extents then fallback to pthreads", ) - depends_on("axl+bbapi_fallback", when="+bbapi_fallback") - variant( - "bbapi_fallback", - default=False, - when="@3.0rc2: +bbapi", - description="Using BBAPI, if source or destination don't support \ - file extents then fallback to pthreads", - ) - depends_on("axl+bbapi+bbapi_fallback", when="@3.0rc2: +bbapi_fallback") + depends_on("axl+bbapi+bbapi_fallback", when="@3: +bbapi_fallback") - variant("dw", default=False, when="@3.0rc2:", description="Enable Cray DataWarp support") + variant("dw", default=False, when="@3:", description="Enable Cray DataWarp support") depends_on("axl+dw", when="+dw") depends_on("axl~dw", when="~dw") - variant("examples", default=True, when="@3.0rc2:", description="Build SCR example programs") + variant("examples", default=True, when="@3:", description="Build SCR example programs") variant( "file_lock", @@ -213,7 +194,7 @@ class Scr(CMakePackage): # capturing SCR and syslog messages in a database') # depends_on('mysql', when='+mysql') - variant("shared", default=True, when="@3.0rc2:", description="Build with shared libraries") + variant("shared", default=True, when="@3:", description="Build with shared libraries") depends_on("libyogrt+static", when="~shared") for comp in cmpnts: depends_on(comp + "+shared", when="+shared") @@ -223,7 +204,7 @@ class Scr(CMakePackage): # TODO: Expose `tests` and `resource_manager` variants in components and # then propogate their setting through components. - variant("tests", default=True, when="@3.0rc2:", description="Build with CTest included") + variant("tests", default=True, when="@3:", description="Build with CTest included") # The default cache and control directories should be placed in tmpfs if available. # On Linux, /dev/shm is a common tmpfs location. Other platforms, like macOS, @@ -259,7 +240,17 @@ def cmake_args(self): spec = self.spec args = [] + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) args.append(self.define_from_variant("ENABLE_FORTRAN", "fortran")) + args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi")) + args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw")) + args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples")) + args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt")) + # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql')) + args.append(self.define_from_variant("ENABLE_PDSH", "pdsh")) + args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads")) + args.append(self.define_from_variant("ENABLE_TESTS", "tests")) + args.append(self.define_from_variant("SCR_ASYNC_API", "async_api")) args.append(self.define_from_variant("SCR_FILE_LOCK", "file_lock")) args.append(self.define_from_variant("SCR_CACHE_BASE", "cache_base")) args.append(self.define_from_variant("SCR_CNTL_BASE", "cntl_base")) @@ -281,28 +272,15 @@ def cmake_args(self): cmpnts = ["axl", "dtcmp", "er", "kvtree", "rankstr", "redset", "shuffile", "spath"] for comp in cmpnts: args.append(self.define("WITH_" + comp.upper() + "_PREFIX", spec[comp].prefix)) - else: - # dtcmp optional before this point - if "+dtcmp" in spec: - args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix)) - - # Only used prior to version 3 - args.append(self.define_from_variant("SCR_ASYNC_API", "async_api")) - - if spec.satisfies("@3.0rc2:"): - args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi")) - args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw")) - args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples")) - args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt")) - # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql')) - args.append(self.define_from_variant("ENABLE_PDSH", "pdsh")) - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) - args.append(self.define_from_variant("ENABLE_TESTS", "tests")) # PDSH optional from this point on if "+pdsh" in spec: args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix)) else: + # dtcmp optional before this point + if "+dtcmp" in spec: + args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix)) + # PDSH required before this point args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix)) diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py index 116254b1faaab1..eab7201a424b0e 100644 --- a/var/spack/repos/builtin/packages/shuffile/package.py +++ b/var/spack/repos/builtin/packages/shuffile/package.py @@ -19,6 +19,7 @@ class Shuffile(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="fc7116d8eaa1ab79480e6e3f04064750e517d2a8aeccbff90c73a2590f726378") version("0.3.0", sha256="3463ad4a23fd31aa9a3426346ada04399fb9369dd1f40d22df9f19f9c0c1f8ae") version("0.2.0", sha256="467ffef72214c109b69f09d03e42be5e9254f13751b09c71168c14fa99117521") version("0.1.0", sha256="9e730cc8b7937517a9cffb08c031d9f5772306341c49d17b87b7f349d55a6d5e") diff --git a/var/spack/repos/builtin/packages/spath/package.py b/var/spack/repos/builtin/packages/spath/package.py index 037dfff2bc6f1c..c25b74b58ec82c 100644 --- a/var/spack/repos/builtin/packages/spath/package.py +++ b/var/spack/repos/builtin/packages/spath/package.py @@ -19,6 +19,7 @@ class Spath(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="469c9d36f9244826c6ec264a779eed870a772f467d6964030d336e509d3c9374") version("0.3.0", sha256="cb155a31cebde8b7bf397123de3be290fd99d3863509b4ba9b0252caba660082") version("0.2.0", sha256="2de8a25547b53ef064664d79b543141bc3020219f40ff0e1076f676e13a9e77a") version("0.1.0", sha256="2cfc635b2384d3f92973c7aea173dabe47da112d308f5098e6636e4b2f4a704c") From 02d2c4a9ffee22c8aca8e5c4b10d40ee3a9183d5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 30 Oct 2024 19:33:09 +0100 Subject: [PATCH 228/615] PyTorch: add v2.5.1 (#47326) --- var/spack/repos/builtin/packages/cpuinfo/package.py | 3 ++- var/spack/repos/builtin/packages/py-torch/package.py | 4 +++- var/spack/repos/builtin/packages/py-torchaudio/package.py | 2 ++ var/spack/repos/builtin/packages/py-torchvision/package.py | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cpuinfo/package.py b/var/spack/repos/builtin/packages/cpuinfo/package.py index eb1d9ada7075c0..2a3e905be07177 100644 --- a/var/spack/repos/builtin/packages/cpuinfo/package.py +++ b/var/spack/repos/builtin/packages/cpuinfo/package.py @@ -19,7 +19,8 @@ class Cpuinfo(CMakePackage): license("BSD-2-Clause") version("main", branch="main") - version("2024-08-30", commit="fa1c679da8d19e1d87f20175ae1ec10995cd3dd3") # py-torch@2.5: + version("2024-09-06", commit="094fc30b9256f54dad5ad23bcbfb5de74781422f") # py-torch@2.5.1: + version("2024-08-30", commit="fa1c679da8d19e1d87f20175ae1ec10995cd3dd3") # py-torch@2.5.0 version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3:2.4 version("2023-01-13", commit="6481e8bef08f606ddd627e4d3be89f64d62e1b8a") # py-torch@2.1:2.2 version("2022-08-19", commit="8ec7bd91ad0470e61cf38f618cc1f270dede599c") # py-torch@1.13:2.0 diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 7025196942b117..e2bc15b64e614a 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -25,6 +25,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): maintainers("adamjstewart") version("main", branch="main") + version("2.5.1", tag="v2.5.1", commit="a8d6afb511a69687bbb2b7e88a3cf67917e1697e") version("2.5.0", tag="v2.5.0", commit="32f585d9346e316e554c8d9bf7548af9f62141fc") version("2.4.1", tag="v2.4.1", commit="ee1b6804381c57161c477caa380a840a84167676") version("2.4.0", tag="v2.4.0", commit="d990dada86a8ad94882b5c23e859b88c0c255bda") @@ -187,7 +188,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # depends_on("xnnpack@2021-02-22", when="@1.8:1.9+xnnpack") # depends_on("xnnpack@2020-03-23", when="@1.6:1.7+xnnpack") depends_on("benchmark", when="@1.6:+test") - depends_on("cpuinfo@2024-08-30", when="@2.5:") + depends_on("cpuinfo@2024-09-06", when="@2.5.1:") + depends_on("cpuinfo@2024-08-30", when="@2.5.0") depends_on("cpuinfo@2023-11-04", when="@2.3:2.4") depends_on("cpuinfo@2023-01-13", when="@2.1:2.2") depends_on("cpuinfo@2022-08-19", when="@1.13:2.0") diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index e883c0d6169249..2ac903565f308e 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -18,6 +18,7 @@ class PyTorchaudio(PythonPackage): maintainers("adamjstewart") version("main", branch="main") + version("2.5.1", tag="v2.5.1", commit="1661daf10599ca8889f092ec37814fabbe202bb0") version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd") version("2.4.1", tag="v2.4.1", commit="e8cbe17769796ce963fbc71b8990f1474774e6d2") version("2.4.0", tag="v2.4.0", commit="69d40773dc4ed86643820c21a8a880e4d074a46e") @@ -64,6 +65,7 @@ class PyTorchaudio(PythonPackage): depends_on("python@:3.8", when="@:0.7.0") depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.1", when="@2.5.1") depends_on("py-torch@2.5.0", when="@2.5.0") depends_on("py-torch@2.4.1", when="@2.4.1") depends_on("py-torch@2.4.0", when="@2.4.0") diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 93cf33fb1beee1..4fe32d63cce910 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -19,6 +19,7 @@ class PyTorchvision(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.20.1", sha256="7e08c7f56e2c89859310e53d898f72bccc4987cd83e08cfd6303513da15a9e71") version("0.20.0", sha256="b59d9896c5c957c6db0018754bbd17d079c5102b82b9be0b438553b40a7b6029") version("0.19.1", sha256="083e75c467285595ec3eb3c7aa8493c19e53d7eb42f13046fb56a07c8897e5a8") version("0.19.0", sha256="4c499d0a412b5a21d55ac3c0a37e80ecd7e1f002f2a7b6b3b38a2de2544acbb6") @@ -81,6 +82,7 @@ class PyTorchvision(PythonPackage): # https://github.com/pytorch/vision#installation depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.1", when="@0.20.1") depends_on("py-torch@2.5.0", when="@0.20.0") depends_on("py-torch@2.4.1", when="@0.19.1") depends_on("py-torch@2.4.0", when="@0.19.0") From c3435b4e7df11d0ecf4ced529e56ec84ba3d5067 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 30 Oct 2024 19:57:49 +0100 Subject: [PATCH 229/615] hooks: run in clear, fixed order (#47329) Currently the order in which hooks are run is arbitrary. This can be fixed by sorted(list_modules(...)) but I think it is much more clear to just have a static list. Hooks are not extensible other than modifying Spack code, which means it's unlikely people maintain custom hooks since they'd have to fork Spack. And if they fork Spack, they might as well add an entry to the list when they're continuously rebasing. --- lib/spack/docs/developer_guide.rst | 10 ++----- lib/spack/spack/hooks/__init__.py | 47 ++++++++++++++---------------- 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index f538f75206644c..21204ba0778ed0 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -333,13 +333,9 @@ inserting them at different places in the spack code base. Whenever a hook type triggers by way of a function call, we find all the hooks of that type, and run them. -Spack defines hooks by way of a module at ``lib/spack/spack/hooks`` where we can define -types of hooks in the ``__init__.py``, and then python files in that folder -can use hook functions. The files are automatically parsed, so if you write -a new file for some integration (e.g., ``lib/spack/spack/hooks/myintegration.py`` -you can then write hook functions in that file that will be automatically detected, -and run whenever your hook is called. This section will cover the basic kind -of hooks, and how to write them. +Spack defines hooks by way of a module in the ``lib/spack/spack/hooks`` directory. +This module has to be registered in ``__init__.py`` so that Spack is aware of it. +This section will cover the basic kind of hooks, and how to write them. ^^^^^^^^^^^^^^ Types of Hooks diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 0e7e3036928a67..73fad62d6ad3dc 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -21,43 +21,40 @@ features. """ import importlib - -from llnl.util.lang import ensure_last, list_modules - -import spack.paths +import types +from typing import List, Optional class _HookRunner: - #: Stores all hooks on first call, shared among - #: all HookRunner objects - _hooks = None + #: Order in which hooks are executed + HOOK_ORDER = [ + "spack.hooks.module_file_generation", + "spack.hooks.licensing", + "spack.hooks.sbang", + "spack.hooks.windows_runtime_linkage", + "spack.hooks.drop_redundant_rpaths", + "spack.hooks.absolutify_elf_sonames", + "spack.hooks.permissions_setters", + # after all mutations to the install prefix, write metadata + "spack.hooks.write_install_manifest", + # after all metadata is written + "spack.hooks.autopush", + ] + + #: Contains all hook modules after first call, shared among all HookRunner objects + _hooks: Optional[List[types.ModuleType]] = None def __init__(self, hook_name): self.hook_name = hook_name - @classmethod - def _populate_hooks(cls): - # Lazily populate the list of hooks - cls._hooks = [] - - relative_names = list(list_modules(spack.paths.hooks_path)) - - # Ensure that write_install_manifest comes last - ensure_last(relative_names, "absolutify_elf_sonames", "write_install_manifest") - - for name in relative_names: - module_name = __name__ + "." + name - module_obj = importlib.import_module(module_name) - cls._hooks.append((module_name, module_obj)) - @property - def hooks(self): + def hooks(self) -> List[types.ModuleType]: if not self._hooks: - self._populate_hooks() + self._hooks = [importlib.import_module(module_name) for module_name in self.HOOK_ORDER] return self._hooks def __call__(self, *args, **kwargs): - for _, module in self.hooks: + for module in self.hooks: if hasattr(module, self.hook_name): hook = getattr(module, self.hook_name) if hasattr(hook, "__call__"): From ce78e8a1f81473cede3e568f9f5bfbe6b66f072f Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Wed, 30 Oct 2024 14:07:12 -0700 Subject: [PATCH 230/615] verdict: new package (#47333) * add verdict package Co-authored-by: becker33 Co-authored-by: Alec Scott --- .../repos/builtin/packages/verdict/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/verdict/package.py diff --git a/var/spack/repos/builtin/packages/verdict/package.py b/var/spack/repos/builtin/packages/verdict/package.py new file mode 100644 index 00000000000000..0834497886c148 --- /dev/null +++ b/var/spack/repos/builtin/packages/verdict/package.py @@ -0,0 +1,41 @@ +# 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) + +from spack.package import * + + +class Verdict(CMakePackage): + """Verdict mesh quality library for evaluating the geometric qualities of regions of space.""" + + homepage = "https://github.com/sandialabs/verdict" + url = "https://github.com/sandialabs/verdict/archive/refs/tags/1.4.2.tar.gz" + git = "https://github.com/sandialabs/verdict.git" + + maintainers("rblake-llnl") + + license("BSD-3-Clause", checked_by="rblake-llnl") + + version("1.4.2", sha256="225c8c5318f4b02e7215cefa61b5dc3f99e05147ad3fefe6ee5a3ee5b828964b") + version("1.4.1", sha256="26fa583265cb2ced2e9b30ed26260f6c9f89c3296221d96ccd5e7bfeec219de7") + + variant("doc", default=False, description="install documentation with library") + variant( + "mangle", + default=False, + description="Mangle verdict names for inclusion in a larger library", + ) + variant("test", default=False, description="enable testing from cmake") + + depends_on("cxx", type="build") + + depends_on("googletest", type="test", when="+test") + + def cmake_args(self): + args = [ + self.define_from_variant("VERDICT_BUILD_DOCS", "doc"), + self.define_from_variant("VERDICT_MANGLE", "mangle"), + self.define_from_variant("VERDICT_ENABLE_TESTING", "test"), + ] + return args From ec058556ad023a124ae500248e8402ea4db4f039 Mon Sep 17 00:00:00 2001 From: Alex Hedges Date: Wed, 30 Oct 2024 17:32:54 -0400 Subject: [PATCH 231/615] Remove trailing spaces in default YAML files (#47328) caught by `prettier` --- etc/spack/defaults/concretizer.yaml | 4 ++-- etc/spack/defaults/packages.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index b3b0605459125c..fef46967a84a58 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -43,7 +43,7 @@ concretizer: # "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG) strategy: minimal # Option to specify compatibility between operating systems for reuse of compilers and packages - # Specified as a key: [list] where the key is the os that is being targeted, and the list contains the OS's - # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's + # Specified as a key: [list] where the key is the os that is being targeted, and the list contains the OS's + # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's # requires two entries i.e. os_compatible: {sonoma: [monterey], monterey: [sonoma]} os_compatible: {} diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 037c648af8228b..b9fdd4b3dbaf86 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -40,9 +40,9 @@ packages: jpeg: [libjpeg-turbo, libjpeg] lapack: [openblas, amdlibflame] libc: [glibc, musl] - libgfortran: [ gcc-runtime ] + libgfortran: [gcc-runtime] libglx: [mesa+glx] - libifcore: [ intel-oneapi-runtime ] + libifcore: [intel-oneapi-runtime] libllvm: [llvm] lua-lang: [lua, lua-luajit-openresty, lua-luajit] luajit: [lua-luajit-openresty, lua-luajit] From f809b56f81cbda887e74b847f9bf1d6d0d5cadaa Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Wed, 30 Oct 2024 15:31:20 -0700 Subject: [PATCH 232/615] mpidiff: new package (#47335) * mpidiff: new package * fix style with black * Add variants, docs, and examples variants. Remove options that are not really options in the build. --- .../repos/builtin/packages/mpidiff/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpidiff/package.py diff --git a/var/spack/repos/builtin/packages/mpidiff/package.py b/var/spack/repos/builtin/packages/mpidiff/package.py new file mode 100644 index 00000000000000..47ae0b8ee196c3 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpidiff/package.py @@ -0,0 +1,39 @@ +# 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) + + +from spack.package import * + + +class Mpidiff(CMakePackage): + """Library for comparing numerical differences between binaries.""" + + homepage = "https://github.com/LLNL/MPIDiff" + url = "https://github.com/LLNL/MPIDiff/archive/refs/tags/v0.2.0.tar.gz" + + maintainers("adayton1") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.2.0", sha256="726b59fe4af0bb0812fc34c456cb0d801e03313a8fdfb9dc63d23a9b316b6118") + + variant("docs", default=False, description="Build and include documentation") + variant("examples", default=False, description="Build and include examples") + variant("tests", default=False, description="Build tests") + + depends_on("cxx", type="build") + + depends_on("blt", type="build") + depends_on("mpi") + + def cmake_args(self): + spec = self.spec + return [ + self.define("MPI_DIR", spec["mpi"].prefix), + self.define("BLT_SOURCE_DIR", spec["blt"].prefix), + self.define_from_variant("MPIDIFF_ENABLE_DOCS", "docs"), + self.define_from_variant("MPIDIFF_ENABLE_EXAMPLES", "examples"), + self.define_from_variant("MPIDIFF_ENABLE_TESTS", "tests"), + ] From 6ab92b119db4ae466f8ee82cfa80237dd7fdbcfa Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 31 Oct 2024 11:15:51 +0100 Subject: [PATCH 233/615] Docs: remove reference to pyspack (#47346) --- lib/spack/docs/index.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index e2c7219e7b38f2..accedfee98554d 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -12,10 +12,6 @@ Spack =================== -.. epigraph:: - - `These are docs for the Spack package manager. For sphere packing, see` `pyspack `_. - Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms and environments. It was designed for large supercomputing centers, From f003d8c0c3967fac0b129794ab84f0a7a6857eb9 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Thu, 31 Oct 2024 09:12:26 -0400 Subject: [PATCH 234/615] vecgeom: new version 1.2.9 (#47306) --- var/spack/repos/builtin/packages/vecgeom/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index 34695cf6b431f1..d48585ad13e990 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -21,6 +21,11 @@ class Vecgeom(CMakePackage, CudaPackage): maintainers("drbenmorgan", "sethrj") version("master", branch="master") + version( + "1.2.9", + url="https://gitlab.cern.ch/-/project/981/uploads/55a89cafbf48a418bec68be42867d4bf/VecGeom-v1.2.9.tar.gz", + sha256="93ee9ce6f7b2d704e9b9db22fad68f81b8eaf17453452969fc47e93dba4bfaf4", + ) version( "1.2.8", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/db11697eb81d6f369e9ded1078de946b/VecGeom-v1.2.8.tar.gz", From 89d0215d5b480e455ce9892b39046e69be957c1d Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Thu, 31 Oct 2024 08:22:01 -0500 Subject: [PATCH 235/615] optipng: add v0.7.8 (#47311) * optipng: add v0.7.8 * optipng: mv for_aarch64.patch for_aarch64_0.7.7.patch * optipng: add for_aarch64_0.7.8.patch * optipng: deprecate v0.7.7 * optipng: fix style --- .../{for_aarch64.patch => for_aarch64_0.7.7.patch} | 0 .../builtin/packages/optipng/for_aarch64_0.7.8.patch | 11 +++++++++++ var/spack/repos/builtin/packages/optipng/package.py | 9 +++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) rename var/spack/repos/builtin/packages/optipng/{for_aarch64.patch => for_aarch64_0.7.7.patch} (100%) create mode 100644 var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch diff --git a/var/spack/repos/builtin/packages/optipng/for_aarch64.patch b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.7.patch similarity index 100% rename from var/spack/repos/builtin/packages/optipng/for_aarch64.patch rename to var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.7.patch diff --git a/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch new file mode 100644 index 00000000000000..9fa2386b3c1e8b --- /dev/null +++ b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch @@ -0,0 +1,11 @@ +--- spack-src/configure.bak 2017-12-27 20:57:00.000000000 +0900 ++++ spack-src/configure 2020-09-28 17:04:51.030223443 +0900 +@@ -193,7 +193,7 @@ + if test "$gccish" -ne 0 + then + CC="${CC-$cc}" +- CFLAGS="${CFLAGS--O2 -Wall -Wextra -Wundef}" ++ CFLAGS="${CFLAGS--O2 -Wall -Wextra -Wundef -DPNG_ARM_NEON_OPT=0}" + else + CC="${CC-cc}" + CFLAGS="${CFLAGS--O}" diff --git a/var/spack/repos/builtin/packages/optipng/package.py b/var/spack/repos/builtin/packages/optipng/package.py index ddbfb626bacf7d..9223cce45c1d22 100644 --- a/var/spack/repos/builtin/packages/optipng/package.py +++ b/var/spack/repos/builtin/packages/optipng/package.py @@ -19,9 +19,14 @@ class Optipng(AutotoolsPackage, SourceforgePackage): license("Zlib") - version("0.7.7", sha256="4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452") + version("0.7.8", sha256="25a3bd68481f21502ccaa0f4c13f84dcf6b20338e4c4e8c51f2cefbd8513398c") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-43907 + version("0.7.7", sha256="4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + # See https://github.com/imagemin/optipng-bin/issues/97 - patch("for_aarch64.patch", when="target=aarch64:") + patch("for_aarch64_0.7.7.patch", when="@0.7.7") + patch("for_aarch64_0.7.8.patch", when="@0.7.8:") From 877930c4effc756ba2ff35cc23f5f61f88d588fb Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Thu, 31 Oct 2024 08:22:39 -0500 Subject: [PATCH 236/615] minio: add v2024-10-13T13-34-11Z (#47303) --- .../repos/builtin/packages/minio/package.py | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/minio/package.py b/var/spack/repos/builtin/packages/minio/package.py index ec216a538f91c1..185dbd881b506f 100644 --- a/var/spack/repos/builtin/packages/minio/package.py +++ b/var/spack/repos/builtin/packages/minio/package.py @@ -18,17 +18,23 @@ class Minio(MakefilePackage): license("AGPL-3.0-or-later") version( - "2020-07-13T18-09-56Z", - sha256="147fca3930389162cc7306a0fa5cf478ee2deba4b31a9317f3d35e82aa58d41e", - ) - version( - "2020-07-12T19-14-17Z", - sha256="bb8ba5d93215ab37788171d8b9ce68e78d64e7b7c74aea508c15958158d85b03", - ) - version( - "2020-07-02T00-15-09Z", - sha256="4255c4d95a3e010f16a3f1e974768dc68509075403a97a9b9882f7d9e89fedc5", + "2024-10-13T13-34-11Z", + sha256="53301a6822f8466da88e3b24252d2551c37e7f96e9d37a36121d0616a69af1dd", ) + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-24747 + version( + "2020-07-13T18-09-56Z", + sha256="147fca3930389162cc7306a0fa5cf478ee2deba4b31a9317f3d35e82aa58d41e", + ) + version( + "2020-07-12T19-14-17Z", + sha256="bb8ba5d93215ab37788171d8b9ce68e78d64e7b7c74aea508c15958158d85b03", + ) + version( + "2020-07-02T00-15-09Z", + sha256="4255c4d95a3e010f16a3f1e974768dc68509075403a97a9b9882f7d9e89fedc5", + ) depends_on("go", type="build") From 275339ab4c9a3ee301c424c103ee5454a11e239f Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 31 Oct 2024 08:55:09 -0600 Subject: [PATCH 237/615] kokkos: add cmake_lang variant, require at least one active backend (#43517) --- .../repos/builtin/packages/kokkos/package.py | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 01ee5235e9c2ce..65e6b0adb8ba11 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -69,6 +69,10 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm", when="@:3.0") conflicts("+sycl", when="@:3.3") conflicts("+openmptarget", when="@:3.5") + conflicts( + "".join([f"~{d}" for d in devices_variants]), + msg="Kokkos requires at least one active backend", + ) # https://github.com/spack/spack/issues/29052 conflicts("@:3.5 +sycl", when="%oneapi@2022:") @@ -212,10 +216,17 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): depends_on(tpl, when="+%s" % tpl) variant("wrapper", default=False, description="Use nvcc-wrapper for CUDA build") + variant( + "cmake_lang", + default=False, + description="Use CMake language support for CUDA/HIP", + when="@3.6:", + ) depends_on("kokkos-nvcc-wrapper", when="+wrapper") depends_on("kokkos-nvcc-wrapper@develop", when="@develop+wrapper") depends_on("kokkos-nvcc-wrapper@master", when="@master+wrapper") conflicts("+wrapper", when="~cuda") + conflicts("+wrapper", when="+cmake_lang") cxxstds = ["11", "14", "17", "20"] variant("cxxstd", default="17", values=cxxstds, multi=False, description="C++ standard") @@ -296,7 +307,7 @@ def append_args(self, cmake_prefix, cmake_options, spack_options): variant_to_cmake_option = {"rocm": "hip"} for variant_name in cmake_options: opt = variant_to_cmake_option.get(variant_name, variant_name) - optname = "Kokkos_%s_%s" % (cmake_prefix, opt.upper()) + optname = f"Kokkos_{cmake_prefix}_{opt.upper()}" # Explicitly enable or disable option = self.define_from_variant(optname, variant_name) if option: @@ -313,14 +324,17 @@ def cmake_args(self): from_variant = self.define_from_variant if spec.satisfies("~wrapper+cuda") and not ( - spec.satisfies("%clang") or spec.satisfies("%cce") + spec.satisfies("%clang") or spec.satisfies("%cce") or spec.satisfies("+cmake_lang") ): - raise InstallError("Kokkos requires +wrapper when using +cuda" "without clang") + raise InstallError( + "Kokkos requires +wrapper when using +cuda without %clang, %cce or +cmake_lang" + ) options = [ from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), from_variant("CMAKE_CXX_STANDARD", "cxxstd"), from_variant("BUILD_SHARED_LIBS", "shared"), + from_variant("Kokkos_ENABLE_COMPILE_AS_CMAKE_LANGUAGE", "cmake_lang"), ] spack_microarches = [] @@ -364,13 +378,27 @@ def cmake_args(self): if spec.variants[tpl].value: options.append(self.define(tpl + "_DIR", spec[tpl].prefix)) - if self.spec.satisfies("+rocm"): - options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - options.append(self.define("Kokkos_ENABLE_ROCTHRUST", True)) - elif self.spec.satisfies("+wrapper"): + if self.spec.satisfies("+wrapper"): options.append( self.define("CMAKE_CXX_COMPILER", self.spec["kokkos-nvcc-wrapper"].kokkos_cxx) ) + elif "+rocm" in self.spec: + if "+cmake_lang" in self.spec: + options.append( + self.define( + "CMAKE_HIP_COMPILER", + join_path(self.spec["llvm-amdgpu"].prefix.bin, "amdclang++"), + ) + ) + options.append(from_variant("CMAKE_HIP_STANDARD", "cxxstd")) + else: + options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) + options.append(self.define("Kokkos_ENABLE_ROCTHRUST", True)) + elif "+cuda" in self.spec and "+cmake_lang" in self.spec: + options.append( + self.define("CMAKE_CUDA_COMPILER", join_path(self.spec["cuda"].prefix.bin, "nvcc")) + ) + options.append(from_variant("CMAKE_CUDA_STANDARD", "cxxstd")) if self.spec.satisfies("%oneapi") or self.spec.satisfies("%intel"): options.append(self.define("CMAKE_CXX_FLAGS", "-fp-model=precise")) From 404b1c6c199a42ff4575841ede9afa4992ca050a Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 31 Oct 2024 09:16:10 -0600 Subject: [PATCH 238/615] nalu-wind: put bounds on yaml-cpp versions. (#47341) --- var/spack/repos/builtin/packages/nalu-wind/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index f29c2aa27d3b2c..3ebf50b3af02d5 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -62,7 +62,7 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): depends_on("fortran", type="build", when="+openfast") depends_on("mpi") - depends_on("yaml-cpp@0.5.3:") + depends_on("yaml-cpp@0.6.0:0.7.0") depends_on("openfast@4.0.0:+cxx+netcdf", when="+fsi") depends_on("trilinos@15.1.1", when="@=2.1.0") depends_on("trilinos@13.4.1", when="@=2.0.0") From a08b4ae53838afc6e7b57b99b299daf2cfeca997 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 31 Oct 2024 10:24:06 -0500 Subject: [PATCH 239/615] extrae: update checksums, fix build (-lintl), minor modernisation (#47343) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/extrae/package.py | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index a89c67e9215f16..24f12bba595749 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -43,17 +43,17 @@ class Extrae(AutotoolsPackage): license("LGPL-2.1-or-later") version("4.1.2", sha256="adbc1d3aefde7649262426d471237dc96f070b93be850a6f15280ed86fd0b952") - version("4.0.6", sha256="b5060336cac57f1345faa09009b1940edf1e6991aae05cc10d0b714d31360a92") + version("4.0.6", sha256="233be38035dd76f6877b1fd93d308e024e5d4ef5519d289f8e319cd6c58d0bc6") version("4.0.5", sha256="8f5eefa95f2e94a3b5f9b7f7cbaaed523862f190575ee797113b1e97deff1586") - version("4.0.4", sha256="003bede870de6d88b705c1a13eabe63b6beb928d8f389f5dd70ca5db8450a1f9") - version("4.0.3", sha256="b5139a07dbb1f4aa9758c1d62d54e42c01125bcfa9aa0cb9ee4f863afae93db1") - version("3.8.3", sha256="c3bf27fb6f18e66200e40a0b4c35bc257766e5c1a525dc5725f561879e88bf32") + version("4.0.4", sha256="b867d395c344020c04e6630e9bfc10bf126e093df989d5563a2f3a6bc7568224") + version("4.0.3", sha256="0d87509ec03584a629a879dccea10cf334f8243004077f6af3745aabb31e7250") + version("3.8.3", sha256="a05e40891104e73e1019b193002dea39e5c3177204ea04495716511ddfd639cf") version("3.7.1", sha256="c83ddd18a380c9414d64ee5de263efc6f7bac5fe362d5b8374170c7f18360378") version("3.4.1", sha256="77bfec16d6b5eee061fbaa879949dcef4cad28395d6a546b1ae1b9246f142725") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("autoconf", type="build") depends_on("automake", type="build") @@ -116,27 +116,27 @@ def configure_args(self): args += ( ["--with-papi=%s" % spec["papi"].prefix] - if "+papi" in self.spec + if spec.satisfies("+papi") else ["--without-papi"] ) args += ( ["--with-dyninst=%s" % spec["dyninst"].prefix] - if "+dyninst" in self.spec + if spec.satisfies("+dyninst") else ["--without-dyninst"] ) args += ( ["--with-cuda=%s" % spec["cuda"].prefix] - if "+cuda" in self.spec + if spec.satisifes("+cuda") else ["--without-cuda"] ) - if self.spec.satisfies("+cupti"): + if spec.satisfies("+cupti"): cupti_h = find_headers("cupti", spec["cuda"].prefix, recursive=True) cupti_dir = os.path.dirname(os.path.dirname(cupti_h[0])) - args += ["--with-cupti=%s" % cupti_dir] if "+cupti" in self.spec else ["--without-cupti"] + args += ["--with-cupti=%s" % cupti_dir] if "+cupti" in spec else ["--without-cupti"] if spec.satisfies("^dyninst@9.3.0:"): make.add_default_arg("CXXFLAGS=%s" % self.compiler.cxx11_flag) @@ -144,6 +144,9 @@ def configure_args(self): args.extend(self.enable_or_disable("single-mpi-lib")) + # Library dir of -lintl as provided by gettext to be independent on the system's libintl + args.append(f"LDFLAGS=-L{spec['gettext'].prefix.lib}") + return args def flag_handler(self, name, flags): From ffde309a99a3a603cc6182ee820324f5e44f7b9d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 31 Oct 2024 16:28:59 +0100 Subject: [PATCH 240/615] py-ipympl: add v0.9.4 (#47193) * py-ipympl: add v0.9.4 * Add node/npm dependencies at runtime * node-js: fix build with older GCC * Change CLANG flags too * Add supported compiler versions * Deprecate older version --- .../repos/builtin/packages/node-js/package.py | 9 ++++ .../py-hatch-jupyter-builder/package.py | 2 + .../py-hatch-nodejs-version/package.py | 1 + .../builtin/packages/py-ipympl/package.py | 47 ++++++++++++++----- .../builtin/packages/py-jupyterlab/package.py | 4 ++ 5 files changed, 50 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index e0111dd673b952..8850255deba572 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -79,6 +79,15 @@ class NodeJs(Package): depends_on("openssl@1.1:", when="+openssl") depends_on("zlib-api", when="+zlib") + # https://github.com/nodejs/node/blob/main/BUILDING.md#supported-toolchains + conflicts("%gcc@:12.1", when="@23:") + conflicts("%gcc@:10.0", when="@20:") + conflicts("%gcc@:8.2", when="@16:") + conflicts("%gcc@:6.2", when="@12:") + conflicts("%apple-clang@:11", when="@21:") + conflicts("%apple-clang@:10", when="@16:") + conflicts("%apple-clang@:9", when="@13:") + phases = ["configure", "build", "install"] # https://github.com/spack/spack/issues/19310 diff --git a/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py b/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py index 0bd62053a1aa52..47d97c4d18809c 100644 --- a/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py +++ b/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py @@ -16,5 +16,7 @@ class PyHatchJupyterBuilder(PythonPackage): version("0.8.3", sha256="0dbd14a8aef6636764f88a8fd1fcc9a91921e5c50356e6aab251782f264ae960") + depends_on("npm", type="run") + depends_on("python@3.8:", type=("build", "run")) depends_on("py-hatchling@1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py b/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py index 5648c0c24792ee..09f2be42831132 100644 --- a/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py +++ b/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py @@ -14,6 +14,7 @@ class PyHatchNodejsVersion(PythonPackage): license("MIT") + version("0.3.2", sha256="8a7828d817b71e50bbbbb01c9bfc0b329657b7900c56846489b9c958de15b54c") version("0.3.1", sha256="0e55fd713d92c5c1ccfee778efecaa780fd8bcd276d4ca7aff9f6791f6f76d9c") depends_on("python@3.7:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-ipympl/package.py b/var/spack/repos/builtin/packages/py-ipympl/package.py index c83d6392b0c12c..a45799610def1b 100644 --- a/var/spack/repos/builtin/packages/py-ipympl/package.py +++ b/var/spack/repos/builtin/packages/py-ipympl/package.py @@ -15,16 +15,37 @@ class PyIpympl(PythonPackage): license("BSD-3-Clause") - version("0.8.8", sha256="5bf5d780b07fafe7924922ac6b2f3abd22721f341e5e196b3b82737dfbd0e1c9") - - depends_on("py-setuptools@40.8:", type="build") - depends_on("py-ipython@:8", type=("build", "run")) - depends_on("py-numpy", type=("build", "run")) - depends_on("py-ipython-genutils", type=("build", "run")) - depends_on("pil", type=("build", "run")) - depends_on("py-traitlets@:5", type=("build", "run")) - depends_on("py-ipywidgets@7.6:7", type=("build", "run")) - depends_on("py-matplotlib@2:3", type=("build", "run")) - depends_on("py-jupyter-packaging@0.7", type="build") - depends_on("py-jupyterlab@3", type="build") - depends_on("yarn", type="build") + version("0.9.4", sha256="cfb53c5b4fcbcee6d18f095eecfc6c6c474303d5b744e72cc66e7a2804708907") + # Build failures + version( + "0.8.8", + sha256="5bf5d780b07fafe7924922ac6b2f3abd22721f341e5e196b3b82737dfbd0e1c9", + deprecated=True, + ) + + with default_args(type="build"): + with when("@0.9:"): + depends_on("py-hatchling") + depends_on("py-jupyterlab@4") + depends_on("py-hatch-nodejs-version@0.3.2:") + + # Historical dependencies + with when("@:0.8"): + depends_on("py-jupyter-packaging@0.7") + depends_on("py-jupyterlab@3") + depends_on("py-setuptools@40.8:") + depends_on("yarn") + + with default_args(type=("build", "run")): + depends_on("py-ipython@:8") + depends_on("py-ipython-genutils") + depends_on("py-ipywidgets@7.6:8", when="@0.9:") + depends_on("py-ipywidgets@7.6:7", when="@:0.8") + depends_on("py-matplotlib@3.4:3", when="@0.9:") + depends_on("py-matplotlib@2:3", when="@:0.8") + depends_on("py-numpy") + depends_on("pil") + depends_on("py-traitlets@:5") + + # Necessary for jupyter extension env vars + depends_on("py-jupyter-core") diff --git a/var/spack/repos/builtin/packages/py-jupyterlab/package.py b/var/spack/repos/builtin/packages/py-jupyterlab/package.py index 08c57c99a9eda4..195ee27e292eca 100644 --- a/var/spack/repos/builtin/packages/py-jupyterlab/package.py +++ b/var/spack/repos/builtin/packages/py-jupyterlab/package.py @@ -29,6 +29,10 @@ class PyJupyterlab(PythonPackage): version("2.2.7", sha256="a72ffd0d919cba03a5ef8422bc92c3332a957ff97b0490494209c83ad93826da") version("2.1.0", sha256="8c239aababf5baa0b3d36e375fddeb9fd96f3a9a24a8cda098d6a414f5bbdc81") + # Optional dependencies needed to install jupyterlab extensions + depends_on("node-js", type="run") + depends_on("npm", type="run") + depends_on("python@3.8:", when="@4:", type=("build", "run")) depends_on("py-hatchling@1.5:", when="@4:", type=("build", "run")) # under [tool.hatch.build.hooks.jupyter-builder] in pyproject.toml From 0437c5314e182f6378baa08ac617473cdef25843 Mon Sep 17 00:00:00 2001 From: Antonio Cervone Date: Thu, 31 Oct 2024 16:52:00 +0100 Subject: [PATCH 241/615] salome,-med,-medcoupling: new versions, new/changed variants (#46576) * boost: boost.python does not support numpy@2 yet --- .../repos/builtin/packages/boost/package.py | 2 +- .../packages/salome-configuration/package.py | 8 ++- .../builtin/packages/salome-med/package.py | 27 ++++---- .../packages/salome-medcoupling/package.py | 66 ++++++++----------- 4 files changed, 53 insertions(+), 50 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 908ea40a89abca..75a6d543e4b6b1 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -258,7 +258,7 @@ def libs(self): depends_on("xz", when="+iostreams") depends_on("py-numpy", when="+numpy", type=("build", "run")) # https://github.com/boostorg/python/issues/431 - depends_on("py-numpy@:1", when="@:1.85+numpy", type=("build", "run")) + depends_on("py-numpy@:1", when="@:1.86+numpy", type=("build", "run")) # Improve the error message when the context-impl variant is conflicting conflicts("context-impl=fcontext", when="@:1.65.0") diff --git a/var/spack/repos/builtin/packages/salome-configuration/package.py b/var/spack/repos/builtin/packages/salome-configuration/package.py index 13f15926ac27dc..9abb0fe942b3ff 100644 --- a/var/spack/repos/builtin/packages/salome-configuration/package.py +++ b/var/spack/repos/builtin/packages/salome-configuration/package.py @@ -18,6 +18,12 @@ class SalomeConfiguration(Package): homepage = "https://www.salome-platform.org" git = "https://git.salome-platform.org/gitpub/tools/configuration.git" + version("9.13.0", tag="V9_13_0", commit="1c9b00436fc0e8264742460ebc102ae7d1970e97") + version("9.12.0", tag="V9_12_0", commit="61ed79521f31363ba4aeedcd59812a4838c076aa") + version("9.11.0", tag="V9_11_0", commit="33fc859a523e9f84cabaae2c55fdc64d1be11ec0") + version("9.10.0", tag="V9_10_0", commit="25f724f7a6c0000330a40c3851dcd8bc2493e1fa") + version("9.9.0", tag="V9_9_0", commit="5e61c7330cb2e0ff39e0bf4ba7b65d1d26c824ac") + version("9.8.0", tag="V9_8_0", commit="f1b2929d32953ac4d2056d564dab62e2e8d7c2a5") version("9.7.0", tag="V9_7_0", commit="b1430e72bc252867289b45de9a94041841fade06") version("9.6.0", tag="V9_6_0", commit="02e621fc9e24b4eab20f82ef921859013bf024b4") version("9.5.0", tag="V9_5_0", commit="96ecd4927604943dc80ead4aaf732a9d0215b70c") @@ -25,7 +31,7 @@ class SalomeConfiguration(Package): version("9.3.0", tag="V9_3_0", commit="de7bac0ee58007a9501fffa7c1488de029b19cdc") patch("SalomeMacros.patch", working_dir="./cmake") - patch("FindSalomeHDF5.patch", working_dir="./cmake") + patch("FindSalomeHDF5.patch", working_dir="./cmake", when="@:9.7.0") def setup_dependent_build_environment(self, env, dependent_spec): env.set("CONFIGURATION_ROOT_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/salome-med/package.py b/var/spack/repos/builtin/packages/salome-med/package.py index 08a7762cadbbb8..a96950b500bd47 100644 --- a/var/spack/repos/builtin/packages/salome-med/package.py +++ b/var/spack/repos/builtin/packages/salome-med/package.py @@ -20,6 +20,12 @@ class SalomeMed(CMakePackage): license("LGPL-3.0-only") + version( + "5.0.0", + sha256="267e76d0c67ec51c10e3199484ec1508baa8d5ed845c628adf660529dce7a3d4", + url="ftp://ftp.cea.fr/pub/salome/prerequisites/med-5.0.0.tar.bz2", + ) + version("4.1.1", sha256="a082b705d1aafe95d3a231d12c57f0b71df554c253e190acca8d26fc775fb1e6") version("4.1.0", sha256="847db5d6fbc9ce6924cb4aea86362812c9a5ef6b9684377e4dd6879627651fce") version("4.0.0", sha256="a474e90b5882ce69c5e9f66f6359c53b8b73eb448c5f631fa96e8cd2c14df004") version("3.3.1", sha256="856e9c4bb75eb0cceac3d5a5c65b1ce52fb3c46b9182920e1c9f34ae69bd2d5f") @@ -32,20 +38,14 @@ class SalomeMed(CMakePackage): variant("mpi", default=False, description="Enable MPI") variant("static", default=False, description="Enable static library build") variant("fortran", default=False, description="Enable Fortran") + variant("int64", default=False, description="Use 64-bit integers as indices.") depends_on("mpi", when="+mpi") - depends_on("hdf5@1.10.3+mpi", when="@4.1.0+mpi") - depends_on("hdf5@1.10.3~mpi", when="@4.1.0~mpi") - - depends_on("hdf5@1.10.3+mpi", when="@4.0.0+mpi") - depends_on("hdf5@1.10.3~mpi", when="@4.0.0~mpi") - - depends_on("hdf5@1.8.14+mpi", when="@3.3.1+mpi") - depends_on("hdf5@1.8.14~mpi", when="@3.3.1~mpi") - - depends_on("hdf5@1.8.14+mpi", when="@3.2.0+mpi") - depends_on("hdf5@1.8.14~mpi", when="@3.2.0~mpi") + for _mpi_variant in ("~mpi", "+mpi"): + depends_on(f"hdf5@1.12{_mpi_variant}", when=f"@5:{_mpi_variant}") + depends_on(f"hdf5@1.10{_mpi_variant}", when=f"@4{_mpi_variant}") + depends_on(f"hdf5@1.8{_mpi_variant}", when=f"@3{_mpi_variant}") patch("MAJ_400_410_champs.patch", when="@4.1.0+static", working_dir="./tools/medimport/4.0.0") @@ -85,6 +85,11 @@ def cmake_args(self): else: options.extend(["-DCMAKE_Fortran_COMPILER="]) + if "+int64" in spec: + options.append("-DMED_MEDINT_TYPE=long") + else: + options.append("-DMED_MEDINT_TYPE=int") + options.extend( [ "-DMEDFILE_BUILD_PYTHON=OFF", diff --git a/var/spack/repos/builtin/packages/salome-medcoupling/package.py b/var/spack/repos/builtin/packages/salome-medcoupling/package.py index 89f681b200a5c9..2c24579706a2e2 100644 --- a/var/spack/repos/builtin/packages/salome-medcoupling/package.py +++ b/var/spack/repos/builtin/packages/salome-medcoupling/package.py @@ -20,6 +20,12 @@ class SalomeMedcoupling(CMakePackage): license("LGPL-2.1-or-later") + version("9.13.0", tag="V9_13_0", commit="8bea530c92cd907ae859ef11fd95b2db54b2894a") + version("9.12.0", tag="V9_12_0", commit="28e485bde1c26dc835ec7acf449b1d519997ddce") + version("9.11.0", tag="V9_11_0", commit="1b5fb5650409b0ad3a61da3215496f2adf2dae02") + version("9.10.0", tag="V9_10_0", commit="fe2e38d301902c626f644907e00e499552bb2fa5") + version("9.9.0", tag="V9_9_0", commit="5b2a9cc1cc18fffd5674a589aacf368008983b45") + version("9.8.0", tag="V9_8_0", commit="8a82259c9a9228c54efeddd52d4afe6c0e397c30") version("9.7.0", tag="V9_7_0", commit="773434a7f2a5cbacc2f50e93ea6d6a48a157acd9") version("9.6.0", tag="V9_6_0", commit="2c14a65b40252770b3503945405f5bdb2f29f8e2") version("9.5.0", tag="V9_5_0", commit="dd75474d950baf8ff862b03cb1685f2a2d562846") @@ -31,7 +37,7 @@ class SalomeMedcoupling(CMakePackage): variant("static", default=False, description="Enable static library build") variant("mpi", default=False, description="Enable MPI") - variant("in64", default=False, description="Enable 64 bits indexes") + variant("int64", default=False, description="Use 64 bits indices") variant("partitioner", default=False, description="Enable partitioner") variant("metis", default=False, description="Enable Metis") variant("scotch", default=False, description="Enable Scotch") @@ -49,35 +55,25 @@ class SalomeMedcoupling(CMakePackage): depends_on("scotch@6.0.4:", when="+scotch") depends_on("mpi", when="+mpi") - depends_on("salome-configuration@9.7.0", when="@9.7.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.7.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.7.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.7.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.7.0~mpi") - - depends_on("salome-configuration@9.6.0", when="@9.6.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.6.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.6.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.6.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.6.0~mpi") - - depends_on("salome-configuration@9.5.0", when="@9.5.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.5.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.5.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.5.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.5.0~mpi") - - depends_on("salome-configuration@9.4.0", when="@9.4.0") - depends_on("salome-med@4.0.0+mpi+static", when="@9.4.0+mpi+static") - depends_on("salome-med@4.0.0+mpi", when="@9.4.0+mpi") - depends_on("salome-med@4.0.0+static", when="@9.4.0~mpi+static") - depends_on("salome-med@4.0.0", when="@9.4.0~mpi") - - depends_on("salome-configuration@9.3.0", when="@9.3.0") - depends_on("salome-med@4.0.0+mpi+static", when="@9.3.0+mpi+static") - depends_on("salome-med@4.0.0+mpi", when="@9.3.0+mpi") - depends_on("salome-med@4.0.0+static", when="@9.3.0~mpi+static") - depends_on("salome-med@4.0.0", when="@9.3.0~mpi") + for _min_ver in range(3, 14): + _ver = f"9.{_min_ver}.0" + depends_on(f"salome-configuration@{_ver}", when=f"@{_ver}") + + for _mpi_variant in ("~mpi", "+mpi"): + for _static_variant in ("~static", "+static"): + for _int64_variant in ("~int64", "+int64"): + depends_on( + f"salome-med@4.1.1{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.11.0:{_mpi_variant}{_static_variant}{_int64_variant}", + ) + depends_on( + f"salome-med@4.1.0{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.5.0:9.10.0{_mpi_variant}{_static_variant}{_int64_variant}", + ) + depends_on( + f"salome-med@4.0.0{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.3.0:9.4.0{_mpi_variant}{_static_variant}{_int64_variant}", + ) def check(self): pass @@ -90,13 +86,9 @@ def setup_build_environment(self, env): env.set("SCOTCH_ROOT_DIR", self.spec["scotch"].prefix) def setup_run_environment(self, env): + python_ver = self.spec["python"].version.up_to(2) env.prepend_path( - "PYTHONPATH", - join_path( - self.prefix.lib, - "python{0}".format(self.spec["python"].version.up_to(2)), - "site-packages", - ), + "PYTHONPATH", join_path(self.prefix.lib, f"python{python_ver}", "site-packages") ) def cmake_args(self): @@ -113,7 +105,7 @@ def cmake_args(self): else: options.extend(["-DMEDCOUPLING_USE_MPI=OFF", "-DSALOME_USE_MPI=OFF"]) - if "+in64" in spec: + if "+int64" in spec: options.extend(["-DMEDCOUPLING_USE_64BIT_IDS=ON"]) else: options.extend(["-DMEDCOUPLING_USE_64BIT_IDS=OFF"]) From c6a1ec996c3b39aec8aa64240c77dca55a2aa114 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:55:02 +0100 Subject: [PATCH 242/615] gsl: new version 2.8 (#47286) --- var/spack/repos/builtin/packages/gsl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py index 2a9b83c80a17d9..6b17ec9e2e56a5 100644 --- a/var/spack/repos/builtin/packages/gsl/package.py +++ b/var/spack/repos/builtin/packages/gsl/package.py @@ -19,6 +19,7 @@ class Gsl(AutotoolsPackage, GNUMirrorPackage): license("GPL-3.0-or-later") + version("2.8", sha256="6a99eeed15632c6354895b1dd542ed5a855c0f15d9ad1326c6fe2b2c9e423190") version("2.7.1", sha256="dcb0fbd43048832b757ff9942691a8dd70026d5da0ff85601e52687f6deeb34b") version("2.7", sha256="efbbf3785da0e53038be7907500628b466152dbc3c173a87de1b5eba2e23602b") version("2.6", sha256="b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8") From 0c00a297e118f3d15e3c24743c102570f754ddd5 Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Thu, 31 Oct 2024 12:31:34 -0500 Subject: [PATCH 243/615] Concretize reuse: reuse specs from environment (#45139) The already concrete specs in an environment are now among the reusable specs for the concretizer. This includes concrete specs from all include_concrete environments. In addition to this change to the default reuse, `environment` is added as a reuse type for the concretizer config. This allows users to specify: spack: concretizer: # Reuse from this environment (including included concrete) but not elsewhere reuse: from: - type: environment # or reuse from only my_env included environment reuse: from: - type: environment: my_env # or reuse from everywhere reuse: true If reuse is specified from a specific environment, only specs from that environment will be reused. If the reused environment is not specified via include_concrete, the concrete specs will be retried at concretization time to be reused. Signed-off-by: Ryan Krattiger Co-authored-by: Gregory Becker --- lib/spack/spack/environment/__init__.py | 4 + lib/spack/spack/environment/environment.py | 26 +++- lib/spack/spack/schema/concretizer.py | 19 ++- lib/spack/spack/schema/env.py | 4 +- lib/spack/spack/solver/asp.py | 92 +++++++++++++- lib/spack/spack/test/cmd/env.py | 132 ++++++++++++++++++++- lib/spack/spack/test/env.py | 15 +++ 7 files changed, 279 insertions(+), 13 deletions(-) diff --git a/lib/spack/spack/environment/__init__.py b/lib/spack/spack/environment/__init__.py index fb083594e00fb5..62445e04379134 100644 --- a/lib/spack/spack/environment/__init__.py +++ b/lib/spack/spack/environment/__init__.py @@ -473,6 +473,7 @@ active_environment, all_environment_names, all_environments, + as_env_dir, create, create_in_dir, deactivate, @@ -480,6 +481,7 @@ default_view_name, display_specs, environment_dir_from_name, + environment_from_name_or_dir, exists, initialize_environment_dir, installed_specs, @@ -507,6 +509,7 @@ "active_environment", "all_environment_names", "all_environments", + "as_env_dir", "create", "create_in_dir", "deactivate", @@ -514,6 +517,7 @@ "default_view_name", "display_specs", "environment_dir_from_name", + "environment_from_name_or_dir", "exists", "initialize_environment_dir", "installed_specs", diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index b00405b5d1e277..81a2223c4995b8 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -277,6 +277,22 @@ def is_env_dir(path): return os.path.isdir(path) and os.path.exists(os.path.join(path, manifest_name)) +def as_env_dir(name_or_dir): + """Translate an environment name or directory to the environment directory""" + if is_env_dir(name_or_dir): + return name_or_dir + else: + validate_env_name(name_or_dir) + if not exists(name_or_dir): + raise SpackEnvironmentError("no such environment '%s'" % name_or_dir) + return root(name_or_dir) + + +def environment_from_name_or_dir(name_or_dir): + """Get an environment with the supplied name.""" + return Environment(as_env_dir(name_or_dir)) + + def read(name): """Get an environment with the supplied name.""" validate_env_name(name) @@ -1506,6 +1522,7 @@ def _get_specs_to_concretize( # Exit early if the set of concretized specs is the set of user specs new_user_specs = set(self.user_specs) - set(self.concretized_user_specs) kept_user_specs = set(self.user_specs) & set(self.concretized_user_specs) + kept_user_specs |= set(self.included_user_specs) if not new_user_specs: return new_user_specs, kept_user_specs, [] @@ -1552,7 +1569,10 @@ def _concretize_together_where_possible( abstract = old_concrete_to_abstract.get(abstract, abstract) if abstract in new_user_specs: result.append((abstract, concrete)) - self._add_concrete_spec(abstract, concrete) + + # Only add to the environment if it's from this environment (not just included) + if abstract in self.user_specs: + self._add_concrete_spec(abstract, concrete) return result @@ -1595,7 +1615,9 @@ def _concretize_together( ordered_user_specs = list(new_user_specs) + list(kept_user_specs) concretized_specs = [x for x in zip(ordered_user_specs, concrete_specs)] for abstract, concrete in concretized_specs: - self._add_concrete_spec(abstract, concrete) + # Don't add if it's just included + if abstract in self.user_specs: + self._add_concrete_spec(abstract, concrete) # zip truncates the longer list, which is exactly what we want here return list(zip(new_user_specs, concrete_specs)) diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index 0b222d923e1b0f..b52b305ed9a12d 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -32,8 +32,23 @@ "type": "object", "properties": { "type": { - "type": "string", - "enum": ["local", "buildcache", "external"], + "oneOf": [ + { + "type": "string", + "enum": [ + "local", + "buildcache", + "environment", + "external", + ], + }, + { + "type": "object", + "properties": { + "environment": {"type": "string"} + }, + }, + ] }, "include": LIST_OF_SPECS, "exclude": LIST_OF_SPECS, diff --git a/lib/spack/spack/schema/env.py b/lib/spack/spack/schema/env.py index 0adeb7b475ba28..b75bd231f4d206 100644 --- a/lib/spack/spack/schema/env.py +++ b/lib/spack/spack/schema/env.py @@ -19,6 +19,8 @@ #: Top level key in a manifest file TOP_LEVEL_KEY = "spack" +include_concrete = {"type": "array", "default": [], "items": {"type": "string"}} + properties: Dict[str, Any] = { "spack": { "type": "object", @@ -31,7 +33,7 @@ { "include": {"type": "array", "default": [], "items": {"type": "string"}}, "specs": spec_list_schema, - "include_concrete": {"type": "array", "default": [], "items": {"type": "string"}}, + "include_concrete": include_concrete, }, ), } diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 940aae0a72b608..97fbd03e8f1e8c 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -2616,6 +2616,7 @@ def setup( ) for name, info in env.dev_specs.items() ) + specs = tuple(specs) # ensure compatible types to add self.gen.h1("Reusable concrete specs") @@ -3978,7 +3979,7 @@ def selected_specs(self) -> List[spack.spec.Spec]: return [s for s in self.factory() if self.is_selected(s)] @staticmethod - def from_store(configuration, include, exclude) -> "SpecFilter": + def from_store(configuration, *, include, exclude) -> "SpecFilter": """Constructs a filter that takes the specs from the current store.""" packages = _external_config_with_implicit_externals(configuration) is_reusable = functools.partial(_is_reusable, packages=packages, local=True) @@ -3986,7 +3987,7 @@ def from_store(configuration, include, exclude) -> "SpecFilter": return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) @staticmethod - def from_buildcache(configuration, include, exclude) -> "SpecFilter": + def from_buildcache(configuration, *, include, exclude) -> "SpecFilter": """Constructs a filter that takes the specs from the configured buildcaches.""" packages = _external_config_with_implicit_externals(configuration) is_reusable = functools.partial(_is_reusable, packages=packages, local=False) @@ -3994,6 +3995,29 @@ def from_buildcache(configuration, include, exclude) -> "SpecFilter": factory=_specs_from_mirror, is_usable=is_reusable, include=include, exclude=exclude ) + @staticmethod + def from_environment(configuration, *, include, exclude, env) -> "SpecFilter": + packages = _external_config_with_implicit_externals(configuration) + is_reusable = functools.partial(_is_reusable, packages=packages, local=True) + factory = functools.partial(_specs_from_environment, env=env) + return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) + + @staticmethod + def from_environment_included_concrete( + configuration, + *, + include: List[str], + exclude: List[str], + env: ev.Environment, + included_concrete: str, + ) -> "SpecFilter": + packages = _external_config_with_implicit_externals(configuration) + is_reusable = functools.partial(_is_reusable, packages=packages, local=True) + factory = functools.partial( + _specs_from_environment_included_concrete, env=env, included_concrete=included_concrete + ) + return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) + def _specs_from_store(configuration): store = spack.store.create(configuration) @@ -4011,6 +4035,23 @@ def _specs_from_mirror(): return [] +def _specs_from_environment(env): + """Return all concrete specs from the environment. This includes all included concrete""" + if env: + return [concrete for _, concrete in env.concretized_specs()] + else: + return [] + + +def _specs_from_environment_included_concrete(env, included_concrete): + """Return only concrete specs from the environment included from the included_concrete""" + if env: + assert included_concrete in env.included_concrete_envs + return [concrete for concrete in env.included_specs_by_hash[included_concrete].values()] + else: + return [] + + class ReuseStrategy(enum.Enum): ROOTS = enum.auto() DEPENDENCIES = enum.auto() @@ -4040,6 +4081,12 @@ def __init__(self, configuration: spack.config.Configuration) -> None: SpecFilter.from_buildcache( configuration=self.configuration, include=[], exclude=[] ), + SpecFilter.from_environment( + configuration=self.configuration, + include=[], + exclude=[], + env=ev.active_environment(), # includes all concrete includes + ), ] ) else: @@ -4054,7 +4101,46 @@ def __init__(self, configuration: spack.config.Configuration) -> None: for source in reuse_yaml.get("from", default_sources): include = source.get("include", default_include) exclude = source.get("exclude", default_exclude) - if source["type"] == "local": + if isinstance(source["type"], dict): + env_dir = ev.as_env_dir(source["type"].get("environment")) + active_env = ev.active_environment() + if active_env and env_dir in active_env.included_concrete_envs: + # If environment is included as a concrete environment, use the local copy + # of specs in the active environment. + # note: included concrete environments are only updated at concretization + # time, and reuse needs to matchthe included specs. + self.reuse_sources.append( + SpecFilter.from_environment_included_concrete( + self.configuration, + include=include, + exclude=exclude, + env=active_env, + included_concrete=env_dir, + ) + ) + else: + # If the environment is not included as a concrete environment, use the + # current specs from its lockfile. + self.reuse_sources.append( + SpecFilter.from_environment( + self.configuration, + include=include, + exclude=exclude, + env=ev.environment_from_name_or_dir(env_dir), + ) + ) + elif source["type"] == "environment": + # reusing from the current environment implicitly reuses from all of the + # included concrete environments + self.reuse_sources.append( + SpecFilter.from_environment( + self.configuration, + include=include, + exclude=exclude, + env=ev.active_environment(), + ) + ) + elif source["type"] == "local": self.reuse_sources.append( SpecFilter.from_store(self.configuration, include=include, exclude=exclude) ) diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index d1d35e6f5e0cb4..f82cee10d723c3 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -9,6 +9,7 @@ import pathlib import shutil from argparse import Namespace +from typing import Any, Dict, Optional import pytest @@ -74,7 +75,7 @@ def setup_combined_multiple_env(): env("create", "test1") test1 = ev.read("test1") with test1: - add("zlib") + add("mpich@1.0") test1.concretize() test1.write() @@ -401,14 +402,17 @@ def test_env_install_single_spec(install_mockery, mock_fetch): @pytest.mark.parametrize("unify", [True, False, "when_possible"]) -def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch): +def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch, mutable_config): test1, test2, combined = setup_combined_multiple_env() + combined.unify = unify + if not unify: + combined.manifest.set_default_view(False) + + combined.add("mpileaks") combined.concretize() combined.write() - combined.unify = unify - with combined: install() @@ -422,6 +426,14 @@ def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch): assert test1_roots == combined_included_roots[test1.path] assert test2_roots == combined_included_roots[test2.path] + mpileaks = combined.specs_by_hash[combined.concretized_order[0]] + if unify: + assert mpileaks["mpi"].dag_hash() in test1_roots + assert mpileaks["libelf"].dag_hash() in test2_roots + else: + # check that unification is not by accident + assert mpileaks["mpi"].dag_hash() not in test1_roots + def test_env_roots_marked_explicit(install_mockery, mock_fetch): install = SpackCommand("install") @@ -1869,7 +1881,7 @@ def test_env_include_concrete_envs_lockfile(): def test_env_include_concrete_add_env(): test1, test2, combined = setup_combined_multiple_env() - # crete new env & crecretize + # create new env & concretize env("create", "new") new_env = ev.read("new") with new_env: @@ -1921,6 +1933,116 @@ def test_env_include_concrete_remove_env(): assert test2.path not in lockfile_as_dict["include_concrete"].keys() +def configure_reuse(reuse_mode, combined_env) -> Optional[ev.Environment]: + override_env = None + _config: Dict[Any, Any] = {} + if reuse_mode == "true": + _config = {"concretizer": {"reuse": True}} + elif reuse_mode == "from_environment": + _config = {"concretizer": {"reuse": {"from": [{"type": "environment"}]}}} + elif reuse_mode == "from_environment_test1": + _config = {"concretizer": {"reuse": {"from": [{"type": {"environment": "test1"}}]}}} + elif reuse_mode == "from_environment_external_test": + # Create a new environment called external_test that enables the "debug" + # The default is "~debug" + env("create", "external_test") + override_env = ev.read("external_test") + with override_env: + add("mpich@1.0 +debug") + override_env.concretize() + override_env.write() + + # Reuse from the environment that is not included. + # Specify the requirement for the debug variant. By default this would concretize to use + # mpich@3.0 but with include concrete the mpich@1.0 +debug version from the + # "external_test" environment will be used. + _config = { + "concretizer": {"reuse": {"from": [{"type": {"environment": "external_test"}}]}}, + "packages": {"mpich": {"require": ["+debug"]}}, + } + elif reuse_mode == "from_environment_raise": + _config = { + "concretizer": {"reuse": {"from": [{"type": {"environment": "not-a-real-env"}}]}} + } + # Disable unification in these tests to avoid confusing reuse due to unification using an + # include concrete spec vs reuse due to the reuse configuration + _config["concretizer"].update({"unify": False}) + + combined_env.manifest.configuration.update(_config) + combined_env.manifest.changed = True + combined_env.write() + + return override_env + + +@pytest.mark.parametrize( + "reuse_mode", + [ + "true", + "from_environment", + "from_environment_test1", + "from_environment_external_test", + "from_environment_raise", + ], +) +def test_env_include_concrete_reuse(monkeypatch, reuse_mode): + + # The mock packages do not use the gcc-runtime + def mock_has_runtime_dependencies(*args, **kwargs): + return True + + monkeypatch.setattr( + spack.solver.asp, "_has_runtime_dependencies", mock_has_runtime_dependencies + ) + # The default mpi version is 3.x provided by mpich in the mock repo. + # This test verifies that concretizing with an included concrete + # environment with "concretizer:reuse:true" the included + # concrete spec overrides the default with mpi@1.0. + test1, _, combined = setup_combined_multiple_env() + + # Set the reuse mode for the environment + override_env = configure_reuse(reuse_mode, combined) + if override_env: + # If there is an override environment (ie. testing reuse with + # an external environment) update it here. + test1 = override_env + + # Capture the test1 specs included by combined + test1_specs_by_hash = test1.specs_by_hash + + try: + # Add mpileaks to the combined environment + with combined: + add("mpileaks") + combined.concretize() + comb_specs_by_hash = combined.specs_by_hash + + # create reference env with mpileaks that does not use reuse + # This should concretize to the default version of mpich (3.0) + env("create", "new") + ref_env = ev.read("new") + with ref_env: + add("mpileaks") + ref_env.concretize() + ref_specs_by_hash = ref_env.specs_by_hash + + # Ensure that the mpich used by the mpileaks is the mpich from the reused test environment + comb_mpileaks_spec = [s for s in comb_specs_by_hash.values() if s.name == "mpileaks"] + test1_mpich_spec = [s for s in test1_specs_by_hash.values() if s.name == "mpich"] + assert len(comb_mpileaks_spec) == 1 + assert len(test1_mpich_spec) == 1 + assert comb_mpileaks_spec[0]["mpich"].dag_hash() == test1_mpich_spec[0].dag_hash() + + # None of the references specs (using mpich@3) reuse specs from test1. + # This tests that the reuse is not happening coincidently + assert not any([s in test1_specs_by_hash for s in ref_specs_by_hash]) + + # Make sure the raise tests raises + assert "raise" not in reuse_mode + except ev.SpackEnvironmentError: + assert "raise" in reuse_mode + + @pytest.mark.parametrize("unify", [True, False, "when_possible"]) def test_env_include_concrete_env_reconcretized(unify): """Double check to make sure that concrete_specs for the local specs is empty diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py index 3f2183f5e2b028..a542539899c7cd 100644 --- a/lib/spack/spack/test/env.py +++ b/lib/spack/spack/test/env.py @@ -906,3 +906,18 @@ def test_only_roots_are_explicitly_installed(tmp_path, mock_packages, config, te assert callpath in temporary_store.db.query(explicit=False) env.install_specs([mpileaks], fake=True) assert temporary_store.db.query(explicit=True) == [mpileaks] + + +def test_environment_from_name_or_dir(mock_packages, mutable_mock_env_path, tmp_path): + test_env = ev.create("test") + + name_env = ev.environment_from_name_or_dir(test_env.name) + assert name_env.name == test_env.name + assert name_env.path == test_env.path + + dir_env = ev.environment_from_name_or_dir(test_env.path) + assert dir_env.name == test_env.name + assert dir_env.path == test_env.path + + with pytest.raises(ev.SpackEnvironmentError, match="no such environment"): + _ = ev.environment_from_name_or_dir("fake-env") From 94c29e1cfcc11c2d983513dfb65e3ab5bb13e161 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Thu, 31 Oct 2024 14:57:56 -0500 Subject: [PATCH 244/615] mcpp: add v2.7.2-25-g619046f with CVE patches (#47301) --- var/spack/repos/builtin/packages/mcpp/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mcpp/package.py b/var/spack/repos/builtin/packages/mcpp/package.py index 0dd0562ee2d32d..f2ee6652a2c34d 100644 --- a/var/spack/repos/builtin/packages/mcpp/package.py +++ b/var/spack/repos/builtin/packages/mcpp/package.py @@ -12,11 +12,13 @@ class Mcpp(AutotoolsPackage, SourceforgePackage): homepage = "https://sourceforge.net/projects/mcpp/" sourceforge_mirror_path = "mcpp/mcpp/V.2.7.2/mcpp-2.7.2.tar.gz" + git = "https://github.com/jbrandwood/mcpp.git" + # Versions from `git describe --tags` + version("2.7.2-25-g619046f", commit="619046fa0debac3f86ff173098aeb59b8f051d19") version("2.7.2", sha256="3b9b4421888519876c4fc68ade324a3bbd81ceeb7092ecdbbc2055099fcb8864") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") def configure_args(self): config_args = ["--enable-mcpplib", "--disable-static"] From e3aca49e25e70883fd45ec42c3a43fcd7fda5e29 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 31 Oct 2024 21:58:42 +0100 Subject: [PATCH 245/615] database.py: remove process unsafe update_explicit (#47358) Fixes an issue reported where `spack env depfile` + `make -j` would non-deterministically refuse to mark all environment roots explicit. `update_explicit` had the pattern ```python rec = self._data[key] with self.write_transaction(): rec.explicit = explicit ``` but `write_transaction` may reinitialize `self._data`, meaning that mutating `rec` won't mutate `self._data`, and the changes won't be persisted. Instead, use `mark` which has a correct implementation. Also avoids the essentially incorrect early return in `update_explicit` which is a pattern I don't think belongs in database.py: it branches on possibly stale data to realize there is nothing to change, but in reality it requires a write transaction to know that for a fact, but that would defeat the purpose. So, leave this optimization to the call site. --- lib/spack/spack/cmd/mark.py | 5 +++-- lib/spack/spack/database.py | 20 +------------------- lib/spack/spack/installer.py | 6 +++--- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py index 0069008c4f05ac..66a84fb9076212 100644 --- a/lib/spack/spack/cmd/mark.py +++ b/lib/spack/spack/cmd/mark.py @@ -98,8 +98,9 @@ def do_mark(specs, explicit): specs (list): list of specs to be marked explicit (bool): whether to mark specs as explicitly installed """ - for spec in specs: - spack.store.STORE.db.update_explicit(spec, explicit) + with spack.store.STORE.db.write_transaction(): + for spec in specs: + spack.store.STORE.db.mark(spec, "explicit", explicit) def mark_specs(args, specs): diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 12f6ac24659fb3..e53dd817a52b1d 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -1336,7 +1336,7 @@ def _deprecate(self, spec: "spack.spec.Spec", deprecator: "spack.spec.Spec") -> self._data[spec_key] = spec_rec @_autospec - def mark(self, spec: "spack.spec.Spec", key, value) -> None: + def mark(self, spec: "spack.spec.Spec", key: str, value: Any) -> None: """Mark an arbitrary record on a spec.""" with self.write_transaction(): return self._mark(spec, key, value) @@ -1771,24 +1771,6 @@ def root(key, record): if id(rec.spec) not in needed and rec.installed ] - def update_explicit(self, spec, explicit): - """ - Update the spec's explicit state in the database. - - Args: - spec (spack.spec.Spec): the spec whose install record is being updated - explicit (bool): ``True`` if the package was requested explicitly - by the user, ``False`` if it was pulled in as a dependency of - an explicit package. - """ - rec = self.get_record(spec) - if explicit != rec.explicit: - with self.write_transaction(): - message = "{s.name}@{s.version} : marking the package {0}" - status = "explicit" if explicit else "implicit" - tty.debug(message.format(status, s=spec)) - rec.explicit = explicit - class NoUpstreamVisitor: """Gives edges to upstream specs, but does follow edges from upstream specs.""" diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 80fe9f2b038e58..be09973336b2cd 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -412,7 +412,7 @@ def _process_external_package(pkg: "spack.package_base.PackageBase", explicit: b tty.debug(f"{pre} already registered in DB") record = spack.store.STORE.db.get_record(spec) if explicit and not record.explicit: - spack.store.STORE.db.update_explicit(spec, explicit) + spack.store.STORE.db.mark(spec, "explicit", True) except KeyError: # If not, register it and generate the module file. @@ -1507,8 +1507,8 @@ def _prepare_for_install(self, task: Task) -> None: self._update_installed(task) # Only update the explicit entry once for the explicit package - if task.explicit: - spack.store.STORE.db.update_explicit(task.pkg.spec, True) + if task.explicit and not rec.explicit: + spack.store.STORE.db.mark(task.pkg.spec, "explicit", True) def _cleanup_all_tasks(self) -> None: """Cleanup all tasks to include releasing their locks.""" From 0de1ddcbe84db8fb996ee0be94ebce03c82fba03 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 31 Oct 2024 16:33:04 -0500 Subject: [PATCH 246/615] cbtf: Update Boost dependencies (#47131) --- var/spack/repos/builtin/packages/cbtf/package.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index dcd00bb0f9f392..7daccff49836a0 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.pkg.builtin.boost import Boost class Cbtf(CMakePackage): @@ -48,12 +47,7 @@ class Cbtf(CMakePackage): # for rpc depends_on("libtirpc", type="link") - depends_on("boost@1.70.0:") - - # TODO: replace this with an explicit list of components of Boost, - # for instance depends_on('boost +filesystem') - # See https://github.com/spack/spack/pull/22303 for reference - depends_on(Boost.with_default_variants) + depends_on("boost@1.70.0:1.84.0+date_time+filesystem+test+thread") # For MRNet depends_on("mrnet@5.0.1-3:+lwthreads", when="@develop") From e35bc1f82d826513896e92dc429c885dbdb44856 Mon Sep 17 00:00:00 2001 From: Paolo <142514942+paolotricerri@users.noreply.github.com> Date: Thu, 31 Oct 2024 21:51:47 +0000 Subject: [PATCH 247/615] acfl, armpl-cc: add v24.10 (#47167) * Introduce support for ArmPL and ACfL 24.10 This patch introduces the possibility of installing armpl-gcc and acfl 24.10 through spack. It also addressed one issue observed after PR https://github.com/spack/spack/pull/46594 * Fix Github action issues. - Remove default URL - Reinstate default OS for ACfL to RHEL. --- .../repos/builtin/packages/acfl/package.py | 50 ++++++++++++++++--- .../builtin/packages/armpl-gcc/package.py | 28 ++++++----- 2 files changed, 60 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index b1e30fd767906e..4df0644898456b 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -2,6 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from spack.package import * @@ -24,9 +25,7 @@ "ubuntu22.04": "Ubuntu-22.04", "debian12": "Ubuntu-22.04", "sles15": "SLES-15", - "centos7": "RHEL-7", "centos8": "RHEL-8", - "rhel7": "RHEL-7", "rhel8": "RHEL-8", "rhel9": "RHEL-9", "rocky8": "RHEL-8", @@ -36,6 +35,36 @@ } _versions = { + "24.10": { + "RHEL-8": ( + "7c685c5393345baff573dc53ea3bb84e6293f9e51808e168ececcf51efb45813", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_RHEL-8_aarch64.tar", + ), + "RHEL-9": ( + "52767ec236098aec410b1d9899c4ba2c3dc2bcc3c2b500dbf2f4b7b3cfacf16d", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_RHEL-9_aarch64.tar", + ), + "SLES-15": ( + "ab118af1150931d59e7ec89f9c235a89bf604700ace53f549d3898677e7e76a4", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_SLES-15_aarch64.tar", + ), + "Ubuntu-20.04": ( + "defe9b8bd31d28aba1c8b8026295b6e277f221d1e387b16d8d86f4dea9b75c27", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_Ubuntu-20.04_aarch64.tar", + ), + "Ubuntu-22.04": ( + "10c0fad1ff3628f505ada90359c68b046676a4c6cab1131d76ae0429d3694415", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_Ubuntu-22.04_aarch64.tar", + ), + "AmazonLinux-2": ( + "8abd35c455adb94812aaa55853f72ac55e142940e775e985eeedbbbe17902d8f", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_AmazonLinux-2_aarch64.tar", + ), + "AmazonLinux-2023": ( + "6b1cf34240af15ae9a7c767d7f484f2fa79c4633571b613e3d65e20b8d3ba65a", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_AmazonLinux-2023_aarch64.tar", + ), + }, "24.04": { "RHEL-7": ( "064c3ecfd71cba3d8bf639448e899388f58eb7faef4b38f3c1aace625ace8b1e", @@ -209,10 +238,13 @@ def get_os(ver): spack_os = spack.platforms.host().default_os - if ver.startswith("22."): + if ver.startswith("22"): return _os_map_before_23.get(spack_os, "") - else: - return _os_map.get(spack_os, "RHEL-7") + if ver.startswith("23") or ver == "24.04": + return {**_os_map, "centos7": "RHEL-7", "rhel7": "RHEL-7"}.get(spack_os, "RHEL-7") + if ver == "24.10": + return _os_map.get(spack_os, "RHEL-8") + return "RHEL-8" def get_armpl_version_to_3(spec): @@ -234,6 +266,11 @@ def get_armpl_prefix(spec): return join_path(spec.prefix, f"armpl-{ver}_{os}_arm-linux-compiler") +def get_gcc_prefix(spec): + dirlist = next(os.walk(spec.prefix))[1] + return join_path(spec.prefix, next(dir for dir in dirlist if dir.startswith("gcc"))) + + def get_acfl_prefix(spec): os = get_os(spec.version.string) if spec.version.string.startswith("22."): @@ -260,7 +297,6 @@ class Acfl(Package, CompilerPackage): """ homepage = "https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux" - url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-10/arm-compiler-for-linux_23.10_Ubuntu-22.04_aarch64.tar" maintainers("paolotricerri") @@ -402,6 +438,7 @@ def setup_run_environment(self, env): def check_install(self): arm_dir = get_acfl_prefix(self.spec) armpl_dir = get_armpl_prefix(self.spec) + gcc_dir = get_gcc_prefix(self.spec) suffix = get_armpl_suffix(self.spec) armpl_example_dir = join_path(armpl_dir, f"examples{suffix}") # run example makefile @@ -411,6 +448,7 @@ def check_install(self): "CC=" + self.cc, "F90=" + self.fortran, "CPATH=" + join_path(arm_dir, "include"), + "COMPILER_PATH=" + gcc_dir, "ARMPL_DIR=" + armpl_dir, ) # clean up diff --git a/var/spack/repos/builtin/packages/armpl-gcc/package.py b/var/spack/repos/builtin/packages/armpl-gcc/package.py index b6dffafb85a671..25f187781e4822 100644 --- a/var/spack/repos/builtin/packages/armpl-gcc/package.py +++ b/var/spack/repos/builtin/packages/armpl-gcc/package.py @@ -54,6 +54,11 @@ } _versions = { + "24.10": { + "deb": ("2be772d41c0e8646e24c4f57e188e96f2dd8934966ae560c74fa905cbde5e1bc"), + "macOS": ("04e794409867e6042ed0f487bbaf47cc6edd527dc6ddad67160f1dba83906969"), + "rpm": ("055d4b3c63d990942d453a8720d029be7e604646218ffc3262321683f51f23aa"), + }, "24.04": { "deb": ("a323074cd08af82f4d79988cc66088b18e47dea4b93323b1b8a0f994f769f2f0"), "macOS": ("228bf3a2c25dbd45c2f89c78f455ee3c7dfb25e121c20d2765138b5174e688dc"), @@ -261,7 +266,8 @@ def get_os_or_pkg_manager(ver): return _os_pkg_map.get(platform.default_os, "rpm") -def get_package_url_before_24(base_url, version): +def get_package_url_before_24(version): + base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries" armpl_version = version.split("_")[0] armpl_version_dashed = armpl_version.replace(".", "-") compiler_version = version.split("_", 1)[1] @@ -270,7 +276,7 @@ def get_package_url_before_24(base_url, version): if armpl_version.startswith("23.06"): return ( f"{base_url}/{armpl_version_dashed}/" - + f"armpl_{armpl_version}_{compiler_version}.dmg" + f"armpl_{armpl_version}_{compiler_version}.dmg" ) else: filename = f"arm-performance-libraries_{armpl_version}_macOS.dmg" @@ -286,9 +292,11 @@ def get_package_url_before_24(base_url, version): return f"{base_url}/{armpl_version_dashed}/{os_short}/{filename}" -def get_package_url_from_24(base, version): +def get_package_url_from_24(version): + base_url = ( + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Performance-Libraries/Version" + ) pkg_system = get_os_or_pkg_manager(version) - os = "macOS" if pkg_system == "macOS" else "linux" extension = "tgz" if pkg_system == "macOS" else "tar" @@ -298,17 +306,15 @@ def get_package_url_from_24(base, version): full_name_library = f"{full_name_library}_gcc" file_name = f"{full_name_library}.{extension}" - vn = version.replace(".", "-") - url_parts = f"{base}/{vn}/{os}/{file_name}" + url_parts = f"{base_url}_{version}/{file_name}" return url_parts def get_package_url(version): - base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries" if version[:2] >= "24": - return get_package_url_from_24(base_url, version) + return get_package_url_from_24(version) else: - return get_package_url_before_24(base_url, version) + return get_package_url_before_24(version) def get_armpl_prefix(spec): @@ -335,8 +341,6 @@ class ArmplGcc(Package): high-performance computing applications on Arm processors.""" homepage = "https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-performance-libraries" - url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-04/linux/arm-performance-libraries_24.04_deb_gcc.tar" - maintainers("paolotricerri") for ver, packages in _versions.items(): @@ -434,7 +438,7 @@ def install(self, spec, prefix): exe = Executable( f"./arm-performance-libraries_{armpl_version}_" - + f"{get_os_or_pkg_manager(armpl_version)}.sh" + f"{get_os_or_pkg_manager(armpl_version)}.sh" ) exe("--accept", "--force", "--install-to", prefix) From b4b3320f71d22d6475b70a50056d6eb1fd1057d2 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Fri, 1 Nov 2024 00:05:00 +0100 Subject: [PATCH 248/615] typst: new package (#47293) --- .../repos/builtin/packages/typst/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/typst/package.py diff --git a/var/spack/repos/builtin/packages/typst/package.py b/var/spack/repos/builtin/packages/typst/package.py new file mode 100644 index 00000000000000..b495b89482c258 --- /dev/null +++ b/var/spack/repos/builtin/packages/typst/package.py @@ -0,0 +1,37 @@ +# 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 re + +from spack.package import * + + +class Typst(CargoPackage): + """Typst is a new markup-based typesetting system for the sciences.""" + + homepage = "https://typst.app" + git = "https://github.com/typst/typst" + executables = ["^typst$"] + + maintainers("upsj") + + license("Apache-2.0", checked_by="upsj") + + version("0.12.0", commit="737895d769188f6fc154523e67a9102bc24c872e", tag="v0.12.0") + + depends_on("rust@1.81.0:") + depends_on("openssl") + depends_on("pkgconf", type="build") + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.search(r"typst ([0-9.]+)", output) + return match.group(1) if match else None + + def build(self, spec, prefix): + # The cargopackage installer doesn't allow for an option to install from a subdir + # see: https://github.com/rust-lang/cargo/issues/7599 + cargo("install", "--root", "out", "--path", "crates/typst-cli") From 8076134c918ff8866bfd23b787ae6609c1bdc2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Fri, 1 Nov 2024 00:32:43 +0000 Subject: [PATCH 249/615] nvidia-nsight-systems: new package (#47355) Co-authored-by: Scot Halverson --- .../packages/nvidia-nsight-systems/package.py | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py diff --git a/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py b/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py new file mode 100644 index 00000000000000..945bbe92f465ba --- /dev/null +++ b/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py @@ -0,0 +1,127 @@ +# 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 platform +import re +import shutil +from glob import glob + +from spack.package import * + +# FIXME Remove hack for polymorphic versions +# This package uses a ugly hack to be able to dispatch, given the same +# version, to different binary packages based on the platform that is +# running spack. See #13827 for context. +# If you need to add a new version, please be aware that: +# - versions in the following dict are automatically added to the package +# - version tuple must be in the form (checksum, url) +# - checksum must be sha256 +# - package key must be in the form '{os}-{arch}' where 'os' is in the +# format returned by platform.system() and 'arch' by platform.machine() +_versions = { + "2024.6.1": { + "Linux-aarch64": ( + "24700c28dfda9f95d4e93de218b86ab1ba0ee8b74cb61c3c581767296159c75c", + "https://developer.nvidia.com/downloads/assets/tools/secure/nsight-systems/2024_6/nsight-systems-2024.6.1-2024.6.1.90_3490548-0.aarch64.rpm", + ), + "Linux-x86_64": ( + "dd4359a47ff3857395c55a0da483b64f5c0c3a1a2e57dd543a512dc3d2cd2674", + "https://developer.nvidia.com/downloads/assets/tools/secure/nsight-systems/2024_6/nsight-systems-2024.6.1-2024.6.1.90_3490548-0.x86_64.rpm", + ), + }, + "2024.1.1": { + "Linux-aarch64": ( + "41dc15ae128ef1de8e582b66bb465ac6bd67b9d20ef77fc70528b735d80fb3ec", + "https://developer.download.nvidia.com/devtools/repos/rhel8/arm64/nsight-systems-2024.1.1-2024.1.1.59_3380207-0.aarch64.rpm", + ), + "Linux-ppc64le": ( + "8c98b511df1747c4c782430504ae6fa4b3fce6fa72623083a828fc0a1e11f1b8", + "https://developer.download.nvidia.com/devtools/repos/rhel8/ppc64le/nsight-systems-cli-2024.1.1-2024.1.1.59_3380207-0.ppc64le.rpm", + ), + "Linux-x86_64": ( + "96f57548e0bd69cb02cd1fe8c70ed4a650636ecb3a5ea5ec490c8049adc2beb5", + "https://developer.download.nvidia.com/devtools/repos/rhel8/x86_64/nsight-systems-2024.1.1-2024.1.1.59_3380207-0.x86_64.rpm", + ), + }, +} + + +class NvidiaNsightSystems(Package): + """NVIDIA Nsight™ Systems is a system-wide performance analysis tool designed + to visualize an application’s algorithms, identify the largest opportunities + to optimize, and tune to scale efficiently across any quantity or size of CPUs + and GPUs, from large servers to the smallest system on a chip""" + + homepage = "https://developer.nvidia.com/nsight-systems" + url = "https://developer.download.nvidia.com/devtools/repos/" + maintainers("scothalverson") + license("NVIDIA Software License Agreement") + + executables = ["^nsys$"] + + # Used to unpack the source RPM archives. + depends_on("libarchive programs='bsdtar'", type="build") + + for ver, packages in _versions.items(): + key = "{0}-{1}".format(platform.system(), platform.machine()) + pkg = packages.get(key) + if pkg: + version(ver, sha256=pkg[0], url=pkg[1], expand=False) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + # Example output: + # NVIDIA Nsight Systems version 2024.1.1.59-241133802077v0 + # but we only want to match 2024.1.1 + match = re.search(r"NVIDIA Nsight Systems version ((?:[0-9]+.){2}[0-9])", output) + return match.group(1) if match else None + + def install(self, spec, prefix): + bsdtar = which("bsdtar") + rpm_file = glob(join_path(self.stage.source_path, "nsight-systems*.rpm"))[0] + params = ["-x", "-f", rpm_file] + ver = prefix.split("/")[-1].split("-")[-2] + bsdtar(*params) + + arch = self.spec.target.family + if arch == "aarch64": + folders = ["documentation", "host-linux-armv8", "target-linux-sbsa-armv8"] + elif arch == "ppc64le": + folders = ["documentation", "host-linux-ppc64le", "target-linux-ppc64le"] + elif arch == "x86_64": + folders = ["documentation", "host-linux-x64", "target-linux-x64"] + if os.path.exists(join_path("opt", "nvidia", "nsight-systems-cli")): + base_path = join_path("opt", "nvidia", "nsight-systems-cli") + elif os.path.exists(join_path("opt", "nvidia", "nsight-systems")): + base_path = join_path("opt", "nvidia", "nsight-systems") + else: + raise InstallError("Couldn't determine subdirectories to install.") + + for sd in folders: + shutil.copytree(join_path(base_path, ver, sd), join_path(prefix, sd)) + os.mkdir(join_path(prefix, "bin")) + if arch == "aarch64": + os.symlink( + join_path(prefix, "host-linux-armv8", "nsys-ui"), + join_path(prefix, "bin", "nsys-ui"), + ) + os.symlink( + join_path(prefix, "target-linux-sbsa-armv8", "nsys"), + join_path(prefix, "bin", "nsys"), + ) + elif arch == "ppc64le": + # `nsys-ui` is missing in the PowerPC version of the package. + os.symlink( + join_path(prefix, "target-linux-ppc64le", "nsys"), join_path(prefix, "bin", "nsys") + ) + elif arch == "x86_64": + os.symlink( + join_path(prefix, "host-linux-x64", "nsys-ui"), join_path(prefix, "bin", "nsys-ui") + ) + os.symlink( + join_path(prefix, "target-linux-x64", "nsys"), join_path(prefix, "bin", "nsys") + ) From 504cc808d642a969d0e13242b505e6f8430a594f Mon Sep 17 00:00:00 2001 From: Kaan <61908449+kaanolgu@users.noreply.github.com> Date: Fri, 1 Nov 2024 00:42:40 +0000 Subject: [PATCH 250/615] Babelstream v5.0 Spack Package Updates (#41019) - Merging sycl2020usm and sycl2020acc into sycl2020 and the submodel=acc/usm variant is introduced - implementation is renamed to option - impl ( fortran implementation options) renamed to foption - sycl_compiler_implementation and thrust_backend - stddata,stdindices,stdranges to a single std with std_submodel introduction - std_use_tbb to be boolean; also changed model filtering algorithm to make sure that it only picks model names - Modified comments to clear confusion with cuda_arch cc_ and sm_ prefix appends - Deleted duplicate of cuda_arch definition from +omp - CMAKE_CXX_COMPILER moved to be shared arg between all models except tbb and thrust - Replaced sys.exit with InstallError and created a dictionary to simplify things and eliminate excess code lines doing same checks - Replaced the -mcpu flags to -march since it is deprecated now - Replaced platform.machine with spec.target - Removing raja_backend, introducing openmp_flag,removing -march flags,clearing debugging print(), removing excess if ___ in self.spec.variants - [FIX] Issue where Thrust couldn't find correct compiler (it requires nvcc) - [FIX] Fortran unsupported check to match the full string - [FIX] RAJA cuda_arch to be with sm_ not cc_ - dir= option is no longer needed for kokkos - dir is no longer needed - [omp] Adding clang support for nvidia offload - SYCL2020 offload to nvidia GPU - changing model dependency to be languages rather than build system - removing hardcoded arch flags and replacing with archspec - removing cpu_arch from acc model --------- Signed-off-by: Todd Gamblin Co-authored-by: Greg Becker Co-authored-by: Kaan Olgu Co-authored-by: Todd Gamblin --- .../builtin/packages/babelstream/package.py | 990 +++++++++++++----- 1 file changed, 723 insertions(+), 267 deletions(-) diff --git a/var/spack/repos/builtin/packages/babelstream/package.py b/var/spack/repos/builtin/packages/babelstream/package.py index ec85b2d3569bc4..b09fcc5f6e4a62 100644 --- a/var/spack/repos/builtin/packages/babelstream/package.py +++ b/var/spack/repos/builtin/packages/babelstream/package.py @@ -3,65 +3,107 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import re # To get the variant name after (+) - +import spack.build_systems.cmake +import spack.build_systems.makefile from spack.package import * -def find_model_flag(str): - res = re.findall(r"\+(\w+)", str) - if not res: - return "" - return res - - -class Babelstream(CMakePackage, CudaPackage, ROCmPackage): +class Babelstream(CMakePackage, CudaPackage, ROCmPackage, MakefilePackage): """Measure memory transfer rates to/from global device memory on GPUs. This benchmark is similar in spirit, and based on, the STREAM benchmark for CPUs.""" homepage = "https://github.com/UoB-HPC/BabelStream" - url = "https://github.com/UoB-HPC/BabelStream/archive/refs/tags/v4.0.tar.gz" + url = "https://github.com/UoB-HPC/BabelStream/archive/refs/tags/v5.0.tar.gz" git = "https://github.com/UoB-HPC/BabelStream.git" + version("5.0", sha256="1a418203fbfd95595bdc66047e2e39d8f1bba95a49725c9ecb907caf1af2521f") version("4.0", sha256="a9cd39277fb15d977d468435eb9b894f79f468233f0131509aa540ffda4f5953") + version("3.4", sha256="e34ee9d5ccdead019e3ea478333bcb7886117d600e5da8579a626f6ee34209cf") + version("3.3", sha256="4c89c805b277d52776feeb7a8eef7985a0d9295ce3e0bb2333bf715f724723cf") + version("3.2", sha256="20309b27ddd09ea37406bcc6f46fd32e9372bf3d145757e55938d19d69cdc49d") + version("3.1", sha256="be69e6085e8966e12aa2df897eea6254b172e5adfa03de0adbb89bc3065f4fbe") + version("3.0", sha256="776219c72e0fdc36f134e6975b68c7ab25f38206f8f8af84a6f9630648c24800") + version("1.0", sha256="3cfb9e45601f1f249878355c72baa6e6a61f6c811f8716d60b83c7fb544e1d5c") version("main", branch="main") - version("develop", branch="develop") - - depends_on("cxx", type="build") # generated - - maintainers("tomdeakin", "kaanolgu", "tom91136", "robj0nes") - + maintainers("tomdeakin", "kaanolgu", "tom91136") + # Previous maintainers: "robj0nes" + depends_on("cxx", type="build", when="languages=cxx") + depends_on("fortran", type="build", when="languages=fortran") # Languages - # Also supported variants are cuda and rocm (for HIP) - variant("sycl", default=False, description="Enable SYCL support") - variant("sycl2020", default=False, description="Enable SYCL support") - variant("omp", default=False, description="Enable OpenMP support") - variant("ocl", default=False, description="Enable OpenCL support") - variant("tbb", default=False, description="Enable TBB support") - variant("acc", default=False, description="Enable OpenACC support") - variant("thrust", default=False, description="Enable THRUST support") - variant("raja", default=False, description="Enable RAJA support") - variant("stddata", default=False, description="Enable STD-data support") - variant("stdindices", default=False, description="Enable STD-indices support") - variant("stdranges", default=False, description="Enable STD-ranges support") + # in the future it could be possible to add other languages too + variant( + "languages", + default="cxx", + values=("cxx", "fortran"), + description="Languages Babelstream Spack Package Support", + ) + # Build System + build_system( + conditional("cmake", when="languages=cxx"), + conditional("makefile", when="languages=fortran"), + default="cmake", + ) + with when("languages=cxx"): + # Also supported variants are cuda and rocm (for HIP) + # not included here because they are supplied via respective packages + variant("sycl", default=False, description="Enable SYCL support") + variant("sycl2020", default=False, description="Enable SYCL support") + variant("omp", default=False, description="Enable OpenMP support") + variant("ocl", default=False, description="Enable OpenCL support") + variant("tbb", default=False, description="Enable TBB support") + variant("acc", default=False, description="Enable OpenACC support") + variant("hip", default=False, description="Enable HIP support") + variant("thrust", default=False, description="Enable THRUST support") + variant("raja", default=False, description="Enable RAJA support") + variant("std", default=False, description="Enable STD support") # Some models need to have the programming model abstraction downloaded - # this variant enables a path to be provided. variant("dir", values=str, default="none", description="Enable Directory support") + variant( + "sycl2020_submodel", + values=("usm", "acc"), + when="+sycl2020", + default="usm", + description="SYCL2020 -> choose between usm and acc methods", + ) + variant( + "std_submodel", + values=("data", "indices", "ranges"), + when="+std", + default="data", + description="STD -> choose between data, indices and ranges models", + ) - # Kokkos conflict and variant - conflicts( - "dir=none", when="+kokkos", msg="KOKKKOS requires architecture to be specfied by dir=" + variant( + "sycl2020_offload", + values=("nvidia", "intel"), + default="intel", + when="+sycl2020", + description="Offloading to NVIDIA GPU or not", ) - variant("kokkos", default=False, description="Enable KOKKOS support") - # ACC conflict - variant("cpu_arch", values=str, default="none", description="Enable CPU Target for ACC") - variant("acc_target", values=str, default="none", description="Enable CPU Target for ACC") + variant( + "thrust_submodel", + values=("cuda", "rocm"), + default="cuda", + when="+thrust", + description="Which THRUST implementation to use, supported options include option= \ + - CUDA (via https://github.com/NVIDIA/thrust)\ + - ROCM (via https://github.com/ROCmSoftwarePlatform/rocThrust)", + ) + variant( + "thrust_backend", + values=("cuda", "omp", "tbb"), + default="cuda", + when="+thrust", + description="Which THRUST implementation to use, supported options include option", + ) + + # Kokkos variant + variant("kokkos", default=False, description="Enable KOKKOS support") # STD conflicts - conflicts("+stddata", when="%gcc@:10.1.0", msg="STD-data requires newer version of GCC") - conflicts("+stdindices", when="%gcc@:10.1.0", msg="STD-indices requires newer version of GCC") - conflicts("+stdranges", when="%gcc@:10.1.0", msg="STD-ranges requires newer version of GCC") + conflicts("+std", when="%gcc@:10.1.0", msg="STD requires newer version of GCC") # CUDA conflict conflicts( @@ -69,349 +111,763 @@ class Babelstream(CMakePackage, CudaPackage, ROCmPackage): when="+cuda", msg="CUDA requires architecture to be specfied by cuda_arch=", ) - variant("mem", values=str, default="DEFAULT", description="Enable MEM Target for CUDA") - # Raja Conflict variant( - "offload", values=str, default="none", description="Enable RAJA Target [CPU or NVIDIA]" - ) - conflicts( - "offload=none", - when="+raja", - msg="RAJA requires architecture to be specfied by acc_target=[CPU,NVIDIA]", + "cuda_memory_mode", + values=("default", "managed", "pagefault"), + default="default", + when="+cuda", + description="Enable MEM Target for CUDA", ) - # download raja from https://github.com/LLNL/RAJA + # OMP offload + variant("omp_offload", default=False, when="+omp", description="Enable OpenMP Target") + variant( + "omp_flags", + values=str, + default="none", + when="+omp", + description="If OFFLOAD is enabled, this *overrides* the default offload flags", + ) conflicts( - "dir=none", + "omp_flags=none", + when="+omp_offload", + msg="OpenMP requires offload flags to be specfied by omp_flags=", + ) + # Raja offload + variant( + "raja_offload", + values=("cpu", "nvidia"), + default="cpu", when="+raja", - msg="RAJA implementation requires architecture to be specfied by dir=", + description="Enable RAJA Target [CPU or NVIDIA] / Offload with custom settings for OpenMP", + ) + # std-* offload + variant( + "std_offload", + values=("nvhpc", "none"), + default="none", + when="+std", + description="Enable offloading support (via the non-standard `-stdpar`)\ + for the new NVHPC SDK", + ) + variant( + "std_onedpl_backend", + values=("openmp", "tbb", "dpcpp", "none"), + default="none", + when="+std", + description="Implements policies using OpenMP,TBB or dpc++", + ) + variant( + "std_use_tbb", + values=(True, False), + default=False, + when="+std", + description="No-op if ONE_TBB_DIR is set. Link against an in-tree oneTBB\ + via FetchContent_Declare, see top level CMakeLists.txt for details", + ) + variant( + "std_use_onedpl", + values=(True, False), + default=False, + when="+std", + description="Link oneDPL which implements C++17 executor policies\ + (via execution_policy_tag) for different backends", + ) + # hip memory mode + variant( + "hip_mem_mode", + values=("default", "managed", "pagefault"), + default="default", + when="+hip", + description="Enable MEM Target for HIP", + ) + # tbb use vector + variant( + "tbb_use_vector", + values=(True, False), + default=False, + when="+tbb", + description="Whether to use std::vector for storage or use aligned_alloc. \ + C++ vectors are *zero* initialised where as aligned_alloc is \ + uninitialised before first use.", ) # Thrust Conflict - # conflicts("~cuda", when="+thrust", msg="Thrust requires +cuda variant") depends_on("thrust", when="+thrust") - depends_on("rocthrust", when="+thrust implementation=rocm") - + depends_on("cuda", when="thrust_submodel=cuda") + depends_on("cuda", when="+raja raja_offload=nvidia") + depends_on("hip", when="+hip") + depends_on("rocthrust", when="thrust_submodel=rocm") + depends_on("intel-tbb", when="+std +std_use_tbb") + depends_on("intel-oneapi-dpl", when="+std +std_use_onedpl") + depends_on("intel-tbb", when="+std +std_use_onedpl") # TBB Dependency - depends_on("intel-oneapi-tbb", when="+tbb") - partitioner_vals = ["auto", "affinity", "static", "simple"] + depends_on("intel-tbb", when="+tbb") + variant( - "partitioner", - values=partitioner_vals, + "tbb_partitioner", + values=("auto", "affinity", "static", "simple"), default="auto", + when="+tbb", description="Partitioner specifies how a loop template should partition its work among threads.\ Possible values are:\ AUTO - Optimize range subdivision based on work-stealing events.\ AFFINITY - Proportional splitting that optimizes for cache affinity.\ STATIC - Distribute work uniformly with no additional load balancing.\ SIMPLE - Recursively split its range until it cannot be further subdivided.\ - See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners for more details.", + See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners", ) - # Kokkos Dependency - depends_on("kokkos@3.7.1", when="+kokkos") + # Kokkos & RAJA Dependency + cuda_archs = CudaPackage.cuda_arch_values + for sm_ in cuda_archs: + depends_on( + "kokkos +cuda +wrapper cuda_arch={0}".format(sm_), + when="kokkos_backend=cuda cuda_arch={0}".format(sm_), + ) + depends_on( + "raja +cuda cuda_arch={0}".format(sm_), + when="raja_offload=nvidia cuda_arch={0}".format(sm_), + ) + depends_on("kokkos +openmp", when="kokkos_backend=omp") + depends_on("raja +openmp", when="raja_offload=cpu") # OpenCL Dependency - - backends = { - "ocl": [ - ("amd", "rocm-opencl", "enable ROCM backend"), - ("cuda", "cuda", "enable Cuda backend"), - ("intel", "intel-oneapi-compilers", "enable Intel backend"), - ("pocl", "pocl@1.5", "enable POCL backend"), - ], - "kokkos": [ - ("cuda", "cuda", "enable Cuda backend"), - ("omp", "none", "enable Cuda backend"), - ], - } - backend_vals = ["none"] - for lang in backends: - for item in backends[lang]: - backend, dpdncy, descr = item - backend_vals.append(backend.lower()) - - variant("backend", values=backend_vals, default="none", description="Enable backend support") - - for lang in backends: - for item in backends[lang]: - backend, dpdncy, descr = item - if dpdncy.lower() != "none": - depends_on("%s" % dpdncy.lower(), when="backend=%s" % backend.lower()) - # this flag could be used in all required languages - variant("flags", values=str, default="none", description="Additional CXX flags to be provided") - - # comp_impl_vals=["ONEAPI-DPCPP","DPCPP","HIPSYCL","COMPUTECPP"] variant( - "implementation", - values=str, + "ocl_backend", + values=("amd", "cuda", "intel", "pocl", "none"), default="none", - description="Compile using the specified SYCL compiler option", + when="+ocl", + description="Enable Backend Target for OpenCL", ) - - conflicts( - "implementation=none", - when="+sycl", - msg="SYCL requires compiler implementation to be specified by option=", + variant( + "kokkos_backend", + values=("cuda", "omp", "none"), + default="none", + when="+kokkos", + description="Enable Backend Target for kokkos", ) conflicts( - "implementation=none", - when="+thrust", - msg="Which Thrust implementation to use, supported options include:\ - - CUDA (via https://github.com/NVIDIA/thrust)\ - - ROCM (via https://github.com/ROCm/rocThrust)", + "ocl_backend=none", + when="+ocl", + msg="OpenCL implementation requires backend to be specfied by ocl_backend=", ) + # depends_on("rocm-opencl@6.0.2", when="+ocl ocl_backend=amd") + depends_on("cuda", when="+ocl ocl_backend=cuda") + depends_on("cuda", when="+sycl2020 sycl2020_offload=nvidia") + depends_on("intel-oneapi-compilers", when="+ocl ocl_backend=intel") + depends_on("pocl@1.5", when="+ocl ocl_backend=pocl") + + variant( + "cuda_extra_flags", + values=str, + default="none", + description="Additional CUDA Compiler flags to be provided", + ) + + # CMake specific dependency + with when("build_system=cmake"): + depends_on("cmake@3.14.0:", type="build") # This applies to all - depends_on("cmake@3.14.0:", type="build") depends_on("opencl-c-headers", when="+ocl") + # Fortran related configurations + with when("languages=fortran"): + implementation_vals = [ + "DoConcurrent", + "Array", + "OpenMP", + "OpenMPWorkshare", + "OpenMPTarget", + "OpenMPTargetLoop", + "OpenMPTaskloop", + "OpenACC", + "OpenACCArray", + "CUDA", + "CUDAKernel", + "Sequential", + ] + variant( + "foption", + values=implementation_vals, + default="Sequential", + description="Implementation", + ) + # The fortran Makefile is inside the src/fortran so we need to address this + build_directory = "src/fortran" + build_name = "" + variant( + "fortran_flags", + values=str, + default="none", + description="Additional Fortran flags to be provided", + ) + + +class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): - # convert spec to string to work on it - spec_string = str(self.spec) - - # take only the first portion of the spec until space - spec_string_truncate = spec_string.split(" ", 1)[0] - model_list = find_model_flag(spec_string_truncate) # Prints out ['cuda', 'thrust'] - - if len(model_list) > 1: - ignore_list = ["cuda"] # if +acc is provided ignore the cuda model - model = list(set(model_list) - set(ignore_list)) - # We choose 'thrust' from the list of ['cuda', 'thrust'] - args = ["-DMODEL=" + model[0]] + model_list = [ + "sycl", + "sycl2020", + "omp", + "cuda", + "ocl", + "tbb", + "acc", + "hip", + "thrust", + "raja", + "std", + "kokkos", + ] + # for +acc and +thrust the CudaPackage appends +cuda variant too so we need + # to filter cuda from list e.g. we choose 'thrust' + # from the list of ['cuda', 'thrust'] + model_names = [name for name in model_list if f"+{name}" in self.spec] + print("model names : ", model_names) + if len(model_names) > 1: + model_names = [elem for elem in model_names if (elem != "cuda" and elem != "rocm")] + if "std" in model_names[0]: + args = ["-DMODEL=" + "std-" + self.spec.variants["std_submodel"].value] + elif "sycl2020" in model_names[0]: # this is for nvidia offload + args = ["-DMODEL=" + "sycl2020-" + self.spec.variants["sycl2020_submodel"].value] + else: + args = ["-DMODEL=" + model_names[0]] else: - # if it is +stddata,indices etc. we need to pass it - # as std-data to the CMake compiler - # do some alterations here - if "std" in model_list[0]: - args = ["-DMODEL=" + "std-" + model_list[0].split("d", 1)[1]] + # do some alterations here to append sub models too + if "std" in model_names[0]: + args = ["-DMODEL=" + "std-" + self.spec.variants["std_submodel"].value] + elif "sycl2020" in model_names[0]: + args = ["-DMODEL=" + "sycl2020-" + self.spec.variants["sycl2020_submodel"].value] + print(args) + elif "rocm" in model_names[0]: + args = ["-DMODEL=hip"] else: - args = ["-DMODEL=" + model_list[0]] + args = ["-DMODEL=" + model_names[0]] + if model_names[0] != "tbb" and model_names[0] != "thrust": + args.append("-DCMAKE_CXX_COMPILER=" + spack_cxx) # =================================== # ACC # =================================== - if ("+acc" in self.spec) and ("~cuda" in self.spec): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - if "cuda_arch" in self.spec.variants: - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "cc" + cuda_arch_list[0] - args.append("-DTARGET_DEVICE=gpu") - args.append("-DCUDA_ARCH=" + cuda_arch) - elif "cpu_arch" in self.spec.variants: - cpu_arch_list = self.spec.variants["cpu_arch"].value - # the architecture value is only number so append sm_ to the name - cpu_arch = cpu_arch_list[0] - args.append("-DTARGET_DEVICE=multicore") - args.append("-DTARGET_PROCESSOR=" + cpu_arch) - + """ + register_flag_optional(TARGET_DEVICE + "[PGI/NVHPC only] This sets the `-target` flag, possible values are: + gpu - Globally set the target device to an NVIDIA GPU + multicore - Globally set the target device to the host CPU + Refer to `nvc++ --help` for the full list" + register_flag_optional(CUDA_ARCH + "[PGI/NVHPC only] Only applicable if `TARGET_DEVICE` is set to `gpu`. + Nvidia architecture in ccXY format, for example, sm_70 becomes cc70, + will be passed in via `-gpu=` (e.g `cc70`) + Possible values are: + cc35 - Compile for compute capability 3.5 + cc50 - Compile for compute capability 5.0 + cc60 - Compile for compute capability 6.0 + cc62 - Compile for compute capability 6.2 + cc70 - Compile for compute capability 7.0 + cc72 - Compile for compute capability 7.2 + cc75 - Compile for compute capability 7.5 + cc80 - Compile for compute capability 8.0 + ccall - Compile for all supported compute capabilities + Refer to `nvc++ --help` for the full list" + "") + +register_flag_optional(TARGET_PROCESSOR + "[PGI/NVHPC only] This sets the `-tp` (target processor) flag, possible values are: + px - Generic x86 Processor + bulldozer - AMD Bulldozer processor + piledriver - AMD Piledriver processor + zen - AMD Zen architecture (Epyc, Ryzen) + zen2 - AMD Zen 2 architecture (Ryzen 2) + sandybridge - Intel SandyBridge processor + haswell - Intel Haswell processor + knl - Intel Knights Landing processor + skylake - Intel Skylake Xeon processor + host - Link native version of HPC SDK cpu math library + native - Alias for -tp host + Refer to `nvc++ --help` for the full list" + "") + """ + if self.spec.satisfies("+acc~kokkos~raja"): + if (self.spec.compiler.name == "nvhpc") or (self.spec.compiler.name == "pgi"): + target_device = "gpu" if "cuda_arch" in self.spec.variants else "multicore" + if "cuda_arch" in self.spec.variants: + cuda_arch_list = self.spec.variants["cuda_arch"].value + # the architecture value is only number so append cc_ to the name + cuda_arch = "cc" + cuda_arch_list[0] + # args.append( + # "-DCXX_EXTRA_FLAGS=" + "-target=" + target_device + "-gpu=" + cuda_arch + # ) + args.append("-DCUDA_ARCH=" + cuda_arch) + else: + # get the cpu architecture value from user + target_processor = str( + self.spec.target + ) # self.spec.variants["cpu_arch"].value[0] + args.append("-DTARGET_PROCESSOR=" + target_processor) + # args.append( + # "-DCXX_EXTRA_FLAGS=" + # + "-target=" + # + target_device + # + "-tp=" + # + target_processor + # ) + args.append("-DTARGET_DEVICE=" + target_device) # =================================== # STDdata,STDindices,STDranges # =================================== - std_list = ["+stddata", "+stdindices", "+stdranges"] - if spec_string.startswith(tuple(std_list)): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) + + if "+std" in self.spec: + if self.spec.satisfies("+std_use_tbb"): + args.append("-DCXX_EXTRA_FLAGS=-ltbb") + if self.spec.satisfies("+std_use_onedpl"): + # args.append("-DCXX_EXTRA_FLAGS=-ltbb") + # args.append("-DCXX_EXTRA_FLAGS=-loneDPL") + args.append( + "-DUSE_ONEDPL=" + self.spec.variants["std_onedpl_backend"].value.upper() + ) + if self.spec.variants["std_offload"].value != "none": + # the architecture value is only number so append cc_ to the name + cuda_arch = "cc" + self.spec.variants["cuda_arch"].value[0] + args.append("-DNVHPC_OFFLOAD=" + cuda_arch) # =================================== # CUDA # =================================== - - if ("+cuda" in self.spec) and ("~kokkos" in self.spec) and ("~acc" in self.spec): + if self.spec.satisfies("+cuda~kokkos~acc~omp~thrust~raja"): # Set up the cuda macros needed by the build cuda_arch_list = self.spec.variants["cuda_arch"].value + # "-DCUDA_ARCH" requires sm_ # the architecture value is only number so append sm_ to the name cuda_arch = "sm_" + cuda_arch_list[0] args.append("-DCUDA_ARCH=" + cuda_arch) cuda_dir = self.spec["cuda"].prefix cuda_comp = cuda_dir + "/bin/nvcc" args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DMEM=" + self.spec.variants["mem"].value) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) + args.append("-DMEM=" + self.spec.variants["cuda_memory_mode"].value.upper()) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value) # =================================== # OMP # =================================== # `~kokkos` option is there to prevent +kokkos +omp setting to use omp directly from here # Same applies for raja - if ("+omp" in self.spec) and ("~kokkos" in self.spec) and ("~raja" in self.spec): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - if "cuda_arch" in self.spec.variants: - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DOFFLOAD= " + "NVIDIA:" + cuda_arch) - elif "amdgpu_target" in self.spec.variants: - rocm_arch = self.spec.variants["amdgpu_target"].value - # the architecture value is only number so append sm_ to the name - args.append("-DOFFLOAD=" + " AMD:" + rocm_arch) + if self.spec.satisfies("+omp~kokkos~raja"): + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + if self.spec.satisfies("~omp_offload"): + args.append("-DOFFLOAD=" + "OFF") + # Check if the omp_flags variant is not set to "none" + args.append( + "-DCMAKE_CXX_FLAGS=" + + self.pkg.compiler.openmp_flag + + " " + + ( + self.spec.variants["omp_flags"].value + if self.spec.variants["omp_flags"].value != "none" + else "" + ) + ) else: - args.append("-DOFFLOAD=" + "INTEL") + offload_args = "" + args.append("-DOFFLOAD=ON") + if "cuda_arch" in self.spec.variants: + if self.spec.satisfies("%nvhpc"): + cuda_arch = "cc" + self.spec.variants["cuda_arch"].value[0] + offload_args = " -mp=gpu;" + "-gpu=" + cuda_arch + " " + if self.spec.satisfies("%clang"): + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] + offload_args = "-fopenmp;--offload-arch=" + cuda_arch + elif ("amdgpu_target" in self.spec.variants) and ( + self.spec.variants["amdgpu_target"].value != "none" + ): + offload_args = ( + ";--offload-arch=" + self.spec.variants["amdgpu_target"].value[0] + ) + + args.append( + "-DOFFLOAD_FLAGS=" + + self.pkg.compiler.openmp_flag + + ";" + + offload_args + + ";" + + self.spec.variants["omp_flags"].value + ) # =================================== - # SYCL + # SYCL # =================================== - if self.spec.satisfies("+sycl"): - args.append("-DSYCL_COMPILER=" + self.spec.variants["implementation"].value.upper()) - if self.spec.variants["implementation"].value.upper() != "ONEAPI-DPCPP": - args.append( - "-DSYCL_COMPILER_DIR=" + self.spec.variants["implementation"].value.upper() - ) - if self.spec.variants["implementation"].value.upper() == "COMPUTE-CPP": - args.append("-DOpenCL_LIBRARY=") + if "+sycl" in self.spec: + if self.spec.satisfies("%oneapi"): + # -fsycl flag is required for setting up sycl/sycl.hpp seems like + # it doesn't get it from the CMake file + args.append("-DSYCL_COMPILER=ONEAPI-ICPX") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + elif self.spec.satisfies("%clang"): + # this requires the clang inside oneapi installation + args.append("-DSYCL_COMPILER=ONEAPI-Clang") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + else: + args.append("-DSYCL_COMPILER=HIPSYCL") + args.append("-DSYCL_COMPILER_DIR=" + self.spec.variants["dir"].value) + args.append("-DCXX_EXTRA_FLAGS= -fsycl") # =================================== - # SYCL 2020 + # SYCL 2020 # =================================== - if self.spec.satisfies("+sycl2020"): + if "+sycl2020" in self.spec: if self.spec.satisfies("%oneapi"): # -fsycl flag is required for setting up sycl/sycl.hpp seems like # it doesn't get it from the CMake file - args.append("-DCXX_EXTRA_FLAGS= -fsycl -O3") - # this is required to enable -DCMAKE_CXX_COMPILER=icpx flag from CMake args.append("-DSYCL_COMPILER=ONEAPI-ICPX") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + elif self.spec.satisfies("%clang"): + # this requires the clang inside oneapi installation + args.append("-DSYCL_COMPILER=ONEAPI-Clang") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") else: + args.append("-DSYCL_COMPILER=HIPSYCL") + args.append("-DSYCL_COMPILER_DIR=" + self.spec.variants["dir"].value) + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + # if self.spec.variants["flags"].value != "none": + if self.spec.variants["sycl2020_offload"].value == "nvidia": + cuda_dir = self.spec["cuda"].prefix + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] args.append( - "-DSYCL_COMPILER=" + self.spec.variants["implementation"].value.upper() - ) - if self.spec.variants["implementation"].value.upper() != "ONEAPI-DPCPP": - args.append( - "-DSYCL_COMPILER_DIR=" + self.spec.variants["implementation"].value.upper() + "-DCXX_EXTRA_FLAGS=" + + "-fsycl;-fsycl-targets=nvptx64-nvidia-cuda;" + + self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) ) - if self.spec.variants["implementation"].value.upper() == "COMPUTE-CPP": - args.append("-DOpenCL_LIBRARY=") + + " --cuda-path=" + + cuda_dir + ) # =================================== # HIP(ROCM) # =================================== - if self.spec.satisfies("+rocm"): - hip_comp = self.spec["rocm"].prefix + "/bin/hipcc" + if "+hip" in self.spec: + hip_comp = self.spec["hip"].prefix + "/bin/hipcc" + offload_arch = str(self.spec.variants["amdgpu_target"].value[0]) + args.append("-DCMAKE_CXX_COMPILER=" + hip_comp) - args.append( - "-DCXX_EXTRA_FLAGS= --offload-arch=" - + self.spec.variants["amdgpu_target"].value - + " " - + self.spec.variants["flags"].value - + " -O3" - ) + args.append(f"-DCXX_EXTRA_FLAGS=--offload-arch={offload_arch} -O3") + if str(self.spec.variants["hip_mem_mode"].value) != "none": + args.append("-DMEM=" + self.spec.variants["hip_mem_mode"].value.upper()) # =================================== # TBB # =================================== - if self.spec.satisfies("+tbb"): - args.append("-DONE_TBB_DIR=" + self.spec["tbb"].prefix + "/tbb/latest/") - args.append("-DPARTITIONER=" + self.spec.variants["partitioner"].value.upper()) + if "+tbb" in self.spec: + args.append("-DONE_TBB_DIR=" + self.spec["intel-tbb"].prefix + "/tbb/latest/") + args.append("-DCXX_EXTRA_FLAGS=-ltbb") + args.append("-DPARTITIONER=" + self.spec.variants["tbb_partitioner"].value.upper()) + if self.spec.satisfies("+tbb_use_vector"): + args.append("-DUSE_VECTOR=ON") # =================================== # OpenCL (ocl) # =================================== - if self.spec.satisfies("+ocl"): - if "backend" in self.spec.variants: - if "cuda" in self.spec.variants["backend"].value: - cuda_dir = self.spec["cuda"].prefix - args.append("-DOpenCL_LIBRARY=" + cuda_dir + "/lib64/libOpenCL.so") - elif "amd" in self.spec.variants["backend"].value: - rocm_dir = self.spec["rocm-opencl"].prefix - args.append("-DOpenCL_LIBRARY=" + rocm_dir + "/lib64/libOpenCL.so") - elif "intel" in self.spec.variants["backend"].value: - intel_lib = ( - self.spec["intel-oneapi-compilers"].prefix - + "/compiler/2023.0.0/linux/lib/libOpenCL.so" - ) - args.append("-DOpenCL_LIBRARY=" + intel_lib) - elif "pocl" in self.spec.variants["backend"].value: - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - pocl_lib = self.spec["pocl"].prefix + "/lib64/libOpenCL.so" - args.append("-DOpenCL_LIBRARY=" + pocl_lib) - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) + + if "+ocl" in self.spec: + if "cuda" in self.spec.variants["ocl_backend"].value: + cuda_dir = self.spec["cuda"].prefix + args.append("-DOpenCL_LIBRARY=" + cuda_dir + "/lib64/libOpenCL.so") + elif "amd" in self.spec.variants["ocl_backend"].value: + rocm_dir = self.spec["rocm-opencl"].prefix + args.append("-DOpenCL_LIBRARY=" + rocm_dir + "/lib64/libOpenCL.so") + elif "intel" in self.spec.variants["ocl_backend"].value: + intel_lib = ( + self.spec["intel-oneapi-compilers"].prefix + + "/compiler/" + + str(self.spec["intel-oneapi-compilers"].version) + + "/linux/lib/libOpenCL.so" + ) + args.append("-DOpenCL_LIBRARY=" + intel_lib) + elif "pocl" in self.spec.variants["ocl_backend"].value: + pocl_lib = self.spec["pocl"].prefix + "/lib64/libOpenCL.so" + args.append("-DOpenCL_LIBRARY=" + pocl_lib) # =================================== # RAJA # =================================== - if self.spec.satisfies("+raja"): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - args.append("-DRAJA_IN_TREE=" + self.spec.variants["dir"].value) - if "offload" in self.spec.variants: - if "nvidia" in self.spec.variants["offload"].value: - cuda_dir = self.spec["cuda"].prefix - cuda_comp = cuda_dir + "/bin/nvcc" - args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DTARGET=NVIDIA") - cuda_arch_list = self.spec.variants["cuda_arch"].value - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DCUDA_ARCH=" + cuda_arch) - args.append("DCUDA_TOOLKIT_ROOT_DIR=" + self.spec["cuda"].prefix) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) - # if("cpu" in self.spec.variants['offload'].value): + if "+raja" in self.spec: + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + args.append("-DRAJA_IN_PACKAGE=" + self.spec["raja"].prefix) + if "nvidia" in self.spec.variants["raja_offload"].value: + cuda_comp = self.spec["cuda"].prefix + "/bin/nvcc" + args.append("-DTARGET=NVIDIA") + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] + args.append("-DCUDA_ARCH=" + cuda_arch) - if "omp" in self.spec.variants["backend"].value: - args.append("-DENABLE_OPENMP=ON") - if "cuda" in self.spec.variants["backend"].value: args.append("-DENABLE_CUDA=ON") + args.append("-DCUDA_TOOLKIT_ROOT_DIR=" + self.spec["cuda"].prefix) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append( + "-DCMAKE_CUDA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value + ) # =================================== # THRUST # =================================== - if self.spec.satisfies("+thrust"): - if "cuda" in self.spec.variants["implementation"].value: - args.append("-DTHRUST_IMPL=" + self.spec.variants["implementation"].value.upper()) + + if "+thrust" in self.spec: + if "cuda" in self.spec.variants["thrust_submodel"].value: + args.append("-DTHRUST_IMPL=" + self.spec.variants["thrust_submodel"].value.upper()) + args.append("-SDK_DIR=" + self.spec["thrust"].prefix + "/include") - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DCUDA_ARCH=" + cuda_arch) + # this model uses CMAKE_CUDA_ARCHITECTURES which only requires number of cuda_arch + # no need to append sm_ or cc_ + args.append("-DCUDA_ARCH=" + self.spec.variants["cuda_arch"].value[0]) cuda_dir = self.spec["cuda"].prefix cuda_comp = cuda_dir + "/bin/nvcc" args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DBACKEND=" + self.spec.variants["backend"].value.upper()) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) - - if "rocm" in self.spec.variants["implementation"].value: - args.append("-DTHRUST_IMPL=" + self.spec.variants["implementation"].value.upper()) + # args.append("-DCMAKE_CUDA_COMPILER=" + spack_cxx) + # args.append("-DCMAKE_CUDA_FLAGS=-ccbin " + spack_cc) + args.append("-DBACKEND=" + self.spec.variants["thrust_backend"].value.upper()) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append( + "-DCUDA_EXTRA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value + ) + if "rocm" in self.spec.variants["thrust_submodel"].value: + args.append("-DCMAKE_CXX_COMPILER=" + self.spec["hip"].hipcc) + args.append("-DTHRUST_IMPL=" + self.spec.variants["thrust_submodel"].value.upper()) args.append("-SDK_DIR=" + self.spec["rocthrust"].prefix) - args.append("-DBACKEND=" + self.spec.variants["backend"].value.upper()) # =================================== # kokkos # =================================== # kokkos implementation is versatile and it could use cuda or omp architectures as backend - # The usage should be spack install babelstream +kokkos +cuda [or +omp] - if self.spec.satisfies("+kokkos"): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - args.append("-DKOKKOS_IN_TREE=" + self.spec.variants["dir"].value) - # args.append("-DKOKKOS_IN_PACKAGE=" + self.spec["kokkos"].prefix) - if "backend" in self.spec.variants: - if "cuda" in self.spec.variants["backend"].value: - args.append("-DKokkos_ENABLE_CUDA=ON") - cuda_arch_list = self.spec.variants["cuda_arch"].value - cuda_arch = cuda_arch_list[0] - # arhitecture kepler optimisations - if cuda_arch in ("30", "32", "35", "37"): - args.append("-D" + "Kokkos_ARCH_KEPLER" + cuda_arch + "=ON") - # arhitecture maxwell optimisations - if cuda_arch in ("50", "52", "53"): - args.append("-D" + "Kokkos_ARCH_MAXWELL" + cuda_arch + "=ON") - # arhitecture pascal optimisations - if cuda_arch in ("60", "61"): - args.append("-D" + "Kokkos_ARCH_PASCAL" + cuda_arch + "=ON") - # architecture volta optimisations - if cuda_arch in ("70", "72"): - args.append("-D" + "Kokkos_ARCH_VOLTA" + cuda_arch + "=ON") - if cuda_arch == "75": - args.append("-DKokkos_ARCH_TURING75=ON") - if "omp" in self.spec.variants["backend"].value: - args.append("-DKokkos_ENABLE_OPENMP=ON") + + # The usage should be spack install babelstream +kokkos backend=[cuda or omp or none] + if "+kokkos" in self.spec: + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + args.append("-DKOKKOS_IN_PACKAGE=" + self.spec["kokkos"].prefix) + if "cuda" in self.spec.variants["kokkos_backend"].value: + # args.append("-DCMAKE_CXX_COMPILER=" + self.spec["cuda"].nvcc) + args.append("-DCMAKE_CXX_COMPILER=" + spack_cxx) + args.append("-DKokkos_ENABLE_CUDA=ON") + int_cuda_arch = int(self.spec.variants["cuda_arch"].value[0]) + # arhitecture kepler optimisations + if int_cuda_arch in (30, 32, 35, 37): + args.append("-D" + "Kokkos_ARCH_KEPLER" + str(int_cuda_arch) + "=ON") + # arhitecture maxwell optimisations + if int_cuda_arch in (50, 52, 53): + args.append("-D" + "Kokkos_ARCH_MAXWELL" + str(int_cuda_arch) + "=ON") + # arhitecture pascal optimisations + if int_cuda_arch in (60, 61): + args.append("-D" + "Kokkos_ARCH_PASCAL" + str(int_cuda_arch) + "=ON") + # architecture volta optimisations + if int_cuda_arch in (70, 72): + args.append("-D" + "Kokkos_ARCH_VOLTA" + str(int_cuda_arch) + "=ON") + if int_cuda_arch == 75: + args.append("-DKokkos_ARCH_TURING75=ON") + if int_cuda_arch == 80: + args.append("-DKokkos_ARCH_AMPERE80=ON") + if "omp" in self.spec.variants["kokkos_backend"].value: + args.append("-DKokkos_ENABLE_OPENMP=ON") # not in ["kokkos", "raja", "acc", "hip"] then compiler forced true if set(model_list).intersection(["kokkos", "raja", "acc", "hip"]) is True: args.append("-DCMAKE_CXX_COMPILER_FORCED=True") return args + + +class MakefileBuilder(spack.build_systems.makefile.MakefileBuilder): + build_directory = "src/fortran" + + # Generate Compiler Specific includes + def edit(self, pkg, spec, prefix): + config = { + "FC": pkg.compiler.fc, + "FCFLAGS": "", + "ARCH": spec.target.family, + "DOCONCURRENT_FLAG": "", + "ARRAY_FLAG": "", + "OPENMP_FLAG": "", + "OPENACC_FLAG": "", + "CUDA_FLAG": "", + "SEQUENTIAL_FLAG": "", + } + # Dictionary mapping compiler names to unsupported options + unsupported_options = { + "arm": ["CUDA", "CUDAKernel", "OpenACC", "OpenACCArray"], + "aocc": ["CUDA", "CUDAKernel"], + "cce": ["CUDA", "CUDAKernel"], + "gcc": ["CUDA", "CUDAKernel"], + "nvhpc": ["OpenMPTaskloop"], + "oneapi": ["CUDA", "CUDAKernel", "OpenACC", "OpenACCArray"], + "fj": ["CUDA", "CUDAKernel", "OpenACC"], + } + + # Check if spec.compiler.name is in the unsupported_options dictionary + unsupported_value = self.spec.variants["foption"].value + compiler_name = spec.compiler.name + unsupported = any( + unsupported_value in options + for options in unsupported_options.get(compiler_name, []) + if options == unsupported_value + ) + if unsupported: + raise InstallError( + f"{unsupported_value} is not supported by the {compiler_name} compiler" + ) + # =================================== + # ARM + # =================================== + if spec.compiler.name == "arm": + fortran_flags = ( + "-std=f2018 " + pkg.compiler.opt_flags[4] + " -Wall -Wno-unused-variable" + ) + fortran_flags += self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) + ) + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["ARRAY_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # AMD + # =================================== + if spec.compiler.name == "aocc": + fortran_flags = ( + "-std=f2018 " + pkg.compiler.opt_flags[3] + " -Wall -Wno-unused-variable" + ) + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["ARRAY_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # CRAY + # =================================== + if spec.compiler.name == "cce": + fortran_flags = "-e F -O3" + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-h thread_do_concurrent -DCRAY_THREAD_DOCONCURRENT" + config["ARRAY_FLAG"] = "-h autothread" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + config["OPENACC_FLAG"] = "-h acc" # for cpu only -h omp + + # =================================== + # GCC + # =================================== + if spec.compiler.name == "gcc": + fortran_flags = "-std=f2018 -O3 " + fortran_flags += "-Wall -Wno-unused-dummy-argument -Wno-unused-variable " + fortran_flags += self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) + ) + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-ftree-parallelize-loops=4" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # NVHPC + # =================================== + if spec.compiler.name == "nvhpc": + fortran_flags = pkg.compiler.opt_flags[4] # for -O3 + # FCFLAGS := -O3 -Minform=inform -Minfo=all + fortran_flags += " -Minform=warn " + TARGET = "gpu" # target = "multicore" + config["TARGET"] = TARGET + if "cuda_arch" in self.spec.variants: + cuda_arch_list = self.spec.variants["cuda_arch"].value + # the architecture value is only number so append sm_ to the name + cuda_arch = "cc" + cuda_arch_list[0] + GPUFLAG = " -gpu=" + cuda_arch + fortran_flags += "-tp=" + str(spec.target) + # this is to allow apples-to-apples comparison with DC in non-DC GPU impls + # set exactly one of these pairs! + # MANAGED = "-DUSE_MANAGED -gpu=managed" + # DEVICE="" + # ------------ + DEVICE = "-DUSE_DEVICE -cuda -gpu=nomanaged" + MANAGED = "" + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = GPUFLAG + " -stdpar=" + TARGET + " " + DEVICE + config["ARRAY_FLAG"] = GPUFLAG + " -stdpar=" + TARGET + " " + MANAGED + config["OPENMP_FLAG"] = GPUFLAG + " -mp=" + TARGET + " " + MANAGED + config["OPENACC_FLAG"] = GPUFLAG + " -acc=" + TARGET + " " + MANAGED + config["CUDA_FLAG"] = GPUFLAG + " -cuda -acc=gpu" + " " + MANAGED + + # =================================== + # ONEAPI + # =================================== + if spec.compiler.name == "oneapi": + fortran_flags = "-std18 -Ofast -xHOST -qopt-zmm-usage=low" + if config["FC"] == "ifort": + fortran_flags += "-qopt-streaming-stores=always" + + config["DOCONCURRENT_FLAG"] = "-qopenmp" + ( + "-parallel" if config["FC"] == "ifort" else "" + ) + config["ARRAY_FLAG"] = "-qopenmp" + ("-parallel" if config["FC"] == "ifort" else "") + config["OPENMP_FLAG"] = "-qopenmp" + ( + "-fopenmp-targets=spir64 -DUSE_FLOAT=1" if config["FC"] == "ifx" else "" + ) + config["FCFLAGS"] = fortran_flags + + # =================================== + # FJ + # =================================== + if spec.compiler.name == "fj": + fortran_flags = "-X08 -Kfast -KA64FX -KSVE -KARMV8_3_A -Kzfill=100 " + fortran_flags += "-Kprefetch_sequential=soft " + fortran_flags += "-Kprefetch_line=8 -Kprefetch_line_L2=16 -Koptmsg=2 " + # FJ Fortran system_clock is low resolution + fortran_flags += "-Keval -DUSE_OMP_GET_WTIME=1 " + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-Kparallel,reduction -DNOTSHARED" + config["ARRAY_FLAG"] = "-Kparallel,reduction" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + + with open(self.build_directory + "/make.inc." + spec.compiler.name, "w+") as inc: + for key in config: + inc.write("{0} = {1}\n".format(key, config[key])) + + def setup_build_environment(self, env): + ###################################### + # Build and Installation Directories # + ###################################### + + # The environment variable ESMF_DIR must be set to the full pathname + # of the top level ESMF directory before building the framework. + env.set("COMPILER", self.spec.compiler.name) + env.set("IMPLEMENTATION", self.spec.variants["foption"].value) + # DEBUG + # print(self.spec.variants["foption"].value) + # print(self.spec.compiler.version) + # print(platform.machine()) + # This creates a testing tree (if one doesn't already exist) and + # copies the binaries from `src/fortran` to `SpackPackage/bin`. + # This allows you to use the testing tree independently of the + # source tree in the future. + # print(pkg.compiler.cc_pic_flag) + + @property + def build_name(self): + compiler_prefix = self.spec.compiler.name + implementation_prefix = self.spec.variants["foption"].value + return "{}.{}.{}".format("BabelStream", compiler_prefix, implementation_prefix) + + def install(self, pkg, spec, prefix): + mkdir(prefix.bin) + install(self.build_directory + "/" + self.build_name, prefix.bin) + # To check the make.inc file generated + install_tree(self.build_directory, prefix.lib) From 76ed4578e7e2ecb4f87cbf1c9f0967651059dd3a Mon Sep 17 00:00:00 2001 From: Vicente Bolea Date: Thu, 31 Oct 2024 21:21:25 -0400 Subject: [PATCH 251/615] adios2: add v2.10.2 release and fix build of older versions (#47235) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/adios2/package.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 6083c1ff8aa681..41e80d615d040e 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -26,10 +26,11 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version( - "2.10.1", - sha256="ce776f3a451994f4979c6bd6d946917a749290a37b7433c0254759b02695ad85", + "2.10.2", + sha256="14cf0bcd94772194bce0f2c0e74dba187965d1cffd12d45f801c32929158579e", preferred=True, ) + version("2.10.1", sha256="ce776f3a451994f4979c6bd6d946917a749290a37b7433c0254759b02695ad85") version("2.10.0", sha256="e5984de488bda546553dd2f46f047e539333891e63b9fe73944782ba6c2d95e4") version("2.9.2", sha256="78309297c82a95ee38ed3224c98b93d330128c753a43893f63bbe969320e4979") version("2.9.1", sha256="ddfa32c14494250ee8a48ef1c97a1bf6442c15484bbbd4669228a0f90242f4f9") @@ -39,11 +40,10 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): version("2.8.1", sha256="3f515b442bbd52e3189866b121613fe3b59edb8845692ea86fad83d1eba35d93") version("2.8.0", sha256="5af3d950e616989133955c2430bd09bcf6bad3a04cf62317b401eaf6e7c2d479") version("2.7.1", sha256="c8e237fd51f49d8a62a0660db12b72ea5067512aa7970f3fcf80b70e3f87ca3e") - version("2.7.0", sha256="4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924") - version("2.6.0", sha256="45b41889065f8b840725928db092848b8a8b8d1bfae1b92e72f8868d1c76216c") - version("2.5.0", sha256="7c8ff3bf5441dd662806df9650c56a669359cb0185ea232ecb3578de7b065329") - version("2.4.0", sha256="50ecea04b1e41c88835b4b3fd4e7bf0a0a2a3129855c9cc4ba6cf6a1575106e2") - version("2.3.1", sha256="3bf81ccc20a7f2715935349336a76ba4c8402355e1dc3848fcd6f4c3c5931893") + with default_args(deprecated=True): + version("2.7.0", sha256="4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924") + version("2.6.0", sha256="45b41889065f8b840725928db092848b8a8b8d1bfae1b92e72f8868d1c76216c") + version("2.5.0", sha256="7c8ff3bf5441dd662806df9650c56a669359cb0185ea232ecb3578de7b065329") depends_on("c", type="build") depends_on("cxx", type="build") @@ -76,7 +76,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): variant("bzip2", default=True, when="@2.4:", description="Enable BZip2 compression") variant("zfp", default=True, description="Enable ZFP compression") variant("png", default=True, when="@2.4:", description="Enable PNG compression") - variant("sz", default=True, description="Enable SZ compression") + variant("sz", default=True, when="@2.6:", description="Enable SZ compression") variant("mgard", default=True, when="@2.8:", description="Enable MGARD compression") # Rransport engines @@ -214,7 +214,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # Fix an unnecessary python dependency when testing is disabled # See https://github.com/ornladios/ADIOS2/pull/2596 - patch("2.7-fix-python-test-deps.patch", when="@2.5.0:2.7.0") + patch("2.7-fix-python-test-deps.patch", when="@2.7.0") # Fix unresolved symbols when built with gcc10. # See https://github.com/ornladios/ADIOS2/pull/2714 @@ -227,7 +227,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # https://github.com/ornladios/adios2/pull/2710 patch( "https://github.com/ornladios/adios2/pull/2710.patch?full_index=1", - when="@:2.7.1", + when="@2.5:2.7.1", sha256="8221073d1b2f8944395a88a5d60a15c7370646b62f5fc6309867bbb6a8c2096c", ) @@ -241,7 +241,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # ROCM: enable support for rocm >= 6 # https://github.com/ornladios/ADIOS2/pull/4214 - patch("2.10-enable-rocm6.patch", when="@2.9.1:") + patch("2.10-enable-rocm6.patch", when="@2.9.1:2.10.1") @when("%fj") def patch(self): From cb92d70d6d4719b1fbbc67b71cce0dd18d908c4e Mon Sep 17 00:00:00 2001 From: Julien Cortial <101571984+jcortial-safran@users.noreply.github.com> Date: Fri, 1 Nov 2024 03:29:54 +0100 Subject: [PATCH 252/615] mmg: add v5.8.0 (#47356) --- var/spack/repos/builtin/packages/mmg/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/mmg/package.py b/var/spack/repos/builtin/packages/mmg/package.py index eb14be0c7761bf..38a8123516b31a 100644 --- a/var/spack/repos/builtin/packages/mmg/package.py +++ b/var/spack/repos/builtin/packages/mmg/package.py @@ -30,8 +30,11 @@ class Mmg(CMakePackage): homepage = "https://www.mmgtools.org/" url = "https://github.com/MmgTools/mmg/archive/v5.3.13.tar.gz" + maintainers("jcortial-safran") + license("LGPL-3.0-or-later") + version("5.8.0", sha256="686eaab84de79c072f3aedf26cd11ced44c84b435d51ce34e016ad203172922f") version("5.7.3", sha256="b0a9c5ad6789df369a68f94295df5b324b6348020b73bcc395d32fdd44abe706") version("5.7.2", sha256="4c396dd44aec69e0a171a04f857e28aad2e0bbfb733b48b6d81a2c6868e86840") version("5.7.1", sha256="27c09477ebc080f54919f76f8533a343936677c81809fe37ce4e2d62fa97237b") From a69af3c71f758df2367dab8da85b6093e97b6c22 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 1 Nov 2024 03:34:09 +0100 Subject: [PATCH 253/615] py-rasterio: add v1.4.2 (#47344) --- var/spack/repos/builtin/packages/py-rasterio/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-rasterio/package.py b/var/spack/repos/builtin/packages/py-rasterio/package.py index 606b983401f950..222f6d5109e49f 100644 --- a/var/spack/repos/builtin/packages/py-rasterio/package.py +++ b/var/spack/repos/builtin/packages/py-rasterio/package.py @@ -22,6 +22,7 @@ class PyRasterio(PythonPackage): version("main", branch="main") version("master", branch="master", deprecated=True) + version("1.4.2", sha256="1be35ccb4d998a4c48fa51bbee9e37927ecd9b9e954a2b2581b8f3e9bb165332") version("1.4.1", sha256="d750362bb792d2311f94803ff309baec48486ecba75c9b905ea9b1f5eb06ef9f") version("1.4.0", sha256="e0d2ff540a4e06016cca2fb46691a10afe71343ea998c50ad8247bb125542133") version("1.3.11", sha256="47aa70b4718ebc80d825bb7db3127577d74e31c53048ce215145c0baf530ece9") @@ -83,3 +84,6 @@ class PyRasterio(PythonPackage): depends_on("gdal@2.4:3.3", when="@1.2.7:1.2") depends_on("gdal@2.3:3.2", when="@1.2.0:1.2.6") depends_on("gdal@1.11:3.2", when="@1.1.0:1.1") + + # https://github.com/rasterio/rasterio/pull/3212 + conflicts("^gdal@3.10:", when="@:1.4.1") From c0c97433002c9baeb16cd78aafa477d65ac10bd6 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Thu, 31 Oct 2024 23:38:40 -0400 Subject: [PATCH 254/615] py-ase: add v3.23.0 (#47337) --- var/spack/repos/builtin/packages/py-ase/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-ase/package.py b/var/spack/repos/builtin/packages/py-ase/package.py index e949990ea44d1c..fb091295e0d17e 100644 --- a/var/spack/repos/builtin/packages/py-ase/package.py +++ b/var/spack/repos/builtin/packages/py-ase/package.py @@ -16,6 +16,7 @@ class PyAse(PythonPackage): license("LGPL-2.1-or-later") + version("3.23.0", sha256="91a2aa31d89bd90b0efdfe4a7e84264f32828b2abfc9f38e65e041ad76fec8ae") version("3.21.1", sha256="78b01d88529d5f604e76bc64be102d48f058ca50faad72ac740d717545711c7b") version("3.21.0", sha256="2c561e9b767cf16fc8ce198ea9326d77c6b67d33a85f44b68455e23466a64608") version("3.20.1", sha256="72c81f21b6adb907595fce8d883c0231301cbd8e9f6e5ce8e98bab927054daca") @@ -32,8 +33,12 @@ class PyAse(PythonPackage): depends_on("python@2.6:", type=("build", "run"), when="@:3.15.0") depends_on("python@3.5:", type=("build", "run"), when="@3.18.0:") depends_on("python@3.6:", type=("build", "run"), when="@3.20.0:") + depends_on("python@3.8:", type=("build", "run"), when="@3.23.0:") depends_on("py-numpy@1.11.3:", type=("build", "run")) + depends_on("py-numpy@1.18.5:", type=("build", "run"), when="@3.23.0:") depends_on("py-matplotlib@2.0.0:", type=("build", "run")) + depends_on("py-matplotlib@3.3.4:", type=("build", "run"), when="@3.23.0:") depends_on("py-scipy@0.18.1:", type=("build", "run")) + depends_on("py-scipy@1.6.0:", type=("build", "run"), when="@3.23.0:") depends_on("py-flask", type=("build", "run"), when="@:3.18.0") depends_on("py-setuptools", type="build") From 9a25a5821920c75bd4b85eb4332b1e4c4798e267 Mon Sep 17 00:00:00 2001 From: joscot-linaro <126488600+joscot-linaro@users.noreply.github.com> Date: Fri, 1 Nov 2024 03:56:02 +0000 Subject: [PATCH 255/615] linaro-forge: added 24.0.6 version (#47348) --- var/spack/repos/builtin/packages/linaro-forge/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/linaro-forge/package.py b/var/spack/repos/builtin/packages/linaro-forge/package.py index a673f275bd92fe..d1f862a5b86a37 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -23,6 +23,9 @@ class LinaroForge(Package): maintainers("kenche-linaro") if platform.machine() == "aarch64": + version( + "24.0.6", sha256="a7f9f71e4352be3680854611fe433a9974fcb8a327ac65ca3bc950c956eac6e4" + ) version( "24.0.5", sha256="fc0c80ce9f66c6966faaca77de0f13e26da564c853e5bfc1e8acd17b65bc2ba0" ) @@ -97,6 +100,9 @@ class LinaroForge(Package): "21.1.3", sha256="eecbc5686d60994c5468b2d7cd37bebe5d9ac0ba37bd1f98fbfc69b071db541e" ) elif platform.machine() == "x86_64": + version( + "24.0.6", sha256="eab198b964862b4664359ccbec1edb27c2dd3b9fa82bcb4e14fc616a2b0341da" + ) version( "24.0.5", sha256="da0d4d6fa9120b5e7c4a248795b7f5da32c4987588ecb7406213c8c9846af2bc" ) From b38a29f4df4aef19420238909fe185cf13ea05e4 Mon Sep 17 00:00:00 2001 From: G-Ragghianti <33492707+G-Ragghianti@users.noreply.github.com> Date: Thu, 31 Oct 2024 23:59:30 -0400 Subject: [PATCH 256/615] New versions for slate, lapackpp, and blaspp (#47334) --- var/spack/repos/builtin/packages/blaspp/package.py | 3 +++ var/spack/repos/builtin/packages/lapackpp/package.py | 4 ++++ var/spack/repos/builtin/packages/slate/package.py | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index e58d274483cc1d..2bdaf62c747a58 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -21,6 +21,9 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.26", sha256="c15ae19dbed1be35e8258048a044d3104da59e7e52b4fe7fe7ea5032708a8d2c" + ) version( "2024.05.31", sha256="24f325d2e1c2cc4275324bd88406555688379480877d19553656a0328287927a" ) diff --git a/var/spack/repos/builtin/packages/lapackpp/package.py b/var/spack/repos/builtin/packages/lapackpp/package.py index db32de97e15430..a97579255586c5 100644 --- a/var/spack/repos/builtin/packages/lapackpp/package.py +++ b/var/spack/repos/builtin/packages/lapackpp/package.py @@ -11,6 +11,7 @@ _versions = [ # LAPACK++, BLAS++ ["master", "master"], + ["2024.10.26", "2024.10.26"], ["2024.05.31", "2024.05.31"], ["2023.11.05", "2023.11.05"], ["2023.08.25", "2023.08.25"], @@ -37,6 +38,9 @@ class Lapackpp(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.26", sha256="67f81f585a7ac89b779c79297cab75cc23d2492cb5055c2348381ebdb751821d" + ) version( "2024.05.31", sha256="093646d492a4c2c6b4d7001effb559c80da7fa31fd5ba517a6d686ca8c78cd99" ) diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index 9a89c50bcc0ecc..82829b2edcb5f3 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -26,6 +26,9 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.29", sha256="e729fad51f44b1340c0f64ac0f862026121183a3c8d731874f0a11a3b5053223" + ) version( "2024.05.31", sha256="9c5d4d6779d8935b6fe41031b46e11ab92102f13c5f684022287c8616661b775" ) @@ -89,6 +92,7 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): for val in ROCmPackage.amdgpu_targets: depends_on("blaspp +rocm amdgpu_target=%s" % val, when="amdgpu_target=%s" % val) depends_on("lapackpp +rocm amdgpu_target=%s" % val, when="amdgpu_target=%s" % val) + depends_on("lapackpp@2024.10.26:", when="@2024.10.29:") depends_on("lapackpp@2024.05.31:", when="@2024.05.31:") depends_on("lapackpp@2023.11.05:", when="@2023.11.05:") depends_on("lapackpp@2023.08.25:", when="@2023.08.25:") From 35aa02771ac8b3f08480ff39f8f9a990cc03b2b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20M=C3=BCller?= Date: Fri, 1 Nov 2024 05:26:55 +0100 Subject: [PATCH 257/615] verilator: add 5.028, fix builds when using gcc on newer versions (#47168) --- .../packages/verilator/fix_compile_gch.patch | 13 +++++++++++++ .../repos/builtin/packages/verilator/package.py | 3 +++ 2 files changed, 16 insertions(+) create mode 100644 var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch diff --git a/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch b/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch new file mode 100644 index 00000000000000..761eeb9fa7b059 --- /dev/null +++ b/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch @@ -0,0 +1,13 @@ +diff --git a/src/Makefile_obj.in b/src/Makefile_obj.in +index 18947923a..d29baa840 100644 +--- a/src/Makefile_obj.in ++++ b/src/Makefile_obj.in +@@ -363,7 +363,7 @@ $(TGT): $(PREDEP_H) $(OBJS) + .SECONDARY: + + %.gch: % +- $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} ${CFG_CXXFLAGS_PCH} $< -o $@ ++ $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} ${CFG_CXXFLAGS_PCH} -c $< -o $@ + %.o: %.cpp + $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} -c $< -o $@ + %.o: %.c diff --git a/var/spack/repos/builtin/packages/verilator/package.py b/var/spack/repos/builtin/packages/verilator/package.py index 7500e252d93163..0399839d0492c3 100644 --- a/var/spack/repos/builtin/packages/verilator/package.py +++ b/var/spack/repos/builtin/packages/verilator/package.py @@ -42,6 +42,7 @@ class Verilator(AutotoolsPackage): version("master", branch="master") + version("5.028", sha256="02d4b6f34754b46a97cfd70f5fcbc9b730bd1f0a24c3fc37223397778fcb142c") version("5.026", sha256="87fdecf3967007d9ee8c30191ff2476f2a33635d0e0c6e3dbf345cc2f0c50b78") version("5.024", sha256="88b04c953e7165c670d6a700f202cef99c746a0867b4e2efe1d7ea789dee35f3") version("5.022", sha256="3c2f5338f4b6ce7e2f47a142401acdd18cbf4c5da06092618d6d036c0afef12d") @@ -86,6 +87,8 @@ class Verilator(AutotoolsPackage): conflicts("%gcc@:6", msg="C++14 support required") + patch("fix_compile_gch.patch", level=1, when="@5.0.18:") + # we need to fix the CXX and LINK paths, as they point to the spack # wrapper scripts which aren't usable without spack filter_compiler_wrappers("verilated.mk", relative_root="include") From 4a75c3c87a9935b1eff4ff6bc9932b7a2da5fcbf Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Fri, 1 Nov 2024 01:30:00 -0400 Subject: [PATCH 258/615] mapl: add 2.50.2, 2.47.1 tweaks (#47324) --- var/spack/repos/builtin/packages/mapl/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 9e5a5c5697f4ee..9f31c3be66fbb2 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -38,11 +38,14 @@ class Mapl(CMakePackage): version("develop", branch="develop") version("main", branch="main") + version("2.50.2", sha256="1c72f8598cf01bab6ef30c1f461444ba5a13f55c61164b7b3c15efb0cd1096c0") version("2.50.1", sha256="26dd7a3ec82d484d60a559bb90a20ad9a2a717af52c25b6a752dd971aeeb5075") version("2.50.0", sha256="12282e547936f667f85c95d466273dcbaccbd600add72fa5981c0c734ccb1f7d") version("2.49.1", sha256="975e349c7ff8be65d4e63f2a6adf74ca96127628505dbce16c7ba7a3901edc70") version("2.49.0", sha256="fdf4d48bd38abd1059180b123c5d9fdc2781992c783244ddc51ab0f2ef63dd67") version("2.48.0", sha256="60a0fc4fd82b1a05050666ae478da7d79d86305aff1643a57bc09cb5347323b7") + version("2.47.1.2", sha256="ae9032b4c833887b9ddc932ea9eb7e59e713829f6c39f3152fee4caf2f3ba21f") + version("2.47.1.1", sha256="9553e91e0325dfe57856564e9970b3871069f902fb109fcced6ad87151f95be7") version("2.47.2", sha256="d4ca384bf249b755454cd486a26bae76944a7cae3a706b9a7c9298825077cac0") version("2.47.1", sha256="ca3e94c0caa78a91591fe63603d1836196f5294d4baad7cf1d83b229b3a85916") version("2.47.0", sha256="66c862d2ab8bcd6969e9728091dbca54f1f420e97e41424c4ba93ef606088459") From 5df7dc88fc6d10e8c560d4d5ae3e98deaf61a90d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 06:23:10 -0500 Subject: [PATCH 259/615] build(deps): bump docutils from 0.20.1 to 0.21.2 in /lib/spack/docs (#45592) Bumps [docutils](https://docutils.sourceforge.io) from 0.20.1 to 0.21.2. --- updated-dependencies: - dependency-name: docutils dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index f9c3ccc1b60de4..530bb17522e00b 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -3,7 +3,7 @@ sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 sphinx-rtd-theme==3.0.1 python-levenshtein==0.26.0 -docutils==0.20.1 +docutils==0.21.2 pygments==2.18.0 urllib3==2.2.3 pytest==8.3.3 From 492c52089f81654f00b0d52defed71e7b56152b7 Mon Sep 17 00:00:00 2001 From: Kenneth Moreland Date: Fri, 1 Nov 2024 09:18:13 -0400 Subject: [PATCH 260/615] adios2: fix mgard variant (#47223) Co-authored-by: Bernhard Kaindl --- var/spack/repos/builtin/packages/adios2/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 41e80d615d040e..76ca3b0c9f1c5c 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -188,7 +188,8 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): depends_on("libpng@1.6:", when="+png") depends_on("zfp@0.5.1:0.5", when="+zfp") depends_on("sz@2.0.2.0:", when="+sz") - depends_on("mgard", when="+mgard") + depends_on("mgard@2022-11-18:", when="+mgard") + depends_on("mgard@2023-01-10:", when="@2.9: +mgard") extends("python", when="+python") depends_on("python@2.7:2.8,3.5:", when="@:2.4.0 +python", type=("build", "run")) @@ -274,6 +275,7 @@ def cmake_args(self): from_variant("ADIOS2_USE_DataSpaces", "dataspaces"), from_variant("ADIOS2_USE_Fortran", "fortran"), from_variant("ADIOS2_USE_HDF5", "hdf5"), + from_variant("ADIOS2_USE_MGARD", "mgard"), from_variant("ADIOS2_USE_MPI", "mpi"), from_variant("ADIOS2_USE_PNG", "png"), from_variant("ADIOS2_USE_Python", "python"), @@ -292,7 +294,6 @@ def cmake_args(self): self.define("ADIOS2_BUILD_EXAMPLES", False), self.define("ADIOS2_USE_Endian_Reverse", True), self.define("ADIOS2_USE_IME", False), - self.define("ADIOS2_USE_MGARD", False), ] if spec.satisfies("+sst"): From 24d3ed8c1805ccd7553dba2c62984d99dc301f6e Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Fri, 1 Nov 2024 16:41:34 +0100 Subject: [PATCH 261/615] geant4: make downloading data dependency optional (#47298) * geant4: make downloading data dependency optional This PR makes downloading the data repository of the Geant4 spec optional by adding a sticky, default-enabled variant which controls the dependency on `geant4-data`. This should not change the default behaviour, but should allow users to choose whether or not they want the data directory. * Add comment * Update env variable * Generic docs * Buildable false --- .../repos/builtin/packages/geant4/package.py | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index a606c9c7e1cdcc..8dd3f18b5d92b5 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -84,6 +84,40 @@ class Geant4(CMakePackage): variant("timemory", default=False, description="Use TiMemory for profiling", when="@9.5:") variant("vtk", default=False, description="Enable VTK support", when="@11:") + # For most users, obtaining the Geant4 data via Spack will be useful; the + # sticky, default-enabled `+data` variant ensures that this happens. + # Furthermore, if this variant is enabled, Spack will automatically set the + # necessary environment variables to ensure that the Geant4 code runs + # correctly. + # + # However, the Geant4 data is also large and it is, on many machines used + # in HEP, already available via e.g. CVMFS. In these cases, users can save + # network bandwidth by using externally supplied Geant4 data. This can be + # done in two different ways. + # + # The first is to declare the Geant4 data directories as externals. This + # can be done by manually adding them to the `packages.yaml` file, e.g.: + # + # ``` + # g4radioactivedecay: + # externals: + # - spec: g4radioactivedecay@5.6 + # prefix: + # buildable: False + # ``` + # + # Where is a path such that /share/data/ + # exists. + # + # Alternatively, the `~data` variant can be supplied; in this case, Spack + # will not attempt to use the `geant4-data` spec at all. It is then + # essential to set up the `GEANT4_DATA_DIR` environment variable manually + # at runtime; see the Geant4 installation guide for more information: + # https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/postinstall.html + variant( + "data", default=True, sticky=True, description="Enable downloading of the data directory" + ) + depends_on("cmake@3.16:", type="build", when="@11.0.0:") depends_on("cmake@3.8:", type="build", when="@10.6.0:") depends_on("cmake@3.5:", type="build") @@ -109,7 +143,7 @@ class Geant4(CMakePackage): "11.2.2:11.2", "11.3:", ]: - depends_on("geant4-data@" + _vers, type="run", when="@" + _vers) + depends_on("geant4-data@" + _vers, type="run", when="+data @" + _vers) depends_on("expat") depends_on("zlib-api") @@ -301,7 +335,8 @@ def cmake_args(self): # geant4-data's install directory to correctly set up the # Geant4Config.cmake values for Geant4_DATASETS . options.append(self.define("GEANT4_INSTALL_DATA", False)) - options.append(self.define("GEANT4_INSTALL_DATADIR", self.datadir)) + if spec.satisfies("+data"): + options.append(self.define("GEANT4_INSTALL_DATADIR", self.datadir)) # Vecgeom if spec.satisfies("+vecgeom"): From 8f09f523cc12a6c50f8fdc22c490a9a07188bea4 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Fri, 1 Nov 2024 13:40:10 -0400 Subject: [PATCH 262/615] cp2k: protect 2024.3 against newer libxc (#47363) * cp2k: protect against newer libxc * Compat bound for libxc --- var/spack/repos/builtin/packages/cp2k/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 5d462a906a438c..71d6bab5a2e024 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -201,6 +201,7 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): depends_on("libxc@5.1.7:5.1", when="@9:2022.2") depends_on("libxc@6.1:", when="@2023.1:") depends_on("libxc@6.2:", when="@2023.2:") + depends_on("libxc@:6", when="@:2024.3") with when("+spla"): depends_on("spla+cuda+fortran", when="+cuda") From 7b2450c22ad4adf4280a8f024ec4778b22d58816 Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Fri, 1 Nov 2024 13:53:59 -0600 Subject: [PATCH 263/615] Add openfast version 3.5.4 (#47369) * Add openfast version 3.5.4 * remove commits --- .../builtin/packages/openfast/package.py | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py index 8b99fda2c669e3..3d768d3c6fd632 100644 --- a/var/spack/repos/builtin/packages/openfast/package.py +++ b/var/spack/repos/builtin/packages/openfast/package.py @@ -18,22 +18,23 @@ class Openfast(CMakePackage): version("develop", branch="dev") version("master", branch="main") - version("3.5.3", tag="v3.5.3", commit="6a7a543790f3cad4a65b87242a619ac5b34b4c0f") - version("3.4.1", tag="v3.4.1", commit="18704086dad861ab13daf804825da7c4b8d59428") - version("3.4.0", tag="v3.4.0", commit="e8ec53f9c7f9d3f6a13bfb61dba12a0ca04d8a2f") - version("3.3.0", tag="v3.3.0", commit="5f3fb6ef74f48e75ca94000090737a41866fb264") - version("3.2.1", tag="v3.2.1", commit="08fffef240461a8334596179f1de462be43ad3e9") - version("3.2.0", tag="v3.2.0", commit="90a1ffb626baf398d89681b9422bdbfef11cd3ad") - version("3.1.0", tag="v3.1.0", commit="3456a645581456883e44d441eb285ed688e98797") - version("3.0.0", tag="v3.0.0", commit="42a5a8196529ae0349eda6d797a79461c2c03ff0") - version("2.6.0", tag="v2.6.0", commit="bbbb1ca7b28a4ba411613b5c85f5de02f8316754") - version("2.5.0", tag="v2.5.0", commit="718d46f707d78e85edf1b49d3b1a63e8e23e1aae") - version("2.4.0", tag="v2.4.0", commit="ff33ca1cf65f2e13c1de0ab78cc2396ec4a47ce0") - version("2.3.0", tag="v2.3.0", commit="f2419c5d1c23caad9146b95a103d89e9dcaefe30") - version("2.2.0", tag="v2.2.0", commit="e4faf27b774982df274b87c0570e4b58c4a13fe3") - version("2.1.0", tag="v2.1.0", commit="f147b80521eff90c19f065eabeceac13de39ac59") - version("2.0.0", tag="v2.0.0", commit="0769598a17e19b3ccd00a85cde389995f55024a8") - version("1.0.0", tag="v1.0.0", commit="e788b9b18bd5ed96ea59d4bc0812d461bc430cfe") + version("3.5.4", tag="v3.5.4") + version("3.5.3", tag="v3.5.3") + version("3.4.1", tag="v3.4.1") + version("3.4.0", tag="v3.4.0") + version("3.3.0", tag="v3.3.0") + version("3.2.1", tag="v3.2.1") + version("3.2.0", tag="v3.2.0") + version("3.1.0", tag="v3.1.0") + version("3.0.0", tag="v3.0.0") + version("2.6.0", tag="v2.6.0") + version("2.5.0", tag="v2.5.0") + version("2.4.0", tag="v2.4.0") + version("2.3.0", tag="v2.3.0") + version("2.2.0", tag="v2.2.0") + version("2.1.0", tag="v2.1.0") + version("2.0.0", tag="v2.0.0") + version("1.0.0", tag="v1.0.0") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated From 0cf8cb70f43ae325e8895eb241a92f5aa4680399 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 1 Nov 2024 21:43:16 +0100 Subject: [PATCH 264/615] Fix pickle round-trip of specs propagating variants (#47351) This changes `Spec` serialization to include information about propagation for abstract specs. This was previously not included in the JSON representation for abstract specs, and couldn't be stored. Now, there is a separate `propagate` dictionary alongside the `parameters` dictionary. This isn't beautiful, but when we bump the spec version for Spack `v0.24`, we can clean up this and other aspects of the schema. --- lib/spack/spack/spec.py | 30 ++++++++++++++++++++---------- lib/spack/spack/test/spec_yaml.py | 24 ++++++++++++++++++++++++ lib/spack/spack/variant.py | 10 ++++++---- 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index e5b9cad4312764..0ec0a3009d6987 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2199,6 +2199,18 @@ def to_node_dict(self, hash=ht.dag_hash): if params: d["parameters"] = params + if params and not self.concrete: + flag_names = [ + name + for name, flags in self.compiler_flags.items() + if any(x.propagate for x in flags) + ] + d["propagate"] = sorted( + itertools.chain( + [v.name for v in self.variants.values() if v.propagate], flag_names + ) + ) + if self.external: d["external"] = syaml.syaml_dict( [ @@ -2371,16 +2383,10 @@ def node_dict_with_hashes(self, hash=ht.dag_hash): spec is concrete, the full hash is added as well. If 'build' is in the hash_type, the build hash is also added.""" node = self.to_node_dict(hash) + # All specs have at least a DAG hash node[ht.dag_hash.name] = self.dag_hash() - # dag_hash is lazily computed -- but if we write a spec out, we want it - # to be included. This is effectively the last chance we get to compute - # it accurately. - if self.concrete: - # all specs have at least a DAG hash - node[ht.dag_hash.name] = self.dag_hash() - - else: + if not self.concrete: node["concrete"] = False # we can also give them other hash types if we want @@ -4731,13 +4737,17 @@ def from_node_dict(cls, node): else: spec.compiler = None + propagated_names = node.get("propagate", []) for name, values in node.get("parameters", {}).items(): + propagate = name in propagated_names if name in _valid_compiler_flags: spec.compiler_flags[name] = [] for val in values: - spec.compiler_flags.add_flag(name, val, False) + spec.compiler_flags.add_flag(name, val, propagate) else: - spec.variants[name] = vt.MultiValuedVariant.from_node_dict(name, values) + spec.variants[name] = vt.MultiValuedVariant.from_node_dict( + name, values, propagate=propagate + ) spec.external_path = None spec.external_modules = None diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 5b64822b38268a..79f128e94833cd 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -16,6 +16,7 @@ import io import json import os +import pickle import pytest import ruamel.yaml @@ -551,3 +552,26 @@ def test_anchorify_2(): e: *id002 """ ) + + +@pytest.mark.parametrize( + "spec_str", + [ + "hdf5 ++mpi", + "hdf5 cflags==-g", + "hdf5 foo==bar", + "hdf5~~mpi++shared", + "hdf5 cflags==-g foo==bar cxxflags==-O3", + "hdf5 cflags=-g foo==bar cxxflags==-O3", + ], +) +def test_pickle_roundtrip_for_abstract_specs(spec_str): + """Tests that abstract specs correctly round trip when pickled. + + This test compares both spec objects and their string representation, due to some + inconsistencies in how `Spec.__eq__` is implemented. + """ + s = spack.spec.Spec(spec_str) + t = pickle.loads(pickle.dumps(s)) + assert s == t + assert str(s) == str(t) diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 0756841a638135..a15c760a0a2347 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -307,19 +307,21 @@ def __init__(self, name: str, value: Any, propagate: bool = False): self.value = value @staticmethod - def from_node_dict(name: str, value: Union[str, List[str]]) -> "AbstractVariant": + def from_node_dict( + name: str, value: Union[str, List[str]], *, propagate: bool = False + ) -> "AbstractVariant": """Reconstruct a variant from a node dict.""" if isinstance(value, list): # read multi-value variants in and be faithful to the YAML - mvar = MultiValuedVariant(name, ()) + mvar = MultiValuedVariant(name, (), propagate=propagate) mvar._value = tuple(value) mvar._original_value = mvar._value return mvar elif str(value).upper() == "TRUE" or str(value).upper() == "FALSE": - return BoolValuedVariant(name, value) + return BoolValuedVariant(name, value, propagate=propagate) - return SingleValuedVariant(name, value) + return SingleValuedVariant(name, value, propagate=propagate) def yaml_entry(self) -> Tuple[str, SerializedValueType]: """Returns a key, value tuple suitable to be an entry in a yaml dict. From 1462c357619fedf7354bc60f9178b2199258ebd2 Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Fri, 1 Nov 2024 17:07:23 -0500 Subject: [PATCH 265/615] Ci generate on change (#47318) * don't concretize in CI if changed packages are not in stacks Signed-off-by: Todd Gamblin * Generate noop job when no specs to rebuild due to untouched pruning * Add test to verify skipping generate creates a noop job * Changed debug for early exit --------- Signed-off-by: Todd Gamblin Co-authored-by: Todd Gamblin --- lib/spack/spack/ci.py | 94 ++++++++++++++++++++++++---------- lib/spack/spack/test/cmd/ci.py | 42 +++++++++++++++ 2 files changed, 109 insertions(+), 27 deletions(-) diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index 5a8b2ae1e7d49a..8a23bc3ae1357b 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -37,6 +37,7 @@ import spack.error import spack.main import spack.mirror +import spack.package_base import spack.paths import spack.repo import spack.spec @@ -264,14 +265,22 @@ def _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions): def get_change_revisions(): """If this is a git repo get the revisions to use when checking for changed packages and spack core modules.""" + rev1 = None + rev2 = None + + # Note: git_dir may be a file in a worktree. If it exists, attempt to use git + # to determine if there is a revision git_dir = os.path.join(spack.paths.prefix, ".git") - if os.path.exists(git_dir) and os.path.isdir(git_dir): - # TODO: This will only find changed packages from the last - # TODO: commit. While this may work for single merge commits - # TODO: when merging the topic branch into the base, it will - # TODO: require more thought outside of that narrow case. - return "HEAD^", "HEAD" - return None, None + if os.path.exists(git_dir): + # The default will only find changed packages from the last + # commit. When the commit is a merge commit, this is will return all of the + # changes on the topic. + # TODO: Handle the case where the clone is not shallow clone of a merge commit + # using `git merge-base` + rev1 = "HEAD^" + rev2 = "HEAD" + + return rev1, rev2 def get_stack_changed(env_path, rev1="HEAD^", rev2="HEAD"): @@ -390,7 +399,7 @@ class SpackCI: used by the CI generator(s). """ - def __init__(self, ci_config, spec_labels, stages): + def __init__(self, ci_config, spec_labels=None, stages=None): """Given the information from the ci section of the config and the staged jobs, set up meta data needed for generating Spack CI IR. @@ -408,8 +417,9 @@ def __init__(self, ci_config, spec_labels, stages): } jobs = self.ir["jobs"] - for spec, dag_hash in _build_jobs(spec_labels, stages): - jobs[dag_hash] = self.__init_job(spec) + if spec_labels and stages: + for spec, dag_hash in _build_jobs(spec_labels, stages): + jobs[dag_hash] = self.__init_job(spec) for name in self.named_jobs: # Skip the special named jobs @@ -705,14 +715,53 @@ def generate_gitlab_ci_yaml( files (spack.yaml, spack.lock), etc should be written. GitLab requires this to be within the project directory. """ + rev1, rev2 = get_change_revisions() + tty.debug(f"Got following revisions: rev1={rev1}, rev2={rev2}") + + # Get the joined "ci" config with all of the current scopes resolved + ci_config = cfg.get("ci") + spack_prune_untouched = os.environ.get("SPACK_PRUNE_UNTOUCHED", None) + + changed = rev1 and rev2 + affected_pkgs = None + if spack_prune_untouched and changed: + affected_pkgs = compute_affected_packages(rev1, rev2) + tty.debug("affected pkgs:") + if affected_pkgs: + for p in affected_pkgs: + tty.debug(f" {p}") + else: + tty.debug(" no affected packages...") + + possible_builds = spack.package_base.possible_dependencies(*env.user_specs) + changed = any((spec in p for p in possible_builds.values()) for spec in affected_pkgs) + + if not changed: + spack_ci = SpackCI(ci_config) + spack_ci_ir = spack_ci.generate_ir() + + # No jobs should be generated. + noop_job = spack_ci_ir["jobs"]["noop"]["attributes"] + # If this job fails ignore the status and carry on + noop_job["retry"] = 0 + noop_job["allow_failure"] = True + + tty.msg("Skipping concretization, generating no-op job") + output_object = {"no-specs-to-rebuild": noop_job} + + # Ensure the child pipeline always runs + output_object["workflow"] = {"rules": [{"when": "always"}]} + + with open(output_file, "w") as f: + ruamel.yaml.YAML().dump(output_object, f) + + return + with spack.concretize.disable_compiler_existence_check(): with env.write_transaction(): env.concretize() env.write() - # Get the joined "ci" config with all of the current scopes resolved - ci_config = cfg.get("ci") - if not ci_config: raise SpackCIError("Environment does not have a `ci` configuration") @@ -737,20 +786,13 @@ def generate_gitlab_ci_yaml( dependent_depth = None prune_untouched_packages = False - spack_prune_untouched = os.environ.get("SPACK_PRUNE_UNTOUCHED", None) if spack_prune_untouched is not None and spack_prune_untouched.lower() == "true": # Requested to prune untouched packages, but assume we won't do that # unless we're actually in a git repo. - rev1, rev2 = get_change_revisions() - tty.debug(f"Got following revisions: rev1={rev1}, rev2={rev2}") - if rev1 and rev2: + if changed: # If the stack file itself did not change, proceed with pruning if not get_stack_changed(env.manifest_path, rev1, rev2): prune_untouched_packages = True - affected_pkgs = compute_affected_packages(rev1, rev2) - tty.debug("affected pkgs:") - for p in affected_pkgs: - tty.debug(f" {p}") affected_specs = get_spec_filter_list( env, affected_pkgs, dependent_traverse_depth=dependent_depth ) @@ -1098,11 +1140,6 @@ def main_script_replacements(cmd): # warn only if there was actually a CDash configuration. tty.warn("Unable to populate buildgroup without CDash credentials") - service_job_retries = { - "max": 2, - "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], - } - if copy_only_pipeline: stage_names.append("copy") sync_job = copy.deepcopy(spack_ci_ir["jobs"]["copy"]["attributes"]) @@ -1162,7 +1199,10 @@ def main_script_replacements(cmd): ) final_job["when"] = "always" - final_job["retry"] = service_job_retries + final_job["retry"] = { + "max": 2, + "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], + } final_job["interruptible"] = True final_job["dependencies"] = [] diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 36aa992c639c9c..2f0e053265c2d1 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -1650,3 +1650,45 @@ def fake_dyn_mapping_urlopener(*args, **kwargs): assert job.get("variables", {}).get("MY_VAR") == "hello" assert "ignored_field" not in job assert "unallowed_field" not in job + + +def test_ci_generate_noop_no_concretize( + tmpdir, + working_env, + mutable_mock_env_path, + install_mockery, + mock_packages, + monkeypatch, + ci_base_environment, +): + # Write the enviroment file + filename = str(tmpdir.join("spack.yaml")) + with open(filename, "w") as f: + f.write( + """\ +spack: + specs: + - pkg-a + mirrors: + buildcache-destination: https://my.fake.mirror + ci: + type: gitlab +""" + ) + + def fake_compute_affected(r1=None, r2=None): + return [] + + monkeypatch.setattr(ci, "compute_affected_packages", fake_compute_affected) + monkeypatch.setenv("SPACK_PRUNE_UNTOUCHED", "TRUE") # enables pruning of untouched specs + + with tmpdir.as_cwd(): + env_cmd("create", "test", "./spack.yaml") + outputfile = str(tmpdir.join(".gitlab-ci.yml")) + + with ev.read("test"): + ci_cmd("generate", "--output-file", outputfile) + + with open(outputfile) as of: + pipeline_doc = syaml.load(of.read()) + assert "no-specs-to-rebuild" in pipeline_doc From e42a4a8bac1f7e79abdd3227a7a743a55044a270 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Fri, 1 Nov 2024 16:49:26 -0700 Subject: [PATCH 266/615] parse_specs: unify specs based on concretizer:unify (#44843) Currently, the `concretizer:unify:` config option only affects environments. With this PR, it now affects any group of specs given to a command using the `parse_specs(*, concretize=True)` interface. - [x] implementation in `parse_specs` - [x] tests - [x] ensure all commands that accept multiple specs and concretize use `parse_specs` interface --------- Co-authored-by: Todd Gamblin Signed-off-by: Todd Gamblin --- lib/spack/spack/cmd/__init__.py | 43 +++++- lib/spack/spack/cmd/clean.py | 3 +- lib/spack/spack/cmd/patch.py | 3 +- lib/spack/spack/cmd/stage.py | 2 +- lib/spack/spack/concretize.py | 140 +++++++++++++++++++ lib/spack/spack/environment/environment.py | 149 +++++---------------- lib/spack/spack/solver/asp.py | 2 + lib/spack/spack/test/cmd/install.py | 2 +- lib/spack/spack/test/concretize.py | 18 +++ 9 files changed, 237 insertions(+), 125 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index c481e931312988..031b29f9528c79 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -173,10 +173,29 @@ def parse_specs( arg_string = " ".join([quote_kvp(arg) for arg in args]) specs = spack.parser.parse(arg_string) - for spec in specs: - if concretize: - spec.concretize(tests=tests) - return specs + if not concretize: + return specs + + to_concretize = [(s, None) for s in specs] + return _concretize_spec_pairs(to_concretize, tests=tests) + + +def _concretize_spec_pairs(to_concretize, tests=False): + """Helper method that concretizes abstract specs from a list of abstract,concrete pairs. + + Any spec with a concrete spec associated with it will concretize to that spec. Any spec + with ``None`` for its concrete spec will be newly concretized. This method respects unification + rules from config.""" + unify = spack.config.get("concretizer:unify", False) + + concretize_method = spack.concretize.concretize_separately # unify: false + if unify is True: + concretize_method = spack.concretize.concretize_together + elif unify == "when_possible": + concretize_method = spack.concretize.concretize_together_when_possible + + concretized = concretize_method(*to_concretize, tests=tests) + return [concrete for _, concrete in concretized] def matching_spec_from_env(spec): @@ -192,6 +211,22 @@ def matching_spec_from_env(spec): return spec.concretized() +def matching_specs_from_env(specs): + """ + Same as ``matching_spec_from_env`` but respects spec unification rules. + + For each spec, if there is a matching spec in the environment it is used. If no + matching spec is found, this will return the given spec but concretized in the + context of the active environment and other given specs, with unification rules applied. + """ + env = ev.active_environment() + spec_pairs = [(spec, env.matching_spec(spec) if env else None) for spec in specs] + additional_concrete_specs = ( + [(concrete, concrete) for _, concrete in env.concretized_specs()] if env else [] + ) + return _concretize_spec_pairs(spec_pairs + additional_concrete_specs)[: len(spec_pairs)] + + def disambiguate_spec(spec, env, local=False, installed=True, first=False): """Given a spec, figure out which installed package it refers to. diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 0b8fb6d6bbf6f2..59d650fd12a7cc 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -105,7 +105,8 @@ def clean(parser, args): # Then do the cleaning falling through the cases if args.specs: specs = spack.cmd.parse_specs(args.specs, concretize=False) - specs = list(spack.cmd.matching_spec_from_env(x) for x in specs) + specs = spack.cmd.matching_specs_from_env(specs) + for spec in specs: msg = "Cleaning build stage [{0}]" tty.msg(msg.format(spec.short_spec)) diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 885ff2f746c352..dbd18f7948a1c4 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -33,8 +33,9 @@ def patch(parser, args): spack.config.set("config:checksum", False, scope="command_line") specs = spack.cmd.parse_specs(args.specs, concretize=False) + specs = spack.cmd.matching_specs_from_env(specs) for spec in specs: - _patch(spack.cmd.matching_spec_from_env(spec).package) + _patch(spec.package) def _patch_env(env: ev.Environment): diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index af5fa412ea7e1a..20da92926f8104 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -47,8 +47,8 @@ def stage(parser, args): if len(specs) > 1 and custom_path: tty.die("`--path` requires a single spec, but multiple were provided") + specs = spack.cmd.matching_specs_from_env(specs) for spec in specs: - spec = spack.cmd.matching_spec_from_env(spec) pkg = spec.package if custom_path: diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 387c7f2de27efd..fabfdbb523a749 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -5,11 +5,17 @@ """ (DEPRECATED) Used to contain the code for the original concretizer """ +import sys +import time from contextlib import contextmanager from itertools import chain +from typing import Tuple + +import llnl.util.tty as tty import spack.config import spack.error +from spack.spec import Spec CHECK_COMPILER_EXISTENCE = True @@ -83,6 +89,140 @@ def concretize_specs_together(*abstract_specs, **kwargs): return [s.copy() for s in result.specs] +def concretize_together(*spec_list, **kwargs): + """Given a number of specs as input, tries to concretize them together. + + Args: + tests (bool or list or set): False to run no tests, True to test + all packages, or a list of package names to run tests for some + *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + + Returns: + List of tuples of abstract and concretized specs + """ + to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] + abstract_specs = [abstract for abstract, _ in spec_list] + concrete_specs = concretize_specs_together(*to_concretize, **kwargs) + return list(zip(abstract_specs, concrete_specs)) + + +def concretize_together_when_possible(*spec_list, **kwargs): + """Given a number of specs as input, tries to concretize them together to the extent possible. + + See documentation for ``unify: when_possible`` concretization for the precise definition of + "to the extent possible". + + Args: + tests (bool or list or set): False to run no tests, True to test + all packages, or a list of package names to run tests for some + *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + + Returns: + List of tuples of abstract and concretized specs + """ + to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] + old_concrete_to_abstract = { + concrete: abstract for (abstract, concrete) in spec_list if concrete + } + + result_by_user_spec = {} + solver = spack.solver.asp.Solver() + allow_deprecated = spack.config.get("config:deprecated", False) + for result in solver.solve_in_rounds( + to_concretize, tests=kwargs.get("tests", False), allow_deprecated=allow_deprecated + ): + result_by_user_spec.update(result.specs_by_input) + + # If the "abstract" spec is a concrete spec from the previous concretization + # translate it back to an abstract spec. Otherwise, keep the abstract spec + return [ + (old_concrete_to_abstract.get(abstract, abstract), concrete) + for abstract, concrete in sorted(result_by_user_spec.items()) + ] + + +def concretize_separately(*spec_list, **kwargs): + """Given a number of specs as input, tries to concretize them together. + + Args: + tests (bool or list or set): False to run no tests, True to test + all packages, or a list of package names to run tests for some + *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + + Returns: + List of tuples of abstract and concretized specs + """ + tests = kwargs.get("tests", False) + to_concretize = [abstract for abstract, concrete in spec_list if not concrete] + args = [ + (i, str(abstract), tests) + for i, abstract in enumerate(to_concretize) + if not abstract.concrete + ] + ret = [(i, abstract) for i, abstract in enumerate(to_concretize) if abstract.concrete] + # Ensure we don't try to bootstrap clingo in parallel + with spack.bootstrap.ensure_bootstrap_configuration(): + spack.bootstrap.ensure_clingo_importable_or_raise() + + # Ensure all the indexes have been built or updated, since + # otherwise the processes in the pool may timeout on waiting + # for a write lock. We do this indirectly by retrieving the + # provider index, which should in turn trigger the update of + # all the indexes if there's any need for that. + _ = spack.repo.PATH.provider_index + + # Ensure we have compilers in compilers.yaml to avoid that + # processes try to write the config file in parallel + _ = spack.compilers.all_compilers_config(spack.config.CONFIG) + + # Early return if there is nothing to do + if len(args) == 0: + # Still have to combine the things that were passed in as abstract with the things + # that were passed in as pairs + return [(abstract, concrete) for abstract, (_, concrete) in zip(to_concretize, ret)] + [ + (abstract, concrete) for abstract, concrete in spec_list if concrete + ] + + # Solve the environment in parallel on Linux + # TODO: support parallel concretization on macOS and Windows + num_procs = min(len(args), spack.config.determine_number_of_jobs(parallel=True)) + + for j, (i, concrete, duration) in enumerate( + spack.util.parallel.imap_unordered( + spack.concretize._concretize_task, + args, + processes=num_procs, + debug=tty.is_debug(), + maxtaskperchild=1, + ) + ): + ret.append((i, concrete)) + percentage = (j + 1) / len(args) * 100 + tty.verbose( + f"{duration:6.1f}s [{percentage:3.0f}%] {concrete.cformat('{hash:7}')} " + f"{to_concretize[i].colored_str}" + ) + sys.stdout.flush() + + # Add specs in original order + ret.sort(key=lambda x: x[0]) + + return [(abstract, concrete) for abstract, (_, concrete) in zip(to_concretize, ret)] + [ + (abstract, concrete) for abstract, concrete in spec_list if concrete + ] + + +def _concretize_task(packed_arguments) -> Tuple[int, Spec, float]: + index, spec_str, tests = packed_arguments + with tty.SuppressOutput(msg_enabled=False): + start = time.time() + spec = Spec(spec_str).concretized(tests=tests) + return index, spec, time.time() - start + + class UnavailableCompilerVersionError(spack.error.SpackError): """Raised when there is no available compiler that satisfies a compiler spec.""" diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 81a2223c4995b8..b61332a0abc92c 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -11,12 +11,10 @@ import re import shutil import stat -import sys -import time import urllib.parse import urllib.request import warnings -from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union import llnl.util.filesystem as fs import llnl.util.tty as tty @@ -57,6 +55,8 @@ from spack.spec_list import SpecList from spack.util.path import substitute_path_variables +SpecPair = Tuple[spack.spec.Spec, spack.spec.Spec] + #: environment variable used to indicate the active environment spack_env_var = "SPACK_ENV" @@ -1510,7 +1510,7 @@ def deconcretize(self, spec: spack.spec.Spec, concrete: bool = True): def _get_specs_to_concretize( self, - ) -> Tuple[Set[spack.spec.Spec], Set[spack.spec.Spec], List[spack.spec.Spec]]: + ) -> Tuple[List[spack.spec.Spec], List[spack.spec.Spec], List[SpecPair]]: """Compute specs to concretize for unify:true and unify:when_possible. This includes new user specs and any already concretized specs. @@ -1520,19 +1520,17 @@ def _get_specs_to_concretize( """ # Exit early if the set of concretized specs is the set of user specs - new_user_specs = set(self.user_specs) - set(self.concretized_user_specs) - kept_user_specs = set(self.user_specs) & set(self.concretized_user_specs) - kept_user_specs |= set(self.included_user_specs) + new_user_specs = list(set(self.user_specs) - set(self.concretized_user_specs)) + kept_user_specs = list(set(self.user_specs) & set(self.concretized_user_specs)) + kept_user_specs += self.included_user_specs if not new_user_specs: return new_user_specs, kept_user_specs, [] - concrete_specs_to_keep = [ - concrete + specs_to_concretize = [(s, None) for s in new_user_specs] + [ + (abstract, concrete) for abstract, concrete in self.concretized_specs() if abstract in kept_user_specs ] - - specs_to_concretize = list(new_user_specs) + concrete_specs_to_keep return new_user_specs, kept_user_specs, specs_to_concretize def _concretize_together_where_possible( @@ -1546,39 +1544,26 @@ def _concretize_together_where_possible( if not new_user_specs: return [] - old_concrete_to_abstract = { - concrete: abstract for (abstract, concrete) in self.concretized_specs() - } - self.concretized_user_specs = [] self.concretized_order = [] self.specs_by_hash = {} - result_by_user_spec = {} - solver = spack.solver.asp.Solver() - allow_deprecated = spack.config.get("config:deprecated", False) - for result in solver.solve_in_rounds( - specs_to_concretize, tests=tests, allow_deprecated=allow_deprecated - ): - result_by_user_spec.update(result.specs_by_input) - - result = [] - for abstract, concrete in sorted(result_by_user_spec.items()): - # If the "abstract" spec is a concrete spec from the previous concretization - # translate it back to an abstract spec. Otherwise, keep the abstract spec - abstract = old_concrete_to_abstract.get(abstract, abstract) - if abstract in new_user_specs: - result.append((abstract, concrete)) - - # Only add to the environment if it's from this environment (not just included) + ret = [] + result = spack.concretize.concretize_together_when_possible( + *specs_to_concretize, tests=tests + ) + for abstract, concrete in result: + # Only add to the environment if it's from this environment (not included in) if abstract in self.user_specs: self._add_concrete_spec(abstract, concrete) - return result + # Return only the new specs + if abstract in new_user_specs: + ret.append((abstract, concrete)) - def _concretize_together( - self, tests: bool = False - ) -> List[Tuple[spack.spec.Spec, spack.spec.Spec]]: + return ret + + def _concretize_together(self, tests: bool = False) -> List[SpecPair]: """Concretization strategy that concretizes all the specs in the same DAG. """ @@ -1592,7 +1577,7 @@ def _concretize_together( self.specs_by_hash = {} try: - concrete_specs: List[spack.spec.Spec] = spack.concretize.concretize_specs_together( + concretized_specs: List[SpecPair] = spack.concretize.concretize_together( *specs_to_concretize, tests=tests ) except spack.error.UnsatisfiableSpecError as e: @@ -1611,16 +1596,13 @@ def _concretize_together( ) raise - # set() | set() does not preserve ordering, even though sets are ordered - ordered_user_specs = list(new_user_specs) + list(kept_user_specs) - concretized_specs = [x for x in zip(ordered_user_specs, concrete_specs)] for abstract, concrete in concretized_specs: # Don't add if it's just included if abstract in self.user_specs: self._add_concrete_spec(abstract, concrete) - # zip truncates the longer list, which is exactly what we want here - return list(zip(new_user_specs, concrete_specs)) + # Return the portion of the return value that is new + return concretized_specs[: len(new_user_specs)] def _concretize_separately(self, tests=False): """Concretization strategy that concretizes separately one @@ -1642,71 +1624,16 @@ def _concretize_separately(self, tests=False): concrete = old_specs_by_hash[h] self._add_concrete_spec(s, concrete, new=False) - # Concretize any new user specs that we haven't concretized yet - args, root_specs, i = [], [], 0 - for uspec in self.user_specs: - if uspec not in old_concretized_user_specs: - root_specs.append(uspec) - args.append((i, str(uspec), tests)) - i += 1 - - # Ensure we don't try to bootstrap clingo in parallel - with spack.bootstrap.ensure_bootstrap_configuration(): - spack.bootstrap.ensure_clingo_importable_or_raise() - - # Ensure all the indexes have been built or updated, since - # otherwise the processes in the pool may timeout on waiting - # for a write lock. We do this indirectly by retrieving the - # provider index, which should in turn trigger the update of - # all the indexes if there's any need for that. - _ = spack.repo.PATH.provider_index - - # Ensure we have compilers in compilers.yaml to avoid that - # processes try to write the config file in parallel - _ = spack.compilers.all_compilers_config(spack.config.CONFIG) - - # Early return if there is nothing to do - if len(args) == 0: - return [] - - # Solve the environment in parallel on Linux - start = time.time() - num_procs = min(len(args), spack.config.determine_number_of_jobs(parallel=True)) - - # TODO: support parallel concretization on macOS and Windows - msg = "Starting concretization" - if sys.platform not in ("darwin", "win32") and num_procs > 1: - msg += f" pool with {num_procs} processes" - tty.msg(msg) - - batch = [] - for j, (i, concrete, duration) in enumerate( - spack.util.parallel.imap_unordered( - _concretize_task, - args, - processes=num_procs, - debug=tty.is_debug(), - maxtaskperchild=1, - ) - ): - batch.append((i, concrete)) - percentage = (j + 1) / len(args) * 100 - tty.verbose( - f"{duration:6.1f}s [{percentage:3.0f}%] {concrete.cformat('{hash:7}')} " - f"{root_specs[i].colored_str}" - ) - sys.stdout.flush() + to_concretize = [ + (root, None) for root in self.user_specs if root not in old_concretized_user_specs + ] + concretized_specs = spack.concretize.concretize_separately(*to_concretize, tests=tests) - # Add specs in original order - batch.sort(key=lambda x: x[0]) - by_hash = {} # for attaching information on test dependencies - for root, (_, concrete) in zip(root_specs, batch): - self._add_concrete_spec(root, concrete) + by_hash = {} + for abstract, concrete in concretized_specs: + self._add_concrete_spec(abstract, concrete) by_hash[concrete.dag_hash()] = concrete - finish = time.time() - tty.msg(f"Environment concretized in {finish - start:.2f} seconds") - # Unify the specs objects, so we get correct references to all parents self._read_lockfile_dict(self._to_lockfile_dict()) @@ -1726,11 +1653,7 @@ def _concretize_separately(self, tests=False): test_dependency.copy(), depflag=dt.TEST, virtuals=current_edge.virtuals ) - results = [ - (abstract, self.specs_by_hash[h]) - for abstract, h in zip(self.concretized_user_specs, self.concretized_order) - ] - return results + return concretized_specs @property def default_view(self): @@ -2537,14 +2460,6 @@ def display_specs(specs): print(tree_string) -def _concretize_task(packed_arguments) -> Tuple[int, Spec, float]: - index, spec_str, tests = packed_arguments - with tty.SuppressOutput(msg_enabled=False): - start = time.time() - spec = Spec(spec_str).concretized(tests=tests) - return index, spec, time.time() - start - - def make_repo_path(root): """Make a RepoPath from the repo subdirectories in an environment.""" path = spack.repo.RepoPath(cache=spack.caches.MISC_CACHE) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 97fbd03e8f1e8c..af2b8a70c3153f 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -515,6 +515,8 @@ def _compute_specs_from_answer_set(self): best = min(self.answers) opt, _, answer = best for input_spec in self.abstract_specs: + # The specs must be unified to get here, so it is safe to associate any satisfying spec + # with the input. Multiple inputs may be matched to the same concrete spec node = SpecBuilder.make_node(pkg=input_spec.name) if input_spec.virtual: providers = [ diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 13721b2a0d52e6..445f376b1b41e4 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -906,7 +906,7 @@ def test_cdash_configure_warning(tmpdir, mock_fetch, install_mockery, capfd): specfile = "./spec.json" with open(specfile, "w") as f: f.write(spec.to_json()) - + print(spec.to_json()) install("--log-file=cdash_reports", "--log-format=cdash", specfile) # Verify Configure.xml exists with expected contents. report_dir = tmpdir.join("cdash_reports") diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 553d8fd6426791..4d9940ea9bb815 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -14,6 +14,7 @@ import llnl.util.lang import spack.binary_distribution +import spack.cmd import spack.compiler import spack.compilers import spack.concretize @@ -3106,3 +3107,20 @@ def test_reuse_prefers_standard_over_git_versions( test_spec = spack.spec.Spec("git-ref-package@2").concretized() assert git_spec.dag_hash() != test_spec.dag_hash() assert standard_spec.dag_hash() == test_spec.dag_hash() + + +@pytest.mark.parametrize("unify", [True, "when_possible", False]) +def test_spec_unification(unify, mutable_config, mock_packages): + spack.config.set("concretizer:unify", unify) + a = "pkg-a" + a_restricted = "pkg-a^pkg-b foo=baz" + b = "pkg-b foo=none" + + unrestricted = spack.cmd.parse_specs([a, b], concretize=True) + a_concrete_unrestricted = [s for s in unrestricted if s.name == "pkg-a"][0] + b_concrete_unrestricted = [s for s in unrestricted if s.name == "pkg-b"][0] + assert (a_concrete_unrestricted["pkg-b"] == b_concrete_unrestricted) == (unify is not False) + + maybe_fails = pytest.raises if unify is True else llnl.util.lang.nullcontext + with maybe_fails(spack.solver.asp.UnsatisfiableSpecError): + _ = spack.cmd.parse_specs([a_restricted, b], concretize=True) From 19e3ab83cfee8fdbd2c19e23c1b93ef83e92fbc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 23:55:18 +0000 Subject: [PATCH 267/615] build(deps): bump python-levenshtein in /lib/spack/docs (#47372) Bumps [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) from 0.26.0 to 0.26.1. - [Release notes](https://github.com/rapidfuzz/python-Levenshtein/releases) - [Changelog](https://github.com/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md) - [Commits](https://github.com/rapidfuzz/python-Levenshtein/compare/v0.26.0...v0.26.1) --- updated-dependencies: - dependency-name: python-levenshtein dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index 530bb17522e00b..879fe33874579b 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -2,7 +2,7 @@ sphinx==8.1.3 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 sphinx-rtd-theme==3.0.1 -python-levenshtein==0.26.0 +python-levenshtein==0.26.1 docutils==0.21.2 pygments==2.18.0 urllib3==2.2.3 From 133895e7852a03ffeac473d16949c92df90e65ee Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 2 Nov 2024 09:03:42 +0100 Subject: [PATCH 268/615] Rework the schema for reusing environments (#47364) Currently, the schema reads: from: - type: environment: path_or_name but this can't be extended easily to other types, e.g. to buildcaches, without duplicating the extension keys. Use instead: from: - type: environment path: path_or_name --- lib/spack/spack/schema/concretizer.py | 25 ++++++++----------------- lib/spack/spack/solver/asp.py | 4 ++-- lib/spack/spack/test/cmd/env.py | 6 +++--- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index b52b305ed9a12d..86e58de2580fe6 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -32,24 +32,15 @@ "type": "object", "properties": { "type": { - "oneOf": [ - { - "type": "string", - "enum": [ - "local", - "buildcache", - "environment", - "external", - ], - }, - { - "type": "object", - "properties": { - "environment": {"type": "string"} - }, - }, - ] + "type": "string", + "enum": [ + "local", + "buildcache", + "external", + "environment", + ], }, + "path": {"type": "string"}, "include": LIST_OF_SPECS, "exclude": LIST_OF_SPECS, }, diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index af2b8a70c3153f..ba50ebccd01736 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -4103,8 +4103,8 @@ def __init__(self, configuration: spack.config.Configuration) -> None: for source in reuse_yaml.get("from", default_sources): include = source.get("include", default_include) exclude = source.get("exclude", default_exclude) - if isinstance(source["type"], dict): - env_dir = ev.as_env_dir(source["type"].get("environment")) + if source["type"] == "environment" and "path" in source: + env_dir = ev.as_env_dir(source["path"]) active_env = ev.active_environment() if active_env and env_dir in active_env.included_concrete_envs: # If environment is included as a concrete environment, use the local copy diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index f82cee10d723c3..87941de137ec4a 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -1941,7 +1941,7 @@ def configure_reuse(reuse_mode, combined_env) -> Optional[ev.Environment]: elif reuse_mode == "from_environment": _config = {"concretizer": {"reuse": {"from": [{"type": "environment"}]}}} elif reuse_mode == "from_environment_test1": - _config = {"concretizer": {"reuse": {"from": [{"type": {"environment": "test1"}}]}}} + _config = {"concretizer": {"reuse": {"from": [{"type": "environment", "path": "test1"}]}}} elif reuse_mode == "from_environment_external_test": # Create a new environment called external_test that enables the "debug" # The default is "~debug" @@ -1957,12 +1957,12 @@ def configure_reuse(reuse_mode, combined_env) -> Optional[ev.Environment]: # mpich@3.0 but with include concrete the mpich@1.0 +debug version from the # "external_test" environment will be used. _config = { - "concretizer": {"reuse": {"from": [{"type": {"environment": "external_test"}}]}}, + "concretizer": {"reuse": {"from": [{"type": "environment", "path": "external_test"}]}}, "packages": {"mpich": {"require": ["+debug"]}}, } elif reuse_mode == "from_environment_raise": _config = { - "concretizer": {"reuse": {"from": [{"type": {"environment": "not-a-real-env"}}]}} + "concretizer": {"reuse": {"from": [{"type": "environment", "path": "not-a-real-env"}]}} } # Disable unification in these tests to avoid confusing reuse due to unification using an # include concrete spec vs reuse due to the reuse configuration From b8461f3d2dc72007c63fb24af5694cee8b5791bc Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Sat, 2 Nov 2024 01:36:05 -0700 Subject: [PATCH 269/615] Remove ignored config:install_missing_compilers from unit tests (#47357) --- lib/spack/spack/test/installer.py | 34 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index 8df6a1a6eaa00d..38bc1609821bc6 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -644,13 +644,12 @@ def test_prepare_for_install_on_installed(install_mockery, monkeypatch): def test_installer_init_requests(install_mockery): """Test of installer initial requests.""" spec_name = "dependent-install" - with spack.config.override("config:install_missing_compilers", True): - installer = create_installer([spec_name], {}) + installer = create_installer([spec_name], {}) - # There is only one explicit request in this case - assert len(installer.build_requests) == 1 - request = installer.build_requests[0] - assert request.pkg.name == spec_name + # There is only one explicit request in this case + assert len(installer.build_requests) == 1 + request = installer.build_requests[0] + assert request.pkg.name == spec_name @pytest.mark.parametrize("transitive", [True, False]) @@ -743,21 +742,20 @@ def _missing(*args, **kwargs): # Set the configuration to ensure _requeue_with_build_spec_tasks actually # does something. - with spack.config.override("config:install_missing_compilers", True): - installer = create_installer(["depb"], {}) - installer._init_queue() - request = installer.build_requests[0] - task = create_build_task(request.pkg) + installer = create_installer(["depb"], {}) + installer._init_queue() + request = installer.build_requests[0] + task = create_build_task(request.pkg) - # Drop one of the specs so its task is missing before _install_task - popped_task = installer._pop_task() - assert inst.package_id(popped_task.pkg.spec) not in installer.build_tasks + # Drop one of the specs so its task is missing before _install_task + popped_task = installer._pop_task() + assert inst.package_id(popped_task.pkg.spec) not in installer.build_tasks - monkeypatch.setattr(task, "execute", _missing) - installer._install_task(task, None) + monkeypatch.setattr(task, "execute", _missing) + installer._install_task(task, None) - # Ensure the dropped task/spec was added back by _install_task - assert inst.package_id(popped_task.pkg.spec) in installer.build_tasks + # Ensure the dropped task/spec was added back by _install_task + assert inst.package_id(popped_task.pkg.spec) in installer.build_tasks def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys): From 55918c31d2c1d601be5ad671471a62885c065f09 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Sat, 2 Nov 2024 11:13:37 +0100 Subject: [PATCH 270/615] root: require +opengl when +aqua is on (#47349) According to https://github.com/root-project/root/issues/7160, if `-Dcocoa=ON` build must also be configured with `-Dopengl=ON`, since otherwise the build encounters missing includes. This is/was a silent failure in ROOT CMake, but I believe has been made an explicit failure some time this year. --- var/spack/repos/builtin/packages/root/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 31990569102be7..106bde97757840 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -429,6 +429,8 @@ class Root(CMakePackage): # Incompatible variants if sys.platform == "darwin": conflicts("+opengl", when="~x ~aqua", msg="root+opengl requires X or Aqua") + # https://github.com/root-project/root/issues/7160 + conflicts("+aqua", when="~opengl", msg="+aqua requires OpenGL to be enabled") else: conflicts("+opengl", when="~x", msg="root+opengl requires X") conflicts("+math", when="~gsl", msg="root+math requires GSL") From 632c0095691ffe43f7def4ebe2fddfdddf037945 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Sat, 2 Nov 2024 16:18:13 -0700 Subject: [PATCH 271/615] e4s ci stacks: reduce package prefs (#47381) --- .../stacks/e4s-neoverse-v2/spack.yaml | 15 ------------- .../stacks/e4s-neoverse_v1/spack.yaml | 15 ------------- .../stacks/e4s-power/spack.yaml | 6 ------ .../cloud_pipelines/stacks/e4s/spack.yaml | 21 ++++--------------- 4 files changed, 4 insertions(+), 53 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml index 5d5ca5fbd65bed..1eb61ec5e93d23 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml @@ -14,14 +14,10 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -29,25 +25,14 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: require: '~wrapperrpath ~hwloc %gcc target=neoverse_v2' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4 %gcc target=neoverse_v2" vtk-m: require: "+examples %gcc target=neoverse_v2" - cuda: - version: [11.8.0] paraview: require: "+examples %gcc target=neoverse_v2" diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index 948a57f8b9a007..24a488fbe921bf 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -14,14 +14,10 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -29,27 +25,16 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: require: '~wrapperrpath ~hwloc %gcc target=neoverse_v1' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4 %gcc target=neoverse_v1" vtk-m: require: "+examples %gcc target=neoverse_v1" paraview: require: "+examples %gcc target=neoverse_v1" - cuda: - version: [11.8.0] specs: # CPU diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index 0453392c1b04f1..a770b0a299a13d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -15,14 +15,10 @@ spack: variants: +mpi cuda_arch=70 binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -42,8 +38,6 @@ spack: require: "~tcmalloc %gcc@9.4.0 target=ppc64le" tbb: require: intel-tbb - libffi: - require: "@3.4.4 %gcc@9.4.0 target=ppc64le" vtk-m: require: "+examples %gcc@9.4.0 target=ppc64le" cuda: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index dda9aefb9554e4..0b81e53d568d1d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -14,8 +14,6 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: @@ -29,30 +27,19 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: - require: '~wrapperrpath ~hwloc' + require: '~wrapperrpath ~hwloc target=x86_64_v3' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4" vtk-m: - require: "+examples" + require: "+examples target=x86_64_v3" visit: - require: "~gui" - cuda: - version: [11.8.0] + require: "~gui target=x86_64_v3" paraview: # Don't build GUI support or GLX rendering for HPC/container deployments - require: "@5.11 +examples ~qt ^[virtuals=gl] osmesa" + require: "@5.11 +examples ~qt ^[virtuals=gl] osmesa target=x86_64_v3" specs: # CPU From ff9568fa2f589d8182d65ed9c50116edc9c2b3a4 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 3 Nov 2024 16:32:35 -0600 Subject: [PATCH 272/615] sherpa: add v3.0.1 (#47388) * sherpa: add v3.0.1 * sherpa: no depends_on py-setuptools --- var/spack/repos/builtin/packages/sherpa/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index f8d0ffa7933196..7d0010a7c2284a 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -22,6 +22,7 @@ class Sherpa(CMakePackage, AutotoolsPackage): license("GPL-3.0-only") + version("3.0.1", sha256="ff5f43e79a9a10919391242307a771eca0c57b0462c11bfb99ee4a0fe8c48c58") version("3.0.0", sha256="e460d8798b323c4ef663293a2c918b1463e9641b35703a54d70d25c852c67d36") version("2.2.15", sha256="0300fd719bf6a089b7dc5441f720e669ac1cb030045d87034a4733bee98e7bbc") version("2.2.14", sha256="f17d88d7f3bc4234a9db3872e8a3c1f3ef99e1e2dc881ada5ddf848715dc82da") From 2664303d7acf831f84566e7275d8d4a233ab5a46 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 3 Nov 2024 16:48:34 -0600 Subject: [PATCH 273/615] pythia8: add v8.312 (#47389) * pythia8: add v8.312 * pythia8: update homepage url --- var/spack/repos/builtin/packages/pythia8/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pythia8/package.py b/var/spack/repos/builtin/packages/pythia8/package.py index b483dd036258ae..7bf7494b7db79a 100644 --- a/var/spack/repos/builtin/packages/pythia8/package.py +++ b/var/spack/repos/builtin/packages/pythia8/package.py @@ -12,7 +12,7 @@ class Pythia8(AutotoolsPackage): the evolution from a few-body hard process to a complex multiparticle final state.""" - homepage = "http://home.thep.lu.se/Pythia/" + homepage = "https://pythia.org/" url = "https://pythia.org/download/pythia83/pythia8306.tgz" list_url = "https://pythia.org/releases/" @@ -22,6 +22,7 @@ class Pythia8(AutotoolsPackage): license("GPL-2.0-only") + version("8.312", sha256="bad98e2967b687046c4568c9091d630a0c31b628745c021a994aba4d1d50f8ea") version("8.311", sha256="2782d5e429c1543c67375afe547fd4c4ca0720309deb008f7db78626dc7d1464") version("8.310", sha256="90c811abe7a3d2ffdbf9b4aeab51cf6e0a5a8befb4e3efa806f3d5b9c311e227") version("8.309", sha256="5bdafd9f2c4a1c47fd8a4e82fb9f0d8fcfba4de1003b8e14be4e0347436d6c33") From 395c911689d7a3ee426660f3fab334ccee04da1a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 4 Nov 2024 07:35:16 +0100 Subject: [PATCH 274/615] Specs: propagated variants affect `==` equality (#47376) This PR changes the semantic of == for spec so that: hdf5++mpi == hdf5+mpi won't hold true anymore. It also changes the constrain semantic, so that a non-propagating variant always override a propagating variant. This means: (hdf5++mpi).constrain(hdf5+mpi) -> hdf5+mpi Before we had a very weird semantic, that was supposed to be tested by unit-tests: (libelf++debug).constrain(libelf+debug+foo) -> libelf++debug++foo This semantic has been dropped, as it was never really tested due to the == bug. --- lib/spack/spack/spec.py | 6 ++-- lib/spack/spack/test/spec_semantics.py | 46 +++++++++++++++++++------- lib/spack/spack/variant.py | 5 ++- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 0ec0a3009d6987..ba3a0f9c379080 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -877,8 +877,9 @@ def constrain(self, other): # Next, if any flags in other propagate, we force them to propagate in our case shared = list(sorted(set(other[flag_type]) - extra_other)) for x, y in _shared_subset_pair_iterate(shared, sorted(self[flag_type])): - if x.propagate: - y.propagate = True + if y.propagate is True and x.propagate is False: + changed = True + y.propagate = False # TODO: what happens if flag groups with a partial (but not complete) # intersection specify different behaviors for flag propagation? @@ -933,6 +934,7 @@ def _cmp_iter(self): def flags(): for flag in v: yield flag + yield flag.propagate yield flags diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index a821c53f2fb934..1b12a8a80315c3 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -231,7 +231,7 @@ class TestSpecSemantics: ("mpich+foo", "mpich foo=True", "mpich+foo"), ("mpich++foo", "mpich foo=True", "mpich+foo"), ("mpich foo=true", "mpich+foo", "mpich+foo"), - ("mpich foo==true", "mpich++foo", "mpich+foo"), + ("mpich foo==true", "mpich++foo", "mpich++foo"), ("mpich~foo", "mpich foo=FALSE", "mpich~foo"), ("mpich~~foo", "mpich foo=FALSE", "mpich~foo"), ("mpich foo=False", "mpich~foo", "mpich~foo"), @@ -271,17 +271,17 @@ class TestSpecSemantics: ("mpich+foo", "mpich", "mpich+foo"), ("mpich~foo", "mpich", "mpich~foo"), ("mpich foo=1", "mpich", "mpich foo=1"), - ("mpich", "mpich++foo", "mpich+foo"), + ("mpich", "mpich++foo", "mpich++foo"), ("libelf+debug", "libelf+foo", "libelf+debug+foo"), ("libelf+debug", "libelf+debug+foo", "libelf+debug+foo"), ("libelf debug=2", "libelf foo=1", "libelf debug=2 foo=1"), ("libelf debug=2", "libelf debug=2 foo=1", "libelf debug=2 foo=1"), ("libelf+debug", "libelf~foo", "libelf+debug~foo"), ("libelf+debug", "libelf+debug~foo", "libelf+debug~foo"), - ("libelf++debug", "libelf+debug+foo", "libelf++debug++foo"), - ("libelf debug==2", "libelf foo=1", "libelf debug==2 foo==1"), - ("libelf debug==2", "libelf debug=2 foo=1", "libelf debug==2 foo==1"), - ("libelf++debug", "libelf++debug~foo", "libelf++debug~~foo"), + ("libelf++debug", "libelf+debug+foo", "libelf+debug+foo"), + ("libelf debug==2", "libelf foo=1", "libelf debug==2 foo=1"), + ("libelf debug==2", "libelf debug=2 foo=1", "libelf debug=2 foo=1"), + ("libelf++debug", "libelf++debug~foo", "libelf++debug~foo"), ("libelf foo=bar,baz", "libelf foo=*", "libelf foo=bar,baz"), ("libelf foo=*", "libelf foo=bar,baz", "libelf foo=bar,baz"), ( @@ -367,19 +367,24 @@ def test_abstract_specs_can_constrain_each_other(self, lhs, rhs, expected): 'mpich cflags="-O3 -g"', 'mpich cflags=="-O3"', 'mpich cflags="-O3 -g"', + 'mpich cflags="-O3 -g"', + [], + [], + ), + ( + 'mpich cflags=="-O3 -g"', + 'mpich cflags=="-O3"', + 'mpich cflags=="-O3 -g"', 'mpich cflags=="-O3 -g"', - [("cflags", "-O3")], - [("cflags", "-O3")], + [("cflags", "-O3"), ("cflags", "-g")], + [("cflags", "-O3"), ("cflags", "-g")], ), ], ) def test_constrain_compiler_flags( self, lhs, rhs, expected_lhs, expected_rhs, propagated_lhs, propagated_rhs ): - """Constraining is asymmetric for compiler flags. Also note that - Spec equality does not account for flag propagation, so the checks - here are manual. - """ + """Constraining is asymmetric for compiler flags.""" lhs, rhs, expected_lhs, expected_rhs = ( Spec(lhs), Spec(rhs), @@ -1904,3 +1909,20 @@ def test_old_format_strings_trigger_error(default_mock_concretization): s = Spec("pkg-a").concretized() with pytest.raises(SpecFormatStringError): s.format("${PACKAGE}-${VERSION}-${HASH}") + + +@pytest.mark.regression("47362") +@pytest.mark.parametrize( + "lhs,rhs", + [ + ("hdf5 +mpi", "hdf5++mpi"), + ("hdf5 cflags==-g", "hdf5 cflags=-g"), + ("hdf5 +mpi ++shared", "hdf5+mpi +shared"), + ("hdf5 +mpi cflags==-g", "hdf5++mpi cflag=-g"), + ], +) +def test_equality_discriminate_on_propagation(lhs, rhs): + """Tests that == can discriminate abstract specs based on their 'propagation' status""" + s, t = Spec(lhs), Spec(rhs) + assert s != t + assert len({s, t}) == 2 diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index a15c760a0a2347..3cc5ba2e0ba25d 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -251,7 +251,7 @@ def implicit_variant_conversion(method): def convert(self, other): # We don't care if types are different as long as I can convert other to type(self) try: - other = type(self)(other.name, other._original_value) + other = type(self)(other.name, other._original_value, propagate=other.propagate) except (error.SpecError, ValueError): return False return method(self, other) @@ -379,6 +379,7 @@ def _value_setter(self, value: ValueType) -> None: def _cmp_iter(self) -> Iterable: yield self.name yield from (str(v) for v in self.value_as_tuple) + yield self.propagate def copy(self) -> "AbstractVariant": """Returns an instance of a variant equivalent to self @@ -453,6 +454,7 @@ def constrain(self, other: "AbstractVariant") -> bool: values.remove("*") self._value_setter(",".join(str(v) for v in values)) + self.propagate = self.propagate and other.propagate return old_value != self.value def __contains__(self, item: Union[str, bool]) -> bool: @@ -557,6 +559,7 @@ def constrain(self, other: "AbstractVariant") -> bool: if self.value != other.value: raise UnsatisfiableVariantSpecError(other.value, self.value) + self.propagate = self.propagate and other.propagate return False def __contains__(self, item: ValueType) -> bool: From 0acd6ae7b2a4f265a12c1fffb62ecc52519a9211 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 09:47:47 +0100 Subject: [PATCH 275/615] lua-luaposix: add missing libxcrypt dependency (#47395) --- var/spack/repos/builtin/packages/lua-luaposix/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lua-luaposix/package.py b/var/spack/repos/builtin/packages/lua-luaposix/package.py index 04bc97d6e490b1..579b172ce33523 100644 --- a/var/spack/repos/builtin/packages/lua-luaposix/package.py +++ b/var/spack/repos/builtin/packages/lua-luaposix/package.py @@ -23,6 +23,7 @@ class LuaLuaposix(LuaPackage): version("33.4.0", sha256="e66262f5b7fe1c32c65f17a5ef5ffb31c4d1877019b4870a5d373e2ab6526a21") version("33.2.1", sha256="4fb34dfea67f4cf3194cdecc6614c9aea67edc3c4093d34137669ea869c358e1") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("libxcrypt", when="platform=linux") depends_on("lua-bit32", when="^lua-lang@5.1") From 87329639f29182d35fb8a45b1aa5e1366cedbf47 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 02:50:41 -0600 Subject: [PATCH 276/615] elasticsearch, kibana, logstash: add v8.15.2 (#46873) --- .../builtin/packages/elasticsearch/package.py | 17 ++++++++++++---- .../repos/builtin/packages/kibana/package.py | 7 ++++--- .../builtin/packages/logstash/package.py | 20 +++++++++++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/elasticsearch/package.py b/var/spack/repos/builtin/packages/elasticsearch/package.py index b17ec0668613b4..200a8360539541 100644 --- a/var/spack/repos/builtin/packages/elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/elasticsearch/package.py @@ -13,14 +13,23 @@ class Elasticsearch(Package): """ homepage = "https://www.elastic.co/" - url = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz" + url = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-x86_64.tar.gz" - version("6.4.0", sha256="e9786efb5cecd12adee2807c7640ba9a1ab3b484d2e87497bb8d0b6df0e24f01") - version("6.3.0", sha256="0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3") - version("6.2.4", sha256="91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e") + version("8.15.2", sha256="0b6905ede457be9d1d73d0b6be1c3a7c7c6220829846b532f2604ad30ba7308f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-3831 + version("6.4.0", sha256="e9786efb5cecd12adee2807c7640ba9a1ab3b484d2e87497bb8d0b6df0e24f01") + version("6.3.0", sha256="0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3") + version("6.2.4", sha256="91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e") depends_on("java", type="run") + def url_for_version(self, version): + if self.spec.satisfies("@:6"): + return f"https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{version}.tar.gz" + else: + return f"https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{version}-linux-x86_64.tar.gz" + def install(self, spec, prefix): dirs = ["bin", "config", "lib", "modules", "plugins"] diff --git a/var/spack/repos/builtin/packages/kibana/package.py b/var/spack/repos/builtin/packages/kibana/package.py index bbf8146ec2fb01..0245929e6b2cbf 100644 --- a/var/spack/repos/builtin/packages/kibana/package.py +++ b/var/spack/repos/builtin/packages/kibana/package.py @@ -13,9 +13,10 @@ class Kibana(Package): homepage = "https://www.elastic.co/products/kibana" url = "https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz" - version("6.4.0", sha256="df2056105a08c206a1adf9caed09a152a53429a0f1efc1ba3ccd616092d78aee") - - depends_on("cxx", type="build") # generated + version("8.15.2", sha256="b1f8082a4200867078170e92ad299e293ee514f5fdbb96b7a0d1de17a880d1eb") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-7609 + version("6.4.0", sha256="df2056105a08c206a1adf9caed09a152a53429a0f1efc1ba3ccd616092d78aee") depends_on("java", type="run") diff --git a/var/spack/repos/builtin/packages/logstash/package.py b/var/spack/repos/builtin/packages/logstash/package.py index 5f6318faa03bef..4ad690c764d89f 100644 --- a/var/spack/repos/builtin/packages/logstash/package.py +++ b/var/spack/repos/builtin/packages/logstash/package.py @@ -15,12 +15,24 @@ class Logstash(Package): """ homepage = "https://artifacts.elastic.co" - url = "https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz" + url = "https://artifacts.elastic.co/downloads/logstash/logstash-8.15.2-linux-x86_64.tar.gz" - version("6.6.0", sha256="5a9a8b9942631e9d4c3dfb8d47075276e8c2cff343841145550cc0c1cfe7bba7") + version("8.15.2", sha256="fc75c8cad1016b07f7aeeeeb7ea23f4195ab1beee2ced282f11ff6d0e84f7e51") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-7612 + version("6.6.0", sha256="5a9a8b9942631e9d4c3dfb8d47075276e8c2cff343841145550cc0c1cfe7bba7") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("java@11:") + + def url_for_version(self, version): + if self.spec.satisfies("@:6"): + return f"https://artifacts.elastic.co/downloads/logstash/logstash-{version}.tar.gz" + else: + return f"https://artifacts.elastic.co/downloads/logstash/logstash-{version}-linux-x86_64.tar.gz" def install(self, spec, prefix): install_tree(".", prefix) + + def setup_run_environment(self, env): + # do not use the bundled jdk + env.set("LS_JAVA_HOME", self.spec["java"].home) From 86ebcabd46210f2db297e05645843dfbd5405ea0 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 02:55:33 -0600 Subject: [PATCH 277/615] cups: add v2.4.11 (#47390) --- var/spack/repos/builtin/packages/cups/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cups/package.py b/var/spack/repos/builtin/packages/cups/package.py index b2c5b84ecfba5d..34c5fdd80bdd5a 100644 --- a/var/spack/repos/builtin/packages/cups/package.py +++ b/var/spack/repos/builtin/packages/cups/package.py @@ -20,9 +20,12 @@ class Cups(AutotoolsPackage): license("Apache-2.0", checked_by="wdconinc") + version("2.4.11", sha256="9a88fe1da3a29a917c3fc67ce6eb3178399d68e1a548c6d86c70d9b13651fd71") version("2.4.10", sha256="d75757c2bc0f7a28b02ee4d52ca9e4b1aa1ba2affe16b985854f5336940e5ad7") - version("2.3.3", sha256="261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee") - version("2.2.3", sha256="66701fe15838f2c892052c913bde1ba106bbee2e0a953c955a62ecacce76885f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-4504 + version("2.3.3", sha256="261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee") + version("2.2.3", sha256="66701fe15838f2c892052c913bde1ba106bbee2e0a953c955a62ecacce76885f") depends_on("c", type="build") depends_on("cxx", type="build") From 8296aaf175bc9a6401d9eb9546c8c4e0471d82c2 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 02:57:40 -0600 Subject: [PATCH 278/615] minizip: add v1.3.1 (#47379) --- .../repos/builtin/packages/minizip/package.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/minizip/package.py b/var/spack/repos/builtin/packages/minizip/package.py index 55aa8c2cea1925..af3ac94d21cfe2 100644 --- a/var/spack/repos/builtin/packages/minizip/package.py +++ b/var/spack/repos/builtin/packages/minizip/package.py @@ -14,10 +14,14 @@ class Minizip(AutotoolsPackage): license("Zlib") - version("1.2.11", sha256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1") + version("1.3.1", sha256="9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-37434 + version( + "1.2.11", sha256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1" + ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") configure_directory = "contrib/minizip" @@ -28,8 +32,9 @@ class Minizip(AutotoolsPackage): depends_on("zlib-api") # error: implicit declaration of function 'mkdir' is invalid in C99 - patch("implicit.patch", when="%apple-clang@12:") - patch("implicit.patch", when="%gcc@7.3.0:") + with when("@:1.2.11"): + patch("implicit.patch", when="%apple-clang@12:") + patch("implicit.patch", when="%gcc@7.3.0:") # statically link to libz.a # https://github.com/Homebrew/homebrew-core/blob/master/Formula/minizip.rb From d63f06e4b7e991703064cbd02748f16e3c7289f3 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Mon, 4 Nov 2024 03:58:40 -0500 Subject: [PATCH 279/615] pumi: add version 2.2.9 (#47380) --- var/spack/repos/builtin/packages/pumi/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index a2ce76b27ce621..76bb0a7618037b 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -30,6 +30,9 @@ class Pumi(CMakePackage): # scorec/core develop branch and we prefer not to expose spack users # to the added instability. version("master", submodules=True, branch="master") + version( + "2.2.9", submodules=True, commit="f87525cae7597322edfb2ccf1c7d4437402d9481" + ) # tag 2.2.9 version( "2.2.8", submodules=True, commit="736bb87ccd8db51fc499a1b91e53717a88841b1f" ) # tag 2.2.8 From f05033b0d2fdec1a3d91fb73e779862d65e6ac55 Mon Sep 17 00:00:00 2001 From: Christophe Prud'homme Date: Mon, 4 Nov 2024 10:00:26 +0100 Subject: [PATCH 280/615] cpr: add +pic and +shared variants (#47281) --- var/spack/repos/builtin/packages/cpr/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/cpr/package.py b/var/spack/repos/builtin/packages/cpr/package.py index 07a38e0015d498..0f6daf03e42f61 100644 --- a/var/spack/repos/builtin/packages/cpr/package.py +++ b/var/spack/repos/builtin/packages/cpr/package.py @@ -20,6 +20,9 @@ class Cpr(CMakePackage): version("1.10.4", sha256="88462d059cd3df22c4d39ae04483ed50dfd2c808b3effddb65ac3b9aa60b542d") version("1.9.2", sha256="3bfbffb22c51f322780d10d3ca8f79424190d7ac4b5ad6ad896de08dbd06bf31") + variant("pic", default=True, description="Position independent code") + variant("shared", default=True, description="Build shared library") + depends_on("cxx", type="build") depends_on("curl") @@ -32,4 +35,6 @@ def cmake_args(self): self.define("CPR_USE_SYSTEM_GTEST", True), self.define(f"CPR{_force}_USE_SYSTEM_CURL", True), self.define("CPR_ENABLE_SSL", True), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), ] From 417c48b07a9d3de5af55c7f4ce5c21588199de3e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 03:01:36 -0600 Subject: [PATCH 281/615] py-flask-cors: add v4.0.0 (#47374) --- var/spack/repos/builtin/packages/py-flask-cors/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-flask-cors/package.py b/var/spack/repos/builtin/packages/py-flask-cors/package.py index 6eac377c7b8dbf..4f708db2764b0b 100644 --- a/var/spack/repos/builtin/packages/py-flask-cors/package.py +++ b/var/spack/repos/builtin/packages/py-flask-cors/package.py @@ -16,6 +16,7 @@ class PyFlaskCors(PythonPackage): license("MIT") + version("4.0.0", sha256="f268522fcb2f73e2ecdde1ef45e2fd5c71cc48fe03cffb4b441c6d1b40684eb0") version("3.0.10", sha256="b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de") depends_on("py-setuptools", type="build") From 2fc056e27cb6e362b56946907c48feda61766319 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 03:02:15 -0600 Subject: [PATCH 282/615] py-flask-compress: add v1.14 (#47373) --- var/spack/repos/builtin/packages/py-flask-compress/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-flask-compress/package.py b/var/spack/repos/builtin/packages/py-flask-compress/package.py index 2b037a3da45857..fa5395f9a36ba4 100644 --- a/var/spack/repos/builtin/packages/py-flask-compress/package.py +++ b/var/spack/repos/builtin/packages/py-flask-compress/package.py @@ -15,7 +15,11 @@ class PyFlaskCompress(PythonPackage): license("MIT") + version("1.14", sha256="e46528f37b91857012be38e24e65db1a248662c3dc32ee7808b5986bf1d123ee") version("1.4.0", sha256="468693f4ddd11ac6a41bca4eb5f94b071b763256d54136f77957cfee635badb3") depends_on("py-setuptools", type="build") + depends_on("py-setuptools@0.42:", type="build", when="@1.10:") + depends_on("py-setuptools-scm@3.4: +toml", type="build", when="@1.10:") depends_on("py-flask@0.9:", type=("build", "run")) + depends_on("py-brotli", type="run", when="@1.5:") From fcdaccfeb694653632f2a0f783e37f97f24fb61e Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Mon, 4 Nov 2024 01:06:49 -0800 Subject: [PATCH 283/615] amrex: add v24.11 (#47371) --- var/spack/repos/builtin/packages/amrex/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 724b5130c19169..07c4d2ae66c8f5 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -26,6 +26,7 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("develop", branch="development") + version("24.11", sha256="31cc37b39f15e02252875815f6066046fc56a479bf459362b9889b0d6a202df6") version("24.10", sha256="a2d15e417bd7c41963749338e884d939c80c5f2fcae3279fe3f1b463e3e4208a") version("24.09", sha256="a1435d16532d04a1facce9a9ae35d68a57f7cd21a5f22a6590bde3c265ea1449") version("24.08", sha256="e09623e715887a19a1f86ed6fdb8335022fd6c03f19372d8f13b55cdeeadf5de") From 4c247e206c31490efc14127e1fa237d124e57f7b Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Mon, 4 Nov 2024 04:18:24 -0500 Subject: [PATCH 284/615] llvm: add v19.1.3 (#47325) --- var/spack/repos/builtin/packages/llvm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 98a27080b3f9af..208d73f0940533 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -56,6 +56,7 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): license("Apache-2.0") version("main", branch="main") + version("19.1.3", sha256="e5106e2bef341b3f5e41340e4b6c6a58259f4021ad801acf14e88f1a84567b05") version("19.1.2", sha256="622cb6c5e95a3bb7e9876c4696a65671f235bd836cfd0c096b272f6c2ada41e7") version("19.1.1", sha256="115dfd98a353d05bffdab3f80db22f159da48aca0124e8c416f437adcd54b77f") version("19.1.0", sha256="0a08341036ca99a106786f50f9c5cb3fbe458b3b74cab6089fd368d0edb2edfe") From a93bd6cee49a77ba7fb45d41043d6b8ca6fe7d2e Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Mon, 4 Nov 2024 03:21:17 -0600 Subject: [PATCH 285/615] hdf5: add develop-2.0 (#47299) Update HDF5 version for develop branch to develop-2.0 to match the new version in the develop branch. Remove develop-1.16 as it has been decided to make next release HDF5 2.0.0. --- var/spack/repos/builtin/packages/hdf5/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 01a9992f3c2934..12e99d9bf61dbd 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -38,8 +38,7 @@ class Hdf5(CMakePackage): # The 'develop' version is renamed so that we could uninstall (or patch) it # without affecting other develop version. - version("develop-1.17", branch="develop") - version("develop-1.16", branch="hdf5_1_16") + version("develop-2.0", branch="develop") version("develop-1.14", branch="hdf5_1_14") version("develop-1.12", branch="hdf5_1_12") version("develop-1.10", branch="hdf5_1_10") From 9a94ea7dfeda457b4712be71a645140c7488d869 Mon Sep 17 00:00:00 2001 From: Brian Spilner Date: Mon, 4 Nov 2024 10:26:28 +0100 Subject: [PATCH 286/615] icon: add a maintainer (#47323) --- var/spack/repos/builtin/packages/icon/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/icon/package.py b/var/spack/repos/builtin/packages/icon/package.py index 229e3942866839..e75d8d6b05d028 100644 --- a/var/spack/repos/builtin/packages/icon/package.py +++ b/var/spack/repos/builtin/packages/icon/package.py @@ -16,7 +16,7 @@ class Icon(AutotoolsPackage): homepage = "https://www.icon-model.org" url = "https://gitlab.dkrz.de/icon/icon-model/-/archive/icon-2024.01-public/icon-model-icon-2024.01-public.tar.gz" - maintainers("skosukhin") + maintainers("skosukhin", "Try2Code") license("BSD-3-Clause", checked_by="skosukhin") From 18936771ffad57749d012a6c55e6d9c560d40069 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Mon, 4 Nov 2024 04:29:32 -0500 Subject: [PATCH 287/615] arborx: remove Trilinos dependency for @1.6: (#47305) --- .../repos/builtin/packages/arborx/package.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index b5fc91a175d542..da7b9e857c6b9a 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -63,7 +63,7 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): for backend in kokkos_backends: deflt, descr = kokkos_backends[backend] variant(backend.lower(), default=deflt, description=descr) - variant("trilinos", default=False, description="use Kokkos from Trilinos") + variant("trilinos", default=False, when="@:1.5", description="use Kokkos from Trilinos") depends_on("cmake@3.12:", type="build") depends_on("cmake@3.16:", type="build", when="@1.0:") @@ -77,8 +77,8 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos@3.6.00:", when="@1.3~trilinos") depends_on("kokkos@3.7.01:", when="@1.4:1.4.1~trilinos") depends_on("kokkos@4.0.00:", when="@1.5~trilinos") - depends_on("kokkos@4.1.00:", when="@1.6~trilinos") - depends_on("kokkos@4.2.00:", when="@1.7:~trilinos") + depends_on("kokkos@4.1.00:", when="@1.6") + depends_on("kokkos@4.2.00:", when="@1.7:") for backend in kokkos_backends: depends_on("kokkos+%s" % backend.lower(), when="~trilinos+%s" % backend.lower()) @@ -96,8 +96,9 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): conflicts("^kokkos", when="+trilinos") depends_on("kokkos+cuda_lambda", when="~trilinos+cuda") - # Trilinos/Kokkos + # Trilinos with internal Kokkos # Notes: + # - starting with Trilinos 14.4, Trilinos' spack package uses external Kokkos # - current version of Trilinos package does not allow disabling Serial # - current version of Trilinos package does not allow enabling CUDA depends_on("trilinos+kokkos", when="+trilinos") @@ -106,18 +107,16 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("trilinos@13.4.0:", when="@1.3+trilinos") depends_on("trilinos@14.0.0:", when="@1.4:1.4.1+trilinos") depends_on("trilinos@14.2.0:", when="@1.5+trilinos") - depends_on("trilinos@14.4.0:", when="@1.6+trilinos") - depends_on("trilinos@15.1.0:", when="@1.7:+trilinos") patch("trilinos14.0-kokkos-major-version.patch", when="@1.4+trilinos ^trilinos@14.0.0") conflicts("~serial", when="+trilinos") def cmake_args(self): spec = self.spec - if "~trilinos" in spec: - kokkos_spec = spec["kokkos"] - else: + if "+trilinos" in spec: kokkos_spec = spec["trilinos"] + else: + kokkos_spec = spec["kokkos"] options = [ f"-DKokkos_ROOT={kokkos_spec.prefix}", From b1fd6dbb6d8c73891bc463ca6599e2bf96f84011 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 03:32:34 -0600 Subject: [PATCH 288/615] libxml2: add v2.11.9, v2.12.9, v2.13.4 (#47297) Co-authored-by: wdconinc --- .../repos/builtin/packages/libxml2/package.py | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index c799095ab659fc..048debd6589a8d 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -30,19 +30,40 @@ def url_for_version(self, version): license("MIT") - version("2.10.3", sha256="5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c") - version("2.10.2", sha256="d240abe6da9c65cb1900dd9bf3a3501ccf88b3c2a1cb98317d03f272dda5b265") - version("2.10.1", sha256="21a9e13cc7c4717a6c36268d0924f92c3f67a1ece6b7ff9d588958a6db9fb9d8") - version("2.9.14", sha256="60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee") - version("2.9.13", sha256="276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e") - version("2.9.12", sha256="c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92") - version("2.9.11", sha256="886f696d5d5b45d780b2880645edf9e0c62a4fd6841b853e824ada4e02b4d331") - version("2.9.10", sha256="aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f") - version("2.9.9", sha256="94fb70890143e3c6549f265cee93ec064c80a84c42ad0f23e85ee1fd6540a871") - version("2.9.8", sha256="0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732") - version("2.9.4", sha256="ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c") - version("2.9.2", sha256="5178c30b151d044aefb1b08bf54c3003a0ac55c59c866763997529d60770d5bc") - version("2.7.8", sha256="cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec") + version("2.13.4", sha256="65d042e1c8010243e617efb02afda20b85c2160acdbfbcb5b26b80cec6515650") + version("2.12.9", sha256="59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590") + version("2.11.9", sha256="780157a1efdb57188ec474dca87acaee67a3a839c2525b2214d318228451809f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-25062 + version( + "2.10.3", sha256="5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c" + ) + version( + "2.10.2", sha256="d240abe6da9c65cb1900dd9bf3a3501ccf88b3c2a1cb98317d03f272dda5b265" + ) + version( + "2.10.1", sha256="21a9e13cc7c4717a6c36268d0924f92c3f67a1ece6b7ff9d588958a6db9fb9d8" + ) + version( + "2.9.14", sha256="60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee" + ) + version( + "2.9.13", sha256="276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e" + ) + version( + "2.9.12", sha256="c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92" + ) + version( + "2.9.11", sha256="886f696d5d5b45d780b2880645edf9e0c62a4fd6841b853e824ada4e02b4d331" + ) + version( + "2.9.10", sha256="aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f" + ) + version("2.9.9", sha256="94fb70890143e3c6549f265cee93ec064c80a84c42ad0f23e85ee1fd6540a871") + version("2.9.8", sha256="0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732") + version("2.9.4", sha256="ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c") + version("2.9.2", sha256="5178c30b151d044aefb1b08bf54c3003a0ac55c59c866763997529d60770d5bc") + version("2.7.8", sha256="cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec") depends_on("c", type="build") # generated From 2782ae6d7eb8cbb5164b61afaf4a0d7e0547a2c2 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:34:22 +0100 Subject: [PATCH 289/615] libpspio: new version 0.4.1 (#47287) --- var/spack/repos/builtin/packages/libpspio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libpspio/package.py b/var/spack/repos/builtin/packages/libpspio/package.py index b462c5c58c21c1..130cebd07c21cb 100644 --- a/var/spack/repos/builtin/packages/libpspio/package.py +++ b/var/spack/repos/builtin/packages/libpspio/package.py @@ -16,6 +16,7 @@ class Libpspio(AutotoolsPackage): license("MPL-2.0") + version("0.4.1", sha256="e4f87f6d8821042db3a88dad60ae07278e36ad2571e28f5d30f02d8b164b4daa") version("0.3.0", sha256="4dc092457e481e5cd703eeecd87e6f17749941fe274043550c8a2557a649afc5") depends_on("c", type="build") # generated From a86f164835f38b1f525d90dc813ef60d5ab58160 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:35:11 +0100 Subject: [PATCH 290/615] nlopt: new version 2.8.0 (#47289) --- var/spack/repos/builtin/packages/nlopt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/nlopt/package.py b/var/spack/repos/builtin/packages/nlopt/package.py index fd9ed9b18f4877..132fff424c70ed 100644 --- a/var/spack/repos/builtin/packages/nlopt/package.py +++ b/var/spack/repos/builtin/packages/nlopt/package.py @@ -22,6 +22,7 @@ class Nlopt(CMakePackage): version("master", branch="master") + version("2.8.0", sha256="e02a4956a69d323775d79fdaec7ba7a23ed912c7d45e439bc933d991ea3193fd") version("2.7.1", sha256="db88232fa5cef0ff6e39943fc63ab6074208831dc0031cf1545f6ecd31ae2a1a") version("2.7.0", sha256="b881cc2a5face5139f1c5a30caf26b7d3cb43d69d5e423c9d78392f99844499f") version("2.6.2", sha256="cfa5981736dd60d0109c534984c4e13c615314d3584cf1c392a155bfe1a3b17e") From cf3576a9bbcef2d6c0621e3f409742f0d987f126 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 10:38:16 +0100 Subject: [PATCH 291/615] suite-sparse: fix missing rpaths for dependencies (#47394) --- var/spack/repos/builtin/packages/suite-sparse/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 8b72df6f2dbeb3..a6c8fbaed82b91 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -249,6 +249,7 @@ def install(self, spec, prefix): # Mongoose directory finds libsuitesparseconfig.so in system # directories like /usr/lib. cmake_args = [ + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", f"-DCMAKE_INSTALL_PREFIX={prefix}", f"-DCMAKE_LIBRARY_PATH={prefix.lib}", f"-DBLAS_ROOT={spec['blas'].prefix}", From 2148292bdba60f223e4238fab240490a5303fa81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Chevalier?= Date: Mon, 4 Nov 2024 10:39:16 +0100 Subject: [PATCH 292/615] kokkos and kokkos-kernels: use new urls for v4.4 and above (#47330) --- .../packages/kokkos-kernels/package.py | 129 ++++++++++++---- .../repos/builtin/packages/kokkos/package.py | 140 ++++++++++++++---- 2 files changed, 219 insertions(+), 50 deletions(-) diff --git a/var/spack/repos/builtin/packages/kokkos-kernels/package.py b/var/spack/repos/builtin/packages/kokkos-kernels/package.py index f8dc26ad8969e3..af6abf4c11aca1 100644 --- a/var/spack/repos/builtin/packages/kokkos-kernels/package.py +++ b/var/spack/repos/builtin/packages/kokkos-kernels/package.py @@ -11,7 +11,7 @@ class KokkosKernels(CMakePackage, CudaPackage): homepage = "https://github.com/kokkos/kokkos-kernels" git = "https://github.com/kokkos/kokkos-kernels.git" - url = "https://github.com/kokkos/kokkos-kernels/archive/4.0.00.tar.gz" + url = "https://github.com/kokkos/kokkos-kernels/releases/download/4.4.01/kokkos-kernels-4.4.01.tar.gz" tags = ["e4s"] @@ -21,32 +21,111 @@ class KokkosKernels(CMakePackage, CudaPackage): license("Apache-2.0 WITH LLVM-exception") - # generate checksum for each release tarball with the following command - # openssl sha256 kokkos-kernels-x.y.z.tar.gz version("develop", branch="develop") version("master", branch="master") - version("4.4.01", sha256="9f741449f5ace5a7d8a5a81194ff2108e5525d16f08fcd9bb6c9bb4853d7720d") - version("4.4.00", sha256="6559871c091eb5bcff53bae5a0f04f2298971d1aa1b2c135bd5a2dae3f9376a2") - version("4.3.01", sha256="749553a6ea715ba1e56fa0b13b42866bb9880dba7a94e343eadf40d08c68fab8") - version("4.3.00", sha256="03c3226ee97dbca4fa56fe69bc4eefa0673e23c37f2741943d9362424a63950e") - version("4.2.01", sha256="058052b3a40f5d4e447b7ded5c480f1b0d4aa78373b0bc7e43804d0447c34ca8") - version("4.2.00", sha256="c65df9a101dbbef2d8fd43c60c9ea85f2046bb3535fa1ad16e7c661ddd60401e") - version("4.1.00", sha256="d6a4108444ea226e43bf6a9c0dfc557f223a72b1142bf81aa78dd60e16ac2d56") - version("4.0.01", sha256="3f493fcb0244b26858ceb911be64092fbf7785616ad62c81abde0ea1ce86688a") - version("4.0.00", sha256="750079d0be1282d18ecd280e130ca303044ac399f1e5864488284b92f5ce0a86") - version("3.7.01", sha256="b2060f5894bdaf7f7d4793b90444fac260460cfa80595afcbcb955518864b446") - version("3.7.00", sha256="51bc6db3995392065656848e2b152cfd1c3a95a951ab18a3934278113d59f32b") - version("3.6.01", sha256="f000b156c8c0b80e85d38587907c11d9479aaf362408b812effeda5e22b24d0d") - version("3.6.00", sha256="2753643fd643b9eed9f7d370e0ff5fa957211d08a91aa75398e31cbc9e5eb0a5") - version("3.5.00", sha256="a03a41a047d95f9f07cd1e1d30692afdb75b5c705ef524e19c1d02fe60ccf8d1") - version("3.4.01", sha256="f504aa4afbffb58fa7c4430d0fdb8fd5690a268823fa15eb0b7d58dab9d351e6") - version("3.4.00", sha256="07ba11869e686cb0d47272d1ef494ccfbcdef3f93ff1c8b64ab9e136a53a227a") - version("3.3.01", sha256="0f21fe6b5a8b6ae7738290e293aa990719aefe88b32f84617436bfd6074a8f77") - version("3.3.00", sha256="8d7f78815301afb90ddba7914dce5b718cea792ac0c7350d2f8d00bd2ef1cece") - version("3.2.01", sha256="c486e5cac19e354a517498c362838619435734d64b44f44ce909b0531c21d95c") - version("3.2.00", sha256="8ac20ee28ae7813ce1bda461918800ad57fdbac2af86ef5d1ba74e83e10956de") - version("3.1.00", sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89") - version("3.0.00", sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6") + version("4.4.01", sha256="4a32bc8330e0113856bdf181df94cc4f9902e3cebb5dc7cea5948f30df03bfa1") + version("4.4.00", sha256="66d5c3f728a8c7689159c97006996164ea00fd39702476220e3dbf2a05c49e8f") + + version( + "4.3.01", + sha256="749553a6ea715ba1e56fa0b13b42866bb9880dba7a94e343eadf40d08c68fab8", + url="https://github.com/kokkos/kokkos-kernels/archive/4.3.01.tar.gz", + ) + version( + "4.3.00", + sha256="03c3226ee97dbca4fa56fe69bc4eefa0673e23c37f2741943d9362424a63950e", + url="https://github.com/kokkos/kokkos-kernels/archive/4.3.00.tar.gz", + ) + version( + "4.2.01", + sha256="058052b3a40f5d4e447b7ded5c480f1b0d4aa78373b0bc7e43804d0447c34ca8", + url="https://github.com/kokkos/kokkos-kernels/archive/4.2.01.tar.gz", + ) + version( + "4.2.00", + sha256="c65df9a101dbbef2d8fd43c60c9ea85f2046bb3535fa1ad16e7c661ddd60401e", + url="https://github.com/kokkos/kokkos-kernels/archive/4.2.00.tar.gz", + ) + version( + "4.1.00", + sha256="d6a4108444ea226e43bf6a9c0dfc557f223a72b1142bf81aa78dd60e16ac2d56", + url="https://github.com/kokkos/kokkos-kernels/archive/4.1.00.tar.gz", + ) + version( + "4.0.01", + sha256="3f493fcb0244b26858ceb911be64092fbf7785616ad62c81abde0ea1ce86688a", + url="https://github.com/kokkos/kokkos-kernels/archive/4.0.01.tar.gz", + ) + version( + "4.0.00", + sha256="750079d0be1282d18ecd280e130ca303044ac399f1e5864488284b92f5ce0a86", + url="https://github.com/kokkos/kokkos-kernels/archive/4.0.00.tar.gz", + ) + version( + "3.7.01", + sha256="b2060f5894bdaf7f7d4793b90444fac260460cfa80595afcbcb955518864b446", + url="https://github.com/kokkos/kokkos-kernels/archive/3.7.01.tar.gz", + ) + version( + "3.7.00", + sha256="51bc6db3995392065656848e2b152cfd1c3a95a951ab18a3934278113d59f32b", + url="https://github.com/kokkos/kokkos-kernels/archive/3.7.00.tar.gz", + ) + version( + "3.6.01", + sha256="f000b156c8c0b80e85d38587907c11d9479aaf362408b812effeda5e22b24d0d", + url="https://github.com/kokkos/kokkos-kernels/archive/3.6.01.tar.gz", + ) + version( + "3.6.00", + sha256="2753643fd643b9eed9f7d370e0ff5fa957211d08a91aa75398e31cbc9e5eb0a5", + url="https://github.com/kokkos/kokkos-kernels/archive/3.6.00.tar.gz", + ) + version( + "3.5.00", + sha256="a03a41a047d95f9f07cd1e1d30692afdb75b5c705ef524e19c1d02fe60ccf8d1", + url="https://github.com/kokkos/kokkos-kernels/archive/3.5.00.tar.gz", + ) + version( + "3.4.01", + sha256="f504aa4afbffb58fa7c4430d0fdb8fd5690a268823fa15eb0b7d58dab9d351e6", + url="https://github.com/kokkos/kokkos-kernels/archive/3.4.01.tar.gz", + ) + version( + "3.4.00", + sha256="07ba11869e686cb0d47272d1ef494ccfbcdef3f93ff1c8b64ab9e136a53a227a", + url="https://github.com/kokkos/kokkos-kernels/archive/3.4.00.tar.gz", + ) + version( + "3.3.01", + sha256="0f21fe6b5a8b6ae7738290e293aa990719aefe88b32f84617436bfd6074a8f77", + url="https://github.com/kokkos/kokkos-kernels/archive/3.3.01.tar.gz", + ) + version( + "3.3.00", + sha256="8d7f78815301afb90ddba7914dce5b718cea792ac0c7350d2f8d00bd2ef1cece", + url="https://github.com/kokkos/kokkos-kernels/archive/3.3.00.tar.gz", + ) + version( + "3.2.01", + sha256="c486e5cac19e354a517498c362838619435734d64b44f44ce909b0531c21d95c", + url="https://github.com/kokkos/kokkos-kernels/archive/3.2.01.tar.gz", + ) + version( + "3.2.00", + sha256="8ac20ee28ae7813ce1bda461918800ad57fdbac2af86ef5d1ba74e83e10956de", + url="https://github.com/kokkos/kokkos-kernels/archive/3.2.00.tar.gz", + ) + version( + "3.1.00", + sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89", + url="https://github.com/kokkos/kokkos-kernels/archive/3.1.00.tar.gz", + ) + version( + "3.0.00", + sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6", + url="https://github.com/kokkos/kokkos-kernels/archive/3.0.00.tar.gz", + ) depends_on("cxx", type="build") # generated diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 65e6b0adb8ba11..7eeac574d9d3e9 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -15,7 +15,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): homepage = "https://github.com/kokkos/kokkos" git = "https://github.com/kokkos/kokkos.git" - url = "https://github.com/kokkos/kokkos/archive/3.6.00.tar.gz" + url = "https://github.com/kokkos/kokkos/releases/download/4.4.01/kokkos-4.4.01.tar.gz" tags = ["e4s"] @@ -27,30 +27,120 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version("develop", branch="develop") - version("4.4.01", sha256="3f7096d17eaaa4004c7497ac082bf1ae3ff47b5104149e54af021a89414c3682") - version("4.4.00", sha256="c638980cb62c34969b8c85b73e68327a2cb64f763dd33e5241f5fd437170205a") - version("4.3.01", sha256="5998b7c732664d6b5e219ccc445cd3077f0e3968b4be480c29cd194b4f45ec70") - version("4.3.00", sha256="53cf30d3b44dade51d48efefdaee7a6cf109a091b702a443a2eda63992e5fe0d") - version("4.2.01", sha256="cbabbabba021d00923fb357d2e1b905dda3838bd03c885a6752062fe03c67964") - version("4.2.00", sha256="ac08765848a0a6ac584a0a46cd12803f66dd2a2c2db99bb17c06ffc589bf5be8") - version("4.1.00", sha256="cf725ea34ba766fdaf29c884cfe2daacfdc6dc2d6af84042d1c78d0f16866275") - version("4.0.01", sha256="bb942de8afdd519fd6d5d3974706bfc22b6585a62dd565c12e53bdb82cd154f0") - version("4.0.00", sha256="1829a423883d4b44223c7c3a53d3c51671145aad57d7d23e6a1a4bebf710dcf6") - version("3.7.02", sha256="5024979f06bc8da2fb696252a66297f3e0e67098595a0cc7345312b3b4aa0f54") - version("3.7.01", sha256="0481b24893d1bcc808ec68af1d56ef09b82a1138a1226d6be27c3b3c3da65ceb") - version("3.7.00", sha256="62e3f9f51c798998f6493ed36463f66e49723966286ef70a9dcba329b8443040") - version("3.6.01", sha256="1b80a70c5d641da9fefbbb652e857d7c7a76a0ebad1f477c253853e209deb8db") - version("3.6.00", sha256="53b11fffb53c5d48da5418893ac7bc814ca2fde9c86074bdfeaa967598c918f4") - version("3.5.00", sha256="748f06aed63b1e77e3653cd2f896ef0d2c64cb2e2d896d9e5a57fec3ff0244ff") - version("3.4.01", sha256="146d5e233228e75ef59ca497e8f5872d9b272cb93e8e9cdfe05ad34a23f483d1") - version("3.4.00", sha256="2e4438f9e4767442d8a55e65d000cc9cde92277d415ab4913a96cd3ad901d317") - version("3.3.01", sha256="4919b00bb7b6eb80f6c335a32f98ebe262229d82e72d3bae6dd91aaf3d234c37") - version("3.3.00", sha256="170b9deaa1943185e928f8fcb812cd4593a07ed7d220607467e8f0419e147295") - version("3.2.01", sha256="9e27a3d8f81559845e190d60f277d84d6f558412a3df3301d9545e91373bcaf1") - version("3.2.00", sha256="05e1b4dd1ef383ca56fe577913e1ff31614764e65de6d6f2a163b2bddb60b3e9") - version("3.1.01", sha256="ff5024ebe8570887d00246e2793667e0d796b08c77a8227fe271127d36eec9dd") - version("3.1.00", sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878") - version("3.0.00", sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b") + + version("4.4.01", sha256="3413f0cb39912128d91424ebd92e8832009e7eeaf6fa8da58e99b0d37860d972") + version("4.4.00", sha256="0b46372f38c48aa088411ac1b7c173a5c90f0fdb69ab40271827688fc134f58b") + + version( + "4.3.01", + sha256="5998b7c732664d6b5e219ccc445cd3077f0e3968b4be480c29cd194b4f45ec70", + url="https://github.com/kokkos/kokkos/archive/4.3.01.tar.gz", + ) + version( + "4.3.00", + sha256="53cf30d3b44dade51d48efefdaee7a6cf109a091b702a443a2eda63992e5fe0d", + url="https://github.com/kokkos/kokkos/archive/4.3.00.tar.gz", + ) + version( + "4.2.01", + sha256="cbabbabba021d00923fb357d2e1b905dda3838bd03c885a6752062fe03c67964", + url="https://github.com/kokkos/kokkos/archive/4.2.01.tar.gz", + ) + version( + "4.2.00", + sha256="ac08765848a0a6ac584a0a46cd12803f66dd2a2c2db99bb17c06ffc589bf5be8", + url="https://github.com/kokkos/kokkos/archive/4.2.00.tar.gz", + ) + version( + "4.1.00", + sha256="cf725ea34ba766fdaf29c884cfe2daacfdc6dc2d6af84042d1c78d0f16866275", + url="https://github.com/kokkos/kokkos/archive/4.1.00.tar.gz", + ) + version( + "4.0.01", + sha256="bb942de8afdd519fd6d5d3974706bfc22b6585a62dd565c12e53bdb82cd154f0", + url="https://github.com/kokkos/kokkos/archive/4.0.01.tar.gz", + ) + version( + "4.0.00", + sha256="1829a423883d4b44223c7c3a53d3c51671145aad57d7d23e6a1a4bebf710dcf6", + url="https://github.com/kokkos/kokkos/archive/4.0.00.tar.gz", + ) + version( + "3.7.02", + sha256="5024979f06bc8da2fb696252a66297f3e0e67098595a0cc7345312b3b4aa0f54", + url="https://github.com/kokkos/kokkos/archive/3.7.02.tar.gz", + ) + version( + "3.7.01", + sha256="0481b24893d1bcc808ec68af1d56ef09b82a1138a1226d6be27c3b3c3da65ceb", + url="https://github.com/kokkos/kokkos/archive/3.7.01.tar.gz", + ) + version( + "3.7.00", + sha256="62e3f9f51c798998f6493ed36463f66e49723966286ef70a9dcba329b8443040", + url="https://github.com/kokkos/kokkos/archive/3.7.00.tar.gz", + ) + version( + "3.6.01", + sha256="1b80a70c5d641da9fefbbb652e857d7c7a76a0ebad1f477c253853e209deb8db", + url="https://github.com/kokkos/kokkos/archive/3.6.01.tar.gz", + ) + version( + "3.6.00", + sha256="53b11fffb53c5d48da5418893ac7bc814ca2fde9c86074bdfeaa967598c918f4", + url="https://github.com/kokkos/kokkos/archive/3.6.00.tar.gz", + ) + version( + "3.5.00", + sha256="748f06aed63b1e77e3653cd2f896ef0d2c64cb2e2d896d9e5a57fec3ff0244ff", + url="https://github.com/kokkos/kokkos/archive/3.5.00.tar.gz", + ) + version( + "3.4.01", + sha256="146d5e233228e75ef59ca497e8f5872d9b272cb93e8e9cdfe05ad34a23f483d1", + url="https://github.com/kokkos/kokkos/archive/3.4.01.tar.gz", + ) + version( + "3.4.00", + sha256="2e4438f9e4767442d8a55e65d000cc9cde92277d415ab4913a96cd3ad901d317", + url="https://github.com/kokkos/kokkos/archive/3.4.00.tar.gz", + ) + version( + "3.3.01", + sha256="4919b00bb7b6eb80f6c335a32f98ebe262229d82e72d3bae6dd91aaf3d234c37", + url="https://github.com/kokkos/kokkos/archive/3.3.01.tar.gz", + ) + version( + "3.3.00", + sha256="170b9deaa1943185e928f8fcb812cd4593a07ed7d220607467e8f0419e147295", + url="https://github.com/kokkos/kokkos/archive/3.3.00.tar.gz", + ) + version( + "3.2.01", + sha256="9e27a3d8f81559845e190d60f277d84d6f558412a3df3301d9545e91373bcaf1", + url="https://github.com/kokkos/kokkos/archive/3.2.01.tar.gz", + ) + version( + "3.2.00", + sha256="05e1b4dd1ef383ca56fe577913e1ff31614764e65de6d6f2a163b2bddb60b3e9", + url="https://github.com/kokkos/kokkos/archive/3.2.00.tar.gz", + ) + version( + "3.1.01", + sha256="ff5024ebe8570887d00246e2793667e0d796b08c77a8227fe271127d36eec9dd", + url="https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz", + ) + version( + "3.1.00", + sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878", + url="https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz", + ) + version( + "3.0.00", + sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b", + url="https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz", + ) depends_on("cxx", type="build") # Kokkos requires a C++ compiler From 754011643c83aefda92b43602456ca31c7703121 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 4 Nov 2024 04:41:07 -0500 Subject: [PATCH 293/615] rocal and rocm-openmp-extras: fix build failures (#47314) --- var/spack/repos/builtin/packages/mivisionx/package.py | 4 ++-- var/spack/repos/builtin/packages/rocal/package.py | 3 ++- .../repos/builtin/packages/rocm-openmp-extras/package.py | 9 ++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index f3e565f99f40a9..332d9d4ca97d4b 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -15,7 +15,7 @@ class Mivisionx(CMakePackage): git = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX.git" url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-6.1.2.tar.gz" - maintainers("srekolam", "renjithravindrankannath") + maintainers("srekolam", "renjithravindrankannath", "afzpatel") tags = ["rocm"] def url_for_version(self, version): @@ -211,7 +211,7 @@ def patch(self): when="@5.3:", ) depends_on("openssl") - depends_on("libjpeg-turbo@2.0.6+partial_decoder", type="build") + depends_on("libjpeg-turbo@2.0.6+partial_decoder", type="build", when="@:6.2.0") depends_on("rpp@1.2.0", when="@5.5:5.6") depends_on("lmdb", when="@5.5:") depends_on("py-setuptools", when="@5.6:") diff --git a/var/spack/repos/builtin/packages/rocal/package.py b/var/spack/repos/builtin/packages/rocal/package.py index 84e45834935154..c9196dd562f61c 100644 --- a/var/spack/repos/builtin/packages/rocal/package.py +++ b/var/spack/repos/builtin/packages/rocal/package.py @@ -20,7 +20,8 @@ class Rocal(CMakePackage): version("6.2.1", sha256="77d3e63e02afaee6f1ee1d877d88b48c6ea66a0afca96a1313d0f1c4f8e86b2a") version("6.2.0", sha256="c7c265375a40d4478a628258378726c252caac424f974456d488fce43890e157") - depends_on("libjpeg-turbo@2.0.6+partial_decoder") + depends_on("libjpeg-turbo@2.0.6+partial_decoder", when="@6.2.0") + depends_on("libjpeg-turbo@3.0.2:", when="@6.2.1:") depends_on("rapidjson") depends_on("ffmpeg@4.4:") diff --git a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py index 3586bef851b6e8..471b662d4b207e 100644 --- a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py +++ b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py @@ -155,7 +155,7 @@ class RocmOpenmpExtras(Package): license("Apache-2.0") - maintainers("srekolam", "renjithravindrankannath", "estewart08") + maintainers("srekolam", "renjithravindrankannath", "estewart08", "afzpatel") version("6.2.1", sha256=versions_dict["6.2.1"]["aomp"]) version("6.2.0", sha256=versions_dict["6.2.0"]["aomp"]) version("6.1.2", sha256=versions_dict["6.1.2"]["aomp"]) @@ -189,6 +189,7 @@ class RocmOpenmpExtras(Package): depends_on("libffi", type=("build", "link")) depends_on("libdrm", when="@5.7:6.0") depends_on("numactl", when="@5.7:6.0") + depends_on("zlib", when="@6.2:") for ver in [ "5.5.0", @@ -489,6 +490,7 @@ def install(self, spec, prefix): ffi_inc = spec["libffi"].prefix.include if self.spec.satisfies("@6.2:"): ncurses_lib_dir = self.spec["ncurses"].prefix.lib + zlib_lib_dir = self.spec["zlib"].prefix.lib # flang1 and flang2 symlink needed for build of flang-runtime # libdevice symlink to rocm-openmp-extras for runtime @@ -638,11 +640,12 @@ def install(self, spec, prefix): flang_legacy_flags.append("-D_GLIBCXX_USE_CXX11_ABI=0") if self.spec.satisfies("@6.2:"): flang_legacy_flags.append("-L{0}".format(ncurses_lib_dir)) + flang_legacy_flags.append("-L{0}".format(zlib_lib_dir)) components["flang-legacy-llvm"] += [ - "-DCMAKE_CXX_FLAGS={0}".format(",".join(flang_legacy_flags)) + "-DCMAKE_CXX_FLAGS={0}".format(" ".join(flang_legacy_flags)) ] components["flang-legacy"] += [ - "-DCMAKE_CXX_FLAGS={0}".format(",".join(flang_legacy_flags)) + "-DCMAKE_CXX_FLAGS={0}".format(" ".join(flang_legacy_flags)) ] components["flang"] = [ From 1ee344c75c75b07769bb0b73024a9c59537fa333 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:47:54 +0100 Subject: [PATCH 294/615] bigdft-futile: fix compilation for @1.9.5~mpi (#47292) When compiled without MPI support, a fake mpi header is autogenerated during configure/build. The header is missing one symbol in version 1.9.5. The problem has since been fixed upstream. A simular problem does also occur for 1.9.4. Unfortunately, the patch does not work for 1.9.4 and I also don't know if further fixes would be required for 1.9.4. Therefore, only the newest version 1.9.5 is patched. --- var/spack/repos/builtin/packages/bigdft-futile/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/bigdft-futile/package.py b/var/spack/repos/builtin/packages/bigdft-futile/package.py index 94a66f100dd528..99bf739a1d01b7 100644 --- a/var/spack/repos/builtin/packages/bigdft-futile/package.py +++ b/var/spack/repos/builtin/packages/bigdft-futile/package.py @@ -49,6 +49,14 @@ class BigdftFutile(AutotoolsPackage, CudaPackage): configure_directory = "futile" + # missing MPI_BOTTOM in fake mpif.h (generated when compiling without MPI support) + # similar issue (maybe others) also in 1.9.4 but this patch does not work for 1.9.4 + patch( + "https://gitlab.com/l_sim/bigdft-suite/-/commit/ec7419011fa9fd815de77bfca8642973091fb64b.diff", + sha256="66c493e37fe7f7f9800ae7f49bb0172a5b2372a2ce0ee4c3bcb7ff5c59a3925c", + when="@1.9.5~mpi", + ) + def configure_args(self): spec = self.spec prefix = self.prefix From 5b93466340ae94e98c97f5353f108a0e234a1bf9 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 10:48:35 +0100 Subject: [PATCH 295/615] libssh2: fix crypto (#47393) --- .../repos/builtin/packages/libssh2/package.py | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py index 23dc57ce2deaff..754d593c4b1305 100644 --- a/var/spack/repos/builtin/packages/libssh2/package.py +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -14,6 +14,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): license("BSD-3-Clause") + version("1.11.1", sha256="d9ec76cbe34db98eec3539fe2c899d26b0c837cb3eb466a56b0f109cabf658f7") version("1.11.0", sha256="3736161e41e2693324deb38c26cfdc3efe6209d634ba4258db1cecff6a5ad461") version("1.10.0", sha256="2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51") version("1.9.0", sha256="d5fb8bd563305fd1074dda90bd053fb2d29fc4bce048d182f96eaa466dfadafd") @@ -23,8 +24,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): "1.4.3", sha256="eac6f85f9df9db2e6386906a6227eb2cd7b3245739561cad7d6dc1d5d021b96d" ) # CentOS7 - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") build_system("autotools", "cmake", default="autotools") @@ -53,7 +53,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): # and fails to prepend the -L flags, which is causing issues in libgit2, as # it tries to locate e.g. libssl in the dirs of the pc file's -L flags, and # cannot find the lib. - patch("pr-1114.patch", when="@1.7:") + patch("pr-1114.patch", when="@1.7:1.11.0") class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): @@ -77,14 +77,27 @@ def cmake_args(self): class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): - args = ["--disable-tests", "--disable-docker-tests", "--disable-examples-build"] - args += self.enable_or_disable("shared") + args = [ + "--disable-tests", + "--disable-docker-tests", + "--disable-examples-build", + "--without-libgcrypt", + "--without-wincng", + *self.enable_or_disable("shared"), + ] crypto = self.spec.variants["crypto"].value - if crypto == "openssl": - args.append(f"--with-libssl-prefix={self.spec['openssl'].prefix}") - elif crypto == "mbedtls": - args.append(f"--with-libmbedcrypto-prefix={self.spec['mbedtls'].prefix}") + if self.spec.satisfies("@1.9:"): + # single flag for all crypto backends + args.append(f"--with-crypto={crypto}") + else: + # one flag per crypto backend + if crypto == "openssl": + args.append(f"--with-libssl-prefix={self.spec['openssl'].prefix}") + args.append("--without-mbedtls") + elif crypto == "mbedtls": + args.append(f"--with-libmbedcrypto-prefix={self.spec['mbedtls'].prefix}") + args.append("--without-openssl") return args From 2c1d74db9b5b32aa5e510acd0e03a6a1a344995f Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 11:20:33 +0100 Subject: [PATCH 296/615] krb5: disable missing keyutils dependency (#47397) --- var/spack/repos/builtin/packages/krb5/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/krb5/package.py b/var/spack/repos/builtin/packages/krb5/package.py index 0485a999005c8b..c4ee935801bbda 100644 --- a/var/spack/repos/builtin/packages/krb5/package.py +++ b/var/spack/repos/builtin/packages/krb5/package.py @@ -103,7 +103,7 @@ def patch(self): def configure_args(self): spec = self.spec - args = ["--without-system-verto"] + args = ["--without-system-verto", "--without-keyutils"] if spec.satisfies("~shared"): args.append("--enable-static") From c9ed91758d308297b4267a8dd178b88881b20415 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 11:42:34 +0100 Subject: [PATCH 297/615] tcsh: add missing libxcrypt dependency (#47398) --- var/spack/repos/builtin/packages/tcsh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/tcsh/package.py b/var/spack/repos/builtin/packages/tcsh/package.py index 2b8a1d9a6c8de4..24215b5d9ff204 100644 --- a/var/spack/repos/builtin/packages/tcsh/package.py +++ b/var/spack/repos/builtin/packages/tcsh/package.py @@ -108,6 +108,7 @@ class Tcsh(AutotoolsPackage): ) depends_on("ncurses+termlib") + depends_on("libxcrypt", when="platform=linux") @run_after("install") def link_csh(self): From 10f7014addebfe1a104f558f9cf1901fd1702452 Mon Sep 17 00:00:00 2001 From: Teague Sterling Date: Mon, 4 Nov 2024 03:37:21 -0800 Subject: [PATCH 298/615] vep-cache: new package (#44523) * py-uvloop: add v3.8.14, v3.9.15, v3.10.3 and dependencies * rollback * vep: add v110,v111,v112 * vep-cache: add v110,v111,v112 * Cleanup * Reorganizigng Signed-off-by: Teague Sterling * Update package.py * Update package.py * [@spackbot] updating style on behalf of teaguesterling * Update package.py * Update package.py * Update package.py * [@spackbot] updating style on behalf of teaguesterling * Update package.py * [@spackbot] updating style on behalf of teaguesterling * Fix scoping and syntax issues Signed-off-by: Teague Sterling * fix styles Signed-off-by: Teague Sterling * fix variants * fixing up variant issues and cleaning up resource code Signed-off-by: Teague Sterling * fixing unused imports Signed-off-by: Teague Sterling * Apply suggestions from code review Co-authored-by: Arne Becker <101113822+EbiArnie@users.noreply.github.com> * fixing vep dependencies Signed-off-by: Teague Sterling * Fixing resources Signed-off-by: Teague Sterling * Fixing issue where resources are not downloaded Signed-off-by: Teague Sterling * vep-cache fixing downloads Signed-off-by: Teague Sterling * defaulting to using VEP installer Signed-off-by: Teague Sterling * Removing resource-based cache installation and simplifying package. Resources without checksums doesn't work (anymore?) and calculating them with be difficult Signed-off-by: Teague Sterling --------- Signed-off-by: Teague Sterling Co-authored-by: Arne Becker <101113822+EbiArnie@users.noreply.github.com> --- .../builtin/packages/vep-cache/package.py | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vep-cache/package.py diff --git a/var/spack/repos/builtin/packages/vep-cache/package.py b/var/spack/repos/builtin/packages/vep-cache/package.py new file mode 100644 index 00000000000000..6e84426a52a12e --- /dev/null +++ b/var/spack/repos/builtin/packages/vep-cache/package.py @@ -0,0 +1,151 @@ +# 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) + +from spack.package import * + + +class VepCache(Package): + """Separate installation and management for the Ensembl Variant Effect Predictor (vep)""" + + homepage = "https://useast.ensembl.org/info/docs/tools/vep/index.html" + maintainers("teaguesterling") + # This is a dummy value to get spack to resolve resources, which are not downloaded + # when has_code = False + has_code = False + + license("Apache-2.0", checked_by="teaguesterling") + + vep_versions = ["112", "111", "110"] + depends_on("vep", type="build") + for major in vep_versions: + version(major) + depends_on(f"vep@{major}", type="build", when=f"@{major}+match_vep_version") + + vep_assembly_sources = ["ensembl", "refseq", "merged"] + + # This is an incomplete list + vep_species = { + "bos_taurus": ["UMD3.1"], + "danio_rerio": ["GRCz11"], + "homo_sapiens": ["GRCh38", "GRCh37"], + "mus_musculus": ["GRCm38"], + "rattus_norvegicus": ["Rnor_6.0"], + } + + variant("match_vep_version", default=True, description="Match cache and software version") + variant("env", default=True, description="Setup VEP environment variables for this cache") + + # Cache configuration options + variant("fasta", default=True, description="Add FASTA files to the cache") + variant("indexed", default=True, description="Use indexed cache") + + variant( + "assembly_source", + values=vep_assembly_sources, + default="ensembl", + description="What reference genome source", + ) + variant( + "species", + values=vep_species.keys(), + default="homo_sapiens", + description="Which species to download the cache for (only one at a time)", + ) + variant( + "assembly", + values=["latest"] + + [ + conditional(*assemblies, when=f"species={species}") + for species, assemblies in vep_species.items() + ], + default="latest", + multi=False, + description="Which assembly of genome to use (only needed for homo sapiens)", + ) + + def cache_from_spec(self, spec): + variants = spec.variants + indexed = spec.satisfies("+indexed") + cache_type = variants["assembly_source"].value + species = variants["species"].value + assembly = variants["assembly"].value + assembly = self.vep_species[species][0] if assembly == "latest" else assembly + return indexed, cache_type, species, assembly + + def vep_cache_config(self, base): + spec = self.spec + cache_version = spec.version.up_to(1) + indexed, cache_type, species, assembly = self.cache_from_spec(spec) + user_root = join_path(base, "share", "vep") + root = user_root # Should this be VEP install dir? + + suffix = "" if cache_type == "ensembl" else f"_{cache_type}" + species_cache = f"{species}{suffix}" + + if species == "homo_sapiens": + cache_dir = join_path(species, f"{cache_version}_{assembly}") + else: + cache_dir = join_path(species, f"{cache_version}") + + return { + "root": root, + "user_root": user_root, + "version": f"{cache_version}", + "type": f"{cache_type}", + "species": species, + "cache_species": species_cache, + "assembly": f"{assembly}", + "indexed": indexed, + "dir": cache_dir, + "full_path": join_path(root, cache_dir), + } + + def setup_run_environment(self, env): + if self.spec.satisfies("+env"): + cache = self.vep_cache_config(self.home) + env.set("VEP_OFFLINE", "1") + env.set("VEP_CACHE", "1") + env.set("VEP_DIR", cache["user_root"]) + env.set("VEP_SPECIES", cache["species"]) + env.set("VEP_CACHE_VERSION", cache["version"]) + if cache["assembly"] is not None: + env.set("VEP_ASSEMBLY", cache["assembly"]) + if cache["type"] == "refseq": + env.set("VEP_REFSEQ", "1") + if cache["type"] == "merged": + env.set("VEP_MERGED", "1") + if self.spec.satisfies("+fasta"): + pass + + def cache_installer_args(self): + cache = self.vep_cache_config(self.prefix) + args = [ + "--CACHEDIR", + cache["full_path"], + "--CACHE_VERSION", + cache["version"], + "--SPECIES", + cache["cache_species"], + ] + if cache["species"] == "homo_sapiens": + args += ["--ASSEMBLY", cache["assembly"]] + + return args + + def installer_args(self): + auto = "cf" if self.spec.satisfies("+fasta") else "c" + args = ["--AUTO", auto, "--NO_UPDATE", "--NO_TEST"] + args += self.cache_installer_args() + return args + + def install_with_installer(self): + vep = self.spec["vep"].package + installer = which(vep.vep_installer_path) + installer(*self.installer_args()) + + def install(self, spec, prefix): + cache = self.vep_cache_config(self.prefix) + mkdirp(cache["full_path"]) + self.install_with_installer() From 8d0856d1cc3f8d097b8f4a7e5a18ad662b8434c5 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 13:52:05 +0100 Subject: [PATCH 299/615] packaging_guide.rst: explain forward and backward compat before the less common cases (#47402) The idea is to go from most to least used: backward compat -> forward compat -> pinning on major or major.minor version -> pinning specific, concrete versions. Further, the following ```python # backward compatibility with Python depends_on("python@3.8:") depends_on("python@3.9:", when="@1.2:") depends_on("python@3.10:", when="@1.4:") # forward compatibility with Python depends_on("python@:3.12", when="@:1.10") depends_on("python@:3.13", when="@:1.12") depends_on("python@:3.14") ``` is better than disjoint when ranges causing repetition of the rules on dependencies, and requiring frequent editing of existing lines after new releases are done: ```python depends_on("python@3.8:3.12", when="@:1.1") depends_on("python@3.9:3.12", when="@1.2:1.3") depends_on("python@3.10:3.12", when="@1.4:1.10") depends_on("python@3.10:3.13", when="@1.11:1.12") depends_on("python@3.10:3.14", when="@1.13:") --- lib/spack/docs/packaging_guide.rst | 91 +++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 28 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index a736ff8c793005..d9a37175b6c72d 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2503,15 +2503,14 @@ with. For example, suppose that in the ``libdwarf`` package you write: depends_on("libelf@0.8") -Now ``libdwarf`` will require ``libelf`` at *exactly* version ``0.8``. -You can also specify a requirement for a particular variant or for -specific compiler flags: +Now ``libdwarf`` will require ``libelf`` in the range ``0.8``, which +includes patch versions ``0.8.1``, ``0.8.2``, etc. Apart from version +restrictions, you can also specify variants if this package requires +optional features of the dependency. .. code-block:: python - depends_on("libelf@0.8+debug") - depends_on("libelf debug=True") - depends_on("libelf cppflags='-fPIC'") + depends_on("libelf@0.8 +parser +pic") Both users *and* package authors can use the same spec syntax to refer to different package configurations. Users use the spec syntax on the @@ -2519,46 +2518,82 @@ command line to find installed packages or to install packages with particular constraints, and package authors can use specs to describe relationships between packages. -^^^^^^^^^^^^^^ -Version ranges -^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Specifying backward and forward compatibility +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Packages are often compatible with a range of versions of their +dependencies. This is typically referred to as backward and forward +compatibility. Spack allows you to specify this in the ``depends_on`` +directive using version ranges. -Although some packages require a specific version for their dependencies, -most can be built with a range of versions. For example, if you are -writing a package for a legacy Python module that only works with Python -2.4 through 2.6, this would look like: +**Backwards compatibility** means that the package requires at least a +certain version of its dependency: .. code-block:: python - depends_on("python@2.4:2.6") + depends_on("python@3.10:") -Version ranges in Spack are *inclusive*, so ``2.4:2.6`` means any version -greater than or equal to ``2.4`` and up to and including any ``2.6.x``. If -you want to specify that a package works with any version of Python 3 (or -higher), this would look like: +In this case, the package requires Python 3.10 or newer. + +Commonly, packages drop support for older versions of a dependency as +they release new versions. In Spack you can conveniently add every +backward compatibility rule as a separate line: .. code-block:: python - depends_on("python@3:") + # backward compatibility with Python + depends_on("python@3.8:") + depends_on("python@3.9:", when="@1.2:") + depends_on("python@3.10:", when="@1.4:") + +This means that in general we need Python 3.8 or newer; from version +1.2 onwards we need Python 3.9 or newer; from version 1.4 onwards we +need Python 3.10 or newer. Notice that it's fine to have overlapping +ranges in the ``when`` clauses. -Here we leave out the upper bound. If you want to say that a package -requires Python 2, you can similarly leave out the lower bound: +**Forward compatibility** means that the package requires at most a +certain version of its dependency. Forward compatibility rules are +necessary when there are breaking changes in the dependency that the +package cannot handle. In Spack we often add forward compatibility +bounds only at the time a new, breaking version of a dependency is +released. As with backward compatibility, it is typical to see a list +of forward compatibility bounds in a package file as seperate lines: .. code-block:: python - depends_on("python@:2") + # forward compatibility with Python + depends_on("python@:3.12", when="@:1.10") + depends_on("python@:3.13", when="@:1.12") + +Notice how the ``:`` now appears before the version number both in the +dependency and in the ``when`` clause. This tells Spack that in general +we need Python 3.13 or older up to version ``1.12.x``, and up to version +``1.10.x`` we need Python 3.12 or older. Said differently, forward compatibility +with Python 3.13 was added in version 1.11, while version 1.13 added forward +compatibility with Python 3.14. + +Notice that a version range ``@:3.12`` includes *any* patch version +number ``3.12.x``, which is often useful when specifying forward compatibility +bounds. + +So far we have seen open-ended version ranges, which is by far the most +common use case. It is also possible to specify both a lower and an upper bound +on the version of a dependency, like this: + +.. code-block:: python -Notice that we didn't use ``@:3``. Version ranges are *inclusive*, so -``@:3`` means "up to and including any 3.x version". + depends_on("python@3.10:3.12") -You can also simply write +There is short syntax to specify that a package is compatible with say any +``3.x`` version: .. code-block:: python - depends_on("python@2.7") + depends_on("python@3") -to tell Spack that the package needs Python 2.7.x. This is equivalent to -``@2.7:2.7``. +The above is equivalent to ``depends_on("python@3:3")``, which means at least +Python version 3 and at most any version ``3.x.y``. In very rare cases, you may need to specify an exact version, for example if you need to distinguish between ``3.2`` and ``3.2.1``: From b95936f752f55ae4e1a70d4301feab2406d9dea8 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 07:20:09 -0600 Subject: [PATCH 300/615] zabbix: add v5.0.44, v6.0.34, v7.0.4 (fix CVEs) (#47001) * zabbix: add v5.0.44, v6.0.34, v7.0.4 (fix CVEs) * [@spackbot] updating style on behalf of wdconinc * zabbix: use f-string * zabbix: fix f-string quoting * zabbix: use mysql-client * @wdconic, this fixes the mysql client virtual for me --------- Co-authored-by: wdconinc Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/mysql/package.py | 9 ++++ .../repos/builtin/packages/zabbix/package.py | 46 ++++++++++++++----- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/mysql/package.py b/var/spack/repos/builtin/packages/mysql/package.py index 42288aaab74b95..1e7cb834d36351 100644 --- a/var/spack/repos/builtin/packages/mysql/package.py +++ b/var/spack/repos/builtin/packages/mysql/package.py @@ -226,3 +226,12 @@ def setup_build_environment(self, env): if "python" in self.spec and self.spec.satisfies("@:7"): self._fix_dtrace_shebang(env) + + @run_before("install") + def fixup_mysqlconfig(self): + if not self.spec.satisfies("platform=windows"): + # mysql uses spack libz but exports -lzlib to its dependencies. Fix that: + with working_dir(self.build_directory): + for config in ("scripts/mysql_config", "scripts/mysqlclient.pc"): + if os.path.exists(config): + filter_file(" -lzlib ", " -lz ", config) diff --git a/var/spack/repos/builtin/packages/zabbix/package.py b/var/spack/repos/builtin/packages/zabbix/package.py index aeb8bfd1d11037..a84097c1c7ee46 100644 --- a/var/spack/repos/builtin/packages/zabbix/package.py +++ b/var/spack/repos/builtin/packages/zabbix/package.py @@ -11,35 +11,59 @@ class Zabbix(AutotoolsPackage): such as networks, servers, VMs, applications and the cloud.""" homepage = "https://www.zabbix.com" - url = "https://github.com/zabbix/zabbix/archive/5.0.3.tar.gz" + url = "https://github.com/zabbix/zabbix/archive/refs/tags/5.0.3.tar.gz" - license("GPL-2.0-or-later") + license("AGPL-3.0-only", when="@7:", checked_by="wdconinc") + license("GPL-2.0-or-later", when="@:6", checked_by="wdconinc") - version("5.0.3", sha256="d579c5fa4e9065e8041396ace24d7132521ef5054ce30dfd9d151cbb7f0694ec") - version("4.0.24", sha256="c7e4962d745277d67797d90e124555ce27d198822a7e65c55d86aee45d3e93fc") - version("4.0.23", sha256="652143614f52411cad47db64e93bf3ba1cd547d6ca9591296223b5f0528b3b61") + version("7.0.4", sha256="73aa6b47bd4078587589b30f09671fb30c7743f5b57e81ea8e9bd5a7c5f221c7") + version("6.0.34", sha256="e60558911230d27ffad98850e414b46e318c9d41591a6ff65a255c0810cfcb8b") + version("5.0.44", sha256="f8ee86fd21f0f57e7fad68387271b995c1e5cc402d517cd7df5d5221fd6129fd") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-32724 + version("5.0.3", sha256="d579c5fa4e9065e8041396ace24d7132521ef5054ce30dfd9d151cbb7f0694ec") + # https://nvd.nist.gov/vuln/detail/CVE-2019-17382 + version( + "4.0.24", sha256="c7e4962d745277d67797d90e124555ce27d198822a7e65c55d86aee45d3e93fc" + ) + version( + "4.0.23", sha256="652143614f52411cad47db64e93bf3ba1cd547d6ca9591296223b5f0528b3b61" + ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("autoconf", type="build") + depends_on("autoconf-archive", type="build") depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") - depends_on("mysql") + depends_on("pkgconfig", type="build") + depends_on("mysql-client") + # Older versions of mysql use openssl-1.x, causing build issues: + depends_on("mysql@8.0.35:", when="^[virtuals=mysql-client] mysql") depends_on("libevent") depends_on("pcre") depends_on("go") + def autoreconf(self, spec, prefix): + Executable("./bootstrap.sh")() + def configure_args(self): + mysql_prefix = self.spec["mysql-client"].prefix + if self.spec.satisfies("^[virtuals=mysql-client] mysql"): + mysql_config = mysql_prefix.bin.mysql_config + else: + mysql_config = mysql_prefix.bin.mariadb_config + args = [ "--enable-server", "--enable-proxy", "--enable-agent", "--enable-agent2", - "--with-mysql", - "--with-libevent=%s" % self.spec["libevent"].prefix, - "--with-libpcre=%s" % self.spec["pcre"].prefix, + f"--with-mysql={mysql_config}", + f"--with-libevent={self.spec['libevent'].prefix}", + f"--with-libpcre={self.spec['pcre'].prefix}", ] return args From e952f6be8e80f2d84ccb254ed826b1957f78dd0f Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 4 Nov 2024 14:48:08 +0100 Subject: [PATCH 301/615] acts dependencies: new versions as of 2024/11/01 (#47366) * acts dependencies: new versions as of 2024/11/01 Includes new versions of ACTS itself, Detray, and Vecmem. * Bind TBB --- var/spack/repos/builtin/packages/acts/package.py | 4 +++- var/spack/repos/builtin/packages/detray/package.py | 1 + var/spack/repos/builtin/packages/vecmem/package.py | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 7845ada663b639..4063fb491b6a75 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -41,6 +41,7 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version("main", branch="main") version("master", branch="main", deprecated=True) # For compatibility + version("37.3.0", commit="b3e856d4dadcda7d1a88a9b846ce5a7acd8410c4", submodules=True) version("37.2.0", commit="821144dc40d35b44aee0d7857a0bd1c99e4a3932", submodules=True) version("37.1.0", commit="fa6ad4d52e0bd09cf8c78507fcbb18e9ac2c87a3", submodules=True) version("37.0.1", commit="998b9c9dd42d5160c2540f8fa820505869bfdb79", submodules=True) @@ -337,7 +338,7 @@ class Acts(CMakePackage, CudaPackage): "tbb", default=True, description="Build the examples with Threading Building Blocks library", - when="@19.8:19,20.1: +examples", + when="@19.8:19,20.1:37.2 +examples", ) variant("analysis", default=False, description="Build analysis applications in the examples") @@ -382,6 +383,7 @@ class Acts(CMakePackage, CudaPackage): depends_on("hepmc3 @3.2.1:", when="+hepmc3") depends_on("heppdt", when="+hepmc3 @:4.0") depends_on("intel-tbb @2020.1:", when="+examples +tbb") + depends_on("intel-tbb @2020.1:", when="+examples @37.3:") depends_on("mlpack@3.1.1:", when="+mlpack") depends_on("nlohmann-json @3.9.1:", when="@0.14: +json") depends_on("nlohmann-json @3.10.5:", when="@37: +json") diff --git a/var/spack/repos/builtin/packages/detray/package.py b/var/spack/repos/builtin/packages/detray/package.py index 1d08d4134fa57c..ab94c97a835f33 100644 --- a/var/spack/repos/builtin/packages/detray/package.py +++ b/var/spack/repos/builtin/packages/detray/package.py @@ -20,6 +20,7 @@ class Detray(CMakePackage): license("MPL-2.0", checked_by="stephenswat") + version("0.81.0", sha256="821313a7e3ea90fcf5c92153d28bba1f85844e03d7c6b6b98d0b3407adb86357") version("0.80.0", sha256="a12f3e333778ddd20a568b5c8df5b2375f9a4d74caf921822c1864b07b3f8ab7") version("0.79.0", sha256="3b9f18cb003e59795a0e4b1414069ac8558b975714626449293a71bc4398a380") version("0.78.0", sha256="ca3a348f4e12ed690c3106197e107b9c393b6902224b2543b00382050864bcf3") diff --git a/var/spack/repos/builtin/packages/vecmem/package.py b/var/spack/repos/builtin/packages/vecmem/package.py index 3372b8e2692410..c647e396759059 100644 --- a/var/spack/repos/builtin/packages/vecmem/package.py +++ b/var/spack/repos/builtin/packages/vecmem/package.py @@ -17,6 +17,7 @@ class Vecmem(CMakePackage, CudaPackage): license("MPL-2.0-no-copyleft-exception") + version("1.11.0", sha256="8f4ef9b50da45ea245291e2a4fef86025245150df4a4654ecb708a20adec5c42") version("1.10.0", sha256="1fbdc599a65ad7b2cd1176844c7578da38911bc747fbe51a71e00d20e6105330") version("1.9.0", sha256="c1ddc43ff0d742306cbee71afd80efd348b6b0b1ba9e4210ca7f8b607f03bd70") version("1.8.0", sha256="d04f1bfcd08837f85c794a69da9f248e163985214a302c22381037feb5b3a7a9") From d44bdc40c93fdc6350aa02fc03a61ccc3f36d2d2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 16:12:16 +0100 Subject: [PATCH 302/615] boost: require +icu when +locale (#47396) --- var/spack/repos/builtin/packages/boost/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 75a6d543e4b6b1..0dbb60ae9b8fcb 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -246,6 +246,7 @@ def libs(self): depends_on("icu4c cxxstd=14", when="+icu cxxstd=14") depends_on("icu4c cxxstd=17", when="+icu cxxstd=17") conflicts("cxxstd=98", when="+icu") # Requires c++11 at least + conflicts("+locale ~icu") # Boost.Locale "strongly recommends" icu, so enforce it depends_on("python", when="+python") # https://github.com/boostorg/python/commit/cbd2d9f033c61d29d0a1df14951f4ec91e7d05cd From 2214fc855dc1be677693e0e88f18996a5f5b5fa8 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 4 Nov 2024 16:38:12 +0100 Subject: [PATCH 303/615] geant4-data: symlink only specific data dirs (#47367) Currently, the `geant4-data` spec creates symlink to all of its dependencies, and it does so by globbing their `share/` directories. This works very well for the way Spack installs these, but it doesn't work for anybody wanting to use e.g. the Geant4 data on CVMFS. See pull request #47298. This commit changes the way the `geant4-data` spec works. It no longer blindly globs directories and makes symlinks, but it asks its dependencies specifically for the name of their data directory. This should allow us to use Spack to use the CVMFS installations as externals. --- var/spack/repos/builtin/packages/g4abla/package.py | 9 +++++++-- var/spack/repos/builtin/packages/g4emlow/package.py | 9 +++++++-- .../repos/builtin/packages/g4ensdfstate/package.py | 9 +++++++-- var/spack/repos/builtin/packages/g4incl/package.py | 9 +++++++-- var/spack/repos/builtin/packages/g4ndl/package.py | 9 +++++++-- .../repos/builtin/packages/g4neutronxs/package.py | 9 +++++++-- .../repos/builtin/packages/g4nudexlib/package.py | 9 +++++++-- .../repos/builtin/packages/g4particlexs/package.py | 9 +++++++-- .../builtin/packages/g4photonevaporation/package.py | 11 +++++++---- var/spack/repos/builtin/packages/g4pii/package.py | 9 +++++++-- .../builtin/packages/g4radioactivedecay/package.py | 11 +++++++---- .../repos/builtin/packages/g4realsurface/package.py | 9 +++++++-- .../repos/builtin/packages/g4saiddata/package.py | 9 +++++++-- var/spack/repos/builtin/packages/g4tendl/package.py | 9 +++++++-- var/spack/repos/builtin/packages/g4urrpt/package.py | 9 +++++++-- .../repos/builtin/packages/geant4-data/package.py | 11 ++++++++--- 16 files changed, 113 insertions(+), 37 deletions(-) diff --git a/var/spack/repos/builtin/packages/g4abla/package.py b/var/spack/repos/builtin/packages/g4abla/package.py index 710d8de011829c..c36cb6f14845d0 100644 --- a/var/spack/repos/builtin/packages/g4abla/package.py +++ b/var/spack/repos/builtin/packages/g4abla/package.py @@ -24,13 +24,18 @@ class G4abla(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4ABLA{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4ABLA{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ABLADATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4ABLA{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py index 87c25b950b6121..458f6da76bf99b 100644 --- a/var/spack/repos/builtin/packages/g4emlow/package.py +++ b/var/spack/repos/builtin/packages/g4emlow/package.py @@ -35,13 +35,18 @@ class G4emlow(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4EMLOW{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4EMLOW{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "https://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4EMLOW{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4ensdfstate/package.py b/var/spack/repos/builtin/packages/g4ensdfstate/package.py index 59fe04f45deebf..6cb3904756d39d 100644 --- a/var/spack/repos/builtin/packages/g4ensdfstate/package.py +++ b/var/spack/repos/builtin/packages/g4ensdfstate/package.py @@ -25,11 +25,11 @@ class G4ensdfstate(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4ENSDFSTATE{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4ENSDFSTATE{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ENSDFSTATEDATA", install_path) def url_for_version(self, version): @@ -37,3 +37,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ENSDFSTATE.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4ENSDFSTATE{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4incl/package.py b/var/spack/repos/builtin/packages/g4incl/package.py index 479ce2dda269d1..056910d71408de 100644 --- a/var/spack/repos/builtin/packages/g4incl/package.py +++ b/var/spack/repos/builtin/packages/g4incl/package.py @@ -25,13 +25,18 @@ class G4incl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4INCL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4INCL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4INCLDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4INCL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4ndl/package.py b/var/spack/repos/builtin/packages/g4ndl/package.py index a8c8f688985555..fa94da01b307d0 100644 --- a/var/spack/repos/builtin/packages/g4ndl/package.py +++ b/var/spack/repos/builtin/packages/g4ndl/package.py @@ -25,13 +25,18 @@ class G4ndl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NDL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NDL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONHPDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4NDL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4neutronxs/package.py b/var/spack/repos/builtin/packages/g4neutronxs/package.py index 39f6915346ba04..595d86c71e0cc6 100644 --- a/var/spack/repos/builtin/packages/g4neutronxs/package.py +++ b/var/spack/repos/builtin/packages/g4neutronxs/package.py @@ -24,11 +24,11 @@ class G4neutronxs(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NEUTRONXS{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NEUTRONXS{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONXSDATA", install_path) def url_for_version(self, version): @@ -36,3 +36,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NEUTRONXS.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4NEUTRONXS{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4nudexlib/package.py b/var/spack/repos/builtin/packages/g4nudexlib/package.py index 073aebcc7f8fc4..2e02321fe4291f 100644 --- a/var/spack/repos/builtin/packages/g4nudexlib/package.py +++ b/var/spack/repos/builtin/packages/g4nudexlib/package.py @@ -23,13 +23,18 @@ class G4nudexlib(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NUDEXLIB{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NUDEXLIB{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NUDEXLIBDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NUDEXLIB.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4NUDEXLIB{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4particlexs/package.py b/var/spack/repos/builtin/packages/g4particlexs/package.py index fb86575b466cf1..209831dfa658f4 100644 --- a/var/spack/repos/builtin/packages/g4particlexs/package.py +++ b/var/spack/repos/builtin/packages/g4particlexs/package.py @@ -28,11 +28,11 @@ class G4particlexs(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4PARTICLEXS{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4PARTICLEXS{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEXSDATA", install_path) def url_for_version(self, version): @@ -40,3 +40,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4PARTICLEXS{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4photonevaporation/package.py b/var/spack/repos/builtin/packages/g4photonevaporation/package.py index 1c847dec3e8eb9..099ded6a5f7044 100644 --- a/var/spack/repos/builtin/packages/g4photonevaporation/package.py +++ b/var/spack/repos/builtin/packages/g4photonevaporation/package.py @@ -27,13 +27,11 @@ class G4photonevaporation(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "PhotonEvaporation{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path( - self.prefix.share, "data", "PhotonEvaporation{0}".format(self.version) - ) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEVELGAMMADATA", install_path) def url_for_version(self, version): @@ -42,3 +40,8 @@ def url_for_version(self, version): "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "PhotonEvaporation{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4pii/package.py b/var/spack/repos/builtin/packages/g4pii/package.py index a1aa5590bc1a42..c9cf78e5cb095e 100644 --- a/var/spack/repos/builtin/packages/g4pii/package.py +++ b/var/spack/repos/builtin/packages/g4pii/package.py @@ -22,13 +22,18 @@ class G4pii(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4PII{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4PII{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PIIDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "https://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4PII{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py index 69f5681b64996c..33a75291ffa24d 100644 --- a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py +++ b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py @@ -27,13 +27,11 @@ class G4radioactivedecay(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "RadioactiveDecay{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path( - self.prefix.share, "data", "RadioactiveDecay{0}".format(self.version) - ) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4RADIOACTIVEDATA", install_path) def url_for_version(self, version): @@ -42,3 +40,8 @@ def url_for_version(self, version): "http://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "RadioactiveDecay{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4realsurface/package.py b/var/spack/repos/builtin/packages/g4realsurface/package.py index 28f335bba029c3..1d924943647307 100644 --- a/var/spack/repos/builtin/packages/g4realsurface/package.py +++ b/var/spack/repos/builtin/packages/g4realsurface/package.py @@ -25,11 +25,11 @@ class G4realsurface(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "RealSurface{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "RealSurface{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4REALSURFACEDATA", install_path) def url_for_version(self, version): @@ -39,3 +39,8 @@ def url_for_version(self, version): "G4" if version > Version("1.0") else "", version ) ) + + @property + def g4datasetname(self): + spec = self.spec + return "RealSurface{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4saiddata/package.py b/var/spack/repos/builtin/packages/g4saiddata/package.py index 371811381b0967..b4da3185807f31 100644 --- a/var/spack/repos/builtin/packages/g4saiddata/package.py +++ b/var/spack/repos/builtin/packages/g4saiddata/package.py @@ -23,13 +23,18 @@ class G4saiddata(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4SAIDDATA{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4SAIDDATA{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4SAIDXSDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4SAIDDATA{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4tendl/package.py b/var/spack/repos/builtin/packages/g4tendl/package.py index 92c12423c27d5a..1a2e9095115c5a 100644 --- a/var/spack/repos/builtin/packages/g4tendl/package.py +++ b/var/spack/repos/builtin/packages/g4tendl/package.py @@ -24,13 +24,18 @@ class G4tendl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4TENDL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4TENDL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEHPDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4TENDL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4urrpt/package.py b/var/spack/repos/builtin/packages/g4urrpt/package.py index e9ff5df2840c3b..a04e6d5d1addc7 100644 --- a/var/spack/repos/builtin/packages/g4urrpt/package.py +++ b/var/spack/repos/builtin/packages/g4urrpt/package.py @@ -23,13 +23,18 @@ class G4urrpt(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4URRPT{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4URRPT{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4URRPTDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4URRPT.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4URRPT{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/geant4-data/package.py b/var/spack/repos/builtin/packages/geant4-data/package.py index 201d2e8d88f79a..3b934da3922bcb 100644 --- a/var/spack/repos/builtin/packages/geant4-data/package.py +++ b/var/spack/repos/builtin/packages/geant4-data/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import glob import os from spack.package import * @@ -204,5 +203,11 @@ def datadir(self): def install(self, spec, prefix): with working_dir(self.datadir, create=True): for s in spec.dependencies(): - for d in glob.glob("{0}/data/*".format(s.prefix.share)): - os.symlink(d, os.path.basename(d)) + if not s.name.startswith("g4"): + continue + + if not hasattr(s.package, "g4datasetname"): + raise InstallError(f"Dependency `{s.name}` does not expose `g4datasetname`") + + d = "{0}/data/{1}".format(s.prefix.share, s.package.g4datasetname) + os.symlink(d, os.path.basename(d)) From 8c3068809fec10bc193a0ea56063b068a363254b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Nov 2024 17:32:47 +0100 Subject: [PATCH 304/615] papi: add forward compat bound for cuda (#47409) --- var/spack/repos/builtin/packages/papi/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 7b22451ae2b357..4ce382af5f1b2f 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -85,6 +85,8 @@ class Papi(AutotoolsPackage, ROCmPackage): conflicts("%gcc@8:", when="@5.3.0", msg="Requires GCC version less than 8.0") conflicts("+sde", when="@:5", msg="Software defined events (SDE) added in 6.0.0") conflicts("^cuda", when="@:5", msg="CUDA support for versions < 6.0.0 not implemented") + # https://github.com/icl-utk-edu/papi/pull/205 + conflicts("^cuda@12.4:", when="@:7.1") conflicts("%cce", when="@7.1:", msg="-ffree-form flag not recognized") conflicts("@=6.0.0", when="+static_tools", msg="Static tools cannot build on version 6.0.0") From 23ac56edfb411f7b4cfadf843663dbb8827dab8c Mon Sep 17 00:00:00 2001 From: John Gouwar Date: Mon, 4 Nov 2024 12:48:18 -0500 Subject: [PATCH 305/615] Times spec building and timing to public concretizer API (#47310) This PR has two small contributions: - It adds another phase to the timer for concrectization, "construct_specs", to actually see the time the concretizer spends interpreting the `clingo` output to build the Python object for a concretized spec. - It adds the method `Solver.solve_with_stats` to expose the timers that were already in the concretizer to the public solver API. `Solver.solve` just becomes a special case of `Solver.solve_with_stats` that throws away the timing output (which is what it was already doing). These changes will make it easier to benchmark concretizer performance and provide a more complete picture of the time spent in the concretizer by including the time spent interpreting clingo output. --- lib/spack/spack/solver/asp.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index ba50ebccd01736..cb4799a45f37bf 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -889,6 +889,7 @@ def on_model(model): result.satisfiable = solve_result.satisfiable if result.satisfiable: + timer.start("construct_specs") # get the best model builder = SpecBuilder(specs, hash_lookup=setup.reusable_and_possible) min_cost, best_model = min(models) @@ -913,7 +914,8 @@ def on_model(model): # record the possible dependencies in the solve result.possible_dependencies = setup.pkgs - + timer.stop("construct_specs") + timer.stop() elif cores: result.control = self.control result.cores.extend(cores) @@ -4191,7 +4193,7 @@ def _check_input_and_extract_concrete_specs(specs): spack.spec.Spec.ensure_valid_variants(s) return reusable - def solve( + def solve_with_stats( self, specs, out=None, @@ -4202,6 +4204,8 @@ def solve( allow_deprecated=False, ): """ + Concretize a set of specs and track the timing and statistics for the solve + Arguments: specs (list): List of ``Spec`` objects to solve for. out: Optionally write the generate ASP program to a file-like object. @@ -4213,15 +4217,22 @@ def solve( setup_only (bool): if True, stop after setup and don't solve (default False). allow_deprecated (bool): allow deprecated version in the solve """ - # Check upfront that the variants are admissible specs = [s.lookup_hash() for s in specs] reusable_specs = self._check_input_and_extract_concrete_specs(specs) reusable_specs.extend(self.selector.reusable_specs(specs)) setup = SpackSolverSetup(tests=tests) output = OutputConfiguration(timers=timers, stats=stats, out=out, setup_only=setup_only) - result, _, _ = self.driver.solve( + return self.driver.solve( setup, specs, reuse=reusable_specs, output=output, allow_deprecated=allow_deprecated ) + + def solve(self, specs, **kwargs): + """ + Convenience function for concretizing a set of specs and ignoring timing + and statistics. Uses the same kwargs as solve_with_stats. + """ + # Check upfront that the variants are admissible + result, _, _ = self.solve_with_stats(specs, **kwargs) return result def solve_in_rounds( From 575a006ca332846615f0afb21357b15b64476a9e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 22 Sep 2024 22:44:39 -0700 Subject: [PATCH 306/615] `cc`: simplify ordered list handling `cc` divides most paths up into system paths, spack managed paths, and other paths. This gets really repetitive and makes the code hard to read. Simplify the script by adding some functions to do most of the redundant work for us. Signed-off-by: Todd Gamblin --- lib/spack/env/cc | 179 +++++++++++++++++------------------------------ 1 file changed, 65 insertions(+), 114 deletions(-) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index ccfc14bb89dc53..44f8b9316afe4f 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -238,6 +238,36 @@ esac } " +# path_list functions. Path_lists have 3 parts: spack_store_, and system_, +# which are used to prioritize paths when assembling the final command line. + +# init_path_lists LISTNAME +# Set , spack_store_, and system_ to "". +init_path_lists() { + eval "spack_store_$1=\"\"" + eval "$1=\"\"" + eval "system_$1=\"\"" +} + +# assign_path_lists LISTNAME1 LISTNAME2 +# Copy contents of LISTNAME2 into LISTNAME1, for each path_list prefix. +assign_path_lists() { + eval "spack_store_$1=\"\${spack_store_$2}\"" + eval "$1=\"\${$2}\"" + eval "system_$1=\"\${system_$2}\"" +} + +# append_path_lists LISTNAME ELT +# Append the provided ELT to the appropriate list, based on the result of path_order(). +append_path_lists() { + path_order "$2" + case $? in + 0) eval "append spack_store_$1 \"\$2\"" ;; + 1) eval "append $1 \"\$2\"" ;; + 2) eval "append system_$1 \"\$2\"" ;; + esac +} + # Check if optional parameters are defined # If we aren't asking for debug flags, don't add them if [ -z "${SPACK_ADD_DEBUG_FLAGS:-}" ]; then @@ -470,12 +500,7 @@ input_command="$*" parse_Wl() { while [ $# -ne 0 ]; do if [ "$wl_expect_rpath" = yes ]; then - path_order "$1" - case $? in - 0) append return_spack_store_rpath_dirs_list "$1" ;; - 1) append return_rpath_dirs_list "$1" ;; - 2) append return_system_rpath_dirs_list "$1" ;; - esac + append_path_lists return_rpath_dirs_list "$1" wl_expect_rpath=no else case "$1" in @@ -484,24 +509,14 @@ parse_Wl() { if [ -z "$arg" ]; then shift; continue fi - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; --rpath=*) arg="${1#--rpath=}" if [ -z "$arg" ]; then shift; continue fi - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; -rpath|--rpath) wl_expect_rpath=yes @@ -509,8 +524,7 @@ parse_Wl() { "$dtags_to_strip") ;; -Wl) - # Nested -Wl,-Wl means we're in NAG compiler territory, we don't support - # it. + # Nested -Wl,-Wl means we're in NAG compiler territory. We don't support it. return 1 ;; *) @@ -529,21 +543,10 @@ categorize_arguments() { return_other_args_list="" return_isystem_was_used="" - return_isystem_spack_store_include_dirs_list="" - return_isystem_system_include_dirs_list="" - return_isystem_include_dirs_list="" - - return_spack_store_include_dirs_list="" - return_system_include_dirs_list="" - return_include_dirs_list="" - - return_spack_store_lib_dirs_list="" - return_system_lib_dirs_list="" - return_lib_dirs_list="" - - return_spack_store_rpath_dirs_list="" - return_system_rpath_dirs_list="" - return_rpath_dirs_list="" + init_path_lists return_isystem_include_dirs_list + init_path_lists return_include_dirs_list + init_path_lists return_lib_dirs_list + init_path_lists return_rpath_dirs_list # Global state for keeping track of -Wl,-rpath -Wl,/path wl_expect_rpath=no @@ -609,32 +612,17 @@ categorize_arguments() { arg="${1#-isystem}" return_isystem_was_used=true if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_isystem_spack_store_include_dirs_list "$arg" ;; - 1) append return_isystem_include_dirs_list "$arg" ;; - 2) append return_isystem_system_include_dirs_list "$arg" ;; - esac + append_path_lists return_isystem_include_dirs_list "$arg" ;; -I*) arg="${1#-I}" if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_spack_store_include_dirs_list "$arg" ;; - 1) append return_include_dirs_list "$arg" ;; - 2) append return_system_include_dirs_list "$arg" ;; - esac + append_path_lists return_include_dirs_list "$arg" ;; -L*) arg="${1#-L}" if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_spack_store_lib_dirs_list "$arg" ;; - 1) append return_lib_dirs_list "$arg" ;; - 2) append return_system_lib_dirs_list "$arg" ;; - esac + append_path_lists return_lib_dirs_list "$arg" ;; -l*) # -loopopt=0 is generated erroneously in autoconf <= 2.69, @@ -667,32 +655,17 @@ categorize_arguments() { break elif [ "$xlinker_expect_rpath" = yes ]; then # Register the path of -Xlinker -rpath -Xlinker - path_order "$1" - case $? in - 0) append return_spack_store_rpath_dirs_list "$1" ;; - 1) append return_rpath_dirs_list "$1" ;; - 2) append return_system_rpath_dirs_list "$1" ;; - esac + append_path_lists return_rpath_dirs_list "$1" xlinker_expect_rpath=no else case "$1" in -rpath=*) arg="${1#-rpath=}" - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; --rpath=*) arg="${1#--rpath=}" - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; -rpath|--rpath) xlinker_expect_rpath=yes @@ -731,21 +704,10 @@ categorize_arguments() { categorize_arguments "$@" -spack_store_include_dirs_list="$return_spack_store_include_dirs_list" -system_include_dirs_list="$return_system_include_dirs_list" -include_dirs_list="$return_include_dirs_list" - -spack_store_lib_dirs_list="$return_spack_store_lib_dirs_list" -system_lib_dirs_list="$return_system_lib_dirs_list" -lib_dirs_list="$return_lib_dirs_list" - -spack_store_rpath_dirs_list="$return_spack_store_rpath_dirs_list" -system_rpath_dirs_list="$return_system_rpath_dirs_list" -rpath_dirs_list="$return_rpath_dirs_list" - -isystem_spack_store_include_dirs_list="$return_isystem_spack_store_include_dirs_list" -isystem_system_include_dirs_list="$return_isystem_system_include_dirs_list" -isystem_include_dirs_list="$return_isystem_include_dirs_list" +assign_path_lists isystem_include_dirs_list return_isystem_include_dirs_list +assign_path_lists include_dirs_list return_include_dirs_list +assign_path_lists lib_dirs_list return_lib_dirs_list +assign_path_lists rpath_dirs_list return_rpath_dirs_list isystem_was_used="$return_isystem_was_used" other_args_list="$return_other_args_list" @@ -821,21 +783,10 @@ IFS="$lsep" categorize_arguments $spack_flags_list unset IFS -spack_flags_isystem_spack_store_include_dirs_list="$return_isystem_spack_store_include_dirs_list" -spack_flags_isystem_system_include_dirs_list="$return_isystem_system_include_dirs_list" -spack_flags_isystem_include_dirs_list="$return_isystem_include_dirs_list" - -spack_flags_spack_store_include_dirs_list="$return_spack_store_include_dirs_list" -spack_flags_system_include_dirs_list="$return_system_include_dirs_list" -spack_flags_include_dirs_list="$return_include_dirs_list" - -spack_flags_spack_store_lib_dirs_list="$return_spack_store_lib_dirs_list" -spack_flags_system_lib_dirs_list="$return_system_lib_dirs_list" -spack_flags_lib_dirs_list="$return_lib_dirs_list" - -spack_flags_spack_store_rpath_dirs_list="$return_spack_store_rpath_dirs_list" -spack_flags_system_rpath_dirs_list="$return_system_rpath_dirs_list" -spack_flags_rpath_dirs_list="$return_rpath_dirs_list" +assign_path_lists spack_flags_isystem_include_dirs_list return_isystem_include_dirs_list +assign_path_lists spack_flags_include_dirs_list return_include_dirs_list +assign_path_lists spack_flags_lib_dirs_list return_lib_dirs_list +assign_path_lists spack_flags_rpath_dirs_list return_rpath_dirs_list spack_flags_isystem_was_used="$return_isystem_was_used" spack_flags_other_args_list="$return_other_args_list" @@ -894,7 +845,7 @@ esac case "$mode" in cpp|cc|as|ccld) if [ "$spack_flags_isystem_was_used" = "true" ] || [ "$isystem_was_used" = "true" ]; then - extend isystem_spack_store_include_dirs_list SPACK_STORE_INCLUDE_DIRS + extend spack_store_isystem_include_dirs_list SPACK_STORE_INCLUDE_DIRS extend isystem_include_dirs_list SPACK_INCLUDE_DIRS else extend spack_store_include_dirs_list SPACK_STORE_INCLUDE_DIRS @@ -910,32 +861,32 @@ args_list="$flags_list" # Include search paths partitioned by (in store, non-sytem, system) # NOTE: adding ${lsep} to the prefix here turns every added element into two -extend args_list spack_flags_spack_store_include_dirs_list -I +extend args_list spack_store_spack_flags_include_dirs_list -I extend args_list spack_store_include_dirs_list -I extend args_list spack_flags_include_dirs_list -I extend args_list include_dirs_list -I -extend args_list spack_flags_isystem_spack_store_include_dirs_list "-isystem${lsep}" -extend args_list isystem_spack_store_include_dirs_list "-isystem${lsep}" +extend args_list spack_store_spack_flags_isystem_include_dirs_list "-isystem${lsep}" +extend args_list spack_store_isystem_include_dirs_list "-isystem${lsep}" extend args_list spack_flags_isystem_include_dirs_list "-isystem${lsep}" extend args_list isystem_include_dirs_list "-isystem${lsep}" -extend args_list spack_flags_system_include_dirs_list -I +extend args_list system_spack_flags_include_dirs_list -I extend args_list system_include_dirs_list -I -extend args_list spack_flags_isystem_system_include_dirs_list "-isystem${lsep}" -extend args_list isystem_system_include_dirs_list "-isystem${lsep}" +extend args_list system_spack_flags_isystem_include_dirs_list "-isystem${lsep}" +extend args_list system_isystem_include_dirs_list "-isystem${lsep}" # Library search paths partitioned by (in store, non-sytem, system) -extend args_list spack_flags_spack_store_lib_dirs_list "-L" +extend args_list spack_store_spack_flags_lib_dirs_list "-L" extend args_list spack_store_lib_dirs_list "-L" extend args_list spack_flags_lib_dirs_list "-L" extend args_list lib_dirs_list "-L" -extend args_list spack_flags_system_lib_dirs_list "-L" +extend args_list system_spack_flags_lib_dirs_list "-L" extend args_list system_lib_dirs_list "-L" # RPATHs arguments @@ -944,26 +895,26 @@ case "$mode" in if [ -n "$dtags_to_add" ] ; then append args_list "$linker_arg$dtags_to_add" fi - extend args_list spack_flags_spack_store_rpath_dirs_list "$rpath" + extend args_list spack_store_spack_flags_rpath_dirs_list "$rpath" extend args_list spack_store_rpath_dirs_list "$rpath" extend args_list spack_flags_rpath_dirs_list "$rpath" extend args_list rpath_dirs_list "$rpath" - extend args_list spack_flags_system_rpath_dirs_list "$rpath" + extend args_list system_spack_flags_rpath_dirs_list "$rpath" extend args_list system_rpath_dirs_list "$rpath" ;; ld) if [ -n "$dtags_to_add" ] ; then append args_list "$dtags_to_add" fi - extend args_list spack_flags_spack_store_rpath_dirs_list "-rpath${lsep}" + extend args_list spack_store_spack_flags_rpath_dirs_list "-rpath${lsep}" extend args_list spack_store_rpath_dirs_list "-rpath${lsep}" extend args_list spack_flags_rpath_dirs_list "-rpath${lsep}" extend args_list rpath_dirs_list "-rpath${lsep}" - extend args_list spack_flags_system_rpath_dirs_list "-rpath${lsep}" + extend args_list system_spack_flags_rpath_dirs_list "-rpath${lsep}" extend args_list system_rpath_dirs_list "-rpath${lsep}" ;; esac From 5cc07522abef9fa169cfa341e431c030dbbff7fe Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 27 Oct 2024 21:54:08 -0700 Subject: [PATCH 307/615] cc: parse RPATHs when in `ld` mode In the pure `ld` case, we weren't actually parsing `RPATH` arguments separately as we do for `ccld`. Fix this by adding *another* nested case statement for raw `RPATH` parsing. There are now 3 places where we deal with `-rpath` and friends, but I don't see a great way to unify them, as `-Wl,`, `-Xlinker`, and raw `-rpath` arguments are all ever so slightly different. Also, this Fixes ordering of assertions to make `pytest` diffs more intelligible. The meaning of `+` and `-` in diffs changed in `pytest` 6.0 and the "preferred" order for assertions became `assert actual == expected` instead of the other way around. Signed-off-by: Todd Gamblin --- lib/spack/env/cc | 67 ++++++++++++++++++++++++++------------ lib/spack/spack/test/cc.py | 39 +++++++++++++++++++++- 2 files changed, 85 insertions(+), 21 deletions(-) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index 44f8b9316afe4f..88969d3f3097f7 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -101,10 +101,9 @@ setsep() { esac } -# prepend LISTNAME ELEMENT [SEP] +# prepend LISTNAME ELEMENT # -# Prepend ELEMENT to the list stored in the variable LISTNAME, -# assuming the list is separated by SEP. +# Prepend ELEMENT to the list stored in the variable LISTNAME. # Handles empty lists and single-element lists. prepend() { varname="$1" @@ -682,7 +681,36 @@ categorize_arguments() { "$dtags_to_strip") ;; *) - append return_other_args_list "$1" + # if mode is not ld, we can just add to other args + if [ "$mode" != "ld" ]; then + append return_other_args_list "$1" + shift + continue + fi + + # if we're in linker mode, we need to parse raw RPATH args + case "$1" in + -rpath=*) + arg="${1#-rpath=}" + append_path_lists return_rpath_dirs_list "$arg" + ;; + --rpath=*) + arg="${1#--rpath=}" + append_path_lists return_rpath_dirs_list "$arg" + ;; + -rpath|--rpath) + if [ $# -eq 1 ]; then + # -rpath without value: let the linker raise an error. + append return_other_args_list "$1" + break + fi + shift + append_path_lists return_rpath_dirs_list "$1" + ;; + *) + append return_other_args_list "$1" + ;; + esac ;; esac shift @@ -890,35 +918,34 @@ extend args_list system_spack_flags_lib_dirs_list "-L" extend args_list system_lib_dirs_list "-L" # RPATHs arguments +rpath_prefix="" case "$mode" in ccld) if [ -n "$dtags_to_add" ] ; then append args_list "$linker_arg$dtags_to_add" fi - extend args_list spack_store_spack_flags_rpath_dirs_list "$rpath" - extend args_list spack_store_rpath_dirs_list "$rpath" - - extend args_list spack_flags_rpath_dirs_list "$rpath" - extend args_list rpath_dirs_list "$rpath" - - extend args_list system_spack_flags_rpath_dirs_list "$rpath" - extend args_list system_rpath_dirs_list "$rpath" + rpath_prefix="$rpath" ;; ld) if [ -n "$dtags_to_add" ] ; then append args_list "$dtags_to_add" fi - extend args_list spack_store_spack_flags_rpath_dirs_list "-rpath${lsep}" - extend args_list spack_store_rpath_dirs_list "-rpath${lsep}" - - extend args_list spack_flags_rpath_dirs_list "-rpath${lsep}" - extend args_list rpath_dirs_list "-rpath${lsep}" - - extend args_list system_spack_flags_rpath_dirs_list "-rpath${lsep}" - extend args_list system_rpath_dirs_list "-rpath${lsep}" + rpath_prefix="-rpath${lsep}" ;; esac +# if mode is ccld or ld, extend RPATH lists with the prefix determined above +if [ -n "$rpath_prefix" ]; then + extend args_list spack_store_spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list spack_store_rpath_dirs_list "$rpath_prefix" + + extend args_list spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list rpath_dirs_list "$rpath_prefix" + + extend args_list system_spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list system_rpath_dirs_list "$rpath_prefix" +fi + # Other arguments from the input command extend args_list other_args_list extend args_list spack_flags_other_args_list diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 4a394680f480b8..f65bef9b0161d4 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -199,7 +199,7 @@ def check_args(cc, args, expected): """ with set_env(SPACK_TEST_COMMAND="dump-args"): cc_modified_args = cc(*args, output=str).strip().split("\n") - assert expected == cc_modified_args + assert cc_modified_args == expected def check_args_contents(cc, args, must_contain, must_not_contain): @@ -272,6 +272,43 @@ def test_ld_mode(wrapper_environment): assert dump_mode(ld, ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath,foo"]) == "ld" +def test_ld_unterminated_rpath(wrapper_environment): + check_args( + ld, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-rpath"], + ["ld", "--disable-new-dtags", "foo.o", "bar.o", "baz.o", "-o", "foo", "-rpath"], + ) + + +def test_xlinker_unterminated_rpath(wrapper_environment): + check_args( + cc, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Xlinker", "-rpath"], + [real_cc] + + target_args + + [ + "-Wl,--disable-new-dtags", + "foo.o", + "bar.o", + "baz.o", + "-o", + "foo", + "-Xlinker", + "-rpath", + ], + ) + + +def test_wl_unterminated_rpath(wrapper_environment): + check_args( + cc, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath"], + [real_cc] + + target_args + + ["-Wl,--disable-new-dtags", "foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath"], + ) + + def test_ld_flags(wrapper_environment, wrapper_flags): check_args( ld, From 38c8069ab42f44aa9f4779968937fc6842dc2109 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Mon, 4 Nov 2024 11:31:57 -0800 Subject: [PATCH 308/615] filesystem.py: add `max_depth` argument to `find` (#41945) * `find(..., max_depth=...)` can be used to control how many directories at most to descend into below the starting point * `find` now enters every unique (symlinked) directory once at the lowest depth * `find` is now repeatable: it traverses the directory tree in a deterministic order --- lib/spack/llnl/util/filesystem.py | 175 +++++++++++++----- lib/spack/spack/test/llnl/util/file_list.py | 32 +--- lib/spack/spack/test/llnl/util/filesystem.py | 158 +++++++++++++++- .../packages/attributes-foo/package.py | 4 +- 4 files changed, 292 insertions(+), 77 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 00bb270151908c..b63b6e94b39a2e 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1673,16 +1673,20 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find(root, files, recursive=True): +def find(root, files, recursive=True, max_depth: Optional[int] = None): """Search for ``files`` starting from the ``root`` directory. Like GNU/BSD find but written entirely in Python. + Specifically this behaves like `find -type f`: it only returns + results that are files. When searching recursively, this behaves + as `find` with the `-L` option (follows symlinks). + Examples: .. code-block:: console - $ find /usr -name python + $ find -L /usr -name python is equivalent to: @@ -1712,6 +1716,8 @@ def find(root, files, recursive=True): files (str or collections.abc.Sequence): Library name(s) to search for recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to True. + max_depth (int): if set, don't search below this depth. Cannot be set + if recursive is False Returns: list: The files that have been found @@ -1719,59 +1725,135 @@ def find(root, files, recursive=True): if isinstance(files, str): files = [files] - if recursive: - tty.debug(f"Find (recursive): {root} {str(files)}") - result = _find_recursive(root, files) - else: - tty.debug(f"Find (not recursive): {root} {str(files)}") - result = _find_non_recursive(root, files) + # If recursive is false, max_depth can only be None or 0 + if max_depth and not recursive: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") + + if not recursive: + max_depth = 0 + elif max_depth is None: + max_depth = sys.maxsize + + tty.debug(f"Find (max depth = {max_depth}): {root} {str(files)}") + result = find_max_depth(root, files, max_depth) tty.debug(f"Find complete: {root} {str(files)}") return result -@system_path_filter -def _find_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict. The idea is that - # we want to poke the filesystem as little as possible, but still maintain - # stability in the order of the answer. Thus we are recording each library - # found in a key, and reconstructing the stable order later. - found_files = collections.defaultdict(list) +@system_path_filter(arg_slice=slice(1)) +def find_max_depth(root, globs, max_depth: Optional[int] = None): + """Given a set of non-recursive glob file patterns, finds all + files matching those patterns up to a maximum specified depth. - # Make the path absolute to have os.walk also return an absolute path - root = os.path.abspath(root) - for path, _, list_files in os.walk(root): - for search_file in search_files: - matches = glob.glob(os.path.join(path, search_file)) - matches = [os.path.join(path, x) for x in matches] - found_files[search_file].extend(matches) + If a directory has a name which matches an input pattern, it will + not be included in the results. - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) + If ``max_depth`` is specified, does not search below that depth. - return answer + If ``globs`` is a list, files matching earlier entries are placed + in the return value before files matching later entries. + """ + # If root doesn't exist, then we say we found nothing. If it + # exists but is not a dir, we assume the user would want to + # know; likewise if it exists but we do not have permission to + # access it. + try: + stat_root = os.stat(root) + except OSError as e: + if e.errno == errno.ENOENT: + return [] + else: + raise + if not stat.S_ISDIR(stat_root.st_mode): + raise ValueError(f"{root} is not a directory") + if max_depth is None: + max_depth = sys.maxsize -@system_path_filter -def _find_non_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict as os.list_dir - # can return files in any order (does not preserve stability) - found_files = collections.defaultdict(list) + if isinstance(globs, str): + globs = [globs] + # Apply normcase to regular expressions and to the filenames: + # this respects case-sensitivity semantics of different OSes + # (e.g. file search is typically case-insensitive on Windows) + regexes = [re.compile(fnmatch.translate(os.path.normcase(x))) for x in globs] - # Make the path absolute to have absolute path returned + # Note later calls to os.scandir etc. return abspaths if the + # input is absolute, see https://docs.python.org/3/library/os.html#os.DirEntry.path root = os.path.abspath(root) - for search_file in search_files: - matches = glob.glob(os.path.join(root, search_file)) - matches = [os.path.join(root, x) for x in matches] - found_files[search_file].extend(matches) + found_files = collections.defaultdict(list) - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) + def _dir_id(stat_info): + # Note: on windows, st_ino is the file index and st_dev + # is the volume serial number. See + # https://github.com/python/cpython/blob/3.9/Python/fileutils.c + return (stat_info.st_ino, stat_info.st_dev) + + def _log_file_access_issue(e): + errno_name = errno.errorcode.get(e.errno, "UNKNOWN") + tty.debug(f"find must skip {dir_entry.path}: {errno_name} {str(e)}") + + visited_dirs = set([_dir_id(stat_root)]) + + # Each queue item stores the depth and path + # This achieves a consistent traversal order by iterating through + # each directory in alphabetical order. + # This also traverses in BFS order to ensure finding the shortest + # path to any file (or one of the shortest paths, if there are + # several - the one returned will be consistent given the prior + # point). + dir_queue = collections.deque([(0, root)]) + while dir_queue: + depth, next_dir = dir_queue.pop() + try: + dir_iter = os.scandir(next_dir) + except OSError: + # Most commonly, this would be a permissions issue, for + # example if we are scanning an external directory like /usr + continue - return answer + with dir_iter: + ordered_entries = sorted(dir_iter, key=lambda x: x.name) + for dir_entry in ordered_entries: + try: + it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) + except OSError as e: + # Possible permission issue, or a symlink that cannot + # be resolved (ELOOP). + _log_file_access_issue(e) + continue + + if it_is_a_dir and (depth < max_depth): + try: + # The stat should be performed in a try/except block. + # We repeat that here vs. moving to the above block + # because we only want to call `stat` if we haven't + # exceeded our max_depth + if sys.platform == "win32": + # Note: st_ino/st_dev on DirEntry.stat are not set on + # Windows, so we have to call os.stat + stat_info = os.stat(dir_entry.path, follow_symlinks=True) + else: + stat_info = dir_entry.stat(follow_symlinks=True) + except OSError as e: + _log_file_access_issue(e) + continue + + dir_id = _dir_id(stat_info) + if dir_id not in visited_dirs: + dir_queue.appendleft((depth + 1, dir_entry.path)) + visited_dirs.add(dir_id) + else: + fname = os.path.basename(dir_entry.path) + for pattern in regexes: + if pattern.match(os.path.normcase(fname)): + found_files[pattern].append(os.path.join(next_dir, fname)) + + # TODO: for fully-recursive searches, we can print a warning after + # after having searched everything up to some fixed depth + + return list(itertools.chain(*[found_files[x] for x in regexes])) # Utilities for libraries and headers @@ -2210,7 +2292,9 @@ def find_system_libraries(libraries, shared=True): return libraries_found -def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): +def find_libraries( + libraries, root, shared=True, recursive=False, runtime=True, max_depth: Optional[int] = None +): """Returns an iterable of full paths to libraries found in a root dir. Accepts any glob characters accepted by fnmatch: @@ -2231,6 +2315,8 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): otherwise for static. Defaults to True. recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to False. + max_depth (int): if set, don't search below this depth. Cannot be set + if recursive is False runtime (bool): Windows only option, no-op elsewhere. If true, search for runtime shared libs (.DLL), otherwise, search for .Lib files. If shared is false, this has no meaning. @@ -2239,6 +2325,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): Returns: LibraryList: The libraries that have been found """ + if isinstance(libraries, str): libraries = [libraries] elif not isinstance(libraries, collections.abc.Sequence): @@ -2271,8 +2358,10 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): libraries = ["{0}.{1}".format(lib, suffix) for lib in libraries for suffix in suffixes] if not recursive: + if max_depth: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") # If not recursive, look for the libraries directly in root - return LibraryList(find(root, libraries, False)) + return LibraryList(find(root, libraries, recursive=False)) # To speedup the search for external packages configured e.g. in /usr, # perform first non-recursive search in root/lib then in root/lib64 and @@ -2290,7 +2379,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): if found_libs: break else: - found_libs = find(root, libraries, True) + found_libs = find(root, libraries, recursive=True, max_depth=max_depth) return LibraryList(found_libs) diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index 75ba3ae89d9aca..e2ff5a82109510 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -9,7 +9,7 @@ import pytest -from llnl.util.filesystem import HeaderList, LibraryList, find, find_headers, find_libraries +from llnl.util.filesystem import HeaderList, LibraryList, find_headers, find_libraries import spack.paths @@ -324,33 +324,3 @@ def test_searching_order(search_fn, search_list, root, kwargs): # List should be empty here assert len(rlist) == 0 - - -@pytest.mark.parametrize( - "root,search_list,kwargs,expected", - [ - ( - search_dir, - "*/*bar.tx?", - {"recursive": False}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ( - search_dir, - "*/*bar.tx?", - {"recursive": True}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ], -) -def test_find_with_globbing(root, search_list, kwargs, expected): - matches = find(root, search_list, **kwargs) - assert sorted(matches) == sorted(expected) diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index a0c98747698b20..01379be94c0614 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -6,6 +6,7 @@ """Tests for ``llnl/util/filesystem.py``""" import filecmp import os +import pathlib import shutil import stat import sys @@ -14,7 +15,8 @@ import pytest import llnl.util.filesystem as fs -from llnl.util.symlink import islink, readlink, symlink +import llnl.util.symlink +from llnl.util.symlink import _windows_can_symlink, islink, readlink, symlink import spack.paths @@ -1035,3 +1037,157 @@ def test_windows_sfn(tmpdir): assert "d\\LONGER~1" in fs.windows_sfn(d) assert "d\\LONGER~2" in fs.windows_sfn(e) shutil.rmtree(tmpdir.join("d")) + + +@pytest.fixture +def dir_structure_with_things_to_find(tmpdir): + """ + / + dir_one/ + file_one + dir_two/ + dir_three/ + dir_four/ + file_two + file_three + file_four + """ + dir_one = tmpdir.join("dir_one").ensure(dir=True) + tmpdir.join("dir_two").ensure(dir=True) + dir_three = tmpdir.join("dir_three").ensure(dir=True) + dir_four = dir_three.join("dir_four").ensure(dir=True) + + locations = {} + locations["file_one"] = str(dir_one.join("file_one").ensure()) + locations["file_two"] = str(dir_four.join("file_two").ensure()) + locations["file_three"] = str(dir_three.join("file_three").ensure()) + locations["file_four"] = str(tmpdir.join("file_four").ensure()) + + return str(tmpdir), locations + + +def test_find_max_depth(dir_structure_with_things_to_find): + root, locations = dir_structure_with_things_to_find + + # Make sure the paths we use to verify are absolute + assert os.path.isabs(locations["file_one"]) + + assert set(fs.find_max_depth(root, "file_*", 0)) == {locations["file_four"]} + assert set(fs.find_max_depth(root, "file_*", 1)) == { + locations["file_one"], + locations["file_three"], + locations["file_four"], + } + assert set(fs.find_max_depth(root, "file_two", 2)) == {locations["file_two"]} + assert not set(fs.find_max_depth(root, "file_two", 1)) + assert set(fs.find_max_depth(root, "file_two")) == {locations["file_two"]} + assert set(fs.find_max_depth(root, "file_*")) == set(locations.values()) + + +def test_find_max_depth_relative(dir_structure_with_things_to_find): + """find_max_depth should return absolute paths even if + the provided path is relative. + """ + root, locations = dir_structure_with_things_to_find + with fs.working_dir(root): + assert set(fs.find_max_depth(".", "file_*", 0)) == {locations["file_four"]} + assert set(fs.find_max_depth(".", "file_two", 2)) == {locations["file_two"]} + + +@pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) +def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): + root = str(tmpdir) + error_str = "cannot be set if recursive is False" + with pytest.raises(ValueError, match=error_str): + fs.find(root, ["some_file"], recursive=recursive, max_depth=max_depth) + + with pytest.raises(ValueError, match=error_str): + fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) + + +def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): + """ + "lx-dy" means "level x, directory y" + "lx-fy" means "level x, file y" + "lx-sy" means "level x, symlink y" + + / + l1-d1/ + l2-d1/ + l3-s1 -> l1-d2 # points to directory above l2-d1 + l3-d2/ + l4-f1 + l3-s3 -> l1-d1 # cyclic link + l3-d4/ + l4-f2 + l1-d2/ + l2-f1 + l2-d2/ + l3-f3 + l2-s3 -> l2-d2 + l1-s3 -> l3-d4 # a link that "skips" a directory level + l1-s4 -> l2-s3 # a link to a link to a dir + """ + if sys.platform == "win32" and (not use_junctions) and (not _windows_can_symlink()): + pytest.skip("This Windows instance is not configured with symlink support") + + l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) + l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) + l3_d2 = l2_d1.join("l3-d2").ensure(dir=True) + l3_d4 = l2_d1.join("l3-d4").ensure(dir=True) + l1_d2 = tmpdir.join("l1-d2").ensure(dir=True) + l2_d2 = l1_d2.join("l1-d2").ensure(dir=True) + + if use_junctions: + link_fn = llnl.util.symlink._windows_create_junction + else: + link_fn = os.symlink + + link_fn(l1_d2, pathlib.Path(l2_d1) / "l3-s1") + link_fn(l1_d1, pathlib.Path(l2_d1) / "l3-s3") + link_fn(l3_d4, pathlib.Path(tmpdir) / "l1-s3") + l2_s3 = pathlib.Path(l1_d2) / "l2-s3" + link_fn(l2_d2, l2_s3) + link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") + + locations = {} + locations["l4-f1"] = str(l3_d2.join("l4-f1").ensure()) + locations["l4-f2-full"] = str(l3_d4.join("l4-f2").ensure()) + locations["l4-f2-link"] = str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2") + locations["l2-f1"] = str(l1_d2.join("l2-f1").ensure()) + locations["l2-f1-link"] = str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1") + locations["l3-f3-full"] = str(l2_d2.join("l3-f3").ensure()) + locations["l3-f3-link-l1"] = str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3") + + return str(tmpdir), locations + + +def _check_find_links(root, locations): + root = pathlib.Path(root) + assert set(fs.find_max_depth(root, "l4-f1")) == {locations["l4-f1"]} + assert set(fs.find_max_depth(root / "l1-s3", "l4-f2", 0)) == {locations["l4-f2-link"]} + assert set(fs.find_max_depth(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} + # File is accessible via symlink and subdir, the link path will be + # searched first, and the directory will not be searched again when + # it is encountered the second time (via not-link) in the traversal + assert set(fs.find_max_depth(root, "l4-f2")) == {locations["l4-f2-link"]} + # File is accessible only via the dir, so the full file path should + # be reported + assert set(fs.find_max_depth(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} + # Check following links to links + assert set(fs.find_max_depth(root, "l3-f3")) == {locations["l3-f3-link-l1"]} + + +@pytest.mark.parametrize( + "use_junctions", + [ + False, + pytest.param( + True, + marks=pytest.mark.skipif(sys.platform != "win32", reason="Only Windows has junctions"), + ), + ], +) +def test_find_max_depth_symlinks(tmpdir, use_junctions): + root, locations = dir_structure_with_things_to_find_links(tmpdir, use_junctions=use_junctions) + _check_find_links(root, locations) diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py index 31c88f4b08564a..b882fc9b6595b6 100644 --- a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py +++ b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py @@ -44,7 +44,7 @@ def libs(self): # Header provided by the bar virutal package @property def bar_headers(self): - return find_headers("bar/bar", root=self.home.include, recursive=False) + return find_headers("bar", root=self.home.include, recursive=True) # Libary provided by the bar virtual package @property @@ -59,7 +59,7 @@ def baz_home(self): # Header provided by the baz virtual package @property def baz_headers(self): - return find_headers("baz/baz", root=self.baz_home.include, recursive=False) + return find_headers("baz", root=self.baz_home.include, recursive=True) # Library provided by the baz virtual package @property From 6924c530e2a619801efcc5b5c29b9fa945876049 Mon Sep 17 00:00:00 2001 From: Darren Bolduc Date: Mon, 4 Nov 2024 14:50:54 -0500 Subject: [PATCH 309/615] google-cloud-cpp: add v2.29.0, v2.30.0 (#47146) * google-cloud-cpp: add v2.29.0; fix cxx-std versions * d'oh, single value for the variant --- .../builtin/packages/google-cloud-cpp/package.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/google-cloud-cpp/package.py b/var/spack/repos/builtin/packages/google-cloud-cpp/package.py index 7a477505cc94ca..e66aedae3f67b1 100644 --- a/var/spack/repos/builtin/packages/google-cloud-cpp/package.py +++ b/var/spack/repos/builtin/packages/google-cloud-cpp/package.py @@ -18,6 +18,8 @@ class GoogleCloudCpp(CMakePackage): sanity_check_is_dir = ["lib", "include"] + version("2.30.0", sha256="170650b11ece54977b42dd85be648b6bd2d614ff68ea6863a0013865e576b49c") + version("2.29.0", sha256="758e1eca8186b962516c0659b34ce1768ba1c9769cfd998c5bbffb084ad901ff") version("2.28.0", sha256="1d51910cb4419f6100d8b9df6bccd33477d09f50e378f12b06dae0f137ed7bc6") depends_on("abseil-cpp") @@ -30,11 +32,17 @@ class GoogleCloudCpp(CMakePackage): variant("shared", default=False, description="Build shared instead of static libraries") variant( "cxxstd", - default="11", - values=("11", "14", "17", "20"), + default="14", + values=("14", "17", "20"), multi=False, description="Use the specified C++ standard when building.", ) + variant( + "libraries", + default="__ga_libraries__", + multi=False, + description="Which client libraries to build/install. e.g. libraries=bigtable,storage", + ) def cmake_args(self): args = [ @@ -43,6 +51,6 @@ def cmake_args(self): "-DBUILD_TESTING:Bool=OFF", "-DGOOGLE_CLOUD_CPP_WITH_MOCKS:Bool=OFF", "-DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES:Bool=OFF", - "-DGOOGLE_CLOUD_CPP_ENABLE:String=__ga_libraries__", + self.define_from_variant("GOOGLE_CLOUD_CPP_ENABLE", "libraries"), ] return args From 0de6c174774d8fb22a8a5cfbf7b42e7e445ac47c Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam Date: Tue, 5 Nov 2024 01:24:48 +0530 Subject: [PATCH 310/615] fix the error libroctx64.so.o not found when executing MIOpenDriver (#47196) --- ...cer-when-building-miopendriver-6.1.0.patch | 26 ++++++++++++++ ...cer-when-building-miopendriver-6.2.0.patch | 26 ++++++++++++++ ...002-add-include-dir-miopen-hip-6.1.0.patch | 35 ------------------- .../builtin/packages/miopen-hip/package.py | 13 +++---- 4 files changed, 59 insertions(+), 41 deletions(-) create mode 100644 var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch create mode 100644 var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch delete mode 100644 var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch new file mode 100644 index 00000000000000..c12450b45164bb --- /dev/null +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch @@ -0,0 +1,26 @@ +From bbfc08e034b80d8b8c6895cb74c38544ffa9a9b4 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 24 Oct 2024 14:01:27 +0000 +Subject: [PATCH] link with roctracer when building miopendriver for 6.1.0 + +--- + driver/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt +index 7d4fdbb..31de1ba 100644 +--- a/driver/CMakeLists.txt ++++ b/driver/CMakeLists.txt +@@ -34,6 +34,9 @@ endif() + add_dependencies(MIOpenDriver generate_kernels) + target_include_directories(MIOpenDriver PRIVATE ../src/kernels) + target_link_libraries(MIOpenDriver MIOpen Threads::Threads) ++if(MIOPEN_USE_ROCTRACER) ++ target_link_libraries(MIOpenDriver ${rocTracer}) ++endif() + if(NOT MIOPEN_EMBED_DB STREQUAL "") + target_link_libraries(MIOpenDriver $ ) + endif() +-- +2.39.3 + diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch new file mode 100644 index 00000000000000..fd8a3bb88c4abe --- /dev/null +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch @@ -0,0 +1,26 @@ +From 5565f0bf0a8e7b8217ed1a943a4210fec303ec42 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 24 Oct 2024 13:55:01 +0000 +Subject: [PATCH] link with roctracer when building miopendriver + +--- + driver/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt +index 8f19a90..6c701d6 100644 +--- a/driver/CMakeLists.txt ++++ b/driver/CMakeLists.txt +@@ -64,6 +64,9 @@ endif() + add_dependencies(MIOpenDriver generate_kernels) + target_include_directories(MIOpenDriver PRIVATE ../src/kernels) + target_link_libraries(MIOpenDriver MIOpen Threads::Threads roc::rocrand) ++if(MIOPEN_USE_ROCTRACER) ++ target_link_libraries(MIOpenDriver ${rocTracer}) ++endif() + if(NOT MIOPEN_EMBED_DB STREQUAL "") + target_link_libraries(MIOpenDriver $ ) + endif() +-- +2.39.3 + diff --git a/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch deleted file mode 100644 index 44e68e401c1cea..00000000000000 --- a/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1693afd9690b97fcceff09ffce765712e3c7361a Mon Sep 17 00:00:00 2001 -From: Renjith Ravindran -Date: Mon, 29 Apr 2024 08:01:47 +0000 -Subject: [PATCH] Adding roctracer-dev include and library path - ---- - src/CMakeLists.txt | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 0741a60..84b6805 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -739,6 +739,9 @@ if(WIN32) - endif() - - target_include_directories(MIOpen SYSTEM PUBLIC $) -+target_include_directories(MIOpen SYSTEM PUBLIC "${NLOHMANN_JSON_INCLUDE}") -+target_include_directories(MIOpen SYSTEM PUBLIC "${ROCTRACER_INCLUDE_DIR}") -+target_include_directories(MIOpen SYSTEM PUBLIC "${SQLITE_INCLUDE_DIR}") - # Workaround : change in rocm-cmake was causing linking error so had to add ${CMAKE_DL_LIBS} - # We can remove ${CMAKE_DL_LIBS} once root cause is identified. - target_link_libraries(MIOpen PRIVATE ${CMAKE_DL_LIBS} Threads::Threads BZip2::BZip2 ${MIOPEN_CK_LINK_FLAGS}) -@@ -861,7 +864,7 @@ if(NOT WIN32 AND NOT APPLE) - endif() - - if(MIOPEN_USE_ROCTRACER) -- target_link_libraries(MIOpen PRIVATE roctx64) -+ target_link_libraries(MIOpen PRIVATE "${ROCTRACER_LIB_DIR}/libroctx64.so") - endif() - - ############################################################ --- -2.31.1 - diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index 73c7d08c6c1da1..c9544379f46dae 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -63,7 +63,8 @@ class MiopenHip(CMakePackage): patch("miopen-hip-include-nlohmann-include-directory.patch", when="@5.4.0:5.7") patch("0002-add-include-dir-miopen-hip-6.0.0.patch", when="@6.0") - patch("0002-add-include-dir-miopen-hip-6.1.0.patch", when="@6.1") + patch("0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch", when="@6.1") + patch("0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch", when="@6.2:") patch( "https://github.com/ROCm/MIOpen/commit/f60aa1ff89f8fb596b4a6a4c70aa7d557803db87.patch?full_index=1", sha256="7f382c872d89f22da1ad499e85ffe9881cc7404c8465e42877a210a09382e2ea", @@ -135,7 +136,7 @@ class MiopenHip(CMakePackage): depends_on("nlohmann-json", type="link") depends_on(f"rocmlir@{ver}", when=f"@{ver}") for ver in ["6.0.0", "6.0.2", "6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1"]: - depends_on("roctracer-dev@" + ver, when="@" + ver) + depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") for ver in ["6.1.0", "6.1.1", "6.1.2"]: depends_on("googletest") for ver in ["6.2.0", "6.2.1"]: @@ -200,19 +201,19 @@ def cmake_args(self): args.append(self.define("MIOPEN_USE_MLIR", "OFF")) if self.spec.satisfies("@5.7.0:"): args.append(self.define("MIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK", "OFF")) - if self.spec.satisfies("@6:6.1"): + if self.spec.satisfies("@6.0"): args.append( "-DROCTRACER_INCLUDE_DIR={0}".format(self.spec["roctracer-dev"].prefix.include) ) args.append("-DROCTRACER_LIB_DIR={0}".format(self.spec["roctracer-dev"].prefix.lib)) - if self.spec.satisfies("@6.1"): args.append("-DSQLITE_INCLUDE_DIR={0}".format(self.spec["sqlite"].prefix.include)) - if self.spec.satisfies("@6.2:"): + if self.spec.satisfies("@6.1:"): + args.append(self.define("MIOPEN_USE_ROCTRACER", "ON")) args.append( self.define( "CMAKE_CXX_FLAGS", f"-I{self.spec['roctracer-dev'].prefix.include} " - f"-L{self.spec['roctracer-dev'].prefix.lib} " + f"-L{self.spec['roctracer-dev'].prefix.roctracer.lib} " f"-I{self.spec['nlohmann-json'].prefix.include} " f"-I{self.spec['sqlite'].prefix.include} ", ) From c7659df4af728395f100cc9f88706be8186b4f1c Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Mon, 4 Nov 2024 18:30:55 -0500 Subject: [PATCH 311/615] libxc: add v7.0.0 (#47263) --- var/spack/repos/builtin/packages/libxc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index 84e6878512970c..46ff91c34f1378 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -15,6 +15,7 @@ class Libxc(AutotoolsPackage, CudaPackage): license("MPL-2.0-no-copyleft-exception") + version("7.0.0", sha256="8d4e343041c9cd869833822f57744872076ae709a613c118d70605539fb13a77") version("6.2.2", sha256="d1b65ef74615a1e539d87a0e6662f04baf3a2316706b4e2e686da3193b26b20f") version("6.2.1", sha256="da96fc4f6e4221734986f49758b410ffe1d406efd3538761062a4af57a2bd272") version("6.2.0", sha256="31edb72c69157b6c0beaff1f10cbbb6348ce7579ef81d8f286764e5ab61194d1") From c8873ea35c00023ad4c7b12f3c91a22034125ade Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 4 Nov 2024 17:33:41 -0600 Subject: [PATCH 312/615] dyninst: patch broken builds for 10.0.0:12.2.0 (#47339) * dyninst: patch broken builds for 10.0.0:12.3.0 * Only apply before 12.3.0 --- .../packages/dyninst/missing_include_deque.patch | 11 +++++++++++ var/spack/repos/builtin/packages/dyninst/package.py | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch diff --git a/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch b/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch new file mode 100644 index 00000000000000..cee31fdbb0c5ee --- /dev/null +++ b/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch @@ -0,0 +1,11 @@ +diff --git a/dataflowAPI/src/AbslocInterface.C b/dataflowAPI/src/AbslocInterface.C +index 9d7ad000c..582e64004 100644 +--- a/dataflowAPI/src/AbslocInterface.C ++++ b/dataflowAPI/src/AbslocInterface.C +@@ -29,6 +29,7 @@ + */ + + ++#include + #include "Absloc.h" + #include "AbslocInterface.h" diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index f71ab53fb762ba..cca8a3026eb7e6 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -110,6 +110,11 @@ class Dyninst(CMakePackage): patch("stackanalysis_h.patch", when="@9.2.0") patch("v9.3.2-auto.patch", when="@9.3.2 %gcc@:4.7") patch("tribool.patch", when="@9.3.0:10.0.0 ^boost@1.69:") + patch( + "missing_include_deque.patch", + when="@10.0.0:12.2.0", + sha256="0064d8d51bd01bd0035e1ebc49276f627ce6366d4524c92cf47d3c09b0031f96", + ) requires("%gcc", when="@:13.0.0", msg="dyninst builds only with GCC") From 5a29c9d82bac87546e7436248a9b9d5342ab1c29 Mon Sep 17 00:00:00 2001 From: Edward Hartnett <38856240+edwardhartnett@users.noreply.github.com> Date: Mon, 4 Nov 2024 18:48:48 -0700 Subject: [PATCH 313/615] added g2c-2.0.0 (#47399) --- var/spack/repos/builtin/packages/g2c/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index 1ddc6fe37a7313..d4cb7c74a25915 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -18,6 +18,7 @@ class G2c(CMakePackage): maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett") version("develop", branch="develop") + version("2.0.0", sha256="39c23bf1219c60101548c8525e3a879c84119558f768081779d404a8caf4cec9") version("1.9.0", sha256="5554276e18bdcddf387a08c2dd23f9da310c6598905df6a2a244516c22ded9aa") version("1.8.0", sha256="4ce9f5a7cb0950699fe08ebc5a463ab4d09ef550c050391a319308a2494f971f") version("1.7.0", sha256="73afba9da382fed73ed8692d77fa037bb313280879cd4012a5e5697dccf55175") From 54aaa95a3517fa0c9068eaf98655fe13813d2968 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Mon, 4 Nov 2024 20:51:23 -0500 Subject: [PATCH 314/615] flux: new package (#47392) --- .../repos/builtin/packages/flux/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flux/package.py diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py new file mode 100644 index 00000000000000..934f9d56554f20 --- /dev/null +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -0,0 +1,39 @@ +# 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) + + +from spack.package import * + + +class Flux(CMakePackage): + """A C++20 library for sequence-orientated programming""" + + homepage = "https://tristanbrindle.com/flux/" + url = "https://github.com/tcbrindle/flux/archive/refs/tags/v0.4.0.tar.gz" + + maintainers("pranav-sivaraman") + + license("BSL-1.0", checked_by="pranav-sivaraman") + + version("0.4.0", sha256="95e7d9d71c9ee9e89bb24b46ccba77ddfb0a1580630c2faab0b415dacc7c8d56") + + variant("docs", default=False, description="Build Flux documentation") + + depends_on("cxx", type="build") + depends_on("cmake@3.23:", type="build") + + with default_args(when="+docs"): + depends_on("py-sphinx") + depends_on("py-sphinx-copybutton") + depends_on("py-furo") + + def cmake_args(self): + args = [ + self.define("FLUX_BUILD_TESTS", self.run_tests), + self.define("FLUX_BUILD_EXAMPLES", False), + self.define_from_variant("FLUX_BUILD_DOCS", "docs"), + ] + + return args From 8650ba3cea6cfd15713f6f76898ef4e0d53e2abe Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Tue, 5 Nov 2024 01:55:29 +0000 Subject: [PATCH 315/615] prometheus-cpp: added package prometheus-cpp (#47384) * prometheus-cpp: added package prometheus-cpp * prometheus-cpp: edited PR for style --- .../packages/prometheus-cpp/package.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 var/spack/repos/builtin/packages/prometheus-cpp/package.py diff --git a/var/spack/repos/builtin/packages/prometheus-cpp/package.py b/var/spack/repos/builtin/packages/prometheus-cpp/package.py new file mode 100644 index 00000000000000..fc1a62b150d254 --- /dev/null +++ b/var/spack/repos/builtin/packages/prometheus-cpp/package.py @@ -0,0 +1,30 @@ +# 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) + + +from spack.package import * + + +class PrometheusCpp(CMakePackage): + """Prometheus Client Library for Modern C++.""" + + homepage = "https://jupp0r.github.io/prometheus-cpp/" + url = "https://github.com/jupp0r/prometheus-cpp/releases/download/v1.2.4/prometheus-cpp-with-submodules.tar.gz" + git = "https://github.com/jupp0r/prometheus-cpp.git" + + license("MIT", checked_by="mdorier") + + version("master", branch="master", submodules=True) + version("1.2.4", sha256="0d6852291063c35853e88805c73b52f73c0c08b78c1e7bc4d588fcf72a7172eb") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.14.0:", type="build") + depends_on("zlib") + depends_on("curl") + + def cmake_args(self): + args = ["-DBUILD_SHARED_LIBS=ON", "-DENABLE_TESTING=OFF"] + return args From f8da72cffe07d8836159c7bc6984c13fa4bb2656 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 5 Nov 2024 03:34:47 +0100 Subject: [PATCH 316/615] pythia8: Include patch for C++20 / Clang (#47400) * pythia8: Include patch for C++20 / Clang Pythia8 vendors some FJCore sources that are as of Pythia8 312 incompatible with C++20 on clang. This adds a patch that makes it compatible in these scenarios * Add issue link * rename setup_cxxstd function * Remove an accidental printout * Apply patch to all compilers, add lower bound --- .../repos/builtin/packages/pythia8/package.py | 17 +++++---- .../pythia8-cpp20-fjcore-forward-decl.patch | 37 +++++++++++++++++++ 2 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch diff --git a/var/spack/repos/builtin/packages/pythia8/package.py b/var/spack/repos/builtin/packages/pythia8/package.py index 7bf7494b7db79a..d70cc40d3fabe3 100644 --- a/var/spack/repos/builtin/packages/pythia8/package.py +++ b/var/spack/repos/builtin/packages/pythia8/package.py @@ -132,17 +132,20 @@ class Pythia8(AutotoolsPackage): filter_compiler_wrappers("Makefile.inc", relative_root="share/Pythia8/examples") @run_before("configure") - def setup_cxxstd(self): + def setup_configure(self): filter_file( r"-std=c\+\+[0-9][0-9]", f"-std=c++{self.spec.variants['cxxstd'].value}", "configure" ) - # Fix for https://gitlab.com/Pythia8/releases/-/issues/428 - @when("@:8.311") - def patch(self): - filter_file( - r"[/]examples[/]Makefile[.]inc\|;n' \\", "/examples/Makefile.inc|' \\", "configure" - ) + # Fix for https://gitlab.com/Pythia8/releases/-/issues/428 + with when("@:8.311"): + filter_file( + r"[/]examples[/]Makefile[.]inc\|;n' \\", "/examples/Makefile.inc|' \\", "configure" + ) + + # Fix for https://gitlab.com/Pythia8/releases/-/issues/523 + with when("@8.307:8.312 cxxstd=20"): + patch("pythia8-cpp20-fjcore-forward-decl.patch") def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch b/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch new file mode 100644 index 00000000000000..447e73cba582fb --- /dev/null +++ b/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch @@ -0,0 +1,37 @@ +diff --git a/src/FJcore.cc b/src/FJcore.cc +index c60108e2..afd32eee 100644 +--- a/src/FJcore.cc ++++ b/src/FJcore.cc +@@ -730,14 +730,10 @@ FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh + class ClosestPair2D : public ClosestPair2DBase { + public: + ClosestPair2D(const std::vector & positions, +- const Coord2D & left_corner, const Coord2D & right_corner) { +- _initialize(positions, left_corner, right_corner, positions.size()); +- }; ++ const Coord2D & left_corner, const Coord2D & right_corner); + ClosestPair2D(const std::vector & positions, + const Coord2D & left_corner, const Coord2D & right_corner, +- const unsigned int max_size) { +- _initialize(positions, left_corner, right_corner, max_size); +- }; ++ const unsigned int max_size); + void closest_pair(unsigned int & ID1, unsigned int & ID2, + double & distance2) const; + void remove(unsigned int ID); +@@ -808,6 +804,15 @@ public: + return coord.distance2(other.coord); + }; + }; ++inline ClosestPair2D::ClosestPair2D(const std::vector & positions, ++ const Coord2D & left_corner, const Coord2D & right_corner) { ++ _initialize(positions, left_corner, right_corner, positions.size()); ++}; ++inline ClosestPair2D::ClosestPair2D(const std::vector & positions, ++ const Coord2D & left_corner, const Coord2D & right_corner, ++ const unsigned int max_size) { ++ _initialize(positions, left_corner, right_corner, max_size); ++}; + inline bool floor_ln2_less(unsigned x, unsigned y) { + if (x>y) return false; + return (x < (x^y)); // beware of operator precedence... From dcc199ae63d0d979bf73ee555b75a8e6756d5ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Tue, 5 Nov 2024 04:34:08 +0000 Subject: [PATCH 317/615] extrae: fix typo (#47406) --- var/spack/repos/builtin/packages/extrae/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index 24f12bba595749..832f0cd21fcb35 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -128,7 +128,7 @@ def configure_args(self): args += ( ["--with-cuda=%s" % spec["cuda"].prefix] - if spec.satisifes("+cuda") + if spec.satisfies("+cuda") else ["--without-cuda"] ) From b862eec6bc47fc19bf927cdd6fe145f72e8e99e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Tue, 5 Nov 2024 04:43:02 +0000 Subject: [PATCH 318/615] extrae: add more versions (#47408) --- var/spack/repos/builtin/packages/extrae/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index 832f0cd21fcb35..ea7fc38bbb8496 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -42,6 +42,15 @@ class Extrae(AutotoolsPackage): license("LGPL-2.1-or-later") + version("4.2.3", sha256="c132f3609b2e6f34d95ca1598eea01e5097257b6a663bb9698206ec271825ed0") + version("4.2.2", sha256="1f776f1a3401942b79685ba13489a954a731bce7cbb8549594f6da0b557c58a7") + version("4.2.1", sha256="0260a9a4952b6ac9b82ee33ee2749c22ae10d39447e42167a2626c77f664bb9a") + version("4.2.0", sha256="7b83a1ed008440bbc1bda88297d2d0e9256780db1cf8401b3c12718451f8919a") + version("4.1.7", sha256="0ed87449f74db0abc239ee8c40176e89f9ca6a69738fe751ec0df8fc46da1712") + version("4.1.6", sha256="9f146e70311b8ae9d77584f6efc7b30478885cfd095f7bd3937d5b08aec19985") + version("4.1.5", sha256="ab425f2e155e9af3332c01177df1776a6a953e721dfe8774eb23733f942b76a0") + version("4.1.4", sha256="6b5894bea046273a0d2a5c72204937ad310b2f88cd5d87d10f5ca0aaf1d637da") + version("4.1.3", sha256="889f136ddcfec2f8f9401b24ee29ebf74cf055e4e524c54821aba25513c24c03") version("4.1.2", sha256="adbc1d3aefde7649262426d471237dc96f070b93be850a6f15280ed86fd0b952") version("4.0.6", sha256="233be38035dd76f6877b1fd93d308e024e5d4ef5519d289f8e319cd6c58d0bc6") version("4.0.5", sha256="8f5eefa95f2e94a3b5f9b7f7cbaaed523862f190575ee797113b1e97deff1586") From 5b59a53545513925fc895d2ab71cffdc079a9aa4 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 22:59:04 -0600 Subject: [PATCH 319/615] py-configspace: fix homepage (#47417) --- var/spack/repos/builtin/packages/py-configspace/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-configspace/package.py b/var/spack/repos/builtin/packages/py-configspace/package.py index 6a392b6276fea6..78d56f17adfb99 100644 --- a/var/spack/repos/builtin/packages/py-configspace/package.py +++ b/var/spack/repos/builtin/packages/py-configspace/package.py @@ -12,7 +12,7 @@ class PyConfigspace(PythonPackage): maintainers("Kerilk", "mdorier") - homepage = "https://automl.github.io/ConfigSpace/master/" + homepage = "https://automl.github.io/ConfigSpace/latest/" pypi = "configspace/configspace-1.0.0.tar.gz" license("BSD-3-Clause") From 703cd6a313c09e8e5974d540721368b2931308ff Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 23:08:17 -0600 Subject: [PATCH 320/615] py-eventlet: fix url (#47418) * py-eventlet: fix url * py-eventlet: fix checksum --- var/spack/repos/builtin/packages/py-eventlet/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-eventlet/package.py b/var/spack/repos/builtin/packages/py-eventlet/package.py index 03e440844d37a2..e5bf12d6f8ca6c 100644 --- a/var/spack/repos/builtin/packages/py-eventlet/package.py +++ b/var/spack/repos/builtin/packages/py-eventlet/package.py @@ -10,11 +10,11 @@ class PyEventlet(PythonPackage): """Concurrent networking library for Python""" homepage = "https://github.com/eventlet/eventlet" - url = "https://github.com/eventlet/eventlet/releases/download/v0.22.0/eventlet-0.22.0.tar.gz" + url = "https://github.com/eventlet/eventlet/archive/refs/tags/v0.22.0.tar.gz" license("MIT") - version("0.22.0", sha256="6d22464f448fdf144a9d566c157299d686bbe324554dd7729df9ccd05ca66439") + version("0.22.0", sha256="c4cc92268b82eb94d5e0de0592159157d68122d394f480e3f9a9d6ddb695655e") depends_on("py-setuptools", type="build") depends_on("py-greenlet@0.3:") From 6822f99cc6a8f00641b27489916ee85782bcab63 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 23:12:57 -0600 Subject: [PATCH 321/615] quicksilver: fix homepage (#47419) --- var/spack/repos/builtin/packages/quicksilver/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/quicksilver/package.py b/var/spack/repos/builtin/packages/quicksilver/package.py index 61357eed447601..061619b2b75648 100644 --- a/var/spack/repos/builtin/packages/quicksilver/package.py +++ b/var/spack/repos/builtin/packages/quicksilver/package.py @@ -13,7 +13,7 @@ class Quicksilver(MakefilePackage): tags = ["proxy-app"] - homepage = "https://codesign.llnl.gov/quicksilver.php" + homepage = "https://asc.llnl.gov/codes/proxy-apps/quicksilver" url = "https://github.com/LLNL/Quicksilver/tarball/V1.0" git = "https://github.com/LLNL/Quicksilver.git" From 9310fcabd8cfcba838898735af00d789678cfb28 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 4 Nov 2024 23:13:17 -0600 Subject: [PATCH 322/615] sst-dumpi: fix homepage (#47420) --- var/spack/repos/builtin/packages/sst-dumpi/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py index fd4cee80038bfc..f796e33e3e6fd5 100644 --- a/var/spack/repos/builtin/packages/sst-dumpi/package.py +++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py @@ -14,7 +14,7 @@ class SstDumpi(AutotoolsPackage): information, and PAPI counters. """ - homepage = "http://sst.sandia.gov/about_dumpi.html" + homepage = "https://github.com/sstsimulator/sst-dumpi" url = "https://github.com/sstsimulator/sst-dumpi/archive/refs/tags/v13.0.0_Final.tar.gz" git = "https://github.com/sstsimulator/sst-dumpi.git" From e42e54160516d59a65ca9dc4c94cae9182aada41 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Mon, 4 Nov 2024 22:23:16 -0700 Subject: [PATCH 323/615] openmpi: add 4.1.7 (#47427) Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 4b2c81dc033967..58105a90f7538f 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -63,6 +63,9 @@ class Openmpi(AutotoolsPackage, CudaPackage): version( "5.0.0", sha256="9d845ca94bc1aeb445f83d98d238cd08f6ec7ad0f73b0f79ec1668dbfdacd613" ) # libmpi.so.40.40.0 + version( + "4.1.7", sha256="54a33cb7ad81ff0976f15a6cc8003c3922f0f3d8ceed14e1813ef3603f22cd34" + ) # libmpi.so.40.30.7 version( "4.1.6", sha256="f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415" ) # libmpi.so.40.30.6 From 14bc900e9db7ddaaf32d79c32386a9c81f65c18b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 5 Nov 2024 07:46:49 +0100 Subject: [PATCH 324/615] spack.concretize: add type-hints, remove kwargs (#47382) Also remove find_spec, which was used by the old concretizer. Currently, it seems to be used only in tests. --- lib/spack/docs/conf.py | 1 + lib/spack/spack/cmd/__init__.py | 2 +- lib/spack/spack/concretize.py | 117 +++++++-------------- lib/spack/spack/environment/environment.py | 18 ++-- lib/spack/spack/test/concretize.py | 38 +------ 5 files changed, 52 insertions(+), 124 deletions(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 4873e3e104d6b3..18495d4bca51f3 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -214,6 +214,7 @@ def setup(sphinx): # Spack classes that intersphinx is unable to resolve ("py:class", "spack.version.StandardVersion"), ("py:class", "spack.spec.DependencySpec"), + ("py:class", "spack.spec.ArchSpec"), ("py:class", "spack.spec.InstallStatus"), ("py:class", "spack.spec.SpecfileReaderBase"), ("py:class", "spack.install_test.Pb"), diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 031b29f9528c79..7cf032c90749a0 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -194,7 +194,7 @@ def _concretize_spec_pairs(to_concretize, tests=False): elif unify == "when_possible": concretize_method = spack.concretize.concretize_together_when_possible - concretized = concretize_method(*to_concretize, tests=tests) + concretized = concretize_method(to_concretize, tests=tests) return [concrete for _, concrete in concretized] diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index fabfdbb523a749..122e6c59c03dbc 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -2,20 +2,17 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -""" -(DEPRECATED) Used to contain the code for the original concretizer -""" +"""High-level functions to concretize list of specs""" import sys import time from contextlib import contextmanager -from itertools import chain -from typing import Tuple +from typing import Iterable, Optional, Sequence, Tuple, Union import llnl.util.tty as tty import spack.config import spack.error -from spack.spec import Spec +from spack.spec import ArchSpec, CompilerSpec, Spec CHECK_COMPILER_EXISTENCE = True @@ -36,91 +33,59 @@ def enable_compiler_existence_check(): CHECK_COMPILER_EXISTENCE = saved -def find_spec(spec, condition, default=None): - """Searches the dag from spec in an intelligent order and looks - for a spec that matches a condition""" - # First search parents, then search children - deptype = ("build", "link") - dagiter = chain( - spec.traverse(direction="parents", deptype=deptype, root=False), - spec.traverse(direction="children", deptype=deptype, root=False), - ) - visited = set() - for relative in dagiter: - if condition(relative): - return relative - visited.add(id(relative)) - - # Then search all other relatives in the DAG *except* spec - for relative in spec.root.traverse(deptype="all"): - if relative is spec: - continue - if id(relative) in visited: - continue - if condition(relative): - return relative - - # Finally search spec itself. - if condition(spec): - return spec - - return default # Nothing matched the condition; return default. - - -def concretize_specs_together(*abstract_specs, **kwargs): +SpecPair = Tuple[Spec, Spec] +SpecLike = Union[Spec, str] +TestsType = Union[bool, Iterable[str]] + + +def concretize_specs_together( + abstract_specs: Sequence[SpecLike], tests: TestsType = False +) -> Sequence[Spec]: """Given a number of specs as input, tries to concretize them together. Args: - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - *abstract_specs: abstract specs to be concretized, given either - as Specs or strings - - Returns: - List of concretized specs + abstract_specs: abstract specs to be concretized + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. """ import spack.solver.asp allow_deprecated = spack.config.get("config:deprecated", False) solver = spack.solver.asp.Solver() - result = solver.solve( - abstract_specs, tests=kwargs.get("tests", False), allow_deprecated=allow_deprecated - ) + result = solver.solve(abstract_specs, tests=tests, allow_deprecated=allow_deprecated) return [s.copy() for s in result.specs] -def concretize_together(*spec_list, **kwargs): +def concretize_together( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: """Given a number of specs as input, tries to concretize them together. Args: - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is already concrete spec or None if not yet concretized - - Returns: - List of tuples of abstract and concretized specs + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. """ to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] abstract_specs = [abstract for abstract, _ in spec_list] - concrete_specs = concretize_specs_together(*to_concretize, **kwargs) + concrete_specs = concretize_specs_together(to_concretize, tests=tests) return list(zip(abstract_specs, concrete_specs)) -def concretize_together_when_possible(*spec_list, **kwargs): +def concretize_together_when_possible( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: """Given a number of specs as input, tries to concretize them together to the extent possible. See documentation for ``unify: when_possible`` concretization for the precise definition of "to the extent possible". Args: - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is already concrete spec or None if not yet concretized - - Returns: - List of tuples of abstract and concretized specs + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. """ to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] old_concrete_to_abstract = { @@ -131,7 +96,7 @@ def concretize_together_when_possible(*spec_list, **kwargs): solver = spack.solver.asp.Solver() allow_deprecated = spack.config.get("config:deprecated", False) for result in solver.solve_in_rounds( - to_concretize, tests=kwargs.get("tests", False), allow_deprecated=allow_deprecated + to_concretize, tests=tests, allow_deprecated=allow_deprecated ): result_by_user_spec.update(result.specs_by_input) @@ -143,19 +108,17 @@ def concretize_together_when_possible(*spec_list, **kwargs): ] -def concretize_separately(*spec_list, **kwargs): - """Given a number of specs as input, tries to concretize them together. +def concretize_separately( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: + """Concretizes the input specs separately from each other. Args: - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - *spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is already concrete spec or None if not yet concretized - - Returns: - List of tuples of abstract and concretized specs + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. """ - tests = kwargs.get("tests", False) to_concretize = [abstract for abstract, concrete in spec_list if not concrete] args = [ (i, str(abstract), tests) @@ -215,7 +178,7 @@ def concretize_separately(*spec_list, **kwargs): ] -def _concretize_task(packed_arguments) -> Tuple[int, Spec, float]: +def _concretize_task(packed_arguments: Tuple[int, str, TestsType]) -> Tuple[int, Spec, float]: index, spec_str, tests = packed_arguments with tty.SuppressOutput(msg_enabled=False): start = time.time() @@ -227,10 +190,10 @@ class UnavailableCompilerVersionError(spack.error.SpackError): """Raised when there is no available compiler that satisfies a compiler spec.""" - def __init__(self, compiler_spec, arch=None): - err_msg = "No compilers with spec {0} found".format(compiler_spec) + def __init__(self, compiler_spec: CompilerSpec, arch: Optional[ArchSpec] = None) -> None: + err_msg = f"No compilers with spec {compiler_spec} found" if arch: - err_msg += " for operating system {0} and target {1}.".format(arch.os, arch.target) + err_msg += f" for operating system {arch.os} and target {arch.target}." super().__init__( err_msg, diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index b61332a0abc92c..7cf1057fa5c62b 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -14,7 +14,7 @@ import urllib.parse import urllib.request import warnings -from typing import Any, Dict, Iterable, List, Optional, Tuple, Union +from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union import llnl.util.filesystem as fs import llnl.util.tty as tty @@ -55,7 +55,7 @@ from spack.spec_list import SpecList from spack.util.path import substitute_path_variables -SpecPair = Tuple[spack.spec.Spec, spack.spec.Spec] +SpecPair = spack.concretize.SpecPair #: environment variable used to indicate the active environment spack_env_var = "SPACK_ENV" @@ -1533,9 +1533,7 @@ def _get_specs_to_concretize( ] return new_user_specs, kept_user_specs, specs_to_concretize - def _concretize_together_where_possible( - self, tests: bool = False - ) -> List[Tuple[spack.spec.Spec, spack.spec.Spec]]: + def _concretize_together_where_possible(self, tests: bool = False) -> Sequence[SpecPair]: # Avoid cyclic dependency import spack.solver.asp @@ -1550,7 +1548,7 @@ def _concretize_together_where_possible( ret = [] result = spack.concretize.concretize_together_when_possible( - *specs_to_concretize, tests=tests + specs_to_concretize, tests=tests ) for abstract, concrete in result: # Only add to the environment if it's from this environment (not included in) @@ -1563,7 +1561,7 @@ def _concretize_together_where_possible( return ret - def _concretize_together(self, tests: bool = False) -> List[SpecPair]: + def _concretize_together(self, tests: bool = False) -> Sequence[SpecPair]: """Concretization strategy that concretizes all the specs in the same DAG. """ @@ -1577,8 +1575,8 @@ def _concretize_together(self, tests: bool = False) -> List[SpecPair]: self.specs_by_hash = {} try: - concretized_specs: List[SpecPair] = spack.concretize.concretize_together( - *specs_to_concretize, tests=tests + concretized_specs = spack.concretize.concretize_together( + specs_to_concretize, tests=tests ) except spack.error.UnsatisfiableSpecError as e: # "Enhance" the error message for multiple root specs, suggest a less strict @@ -1627,7 +1625,7 @@ def _concretize_separately(self, tests=False): to_concretize = [ (root, None) for root in self.user_specs if root not in old_concretized_user_specs ] - concretized_specs = spack.concretize.concretize_separately(*to_concretize, tests=tests) + concretized_specs = spack.concretize.concretize_separately(to_concretize, tests=tests) by_hash = {} for abstract, concrete in concretized_specs: diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 4d9940ea9bb815..bf96311d4499cd 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -33,7 +33,6 @@ import spack.store import spack.util.file_cache import spack.variant as vt -from spack.concretize import find_spec from spack.installer import PackageInstaller from spack.spec import CompilerSpec, Spec from spack.version import Version, VersionList, ver @@ -674,39 +673,6 @@ def test_external_and_virtual(self, mutable_config): assert spec["externaltool"].compiler.satisfies("gcc") assert spec["stuff"].compiler.satisfies("gcc") - def test_find_spec_parents(self): - """Tests the spec finding logic used by concretization.""" - s = Spec.from_literal({"a +foo": {"b +foo": {"c": None, "d+foo": None}, "e +foo": None}}) - - assert "a" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_children(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d+foo": None}, "e +foo": None}}) - - assert "d" == find_spec(s["b"], lambda s: "+foo" in s).name - - s = Spec.from_literal({"a": {"b +foo": {"c+foo": None, "d": None}, "e +foo": None}}) - - assert "c" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_sibling(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e +foo": None}}) - - assert "e" == find_spec(s["b"], lambda s: "+foo" in s).name - assert "b" == find_spec(s["e"], lambda s: "+foo" in s).name - - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e": {"f +foo": None}}}) - - assert "f" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_self(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e": None}}) - assert "b" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_none(self): - s = Spec.from_literal({"a": {"b": {"c": None, "d": None}, "e": None}}) - assert find_spec(s["b"], lambda s: "+foo" in s) is None - def test_compiler_child(self): s = Spec("mpileaks%clang target=x86_64 ^dyninst%gcc") s.concretize() @@ -815,7 +781,7 @@ def test_regression_issue_7941(self): ) def test_simultaneous_concretization_of_specs(self, abstract_specs): abstract_specs = [Spec(x) for x in abstract_specs] - concrete_specs = spack.concretize.concretize_specs_together(*abstract_specs) + concrete_specs = spack.concretize.concretize_specs_together(abstract_specs) # Check there's only one configuration of each package in the DAG names = set(dep.name for spec in concrete_specs for dep in spec.traverse()) @@ -2137,7 +2103,7 @@ def test_external_python_extension_find_unified_python(self): spack.config.set("packages", external_conf) abstract_specs = [Spec(s) for s in ["py-extension1", "python"]] - specs = spack.concretize.concretize_specs_together(*abstract_specs) + specs = spack.concretize.concretize_specs_together(abstract_specs) assert specs[0]["python"] == specs[1]["python"] @pytest.mark.regression("36190") From afe431cfb50d0da6a10769c353d4701e6fc1c95b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 07:50:38 +0100 Subject: [PATCH 325/615] py-python-ptrace: missing forward compat bound (#47401) --- .../repos/builtin/packages/py-python-ptrace/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-python-ptrace/package.py b/var/spack/repos/builtin/packages/py-python-ptrace/package.py index 94273241f6570d..be67cc059b6792 100644 --- a/var/spack/repos/builtin/packages/py-python-ptrace/package.py +++ b/var/spack/repos/builtin/packages/py-python-ptrace/package.py @@ -14,8 +14,12 @@ class PyPythonPtrace(PythonPackage): license("GPL-2.0-only") + version("0.9.9", sha256="56bbfef44eaf3a77be48138cca5767cdf471e8278fe1499f9b72f151907f25cf") version("0.9.8", sha256="1e3bc6223f626aaacde8a7979732691c11b13012e702fee9ae16c87f71633eaa") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("py-setuptools", type="build") + + # uses imp + depends_on("python@:3.11", when="@:0.9.8") From 75c169d870e975fe815bad73286d0b9aaf49ed54 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 5 Nov 2024 09:04:07 +0100 Subject: [PATCH 326/615] py-tensorflow: add v2.18.0 (#47211) --- .../packages/py-tensorboard/package.py | 18 +++-- .../builtin/packages/py-tensorflow/package.py | 81 +++++++++++-------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-tensorboard/package.py b/var/spack/repos/builtin/packages/py-tensorboard/package.py index 83f3f1a464c6ed..a7d85ca17fe8e1 100644 --- a/var/spack/repos/builtin/packages/py-tensorboard/package.py +++ b/var/spack/repos/builtin/packages/py-tensorboard/package.py @@ -17,10 +17,11 @@ class PyTensorboard(PythonPackage): # Requires tensorflow skip_modules = ["tensorboard.summary._tf"] - maintainers("aweits") - license("Apache-2.0") + maintainers("aweits") + version("2.18.0", sha256="107ca4821745f73e2aefa02c50ff70a9b694f39f790b11e6f682f7d326745eab") + version("2.17.1", sha256="253701a224000eeca01eee6f7e978aea7b408f60b91eb0babdb04e78947b773e") version("2.17.0", sha256="859a499a9b1fb68a058858964486627100b71fcb21646861c61d31846a6478fb") version("2.16.2", sha256="9f2b4e7dad86667615c0e5cd072f1ea8403fc032a299f0072d6f74855775cc45") version("2.16.1", sha256="928b62567911a8eeb2ebeb7482a9e4599b35f6713a6f2c56655259c18a139569") @@ -59,19 +60,20 @@ class PyTensorboard(PythonPackage): depends_on("py-grpcio@1.24.3:", when="@2.3:") depends_on("py-grpcio@1.23.3:", when="@2.2") depends_on("py-markdown@2.6.8:") - depends_on("py-numpy@1.12.0:") + depends_on("py-numpy@1.12:") # https://github.com/tensorflow/tensorboard/pull/6871 - depends_on("py-numpy@:1") + depends_on("py-numpy@:1", when="@:2.17") # https://github.com/tensorflow/tensorboard/pull/5138 depends_on("py-numpy@:1.23", when="@:2.5") - depends_on("py-protobuf@3.19.6:4", when="@2.17:") - depends_on("py-protobuf@3.19.6:", when="@2.15.2:2.16") + depends_on("py-packaging", when="@2.18:") + depends_on("py-protobuf@3.19.6:", when="@2.15.2:2.16,2.18:") + depends_on("py-protobuf@3.19.6:4", when="@2.17") depends_on("py-protobuf@3.19.6:4.23", when="@2.12:2.15.1") depends_on("py-protobuf@3.9.2:3", when="@2.11") depends_on("py-protobuf@3.9.2:3.19", when="@2.9:2.10") depends_on("py-protobuf@3.6.0:3.19", when="@:2.8") - depends_on("py-setuptools@41.0.0:") - depends_on("py-six@1.10.0:", when="@:2.4,2.14:") + depends_on("py-setuptools@41:") + depends_on("py-six@1.10:", when="@:2.4,2.14:") depends_on("py-tensorboard-data-server@0.7", when="@2.12:") depends_on("py-tensorboard-data-server@0.6", when="@2.5:2.11") depends_on("py-werkzeug@1.0.1:", when="@2.9:") diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index f9844ac1945711..ba1377829fd091 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -42,12 +42,13 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): homepage = "https://www.tensorflow.org" url = "https://github.com/tensorflow/tensorflow/archive/v2.3.1.tar.gz" git = "https://github.com/tensorflow/tensorflow.git" - - maintainers("adamjstewart", "aweits") import_modules = ["tensorflow"] license("Apache-2.0") + maintainers("adamjstewart", "aweits") + version("2.18.0", sha256="d7876f4bb0235cac60eb6316392a7c48676729860da1ab659fb440379ad5186d") + version("2.17.1", sha256="2d3cfb48510f92f3a52fb05b820481c6f066a342a9f5296fe26d72c4ea757700") version("2.17.0", sha256="9cc4d5773b8ee910079baaecb4086d0c28939f024dd74b33fc5e64779b6533dc") version("2.16.2", sha256="023849bf253080cb1e4f09386f5eb900492da2288274086ed6cfecd6d99da9eb") version("2.16.1", sha256="c729e56efc945c6df08efe5c9f5b8b89329c7c91b8f40ad2bb3e13900bd4876d") @@ -123,14 +124,18 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): version("2.2.1", sha256="e6a28e64236d729e598dbeaa02152219e67d0ac94d6ed22438606026a02e0f88") version("2.2.0", sha256="69cd836f87b8c53506c4f706f655d423270f5a563b76dc1cfa60fbc3184185a3") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("mkl", default=False, description="Build with MKL support") variant("jemalloc", default=False, description="Build with jemalloc as malloc support") variant("gcp", default=False, description="Build with Google Cloud Platform support") - variant("hdfs", default=False, description="Build with Hadoop File System support") - variant("aws", default=False, description="Build with Amazon AWS Platform support") + variant( + "hdfs", default=False, when="@:2.17", description="Build with Hadoop File System support" + ) + variant( + "aws", default=False, when="@:2.17", description="Build with Amazon AWS Platform support" + ) variant("xla", default=sys.platform != "darwin", description="Build with XLA JIT support") variant("gdr", default=False, description="Build with GDR support") variant("verbs", default=False, description="Build with libverbs support") @@ -216,36 +221,13 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): depends_on("py-google-pasta@0.2:0", when="@2.4:2.6") depends_on("py-google-pasta@0.1.8:", when="@2.2:2.3") depends_on("py-google-pasta@0.1.6:", when="@:2.1") - depends_on("py-h5py@3.10:", when="@2.16:") - depends_on("py-h5py@2.9:", when="@2.7:2.15") - depends_on("py-h5py@3.1", when="@2.5:2.6") - depends_on("py-h5py@2.10", when="@2.2:2.4") - depends_on("py-h5py@:2.10.0", when="@2.1.3:2.1") - # propagate the mpi variant setting for h5py/hdf5 to avoid unexpected crashes - depends_on("py-h5py+mpi", when="@2.1.3:+mpi") - depends_on("py-h5py~mpi", when="@2.1.3:~mpi") - depends_on("hdf5+mpi", when="@2.1.3:+mpi") - depends_on("hdf5~mpi", when="@2.1.3:~mpi") depends_on("py-libclang@13:", when="@2.9:") depends_on("py-libclang@9.0.1:", when="@2.7:2.8") - depends_on("py-ml-dtypes@0.3.1:0.4", when="@2.17:") - depends_on("py-ml-dtypes@0.3.1:0.3", when="@2.15.1:2.16") - depends_on("py-ml-dtypes@0.2", when="@2.15.0") - depends_on("py-ml-dtypes@0.2.0", when="@2.14") - depends_on("py-numpy@1.23.5:", when="@2.14:") - depends_on("py-numpy@1.22:1.24.3", when="@2.13:") - depends_on("py-numpy@1.22:1.23", when="@2.12") - depends_on("py-numpy@1.20:", when="@2.8:2.11") - depends_on("py-numpy@1.14.5:", when="@2.7") - depends_on("py-numpy@1.19.2:1.19", when="@2.4:2.6") - # https://github.com/tensorflow/tensorflow/issues/40688 - depends_on("py-numpy@1.16.0:1.18", when="@:2.3") - # https://github.com/tensorflow/tensorflow/issues/67291 - depends_on("py-numpy@:1") depends_on("py-opt-einsum@2.3.2:", when="@:2.3,2.7:") depends_on("py-opt-einsum@3.3", when="@2.4:2.6") depends_on("py-packaging", when="@2.9:") - depends_on("py-protobuf@3.20.3:4.20,4.21.6:4", when="@2.12:") + depends_on("py-protobuf@3.20.3:4.20,4.21.6:5", when="@2.18:") + depends_on("py-protobuf@3.20.3:4.20,4.21.6:4", when="@2.12:2.17") depends_on("py-protobuf@3.9.2:", when="@2.3:2.11") depends_on("py-protobuf@3.8.0:", when="@:2.2") # https://github.com/protocolbuffers/protobuf/issues/10051 @@ -278,13 +260,40 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): depends_on("py-grpcio@1.32", when="@2.4") depends_on("py-grpcio@1.8.6:", when="@:2.3") - for minor_ver in range(2, 18): + for minor_ver in range(2, 19): depends_on("py-tensorboard@2.{}".format(minor_ver), when="@2.{}".format(minor_ver)) # TODO: support circular run-time dependencies - # depends_on('py-tensorflow-estimator') # depends_on('py-keras') + depends_on("py-numpy@1.26:2.0", when="@2.18:") + depends_on("py-numpy@1.23.5:", when="@2.14:2.17") + depends_on("py-numpy@1.22:1.24.3", when="@2.13") + depends_on("py-numpy@1.22:1.23", when="@2.12") + depends_on("py-numpy@1.20:", when="@2.8:2.11") + depends_on("py-numpy@1.14.5:", when="@2.7") + depends_on("py-numpy@1.19.2:1.19", when="@2.4:2.6") + # https://github.com/tensorflow/tensorflow/issues/40688 + depends_on("py-numpy@1.16.0:1.18", when="@:2.3") + # https://github.com/tensorflow/tensorflow/issues/67291 + depends_on("py-numpy@:1", when="@:2.17") + depends_on("py-h5py@3.11:", when="@2.18:") + depends_on("py-h5py@3.10:", when="@2.16:") + depends_on("py-h5py@2.9:", when="@2.7:2.15") + depends_on("py-h5py@3.1", when="@2.5:2.6") + depends_on("py-h5py@2.10", when="@2.2:2.4") + depends_on("py-h5py@:2.10.0", when="@2.1.3:2.1") + # propagate the mpi variant setting for h5py/hdf5 to avoid unexpected crashes + depends_on("py-h5py+mpi", when="@2.1.3:+mpi") + depends_on("py-h5py~mpi", when="@2.1.3:~mpi") + depends_on("hdf5+mpi", when="@2.1.3:+mpi") + depends_on("hdf5~mpi", when="@2.1.3:~mpi") + depends_on("py-ml-dtypes@0.4", when="@2.18:") + depends_on("py-ml-dtypes@0.3.1:0.4", when="@2.17") + depends_on("py-ml-dtypes@0.3.1:0.3", when="@2.15.1:2.16") + depends_on("py-ml-dtypes@0.2", when="@2.15.0") + depends_on("py-ml-dtypes@0.2.0", when="@2.14") + # Historical dependencies depends_on("py-jax@0.3.15:", when="@2.12") depends_on("py-keras-preprocessing@1.1.1:", when="@2.7:2.10") @@ -425,7 +434,7 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): # see https://github.com/tensorflow/tensorflow/issues/62490 # and https://github.com/abseil/abseil-cpp/issues/1665 - patch("absl_neon.patch", when="@2.16.1: target=aarch64:") + patch("absl_neon.patch", when="@2.16.1:2.17 target=aarch64:") # reverting change otherwise the c467913 commit patch won't apply patch( @@ -588,6 +597,7 @@ def setup_build_environment(self, env): # Do you wish to build TensorFlow with CUDA support? if "+cuda" in spec: env.set("TF_NEED_CUDA", "1") + env.set("CUDA_NVCC", "1") # Do you want to use clang as CUDA compiler? env.set("TF_CUDA_CLANG", "0") @@ -649,6 +659,7 @@ def setup_build_environment(self, env): # only supports compute capabilities >= 3.5 capabilities = CudaPackage.compute_capabilities(spec.variants["cuda_arch"].value) env.set("TF_CUDA_COMPUTE_CAPABILITIES", ",".join(capabilities)) + env.set("HERMETIC_CUDA_COMPUTE_CAPABILITIES", ",".join(capabilities)) else: env.set("TF_NEED_CUDA", "0") @@ -841,6 +852,8 @@ def build(self, spec, prefix): if "+cuda" in spec: args.append("--config=cuda") + if spec.satisfies("@2.18:"): + args.append("--config=cuda_wheel") if "+rocm" in spec: args.append("--config=rocm") From 1297dd7fbc2860f2722a59251c0118a4034f1f20 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 09:36:26 +0100 Subject: [PATCH 327/615] py-torchaudio, py-torchtext: rpath fixup (#47404) * py-torchaudio, py-torchtext: rpath fixup also add missing dependency on Spack ffmpeg to torchaudio. * py-torchaudio: add torio rpath --- .../builtin/packages/py-torchaudio/package.py | 25 +++++++++++++++++++ .../builtin/packages/py-torchtext/package.py | 15 +++++++++++ 2 files changed, 40 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index 2ac903565f308e..59a7e2825b223c 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -104,6 +104,9 @@ class PyTorchaudio(PythonPackage): depends_on("cmake@3.5:", when="@0.8:", type="build") depends_on("ninja", when="@0.8:", type="build") + # prior to 2.1 ffmpeg was vendored + depends_on("ffmpeg@:6", when="@2.1:") + # setup.py depends_on("py-setuptools", type="build") depends_on("py-pybind11", when="@0.12:", type=("build", "link")) @@ -118,6 +121,22 @@ class PyTorchaudio(PythonPackage): ) conflicts("^cuda@12.5:", when="@:2.1") + def patch(self): + # Add missing rpaths, which requires patching due to hardcoded cmake_args + if self.spec.satisfies("@0.8:"): + rpaths = [f"{python_platlib}/torchaudio/lib", f"{python_platlib}/torio/lib"] + cmake_args = [ + f"-DCMAKE_INSTALL_RPATH={';'.join(rpaths)}", + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", + ] + cmake_str = ", ".join(f"'{arg}'" for arg in cmake_args) + filter_file( + "cmake_args = [", + f"cmake_args = [{cmake_str},", + "tools/setup_helpers/extension.py", + string=True, + ) + def flag_handler(self, name, flags): # https://github.com/pytorch/vision/issues/8653 if name == "ldflags": @@ -129,6 +148,12 @@ def setup_build_environment(self, env): # tools/setup_helpers/extension.py env.set("BUILD_SOX", 0) + if self.spec.satisfies("@2.1:"): + env.set("FFMPEG_ROOT", self.spec["ffmpeg"].prefix) + else: + # a specific ffmpeg is built but not installed, so just disable + env.set("USE_FFMPEG", "0") + if "+cuda" in self.spec["py-torch"]: env.set("USE_CUDA", 1) else: diff --git a/var/spack/repos/builtin/packages/py-torchtext/package.py b/var/spack/repos/builtin/packages/py-torchtext/package.py index 95fde8068ac14e..de5c66f20ee8d6 100644 --- a/var/spack/repos/builtin/packages/py-torchtext/package.py +++ b/var/spack/repos/builtin/packages/py-torchtext/package.py @@ -93,3 +93,18 @@ class PyTorchtext(PythonPackage): depends_on("py-pybind11", when="@0.8:", type=("build", "link")) depends_on("py-six", when="@:0.6", type=("build", "run")) depends_on("py-sentencepiece", when="@:0.7", type=("build", "run")) + + def patch(self): + # Add missing rpaths, which requires patching due to hardcoded cmake_args + if self.spec.satisfies("@0.13:"): + cmake_args = [ + f"-DCMAKE_INSTALL_RPATH={python_platlib}/torchtext/lib", + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", + ] + cmake_str = ", ".join(f"'{arg}'" for arg in cmake_args) + filter_file( + "cmake_args = [", + f"cmake_args = [{cmake_str},", + "tools/setup_helpers/extension.py", + string=True, + ) From 6b5a479d1e235aca420e746c697037b83f33cb16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:42:06 +0000 Subject: [PATCH 328/615] extrae: fix build with gcc@14 (#47407) --- var/spack/repos/builtin/packages/extrae/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index ea7fc38bbb8496..86714923e6f36d 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -169,6 +169,18 @@ def flag_handler(self, name, flags): flags.append("-lintl") elif name == "ldflags": flags.append("-pthread") + + # This is to work around + # . + if self.spec.satisfies("%gcc@14:") and name == "cflags": + flags.extend( + [ + "-Wno-error=incompatible-pointer-types", + "-Wno-error=implicit-function-declaration", + "-Wno-error=int-conversion", + ] + ) + return self.build_system_flags(name, flags) def install(self, spec, prefix): From b7601f304214561e34e964ef34dbd39f573176a3 Mon Sep 17 00:00:00 2001 From: David Boehme Date: Tue, 5 Nov 2024 09:51:19 +0100 Subject: [PATCH 329/615] Add Adiak v0.4.1 (#47429) --- var/spack/repos/builtin/packages/adiak/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/adiak/package.py b/var/spack/repos/builtin/packages/adiak/package.py index e1ad9344c17153..66aaa0a18c52e0 100644 --- a/var/spack/repos/builtin/packages/adiak/package.py +++ b/var/spack/repos/builtin/packages/adiak/package.py @@ -22,8 +22,9 @@ class Adiak(CMakePackage): license("MIT") version( - "0.4.0", commit="7e8b7233f8a148b402128ed46b2f0c643e3b397e", submodules=True, preferred=True + "0.4.1", commit="7ac997111785bee6d9391664b1d18ebc2b3c557b", submodules=True, preferred=True ) + version("0.4.0", commit="7e8b7233f8a148b402128ed46b2f0c643e3b397e", submodules=True) version("0.2.2", commit="3aedd494c81c01df1183af28bc09bade2fabfcd3", submodules=True) version( "0.3.0-alpha", From d45f682573e9f9b38b17fd2cbfd188da551b45f9 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 10:51:12 +0100 Subject: [PATCH 330/615] Revert "Ci generate on change (#47318)" (#47431) This reverts commit 1462c357619fedf7354bc60f9178b2199258ebd2. --- lib/spack/spack/ci.py | 94 ++++++++++------------------------ lib/spack/spack/test/cmd/ci.py | 42 --------------- 2 files changed, 27 insertions(+), 109 deletions(-) diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index 8a23bc3ae1357b..5a8b2ae1e7d49a 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -37,7 +37,6 @@ import spack.error import spack.main import spack.mirror -import spack.package_base import spack.paths import spack.repo import spack.spec @@ -265,22 +264,14 @@ def _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions): def get_change_revisions(): """If this is a git repo get the revisions to use when checking for changed packages and spack core modules.""" - rev1 = None - rev2 = None - - # Note: git_dir may be a file in a worktree. If it exists, attempt to use git - # to determine if there is a revision git_dir = os.path.join(spack.paths.prefix, ".git") - if os.path.exists(git_dir): - # The default will only find changed packages from the last - # commit. When the commit is a merge commit, this is will return all of the - # changes on the topic. - # TODO: Handle the case where the clone is not shallow clone of a merge commit - # using `git merge-base` - rev1 = "HEAD^" - rev2 = "HEAD" - - return rev1, rev2 + if os.path.exists(git_dir) and os.path.isdir(git_dir): + # TODO: This will only find changed packages from the last + # TODO: commit. While this may work for single merge commits + # TODO: when merging the topic branch into the base, it will + # TODO: require more thought outside of that narrow case. + return "HEAD^", "HEAD" + return None, None def get_stack_changed(env_path, rev1="HEAD^", rev2="HEAD"): @@ -399,7 +390,7 @@ class SpackCI: used by the CI generator(s). """ - def __init__(self, ci_config, spec_labels=None, stages=None): + def __init__(self, ci_config, spec_labels, stages): """Given the information from the ci section of the config and the staged jobs, set up meta data needed for generating Spack CI IR. @@ -417,9 +408,8 @@ def __init__(self, ci_config, spec_labels=None, stages=None): } jobs = self.ir["jobs"] - if spec_labels and stages: - for spec, dag_hash in _build_jobs(spec_labels, stages): - jobs[dag_hash] = self.__init_job(spec) + for spec, dag_hash in _build_jobs(spec_labels, stages): + jobs[dag_hash] = self.__init_job(spec) for name in self.named_jobs: # Skip the special named jobs @@ -715,53 +705,14 @@ def generate_gitlab_ci_yaml( files (spack.yaml, spack.lock), etc should be written. GitLab requires this to be within the project directory. """ - rev1, rev2 = get_change_revisions() - tty.debug(f"Got following revisions: rev1={rev1}, rev2={rev2}") - - # Get the joined "ci" config with all of the current scopes resolved - ci_config = cfg.get("ci") - spack_prune_untouched = os.environ.get("SPACK_PRUNE_UNTOUCHED", None) - - changed = rev1 and rev2 - affected_pkgs = None - if spack_prune_untouched and changed: - affected_pkgs = compute_affected_packages(rev1, rev2) - tty.debug("affected pkgs:") - if affected_pkgs: - for p in affected_pkgs: - tty.debug(f" {p}") - else: - tty.debug(" no affected packages...") - - possible_builds = spack.package_base.possible_dependencies(*env.user_specs) - changed = any((spec in p for p in possible_builds.values()) for spec in affected_pkgs) - - if not changed: - spack_ci = SpackCI(ci_config) - spack_ci_ir = spack_ci.generate_ir() - - # No jobs should be generated. - noop_job = spack_ci_ir["jobs"]["noop"]["attributes"] - # If this job fails ignore the status and carry on - noop_job["retry"] = 0 - noop_job["allow_failure"] = True - - tty.msg("Skipping concretization, generating no-op job") - output_object = {"no-specs-to-rebuild": noop_job} - - # Ensure the child pipeline always runs - output_object["workflow"] = {"rules": [{"when": "always"}]} - - with open(output_file, "w") as f: - ruamel.yaml.YAML().dump(output_object, f) - - return - with spack.concretize.disable_compiler_existence_check(): with env.write_transaction(): env.concretize() env.write() + # Get the joined "ci" config with all of the current scopes resolved + ci_config = cfg.get("ci") + if not ci_config: raise SpackCIError("Environment does not have a `ci` configuration") @@ -786,13 +737,20 @@ def generate_gitlab_ci_yaml( dependent_depth = None prune_untouched_packages = False + spack_prune_untouched = os.environ.get("SPACK_PRUNE_UNTOUCHED", None) if spack_prune_untouched is not None and spack_prune_untouched.lower() == "true": # Requested to prune untouched packages, but assume we won't do that # unless we're actually in a git repo. - if changed: + rev1, rev2 = get_change_revisions() + tty.debug(f"Got following revisions: rev1={rev1}, rev2={rev2}") + if rev1 and rev2: # If the stack file itself did not change, proceed with pruning if not get_stack_changed(env.manifest_path, rev1, rev2): prune_untouched_packages = True + affected_pkgs = compute_affected_packages(rev1, rev2) + tty.debug("affected pkgs:") + for p in affected_pkgs: + tty.debug(f" {p}") affected_specs = get_spec_filter_list( env, affected_pkgs, dependent_traverse_depth=dependent_depth ) @@ -1140,6 +1098,11 @@ def main_script_replacements(cmd): # warn only if there was actually a CDash configuration. tty.warn("Unable to populate buildgroup without CDash credentials") + service_job_retries = { + "max": 2, + "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], + } + if copy_only_pipeline: stage_names.append("copy") sync_job = copy.deepcopy(spack_ci_ir["jobs"]["copy"]["attributes"]) @@ -1199,10 +1162,7 @@ def main_script_replacements(cmd): ) final_job["when"] = "always" - final_job["retry"] = { - "max": 2, - "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], - } + final_job["retry"] = service_job_retries final_job["interruptible"] = True final_job["dependencies"] = [] diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 2f0e053265c2d1..36aa992c639c9c 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -1650,45 +1650,3 @@ def fake_dyn_mapping_urlopener(*args, **kwargs): assert job.get("variables", {}).get("MY_VAR") == "hello" assert "ignored_field" not in job assert "unallowed_field" not in job - - -def test_ci_generate_noop_no_concretize( - tmpdir, - working_env, - mutable_mock_env_path, - install_mockery, - mock_packages, - monkeypatch, - ci_base_environment, -): - # Write the enviroment file - filename = str(tmpdir.join("spack.yaml")) - with open(filename, "w") as f: - f.write( - """\ -spack: - specs: - - pkg-a - mirrors: - buildcache-destination: https://my.fake.mirror - ci: - type: gitlab -""" - ) - - def fake_compute_affected(r1=None, r2=None): - return [] - - monkeypatch.setattr(ci, "compute_affected_packages", fake_compute_affected) - monkeypatch.setenv("SPACK_PRUNE_UNTOUCHED", "TRUE") # enables pruning of untouched specs - - with tmpdir.as_cwd(): - env_cmd("create", "test", "./spack.yaml") - outputfile = str(tmpdir.join(".gitlab-ci.yml")) - - with ev.read("test"): - ci_cmd("generate", "--output-file", outputfile) - - with open(outputfile) as of: - pipeline_doc = syaml.load(of.read()) - assert "no-specs-to-rebuild" in pipeline_doc From dadb30f0e2cf64d6189bbabae2eaf9452bd53272 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 12:30:32 +0100 Subject: [PATCH 331/615] libc.py: detect glibc also in chinese locale (#47434) --- lib/spack/spack/util/libc.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/util/libc.py b/lib/spack/spack/util/libc.py index 55e8e3d26b6e48..148c4cb13a529a 100644 --- a/lib/spack/spack/util/libc.py +++ b/lib/spack/spack/util/libc.py @@ -9,20 +9,30 @@ import shlex import sys from subprocess import PIPE, run -from typing import List, Optional +from typing import Dict, List, Optional import spack.spec import spack.util.elf +#: Pattern to distinguish glibc from other libc implementations +GLIBC_PATTERN = r"\b(?:Free Software Foundation|Roland McGrath|Ulrich Depper)\b" + + +def _env() -> Dict[str, str]: + """Currently only set LC_ALL=C without clearing further environment variables""" + return {**os.environ, "LC_ALL": "C"} + def _libc_from_ldd(ldd: str) -> Optional["spack.spec.Spec"]: try: - result = run([ldd, "--version"], stdout=PIPE, stderr=PIPE, check=False) + result = run([ldd, "--version"], stdout=PIPE, stderr=PIPE, check=False, env=_env()) stdout = result.stdout.decode("utf-8") except Exception: return None - if not re.search(r"\bFree Software Foundation\b", stdout): + # The string "Free Software Foundation" is sometimes translated and not detected, but the names + # of the authors are typically present. + if not re.search(GLIBC_PATTERN, stdout): return None version_str = re.match(r".+\(.+\) (.+)", stdout) @@ -38,7 +48,7 @@ def default_search_paths_from_dynamic_linker(dynamic_linker: str) -> List[str]: """If the dynamic linker is glibc at a certain version, we can query the hard-coded library search paths""" try: - result = run([dynamic_linker, "--help"], stdout=PIPE, stderr=PIPE, check=False) + result = run([dynamic_linker, "--help"], stdout=PIPE, stderr=PIPE, check=False, env=_env()) assert result.returncode == 0 out = result.stdout.decode("utf-8") except Exception: @@ -74,7 +84,9 @@ def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"] # Now try to figure out if glibc or musl, which is the only ones we support. # In recent glibc we can simply execute the dynamic loader. In musl that's always the case. try: - result = run([dynamic_linker, "--version"], stdout=PIPE, stderr=PIPE, check=False) + result = run( + [dynamic_linker, "--version"], stdout=PIPE, stderr=PIPE, check=False, env=_env() + ) stdout = result.stdout.decode("utf-8") stderr = result.stderr.decode("utf-8") except Exception: @@ -91,7 +103,7 @@ def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"] return spec except Exception: return None - elif re.search(r"\bFree Software Foundation\b", stdout): + elif re.search(GLIBC_PATTERN, stdout): # output is like "ld.so (...) stable release version 2.33." match = re.search(r"version (\d+\.\d+(?:\.\d+)?)", stdout) if not match: From eb9ff5d7a7d47f112ece5a4c70ef603a047a2fbc Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 13:25:19 +0100 Subject: [PATCH 332/615] paraview: add forward compat bound with cuda (#47430) --- var/spack/repos/builtin/packages/paraview/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 874f8bed64155a..442bd2b12c2c0a 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -325,6 +325,9 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): # https://gitlab.kitware.com/vtk/vtk/-/merge_requests/8474 depends_on("proj@8.1.0", when="@5.11:") + # Patches to vendored VTK-m are needed for forward compat with CUDA 12 (mr 2972 and 3259) + depends_on("cuda@:11", when="+cuda") + patch("stl-reader-pv440.patch", when="@4.4.0") # Broken gcc-detection - improved in 5.1.0, redundant later From 09ae2516d57e098a2f030dac01c86a796ad139f9 Mon Sep 17 00:00:00 2001 From: Martin Lang <67915889+lang-m@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:20:10 +0100 Subject: [PATCH 333/615] cgal: add v6.0.1 (#47285) --- var/spack/repos/builtin/packages/cgal/package.py | 1 + var/spack/repos/builtin/packages/dealii/package.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 18170077580437..c1030d42d0aba1 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -17,6 +17,7 @@ class Cgal(CMakePackage): homepage = "https://www.cgal.org/" url = "https://github.com/CGAL/cgal/releases/download/v5.4.1/CGAL-5.4.1.tar.xz" + version("6.0.1", sha256="0acdfbf317c556630dd526f3253780f29b6ec9713ee92903e81b5c93c0f59b7f") version("5.6", sha256="dcab9b08a50a06a7cc2cc69a8a12200f8d8f391b9b8013ae476965c10b45161f") version("5.5.3", sha256="0a04f662693256328b05babfabb5e3a5b7db2f5a58d52e3c520df9d0828ddd73") version("5.5.2", sha256="b2b05d5616ecc69facdc24417cce0b04fb4321491d107db45103add520e3d8c3") diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 94563ec32dc78e..50ff2dbb5177b7 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -180,8 +180,9 @@ class Dealii(CMakePackage, CudaPackage): depends_on("arborx+trilinos", when="@9.3:+arborx+trilinos") depends_on("arpack-ng+mpi", when="+arpack+mpi") depends_on("assimp", when="@9.0:+assimp") - depends_on("cgal", when="@9.4:+cgal") - depends_on("cgal@5:", when="@9.5:+cgal") + # cgal 6 not yet supported: https://github.com/spack/spack/pull/47285#issuecomment-2455403447 + depends_on("cgal@:5", when="@9.4:+cgal") + depends_on("cgal@5", when="@9.5:+cgal") depends_on("doxygen+graphviz", when="+doc") depends_on("graphviz", when="+doc") depends_on("ginkgo", when="@9.1:+ginkgo") From 2b9c6790f22db8161f1dca9a37bdf5d68ab90482 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 5 Nov 2024 15:50:48 +0100 Subject: [PATCH 334/615] omega-h: fix versioning and cuda compat (#47433) --- .../stacks/e4s-neoverse_v1/spack.yaml | 4 +- .../stacks/e4s-power/spack.yaml | 2 +- .../cloud_pipelines/stacks/e4s/spack.yaml | 2 +- .../repos/builtin/packages/ceed/package.py | 2 +- .../repos/builtin/packages/omega-h/package.py | 43 +++++++------------ .../repos/builtin/packages/xsdk/package.py | 2 +- 6 files changed, 22 insertions(+), 33 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index 24a488fbe921bf..d8e8091676644d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -225,7 +225,7 @@ spack: - magma +cuda cuda_arch=75 - mfem +cuda cuda_arch=75 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=75 - - omega-h +cuda cuda_arch=75 + - "omega-h@:9 +cuda cuda_arch=75" # https://github.com/SCOREC/omega_h/issues/116 - parsec +cuda cuda_arch=75 - petsc +cuda cuda_arch=75 - py-torch +cuda cuda_arch=75 @@ -274,7 +274,7 @@ spack: - magma +cuda cuda_arch=80 - mfem +cuda cuda_arch=80 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=80 - - omega-h +cuda cuda_arch=80 + - "omega-h@:9 +cuda cuda_arch=80" # https://github.com/SCOREC/omega_h/issues/116 - parsec +cuda cuda_arch=80 - petsc +cuda cuda_arch=80 - py-torch +cuda cuda_arch=80 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index a770b0a299a13d..6c30947d4ffdf5 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -233,7 +233,7 @@ spack: - magma +cuda cuda_arch=70 - mfem +cuda cuda_arch=70 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=70 - - omega-h +cuda cuda_arch=70 + - "omega-h@:9 +cuda cuda_arch=70" # https://github.com/SCOREC/omega_h/issues/116 - parsec +cuda cuda_arch=70 - petsc +cuda cuda_arch=70 - raja +cuda cuda_arch=70 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 0b81e53d568d1d..a3ceb56a35b2d0 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -239,7 +239,7 @@ spack: - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz +mgard +cuda cuda_arch=80 ^cusz +cuda cuda_arch=80 - magma +cuda cuda_arch=80 - mfem +cuda cuda_arch=80 - - omega-h +cuda cuda_arch=80 + - "omega-h@:9 +cuda cuda_arch=80" # https://github.com/SCOREC/omega_h/issues/116 - parsec +cuda cuda_arch=80 - petsc +cuda cuda_arch=80 - py-torch +cuda cuda_arch=80 diff --git a/var/spack/repos/builtin/packages/ceed/package.py b/var/spack/repos/builtin/packages/ceed/package.py index d346bb667ed865..7eaf0411186840 100644 --- a/var/spack/repos/builtin/packages/ceed/package.py +++ b/var/spack/repos/builtin/packages/ceed/package.py @@ -240,7 +240,7 @@ class Ceed(BundlePackage, CudaPackage, ROCmPackage): # Omega_h # ceed-5.0 - depends_on("omega-h@scorec.10.1.0", when="@5.0.0+omega-h") + depends_on("omega-h@10.1.0", when="@5.0.0+omega-h") depends_on("omega-h~trilinos", when="@5.0.0+omega-h+quickbuild") # MFEM, Laghos, Remhos diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py index e4432f2e104dcb..67221b389af2fd 100644 --- a/var/spack/repos/builtin/packages/omega-h/package.py +++ b/var/spack/repos/builtin/packages/omega-h/package.py @@ -20,22 +20,22 @@ class OmegaH(CMakePackage, CudaPackage): tags = ["e4s"] version("main", branch="main") version( - "scorec.10.8.5", + "10.8.5-scorec", commit="62026fc305356abb5e02a9fce3fead9cf5077fbe", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.7.0", + "10.7.0-scorec", commit="0e5de8618c3370f702e08c1b1af476dbbc118892", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.6.0", + "10.6.0-scorec", commit="f376fad4741b55a4b2482218eb3437d719b7c72e", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.1.0", + "10.1.0-scorec", commit="e88912368e101d940f006019585701a704295ab0", git="https://github.com/SCOREC/omega_h.git", ) @@ -73,26 +73,16 @@ class OmegaH(CMakePackage, CudaPackage): depends_on("trilinos +kokkos", when="+trilinos") depends_on("kokkos", when="+kokkos") depends_on("zlib-api", when="+zlib") - # Note: '+cuda' and 'cuda_arch' variants are added by the CudaPackage - depends_on("cuda", when="+cuda") - conflicts( - "^cuda@11.2", - when="@scorec.10.1.0:", - msg="Thrust is broken in CUDA = 11.2.* see https://github.com/sandialabs/omega_h/issues/366", - ) - conflicts( - "^cuda@:11.3", - when="@scorec.10.8.5:", - msg="see https://github.com/SCOREC/omega_h/issues/66", - ) - # the sandia repo has a fix for cuda > 11.2 support - # see github.com/sandialabs/omega_h/pull/373 - conflicts( - "^cuda@11.2", - when="@:9.34.4", - msg="Thrust is broken in CUDA = 11.2.* see https://github.com/sandialabs/omega_h/issues/366", - ) + with when("+cuda"): + # https://github.com/SCOREC/omega_h/commit/40a2d36d0b747a7147aeed238a0323f40b227cb2 + depends_on("cuda@11.4:", when="@10.8.3:") + + # https://github.com/SCOREC/omega_h/commit/c2109d2900696974ee66c3fbe6a1ec0e93b66cb6 + depends_on("cuda@:11", when="@:10.6") + + # Single, broken CUDA version. + conflicts("^cuda@11.2", msg="See https://github.com/sandialabs/omega_h/issues/366") # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610 conflicts("%gcc@8:8.2", when="@:9.22.1") @@ -120,9 +110,8 @@ def cmake_args(self): args.append("-DBUILD_SHARED_LIBS:BOOL=OFF") if "+mpi" in self.spec: args.append("-DOmega_h_USE_MPI:BOOL=ON") - ver = self.spec.version # old versions don't call find_package(MPI) - if ver < Version("9.33.2") and "scorec" not in str(ver): + if self.spec.satisfies("@:9.33.1"): args.append("-DCMAKE_CXX_COMPILER:FILEPATH={0}".format(self.spec["mpi"].mpicxx)) else: args.append("-DOmega_h_USE_MPI:BOOL=OFF") @@ -131,7 +120,7 @@ def cmake_args(self): cuda_arch_list = self.spec.variants["cuda_arch"].value cuda_arch = cuda_arch_list[0] if cuda_arch != "none": - if "scorec" in str(self.spec.version): + if self.spec.satisfies("@10:"): args.append("-DOmega_h_CUDA_ARCH={0}".format(cuda_arch)) else: args.append("-DCMAKE_CUDA_FLAGS=-arch=sm_{0}".format(cuda_arch)) @@ -174,7 +163,7 @@ def flag_handler(self, name, flags): def test_mesh(self): """test construction, adaptation, and conversion of a mesh""" - if self.spec.satisfies("@:9.34.0") and not self.spec.satisfies("@:scorec"): + if self.spec.satisfies("@:9.34.0"): raise SkipTest("Package must be installed as version 9.34.1 or later") with test_part(self, "test_mesh_create", purpose="mesh construction"): diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 85bf27ae2b092b..29cfc1cec8ceca 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -216,7 +216,7 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("omega-h +trilinos", when="+trilinos +omega-h") xsdk_depends_on("omega-h ~trilinos", when="~trilinos +omega-h") - xsdk_depends_on("omega-h@scorec.10.6.0", when="@1.0.0 +omega-h") + xsdk_depends_on("omega-h@10.6.0", when="@1.0.0 +omega-h") xsdk_depends_on("omega-h@9.34.13", when="@0.8.0 +omega-h") xsdk_depends_on("strumpack ~cuda", when="~cuda +strumpack") From c601692bc794943b08ac108ce44d6f3428bb565a Mon Sep 17 00:00:00 2001 From: wspear Date: Tue, 5 Nov 2024 12:08:10 -0800 Subject: [PATCH 335/615] Fix filter_compiler_wrappers with mpi (#47448) --- var/spack/repos/builtin/packages/tau/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 94d939c03fd6f5..b2bcac2891be96 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -427,8 +427,14 @@ def install(self, spec, prefix): # Link arch-specific directories into prefix since there is # only one arch per prefix the way spack installs. self.link_tau_arch_dirs() - # TAU may capture Spack's internal compiler wrapper. Replace - # it with the correct compiler. + # TAU may capture Spack's internal compiler wrapper. Fixed + # by filter_compiler_wrappers. Switch back the environment + # variables the filter uses. + if "+mpi" in spec: + env["CC"] = spack_cc + env["CXX"] = spack_cxx + env["FC"] = spack_fc + env["F77"] = spack_f77 def link_tau_arch_dirs(self): for subdir in os.listdir(self.prefix): From 801390f6becf1a0411ff45008a544e866bd91bd8 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 5 Nov 2024 13:08:21 -0700 Subject: [PATCH 336/615] masa: add versions and update dependencies (#47447) * masa: add versions * masa: update dependencies --- .../repos/builtin/packages/masa/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/masa/package.py b/var/spack/repos/builtin/packages/masa/package.py index 3145f4d4f2e6f1..c7086a54a1a887 100644 --- a/var/spack/repos/builtin/packages/masa/package.py +++ b/var/spack/repos/builtin/packages/masa/package.py @@ -19,20 +19,27 @@ class Masa(AutotoolsPackage): license("LGPL-2.1-or-later") version("master", branch="master") + version("0.51.0", tag="0.51.0") + version("0.50.0", tag="0.50.0") + version("0.44.0", tag="0.44.0") + version("0.43.1", tag="0.43.1") + version("0.43.0", tag="0.43.0") + version("0.42.0", tag="0.42.0") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") - variant("fortran", default=True, description="Compile with Fortran interfaces") - variant("python", default=True, description="Compile with Python interfaces") + variant("fortran", default=False, description="Compile with Fortran interfaces") + variant("python", default=False, description="Compile with Python interfaces") + depends_on("gettext") + depends_on("metaphysicl") + depends_on("python") depends_on("autoconf", type="build") depends_on("automake", type="build") depends_on("libtool", type="build") - depends_on("swig", type="build") - depends_on("python", when="+python") - depends_on("metaphysicl") + depends_on("swig", type="build", when="+python") def configure_args(self): options = [] From 0c164d274067f0500c0edd37a4e9bec18374d2bf Mon Sep 17 00:00:00 2001 From: Richarda Butler <39577672+RikkiButler20@users.noreply.github.com> Date: Wed, 6 Nov 2024 00:53:52 -0800 Subject: [PATCH 337/615] Feature: Allow variants to propagate if not available in source pkg (#42931) Variants can now be propagated from a dependent package to (transitive) dependencies, even if the source or transitive dependencies have the propagated variants. For example, here `zlib` doesn't have a `guile` variant, but `gmake` does: ``` $ spack spec zlib++guile - zlib@1.3%gcc@12.2.0+optimize+pic+shared build_system=makefile arch=linux-rhel8-broadwell - ^gcc-runtime@12.2.0%gcc@12.2.0 build_system=generic arch=linux-rhel8-broadwell - ^gmake@4.4.1%gcc@12.2.0+guile build_system=generic arch=linux-rhel8-broadwell ``` Adding this property has some strange ramifications for `satisfies()`. In particular: * The abstract specs `pkg++variant` and `pkg+variant` do not intersect, because `+variant` implies that `pkg` *has* the variant, but `++variant` does not. * This means that `spec.satisfies("++foo")` is `True` if: * for concrete specs: `spec` and its dependencies all have `foo` set if it exists * for abstract specs: no dependency of `spec` has `~foo` (i.e. no dependency contradicts `++foo`). * This also means that `Spec("++foo").satisfies("+foo")` is `False` -- we only know after concretization. The `satisfies()` semantics may be surprising, but this is the cost of introducing non-subset semantics (which are more useful than proper subsets here). - [x] Change checks for variants - [x] Resolve conflicts - [x] Add tests - [x] Add documentation --------- Co-authored-by: Gregory Becker Co-authored-by: Massimiliano Culpo --- lib/spack/docs/basic_usage.rst | 4 + lib/spack/spack/solver/asp.py | 5 +- lib/spack/spack/solver/concretize.lp | 71 ++++++-- lib/spack/spack/spec.py | 76 ++++++++- lib/spack/spack/test/concretize.py | 154 ++++++++++++++++-- lib/spack/spack/test/spec_semantics.py | 55 ++++++- lib/spack/spack/variant.py | 2 +- .../packages/dependency-foo-bar/package.py | 2 + .../packages/direct-dep-foo-bar/package.py | 22 +++ .../builtin.mock/packages/openblas/package.py | 2 + .../packages/parent-foo-bar-fee/package.py | 23 +++ .../packages/parent-foo-bar/package.py | 1 + .../builtin.mock/packages/perl/package.py | 2 + .../builtin.mock/packages/pkg-a/package.py | 8 + .../second-dependency-foo-bar-fee/package.py | 21 +++ 15 files changed, 413 insertions(+), 35 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py create mode 100644 var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py create mode 100644 var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 171a82b6ea1e37..21733a256633b0 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1359,6 +1359,10 @@ For example, for the ``stackstart`` variant: mpileaks stackstart==4 # variant will be propagated to dependencies mpileaks stackstart=4 # only mpileaks will have this variant value +Spack also allows variants to be propagated from a package that does +not have that variant. + + ^^^^^^^^^^^^^^ Compiler Flags ^^^^^^^^^^^^^^ diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index cb4799a45f37bf..56014717ddc940 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -2032,9 +2032,12 @@ def _spec_clauses( for variant_def in variant_defs: self.variant_values_from_specs.add((spec.name, id(variant_def), value)) - clauses.append(f.variant_value(spec.name, vname, value)) if variant.propagate: clauses.append(f.propagate(spec.name, fn.variant_value(vname, value))) + if self.pkg_class(spec.name).has_variant(vname): + clauses.append(f.variant_value(spec.name, vname, value)) + else: + clauses.append(f.variant_value(spec.name, vname, value)) # compiler and compiler version if spec.compiler: diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 2195cd6b08b4d1..f4695be9b90fbf 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -57,6 +57,12 @@ internal_error("provider with no virtual node"). :- provider(PackageNode, _), not attr("node", PackageNode), internal_error("provider with no real node"). +:- node_has_variant(PackageNode, _, _), not attr("node", PackageNode), + internal_error("node has variant for a non-node"). +:- attr("variant_set", PackageNode, _, _), not attr("node", PackageNode), + internal_error("variant_set for a non-node"). +:- variant_is_propagated(PackageNode, _), not attr("node", PackageNode), + internal_error("variant_is_propagated for a non-node"). :- attr("root", node(ID, PackageNode)), ID > min_dupe_id, internal_error("root with a non-minimal duplicate ID"). @@ -575,7 +581,8 @@ attr("virtual_on_edge", PackageNode, ProviderNode, Virtual) % or used somewhere :- attr("virtual_node", node(_, Virtual)), not attr("virtual_on_incoming_edges", _, Virtual), - not attr("virtual_root", node(_, Virtual)). + not attr("virtual_root", node(_, Virtual)), + internal_error("virtual node does not match incoming edge"). attr("virtual_on_incoming_edges", ProviderNode, Virtual) :- attr("virtual_on_edge", _, ProviderNode, Virtual). @@ -629,7 +636,8 @@ do_not_impose(EffectID, node(X, Package)) virtual_condition_holds(_, PossibleProvider, Virtual), PossibleProvider != ProviderNode, explicitly_requested_root(PossibleProvider), - not explicitly_requested_root(ProviderNode). + not explicitly_requested_root(ProviderNode), + internal_error("If a root can provide a virtual, it must be the provider"). % A package cannot be the actual provider for a virtual if it does not % fulfill the conditions to provide that virtual @@ -772,7 +780,8 @@ required_provider(Provider, Virtual) pkg_fact(Virtual, condition_effect(ConditionID, EffectID)), imposed_constraint(EffectID, "node", Provider). -:- provider(node(Y, Package), node(X, Virtual)), required_provider(Provider, Virtual), Package != Provider. +:- provider(node(Y, Package), node(X, Virtual)), required_provider(Provider, Virtual), Package != Provider, + internal_error("If a provider is required the concretizer must use it"). % TODO: the following choice rule allows the solver to add compiler % flags if their only source is from a requirement. This is overly-specific @@ -852,7 +861,8 @@ variant_defined(PackageNode, Name) :- variant_definition(PackageNode, Name, _). % for two or more variant definitions, this prefers the last one defined. :- node_has_variant(node(NodeID, Package), Name, SelectedVariantID), variant_definition(node(NodeID, Package), Name, VariantID), - VariantID > SelectedVariantID. + VariantID > SelectedVariantID, + internal_error("If the solver picks a variant descriptor it must use that variant descriptor"). % B: Associating applicable package rules with nodes @@ -969,6 +979,7 @@ error(100, "{0} variant '{1}' cannot have values '{2}' and '{3}' as they come fr :- attr("variant_set", node(ID, Package), Variant, Value), not attr("variant_value", node(ID, Package), Variant, Value). + internal_error("If a variant is set to a value it must have that value"). % The rules below allow us to prefer default values for variants % whenever possible. If a variant is set in a spec, or if it is @@ -979,7 +990,7 @@ variant_not_default(node(ID, Package), Variant, Value) % variants set explicitly on the CLI don't count as non-default not attr("variant_set", node(ID, Package), Variant, Value), % variant values forced by propagation don't count as non-default - not propagate(node(ID, Package), variant_value(Variant, Value)), + not propagate(node(ID, Package), variant_value(Variant, Value, _)), % variants set on externals that we could use don't count as non-default % this makes spack prefer to use an external over rebuilding with the % default configuration @@ -991,7 +1002,7 @@ variant_default_not_used(node(ID, Package), Variant, Value) :- variant_default_value(node(ID, Package), Variant, Value), node_has_variant(node(ID, Package), Variant, _), not attr("variant_value", node(ID, Package), Variant, Value), - not propagate(node(ID, Package), variant_value(Variant, _)), + not propagate(node(ID, Package), variant_value(Variant, _, _)), attr("node", node(ID, Package)). % The variant is set in an external spec @@ -1036,10 +1047,14 @@ variant_single_value(PackageNode, Variant) % Propagation semantics %----------------------------------------------------------------------------- +non_default_propagation(variant_value(Name, Value)) :- attr("propagate", RootNode, variant_value(Name, Value)). + % Propagation roots have a corresponding attr("propagate", ...) -propagate(RootNode, PropagatedAttribute) :- attr("propagate", RootNode, PropagatedAttribute). +propagate(RootNode, PropagatedAttribute) :- attr("propagate", RootNode, PropagatedAttribute), not non_default_propagation(PropagatedAttribute). propagate(RootNode, PropagatedAttribute, EdgeTypes) :- attr("propagate", RootNode, PropagatedAttribute, EdgeTypes). +% Special case variants, to inject the source node in the propagated attribute +propagate(RootNode, variant_value(Name, Value, RootNode)) :- attr("propagate", RootNode, variant_value(Name, Value)). % Propagate an attribute along edges to child nodes propagate(ChildNode, PropagatedAttribute) :- @@ -1061,21 +1076,53 @@ propagate(ChildNode, PropagatedAttribute, edge_types(DepType1, DepType2)) :- % If a variant is propagated, and can be accepted, set its value attr("variant_selected", PackageNode, Variant, Value, VariantType, VariantID) :- - propagate(PackageNode, variant_value(Variant, Value)), + propagate(PackageNode, variant_value(Variant, Value, _)), node_has_variant(PackageNode, Variant, VariantID), variant_type(VariantID, VariantType), - variant_possible_value(PackageNode, Variant, Value), - not attr("variant_set", PackageNode, Variant). + variant_possible_value(PackageNode, Variant, Value). % If a variant is propagated, we cannot have extraneous values variant_is_propagated(PackageNode, Variant) :- attr("variant_value", PackageNode, Variant, Value), - propagate(PackageNode, variant_value(Variant, Value)), + propagate(PackageNode, variant_value(Variant, Value, _)), not attr("variant_set", PackageNode, Variant). :- variant_is_propagated(PackageNode, Variant), attr("variant_selected", PackageNode, Variant, Value, _, _), - not propagate(PackageNode, variant_value(Variant, Value)). + not propagate(PackageNode, variant_value(Variant, Value, _)). + +error(100, "{0} and {1} cannot both propagate variant '{2}' to the shared dependency: {3}", + Package1, Package2, Variant, Dependency) :- + % The variant is a singlevalued variant + variant_single_value(node(X, Package1), Variant), + % Dependency is trying to propagate Variant with different values and is not the source package + propagate(node(Z, Dependency), variant_value(Variant, Value1, node(X, Package1))), + propagate(node(Z, Dependency), variant_value(Variant, Value2, node(Y, Package2))), + % Package1 and Package2 and their values are different + Package1 > Package2, Value1 != Value2, + not propagate(node(Z, Dependency), variant_value(Variant, _, node(Z, Dependency))). + +% Cannot propagate the same variant from two different packages if one is a dependency of the other +error(100, "{0} and {1} cannot both propagate variant '{2}'", Package1, Package2, Variant) :- + % The variant is a single-valued variant + variant_single_value(node(X, Package1), Variant), + % Package1 and Package2 and their values are different + Package1 != Package2, Value1 != Value2, + % Package2 is set to propagate the value from Package1 + propagate(node(Y, Package2), variant_value(Variant, Value2, node(X, Package2))), + propagate(node(Y, Package2), variant_value(Variant, Value1, node(X, Package1))), + variant_is_propagated(node(Y, Package2), Variant). + +% Cannot propagate a variant if a different value was set for it in a dependency +error(100, "Cannot propagate the variant '{0}' from the package: {1} because package: {2} is set to exclude it", Variant, Source, Package) :- + % Package has a Variant and Source is propagating Variant + attr("variant_set", node(X, Package), Variant, Value1), + % The packages and values are different + Source != Package, Value1 != Value2, + % The variant is a single-valued variant + variant_single_value(node(X, Package1), Variant), + % A different value is being propagated from somewhere else + propagate(node(X, Package), variant_value(Variant, Value2, node(Y, Source))). %---- % Flags diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index ba3a0f9c379080..3d92879484f8a7 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -3020,7 +3020,12 @@ def ensure_valid_variants(spec): pkg_variants = pkg_cls.variant_names() # reserved names are variants that may be set on any package # but are not necessarily recorded by the package's class - not_existing = set(spec.variants) - (set(pkg_variants) | set(vt.reserved_names)) + propagate_variants = [name for name, variant in spec.variants.items() if variant.propagate] + + not_existing = set(spec.variants) - ( + set(pkg_variants) | set(vt.reserved_names) | set(propagate_variants) + ) + if not_existing: raise vt.UnknownVariantError( f"No such variant {not_existing} for spec: '{spec}'", list(not_existing) @@ -3047,6 +3052,10 @@ def constrain(self, other, deps=True): raise spack.error.UnsatisfiableSpecError(self, other, "constrain a concrete spec") other = self._autospec(other) + if other.concrete and other.satisfies(self): + self._dup(other) + return True + if other.abstract_hash: if not self.abstract_hash or other.abstract_hash.startswith(self.abstract_hash): self.abstract_hash = other.abstract_hash @@ -4525,8 +4534,69 @@ def substitute(self, vspec): # Set the item super().__setitem__(vspec.name, vspec) - def satisfies(self, other): - return all(k in self and self[k].satisfies(other[k]) for k in other) + def partition_variants(self): + non_prop, prop = lang.stable_partition(self.values(), lambda x: not x.propagate) + # Just return the names + non_prop = [x.name for x in non_prop] + prop = [x.name for x in prop] + return non_prop, prop + + def satisfies(self, other: "VariantMap") -> bool: + if self.spec.concrete: + return self._satisfies_when_self_concrete(other) + return self._satisfies_when_self_abstract(other) + + def _satisfies_when_self_concrete(self, other: "VariantMap") -> bool: + non_propagating, propagating = other.partition_variants() + result = all( + name in self and self[name].satisfies(other[name]) for name in non_propagating + ) + if not propagating: + return result + + for node in self.spec.traverse(): + if not all( + node.variants[name].satisfies(other[name]) + for name in propagating + if name in node.variants + ): + return False + return result + + def _satisfies_when_self_abstract(self, other: "VariantMap") -> bool: + other_non_propagating, other_propagating = other.partition_variants() + self_non_propagating, self_propagating = self.partition_variants() + + # First check variants without propagation set + result = all( + name in self_non_propagating + and (self[name].propagate or self[name].satisfies(other[name])) + for name in other_non_propagating + ) + if result is False or (not other_propagating and not self_propagating): + return result + + # Check that self doesn't contradict variants propagated by other + if other_propagating: + for node in self.spec.traverse(): + if not all( + node.variants[name].satisfies(other[name]) + for name in other_propagating + if name in node.variants + ): + return False + + # Check that other doesn't contradict variants propagated by self + if self_propagating: + for node in other.spec.traverse(): + if not all( + node.variants[name].satisfies(self[name]) + for name in self_propagating + if name in node.variants + ): + return False + + return result def intersects(self, other): return all(self[k].intersects(other[k]) for k in other if k in self) diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index bf96311d4499cd..dd2444df0a7a1f 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -540,21 +540,17 @@ def test_concretize_two_virtuals_with_dual_provider_and_a_conflict(self): @pytest.mark.parametrize( "spec_str,expected_propagation", [ - ("hypre~~shared ^openblas+shared", [("hypre", "~shared"), ("openblas", "+shared")]), # Propagates past a node that doesn't have the variant ("hypre~~shared ^openblas", [("hypre", "~shared"), ("openblas", "~shared")]), + # Propagates from root node to all nodes ( "ascent~~shared +adios2", [("ascent", "~shared"), ("adios2", "~shared"), ("bzip2", "~shared")], ), - # Propagates below a node that uses the other value explicitly + # Propagate from a node that is not the root node ( - "ascent~~shared +adios2 ^adios2+shared", - [("ascent", "~shared"), ("adios2", "+shared"), ("bzip2", "~shared")], - ), - ( - "ascent++shared +adios2 ^adios2~shared", - [("ascent", "+shared"), ("adios2", "~shared"), ("bzip2", "+shared")], + "ascent +adios2 ^adios2~~shared", + [("ascent", "+shared"), ("adios2", "~shared"), ("bzip2", "~shared")], ), ], ) @@ -564,21 +560,109 @@ def test_concretize_propagate_disabled_variant(self, spec_str, expected_propagat for key, expected_satisfies in expected_propagation: spec[key].satisfies(expected_satisfies) - def test_concretize_propagated_variant_is_not_passed_to_dependent(self): - """Test a package variant value was passed from its parent.""" - spec = Spec("ascent~~shared +adios2 ^adios2+shared") + def test_concretize_propagate_variant_not_dependencies(self): + """Test that when propagating a variant it is not propagated to dependencies that + do not have that variant""" + spec = Spec("quantum-espresso~~invino") spec.concretize() - assert spec.satisfies("^adios2+shared") - assert spec.satisfies("^bzip2~shared") + for dep in spec.traverse(root=False): + assert "invino" not in dep.variants.keys() + + def test_concretize_propagate_variant_exclude_dependency_fail(self): + """Tests that a propagating variant cannot be allowed to be excluded by any of + the source package's dependencies""" + spec = Spec("hypre ~~shared ^openblas +shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_from_direct_dep_fail(self): + """Test that when propagating a variant from the source package and a direct + dependency also propagates the same variant with a different value. Raises error""" + spec = Spec("ascent +adios2 ++shared ^adios2 ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_in_dependency_fail(self): + """Test that when propagating a variant from the source package, none of it's + dependencies can propagate that variant with a different value. Raises error.""" + spec = Spec("ascent +adios2 ++shared ^bzip2 ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_virtual_dependency_fail(self): + """Test that when propagating a variant from the source package and a direct + dependency (that is a virtual pkg) also propagates the same variant with a + different value. Raises error""" + spec = Spec("hypre ++shared ^openblas ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_multiple_sources_diamond_dep_fail(self): + """Test that fails when propagating the same variant with different values from multiple + sources that share a dependency""" + spec = Spec("parent-foo-bar ^dependency-foo-bar++bar ^direct-dep-foo-bar~~bar") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() def test_concretize_propagate_specified_variant(self): """Test that only the specified variant is propagated to the dependencies""" spec = Spec("parent-foo-bar ~~foo") spec.concretize() - assert spec.satisfies("~foo") and spec.satisfies("^dependency-foo-bar~foo") - assert spec.satisfies("+bar") and not spec.satisfies("^dependency-foo-bar+bar") + assert spec.satisfies("^dependency-foo-bar~foo") + assert spec.satisfies("^second-dependency-foo-bar-fee~foo") + assert spec.satisfies("^direct-dep-foo-bar~foo") + + assert not spec.satisfies("^dependency-foo-bar+bar") + assert not spec.satisfies("^second-dependency-foo-bar-fee+bar") + assert not spec.satisfies("^direct-dep-foo-bar+bar") + + def test_concretize_propagate_one_variant(self): + """Test that you can specify to propagate one variant and not all""" + spec = Spec("parent-foo-bar ++bar ~foo") + spec.concretize() + + assert spec.satisfies("~foo") and not spec.satisfies("^dependency-foo-bar~foo") + assert spec.satisfies("+bar") and spec.satisfies("^dependency-foo-bar+bar") + + def test_concretize_propagate_through_first_level_deps(self): + """Test that boolean valued variants can be propagated past first level + dependecies even if the first level dependency does have the variant""" + spec = Spec("parent-foo-bar-fee ++fee") + spec.concretize() + + assert spec.satisfies("+fee") and not spec.satisfies("dependency-foo-bar+fee") + assert spec.satisfies("^second-dependency-foo-bar-fee+fee") + + def test_concretize_propagate_multiple_variants(self): + """Test that multiple boolean valued variants can be propagated from + the same source package""" + spec = Spec("parent-foo-bar-fee ~~foo ++bar") + spec.concretize() + + assert spec.satisfies("~foo") and spec.satisfies("+bar") + assert spec.satisfies("^dependency-foo-bar ~foo +bar") + assert spec.satisfies("^second-dependency-foo-bar-fee ~foo +bar") + + def test_concretize_propagate_multiple_variants_mulitple_sources(self): + """Test the propagates multiple different variants for multiple sources + in a diamond dependency""" + spec = Spec("parent-foo-bar ^dependency-foo-bar++bar ^direct-dep-foo-bar~~foo") + spec.concretize() + + assert spec.satisfies("^second-dependency-foo-bar-fee+bar") + assert spec.satisfies("^second-dependency-foo-bar-fee~foo") + assert not spec.satisfies("^dependency-foo-bar~foo") + assert not spec.satisfies("^direct-dep-foo-bar+bar") + + def test_concretize_propagate_single_valued_variant(self): + """Test propagation for single valued variants""" + spec = Spec("multivalue-variant libs==static") + spec.concretize() + + assert spec.satisfies("libs=static") + assert spec.satisfies("^pkg-a libs=static") def test_concretize_propagate_multivalue_variant(self): """Test that multivalue variants are propagating the specified value(s) @@ -591,6 +675,46 @@ def test_concretize_propagate_multivalue_variant(self): assert not spec.satisfies("^pkg-a foo=bar") assert not spec.satisfies("^pkg-b foo=bar") + def test_concretize_propagate_multiple_multivalue_variant(self): + """Tests propagating the same mulitvalued variant from different sources allows + the dependents to accept all propagated values""" + spec = Spec("multivalue-variant foo==bar ^pkg-a foo==baz") + spec.concretize() + + assert spec.satisfies("multivalue-variant foo=bar") + assert spec.satisfies("^pkg-a foo=bar,baz") + assert spec.satisfies("^pkg-b foo=bar,baz") + + def test_concretize_propagate_variant_not_in_source(self): + """Test that variant is still propagated even if the source pkg + doesn't have the variant""" + spec = Spec("callpath++debug") + spec.concretize() + + assert spec.satisfies("^mpich+debug") + assert not spec.satisfies("callpath+debug") + assert not spec.satisfies("^dyninst+debug") + + def test_concretize_propagate_variant_multiple_deps_not_in_source(self): + """Test that a variant can be propagated to multiple dependencies + when the variant is not in the source package""" + spec = Spec("netlib-lapack++shared") + spec.concretize() + + assert spec.satisfies("^openblas+shared") + assert spec.satisfies("^perl+shared") + assert not spec.satisfies("netlib-lapack+shared") + + def test_concretize_propagate_variant_second_level_dep_not_in_source(self): + """Test that a variant can be propagated past first level dependencies + when the variant is not in the source package or any of the first level + dependencies""" + spec = Spec("parent-foo-bar ++fee") + spec.concretize() + + assert spec.satisfies("^second-dependency-foo-bar-fee +fee") + assert not spec.satisfies("parent-foo-bar +fee") + def test_no_matching_compiler_specs(self, mock_low_high_config): # only relevant when not building compilers as needed with spack.concretize.enable_compiler_existence_check(): diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 1b12a8a80315c3..6342325364a3a0 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -512,9 +512,6 @@ def test_constraining_abstract_specs_with_empty_intersection(self, lhs, rhs): ("mpich", "mpich +foo"), ("mpich", "mpich~foo"), ("mpich", "mpich foo=1"), - ("mpich", "mpich++foo"), - ("mpich", "mpich~~foo"), - ("mpich", "mpich foo==1"), ("multivalue-variant foo=bar", "multivalue-variant +foo"), ("multivalue-variant foo=bar", "multivalue-variant ~foo"), ("multivalue-variant fee=bar", "multivalue-variant fee=baz"), @@ -536,6 +533,58 @@ def test_concrete_specs_which_do_not_satisfy_abstract( with pytest.raises(UnsatisfiableSpecError): assert rhs.constrain(lhs) + @pytest.mark.parametrize( + "lhs,rhs", [("mpich", "mpich++foo"), ("mpich", "mpich~~foo"), ("mpich", "mpich foo==1")] + ) + def test_concrete_specs_which_satisfy_abstract(self, lhs, rhs, default_mock_concretization): + lhs, rhs = default_mock_concretization(lhs), Spec(rhs) + + assert lhs.intersects(rhs) + assert rhs.intersects(lhs) + assert lhs.satisfies(rhs) + + s1 = lhs.copy() + s1.constrain(rhs) + assert s1 == lhs and s1.satisfies(lhs) + + s2 = rhs.copy() + s2.constrain(lhs) + assert s2 == lhs and s2.satisfies(lhs) + + @pytest.mark.parametrize( + "lhs,rhs,expected,constrained", + [ + # hdf5++mpi satisfies hdf5, and vice versa, because of the non-contradiction semantic + ("hdf5++mpi", "hdf5", True, "hdf5++mpi"), + ("hdf5", "hdf5++mpi", True, "hdf5++mpi"), + # Same holds true for arbitrary propagated variants + ("hdf5++mpi", "hdf5++shared", True, "hdf5++mpi++shared"), + # Here hdf5+mpi satisfies hdf5++mpi but not vice versa + ("hdf5++mpi", "hdf5+mpi", False, "hdf5+mpi"), + ("hdf5+mpi", "hdf5++mpi", True, "hdf5+mpi"), + # Non contradiction is violated + ("hdf5 ^foo~mpi", "hdf5++mpi", False, "hdf5++mpi ^foo~mpi"), + ("hdf5++mpi", "hdf5 ^foo~mpi", False, "hdf5++mpi ^foo~mpi"), + ], + ) + def test_abstract_specs_with_propagation(self, lhs, rhs, expected, constrained): + """Tests (and documents) behavior of variant propagation on abstract specs. + + Propagated variants do not comply with subset semantic, making it difficult to give + precise definitions. Here we document the behavior that has been decided for the + practical cases we face. + """ + lhs, rhs, constrained = Spec(lhs), Spec(rhs), Spec(constrained) + assert lhs.satisfies(rhs) is expected + + c = lhs.copy() + c.constrain(rhs) + assert c == constrained + + c = rhs.copy() + c.constrain(lhs) + assert c == constrained + def test_satisfies_single_valued_variant(self): """Tests that the case reported in https://github.com/spack/spack/pull/2386#issuecomment-282147639 diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 3cc5ba2e0ba25d..bce2015c1207bc 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -830,7 +830,7 @@ def prevalidate_variant_value( only if the variant is a reserved variant. """ # don't validate wildcards or variants with reserved names - if variant.value == ("*",) or variant.name in reserved_names: + if variant.value == ("*",) or variant.name in reserved_names or variant.propagate: return [] # raise if there is no definition at all diff --git a/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py index 5d7f5e98170c78..9a8646baece5ed 100644 --- a/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py +++ b/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py @@ -18,3 +18,5 @@ class DependencyFooBar(Package): variant("foo", default=True, description="") variant("bar", default=False, description="") + + depends_on("second-dependency-foo-bar-fee") diff --git a/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py new file mode 100644 index 00000000000000..9f4fc5d8034da5 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py @@ -0,0 +1,22 @@ +# 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) + +from spack.package import * + + +class DirectDepFooBar(Package): + """This package has a variant "bar", which is False by default, and + variant "foo" which is True by default. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/direct-dep-foo-bar-1.0.tar.gz" + + version("1.0", md5="567890abcdefg12345678900987654321") + + variant("foo", default=True, description="") + variant("bar", default=False, description="") + + depends_on("second-dependency-foo-bar-fee") diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index db288b9a3b62e5..d6ecb25019aa4c 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -25,4 +25,6 @@ class Openblas(Package): # To ensure test works with newer gcc versions conflicts("%gcc@:10.1", when="@0.2.16:") + depends_on("perl") + provides("blas") diff --git a/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py b/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py new file mode 100644 index 00000000000000..32636df6ab599b --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class ParentFooBarFee(Package): + """This package has a variant "bar", which is True by default, and depends on another + package which has the same variant defaulting to False. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/parent-foo-bar-fee-1.0.tar.gz" + + version("1.0", md5="abcdefg01234567890123abcdefghfed") + + variant("foo", default=True, description="") + variant("bar", default=True, description="") + variant("fee", default=False, description="") + + depends_on("dependency-foo-bar") diff --git a/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py index 064c5740571140..a03d09da2fbd8e 100644 --- a/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py +++ b/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py @@ -19,4 +19,5 @@ class ParentFooBar(Package): variant("foo", default=True, description="") variant("bar", default=True, description="") + depends_on("direct-dep-foo-bar") depends_on("dependency-foo-bar") diff --git a/var/spack/repos/builtin.mock/packages/perl/package.py b/var/spack/repos/builtin.mock/packages/perl/package.py index 8d86dec8f32017..2c3f810e036de2 100644 --- a/var/spack/repos/builtin.mock/packages/perl/package.py +++ b/var/spack/repos/builtin.mock/packages/perl/package.py @@ -14,3 +14,5 @@ class Perl(Package): extendable = True version("0.0.0", md5="abcdef1234567890abcdef1234567890") + + variant("shared", default=True, description="Build shared libraries") diff --git a/var/spack/repos/builtin.mock/packages/pkg-a/package.py b/var/spack/repos/builtin.mock/packages/pkg-a/package.py index d1ecba835dfc20..646172b778d129 100644 --- a/var/spack/repos/builtin.mock/packages/pkg-a/package.py +++ b/var/spack/repos/builtin.mock/packages/pkg-a/package.py @@ -25,6 +25,14 @@ class PkgA(AutotoolsPackage): variant("bvv", default=True, description="The good old BV variant") + variant( + "libs", + default="shared", + values=("shared", "static"), + multi=True, + description="Type of libraries to install", + ) + depends_on("pkg-b", when="foobar=bar") depends_on("test-dependency", type="test") diff --git a/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py b/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py new file mode 100644 index 00000000000000..4439639bf0863d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py @@ -0,0 +1,21 @@ +# 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) + +from spack.package import * + + +class SecondDependencyFooBarFee(Package): + """This package has a variant "foo", which is True by default, a variant "bar" which + is False by default, and variant "foo" which is True by default. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/second-dependency-foo-bar-fee-1.0.tar.gz" + + version("1.0", md5="2101234567890abcdefg1234567890abc") + + variant("foo", default=True, description="") + variant("bar", default=False, description="") + variant("fee", default=False, description="") From 2aa5a1643321d57326540e548d98b790d375b47d Mon Sep 17 00:00:00 2001 From: Thomas Madlener Date: Wed, 6 Nov 2024 11:42:34 +0100 Subject: [PATCH 338/615] edm4hep: Add json variant for newer versions (#47180) * edm4hep: Add json variant for newer versions Explicit option has been added to EDM4hep so we now expose it via a variant as well. We keep the old behavior where we unconditionally depended on nlohmann-json and implicitly built JSON support if we could detect it cmake stage * Fix condition statement in when clause * Use open version range to avoid fixing to single version --------- Co-authored-by: Valentin Volkl --- var/spack/repos/builtin/packages/edm4hep/package.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/edm4hep/package.py b/var/spack/repos/builtin/packages/edm4hep/package.py index 838c11b101c8f8..97c32283b061b8 100644 --- a/var/spack/repos/builtin/packages/edm4hep/package.py +++ b/var/spack/repos/builtin/packages/edm4hep/package.py @@ -61,12 +61,20 @@ class Edm4hep(CMakePackage): description="Use the specified C++ standard when building.", ) + variant( + "json", + default=True, + description="Build edm4hep with JSON support and edm4hep2json", + when="@0.99.2:", + ) + depends_on("cmake@3.3:", type="build") depends_on("cmake@3.23:", type="build", when="@0.10.3:") depends_on("python", type="build") depends_on("root@6.08:") - depends_on("nlohmann-json@3.10.5:") + depends_on("nlohmann-json@3.10.5:", when="@0.99.2: +json") + depends_on("nlohmann-json@3.10.5:", when="@:0.99.1") depends_on("podio@1:", when="@0.99:") depends_on("podio@0.15:", when="@:0.10.5") for _std in _cxxstd_values: @@ -88,6 +96,8 @@ def cmake_args(self): # C++ Standard args.append(self.define("CMAKE_CXX_STANDARD", self.spec.variants["cxxstd"].value)) args.append(self.define("BUILD_TESTING", self.run_tests)) + if self.spec.satisfies("@0.99.2: +json"): + args.append(self.define_from_variant("EDM4HEP_WITH_JSON", "json")) return args def setup_run_environment(self, env): From a31c525778773b8c6a6fc35617454d954a05d74d Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 6 Nov 2024 11:49:14 +0100 Subject: [PATCH 339/615] llnl.util.filesystem.find: restore old error handling (#47463) --- lib/spack/llnl/util/filesystem.py | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index b63b6e94b39a2e..24055c902b6225 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1741,6 +1741,11 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): return result +def _log_file_access_issue(e: OSError, path: str) -> None: + errno_name = errno.errorcode.get(e.errno, "UNKNOWN") + tty.debug(f"find must skip {path}: {errno_name} {e}") + + @system_path_filter(arg_slice=slice(1)) def find_max_depth(root, globs, max_depth: Optional[int] = None): """Given a set of non-recursive glob file patterns, finds all @@ -1754,19 +1759,10 @@ def find_max_depth(root, globs, max_depth: Optional[int] = None): If ``globs`` is a list, files matching earlier entries are placed in the return value before files matching later entries. """ - # If root doesn't exist, then we say we found nothing. If it - # exists but is not a dir, we assume the user would want to - # know; likewise if it exists but we do not have permission to - # access it. try: stat_root = os.stat(root) - except OSError as e: - if e.errno == errno.ENOENT: - return [] - else: - raise - if not stat.S_ISDIR(stat_root.st_mode): - raise ValueError(f"{root} is not a directory") + except OSError: + return [] if max_depth is None: max_depth = sys.maxsize @@ -1790,10 +1786,6 @@ def _dir_id(stat_info): # https://github.com/python/cpython/blob/3.9/Python/fileutils.c return (stat_info.st_ino, stat_info.st_dev) - def _log_file_access_issue(e): - errno_name = errno.errorcode.get(e.errno, "UNKNOWN") - tty.debug(f"find must skip {dir_entry.path}: {errno_name} {str(e)}") - visited_dirs = set([_dir_id(stat_root)]) # Each queue item stores the depth and path @@ -1808,9 +1800,8 @@ def _log_file_access_issue(e): depth, next_dir = dir_queue.pop() try: dir_iter = os.scandir(next_dir) - except OSError: - # Most commonly, this would be a permissions issue, for - # example if we are scanning an external directory like /usr + except OSError as e: + _log_file_access_issue(e, next_dir) continue with dir_iter: @@ -1821,7 +1812,7 @@ def _log_file_access_issue(e): except OSError as e: # Possible permission issue, or a symlink that cannot # be resolved (ELOOP). - _log_file_access_issue(e) + _log_file_access_issue(e, dir_entry.path) continue if it_is_a_dir and (depth < max_depth): @@ -1837,7 +1828,7 @@ def _log_file_access_issue(e): else: stat_info = dir_entry.stat(follow_symlinks=True) except OSError as e: - _log_file_access_issue(e) + _log_file_access_issue(e, dir_entry.path) continue dir_id = _dir_id(stat_info) From d09b185522d663d24273d2e34b8d7cb0d877eb76 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 6 Nov 2024 15:35:04 +0100 Subject: [PATCH 340/615] Fix various bootstrap/concretizer import issues (#47467) --- lib/spack/spack/cmd/__init__.py | 1 + lib/spack/spack/concretize.py | 13 ++++++++----- lib/spack/spack/environment/environment.py | 2 -- lib/spack/spack/solver/asp.py | 3 +-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 7cf032c90749a0..e9df5fc18955b8 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -17,6 +17,7 @@ from llnl.util.tty.colify import colify from llnl.util.tty.color import colorize +import spack.concretize import spack.config # breaks a cycle. import spack.environment as ev import spack.error diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 122e6c59c03dbc..cccfc02bd046a3 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -10,8 +10,11 @@ import llnl.util.tty as tty +import spack.compilers import spack.config import spack.error +import spack.repo +import spack.util.parallel from spack.spec import ArchSpec, CompilerSpec, Spec CHECK_COMPILER_EXISTENCE = True @@ -87,6 +90,8 @@ def concretize_together_when_possible( tests: list of package names for which to consider tests dependencies. If True, all nodes will have test dependencies. If False, test dependencies will be disregarded. """ + import spack.solver.asp + to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] old_concrete_to_abstract = { concrete: abstract for (abstract, concrete) in spec_list if concrete @@ -119,6 +124,8 @@ def concretize_separately( tests: list of package names for which to consider tests dependencies. If True, all nodes will have test dependencies. If False, test dependencies will be disregarded. """ + import spack.bootstrap + to_concretize = [abstract for abstract, concrete in spec_list if not concrete] args = [ (i, str(abstract), tests) @@ -155,11 +162,7 @@ def concretize_separately( for j, (i, concrete, duration) in enumerate( spack.util.parallel.imap_unordered( - spack.concretize._concretize_task, - args, - processes=num_procs, - debug=tty.is_debug(), - maxtaskperchild=1, + _concretize_task, args, processes=num_procs, debug=tty.is_debug(), maxtaskperchild=1 ) ): ret.append((i, concrete)) diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 7cf1057fa5c62b..de4bc851006e8c 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -24,7 +24,6 @@ import spack import spack.caches -import spack.compilers import spack.concretize import spack.config import spack.deptypes as dt @@ -43,7 +42,6 @@ import spack.util.environment import spack.util.hash import spack.util.lock as lk -import spack.util.parallel import spack.util.path import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 56014717ddc940..b723b6bbb22023 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -27,7 +27,6 @@ import spack import spack.binary_distribution -import spack.bootstrap.core import spack.compilers import spack.concretize import spack.config @@ -816,7 +815,7 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre solve, and the internal statistics from clingo. """ # avoid circular import - import spack.bootstrap + import spack.bootstrap.core output = output or DEFAULT_OUTPUT_CONFIGURATION timer = spack.util.timer.Timer() From ee2723dc46055efb225df1437f1e60de85f77432 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Wed, 6 Nov 2024 10:09:40 -0600 Subject: [PATCH 341/615] rivet: add through v4.0.2 (incl yoda: add through v2.0.2) (#47383) * yoda: add v2.0.1, v2.0.2 * rivet: add v3.1.9, v3.1.10, v4.0.0, v4.0.1, v4.0.2 * rivet: yoda@:1 when @:3; conflicts hepmc3@3.3.0 when @:4.0.0 * rivet: fix style * rivet: hepmc=2 only when @:3; use libs.directories[0] * hepmc3: def libs * [@spackbot] updating style on behalf of wdconinc --------- Co-authored-by: wdconinc --- .../repos/builtin/packages/hepmc3/package.py | 4 +++ .../repos/builtin/packages/rivet/package.py | 27 +++++++++++++++++-- .../repos/builtin/packages/yoda/package.py | 8 +++--- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/hepmc3/package.py b/var/spack/repos/builtin/packages/hepmc3/package.py index 52759ac037d66d..03da34d3f8c545 100644 --- a/var/spack/repos/builtin/packages/hepmc3/package.py +++ b/var/spack/repos/builtin/packages/hepmc3/package.py @@ -58,6 +58,10 @@ class Hepmc3(CMakePackage): conflicts("%gcc@9.3.0", when="@:3.1.1") patch("ba38f14d8f56c16cc4105d98f6d4540c928c6150.patch", when="@3.1.2:3.2.1 %gcc@9.3.0") + @property + def libs(self): + return find_libraries(["libHepMC3", "libHepMC3Search"], root=self.prefix, recursive=True) + def cmake_args(self): spec = self.spec from_variant = self.define_from_variant diff --git a/var/spack/repos/builtin/packages/rivet/package.py b/var/spack/repos/builtin/packages/rivet/package.py index 00ae0783dca58e..573888d0c47c22 100644 --- a/var/spack/repos/builtin/packages/rivet/package.py +++ b/var/spack/repos/builtin/packages/rivet/package.py @@ -19,6 +19,11 @@ class Rivet(AutotoolsPackage): license("GPL-3.0-or-later") + version("4.0.2", sha256="65a3b36f42bff782ed2767930e669e09b140899605d7972fc8f77785b4a882c0") + version("4.0.1", sha256="4e8692d6e8a53961c77983eb6ba4893c3765cf23f705789e4d865be4892eff79") + version("4.0.0", sha256="d3c42d9b83ede3e7f4b534535345c2e06e6dafb851454c2b0a5d2331ab0f04d0") + version("3.1.10", sha256="458b8e0df1de738e9972d24b260eaa087df12c99d4fe9dee5377d47ea6a49919") + version("3.1.9", sha256="f6532045da61eeb2adc20a9abc4166b4b2d41ab2c1ca5b500cd616bb1b92e7b1") version("3.1.8", sha256="75b3f3d419ca6388d1fd2ec0eda7e1f90f324b996ccf0591f48a5d2e28dccc13") version("3.1.7", sha256="27c7dbbcb5fd7ee81caf136daf4e960bca0ec255d9fa1abe602f4d430861b27a") version("3.1.6", sha256="1cf6ebb6a79d181c441d1d0c7c6d623c423817c61093f36f21adaae23e679090") @@ -34,7 +39,12 @@ class Rivet(AutotoolsPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - variant("hepmc", default="2", values=("2", "3"), description="HepMC version to link against") + variant( + "hepmc", + default="2", + values=(conditional("2", when="@:3"), "3"), + description="HepMC version to link against", + ) # According to A. Buckley (main Rivet developer): # "typically a given Rivet version will work with @@ -48,8 +58,13 @@ class Rivet(AutotoolsPackage): depends_on("yoda@1.8.2", when="@3.1.1") depends_on("yoda@1.8.3", when="@3.1.2") depends_on("yoda@1.8.5:", when="@3.1.3:") - depends_on("yoda@1.9.5:", when="@3.1.6:") + depends_on("yoda@1.9.6:", when="@3.1.6:") depends_on("yoda@1.9.7:", when="@3.1.7:") + depends_on("yoda@1.9.8:", when="@3.1.8:") + depends_on("yoda@1.9.9:", when="@3.1.9:") + depends_on("yoda@1.9.10:", when="@3.1.10:") + depends_on("yoda@:1", when="@:3") + depends_on("yoda@2.0.1:", when="@4.0.0:") # The following versions were not a part of LCG stack # and thus the exact version of YODA is unknown @@ -57,9 +72,13 @@ class Rivet(AutotoolsPackage): depends_on("hepmc", when="hepmc=2") depends_on("hepmc3", when="hepmc=3") + conflicts( + "hepmc@3.3.0", when="@:4.0.0 hepmc=3", msg="patch-level zero requires at least 4.0.1" + ) depends_on("fastjet plugins=cxx") depends_on("fastjet@3.4.0:", when="@3.1.7:") depends_on("fjcontrib") + depends_on("highfive", when="@4:") depends_on("python", type=("build", "run")) depends_on("py-cython@0.24.0:", type="build") depends_on("swig", type="build") @@ -104,12 +123,16 @@ def configure_args(self): args += ["--with-hepmc=" + self.spec["hepmc"].prefix] else: args += ["--with-hepmc3=" + self.spec["hepmc3"].prefix] + args += ["--with-hepmc3-libpath=" + self.spec["hepmc3"].libs.directories[0]] args += ["--with-fastjet=" + self.spec["fastjet"].prefix] args += ["--with-yoda=" + self.spec["yoda"].prefix] args += ["--with-fjcontrib=" + self.spec["fjcontrib"].prefix] + if self.spec.satisfies("^highfive"): + args += ["--with-highfive=" + self.spec["highfive"].prefix] + args += ["--disable-pdfmanual"] return args diff --git a/var/spack/repos/builtin/packages/yoda/package.py b/var/spack/repos/builtin/packages/yoda/package.py index a545be413a6d75..34bcda42d3c7fd 100644 --- a/var/spack/repos/builtin/packages/yoda/package.py +++ b/var/spack/repos/builtin/packages/yoda/package.py @@ -17,12 +17,10 @@ class Yoda(AutotoolsPackage): license("GPL-3.0-or-later") + version("2.0.2", sha256="31a41413641189814ff3c6bbb96ac5d17d2b68734fe327d06794cdbd3a540399") + version("2.0.1", sha256="ae5a78eaae5574a5159d4058839d0983c9923558bfc88fbce21d251fd925d260") version("2.0.0", sha256="680f43dabebb3167ce1c5dee72d1c2c285c3190751245aa51e3260a005a99575") - version( - "1.9.10", - sha256="0a708ee9d704945d3387cc437b15ffddf382c70fe5bab39ed2bdbf83c2c28c6f", - preferred=True, - ) + version("1.9.10", sha256="0a708ee9d704945d3387cc437b15ffddf382c70fe5bab39ed2bdbf83c2c28c6f") version("1.9.9", sha256="ebcad55369a1cedcee3a2de059407c851652ba44495113f5c09d8c2e57f516aa") version("1.9.8", sha256="7bc3062468abba50aff3ecb8b22ce677196036009890688ef4533aaa7f92e6e4") version("1.9.7", sha256="8d07bb04dcb79364858718a18203452d8d9fa00029fa94239eafa8529032b8ff") From e62cf9c45b213dcfc88e5f33b99bbf14340c472e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 6 Nov 2024 17:18:58 +0100 Subject: [PATCH 342/615] Fix `spack -c ` when env active (#47403) Set command line scopes last in _main, so they are higher scopes Restore the global configuration in a spawned process by inspecting the result of ctx.get_start_method() Add the ability to pass a mp.context to PackageInstallContext. Add shell-tests to check overriding the configuration: - Using both -c and -C from command line - With and without an environment active --- lib/spack/spack/config.py | 15 ++----- lib/spack/spack/main.py | 13 +++--- lib/spack/spack/subprocess_context.py | 57 ++++++++++++++------------- share/spack/qa/config_state.py | 36 +++++++++++++++++ share/spack/qa/run-unit-tests | 2 +- share/spack/qa/setup-env-test.sh | 17 ++++++++ 6 files changed, 94 insertions(+), 46 deletions(-) create mode 100644 share/spack/qa/config_state.py diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index afd8f30baccbb9..1cafc1f738a337 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -427,6 +427,10 @@ def __init__(self, *scopes: ConfigScope) -> None: self.push_scope(scope) self.format_updates: Dict[str, List[ConfigScope]] = collections.defaultdict(list) + def ensure_unwrapped(self) -> "Configuration": + """Ensure we unwrap this object from any dynamic wrapper (like Singleton)""" + return self + @_config_mutator def push_scope(self, scope: ConfigScope) -> None: """Add a higher precedence scope to the Configuration.""" @@ -752,10 +756,6 @@ def override( assert scope is overrides -#: configuration scopes added on the command line set by ``spack.main.main()`` -COMMAND_LINE_SCOPES: List[str] = [] - - def _add_platform_scope(cfg: Configuration, name: str, path: str, writable: bool = True) -> None: """Add a platform-specific subdirectory for the current platform.""" platform = spack.platforms.host().name @@ -860,13 +860,6 @@ def create() -> Configuration: # Each scope can have per-platfom overrides in subdirectories _add_platform_scope(cfg, name, path) - # add command-line scopes - _add_command_line_scopes(cfg, COMMAND_LINE_SCOPES) - - # we make a special scope for spack commands so that they can - # override configuration options. - cfg.push_scope(InternalConfigScope("command_line")) - return cfg diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index fc5423b5a26a98..7cab47d77f7bf1 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -911,13 +911,6 @@ def _main(argv=None): # Make spack load / env activate work on macOS restore_macos_dyld_vars() - # make spack.config aware of any command line configuration scopes - if args.config_scopes: - spack.config.COMMAND_LINE_SCOPES = args.config_scopes - - # ensure options on spack command come before everything - setup_main_options(args) - # activate an environment if one was specified on the command line env_format_error = None if not args.no_env: @@ -931,6 +924,12 @@ def _main(argv=None): e.print_context() env_format_error = e + # Push scopes from the command line last + if args.config_scopes: + spack.config._add_command_line_scopes(spack.config.CONFIG, args.config_scopes) + spack.config.CONFIG.push_scope(spack.config.InternalConfigScope("command_line")) + setup_main_options(args) + # ------------------------------------------------------------------------ # Things that require configuration should go below here # ------------------------------------------------------------------------ diff --git a/lib/spack/spack/subprocess_context.py b/lib/spack/spack/subprocess_context.py index c823e657036fad..507045e42faf5b 100644 --- a/lib/spack/spack/subprocess_context.py +++ b/lib/spack/spack/subprocess_context.py @@ -17,7 +17,6 @@ import multiprocessing import pickle import pydoc -import sys from types import ModuleType import spack.config @@ -27,9 +26,6 @@ import spack.repo import spack.store -_SERIALIZE = sys.platform == "win32" or (sys.version_info >= (3, 8) and sys.platform == "darwin") - - patches = None @@ -56,7 +52,7 @@ def _restore_and_run(self, fn, test_state): fn() def create(self): - test_state = TestState() + test_state = GlobalStateMarshaler() return multiprocessing.Process(target=self._restore_and_run, args=(self.fn, test_state)) @@ -65,49 +61,56 @@ class PackageInstallContext: needs to be transmitted to a child process. """ - def __init__(self, pkg): - if _SERIALIZE: + def __init__(self, pkg, *, ctx=None): + ctx = ctx or multiprocessing.get_context() + self.serialize = ctx.get_start_method() != "fork" + if self.serialize: self.serialized_pkg = serialize(pkg) + self.global_state = GlobalStateMarshaler() self.serialized_env = serialize(spack.environment.active_environment()) else: self.pkg = pkg + self.global_state = None self.env = spack.environment.active_environment() self.spack_working_dir = spack.paths.spack_working_dir - self.test_state = TestState() def restore(self): - self.test_state.restore() spack.paths.spack_working_dir = self.spack_working_dir - env = pickle.load(self.serialized_env) if _SERIALIZE else self.env + env = pickle.load(self.serialized_env) if self.serialize else self.env + # Activating the environment modifies the global configuration, so globals have to + # be restored afterward, in case other modifications were applied on top (e.g. from + # command line) if env: spack.environment.activate(env) + + if self.serialize: + self.global_state.restore() + # Order of operation is important, since the package might be retrieved # from a repo defined within the environment configuration - pkg = pickle.load(self.serialized_pkg) if _SERIALIZE else self.pkg + pkg = pickle.load(self.serialized_pkg) if self.serialize else self.pkg return pkg -class TestState: - """Spack tests may modify state that is normally read from disk in memory; - this object is responsible for properly serializing that state to be - applied to a subprocess. This isn't needed outside of a testing environment - but this logic is designed to behave the same inside or outside of tests. +class GlobalStateMarshaler: + """Class to serialize and restore global state for child processes. + + Spack may modify state that is normally read from disk or command line in memory; + this object is responsible for properly serializing that state to be applied to a subprocess. """ def __init__(self): - if _SERIALIZE: - self.config = spack.config.CONFIG - self.platform = spack.platforms.host - self.test_patches = store_patches() - self.store = spack.store.STORE + self.config = spack.config.CONFIG.ensure_unwrapped() + self.platform = spack.platforms.host + self.test_patches = store_patches() + self.store = spack.store.STORE def restore(self): - if _SERIALIZE: - spack.config.CONFIG = self.config - spack.repo.PATH = spack.repo.create(self.config) - spack.platforms.host = self.platform - spack.store.STORE = self.store - self.test_patches.restore() + spack.config.CONFIG = self.config + spack.repo.PATH = spack.repo.create(self.config) + spack.platforms.host = self.platform + spack.store.STORE = self.store + self.test_patches.restore() class TestPatches: diff --git a/share/spack/qa/config_state.py b/share/spack/qa/config_state.py new file mode 100644 index 00000000000000..0c77c31cc6ac28 --- /dev/null +++ b/share/spack/qa/config_state.py @@ -0,0 +1,36 @@ +# 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) +"""Used to test correct application of config line scopes in various cases. + +The option `config:cache` is supposed to be False, and overridden to True +from the command line. +""" +import multiprocessing as mp + +import spack.config +import spack.subprocess_context + + +def show_config(serialized_state): + _ = serialized_state.restore() + result = spack.config.CONFIG.get("config:ccache") + if result is not True: + raise RuntimeError(f"Expected config:ccache:true, but got {result}") + + +if __name__ == "__main__": + print("Testing spawn") + ctx = mp.get_context("spawn") + serialized_state = spack.subprocess_context.PackageInstallContext(None, ctx=ctx) + p = ctx.Process(target=show_config, args=(serialized_state,)) + p.start() + p.join() + + print("Testing fork") + ctx = mp.get_context("fork") + serialized_state = spack.subprocess_context.PackageInstallContext(None, ctx=ctx) + p = ctx.Process(target=show_config, args=(serialized_state,)) + p.start() + p.join() diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 28e34a71208995..71d2979ead22ab 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -52,7 +52,7 @@ if [[ "$UNIT_TEST_COVERAGE" != "true" ]] && python -m pytest -VV 2>&1 | grep xdi fi # We are running pytest-cov after the addition of pytest-xdist, since it integrates -# other pugins for pytest automatically. We still need to use "coverage" explicitly +# other plugins for pytest automatically. We still need to use "coverage" explicitly # for the commands above. # # There is a need to pass the configuration file explicitly due to a bug: diff --git a/share/spack/qa/setup-env-test.sh b/share/spack/qa/setup-env-test.sh index ec24166d52dae6..734835e07aafd0 100755 --- a/share/spack/qa/setup-env-test.sh +++ b/share/spack/qa/setup-env-test.sh @@ -207,3 +207,20 @@ fails spack env deactivate echo "Correct error exit codes for unit-test when it fails" fails spack unit-test fail + +title "Testing config override from command line, outside of an environment" +contains 'True' spack -c config:ccache:true python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +contains 'True' spack -C "$SHARE_DIR/qa/configuration" python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +succeeds spack -c config:ccache:true python "$SHARE_DIR/qa/config_state.py" +succeeds spack -C "$SHARE_DIR/qa/configuration" python "$SHARE_DIR/qa/config_state.py" + +title "Testing config override from command line, inside an environment" +spack env activate --temp +spack config add "config:ccache:false" + +contains 'True' spack -c config:ccache:true python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +contains 'True' spack -C "$SHARE_DIR/qa/configuration" python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +succeeds spack -c config:ccache:true python "$SHARE_DIR/qa/config_state.py" +succeeds spack -C "$SHARE_DIR/qa/configuration" python "$SHARE_DIR/qa/config_state.py" + +spack env deactivate From d1f313342e21e5236e915628cad20d4f9f468644 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:15:52 -0800 Subject: [PATCH 343/615] tau: add v2.34 (#47471) --- var/spack/repos/builtin/packages/tau/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index b2bcac2891be96..9081b5965ad6fd 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -28,6 +28,7 @@ class Tau(Package): license("MIT") version("master", branch="master") + version("2.34", sha256="229ab425e0532e635a0be76d60b8aa613adf7596d15a9ced0b87e7f243bb2132") version("2.33.2", sha256="8ee81fe75507612379f70033183bed2a90e1245554b2a78196b6c5145da44f27") version("2.33.1", sha256="13cc5138e110932f34f02ddf548db91d8219ccb7ff9a84187f0790e40a502403") version("2.33", sha256="04d9d67adb495bc1ea56561f33c5ce5ba44f51cc7f64996f65bd446fac5483d9") From 9049ffdc7ac806f6197e092af10ace25af203a06 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Wed, 6 Nov 2024 13:52:30 -0600 Subject: [PATCH 344/615] gsoap: add v2.8.135 (#47415) * gsoap: add v2.8.135 --- .../repos/builtin/packages/gsoap/package.py | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/gsoap/package.py b/var/spack/repos/builtin/packages/gsoap/package.py index 6eface4e36b683..d1d8b3d1e4deae 100644 --- a/var/spack/repos/builtin/packages/gsoap/package.py +++ b/var/spack/repos/builtin/packages/gsoap/package.py @@ -17,13 +17,30 @@ class Gsoap(AutotoolsPackage, SourceforgePackage): maintainers("greenc-FNAL", "gartung", "marcmengel", "vitodb") - version("2.8.127", sha256="25ecad1bbc363494eb7ea95a68508e4c93cc20596fad9ebc196c6572bbbd3c08") - version("2.8.124", sha256="4b798780989338f665ef8e171bbcc422a271004d62d5852666d5eeca33a6a636") - version("2.8.119", sha256="8997c43b599a2bfe4a788e303a5dd24bbf5992fd06d56f606ca680ca5b0070cf") - version("2.8.114", sha256="aa70a999258100c170a3f8750c1f91318a477d440f6a28117f68bc1ded32327f") - version("2.8.113", sha256="e73782b618303cf55ea6a45751b75ba96797a7a12967ed9d02e6d5761977e73a") - version("2.8.112", sha256="05345312e0bb4d81c98ae63b97cff9eb097f38dafe09356189f9d8e235c54095") - version("2.8.111", sha256="f1670c7e3aeaa66bc5658539fbd162e5099f022666855ef2b2c2bac07fec4bd3") + version("2.8.135", sha256="b11757e405d55d4674dfbf88c4fa6d7e24155cf64ed8ed578ccad2f2b555e98d") + with default_args(deprecated=True): + # Unavailable for direct download anymore + version( + "2.8.127", sha256="25ecad1bbc363494eb7ea95a68508e4c93cc20596fad9ebc196c6572bbbd3c08" + ) + version( + "2.8.124", sha256="4b798780989338f665ef8e171bbcc422a271004d62d5852666d5eeca33a6a636" + ) + version( + "2.8.119", sha256="8997c43b599a2bfe4a788e303a5dd24bbf5992fd06d56f606ca680ca5b0070cf" + ) + version( + "2.8.114", sha256="aa70a999258100c170a3f8750c1f91318a477d440f6a28117f68bc1ded32327f" + ) + version( + "2.8.113", sha256="e73782b618303cf55ea6a45751b75ba96797a7a12967ed9d02e6d5761977e73a" + ) + version( + "2.8.112", sha256="05345312e0bb4d81c98ae63b97cff9eb097f38dafe09356189f9d8e235c54095" + ) + version( + "2.8.111", sha256="f1670c7e3aeaa66bc5658539fbd162e5099f022666855ef2b2c2bac07fec4bd3" + ) depends_on("openssl") depends_on("pkgconfig", type="build") From 8f4a0718bf60eb3eb5284331d93b28233e22d19f Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Wed, 6 Nov 2024 17:36:59 -0500 Subject: [PATCH 345/615] omega-h: new version and cuda conflicts for prior versions (#47473) * omegah: add version 10.8.6 * omegah: cuda without kokkos conflict * omegah: test with latest version in ci --- .../cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml | 4 ++-- .../gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml | 2 +- share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml | 2 +- var/spack/repos/builtin/packages/omega-h/package.py | 8 ++++++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index d8e8091676644d..24a488fbe921bf 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -225,7 +225,7 @@ spack: - magma +cuda cuda_arch=75 - mfem +cuda cuda_arch=75 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=75 - - "omega-h@:9 +cuda cuda_arch=75" # https://github.com/SCOREC/omega_h/issues/116 + - omega-h +cuda cuda_arch=75 - parsec +cuda cuda_arch=75 - petsc +cuda cuda_arch=75 - py-torch +cuda cuda_arch=75 @@ -274,7 +274,7 @@ spack: - magma +cuda cuda_arch=80 - mfem +cuda cuda_arch=80 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=80 - - "omega-h@:9 +cuda cuda_arch=80" # https://github.com/SCOREC/omega_h/issues/116 + - omega-h +cuda cuda_arch=80 - parsec +cuda cuda_arch=80 - petsc +cuda cuda_arch=80 - py-torch +cuda cuda_arch=80 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index 6c30947d4ffdf5..a770b0a299a13d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -233,7 +233,7 @@ spack: - magma +cuda cuda_arch=70 - mfem +cuda cuda_arch=70 - mgard +serial +openmp +timing +unstructured +cuda cuda_arch=70 - - "omega-h@:9 +cuda cuda_arch=70" # https://github.com/SCOREC/omega_h/issues/116 + - omega-h +cuda cuda_arch=70 - parsec +cuda cuda_arch=70 - petsc +cuda cuda_arch=70 - raja +cuda cuda_arch=70 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index a3ceb56a35b2d0..0b81e53d568d1d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -239,7 +239,7 @@ spack: - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz +mgard +cuda cuda_arch=80 ^cusz +cuda cuda_arch=80 - magma +cuda cuda_arch=80 - mfem +cuda cuda_arch=80 - - "omega-h@:9 +cuda cuda_arch=80" # https://github.com/SCOREC/omega_h/issues/116 + - omega-h +cuda cuda_arch=80 - parsec +cuda cuda_arch=80 - petsc +cuda cuda_arch=80 - py-torch +cuda cuda_arch=80 diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py index 67221b389af2fd..a1e3a2363df611 100644 --- a/var/spack/repos/builtin/packages/omega-h/package.py +++ b/var/spack/repos/builtin/packages/omega-h/package.py @@ -19,6 +19,11 @@ class OmegaH(CMakePackage, CudaPackage): maintainers("cwsmith") tags = ["e4s"] version("main", branch="main") + version( + "10.8.6-scorec", + commit="a730c78e516d7f6cca4f8b4e4e0a5eb8020f9ad9", + git="https://github.com/SCOREC/omega_h.git", + ) version( "10.8.5-scorec", commit="62026fc305356abb5e02a9fce3fead9cf5077fbe", @@ -84,6 +89,9 @@ class OmegaH(CMakePackage, CudaPackage): # Single, broken CUDA version. conflicts("^cuda@11.2", msg="See https://github.com/sandialabs/omega_h/issues/366") + # https://github.com/SCOREC/omega_h/pull/118 + conflicts("@10.5:10.8.5 +cuda~kokkos") + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610 conflicts("%gcc@8:8.2", when="@:9.22.1") From 57a90c91a451256bae441bd2097924374e9584b8 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 6 Nov 2024 15:47:44 -0700 Subject: [PATCH 346/615] nalu-wind: fix hypre constraints (#47474) --- var/spack/repos/builtin/packages/nalu-wind/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index 3ebf50b3af02d5..f7a481f2d60fca 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -93,16 +93,16 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): when="+cuda cuda_arch={0}".format(_arch), ) depends_on( - "hypre@develop +mpi+cuda~int64~superlu-dist cuda_arch={0}".format(_arch), + "hypre@2.30.0: +cuda cuda_arch={0}".format(_arch), when="+hypre+cuda cuda_arch={0}".format(_arch), ) for _arch in ROCmPackage.amdgpu_targets: depends_on( - "trilinos@13.4: ~shared+rocm+rocm_rdc amdgpu_target={0}".format(_arch), + "trilinos~shared+rocm+rocm_rdc amdgpu_target={0}".format(_arch), when="+rocm amdgpu_target={0}".format(_arch), ) depends_on( - "hypre+rocm amdgpu_target={0}".format(_arch), + "hypre@2.30.0: +rocm amdgpu_target={0}".format(_arch), when="+hypre+rocm amdgpu_target={0}".format(_arch), ) From 73219e4b02e6561bbeef379081f63efb0dc78817 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 00:22:26 +0100 Subject: [PATCH 347/615] `llnl.util.filesystem.find`: multiple entrypoints (#47436) You can now provide multiple roots to a single `find()` call and all of them will be searched. The roots can overlap (e.g. can be parents of one another). This also adds a library function for taking a set of regular expression patterns and creating a single OR expression (and that library function is used in `find` to improve its performance). --- lib/spack/llnl/util/filesystem.py | 169 +++++++++---------- lib/spack/llnl/util/lang.py | 28 +++ lib/spack/spack/test/llnl/util/filesystem.py | 96 ++++++----- lib/spack/spack/test/llnl/util/lang.py | 15 ++ 4 files changed, 178 insertions(+), 130 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 24055c902b6225..a8f07824c9660e 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -20,11 +20,11 @@ import tempfile from contextlib import contextmanager from itertools import accumulate -from typing import Callable, Iterable, List, Match, Optional, Tuple, Union +from typing import Callable, Deque, Dict, Iterable, List, Match, Optional, Set, Tuple, Union import llnl.util.symlink from llnl.util import tty -from llnl.util.lang import dedupe, memoized +from llnl.util.lang import dedupe, fnmatch_translate_multiple, memoized from llnl.util.symlink import islink, readlink, resolve_link_target_relative_to_the_link, symlink from ..path import path_to_os_path, system_path_filter @@ -1673,32 +1673,40 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find(root, files, recursive=True, max_depth: Optional[int] = None): - """Search for ``files`` starting from the ``root`` directory. - - Like GNU/BSD find but written entirely in Python. - - Specifically this behaves like `find -type f`: it only returns - results that are files. When searching recursively, this behaves - as `find` with the `-L` option (follows symlinks). +def find( + root: Union[str, List[str]], + files: Union[str, List[str]], + recursive: bool = True, + max_depth: Optional[int] = None, +) -> List[str]: + """Finds all non-directory files matching the filename patterns from ``files`` starting from + ``root``. This function returns a deterministic result for the same input and directory + structure when run multiple times. Symlinked directories are followed, and unique directories + are searched only once. Each matching file is returned only once at lowest depth in case + multiple paths exist due to symlinked directories. The function has similarities to the Unix + ``find`` utility. Examples: .. code-block:: console - $ find -L /usr -name python + $ find -L /usr -name python3 -type f - is equivalent to: + is roughly equivalent to + + >>> find("/usr", "python3") - >>> find('/usr', 'python') + with the notable difference that this function only lists a single path to each file in case of + symlinked directories. .. code-block:: console - $ find /usr/local/bin -maxdepth 1 -name python + $ find -L /usr/local/bin /usr/local/sbin -maxdepth 1 '(' -name python3 -o -name getcap \\ + ')' -type f - is equivalent to: + is roughly equivalent to: - >>> find('/usr/local/bin', 'python', recursive=False) + >>> find(["/usr/local/bin", "/usr/local/sbin"], ["python3", "getcap"], recursive=False) Accepts any glob characters accepted by fnmatch: @@ -1712,17 +1720,17 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): ========== ==================================== Parameters: - root (str): The root directory to start searching from - files (str or collections.abc.Sequence): Library name(s) to search for - recursive (bool): if False search only root folder, - if True descends top-down from the root. Defaults to True. - max_depth (int): if set, don't search below this depth. Cannot be set - if recursive is False + root: One or more root directories to start searching from + files: One or more filename patterns to search for + recursive: if False search only root, if True descends from roots. Defaults to True. + max_depth: if set, don't search below this depth. Cannot be set if recursive is False - Returns: - list: The files that have been found + Returns a list of absolute, matching file paths. """ - if isinstance(files, str): + if not isinstance(root, list): + root = [root] + + if not isinstance(files, list): files = [files] # If recursive is false, max_depth can only be None or 0 @@ -1734,10 +1742,9 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): elif max_depth is None: max_depth = sys.maxsize - tty.debug(f"Find (max depth = {max_depth}): {root} {str(files)}") - result = find_max_depth(root, files, max_depth) - - tty.debug(f"Find complete: {root} {str(files)}") + tty.debug(f"Find (max depth = {max_depth}): {root} {files}") + result = _find_max_depth(root, files, max_depth) + tty.debug(f"Find complete: {root} {files}") return result @@ -1746,56 +1753,36 @@ def _log_file_access_issue(e: OSError, path: str) -> None: tty.debug(f"find must skip {path}: {errno_name} {e}") -@system_path_filter(arg_slice=slice(1)) -def find_max_depth(root, globs, max_depth: Optional[int] = None): - """Given a set of non-recursive glob file patterns, finds all - files matching those patterns up to a maximum specified depth. - - If a directory has a name which matches an input pattern, it will - not be included in the results. +def _dir_id(s: os.stat_result) -> Tuple[int, int]: + # Note: on windows, st_ino is the file index and st_dev is the volume serial number. See + # https://github.com/python/cpython/blob/3.9/Python/fileutils.c + return (s.st_ino, s.st_dev) - If ``max_depth`` is specified, does not search below that depth. - If ``globs`` is a list, files matching earlier entries are placed - in the return value before files matching later entries. - """ - try: - stat_root = os.stat(root) - except OSError: - return [] +def _find_max_depth(roots: List[str], globs: List[str], max_depth: int = sys.maxsize) -> List[str]: + """See ``find`` for the public API.""" + # Apply normcase to file patterns and filenames to respect case insensitive filesystems + regex, groups = fnmatch_translate_multiple([os.path.normcase(x) for x in globs]) + # Ordered dictionary that keeps track of the files found for each pattern + capture_group_to_paths: Dict[str, List[str]] = {group: [] for group in groups} + # Ensure returned paths are always absolute + roots = [os.path.abspath(r) for r in roots] + # Breadth-first search queue. Each element is a tuple of (depth, directory) + dir_queue: Deque[Tuple[int, str]] = collections.deque() + # Set of visited directories. Each element is a tuple of (inode, device) + visited_dirs: Set[Tuple[int, int]] = set() - if max_depth is None: - max_depth = sys.maxsize + for root in roots: + try: + stat_root = os.stat(root) + except OSError as e: + _log_file_access_issue(e, root) + continue + dir_id = _dir_id(stat_root) + if dir_id not in visited_dirs: + dir_queue.appendleft((0, root)) + visited_dirs.add(dir_id) - if isinstance(globs, str): - globs = [globs] - # Apply normcase to regular expressions and to the filenames: - # this respects case-sensitivity semantics of different OSes - # (e.g. file search is typically case-insensitive on Windows) - regexes = [re.compile(fnmatch.translate(os.path.normcase(x))) for x in globs] - - # Note later calls to os.scandir etc. return abspaths if the - # input is absolute, see https://docs.python.org/3/library/os.html#os.DirEntry.path - root = os.path.abspath(root) - - found_files = collections.defaultdict(list) - - def _dir_id(stat_info): - # Note: on windows, st_ino is the file index and st_dev - # is the volume serial number. See - # https://github.com/python/cpython/blob/3.9/Python/fileutils.c - return (stat_info.st_ino, stat_info.st_dev) - - visited_dirs = set([_dir_id(stat_root)]) - - # Each queue item stores the depth and path - # This achieves a consistent traversal order by iterating through - # each directory in alphabetical order. - # This also traverses in BFS order to ensure finding the shortest - # path to any file (or one of the shortest paths, if there are - # several - the one returned will be consistent given the prior - # point). - dir_queue = collections.deque([(0, root)]) while dir_queue: depth, next_dir = dir_queue.pop() try: @@ -1810,20 +1797,18 @@ def _dir_id(stat_info): try: it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) except OSError as e: - # Possible permission issue, or a symlink that cannot - # be resolved (ELOOP). + # Possible permission issue, or a symlink that cannot be resolved (ELOOP). _log_file_access_issue(e, dir_entry.path) continue - if it_is_a_dir and (depth < max_depth): + if it_is_a_dir and depth < max_depth: try: - # The stat should be performed in a try/except block. - # We repeat that here vs. moving to the above block - # because we only want to call `stat` if we haven't - # exceeded our max_depth + # The stat should be performed in a try/except block. We repeat that here + # vs. moving to the above block because we only want to call `stat` if we + # haven't exceeded our max_depth if sys.platform == "win32": - # Note: st_ino/st_dev on DirEntry.stat are not set on - # Windows, so we have to call os.stat + # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we + # have to call os.stat stat_info = os.stat(dir_entry.path, follow_symlinks=True) else: stat_info = dir_entry.stat(follow_symlinks=True) @@ -1836,15 +1821,15 @@ def _dir_id(stat_info): dir_queue.appendleft((depth + 1, dir_entry.path)) visited_dirs.add(dir_id) else: - fname = os.path.basename(dir_entry.path) - for pattern in regexes: - if pattern.match(os.path.normcase(fname)): - found_files[pattern].append(os.path.join(next_dir, fname)) - - # TODO: for fully-recursive searches, we can print a warning after - # after having searched everything up to some fixed depth + m = regex.match(os.path.normcase(os.path.basename(dir_entry.path))) + if not m: + continue + for group in capture_group_to_paths: + if m.group(group): + capture_group_to_paths[group].append(dir_entry.path) + break - return list(itertools.chain(*[found_files[x] for x in regexes])) + return [path for paths in capture_group_to_paths.values() for path in paths] # Utilities for libraries and headers diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index f43773346a948d..6641a727dde7af 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -5,12 +5,14 @@ import collections.abc import contextlib +import fnmatch import functools import itertools import os import re import sys import traceback +import typing import warnings from datetime import datetime, timedelta from typing import Callable, Iterable, List, Tuple, TypeVar @@ -859,6 +861,32 @@ def elide_list(line_list: List[str], max_num: int = 10) -> List[str]: return line_list +if sys.version_info >= (3, 9): + PatternStr = re.Pattern[str] +else: + PatternStr = typing.Pattern[str] + + +def fnmatch_translate_multiple(patterns: List[str]) -> Tuple[PatternStr, List[str]]: + """Same as fnmatch.translate, but creates a single regex of the form + ``(?P...)|(?P...)|...`` for each pattern in the iterable, where + ``patternN`` is a named capture group that matches the corresponding pattern translated by + ``fnmatch.translate``. This can be used to match multiple patterns in a single pass. No case + normalization is performed on the patterns. + + Args: + patterns: list of fnmatch patterns + + Returns: + Tuple of the combined regex and the list of named capture groups corresponding to each + pattern in the input list. + """ + groups = [f"pattern{i}" for i in range(len(patterns))] + regexes = (fnmatch.translate(p) for p in patterns) + combined = re.compile("|".join(f"(?P<{g}>{r})" for g, r in zip(groups, regexes))) + return combined, groups + + @contextlib.contextmanager def nullcontext(*args, **kwargs): """Empty context manager. diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index 01379be94c0614..03e1f30dd30996 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -1072,16 +1072,16 @@ def test_find_max_depth(dir_structure_with_things_to_find): # Make sure the paths we use to verify are absolute assert os.path.isabs(locations["file_one"]) - assert set(fs.find_max_depth(root, "file_*", 0)) == {locations["file_four"]} - assert set(fs.find_max_depth(root, "file_*", 1)) == { + assert set(fs.find(root, "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(root, "file_*", max_depth=1)) == { locations["file_one"], locations["file_three"], locations["file_four"], } - assert set(fs.find_max_depth(root, "file_two", 2)) == {locations["file_two"]} - assert not set(fs.find_max_depth(root, "file_two", 1)) - assert set(fs.find_max_depth(root, "file_two")) == {locations["file_two"]} - assert set(fs.find_max_depth(root, "file_*")) == set(locations.values()) + assert set(fs.find(root, "file_two", max_depth=2)) == {locations["file_two"]} + assert not set(fs.find(root, "file_two", max_depth=1)) + assert set(fs.find(root, "file_two")) == {locations["file_two"]} + assert set(fs.find(root, "file_*")) == set(locations.values()) def test_find_max_depth_relative(dir_structure_with_things_to_find): @@ -1090,8 +1090,8 @@ def test_find_max_depth_relative(dir_structure_with_things_to_find): """ root, locations = dir_structure_with_things_to_find with fs.working_dir(root): - assert set(fs.find_max_depth(".", "file_*", 0)) == {locations["file_four"]} - assert set(fs.find_max_depth(".", "file_two", 2)) == {locations["file_two"]} + assert set(fs.find(".", "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(".", "file_two", max_depth=2)) == {locations["file_two"]} @pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) @@ -1105,7 +1105,8 @@ def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) -def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): +@pytest.fixture(params=[True, False]) +def complex_dir_structure(request, tmpdir): """ "lx-dy" means "level x, directory y" "lx-fy" means "level x, file y" @@ -1128,8 +1129,11 @@ def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): l1-s3 -> l3-d4 # a link that "skips" a directory level l1-s4 -> l2-s3 # a link to a link to a dir """ - if sys.platform == "win32" and (not use_junctions) and (not _windows_can_symlink()): + use_junctions = request.param + if sys.platform == "win32" and not use_junctions and not _windows_can_symlink(): pytest.skip("This Windows instance is not configured with symlink support") + elif sys.platform != "win32" and use_junctions: + pytest.skip("Junctions are a Windows-only feature") l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) @@ -1150,44 +1154,60 @@ def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): link_fn(l2_d2, l2_s3) link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") - locations = {} - locations["l4-f1"] = str(l3_d2.join("l4-f1").ensure()) - locations["l4-f2-full"] = str(l3_d4.join("l4-f2").ensure()) - locations["l4-f2-link"] = str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2") - locations["l2-f1"] = str(l1_d2.join("l2-f1").ensure()) - locations["l2-f1-link"] = str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1") - locations["l3-f3-full"] = str(l2_d2.join("l3-f3").ensure()) - locations["l3-f3-link-l1"] = str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3") + locations = { + "l4-f1": str(l3_d2.join("l4-f1").ensure()), + "l4-f2-full": str(l3_d4.join("l4-f2").ensure()), + "l4-f2-link": str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2"), + "l2-f1": str(l1_d2.join("l2-f1").ensure()), + "l2-f1-link": str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1"), + "l3-f3-full": str(l2_d2.join("l3-f3").ensure()), + "l3-f3-link-l1": str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3"), + } return str(tmpdir), locations -def _check_find_links(root, locations): +def test_find_max_depth_symlinks(complex_dir_structure): + root, locations = complex_dir_structure root = pathlib.Path(root) - assert set(fs.find_max_depth(root, "l4-f1")) == {locations["l4-f1"]} - assert set(fs.find_max_depth(root / "l1-s3", "l4-f2", 0)) == {locations["l4-f2-link"]} - assert set(fs.find_max_depth(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} + assert set(fs.find(root, "l4-f1")) == {locations["l4-f1"]} + assert set(fs.find(root / "l1-s3", "l4-f2", max_depth=0)) == {locations["l4-f2-link"]} + assert set(fs.find(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} # File is accessible via symlink and subdir, the link path will be # searched first, and the directory will not be searched again when # it is encountered the second time (via not-link) in the traversal - assert set(fs.find_max_depth(root, "l4-f2")) == {locations["l4-f2-link"]} + assert set(fs.find(root, "l4-f2")) == {locations["l4-f2-link"]} # File is accessible only via the dir, so the full file path should # be reported - assert set(fs.find_max_depth(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} + assert set(fs.find(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} # Check following links to links - assert set(fs.find_max_depth(root, "l3-f3")) == {locations["l3-f3-link-l1"]} + assert set(fs.find(root, "l3-f3")) == {locations["l3-f3-link-l1"]} -@pytest.mark.parametrize( - "use_junctions", - [ - False, - pytest.param( - True, - marks=pytest.mark.skipif(sys.platform != "win32", reason="Only Windows has junctions"), - ), - ], -) -def test_find_max_depth_symlinks(tmpdir, use_junctions): - root, locations = dir_structure_with_things_to_find_links(tmpdir, use_junctions=use_junctions) - _check_find_links(root, locations) +def test_find_max_depth_multiple_and_repeated_entry_points(complex_dir_structure): + root, locations = complex_dir_structure + + fst = str(pathlib.Path(root) / "l1-d1" / "l2-d1") + snd = str(pathlib.Path(root) / "l1-d2") + nonexistent = str(pathlib.Path(root) / "nonexistent") + + assert set(fs.find([fst, snd, fst, snd, nonexistent], ["l*-f*"], max_depth=1)) == { + locations["l2-f1"], + locations["l4-f1"], + locations["l4-f2-full"], + locations["l3-f3-full"], + } + + +def test_multiple_patterns(complex_dir_structure): + root, _ = complex_dir_structure + paths = fs.find(root, ["l2-f1", "l3-f3", "*"]) + # There shouldn't be duplicate results with multiple, overlapping patterns + assert len(set(paths)) == len(paths) + # All files should be found + filenames = [os.path.basename(p) for p in paths] + assert set(filenames) == {"l2-f1", "l3-f3", "l4-f1", "l4-f2"} + # They are ordered by first matching pattern (this is a bit of an implementation detail, + # and we could decide to change the exact order in the future) + assert filenames[0] == "l2-f1" + assert filenames[1] == "l3-f3" diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index 52dcf3950a452b..0d5aaab81a2e25 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -373,3 +373,18 @@ class _SomeClass: _SomeClass.deprecated.error_lvl = 2 with pytest.raises(AttributeError): _ = s.deprecated + + +def test_fnmatch_multiple(): + regex, groups = llnl.util.lang.fnmatch_translate_multiple(["libf*o.so", "libb*r.so"]) + + a = regex.match("libfoo.so") + assert a and a.group(groups[0]) == "libfoo.so" + + b = regex.match("libbar.so") + assert b and b.group(groups[1]) == "libbar.so" + + assert not regex.match("libfoo.so.1") + assert not regex.match("libbar.so.1") + assert not regex.match("libfoo.solibbar.so") + assert not regex.match("libbaz.so") From 3665c5c01b71525102646d3c3b1d015a72753c4f Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:25:47 -0800 Subject: [PATCH 348/615] slate %oneapi@2025: cxxflags: add -Wno-error=missing-template-arg-list-after-template-kw (#47476) --- var/spack/repos/builtin/packages/slate/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index 82829b2edcb5f3..879c773603fe07 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -127,6 +127,12 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): conflicts("+sycl", when="@:2022.07.00", msg="SYCL support requires SLATE version 2023.08.25") conflicts("^hip@5.6.0:", when="@:2023.08.25", msg="Incompatible version of HIP/ROCm") + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec backend_config = "-Duse_cuda=%s" % ("+cuda" in spec) From dd26732897aa2a0d3f5e4897aa87cc200acece00 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:26:04 -0800 Subject: [PATCH 349/615] legion%oneapi@2025: cxxflags add -Wno-error=missing-template-arg-list-after-template-kw (#47478) --- var/spack/repos/builtin/packages/legion/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 74f46d380ae1f3..4e1a9cccf7ff1b 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -310,6 +310,12 @@ def validate_gasnet_root(value): "sysomp", default=False, description="Use system OpenMP implementation instead of Realm's" ) + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec from_variant = self.define_from_variant From 074b845cd31b5b954163eee15e2a73243c3a3b12 Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Wed, 6 Nov 2024 17:30:29 -0700 Subject: [PATCH 350/615] Add amr-wind versions (#47479) --- var/spack/repos/builtin/packages/amr-wind/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index 47919489006e4e..c2b96b163bc81b 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -21,6 +21,8 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("main", branch="main", submodules=True) + version("3.2.0", tag="v3.2.0", submodules=True) + version("3.1.7", tag="v3.1.7", submodules=True) version("3.1.6", tag="v3.1.6", submodules=True) version("3.1.5", tag="v3.1.5", submodules=True) version("3.1.4", tag="v3.1.4", submodules=True) From bf11fb037b799d8643d096dfb0991c33b801a716 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:49:35 -0800 Subject: [PATCH 351/615] loki%oneapi@2025: -Wno-error=missing-template-arg-list-after-template-kw (#47475) --- var/spack/repos/builtin/packages/loki/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/loki/package.py b/var/spack/repos/builtin/packages/loki/package.py index 91bf32a1dec74e..360d2ad587d3ef 100644 --- a/var/spack/repos/builtin/packages/loki/package.py +++ b/var/spack/repos/builtin/packages/loki/package.py @@ -24,6 +24,8 @@ class Loki(MakefilePackage): def flag_handler(self, name, flags): if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") if self.spec.satisfies("%oneapi@2023.0.0:"): flags.append("-Wno-error=dynamic-exception-spec") if self.spec.satisfies("@0.1.7 %gcc@11:"): From 0d817878ea25ecd2e0c7a5754f2ac877a1da7c59 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 20:29:37 +0100 Subject: [PATCH 352/615] spec.py: fix comparison with multivalued variants (#47485) --- lib/spack/spack/test/spec_semantics.py | 4 ++++ lib/spack/spack/variant.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 6342325364a3a0..38424e951c55cc 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -1975,3 +1975,7 @@ def test_equality_discriminate_on_propagation(lhs, rhs): s, t = Spec(lhs), Spec(rhs) assert s != t assert len({s, t}) == 2 + + +def test_comparison_multivalued_variants(): + assert Spec("x=a") < Spec("x=a,b") < Spec("x==a,b") < Spec("x==a,b,c") diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index bce2015c1207bc..e5a5ddfa3c904a 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -378,8 +378,8 @@ def _value_setter(self, value: ValueType) -> None: def _cmp_iter(self) -> Iterable: yield self.name - yield from (str(v) for v in self.value_as_tuple) yield self.propagate + yield from (str(v) for v in self.value_as_tuple) def copy(self) -> "AbstractVariant": """Returns an instance of a variant equivalent to self From 754408ca2b170e5c70980783900515d248bfd079 Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Thu, 7 Nov 2024 13:21:38 -0700 Subject: [PATCH 353/615] Add fast farm variant to openfast (#47486) --- var/spack/repos/builtin/packages/openfast/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py index 3d768d3c6fd632..2fd434465054e3 100644 --- a/var/spack/repos/builtin/packages/openfast/package.py +++ b/var/spack/repos/builtin/packages/openfast/package.py @@ -50,6 +50,7 @@ class Openfast(CMakePackage): variant("openmp", default=False, description="Enable OpenMP support") variant("netcdf", default=False, description="Enable NetCDF support") variant("rosco", default=False, description="Build ROSCO controller") + variant("fastfarm", default=False, description="Enable FAST.Farm capabilities") depends_on("blas") depends_on("lapack") @@ -78,6 +79,7 @@ def cmake_args(self): self.define_from_variant("BUILD_OPENFAST_CPP_API", "cxx"), self.define_from_variant("BUILD_OPENFAST_CPP_DRIVER", "cxx"), self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), + self.define_from_variant("BUILD_FASTFARM", "fastfarm"), ] ) From 0a4563fd0253c829fb14fd576ad0368954028d5d Mon Sep 17 00:00:00 2001 From: Chris White Date: Thu, 7 Nov 2024 12:49:26 -0800 Subject: [PATCH 354/615] silo package: update patch (#47457) Update patch based on LLNL/Silo#319 to fix build of 4.10.2 --- .../packages/silo/H5EPR_SEMI_COLON.patch | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch b/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch index ae741450810e25..023f0bbe662a3e 100644 --- a/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch +++ b/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch @@ -1,50 +1,38 @@ diff --git a/src/hdf5_drv/H5FDsilo.c b/src/hdf5_drv/H5FDsilo.c +index 840dfd0..0153e18 100644 --- a/src/hdf5_drv/H5FDsilo.c +++ b/src/hdf5_drv/H5FDsilo.c -@@ -243,6 +243,12 @@ - return tmp; - } - -+#if HDF5_VERSION_GE(1,10,8) -+#define H5EPR_SEMI_COLON ; -+#else -+#define H5EPR_SEMI_COLON -+#endif -+ - - #ifdef H5_HAVE_SNPRINTF - #define H5E_PUSH_HELPER(Func,Cls,Maj,Min,Msg,Ret,Errno) \ -@@ -252,13 +258,13 @@ +@@ -255,13 +255,13 @@ static const char *flavors(H5F_mem_t m) snprintf(msg, sizeof(msg), Msg "(errno=%d, \"%s\")", \ Errno, strerror(Errno)); \ ret_value = Ret; \ - H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) \ -+ H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) H5EPR_SEMI_COLON \ ++ H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) ; \ } #else #define H5E_PUSH_HELPER(Func,Cls,Maj,Min,Msg,Ret,Errno) \ { \ ret_value = Ret; \ - H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) \ -+ H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) H5EPR_SEMI_COLON \ ++ H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) ; \ } #endif -@@ -1355,7 +1368,7 @@ +@@ -1308,7 +1308,7 @@ H5FD_silo_sb_encode(H5FD_t *_file, char *name/*out*/, assert(sizeof(hsize_t)<=8); memcpy(p, &file->block_size, sizeof(hsize_t)); if (H5Tconvert(H5T_NATIVE_HSIZE, H5T_STD_U64LE, 1, buf+8, NULL, H5P_DEFAULT)<0) - H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) ; return 0; } -@@ -1383,14 +1396,14 @@ +@@ -1336,14 +1336,14 @@ H5FD_silo_sb_decode(H5FD_t *_file, const char *name, const unsigned char *buf) /* Make sure the name/version number is correct */ if (strcmp(name, "LLNLsilo")) - H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) ; buf += 8; /* Decode block size */ @@ -52,7 +40,7 @@ diff --git a/src/hdf5_drv/H5FDsilo.c b/src/hdf5_drv/H5FDsilo.c memcpy(x, buf, 8); if (H5Tconvert(H5T_STD_U64LE, H5T_NATIVE_HSIZE, 1, x, NULL, H5P_DEFAULT)<0) - H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) ; ap = (hsize_t*)x; /*file->block_size = *ap; ignore stored value for now */ From 60ba61f6b2b063d37ccbb5c39cf52e75d41d8333 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 20:53:26 +0100 Subject: [PATCH 355/615] Revert "`llnl.util.filesystem.find`: multiple entrypoints (#47436)" This reverts commit 73219e4b02e6561bbeef379081f63efb0dc78817. --- lib/spack/llnl/util/filesystem.py | 169 ++++++++++--------- lib/spack/llnl/util/lang.py | 28 --- lib/spack/spack/test/llnl/util/filesystem.py | 96 +++++------ lib/spack/spack/test/llnl/util/lang.py | 15 -- 4 files changed, 130 insertions(+), 178 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index a8f07824c9660e..24055c902b6225 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -20,11 +20,11 @@ import tempfile from contextlib import contextmanager from itertools import accumulate -from typing import Callable, Deque, Dict, Iterable, List, Match, Optional, Set, Tuple, Union +from typing import Callable, Iterable, List, Match, Optional, Tuple, Union import llnl.util.symlink from llnl.util import tty -from llnl.util.lang import dedupe, fnmatch_translate_multiple, memoized +from llnl.util.lang import dedupe, memoized from llnl.util.symlink import islink, readlink, resolve_link_target_relative_to_the_link, symlink from ..path import path_to_os_path, system_path_filter @@ -1673,40 +1673,32 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find( - root: Union[str, List[str]], - files: Union[str, List[str]], - recursive: bool = True, - max_depth: Optional[int] = None, -) -> List[str]: - """Finds all non-directory files matching the filename patterns from ``files`` starting from - ``root``. This function returns a deterministic result for the same input and directory - structure when run multiple times. Symlinked directories are followed, and unique directories - are searched only once. Each matching file is returned only once at lowest depth in case - multiple paths exist due to symlinked directories. The function has similarities to the Unix - ``find`` utility. +def find(root, files, recursive=True, max_depth: Optional[int] = None): + """Search for ``files`` starting from the ``root`` directory. + + Like GNU/BSD find but written entirely in Python. + + Specifically this behaves like `find -type f`: it only returns + results that are files. When searching recursively, this behaves + as `find` with the `-L` option (follows symlinks). Examples: .. code-block:: console - $ find -L /usr -name python3 -type f + $ find -L /usr -name python - is roughly equivalent to - - >>> find("/usr", "python3") + is equivalent to: - with the notable difference that this function only lists a single path to each file in case of - symlinked directories. + >>> find('/usr', 'python') .. code-block:: console - $ find -L /usr/local/bin /usr/local/sbin -maxdepth 1 '(' -name python3 -o -name getcap \\ - ')' -type f + $ find /usr/local/bin -maxdepth 1 -name python - is roughly equivalent to: + is equivalent to: - >>> find(["/usr/local/bin", "/usr/local/sbin"], ["python3", "getcap"], recursive=False) + >>> find('/usr/local/bin', 'python', recursive=False) Accepts any glob characters accepted by fnmatch: @@ -1720,17 +1712,17 @@ def find( ========== ==================================== Parameters: - root: One or more root directories to start searching from - files: One or more filename patterns to search for - recursive: if False search only root, if True descends from roots. Defaults to True. - max_depth: if set, don't search below this depth. Cannot be set if recursive is False + root (str): The root directory to start searching from + files (str or collections.abc.Sequence): Library name(s) to search for + recursive (bool): if False search only root folder, + if True descends top-down from the root. Defaults to True. + max_depth (int): if set, don't search below this depth. Cannot be set + if recursive is False - Returns a list of absolute, matching file paths. + Returns: + list: The files that have been found """ - if not isinstance(root, list): - root = [root] - - if not isinstance(files, list): + if isinstance(files, str): files = [files] # If recursive is false, max_depth can only be None or 0 @@ -1742,9 +1734,10 @@ def find( elif max_depth is None: max_depth = sys.maxsize - tty.debug(f"Find (max depth = {max_depth}): {root} {files}") - result = _find_max_depth(root, files, max_depth) - tty.debug(f"Find complete: {root} {files}") + tty.debug(f"Find (max depth = {max_depth}): {root} {str(files)}") + result = find_max_depth(root, files, max_depth) + + tty.debug(f"Find complete: {root} {str(files)}") return result @@ -1753,36 +1746,56 @@ def _log_file_access_issue(e: OSError, path: str) -> None: tty.debug(f"find must skip {path}: {errno_name} {e}") -def _dir_id(s: os.stat_result) -> Tuple[int, int]: - # Note: on windows, st_ino is the file index and st_dev is the volume serial number. See - # https://github.com/python/cpython/blob/3.9/Python/fileutils.c - return (s.st_ino, s.st_dev) +@system_path_filter(arg_slice=slice(1)) +def find_max_depth(root, globs, max_depth: Optional[int] = None): + """Given a set of non-recursive glob file patterns, finds all + files matching those patterns up to a maximum specified depth. + If a directory has a name which matches an input pattern, it will + not be included in the results. -def _find_max_depth(roots: List[str], globs: List[str], max_depth: int = sys.maxsize) -> List[str]: - """See ``find`` for the public API.""" - # Apply normcase to file patterns and filenames to respect case insensitive filesystems - regex, groups = fnmatch_translate_multiple([os.path.normcase(x) for x in globs]) - # Ordered dictionary that keeps track of the files found for each pattern - capture_group_to_paths: Dict[str, List[str]] = {group: [] for group in groups} - # Ensure returned paths are always absolute - roots = [os.path.abspath(r) for r in roots] - # Breadth-first search queue. Each element is a tuple of (depth, directory) - dir_queue: Deque[Tuple[int, str]] = collections.deque() - # Set of visited directories. Each element is a tuple of (inode, device) - visited_dirs: Set[Tuple[int, int]] = set() + If ``max_depth`` is specified, does not search below that depth. - for root in roots: - try: - stat_root = os.stat(root) - except OSError as e: - _log_file_access_issue(e, root) - continue - dir_id = _dir_id(stat_root) - if dir_id not in visited_dirs: - dir_queue.appendleft((0, root)) - visited_dirs.add(dir_id) + If ``globs`` is a list, files matching earlier entries are placed + in the return value before files matching later entries. + """ + try: + stat_root = os.stat(root) + except OSError: + return [] + + if max_depth is None: + max_depth = sys.maxsize + if isinstance(globs, str): + globs = [globs] + # Apply normcase to regular expressions and to the filenames: + # this respects case-sensitivity semantics of different OSes + # (e.g. file search is typically case-insensitive on Windows) + regexes = [re.compile(fnmatch.translate(os.path.normcase(x))) for x in globs] + + # Note later calls to os.scandir etc. return abspaths if the + # input is absolute, see https://docs.python.org/3/library/os.html#os.DirEntry.path + root = os.path.abspath(root) + + found_files = collections.defaultdict(list) + + def _dir_id(stat_info): + # Note: on windows, st_ino is the file index and st_dev + # is the volume serial number. See + # https://github.com/python/cpython/blob/3.9/Python/fileutils.c + return (stat_info.st_ino, stat_info.st_dev) + + visited_dirs = set([_dir_id(stat_root)]) + + # Each queue item stores the depth and path + # This achieves a consistent traversal order by iterating through + # each directory in alphabetical order. + # This also traverses in BFS order to ensure finding the shortest + # path to any file (or one of the shortest paths, if there are + # several - the one returned will be consistent given the prior + # point). + dir_queue = collections.deque([(0, root)]) while dir_queue: depth, next_dir = dir_queue.pop() try: @@ -1797,18 +1810,20 @@ def _find_max_depth(roots: List[str], globs: List[str], max_depth: int = sys.max try: it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) except OSError as e: - # Possible permission issue, or a symlink that cannot be resolved (ELOOP). + # Possible permission issue, or a symlink that cannot + # be resolved (ELOOP). _log_file_access_issue(e, dir_entry.path) continue - if it_is_a_dir and depth < max_depth: + if it_is_a_dir and (depth < max_depth): try: - # The stat should be performed in a try/except block. We repeat that here - # vs. moving to the above block because we only want to call `stat` if we - # haven't exceeded our max_depth + # The stat should be performed in a try/except block. + # We repeat that here vs. moving to the above block + # because we only want to call `stat` if we haven't + # exceeded our max_depth if sys.platform == "win32": - # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we - # have to call os.stat + # Note: st_ino/st_dev on DirEntry.stat are not set on + # Windows, so we have to call os.stat stat_info = os.stat(dir_entry.path, follow_symlinks=True) else: stat_info = dir_entry.stat(follow_symlinks=True) @@ -1821,15 +1836,15 @@ def _find_max_depth(roots: List[str], globs: List[str], max_depth: int = sys.max dir_queue.appendleft((depth + 1, dir_entry.path)) visited_dirs.add(dir_id) else: - m = regex.match(os.path.normcase(os.path.basename(dir_entry.path))) - if not m: - continue - for group in capture_group_to_paths: - if m.group(group): - capture_group_to_paths[group].append(dir_entry.path) - break + fname = os.path.basename(dir_entry.path) + for pattern in regexes: + if pattern.match(os.path.normcase(fname)): + found_files[pattern].append(os.path.join(next_dir, fname)) + + # TODO: for fully-recursive searches, we can print a warning after + # after having searched everything up to some fixed depth - return [path for paths in capture_group_to_paths.values() for path in paths] + return list(itertools.chain(*[found_files[x] for x in regexes])) # Utilities for libraries and headers diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 6641a727dde7af..f43773346a948d 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -5,14 +5,12 @@ import collections.abc import contextlib -import fnmatch import functools import itertools import os import re import sys import traceback -import typing import warnings from datetime import datetime, timedelta from typing import Callable, Iterable, List, Tuple, TypeVar @@ -861,32 +859,6 @@ def elide_list(line_list: List[str], max_num: int = 10) -> List[str]: return line_list -if sys.version_info >= (3, 9): - PatternStr = re.Pattern[str] -else: - PatternStr = typing.Pattern[str] - - -def fnmatch_translate_multiple(patterns: List[str]) -> Tuple[PatternStr, List[str]]: - """Same as fnmatch.translate, but creates a single regex of the form - ``(?P...)|(?P...)|...`` for each pattern in the iterable, where - ``patternN`` is a named capture group that matches the corresponding pattern translated by - ``fnmatch.translate``. This can be used to match multiple patterns in a single pass. No case - normalization is performed on the patterns. - - Args: - patterns: list of fnmatch patterns - - Returns: - Tuple of the combined regex and the list of named capture groups corresponding to each - pattern in the input list. - """ - groups = [f"pattern{i}" for i in range(len(patterns))] - regexes = (fnmatch.translate(p) for p in patterns) - combined = re.compile("|".join(f"(?P<{g}>{r})" for g, r in zip(groups, regexes))) - return combined, groups - - @contextlib.contextmanager def nullcontext(*args, **kwargs): """Empty context manager. diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index 03e1f30dd30996..01379be94c0614 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -1072,16 +1072,16 @@ def test_find_max_depth(dir_structure_with_things_to_find): # Make sure the paths we use to verify are absolute assert os.path.isabs(locations["file_one"]) - assert set(fs.find(root, "file_*", max_depth=0)) == {locations["file_four"]} - assert set(fs.find(root, "file_*", max_depth=1)) == { + assert set(fs.find_max_depth(root, "file_*", 0)) == {locations["file_four"]} + assert set(fs.find_max_depth(root, "file_*", 1)) == { locations["file_one"], locations["file_three"], locations["file_four"], } - assert set(fs.find(root, "file_two", max_depth=2)) == {locations["file_two"]} - assert not set(fs.find(root, "file_two", max_depth=1)) - assert set(fs.find(root, "file_two")) == {locations["file_two"]} - assert set(fs.find(root, "file_*")) == set(locations.values()) + assert set(fs.find_max_depth(root, "file_two", 2)) == {locations["file_two"]} + assert not set(fs.find_max_depth(root, "file_two", 1)) + assert set(fs.find_max_depth(root, "file_two")) == {locations["file_two"]} + assert set(fs.find_max_depth(root, "file_*")) == set(locations.values()) def test_find_max_depth_relative(dir_structure_with_things_to_find): @@ -1090,8 +1090,8 @@ def test_find_max_depth_relative(dir_structure_with_things_to_find): """ root, locations = dir_structure_with_things_to_find with fs.working_dir(root): - assert set(fs.find(".", "file_*", max_depth=0)) == {locations["file_four"]} - assert set(fs.find(".", "file_two", max_depth=2)) == {locations["file_two"]} + assert set(fs.find_max_depth(".", "file_*", 0)) == {locations["file_four"]} + assert set(fs.find_max_depth(".", "file_two", 2)) == {locations["file_two"]} @pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) @@ -1105,8 +1105,7 @@ def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) -@pytest.fixture(params=[True, False]) -def complex_dir_structure(request, tmpdir): +def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): """ "lx-dy" means "level x, directory y" "lx-fy" means "level x, file y" @@ -1129,11 +1128,8 @@ def complex_dir_structure(request, tmpdir): l1-s3 -> l3-d4 # a link that "skips" a directory level l1-s4 -> l2-s3 # a link to a link to a dir """ - use_junctions = request.param - if sys.platform == "win32" and not use_junctions and not _windows_can_symlink(): + if sys.platform == "win32" and (not use_junctions) and (not _windows_can_symlink()): pytest.skip("This Windows instance is not configured with symlink support") - elif sys.platform != "win32" and use_junctions: - pytest.skip("Junctions are a Windows-only feature") l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) @@ -1154,60 +1150,44 @@ def complex_dir_structure(request, tmpdir): link_fn(l2_d2, l2_s3) link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") - locations = { - "l4-f1": str(l3_d2.join("l4-f1").ensure()), - "l4-f2-full": str(l3_d4.join("l4-f2").ensure()), - "l4-f2-link": str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2"), - "l2-f1": str(l1_d2.join("l2-f1").ensure()), - "l2-f1-link": str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1"), - "l3-f3-full": str(l2_d2.join("l3-f3").ensure()), - "l3-f3-link-l1": str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3"), - } + locations = {} + locations["l4-f1"] = str(l3_d2.join("l4-f1").ensure()) + locations["l4-f2-full"] = str(l3_d4.join("l4-f2").ensure()) + locations["l4-f2-link"] = str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2") + locations["l2-f1"] = str(l1_d2.join("l2-f1").ensure()) + locations["l2-f1-link"] = str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1") + locations["l3-f3-full"] = str(l2_d2.join("l3-f3").ensure()) + locations["l3-f3-link-l1"] = str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3") return str(tmpdir), locations -def test_find_max_depth_symlinks(complex_dir_structure): - root, locations = complex_dir_structure +def _check_find_links(root, locations): root = pathlib.Path(root) - assert set(fs.find(root, "l4-f1")) == {locations["l4-f1"]} - assert set(fs.find(root / "l1-s3", "l4-f2", max_depth=0)) == {locations["l4-f2-link"]} - assert set(fs.find(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} + assert set(fs.find_max_depth(root, "l4-f1")) == {locations["l4-f1"]} + assert set(fs.find_max_depth(root / "l1-s3", "l4-f2", 0)) == {locations["l4-f2-link"]} + assert set(fs.find_max_depth(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} # File is accessible via symlink and subdir, the link path will be # searched first, and the directory will not be searched again when # it is encountered the second time (via not-link) in the traversal - assert set(fs.find(root, "l4-f2")) == {locations["l4-f2-link"]} + assert set(fs.find_max_depth(root, "l4-f2")) == {locations["l4-f2-link"]} # File is accessible only via the dir, so the full file path should # be reported - assert set(fs.find(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} + assert set(fs.find_max_depth(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} # Check following links to links - assert set(fs.find(root, "l3-f3")) == {locations["l3-f3-link-l1"]} - - -def test_find_max_depth_multiple_and_repeated_entry_points(complex_dir_structure): - root, locations = complex_dir_structure - - fst = str(pathlib.Path(root) / "l1-d1" / "l2-d1") - snd = str(pathlib.Path(root) / "l1-d2") - nonexistent = str(pathlib.Path(root) / "nonexistent") - - assert set(fs.find([fst, snd, fst, snd, nonexistent], ["l*-f*"], max_depth=1)) == { - locations["l2-f1"], - locations["l4-f1"], - locations["l4-f2-full"], - locations["l3-f3-full"], - } + assert set(fs.find_max_depth(root, "l3-f3")) == {locations["l3-f3-link-l1"]} -def test_multiple_patterns(complex_dir_structure): - root, _ = complex_dir_structure - paths = fs.find(root, ["l2-f1", "l3-f3", "*"]) - # There shouldn't be duplicate results with multiple, overlapping patterns - assert len(set(paths)) == len(paths) - # All files should be found - filenames = [os.path.basename(p) for p in paths] - assert set(filenames) == {"l2-f1", "l3-f3", "l4-f1", "l4-f2"} - # They are ordered by first matching pattern (this is a bit of an implementation detail, - # and we could decide to change the exact order in the future) - assert filenames[0] == "l2-f1" - assert filenames[1] == "l3-f3" +@pytest.mark.parametrize( + "use_junctions", + [ + False, + pytest.param( + True, + marks=pytest.mark.skipif(sys.platform != "win32", reason="Only Windows has junctions"), + ), + ], +) +def test_find_max_depth_symlinks(tmpdir, use_junctions): + root, locations = dir_structure_with_things_to_find_links(tmpdir, use_junctions=use_junctions) + _check_find_links(root, locations) diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index 0d5aaab81a2e25..52dcf3950a452b 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -373,18 +373,3 @@ class _SomeClass: _SomeClass.deprecated.error_lvl = 2 with pytest.raises(AttributeError): _ = s.deprecated - - -def test_fnmatch_multiple(): - regex, groups = llnl.util.lang.fnmatch_translate_multiple(["libf*o.so", "libb*r.so"]) - - a = regex.match("libfoo.so") - assert a and a.group(groups[0]) == "libfoo.so" - - b = regex.match("libbar.so") - assert b and b.group(groups[1]) == "libbar.so" - - assert not regex.match("libfoo.so.1") - assert not regex.match("libbar.so.1") - assert not regex.match("libfoo.solibbar.so") - assert not regex.match("libbaz.so") From 4fbdf2f2c08e52d354bc22e1838d9e5dc6d1d332 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 20:53:28 +0100 Subject: [PATCH 356/615] Revert "llnl.util.filesystem.find: restore old error handling (#47463)" This reverts commit a31c525778773b8c6a6fc35617454d954a05d74d. --- lib/spack/llnl/util/filesystem.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 24055c902b6225..b63b6e94b39a2e 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1741,11 +1741,6 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): return result -def _log_file_access_issue(e: OSError, path: str) -> None: - errno_name = errno.errorcode.get(e.errno, "UNKNOWN") - tty.debug(f"find must skip {path}: {errno_name} {e}") - - @system_path_filter(arg_slice=slice(1)) def find_max_depth(root, globs, max_depth: Optional[int] = None): """Given a set of non-recursive glob file patterns, finds all @@ -1759,10 +1754,19 @@ def find_max_depth(root, globs, max_depth: Optional[int] = None): If ``globs`` is a list, files matching earlier entries are placed in the return value before files matching later entries. """ + # If root doesn't exist, then we say we found nothing. If it + # exists but is not a dir, we assume the user would want to + # know; likewise if it exists but we do not have permission to + # access it. try: stat_root = os.stat(root) - except OSError: - return [] + except OSError as e: + if e.errno == errno.ENOENT: + return [] + else: + raise + if not stat.S_ISDIR(stat_root.st_mode): + raise ValueError(f"{root} is not a directory") if max_depth is None: max_depth = sys.maxsize @@ -1786,6 +1790,10 @@ def _dir_id(stat_info): # https://github.com/python/cpython/blob/3.9/Python/fileutils.c return (stat_info.st_ino, stat_info.st_dev) + def _log_file_access_issue(e): + errno_name = errno.errorcode.get(e.errno, "UNKNOWN") + tty.debug(f"find must skip {dir_entry.path}: {errno_name} {str(e)}") + visited_dirs = set([_dir_id(stat_root)]) # Each queue item stores the depth and path @@ -1800,8 +1808,9 @@ def _dir_id(stat_info): depth, next_dir = dir_queue.pop() try: dir_iter = os.scandir(next_dir) - except OSError as e: - _log_file_access_issue(e, next_dir) + except OSError: + # Most commonly, this would be a permissions issue, for + # example if we are scanning an external directory like /usr continue with dir_iter: @@ -1812,7 +1821,7 @@ def _dir_id(stat_info): except OSError as e: # Possible permission issue, or a symlink that cannot # be resolved (ELOOP). - _log_file_access_issue(e, dir_entry.path) + _log_file_access_issue(e) continue if it_is_a_dir and (depth < max_depth): @@ -1828,7 +1837,7 @@ def _dir_id(stat_info): else: stat_info = dir_entry.stat(follow_symlinks=True) except OSError as e: - _log_file_access_issue(e, dir_entry.path) + _log_file_access_issue(e) continue dir_id = _dir_id(stat_info) From ed916ffe6ce9bd6af94cbd4538b06f258a8d766c Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 7 Nov 2024 20:53:29 +0100 Subject: [PATCH 357/615] Revert "filesystem.py: add `max_depth` argument to `find` (#41945)" This reverts commit 38c8069ab42f44aa9f4779968937fc6842dc2109. --- lib/spack/llnl/util/filesystem.py | 175 +++++------------- lib/spack/spack/test/llnl/util/file_list.py | 32 +++- lib/spack/spack/test/llnl/util/filesystem.py | 158 +--------------- .../packages/attributes-foo/package.py | 4 +- 4 files changed, 77 insertions(+), 292 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index b63b6e94b39a2e..00bb270151908c 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1673,20 +1673,16 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find(root, files, recursive=True, max_depth: Optional[int] = None): +def find(root, files, recursive=True): """Search for ``files`` starting from the ``root`` directory. Like GNU/BSD find but written entirely in Python. - Specifically this behaves like `find -type f`: it only returns - results that are files. When searching recursively, this behaves - as `find` with the `-L` option (follows symlinks). - Examples: .. code-block:: console - $ find -L /usr -name python + $ find /usr -name python is equivalent to: @@ -1716,8 +1712,6 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): files (str or collections.abc.Sequence): Library name(s) to search for recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to True. - max_depth (int): if set, don't search below this depth. Cannot be set - if recursive is False Returns: list: The files that have been found @@ -1725,135 +1719,59 @@ def find(root, files, recursive=True, max_depth: Optional[int] = None): if isinstance(files, str): files = [files] - # If recursive is false, max_depth can only be None or 0 - if max_depth and not recursive: - raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") - - if not recursive: - max_depth = 0 - elif max_depth is None: - max_depth = sys.maxsize - - tty.debug(f"Find (max depth = {max_depth}): {root} {str(files)}") - result = find_max_depth(root, files, max_depth) + if recursive: + tty.debug(f"Find (recursive): {root} {str(files)}") + result = _find_recursive(root, files) + else: + tty.debug(f"Find (not recursive): {root} {str(files)}") + result = _find_non_recursive(root, files) tty.debug(f"Find complete: {root} {str(files)}") return result -@system_path_filter(arg_slice=slice(1)) -def find_max_depth(root, globs, max_depth: Optional[int] = None): - """Given a set of non-recursive glob file patterns, finds all - files matching those patterns up to a maximum specified depth. - - If a directory has a name which matches an input pattern, it will - not be included in the results. - - If ``max_depth`` is specified, does not search below that depth. +@system_path_filter +def _find_recursive(root, search_files): + # The variable here is **on purpose** a defaultdict. The idea is that + # we want to poke the filesystem as little as possible, but still maintain + # stability in the order of the answer. Thus we are recording each library + # found in a key, and reconstructing the stable order later. + found_files = collections.defaultdict(list) - If ``globs`` is a list, files matching earlier entries are placed - in the return value before files matching later entries. - """ - # If root doesn't exist, then we say we found nothing. If it - # exists but is not a dir, we assume the user would want to - # know; likewise if it exists but we do not have permission to - # access it. - try: - stat_root = os.stat(root) - except OSError as e: - if e.errno == errno.ENOENT: - return [] - else: - raise - if not stat.S_ISDIR(stat_root.st_mode): - raise ValueError(f"{root} is not a directory") + # Make the path absolute to have os.walk also return an absolute path + root = os.path.abspath(root) + for path, _, list_files in os.walk(root): + for search_file in search_files: + matches = glob.glob(os.path.join(path, search_file)) + matches = [os.path.join(path, x) for x in matches] + found_files[search_file].extend(matches) - if max_depth is None: - max_depth = sys.maxsize + answer = [] + for search_file in search_files: + answer.extend(found_files[search_file]) - if isinstance(globs, str): - globs = [globs] - # Apply normcase to regular expressions and to the filenames: - # this respects case-sensitivity semantics of different OSes - # (e.g. file search is typically case-insensitive on Windows) - regexes = [re.compile(fnmatch.translate(os.path.normcase(x))) for x in globs] + return answer - # Note later calls to os.scandir etc. return abspaths if the - # input is absolute, see https://docs.python.org/3/library/os.html#os.DirEntry.path - root = os.path.abspath(root) +@system_path_filter +def _find_non_recursive(root, search_files): + # The variable here is **on purpose** a defaultdict as os.list_dir + # can return files in any order (does not preserve stability) found_files = collections.defaultdict(list) - def _dir_id(stat_info): - # Note: on windows, st_ino is the file index and st_dev - # is the volume serial number. See - # https://github.com/python/cpython/blob/3.9/Python/fileutils.c - return (stat_info.st_ino, stat_info.st_dev) - - def _log_file_access_issue(e): - errno_name = errno.errorcode.get(e.errno, "UNKNOWN") - tty.debug(f"find must skip {dir_entry.path}: {errno_name} {str(e)}") - - visited_dirs = set([_dir_id(stat_root)]) - - # Each queue item stores the depth and path - # This achieves a consistent traversal order by iterating through - # each directory in alphabetical order. - # This also traverses in BFS order to ensure finding the shortest - # path to any file (or one of the shortest paths, if there are - # several - the one returned will be consistent given the prior - # point). - dir_queue = collections.deque([(0, root)]) - while dir_queue: - depth, next_dir = dir_queue.pop() - try: - dir_iter = os.scandir(next_dir) - except OSError: - # Most commonly, this would be a permissions issue, for - # example if we are scanning an external directory like /usr - continue - - with dir_iter: - ordered_entries = sorted(dir_iter, key=lambda x: x.name) - for dir_entry in ordered_entries: - try: - it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) - except OSError as e: - # Possible permission issue, or a symlink that cannot - # be resolved (ELOOP). - _log_file_access_issue(e) - continue + # Make the path absolute to have absolute path returned + root = os.path.abspath(root) - if it_is_a_dir and (depth < max_depth): - try: - # The stat should be performed in a try/except block. - # We repeat that here vs. moving to the above block - # because we only want to call `stat` if we haven't - # exceeded our max_depth - if sys.platform == "win32": - # Note: st_ino/st_dev on DirEntry.stat are not set on - # Windows, so we have to call os.stat - stat_info = os.stat(dir_entry.path, follow_symlinks=True) - else: - stat_info = dir_entry.stat(follow_symlinks=True) - except OSError as e: - _log_file_access_issue(e) - continue - - dir_id = _dir_id(stat_info) - if dir_id not in visited_dirs: - dir_queue.appendleft((depth + 1, dir_entry.path)) - visited_dirs.add(dir_id) - else: - fname = os.path.basename(dir_entry.path) - for pattern in regexes: - if pattern.match(os.path.normcase(fname)): - found_files[pattern].append(os.path.join(next_dir, fname)) + for search_file in search_files: + matches = glob.glob(os.path.join(root, search_file)) + matches = [os.path.join(root, x) for x in matches] + found_files[search_file].extend(matches) - # TODO: for fully-recursive searches, we can print a warning after - # after having searched everything up to some fixed depth + answer = [] + for search_file in search_files: + answer.extend(found_files[search_file]) - return list(itertools.chain(*[found_files[x] for x in regexes])) + return answer # Utilities for libraries and headers @@ -2292,9 +2210,7 @@ def find_system_libraries(libraries, shared=True): return libraries_found -def find_libraries( - libraries, root, shared=True, recursive=False, runtime=True, max_depth: Optional[int] = None -): +def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): """Returns an iterable of full paths to libraries found in a root dir. Accepts any glob characters accepted by fnmatch: @@ -2315,8 +2231,6 @@ def find_libraries( otherwise for static. Defaults to True. recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to False. - max_depth (int): if set, don't search below this depth. Cannot be set - if recursive is False runtime (bool): Windows only option, no-op elsewhere. If true, search for runtime shared libs (.DLL), otherwise, search for .Lib files. If shared is false, this has no meaning. @@ -2325,7 +2239,6 @@ def find_libraries( Returns: LibraryList: The libraries that have been found """ - if isinstance(libraries, str): libraries = [libraries] elif not isinstance(libraries, collections.abc.Sequence): @@ -2358,10 +2271,8 @@ def find_libraries( libraries = ["{0}.{1}".format(lib, suffix) for lib in libraries for suffix in suffixes] if not recursive: - if max_depth: - raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") # If not recursive, look for the libraries directly in root - return LibraryList(find(root, libraries, recursive=False)) + return LibraryList(find(root, libraries, False)) # To speedup the search for external packages configured e.g. in /usr, # perform first non-recursive search in root/lib then in root/lib64 and @@ -2379,7 +2290,7 @@ def find_libraries( if found_libs: break else: - found_libs = find(root, libraries, recursive=True, max_depth=max_depth) + found_libs = find(root, libraries, True) return LibraryList(found_libs) diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index e2ff5a82109510..75ba3ae89d9aca 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -9,7 +9,7 @@ import pytest -from llnl.util.filesystem import HeaderList, LibraryList, find_headers, find_libraries +from llnl.util.filesystem import HeaderList, LibraryList, find, find_headers, find_libraries import spack.paths @@ -324,3 +324,33 @@ def test_searching_order(search_fn, search_list, root, kwargs): # List should be empty here assert len(rlist) == 0 + + +@pytest.mark.parametrize( + "root,search_list,kwargs,expected", + [ + ( + search_dir, + "*/*bar.tx?", + {"recursive": False}, + [ + os.path.join(search_dir, os.path.join("a", "foobar.txt")), + os.path.join(search_dir, os.path.join("b", "bar.txp")), + os.path.join(search_dir, os.path.join("c", "bar.txt")), + ], + ), + ( + search_dir, + "*/*bar.tx?", + {"recursive": True}, + [ + os.path.join(search_dir, os.path.join("a", "foobar.txt")), + os.path.join(search_dir, os.path.join("b", "bar.txp")), + os.path.join(search_dir, os.path.join("c", "bar.txt")), + ], + ), + ], +) +def test_find_with_globbing(root, search_list, kwargs, expected): + matches = find(root, search_list, **kwargs) + assert sorted(matches) == sorted(expected) diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index 01379be94c0614..a0c98747698b20 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -6,7 +6,6 @@ """Tests for ``llnl/util/filesystem.py``""" import filecmp import os -import pathlib import shutil import stat import sys @@ -15,8 +14,7 @@ import pytest import llnl.util.filesystem as fs -import llnl.util.symlink -from llnl.util.symlink import _windows_can_symlink, islink, readlink, symlink +from llnl.util.symlink import islink, readlink, symlink import spack.paths @@ -1037,157 +1035,3 @@ def test_windows_sfn(tmpdir): assert "d\\LONGER~1" in fs.windows_sfn(d) assert "d\\LONGER~2" in fs.windows_sfn(e) shutil.rmtree(tmpdir.join("d")) - - -@pytest.fixture -def dir_structure_with_things_to_find(tmpdir): - """ - / - dir_one/ - file_one - dir_two/ - dir_three/ - dir_four/ - file_two - file_three - file_four - """ - dir_one = tmpdir.join("dir_one").ensure(dir=True) - tmpdir.join("dir_two").ensure(dir=True) - dir_three = tmpdir.join("dir_three").ensure(dir=True) - dir_four = dir_three.join("dir_four").ensure(dir=True) - - locations = {} - locations["file_one"] = str(dir_one.join("file_one").ensure()) - locations["file_two"] = str(dir_four.join("file_two").ensure()) - locations["file_three"] = str(dir_three.join("file_three").ensure()) - locations["file_four"] = str(tmpdir.join("file_four").ensure()) - - return str(tmpdir), locations - - -def test_find_max_depth(dir_structure_with_things_to_find): - root, locations = dir_structure_with_things_to_find - - # Make sure the paths we use to verify are absolute - assert os.path.isabs(locations["file_one"]) - - assert set(fs.find_max_depth(root, "file_*", 0)) == {locations["file_four"]} - assert set(fs.find_max_depth(root, "file_*", 1)) == { - locations["file_one"], - locations["file_three"], - locations["file_four"], - } - assert set(fs.find_max_depth(root, "file_two", 2)) == {locations["file_two"]} - assert not set(fs.find_max_depth(root, "file_two", 1)) - assert set(fs.find_max_depth(root, "file_two")) == {locations["file_two"]} - assert set(fs.find_max_depth(root, "file_*")) == set(locations.values()) - - -def test_find_max_depth_relative(dir_structure_with_things_to_find): - """find_max_depth should return absolute paths even if - the provided path is relative. - """ - root, locations = dir_structure_with_things_to_find - with fs.working_dir(root): - assert set(fs.find_max_depth(".", "file_*", 0)) == {locations["file_four"]} - assert set(fs.find_max_depth(".", "file_two", 2)) == {locations["file_two"]} - - -@pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) -def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): - root = str(tmpdir) - error_str = "cannot be set if recursive is False" - with pytest.raises(ValueError, match=error_str): - fs.find(root, ["some_file"], recursive=recursive, max_depth=max_depth) - - with pytest.raises(ValueError, match=error_str): - fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) - - -def dir_structure_with_things_to_find_links(tmpdir, use_junctions=False): - """ - "lx-dy" means "level x, directory y" - "lx-fy" means "level x, file y" - "lx-sy" means "level x, symlink y" - - / - l1-d1/ - l2-d1/ - l3-s1 -> l1-d2 # points to directory above l2-d1 - l3-d2/ - l4-f1 - l3-s3 -> l1-d1 # cyclic link - l3-d4/ - l4-f2 - l1-d2/ - l2-f1 - l2-d2/ - l3-f3 - l2-s3 -> l2-d2 - l1-s3 -> l3-d4 # a link that "skips" a directory level - l1-s4 -> l2-s3 # a link to a link to a dir - """ - if sys.platform == "win32" and (not use_junctions) and (not _windows_can_symlink()): - pytest.skip("This Windows instance is not configured with symlink support") - - l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) - l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) - l3_d2 = l2_d1.join("l3-d2").ensure(dir=True) - l3_d4 = l2_d1.join("l3-d4").ensure(dir=True) - l1_d2 = tmpdir.join("l1-d2").ensure(dir=True) - l2_d2 = l1_d2.join("l1-d2").ensure(dir=True) - - if use_junctions: - link_fn = llnl.util.symlink._windows_create_junction - else: - link_fn = os.symlink - - link_fn(l1_d2, pathlib.Path(l2_d1) / "l3-s1") - link_fn(l1_d1, pathlib.Path(l2_d1) / "l3-s3") - link_fn(l3_d4, pathlib.Path(tmpdir) / "l1-s3") - l2_s3 = pathlib.Path(l1_d2) / "l2-s3" - link_fn(l2_d2, l2_s3) - link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") - - locations = {} - locations["l4-f1"] = str(l3_d2.join("l4-f1").ensure()) - locations["l4-f2-full"] = str(l3_d4.join("l4-f2").ensure()) - locations["l4-f2-link"] = str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2") - locations["l2-f1"] = str(l1_d2.join("l2-f1").ensure()) - locations["l2-f1-link"] = str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1") - locations["l3-f3-full"] = str(l2_d2.join("l3-f3").ensure()) - locations["l3-f3-link-l1"] = str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3") - - return str(tmpdir), locations - - -def _check_find_links(root, locations): - root = pathlib.Path(root) - assert set(fs.find_max_depth(root, "l4-f1")) == {locations["l4-f1"]} - assert set(fs.find_max_depth(root / "l1-s3", "l4-f2", 0)) == {locations["l4-f2-link"]} - assert set(fs.find_max_depth(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} - # File is accessible via symlink and subdir, the link path will be - # searched first, and the directory will not be searched again when - # it is encountered the second time (via not-link) in the traversal - assert set(fs.find_max_depth(root, "l4-f2")) == {locations["l4-f2-link"]} - # File is accessible only via the dir, so the full file path should - # be reported - assert set(fs.find_max_depth(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} - # Check following links to links - assert set(fs.find_max_depth(root, "l3-f3")) == {locations["l3-f3-link-l1"]} - - -@pytest.mark.parametrize( - "use_junctions", - [ - False, - pytest.param( - True, - marks=pytest.mark.skipif(sys.platform != "win32", reason="Only Windows has junctions"), - ), - ], -) -def test_find_max_depth_symlinks(tmpdir, use_junctions): - root, locations = dir_structure_with_things_to_find_links(tmpdir, use_junctions=use_junctions) - _check_find_links(root, locations) diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py index b882fc9b6595b6..31c88f4b08564a 100644 --- a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py +++ b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py @@ -44,7 +44,7 @@ def libs(self): # Header provided by the bar virutal package @property def bar_headers(self): - return find_headers("bar", root=self.home.include, recursive=True) + return find_headers("bar/bar", root=self.home.include, recursive=False) # Libary provided by the bar virtual package @property @@ -59,7 +59,7 @@ def baz_home(self): # Header provided by the baz virtual package @property def baz_headers(self): - return find_headers("baz", root=self.baz_home.include, recursive=True) + return find_headers("baz/baz", root=self.baz_home.include, recursive=False) # Library provided by the baz virtual package @property From ff26d2f8331c900123f6659f762e0cfa1aba47e2 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 8 Nov 2024 03:16:01 -0500 Subject: [PATCH 358/615] `spack env track` command (#41897) This PR adds a sub-command to `spack env` (`track`) which allows users to add/link anonymous environments into their installation as named environments. This allows users to more easily track their installed packages and the environments they're dependencies of. For example, with the addition of #41731 it's now easier to remove all packages not required by any environments with, ``` spack gc -bE ``` #### Usage ``` spack env track /path/to/env ==> Linked environment in /path/to/env ==> You can activate this environment with: ==> spack env activate env ``` By default `track /path/to/env` will use the last directory in the path as the name of the environment. However users may customize the name of the linked environment with `-n | --name`. Shown below. ``` spack env track /path/to/env --name foo ==> Tracking environment in /path/to/env ==> You can activate this environment with: ==> spack env activate foo ``` When removing a linked environment, Spack will remove the link to the environment but will keep the structure of the environment within the directory. This will allow users to remove a linked environment from their installation without deleting it from a shared repository. There is a `spack env untrack` command that can be used to *only* untrack a tracked environment -- it will fail if it is used on a managed environment. Users can also use `spack env remove` to untrack an environment. This allows users to continue to share environments in git repositories while also having the dependencies of those environments be remembered by Spack. --------- Co-authored-by: Todd Gamblin --- lib/spack/spack/cmd/env.py | 237 +++++++++++++++++---- lib/spack/spack/environment/environment.py | 4 +- lib/spack/spack/test/cmd/env.py | 100 ++++++++- share/spack/spack-completion.bash | 20 +- share/spack/spack-completion.fish | 22 ++ 5 files changed, 331 insertions(+), 52 deletions(-) diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 2136bb1305c253..5a80f0e1a8a8e3 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -10,11 +10,12 @@ import sys import tempfile from pathlib import Path -from typing import List, Optional +from typing import List, Optional, Set import llnl.string as string import llnl.util.filesystem as fs import llnl.util.tty as tty +from llnl.util.symlink import islink, symlink from llnl.util.tty.colify import colify from llnl.util.tty.color import cescape, colorize @@ -50,6 +51,8 @@ "update", "revert", "depfile", + "track", + "untrack", ] @@ -447,78 +450,220 @@ def env_deactivate(args): # -# env remove +# env track # -def env_remove_setup_parser(subparser): - """remove managed environment(s) +def env_track_setup_parser(subparser): + """track an environment from a directory in Spack""" + subparser.add_argument("-n", "--name", help="custom environment name") + subparser.add_argument("dir", help="path to environment") + arguments.add_common_arguments(subparser, ["yes_to_all"]) - remove existing environment(s) managed by Spack - directory environments and manifests embedded in repositories must be - removed manually - """ - subparser.add_argument( - "rm_env", metavar="env", nargs="+", help="name(s) of the environment(s) being removed" - ) - arguments.add_common_arguments(subparser, ["yes_to_all"]) - subparser.add_argument( - "-f", - "--force", - action="store_true", - help="force removal even when included in other environment(s)", +def env_track(args): + src_path = os.path.abspath(args.dir) + if not ev.is_env_dir(src_path): + tty.die("Cannot track environment. Path doesn't contain an environment") + + if args.name: + name = args.name + else: + name = os.path.basename(src_path) + + try: + dst_path = ev.environment_dir_from_name(name, exists_ok=False) + except ev.SpackEnvironmentError: + tty.die( + f"An environment named {name} already exists. Set a name with:" + "\n\n" + f" spack env track --name NAME {src_path}\n" + ) + + symlink(src_path, dst_path) + + tty.msg(f"Tracking environment in {src_path}") + tty.msg( + "You can now activate this environment with the following command:\n\n" + f" spack env activate {name}\n" ) -def env_remove(args): - """remove existing environment(s)""" - remove_envs = [] - valid_envs = [] - bad_envs = [] +# +# env remove & untrack helpers +# +def filter_managed_env_names(env_names: Set[str]) -> Set[str]: + tracked_env_names = {e for e in env_names if islink(ev.environment_dir_from_name(e))} + managed_env_names = env_names - set(tracked_env_names) + + num_managed_envs = len(managed_env_names) + managed_envs_str = " ".join(managed_env_names) + if num_managed_envs >= 2: + tty.error( + f"The following are not tracked environments. " + "To remove them completely run," + "\n\n" + f" spack env rm {managed_envs_str}\n" + ) + + elif num_managed_envs > 0: + tty.error( + f"'{managed_envs_str}' is not a tracked env. " + "To remove it completely run," + "\n\n" + f" spack env rm {managed_envs_str}\n" + ) + + return tracked_env_names + - for env_name in ev.all_environment_names(): +def get_valid_envs(env_names: Set[str]) -> Set[ev.Environment]: + valid_envs = set() + for env_name in env_names: try: env = ev.read(env_name) - valid_envs.append(env) + valid_envs.add(env) - if env_name in args.rm_env: - remove_envs.append(env) except (spack.config.ConfigFormatError, ev.SpackEnvironmentConfigError): - if env_name in args.rm_env: - bad_envs.append(env_name) + pass - # Check if remove_env is included from another env before trying to remove - for env in valid_envs: - for remove_env in remove_envs: - # don't check if environment is included to itself + return valid_envs + + +def _env_untrack_or_remove( + env_names: List[str], remove: bool = False, force: bool = False, yes_to_all: bool = False +): + all_env_names = set(ev.all_environment_names()) + known_env_names = set(env_names).intersection(all_env_names) + unknown_env_names = set(env_names) - known_env_names + + # print error for unknown environments + for env_name in unknown_env_names: + tty.error(f"Environment '{env_name}' does not exist") + + # if only unlinking is allowed, remove all environments + # which do not point internally at symlinks + if not remove: + env_names_to_remove = filter_managed_env_names(known_env_names) + else: + env_names_to_remove = known_env_names + + # initalize all environments with valid spack.yaml configs + all_valid_envs = get_valid_envs(all_env_names) + + # build a task list of environments and bad env names to remove + envs_to_remove = [e for e in all_valid_envs if e.name in env_names_to_remove] + bad_env_names_to_remove = env_names_to_remove - {e.name for e in envs_to_remove} + for remove_env in envs_to_remove: + for env in all_valid_envs: + # don't check if an environment is included to itself if env.name == remove_env.name: continue + # check if an environment is included un another if remove_env.path in env.included_concrete_envs: - msg = f'Environment "{remove_env.name}" is being used by environment "{env.name}"' - if args.force: + msg = f"Environment '{remove_env.name}' is used by environment '{env.name}'" + if force: tty.warn(msg) else: - tty.die(msg) - - if not args.yes_to_all: - environments = string.plural(len(args.rm_env), "environment", show_n=False) - envs = string.comma_and(args.rm_env) - answer = tty.get_yes_or_no(f"Really remove {environments} {envs}?", default=False) + tty.error(msg) + envs_to_remove.remove(remove_env) + + # ask the user if they really want to remove the known environments + # force should do the same as yes to all here following the symantics of rm + if not (yes_to_all or force) and (envs_to_remove or bad_env_names_to_remove): + environments = string.plural(len(env_names_to_remove), "environment", show_n=False) + envs = string.comma_and(list(env_names_to_remove)) + answer = tty.get_yes_or_no( + f"Really {'remove' if remove else 'untrack'} {environments} {envs}?", default=False + ) if not answer: tty.die("Will not remove any environments") - for env in remove_envs: + # keep track of the environments we remove for later printing the exit code + removed_env_names = [] + for env in envs_to_remove: name = env.name - if env.active: - tty.die(f"Environment {name} can't be removed while activated.") - env.destroy() - tty.msg(f"Successfully removed environment '{name}'") + if not force and env.active: + tty.error( + f"Environment '{name}' can't be " + f"{'removed' if remove else 'untracked'} while activated." + ) + continue + # Get path to check if environment is a tracked / symlinked environment + if islink(env.path): + real_env_path = os.path.realpath(env.path) + os.unlink(env.path) + tty.msg( + f"Sucessfully untracked environment '{name}', " + "but it can still be found at:\n\n" + f" {real_env_path}\n" + ) + else: + env.destroy() + tty.msg(f"Successfully removed environment '{name}'") + + removed_env_names.append(env.name) - for bad_env_name in bad_envs: + for bad_env_name in bad_env_names_to_remove: shutil.rmtree( spack.environment.environment.environment_dir_from_name(bad_env_name, exists_ok=True) ) tty.msg(f"Successfully removed environment '{bad_env_name}'") + removed_env_names.append(env.name) + + # Following the design of linux rm we should exit with a status of 1 + # anytime we cannot delete every environment the user asks for. + # However, we should still process all the environments we know about + # and delete them instead of failing on the first unknown enviornment. + if len(removed_env_names) < len(known_env_names): + sys.exit(1) + + +# +# env untrack +# +def env_untrack_setup_parser(subparser): + """track an environment from a directory in Spack""" + subparser.add_argument("env", nargs="+", help="tracked environment name") + subparser.add_argument( + "-f", "--force", action="store_true", help="force unlink even when environment is active" + ) + arguments.add_common_arguments(subparser, ["yes_to_all"]) + + +def env_untrack(args): + _env_untrack_or_remove( + env_names=args.env, force=args.force, yes_to_all=args.yes_to_all, remove=False + ) + + +# +# env remove +# +def env_remove_setup_parser(subparser): + """remove managed environment(s) + + remove existing environment(s) managed by Spack + + directory environments and manifests embedded in repositories must be + removed manually + """ + subparser.add_argument( + "rm_env", metavar="env", nargs="+", help="name(s) of the environment(s) being removed" + ) + arguments.add_common_arguments(subparser, ["yes_to_all"]) + subparser.add_argument( + "-f", + "--force", + action="store_true", + help="force removal even when included in other environment(s)", + ) + + +def env_remove(args): + """remove existing environment(s)""" + _env_untrack_or_remove( + env_names=args.rm_env, remove=True, force=args.force, yes_to_all=args.yes_to_all + ) # diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index de4bc851006e8c..9a3361c7347466 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -20,7 +20,7 @@ import llnl.util.tty as tty import llnl.util.tty.color as clr from llnl.util.link_tree import ConflictingSpecsError -from llnl.util.symlink import readlink, symlink +from llnl.util.symlink import islink, readlink, symlink import spack import spack.caches @@ -668,7 +668,7 @@ def from_dict(base_path, d): @property def _current_root(self): - if not os.path.islink(self.root): + if not islink(self.root): return None root = readlink(self.root) diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 87941de137ec4a..099e6306ac507f 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -117,6 +117,99 @@ def check_viewdir_removal(viewdir): ) == ["projections.yaml"] +def test_env_track_nonexistant_path_fails(capfd): + with pytest.raises(spack.main.SpackCommandError): + env("track", "path/does/not/exist") + + out, _ = capfd.readouterr() + assert "doesn't contain an environment" in out + + +def test_env_track_existing_env_fails(capfd): + env("create", "track_test") + + with pytest.raises(spack.main.SpackCommandError): + env("track", "--name", "track_test", ev.environment_dir_from_name("track_test")) + + out, _ = capfd.readouterr() + assert "environment named track_test already exists" in out + + +def test_env_track_valid(tmp_path): + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", "test1", ".") + + # test removing environment to ensure independent isn't deleted + env("rm", "-y", "test1") + + assert os.path.isfile("spack.yaml") + + +def test_env_untrack_valid(tmp_path): + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", "test_untrack", ".") + env("untrack", "--yes-to-all", "test_untrack") + + # check that environment was sucessfully untracked + out = env("ls") + assert "test_untrack" not in out + + +def test_env_untrack_invalid_name(): + # test untracking an environment that doesn't exist + env_name = "invalid_enviornment_untrack" + + out = env("untrack", env_name) + + assert f"Environment '{env_name}' does not exist" in out + + +def test_env_untrack_when_active(tmp_path, capfd): + env_name = "test_untrack_active" + + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", env_name, ".") + + active_env = ev.read(env_name) + with active_env: + with pytest.raises(spack.main.SpackCommandError): + env("untrack", "--yes-to-all", env_name) + + # check that environment could not be untracked while active + out, _ = capfd.readouterr() + assert f"'{env_name}' can't be untracked while activated" in out + + env("untrack", "-f", env_name) + out = env("ls") + assert env_name not in out + + +def test_env_untrack_managed(tmp_path, capfd): + env_name = "test_untrack_managed" + + # create an managed environment + env("create", env_name) + + with pytest.raises(spack.main.SpackCommandError): + env("untrack", env_name) + + # check that environment could not be untracked while active + out, _ = capfd.readouterr() + assert f"'{env_name}' is not a tracked env" in out + + def test_add(): e = ev.create("test") e.add("mpileaks") @@ -128,6 +221,7 @@ def test_change_match_spec(): e = ev.read("test") with e: + add("mpileaks@2.1") add("mpileaks@2.2") @@ -688,7 +782,7 @@ def test_force_remove_included_env(): rm_output = env("remove", "-f", "-y", "test") list_output = env("list") - assert '"test" is being used by environment "combined_env"' in rm_output + assert "'test' is used by environment 'combined_env'" in rm_output assert "test" not in list_output @@ -4239,13 +4333,13 @@ def test_spack_package_ids_variable(tmpdir, mock_packages): # Include in Makefile and create target that depend on SPACK_PACKAGE_IDS with open(makefile_path, "w") as f: f.write( - r""" + """ all: post-install include include.mk example/post-install/%: example/install/% - $(info post-install: $(HASH)) # noqa: W191,E101 +\t$(info post-install: $(HASH)) # noqa: W191,E101 post-install: $(addprefix example/post-install/,$(example/SPACK_PACKAGE_IDS)) """ diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index d8c58143c97a34..8946bf1dcc888d 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1023,7 +1023,7 @@ _spack_env() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="activate deactivate create remove rm rename mv list ls status st loads view update revert depfile" + SPACK_COMPREPLY="activate deactivate create remove rm rename mv list ls status st loads view update revert depfile track untrack" fi } @@ -1141,6 +1141,24 @@ _spack_env_depfile() { fi } +_spack_env_track() { + if $list_options + then + SPACK_COMPREPLY="-h --help -n --name -y --yes-to-all" + else + SPACK_COMPREPLY="" + fi +} + +_spack_env_untrack() { + if $list_options + then + SPACK_COMPREPLY="-h --help -f --force -y --yes-to-all" + else + _environments + fi +} + _spack_extensions() { if $list_options then diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index afea0b1a57af6c..17b7cd42e46f34 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -1488,6 +1488,8 @@ complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a view -d 'manag complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a update -d 'update the environment manifest to the latest schema format' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a revert -d 'restore the environment manifest to its previous format' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a depfile -d 'generate a depfile to exploit parallel builds across specs' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a track -d 'track an environment from a directory in Spack' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a untrack -d 'track an environment from a directory in Spack' complete -c spack -n '__fish_spack_using_command env' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env' -s h -l help -d 'show this help message and exit' @@ -1669,6 +1671,26 @@ complete -c spack -n '__fish_spack_using_command env depfile' -s o -l output -r complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -f -a make complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -d 'specify the depfile type (only supports `make`)' +# spack env track +set -g __fish_spack_optspecs_spack_env_track h/help n/name= y/yes-to-all +complete -c spack -n '__fish_spack_using_command_pos 0 env track' -f -a '(__fish_spack_environments)' +complete -c spack -n '__fish_spack_using_command env track' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command env track' -s h -l help -d 'show this help message and exit' +complete -c spack -n '__fish_spack_using_command env track' -s n -l name -r -f -a name +complete -c spack -n '__fish_spack_using_command env track' -s n -l name -r -d 'custom environment name' +complete -c spack -n '__fish_spack_using_command env track' -s y -l yes-to-all -f -a yes_to_all +complete -c spack -n '__fish_spack_using_command env track' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' + +# spack env untrack +set -g __fish_spack_optspecs_spack_env_untrack h/help f/force y/yes-to-all +complete -c spack -n '__fish_spack_using_command_pos_remainder 0 env untrack' -f -a '(__fish_spack_environments)' +complete -c spack -n '__fish_spack_using_command env untrack' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command env untrack' -s h -l help -d 'show this help message and exit' +complete -c spack -n '__fish_spack_using_command env untrack' -s f -l force -f -a force +complete -c spack -n '__fish_spack_using_command env untrack' -s f -l force -d 'force unlink even when environment is active' +complete -c spack -n '__fish_spack_using_command env untrack' -s y -l yes-to-all -f -a yes_to_all +complete -c spack -n '__fish_spack_using_command env untrack' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' + # spack extensions set -g __fish_spack_optspecs_spack_extensions h/help l/long L/very-long d/deps p/paths s/show= complete -c spack -n '__fish_spack_using_command_pos_remainder 0 extensions' -f -a '(__fish_spack_extensions)' From eb256476d2b367ac02a0957f1de922e5a5564ac2 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 8 Nov 2024 17:07:50 +0100 Subject: [PATCH 359/615] pika: add 0.30.0 (#47498) --- var/spack/repos/builtin/packages/pika/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index f5fe4b9727acfb..8a9b901a5c7fb8 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -19,6 +19,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): license("BSL-1.0") + version("0.30.0", sha256="1798bf7de2505bc707bf95716fda8de5630b2e2ae54a6c4ef59f9931394d31cc") version("0.29.0", sha256="2c61079f52f3e135a8d0845a993e6e4fb64031fbee9b5cef0ead57efb6175e3c") version("0.28.0", sha256="a64ebac04135c0c8d392ddcd8d683fe02e2c0782abfe130754244d58f27ae6cf") version("0.27.0", sha256="4a58dc4014edc2074399e4a6ecfa244537c89ce1319b3e14ff3dfe617fb9f9e8") From 4778d2d332d36c3db0054746d75531d6e357effb Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 8 Nov 2024 17:51:58 +0100 Subject: [PATCH 360/615] Add missing imports (#47496) --- lib/spack/spack/test/build_environment.py | 2 ++ lib/spack/spack/test/concretize_requirements.py | 2 ++ lib/spack/spack/test/flag_mixing.py | 1 + 3 files changed, 5 insertions(+) diff --git a/lib/spack/spack/test/build_environment.py b/lib/spack/spack/test/build_environment.py index 281d79f8563e7c..dd42d5cb458306 100644 --- a/lib/spack/spack/test/build_environment.py +++ b/lib/spack/spack/test/build_environment.py @@ -15,6 +15,8 @@ from llnl.util.filesystem import HeaderList, LibraryList import spack.build_environment +import spack.compiler +import spack.compilers import spack.config import spack.deptypes as dt import spack.package_base diff --git a/lib/spack/spack/test/concretize_requirements.py b/lib/spack/spack/test/concretize_requirements.py index be66b2b0a82588..9e703be51fe08f 100644 --- a/lib/spack/spack/test/concretize_requirements.py +++ b/lib/spack/spack/test/concretize_requirements.py @@ -10,8 +10,10 @@ import spack.config import spack.error import spack.package_base +import spack.paths import spack.repo import spack.solver.asp +import spack.store import spack.util.spack_yaml as syaml import spack.version from spack.installer import PackageInstaller diff --git a/lib/spack/spack/test/flag_mixing.py b/lib/spack/spack/test/flag_mixing.py index 6009ade058e5bd..878c0c71efc85e 100644 --- a/lib/spack/spack/test/flag_mixing.py +++ b/lib/spack/spack/test/flag_mixing.py @@ -8,6 +8,7 @@ import spack.config import spack.environment as ev +import spack.paths import spack.repo import spack.util.spack_yaml as syaml from spack.spec import Spec From 907a37145f9434d36b238ef8f435f157a7fb129b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 8 Nov 2024 22:55:53 +0100 Subject: [PATCH 361/615] llnl.util.filesystem: multiple entrypoints and max_depth (#47495) If a package `foo` doesn't implement `libs`, the default was to search recursively for `libfoo` whenever asking for `spec[foo].libs` (this also happens automatically if a package includes `foo` as a link dependency). This can lead to some strange behavior: 1. A package that is normally used as a build dependency (e.g. `cmake` at one point) is referenced like `depends_on(cmake)` which leads to a fully-recursive search for `libcmake` (this can take "forever" when CMake is registered as an external with a prefix like `/usr`, particularly on NFS mounts). 2. A similar hang can occur if a package is registered as an external with an incorrect prefix - [x] Update the default library search to stop after a maximum depth (by default, search the root prefix and each directory in it, but no lower). - [x] The following is a list of known changes to `find` compared to `develop`: 1. Matching directories are no longer returned -- `find` consistently only finds non-dirs, even at `max_depth` 2. Symlinked directories are followed (needed to support max_depth) 3. `find(..., "dir/*.txt")` is allowed, for finding files inside certain dirs. These "complex" patterns are delegated to `glob`, like they are on `develop`. 4. `root` and `files` arguments both support generic sequences, and `root` allows both `str` and `path` types. This allows us to specify multiple entry points to `find`. --------- Co-authored-by: Peter Scheibel --- lib/spack/llnl/util/filesystem.py | 265 +++++++++++++----- lib/spack/llnl/util/lang.py | 17 +- lib/spack/spack/test/llnl/util/file_list.py | 32 +-- lib/spack/spack/test/llnl/util/filesystem.py | 228 ++++++++++++++- lib/spack/spack/test/llnl/util/lang.py | 16 ++ lib/spack/spack/test/test_suite.py | 8 +- .../packages/attributes-foo/package.py | 4 +- 7 files changed, 457 insertions(+), 113 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 00bb270151908c..83cbe45104377b 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -20,11 +20,23 @@ import tempfile from contextlib import contextmanager from itertools import accumulate -from typing import Callable, Iterable, List, Match, Optional, Tuple, Union +from typing import ( + Callable, + Deque, + Dict, + Iterable, + List, + Match, + Optional, + Sequence, + Set, + Tuple, + Union, +) import llnl.util.symlink from llnl.util import tty -from llnl.util.lang import dedupe, memoized +from llnl.util.lang import dedupe, fnmatch_translate_multiple, memoized from llnl.util.symlink import islink, readlink, resolve_link_target_relative_to_the_link, symlink from ..path import path_to_os_path, system_path_filter @@ -85,6 +97,8 @@ "visit_directory_tree", ] +Path = Union[str, pathlib.Path] + if sys.version_info < (3, 7, 4): # monkeypatch shutil.copystat to fix PermissionError when copying read-only # files on Lustre when using Python < 3.7.4 @@ -1673,105 +1687,199 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find(root, files, recursive=True): - """Search for ``files`` starting from the ``root`` directory. - - Like GNU/BSD find but written entirely in Python. - - Examples: - - .. code-block:: console - - $ find /usr -name python - - is equivalent to: - - >>> find('/usr', 'python') - - .. code-block:: console - - $ find /usr/local/bin -maxdepth 1 -name python - - is equivalent to: - - >>> find('/usr/local/bin', 'python', recursive=False) +def find( + root: Union[Path, Sequence[Path]], + files: Union[str, Sequence[str]], + recursive: bool = True, + max_depth: Optional[int] = None, +) -> List[str]: + """Finds all non-directory files matching the patterns from ``files`` starting from ``root``. + This function returns a deterministic result for the same input and directory structure when + run multiple times. Symlinked directories are followed, and unique directories are searched + only once. Each matching file is returned only once at lowest depth in case multiple paths + exist due to symlinked directories. Accepts any glob characters accepted by fnmatch: ========== ==================================== Pattern Meaning ========== ==================================== - ``*`` matches everything + ``*`` matches one or more characters ``?`` matches any single character ``[seq]`` matches any character in ``seq`` ``[!seq]`` matches any character not in ``seq`` ========== ==================================== + Examples: + + >>> find("/usr", "*.txt", recursive=True, max_depth=2) + + finds all files with the extension ``.txt`` in the directory ``/usr`` and subdirectories up to + depth 2. + + >>> find(["/usr", "/var"], ["*.txt", "*.log"], recursive=True) + + finds all files with the extension ``.txt`` or ``.log`` in the directories ``/usr`` and + ``/var`` at any depth. + + >>> find("/usr", "GL/*.h", recursive=True) + + finds all header files in a directory GL at any depth in the directory ``/usr``. + Parameters: - root (str): The root directory to start searching from - files (str or collections.abc.Sequence): Library name(s) to search for - recursive (bool): if False search only root folder, - if True descends top-down from the root. Defaults to True. + root: One or more root directories to start searching from + files: One or more filename patterns to search for + recursive: if False search only root, if True descends from roots. Defaults to True. + max_depth: if set, don't search below this depth. Cannot be set if recursive is False - Returns: - list: The files that have been found + Returns a list of absolute, matching file paths. """ + if isinstance(root, (str, pathlib.Path)): + root = [root] + elif not isinstance(root, collections.abc.Sequence): + raise TypeError(f"'root' arg must be a path or a sequence of paths, not '{type(root)}']") + if isinstance(files, str): files = [files] + elif not isinstance(files, collections.abc.Sequence): + raise TypeError(f"'files' arg must be str or a sequence of str, not '{type(files)}']") - if recursive: - tty.debug(f"Find (recursive): {root} {str(files)}") - result = _find_recursive(root, files) - else: - tty.debug(f"Find (not recursive): {root} {str(files)}") - result = _find_non_recursive(root, files) + # If recursive is false, max_depth can only be None or 0 + if max_depth and not recursive: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") - tty.debug(f"Find complete: {root} {str(files)}") + tty.debug(f"Find (max depth = {max_depth}): {root} {files}") + if not recursive: + max_depth = 0 + elif max_depth is None: + max_depth = sys.maxsize + result = _find_max_depth(root, files, max_depth) + tty.debug(f"Find complete: {root} {files}") return result -@system_path_filter -def _find_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict. The idea is that - # we want to poke the filesystem as little as possible, but still maintain - # stability in the order of the answer. Thus we are recording each library - # found in a key, and reconstructing the stable order later. - found_files = collections.defaultdict(list) - - # Make the path absolute to have os.walk also return an absolute path - root = os.path.abspath(root) - for path, _, list_files in os.walk(root): - for search_file in search_files: - matches = glob.glob(os.path.join(path, search_file)) - matches = [os.path.join(path, x) for x in matches] - found_files[search_file].extend(matches) +def _log_file_access_issue(e: OSError, path: str) -> None: + errno_name = errno.errorcode.get(e.errno, "UNKNOWN") + tty.debug(f"find must skip {path}: {errno_name} {e}") - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) - return answer +def _file_id(s: os.stat_result) -> Tuple[int, int]: + # Note: on windows, st_ino is the file index and st_dev is the volume serial number. See + # https://github.com/python/cpython/blob/3.9/Python/fileutils.c + return (s.st_ino, s.st_dev) -@system_path_filter -def _find_non_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict as os.list_dir - # can return files in any order (does not preserve stability) - found_files = collections.defaultdict(list) +def _dedupe_files(paths: List[str]) -> List[str]: + """Deduplicate files by inode and device, dropping files that cannot be accessed.""" + unique_files: List[str] = [] + # tuple of (inode, device) for each file without following symlinks + visited: Set[Tuple[int, int]] = set() + for path in paths: + try: + stat_info = os.lstat(path) + except OSError as e: + _log_file_access_issue(e, path) + continue + file_id = _file_id(stat_info) + if file_id not in visited: + unique_files.append(path) + visited.add(file_id) + return unique_files + + +def _find_max_depth( + roots: Sequence[Path], globs: Sequence[str], max_depth: int = sys.maxsize +) -> List[str]: + """See ``find`` for the public API.""" + # We optimize for the common case of simple filename only patterns: a single, combined regex + # is used. For complex patterns that include path components, we use a slower glob call from + # every directory we visit within max_depth. + filename_only_patterns = { + f"pattern_{i}": os.path.normcase(x) for i, x in enumerate(globs) if "/" not in x + } + complex_patterns = {f"pattern_{i}": x for i, x in enumerate(globs) if "/" in x} + regex = re.compile(fnmatch_translate_multiple(filename_only_patterns)) + # Ordered dictionary that keeps track of what pattern found which files + matched_paths: Dict[str, List[str]] = {f"pattern_{i}": [] for i, _ in enumerate(globs)} + # Ensure returned paths are always absolute + roots = [os.path.abspath(r) for r in roots] + # Breadth-first search queue. Each element is a tuple of (depth, dir) + dir_queue: Deque[Tuple[int, str]] = collections.deque() + # Set of visited directories. Each element is a tuple of (inode, device) + visited_dirs: Set[Tuple[int, int]] = set() + + for root in roots: + try: + stat_root = os.stat(root) + except OSError as e: + _log_file_access_issue(e, root) + continue + dir_id = _file_id(stat_root) + if dir_id not in visited_dirs: + dir_queue.appendleft((0, root)) + visited_dirs.add(dir_id) - # Make the path absolute to have absolute path returned - root = os.path.abspath(root) + while dir_queue: + depth, curr_dir = dir_queue.pop() + try: + dir_iter = os.scandir(curr_dir) + except OSError as e: + _log_file_access_issue(e, curr_dir) + continue - for search_file in search_files: - matches = glob.glob(os.path.join(root, search_file)) - matches = [os.path.join(root, x) for x in matches] - found_files[search_file].extend(matches) + # Use glob.glob for complex patterns. + for pattern_name, pattern in complex_patterns.items(): + matched_paths[pattern_name].extend( + path + for path in glob.glob(os.path.join(curr_dir, pattern)) + if not os.path.isdir(path) + ) - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) + with dir_iter: + ordered_entries = sorted(dir_iter, key=lambda x: x.name) + for dir_entry in ordered_entries: + try: + it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) + except OSError as e: + # Possible permission issue, or a symlink that cannot be resolved (ELOOP). + _log_file_access_issue(e, dir_entry.path) + continue - return answer + if it_is_a_dir: + if depth >= max_depth: + continue + try: + # The stat should be performed in a try/except block. We repeat that here + # vs. moving to the above block because we only want to call `stat` if we + # haven't exceeded our max_depth + if sys.platform == "win32": + # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we + # have to call os.stat + stat_info = os.stat(dir_entry.path, follow_symlinks=True) + else: + stat_info = dir_entry.stat(follow_symlinks=True) + except OSError as e: + _log_file_access_issue(e, dir_entry.path) + continue + + dir_id = _file_id(stat_info) + if dir_id not in visited_dirs: + dir_queue.appendleft((depth + 1, dir_entry.path)) + visited_dirs.add(dir_id) + elif filename_only_patterns: + m = regex.match(os.path.normcase(dir_entry.name)) + if not m: + continue + for pattern_name in filename_only_patterns: + if m.group(pattern_name): + matched_paths[pattern_name].append(dir_entry.path) + break + + all_matching_paths = [path for paths in matched_paths.values() for path in paths] + + # we only dedupe files if we have any complex patterns, since only they can match the same file + # multiple times + return _dedupe_files(all_matching_paths) if complex_patterns else all_matching_paths # Utilities for libraries and headers @@ -2210,7 +2318,9 @@ def find_system_libraries(libraries, shared=True): return libraries_found -def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): +def find_libraries( + libraries, root, shared=True, recursive=False, runtime=True, max_depth: Optional[int] = None +): """Returns an iterable of full paths to libraries found in a root dir. Accepts any glob characters accepted by fnmatch: @@ -2231,6 +2341,8 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): otherwise for static. Defaults to True. recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to False. + max_depth (int): if set, don't search below this depth. Cannot be set + if recursive is False runtime (bool): Windows only option, no-op elsewhere. If true, search for runtime shared libs (.DLL), otherwise, search for .Lib files. If shared is false, this has no meaning. @@ -2239,6 +2351,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): Returns: LibraryList: The libraries that have been found """ + if isinstance(libraries, str): libraries = [libraries] elif not isinstance(libraries, collections.abc.Sequence): @@ -2271,8 +2384,10 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): libraries = ["{0}.{1}".format(lib, suffix) for lib in libraries for suffix in suffixes] if not recursive: + if max_depth: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") # If not recursive, look for the libraries directly in root - return LibraryList(find(root, libraries, False)) + return LibraryList(find(root, libraries, recursive=False)) # To speedup the search for external packages configured e.g. in /usr, # perform first non-recursive search in root/lib then in root/lib64 and @@ -2290,7 +2405,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): if found_libs: break else: - found_libs = find(root, libraries, True) + found_libs = find(root, libraries, recursive=True, max_depth=max_depth) return LibraryList(found_libs) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index f43773346a948d..4913a50fad930e 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -5,15 +5,17 @@ import collections.abc import contextlib +import fnmatch import functools import itertools import os import re import sys import traceback +import typing import warnings from datetime import datetime, timedelta -from typing import Callable, Iterable, List, Tuple, TypeVar +from typing import Callable, Dict, Iterable, List, Tuple, TypeVar # Ignore emacs backups when listing modules ignore_modules = r"^\.#|~$" @@ -859,6 +861,19 @@ def elide_list(line_list: List[str], max_num: int = 10) -> List[str]: return line_list +if sys.version_info >= (3, 9): + PatternStr = re.Pattern[str] +else: + PatternStr = typing.Pattern[str] + + +def fnmatch_translate_multiple(named_patterns: Dict[str, str]) -> str: + """Similar to ``fnmatch.translate``, but takes an ordered dictionary where keys are pattern + names, and values are filename patterns. The output is a regex that matches any of the + patterns in order, and named capture groups are used to identify which pattern matched.""" + return "|".join(f"(?P<{n}>{fnmatch.translate(p)})" for n, p in named_patterns.items()) + + @contextlib.contextmanager def nullcontext(*args, **kwargs): """Empty context manager. diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index 75ba3ae89d9aca..e2ff5a82109510 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -9,7 +9,7 @@ import pytest -from llnl.util.filesystem import HeaderList, LibraryList, find, find_headers, find_libraries +from llnl.util.filesystem import HeaderList, LibraryList, find_headers, find_libraries import spack.paths @@ -324,33 +324,3 @@ def test_searching_order(search_fn, search_list, root, kwargs): # List should be empty here assert len(rlist) == 0 - - -@pytest.mark.parametrize( - "root,search_list,kwargs,expected", - [ - ( - search_dir, - "*/*bar.tx?", - {"recursive": False}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ( - search_dir, - "*/*bar.tx?", - {"recursive": True}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ], -) -def test_find_with_globbing(root, search_list, kwargs, expected): - matches = find(root, search_list, **kwargs) - assert sorted(matches) == sorted(expected) diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index a0c98747698b20..fd801295f4c26b 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -6,6 +6,7 @@ """Tests for ``llnl/util/filesystem.py``""" import filecmp import os +import pathlib import shutil import stat import sys @@ -14,7 +15,8 @@ import pytest import llnl.util.filesystem as fs -from llnl.util.symlink import islink, readlink, symlink +import llnl.util.symlink +from llnl.util.symlink import _windows_can_symlink, islink, readlink, symlink import spack.paths @@ -1035,3 +1037,227 @@ def test_windows_sfn(tmpdir): assert "d\\LONGER~1" in fs.windows_sfn(d) assert "d\\LONGER~2" in fs.windows_sfn(e) shutil.rmtree(tmpdir.join("d")) + + +@pytest.fixture +def dir_structure_with_things_to_find(tmpdir): + """ + / + dir_one/ + file_one + dir_two/ + dir_three/ + dir_four/ + file_two + file_three + file_four + """ + dir_one = tmpdir.join("dir_one").ensure(dir=True) + tmpdir.join("dir_two").ensure(dir=True) + dir_three = tmpdir.join("dir_three").ensure(dir=True) + dir_four = dir_three.join("dir_four").ensure(dir=True) + + locations = {} + locations["file_one"] = str(dir_one.join("file_one").ensure()) + locations["file_two"] = str(dir_four.join("file_two").ensure()) + locations["file_three"] = str(dir_three.join("file_three").ensure()) + locations["file_four"] = str(tmpdir.join("file_four").ensure()) + + return str(tmpdir), locations + + +def test_find_path_glob_matches(dir_structure_with_things_to_find): + root, locations = dir_structure_with_things_to_find + # both file name and path match + assert ( + fs.find(root, "file_two") + == fs.find(root, "*/*/file_two") + == fs.find(root, "dir_t*/*/*two") + == [locations["file_two"]] + ) + # ensure that * does not match directory separators + assert fs.find(root, "dir*file_two") == [] + # ensure that file name matches after / are matched from the start of the file name + assert fs.find(root, "*/ile_two") == [] + # file name matches exist, but not with these paths + assert fs.find(root, "dir_one/*/*two") == fs.find(root, "*/*/*/*/file_two") == [] + + +def test_find_max_depth(dir_structure_with_things_to_find): + root, locations = dir_structure_with_things_to_find + + # Make sure the paths we use to verify are absolute + assert os.path.isabs(locations["file_one"]) + + assert set(fs.find(root, "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(root, "file_*", max_depth=1)) == { + locations["file_one"], + locations["file_three"], + locations["file_four"], + } + assert set(fs.find(root, "file_two", max_depth=2)) == {locations["file_two"]} + assert not set(fs.find(root, "file_two", max_depth=1)) + assert set(fs.find(root, "file_two")) == {locations["file_two"]} + assert set(fs.find(root, "file_*")) == set(locations.values()) + + +def test_find_max_depth_relative(dir_structure_with_things_to_find): + """find_max_depth should return absolute paths even if the provided path is relative.""" + root, locations = dir_structure_with_things_to_find + with fs.working_dir(root): + assert set(fs.find(".", "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(".", "file_two", max_depth=2)) == {locations["file_two"]} + + +@pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) +def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): + root = str(tmpdir) + error_str = "cannot be set if recursive is False" + with pytest.raises(ValueError, match=error_str): + fs.find(root, ["some_file"], recursive=recursive, max_depth=max_depth) + + with pytest.raises(ValueError, match=error_str): + fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) + + +@pytest.fixture(params=[True, False]) +def complex_dir_structure(request, tmpdir): + """ + "lx-dy" means "level x, directory y" + "lx-fy" means "level x, file y" + "lx-sy" means "level x, symlink y" + + / + l1-d1/ + l2-d1/ + l3-s1 -> l1-d2 # points to directory above l2-d1 + l3-d2/ + l4-f1 + l3-s3 -> l1-d1 # cyclic link + l3-d4/ + l4-f2 + l1-d2/ + l2-f1 + l2-d2/ + l3-f3 + l2-s3 -> l2-d2 + l1-s3 -> l3-d4 # a link that "skips" a directory level + l1-s4 -> l2-s3 # a link to a link to a dir + """ + use_junctions = request.param + if sys.platform == "win32" and not use_junctions and not _windows_can_symlink(): + pytest.skip("This Windows instance is not configured with symlink support") + elif sys.platform != "win32" and use_junctions: + pytest.skip("Junctions are a Windows-only feature") + + l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) + l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) + l3_d2 = l2_d1.join("l3-d2").ensure(dir=True) + l3_d4 = l2_d1.join("l3-d4").ensure(dir=True) + l1_d2 = tmpdir.join("l1-d2").ensure(dir=True) + l2_d2 = l1_d2.join("l1-d2").ensure(dir=True) + + if use_junctions: + link_fn = llnl.util.symlink._windows_create_junction + else: + link_fn = os.symlink + + link_fn(l1_d2, pathlib.Path(l2_d1) / "l3-s1") + link_fn(l1_d1, pathlib.Path(l2_d1) / "l3-s3") + link_fn(l3_d4, pathlib.Path(tmpdir) / "l1-s3") + l2_s3 = pathlib.Path(l1_d2) / "l2-s3" + link_fn(l2_d2, l2_s3) + link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") + + locations = { + "l4-f1": str(l3_d2.join("l4-f1").ensure()), + "l4-f2-full": str(l3_d4.join("l4-f2").ensure()), + "l4-f2-link": str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2"), + "l2-f1": str(l1_d2.join("l2-f1").ensure()), + "l2-f1-link": str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1"), + "l3-f3-full": str(l2_d2.join("l3-f3").ensure()), + "l3-f3-link-l1": str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3"), + } + + return str(tmpdir), locations + + +def test_find_max_depth_symlinks(complex_dir_structure): + root, locations = complex_dir_structure + root = pathlib.Path(root) + assert set(fs.find(root, "l4-f1")) == {locations["l4-f1"]} + assert set(fs.find(root / "l1-s3", "l4-f2", max_depth=0)) == {locations["l4-f2-link"]} + assert set(fs.find(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} + # File is accessible via symlink and subdir, the link path will be + # searched first, and the directory will not be searched again when + # it is encountered the second time (via not-link) in the traversal + assert set(fs.find(root, "l4-f2")) == {locations["l4-f2-link"]} + # File is accessible only via the dir, so the full file path should + # be reported + assert set(fs.find(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} + # Check following links to links + assert set(fs.find(root, "l3-f3")) == {locations["l3-f3-link-l1"]} + + +def test_find_max_depth_multiple_and_repeated_entry_points(complex_dir_structure): + root, locations = complex_dir_structure + + fst = str(pathlib.Path(root) / "l1-d1" / "l2-d1") + snd = str(pathlib.Path(root) / "l1-d2") + nonexistent = str(pathlib.Path(root) / "nonexistent") + + assert set(fs.find([fst, snd, fst, snd, nonexistent], ["l*-f*"], max_depth=1)) == { + locations["l2-f1"], + locations["l4-f1"], + locations["l4-f2-full"], + locations["l3-f3-full"], + } + + +def test_multiple_patterns(complex_dir_structure): + root, _ = complex_dir_structure + paths = fs.find(root, ["l2-f1", "l*-d*/l3-f3", "*", "*/*"]) + # There shouldn't be duplicate results with multiple, overlapping patterns + assert len(set(paths)) == len(paths) + # All files should be found + filenames = [os.path.basename(p) for p in paths] + assert set(filenames) == {"l2-f1", "l3-f3", "l4-f1", "l4-f2"} + # They are ordered by first matching pattern (this is a bit of an implementation detail, + # and we could decide to change the exact order in the future) + assert filenames[0] == "l2-f1" + assert filenames[1] == "l3-f3" + + +def test_find_input_types(tmp_path: pathlib.Path): + """test that find only accepts sequences and instances of pathlib.Path and str for root, and + only sequences and instances of str for patterns. In principle mypy catches these issues, but + it is not enabled on all call-sites.""" + (tmp_path / "file.txt").write_text("") + assert ( + fs.find(tmp_path, "file.txt") + == fs.find(str(tmp_path), "file.txt") + == fs.find([tmp_path, str(tmp_path)], "file.txt") + == fs.find((tmp_path, str(tmp_path)), "file.txt") + == fs.find(tmp_path, "file.txt") + == fs.find(tmp_path, ["file.txt"]) + == fs.find(tmp_path, ("file.txt",)) + == [str(tmp_path / "file.txt")] + ) + + with pytest.raises(TypeError): + fs.find(tmp_path, pathlib.Path("file.txt")) # type: ignore + + with pytest.raises(TypeError): + fs.find(1, "file.txt") # type: ignore + + +def test_find_only_finds_files(tmp_path: pathlib.Path): + """ensure that find only returns files even at max_depth""" + (tmp_path / "subdir").mkdir() + (tmp_path / "subdir" / "dir").mkdir() + (tmp_path / "subdir" / "file.txt").write_text("") + assert ( + fs.find(tmp_path, "*", max_depth=1) + == fs.find(tmp_path, "*/*", max_depth=1) + == [str(tmp_path / "subdir" / "file.txt")] + ) diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index 52dcf3950a452b..6926c50cd89e90 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -373,3 +373,19 @@ class _SomeClass: _SomeClass.deprecated.error_lvl = 2 with pytest.raises(AttributeError): _ = s.deprecated + + +def test_fnmatch_multiple(): + named_patterns = {"a": "libf*o.so", "b": "libb*r.so"} + regex = re.compile(llnl.util.lang.fnmatch_translate_multiple(named_patterns)) + + a = regex.match("libfoo.so") + assert a and a.group("a") == "libfoo.so" + + b = regex.match("libbar.so") + assert b and b.group("b") == "libbar.so" + + assert not regex.match("libfoo.so.1") + assert not regex.match("libbar.so.1") + assert not regex.match("libfoo.solibbar.so") + assert not regex.match("libbaz.so") diff --git a/lib/spack/spack/test/test_suite.py b/lib/spack/spack/test/test_suite.py index 60a54e7171bba2..3ed4e30d42c740 100644 --- a/lib/spack/spack/test/test_suite.py +++ b/lib/spack/spack/test/test_suite.py @@ -501,18 +501,20 @@ def test_find_required_file(tmpdir): # First just find a single path results = spack.install_test.find_required_file( - tmpdir.join("c"), filename, expected=1, recursive=True + str(tmpdir.join("c")), filename, expected=1, recursive=True ) assert isinstance(results, str) # Ensure none file if do not recursively search that directory with pytest.raises(spack.install_test.SkipTest, match="Expected 1"): spack.install_test.find_required_file( - tmpdir.join("c"), filename, expected=1, recursive=False + str(tmpdir.join("c")), filename, expected=1, recursive=False ) # Now make sure we get all of the files - results = spack.install_test.find_required_file(tmpdir, filename, expected=3, recursive=True) + results = spack.install_test.find_required_file( + str(tmpdir), filename, expected=3, recursive=True + ) assert isinstance(results, list) and len(results) == 3 diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py index 31c88f4b08564a..b882fc9b6595b6 100644 --- a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py +++ b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py @@ -44,7 +44,7 @@ def libs(self): # Header provided by the bar virutal package @property def bar_headers(self): - return find_headers("bar/bar", root=self.home.include, recursive=False) + return find_headers("bar", root=self.home.include, recursive=True) # Libary provided by the bar virtual package @property @@ -59,7 +59,7 @@ def baz_home(self): # Header provided by the baz virtual package @property def baz_headers(self): - return find_headers("baz/baz", root=self.baz_home.include, recursive=False) + return find_headers("baz", root=self.baz_home.include, recursive=True) # Library provided by the baz virtual package @property From 4322cf56b15a0a088156f5702d44a04e8238b4b3 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:12:50 -0800 Subject: [PATCH 362/615] upcxx %oneapi@2025: cxxflags add -Wno-error=missing-template-arg-list-after-template-kw (#47503) --- var/spack/repos/builtin/packages/upcxx/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/upcxx/package.py b/var/spack/repos/builtin/packages/upcxx/package.py index 91971025683297..4e23f42431a014 100644 --- a/var/spack/repos/builtin/packages/upcxx/package.py +++ b/var/spack/repos/builtin/packages/upcxx/package.py @@ -164,7 +164,11 @@ class Upcxx(Package, CudaPackage, ROCmPackage): depends_on("oneapi-level-zero@1.8.0:", when="+level_zero") # All flags should be passed to the build-env in autoconf-like vars - flag_handler = env_flags + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) def set_variables(self, env): env.set("UPCXX_INSTALL", self.prefix) From c6997e11a74e5dedbeabf93ea1df3f8d2a4601e8 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sat, 9 Nov 2024 01:25:02 +0100 Subject: [PATCH 363/615] `spack.compiler`/`spack.util.libc`: add caching (#47213) * spack.compiler: cache output * compute libc from the dynamic linker at most once per spack process * wrap compiler cache entry in class, add type hints * test compiler caching * ensure tests do not populate user cache, and fix 2 tests * avoid recursion: cache lookup -> compute key -> cflags -> real_version -> cache lookup * allow compiler execution in test that depends on get_real_version --- lib/spack/docs/conf.py | 1 + lib/spack/spack/compiler.py | 154 +++++++++++++++++++---- lib/spack/spack/compilers/aocc.py | 2 +- lib/spack/spack/test/compilers/basics.py | 80 ++++++++++-- lib/spack/spack/test/concretize.py | 1 + lib/spack/spack/test/conftest.py | 16 ++- lib/spack/spack/util/libc.py | 10 ++ 7 files changed, 227 insertions(+), 37 deletions(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 18495d4bca51f3..4d8592ffd930da 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -221,6 +221,7 @@ def setup(sphinx): ("py:class", "spack.filesystem_view.SimpleFilesystemView"), ("py:class", "spack.traverse.EdgeAndDepth"), ("py:class", "archspec.cpu.microarchitecture.Microarchitecture"), + ("py:class", "spack.compiler.CompilerCache"), # TypeVar that is not handled correctly ("py:class", "llnl.util.lang.T"), ] diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 31067a14d9fb59..98c0c22f0ae7f3 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -4,20 +4,23 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import contextlib +import hashlib import itertools +import json import os import platform import re import shutil import sys import tempfile -from typing import List, Optional, Sequence +from typing import Dict, List, Optional, Sequence import llnl.path import llnl.util.lang import llnl.util.tty as tty from llnl.util.filesystem import path_contains_subdirectory, paths_containing_libs +import spack.caches import spack.error import spack.schema.environment import spack.spec @@ -34,7 +37,7 @@ @llnl.util.lang.memoized -def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()): +def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()) -> str: """Invokes the compiler at a given path passing a single version argument and returns the output. @@ -57,7 +60,7 @@ def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()): return output -def get_compiler_version_output(compiler_path, *args, **kwargs): +def get_compiler_version_output(compiler_path, *args, **kwargs) -> str: """Wrapper for _get_compiler_version_output().""" # This ensures that we memoize compiler output by *absolute path*, # not just executable name. If we don't do this, and the path changes @@ -290,6 +293,7 @@ def __init__( self.environment = environment or {} self.extra_rpaths = extra_rpaths or [] self.enable_implicit_rpaths = enable_implicit_rpaths + self.cache = COMPILER_CACHE self.cc = paths[0] self.cxx = paths[1] @@ -390,15 +394,11 @@ def real_version(self): E.g. C++11 flag checks. """ - if not self._real_version: - try: - real_version = spack.version.Version(self.get_real_version()) - if real_version == spack.version.Version("unknown"): - return self.version - self._real_version = real_version - except spack.util.executable.ProcessError: - self._real_version = self.version - return self._real_version + real_version_str = self.cache.get(self).real_version + if not real_version_str or real_version_str == "unknown": + return self.version + + return spack.version.StandardVersion.from_string(real_version_str) def implicit_rpaths(self) -> List[str]: if self.enable_implicit_rpaths is False: @@ -445,9 +445,7 @@ def required_libs(self): @property def compiler_verbose_output(self) -> Optional[str]: """Verbose output from compiling a dummy C source file. Output is cached.""" - if not hasattr(self, "_compile_c_source_output"): - self._compile_c_source_output = self._compile_dummy_c_source() - return self._compile_c_source_output + return self.cache.get(self).c_compiler_output def _compile_dummy_c_source(self) -> Optional[str]: cc = self.cc if self.cc else self.cxx @@ -559,7 +557,7 @@ def fc_pic_flag(self): # Note: This is not a class method. The class methods are used to detect # compilers on PATH based systems, and do not set up the run environment of # the compiler. This method can be called on `module` based systems as well - def get_real_version(self): + def get_real_version(self) -> str: """Query the compiler for its version. This is the "real" compiler version, regardless of what is in the @@ -569,14 +567,17 @@ def get_real_version(self): modifications) to enable the compiler to run properly on any platform. """ cc = spack.util.executable.Executable(self.cc) - with self.compiler_environment(): - output = cc( - self.version_argument, - output=str, - error=str, - ignore_errors=tuple(self.ignore_version_errors), - ) - return self.extract_version_from_output(output) + try: + with self.compiler_environment(): + output = cc( + self.version_argument, + output=str, + error=str, + ignore_errors=tuple(self.ignore_version_errors), + ) + return self.extract_version_from_output(output) + except spack.util.executable.ProcessError: + return "unknown" @property def prefix(self): @@ -603,7 +604,7 @@ def default_version(cls, cc): @classmethod @llnl.util.lang.memoized - def extract_version_from_output(cls, output): + def extract_version_from_output(cls, output: str) -> str: """Extracts the version from compiler's output.""" match = re.search(cls.version_regex, output) return match.group(1) if match else "unknown" @@ -732,3 +733,106 @@ def __init__(self, compiler, feature, flag_name, ver_string=None): ) + " implement the {0} property and submit a pull request or issue.".format(flag_name), ) + + +class CompilerCacheEntry: + """Deserialized cache entry for a compiler""" + + __slots__ = ["c_compiler_output", "real_version"] + + def __init__(self, c_compiler_output: Optional[str], real_version: str): + self.c_compiler_output = c_compiler_output + self.real_version = real_version + + @classmethod + def from_dict(cls, data: Dict[str, Optional[str]]): + if not isinstance(data, dict): + raise ValueError(f"Invalid {cls.__name__} data") + c_compiler_output = data.get("c_compiler_output") + real_version = data.get("real_version") + if not isinstance(real_version, str) or not isinstance( + c_compiler_output, (str, type(None)) + ): + raise ValueError(f"Invalid {cls.__name__} data") + return cls(c_compiler_output, real_version) + + +class CompilerCache: + """Base class for compiler output cache. Default implementation does not cache anything.""" + + def value(self, compiler: Compiler) -> Dict[str, Optional[str]]: + return { + "c_compiler_output": compiler._compile_dummy_c_source(), + "real_version": compiler.get_real_version(), + } + + def get(self, compiler: Compiler) -> CompilerCacheEntry: + return CompilerCacheEntry.from_dict(self.value(compiler)) + + +class FileCompilerCache(CompilerCache): + """Cache for compiler output, which is used to determine implicit link paths, the default libc + version, and the compiler version.""" + + name = os.path.join("compilers", "compilers.json") + + def __init__(self, cache: "spack.caches.FileCacheType") -> None: + self.cache = cache + self.cache.init_entry(self.name) + self._data: Dict[str, Dict[str, Optional[str]]] = {} + + def _get_entry(self, key: str) -> Optional[CompilerCacheEntry]: + try: + return CompilerCacheEntry.from_dict(self._data[key]) + except ValueError: + del self._data[key] + except KeyError: + pass + return None + + def get(self, compiler: Compiler) -> CompilerCacheEntry: + # Cache hit + try: + with self.cache.read_transaction(self.name) as f: + assert f is not None + self._data = json.loads(f.read()) + assert isinstance(self._data, dict) + except (json.JSONDecodeError, AssertionError): + self._data = {} + + key = self._key(compiler) + value = self._get_entry(key) + if value is not None: + return value + + # Cache miss + with self.cache.write_transaction(self.name) as (old, new): + try: + assert old is not None + self._data = json.loads(old.read()) + assert isinstance(self._data, dict) + except (json.JSONDecodeError, AssertionError): + self._data = {} + + # Use cache entry that may have been created by another process in the meantime. + entry = self._get_entry(key) + + # Finally compute the cache entry + if entry is None: + self._data[key] = self.value(compiler) + entry = CompilerCacheEntry.from_dict(self._data[key]) + + new.write(json.dumps(self._data, separators=(",", ":"))) + + return entry + + def _key(self, compiler: Compiler) -> str: + as_bytes = json.dumps(compiler.to_dict(), separators=(",", ":")).encode("utf-8") + return hashlib.sha256(as_bytes).hexdigest() + + +def _make_compiler_cache(): + return FileCompilerCache(spack.caches.MISC_CACHE) + + +COMPILER_CACHE: CompilerCache = llnl.util.lang.Singleton(_make_compiler_cache) # type: ignore diff --git a/lib/spack/spack/compilers/aocc.py b/lib/spack/spack/compilers/aocc.py index 7ac861c745733d..920e7d049263c2 100644 --- a/lib/spack/spack/compilers/aocc.py +++ b/lib/spack/spack/compilers/aocc.py @@ -116,5 +116,5 @@ def fflags(self): def _handle_default_flag_addtions(self): # This is a known issue for AOCC 3.0 see: # https://developer.amd.com/wp-content/resources/AOCC-3.0-Install-Guide.pdf - if self.real_version.satisfies(ver("3.0.0")): + if self.version.satisfies(ver("3.0.0")): return "-Wno-unused-command-line-argument " "-mllvm -eliminate-similar-expr=false" diff --git a/lib/spack/spack/test/compilers/basics.py b/lib/spack/spack/test/compilers/basics.py index ee31e50f53893e..75e79d497c6c65 100644 --- a/lib/spack/spack/test/compilers/basics.py +++ b/lib/spack/spack/test/compilers/basics.py @@ -3,8 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) """Test basic behavior of compilers in Spack""" +import json import os from copy import copy +from typing import Optional import pytest @@ -17,6 +19,7 @@ import spack.util.module_cmd from spack.compiler import Compiler from spack.util.executable import Executable, ProcessError +from spack.util.file_cache import FileCache def test_multiple_conflicting_compiler_definitions(mutable_config): @@ -101,11 +104,14 @@ def verbose_flag(self): @pytest.mark.not_on_windows("Not supported on Windows (yet)") -def test_implicit_rpaths(dirs_with_libfiles): +def test_implicit_rpaths(dirs_with_libfiles, monkeypatch): lib_to_dirs, all_dirs = dirs_with_libfiles - compiler = MockCompiler() - compiler._compile_c_source_output = "ld " + " ".join(f"-L{d}" for d in all_dirs) - retrieved_rpaths = compiler.implicit_rpaths() + monkeypatch.setattr( + MockCompiler, + "_compile_dummy_c_source", + lambda self: "ld " + " ".join(f"-L{d}" for d in all_dirs), + ) + retrieved_rpaths = MockCompiler().implicit_rpaths() assert set(retrieved_rpaths) == set(lib_to_dirs["libstdc++"] + lib_to_dirs["libgfortran"]) @@ -647,6 +653,7 @@ def test_raising_if_compiler_target_is_over_specific(config): @pytest.mark.not_on_windows("Not supported on Windows (yet)") +@pytest.mark.enable_compiler_execution def test_compiler_get_real_version(working_env, monkeypatch, tmpdir): # Test variables test_version = "2.2.2" @@ -736,6 +743,7 @@ def test_get_compilers(config): ) == [spack.compilers._compiler_from_config_entry(without_suffix)] +@pytest.mark.enable_compiler_execution def test_compiler_get_real_version_fails(working_env, monkeypatch, tmpdir): # Test variables test_version = "2.2.2" @@ -784,15 +792,13 @@ def _call(*args, **kwargs): compilers = spack.compilers.get_compilers([compiler_dict]) assert len(compilers) == 1 compiler = compilers[0] - try: - _ = compiler.get_real_version() - assert False - except ProcessError: - # Confirm environment does not change after failed call - assert "SPACK_TEST_CMP_ON" not in os.environ + assert compiler.get_real_version() == "unknown" + # Confirm environment does not change after failed call + assert "SPACK_TEST_CMP_ON" not in os.environ @pytest.mark.not_on_windows("Bash scripting unsupported on Windows (for now)") +@pytest.mark.enable_compiler_execution def test_compiler_flags_use_real_version(working_env, monkeypatch, tmpdir): # Create compiler gcc = str(tmpdir.join("gcc")) @@ -895,3 +901,57 @@ def test_compiler_environment(working_env): ) with compiler.compiler_environment(): assert os.environ["TEST"] == "yes" + + +class MockCompilerWithoutExecutables(MockCompiler): + def __init__(self): + super().__init__() + self._compile_dummy_c_source_count = 0 + self._get_real_version_count = 0 + + def _compile_dummy_c_source(self) -> Optional[str]: + self._compile_dummy_c_source_count += 1 + return "gcc helloworld.c -o helloworld" + + def get_real_version(self) -> str: + self._get_real_version_count += 1 + return "1.0.0" + + +def test_compiler_output_caching(tmp_path): + """Test that compiler output is cached on the filesystem.""" + # The first call should trigger the cache to updated. + a = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(a).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(a).real_version == "1.0.0" + assert a._compile_dummy_c_source_count == 1 + assert a._get_real_version_count == 1 + + # The second call on an equivalent but distinct object should not trigger compiler calls. + b = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(b).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(b).real_version == "1.0.0" + assert b._compile_dummy_c_source_count == 0 + assert b._get_real_version_count == 0 + + # Cache schema change should be handled gracefully. + with open(cache.cache.cache_path(cache.name), "w") as f: + for k in cache._data: + cache._data[k] = "corrupted entry" + f.write(json.dumps(cache._data)) + + c = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(c).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(c).real_version == "1.0.0" + + # Cache corruption should be handled gracefully. + with open(cache.cache.cache_path(cache.name), "w") as f: + f.write("corrupted cache") + + d = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(d).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(d).real_version == "1.0.0" diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index dd2444df0a7a1f..e33f9761dad728 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -2316,6 +2316,7 @@ def test_compiler_match_constraints_when_selected(self): @pytest.mark.regression("36339") @pytest.mark.not_on_windows("Not supported on Windows") + @pytest.mark.enable_compiler_execution def test_compiler_with_custom_non_numeric_version(self, mock_executable): """Test that, when a compiler has a completely made up version, we can use its 'real version' to detect targets and don't raise during concretization. diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 5f461d9d3588a4..f6670157edf9ff 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -973,12 +973,26 @@ def _return_none(*args): return None +def _compiler_output(self): + return "" + + +def _get_real_version(self): + return str(self.version) + + @pytest.fixture(scope="function", autouse=True) def disable_compiler_execution(monkeypatch, request): """Disable compiler execution to determine implicit link paths and libc flavor and version. To re-enable use `@pytest.mark.enable_compiler_execution`""" if "enable_compiler_execution" not in request.keywords: - monkeypatch.setattr(spack.compiler.Compiler, "_compile_dummy_c_source", _return_none) + monkeypatch.setattr(spack.compiler.Compiler, "_compile_dummy_c_source", _compiler_output) + monkeypatch.setattr(spack.compiler.Compiler, "get_real_version", _get_real_version) + + +@pytest.fixture(autouse=True) +def disable_compiler_output_cache(monkeypatch): + monkeypatch.setattr(spack.compiler, "COMPILER_CACHE", spack.compiler.CompilerCache()) @pytest.fixture(scope="function") diff --git a/lib/spack/spack/util/libc.py b/lib/spack/spack/util/libc.py index 148c4cb13a529a..d842cd102212d8 100644 --- a/lib/spack/spack/util/libc.py +++ b/lib/spack/spack/util/libc.py @@ -11,6 +11,8 @@ from subprocess import PIPE, run from typing import Dict, List, Optional +from llnl.util.lang import memoized + import spack.spec import spack.util.elf @@ -61,6 +63,14 @@ def default_search_paths_from_dynamic_linker(dynamic_linker: str) -> List[str]: def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"]: + maybe_spec = _libc_from_dynamic_linker(dynamic_linker) + if maybe_spec: + return maybe_spec.copy() + return None + + +@memoized +def _libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"]: if not os.path.exists(dynamic_linker): return None From da1d533877f90610571b72f070c01e13b9729108 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Fri, 8 Nov 2024 17:07:40 -0800 Subject: [PATCH 364/615] fix patched dependencies across repositories (#42463) Currently, if a package has a dependency from another repository and patches it, generation of the patch cache will fail. Concretization succeeds if a fixed patch cache is in place. - [x] don't assume that patched dependencies are in the same repo when indexing - [x] add some test fixtures to support multi-repo tests. --------- Signed-off-by: Todd Gamblin Co-authored-by: Todd Gamblin --- lib/spack/spack/main.py | 2 +- lib/spack/spack/patch.py | 9 +++------ lib/spack/spack/paths.py | 1 + lib/spack/spack/test/conftest.py | 16 +++++++++++----- lib/spack/spack/test/patch.py | 6 ++++++ var/spack/repos/builtin.mock/README.md | 7 +++++++ .../mock2-package.patch | 11 +++++++++++ .../patch-a-foreign-dependency/package.py | 17 +++++++++++++++++ var/spack/repos/builtin.mock2/README.md | 6 ++++++ .../mock2-patched-dependency/package.py | 15 +++++++++++++++ var/spack/repos/builtin.mock2/repo.yaml | 2 ++ 11 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 var/spack/repos/builtin.mock/README.md create mode 100644 var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch create mode 100644 var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py create mode 100644 var/spack/repos/builtin.mock2/README.md create mode 100644 var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py create mode 100644 var/spack/repos/builtin.mock2/repo.yaml diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 7cab47d77f7bf1..28567f26e81f42 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -547,7 +547,7 @@ def setup_main_options(args): key = syaml.syaml_str("repos") key.override = True spack.config.CONFIG.scopes["command_line"].sections["repos"] = syaml.syaml_dict( - [(key, [spack.paths.mock_packages_path])] + [(key, [spack.paths.mock_packages_path, spack.paths.mock_packages_path2])] ) spack.repo.PATH = spack.repo.create(spack.config.CONFIG) diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index a0f4152317c1e9..d4bc9fb4f46efd 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -530,7 +530,7 @@ def update_package(self, pkg_fullname: str) -> None: # update the index with per-package patch indexes pkg_cls = self.repository.get_pkg_class(pkg_fullname) - partial_index = self._index_patches(pkg_cls, self.repository) + partial_index = self._index_patches(pkg_cls) for sha256, package_to_patch in partial_index.items(): p2p = self.index.setdefault(sha256, {}) p2p.update(package_to_patch) @@ -546,14 +546,11 @@ def update(self, other: "PatchCache") -> None: p2p.update(package_to_patch) @staticmethod - def _index_patches( - pkg_class: Type["spack.package_base.PackageBase"], repository: "spack.repo.RepoPath" - ) -> Dict[Any, Any]: + def _index_patches(pkg_class: Type["spack.package_base.PackageBase"]) -> Dict[Any, Any]: """Patch index for a specific patch. Args: pkg_class: package object to get patches for - repository: repository containing the package Returns: The patch index for that package. @@ -571,7 +568,7 @@ def _index_patches( for dependency in deps_by_name.values(): for patch_list in dependency.patches.values(): for patch in patch_list: - dspec_cls = repository.get_pkg_class(dependency.spec.name) + dspec_cls = spack.repo.PATH.get_pkg_class(dependency.spec.fullname) patch_dict = patch.to_dict() patch_dict.pop("sha256") # save some space index[patch.sha256] = {dspec_cls.fullname: patch_dict} diff --git a/lib/spack/spack/paths.py b/lib/spack/spack/paths.py index 84583cd552f531..aeca3a98996fbf 100644 --- a/lib/spack/spack/paths.py +++ b/lib/spack/spack/paths.py @@ -60,6 +60,7 @@ repos_path = os.path.join(var_path, "repos") packages_path = os.path.join(repos_path, "builtin") mock_packages_path = os.path.join(repos_path, "builtin.mock") +mock_packages_path2 = os.path.join(repos_path, "builtin.mock2") # # Writable things in $spack/var/spack diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index f6670157edf9ff..b66e1edb353e23 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -575,6 +575,11 @@ def mock_repo_path(): yield spack.repo.from_path(spack.paths.mock_packages_path) +@pytest.fixture(scope="session") +def mock_repo_path2(): + yield spack.repo.from_path(spack.paths.mock_packages_path2) + + def _pkg_install_fn(pkg, spec, prefix): # sanity_check_prefix requires something in the install directory mkdirp(prefix.bin) @@ -588,19 +593,20 @@ def mock_pkg_install(monkeypatch): @pytest.fixture(scope="function") -def mock_packages(mock_repo_path, mock_pkg_install, request): - """Use the 'builtin.mock' repository instead of 'builtin'""" +def mock_packages(mock_repo_path, mock_repo_path2, mock_pkg_install, request): + """Use the 'builtin.mock' and 'builtin.mock2' repositories instead of 'builtin'""" ensure_configuration_fixture_run_before(request) - with spack.repo.use_repositories(mock_repo_path) as mock_repo: + with spack.repo.use_repositories(mock_repo_path, mock_repo_path2) as mock_repo: yield mock_repo @pytest.fixture(scope="function") -def mutable_mock_repo(mock_repo_path, request): +def mutable_mock_repo(request): """Function-scoped mock packages, for tests that need to modify them.""" ensure_configuration_fixture_run_before(request) mock_repo = spack.repo.from_path(spack.paths.mock_packages_path) - with spack.repo.use_repositories(mock_repo) as mock_repo_path: + mock_repo2 = spack.repo.from_path(spack.paths.mock_packages_path2) + with spack.repo.use_repositories(mock_repo, mock_repo2) as mock_repo_path: yield mock_repo_path diff --git a/lib/spack/spack/test/patch.py b/lib/spack/spack/test/patch.py index 4b5f31b904a64b..1088b1f24b1873 100644 --- a/lib/spack/spack/test/patch.py +++ b/lib/spack/spack/test/patch.py @@ -499,3 +499,9 @@ def test_invalid_from_dict(mock_packages, config): } with pytest.raises(spack.fetch_strategy.ChecksumError, match="sha256 checksum failed for"): spack.patch.from_dict(dictionary) + + +@pytest.mark.regression("43097") +def test_cross_repo_patch(mock_packages, config): + cross_repo_patch = Spec("patch-a-foreign-dependency") + cross_repo_patch.concretize() diff --git a/var/spack/repos/builtin.mock/README.md b/var/spack/repos/builtin.mock/README.md new file mode 100644 index 00000000000000..5a5f6e747f5b57 --- /dev/null +++ b/var/spack/repos/builtin.mock/README.md @@ -0,0 +1,7 @@ +# `builtin.mock` + +This repository and the secondary mock repo `builtin.mock2` contain mock packages used +by Spack tests. + +Most tests are in `builtin.mock`, but `builtin.mock2` is used for scenarios where we +need multiple repos for testing. diff --git a/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch new file mode 100644 index 00000000000000..02bfad9103c7f1 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch @@ -0,0 +1,11 @@ +--- patch-a-dependency/configure 2018-08-13 23:13:51.000000000 -0700 ++++ patch-a-dependency/configure.patched 2018-08-13 23:14:15.000000000 -0700 +@@ -2,7 +2,7 @@ + prefix=$(echo $1 | sed 's/--prefix=//') + cat > Makefile < Date: Sat, 9 Nov 2024 08:50:37 +0100 Subject: [PATCH 365/615] Fix style checks on develop (#47518) `mypy` checks have been accidentally broken by #47213 --- lib/spack/spack/compiler.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 98c0c22f0ae7f3..46382a3d983107 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -29,6 +29,7 @@ import spack.util.module_cmd import spack.version from spack.util.environment import filter_system_paths +from spack.util.file_cache import FileCache __all__ = ["Compiler"] @@ -776,7 +777,7 @@ class FileCompilerCache(CompilerCache): name = os.path.join("compilers", "compilers.json") - def __init__(self, cache: "spack.caches.FileCacheType") -> None: + def __init__(self, cache: "FileCache") -> None: self.cache = cache self.cache.init_entry(self.name) self._data: Dict[str, Dict[str, Optional[str]]] = {} From 7fbfb0f6dc962a18efbaefdf199f3a8e3760194a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 9 Nov 2024 01:25:25 -0800 Subject: [PATCH 366/615] Revert "fix patched dependencies across repositories (#42463)" (#47519) This reverts commit da1d533877f90610571b72f070c01e13b9729108. --- lib/spack/spack/main.py | 2 +- lib/spack/spack/patch.py | 9 ++++++--- lib/spack/spack/paths.py | 1 - lib/spack/spack/test/conftest.py | 16 +++++----------- lib/spack/spack/test/patch.py | 6 ------ var/spack/repos/builtin.mock/README.md | 7 ------- .../mock2-package.patch | 11 ----------- .../patch-a-foreign-dependency/package.py | 17 ----------------- var/spack/repos/builtin.mock2/README.md | 6 ------ .../mock2-patched-dependency/package.py | 15 --------------- var/spack/repos/builtin.mock2/repo.yaml | 2 -- 11 files changed, 12 insertions(+), 80 deletions(-) delete mode 100644 var/spack/repos/builtin.mock/README.md delete mode 100644 var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch delete mode 100644 var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/package.py delete mode 100644 var/spack/repos/builtin.mock2/README.md delete mode 100644 var/spack/repos/builtin.mock2/packages/mock2-patched-dependency/package.py delete mode 100644 var/spack/repos/builtin.mock2/repo.yaml diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 28567f26e81f42..7cab47d77f7bf1 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -547,7 +547,7 @@ def setup_main_options(args): key = syaml.syaml_str("repos") key.override = True spack.config.CONFIG.scopes["command_line"].sections["repos"] = syaml.syaml_dict( - [(key, [spack.paths.mock_packages_path, spack.paths.mock_packages_path2])] + [(key, [spack.paths.mock_packages_path])] ) spack.repo.PATH = spack.repo.create(spack.config.CONFIG) diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index d4bc9fb4f46efd..a0f4152317c1e9 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -530,7 +530,7 @@ def update_package(self, pkg_fullname: str) -> None: # update the index with per-package patch indexes pkg_cls = self.repository.get_pkg_class(pkg_fullname) - partial_index = self._index_patches(pkg_cls) + partial_index = self._index_patches(pkg_cls, self.repository) for sha256, package_to_patch in partial_index.items(): p2p = self.index.setdefault(sha256, {}) p2p.update(package_to_patch) @@ -546,11 +546,14 @@ def update(self, other: "PatchCache") -> None: p2p.update(package_to_patch) @staticmethod - def _index_patches(pkg_class: Type["spack.package_base.PackageBase"]) -> Dict[Any, Any]: + def _index_patches( + pkg_class: Type["spack.package_base.PackageBase"], repository: "spack.repo.RepoPath" + ) -> Dict[Any, Any]: """Patch index for a specific patch. Args: pkg_class: package object to get patches for + repository: repository containing the package Returns: The patch index for that package. @@ -568,7 +571,7 @@ def _index_patches(pkg_class: Type["spack.package_base.PackageBase"]) -> Dict[An for dependency in deps_by_name.values(): for patch_list in dependency.patches.values(): for patch in patch_list: - dspec_cls = spack.repo.PATH.get_pkg_class(dependency.spec.fullname) + dspec_cls = repository.get_pkg_class(dependency.spec.name) patch_dict = patch.to_dict() patch_dict.pop("sha256") # save some space index[patch.sha256] = {dspec_cls.fullname: patch_dict} diff --git a/lib/spack/spack/paths.py b/lib/spack/spack/paths.py index aeca3a98996fbf..84583cd552f531 100644 --- a/lib/spack/spack/paths.py +++ b/lib/spack/spack/paths.py @@ -60,7 +60,6 @@ repos_path = os.path.join(var_path, "repos") packages_path = os.path.join(repos_path, "builtin") mock_packages_path = os.path.join(repos_path, "builtin.mock") -mock_packages_path2 = os.path.join(repos_path, "builtin.mock2") # # Writable things in $spack/var/spack diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index b66e1edb353e23..f6670157edf9ff 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -575,11 +575,6 @@ def mock_repo_path(): yield spack.repo.from_path(spack.paths.mock_packages_path) -@pytest.fixture(scope="session") -def mock_repo_path2(): - yield spack.repo.from_path(spack.paths.mock_packages_path2) - - def _pkg_install_fn(pkg, spec, prefix): # sanity_check_prefix requires something in the install directory mkdirp(prefix.bin) @@ -593,20 +588,19 @@ def mock_pkg_install(monkeypatch): @pytest.fixture(scope="function") -def mock_packages(mock_repo_path, mock_repo_path2, mock_pkg_install, request): - """Use the 'builtin.mock' and 'builtin.mock2' repositories instead of 'builtin'""" +def mock_packages(mock_repo_path, mock_pkg_install, request): + """Use the 'builtin.mock' repository instead of 'builtin'""" ensure_configuration_fixture_run_before(request) - with spack.repo.use_repositories(mock_repo_path, mock_repo_path2) as mock_repo: + with spack.repo.use_repositories(mock_repo_path) as mock_repo: yield mock_repo @pytest.fixture(scope="function") -def mutable_mock_repo(request): +def mutable_mock_repo(mock_repo_path, request): """Function-scoped mock packages, for tests that need to modify them.""" ensure_configuration_fixture_run_before(request) mock_repo = spack.repo.from_path(spack.paths.mock_packages_path) - mock_repo2 = spack.repo.from_path(spack.paths.mock_packages_path2) - with spack.repo.use_repositories(mock_repo, mock_repo2) as mock_repo_path: + with spack.repo.use_repositories(mock_repo) as mock_repo_path: yield mock_repo_path diff --git a/lib/spack/spack/test/patch.py b/lib/spack/spack/test/patch.py index 1088b1f24b1873..4b5f31b904a64b 100644 --- a/lib/spack/spack/test/patch.py +++ b/lib/spack/spack/test/patch.py @@ -499,9 +499,3 @@ def test_invalid_from_dict(mock_packages, config): } with pytest.raises(spack.fetch_strategy.ChecksumError, match="sha256 checksum failed for"): spack.patch.from_dict(dictionary) - - -@pytest.mark.regression("43097") -def test_cross_repo_patch(mock_packages, config): - cross_repo_patch = Spec("patch-a-foreign-dependency") - cross_repo_patch.concretize() diff --git a/var/spack/repos/builtin.mock/README.md b/var/spack/repos/builtin.mock/README.md deleted file mode 100644 index 5a5f6e747f5b57..00000000000000 --- a/var/spack/repos/builtin.mock/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# `builtin.mock` - -This repository and the secondary mock repo `builtin.mock2` contain mock packages used -by Spack tests. - -Most tests are in `builtin.mock`, but `builtin.mock2` is used for scenarios where we -need multiple repos for testing. diff --git a/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch b/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch deleted file mode 100644 index 02bfad9103c7f1..00000000000000 --- a/var/spack/repos/builtin.mock/packages/patch-a-foreign-dependency/mock2-package.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- patch-a-dependency/configure 2018-08-13 23:13:51.000000000 -0700 -+++ patch-a-dependency/configure.patched 2018-08-13 23:14:15.000000000 -0700 -@@ -2,7 +2,7 @@ - prefix=$(echo $1 | sed 's/--prefix=//') - cat > Makefile < Date: Sat, 9 Nov 2024 08:30:38 -0500 Subject: [PATCH 367/615] root: fix macos build (#47483) No ROOT `builtin` should ever be set to true if possible, because that builds an existing library that spack may not know about. Furthermore, using `builtin_glew` forces the package to be on, even when not building x/gl/aqua on macos. This causes build failures. Caused by https://github.com/spack/spack/pull/45632#issuecomment-2276311748 . --- var/spack/repos/builtin/packages/root/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 106bde97757840..e6da973906b73b 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -634,7 +634,7 @@ def cmake_args(self): define("builtin_freetype", False), define("builtin_ftgl", False), define("builtin_gl2ps", False), - define("builtin_glew", self.spec.satisfies("platform=darwin")), + define("builtin_glew", False), define("builtin_gsl", False), define("builtin_llvm", True), define("builtin_lz4", self.spec.satisfies("@6.12.02:6.12")), From b97015b791ca021ae6a1719940823c42fd87eeac Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 9 Nov 2024 15:04:51 +0100 Subject: [PATCH 368/615] ci: ci/all must always run, and fail if any job has status "fail" or "canceled" (#47517) This means it succeeds when a both jobs have either status "success" or status "skipped" --- .github/workflows/ci.yaml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2024014f1bb58d..a7ceb1bd8e445f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -83,10 +83,17 @@ jobs: all-prechecks: needs: [ prechecks ] + if: ${{ always() }} runs-on: ubuntu-latest steps: - name: Success - run: "true" + run: | + if [ "${{ needs.prechecks.result }}" == "failure" ] || [ "${{ needs.prechecks.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + else + exit 0 + fi coverage: needs: [ unit-tests, prechecks ] @@ -94,8 +101,19 @@ jobs: secrets: inherit all: - needs: [ coverage, bootstrap ] + needs: [ unit-tests, coverage, bootstrap ] + if: ${{ always() }} runs-on: ubuntu-latest + # See https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#needs-context steps: - - name: Success - run: "true" + - name: Status summary + run: | + if [ "${{ needs.unit-tests.result }}" == "failure" ] || [ "${{ needs.unit-tests.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + elif [ "${{ needs.bootstrap.result }}" == "failure" ] || [ "${{ needs.bootstrap.result }}" == "canceled" ]; then + echo "Bootstrap tests failed." + exit 1 + else + exit 0 + fi From e99bf48d28163f202cb98080454dd8f28d229b77 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Sat, 9 Nov 2024 06:12:46 -0800 Subject: [PATCH 369/615] Revert "upcxx %oneapi@2025: cxxflags add -Wno-error=missing-template-arg-list-after-template-kw (#47503)" (#47512) This reverts commit 4322cf56b15a0a088156f5702d44a04e8238b4b3. --- var/spack/repos/builtin/packages/upcxx/package.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/upcxx/package.py b/var/spack/repos/builtin/packages/upcxx/package.py index 4e23f42431a014..91971025683297 100644 --- a/var/spack/repos/builtin/packages/upcxx/package.py +++ b/var/spack/repos/builtin/packages/upcxx/package.py @@ -164,11 +164,7 @@ class Upcxx(Package, CudaPackage, ROCmPackage): depends_on("oneapi-level-zero@1.8.0:", when="+level_zero") # All flags should be passed to the build-env in autoconf-like vars - def flag_handler(self, name, flags): - if name == "cxxflags": - if self.spec.satisfies("%oneapi@2025:"): - flags.append("-Wno-error=missing-template-arg-list-after-template-kw") - return (flags, None, None) + flag_handler = env_flags def set_variables(self, env): env.set("UPCXX_INSTALL", self.prefix) From 97acf2614a5493dba28060d804a08482c463e141 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sat, 9 Nov 2024 07:39:55 -0700 Subject: [PATCH 370/615] cprnc: set install rpath and add v1.0.8 (#47505) --- .../builtin/packages/cprnc/install_rpath.patch | 18 ++++++++++++++++++ .../repos/builtin/packages/cprnc/package.py | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cprnc/install_rpath.patch diff --git a/var/spack/repos/builtin/packages/cprnc/install_rpath.patch b/var/spack/repos/builtin/packages/cprnc/install_rpath.patch new file mode 100644 index 00000000000000..92888468f8f7b2 --- /dev/null +++ b/var/spack/repos/builtin/packages/cprnc/install_rpath.patch @@ -0,0 +1,18 @@ +--- a/CMakeLists.txt 2023-12-04 07:01:57.000000000 -0700 ++++ b/CMakeLists.txt 2024-11-08 06:53:55.090900241 -0700 +@@ -21,6 +21,7 @@ + + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CMAKE_MACOSX_RPATH 1) ++SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + + # Compiler-specific compile options + if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU") +@@ -79,6 +80,7 @@ + get_filename_component(netcdf_c_lib_location ${netcdf_c_lib} DIRECTORY) + #message (STATUS "netcdf_c_lib_location == ${netcdf_c_lib_location}") + ++SET(CMAKE_INSTALL_RPATH "${netcdf_fortran_lib_location};${netcdf_c_lib_location}") + list(APPEND CMAKE_BUILD_RPATH ${netcdf_fortran_lib_location} ${netcdf_c_lib_location}) + #message("CMAKE_BUILD_RPATH is ${CMAKE_BUILD_RPATH}") + add_executable (cprnc ${CPRNC_Fortran_SRCS} ${CPRNC_GenF90_SRCS}) diff --git a/var/spack/repos/builtin/packages/cprnc/package.py b/var/spack/repos/builtin/packages/cprnc/package.py index c719c107155cc5..c1bb841ad9fcaa 100644 --- a/var/spack/repos/builtin/packages/cprnc/package.py +++ b/var/spack/repos/builtin/packages/cprnc/package.py @@ -15,6 +15,7 @@ class Cprnc(CMakePackage): maintainers("jedwards4b", "billsacks") + version("1.0.8", sha256="94ee3b4e724bc06161e576d45f34401f1452acf738803528cb80726eed230cae") version("1.0.3", sha256="3e7400f9a13d5de01964d7dd95151d08e6e30818d2a1efa9a9c7896cf6646d69") version("1.0.2", sha256="02edfa8050135ac0dc4a74aea05d19b0823d769b22cafa88b9352e29723d4179") version("1.0.1", sha256="b8a8fd4ad7e2716968dfa60f677217c55636580807b1309276f4c062ee432ccd") @@ -25,6 +26,8 @@ class Cprnc(CMakePackage): depends_on("netcdf-fortran") depends_on("cmake@3:", type="build") + patch("install_rpath.patch", when="@:1.0.7") + resource( name="genf90", git="https://github.com/PARALLELIO/genf90", From fa6b8a4cebc299ccb92be004b0db938e16ca8ba4 Mon Sep 17 00:00:00 2001 From: JStewart28 <80227058+JStewart28@users.noreply.github.com> Date: Sat, 9 Nov 2024 13:43:55 -0700 Subject: [PATCH 371/615] beatnik: add v1.1 (#47361) Co-authored-by: Patrick Bridges --- var/spack/repos/builtin/packages/beatnik/package.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/beatnik/package.py b/var/spack/repos/builtin/packages/beatnik/package.py index ac817cca25359d..8d75a590db80f2 100644 --- a/var/spack/repos/builtin/packages/beatnik/package.py +++ b/var/spack/repos/builtin/packages/beatnik/package.py @@ -16,9 +16,10 @@ class Beatnik(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") + version("1.1", commit="7d5a6fa588bcb7065fc53c3e8ae52d4d7f13b6f1", submodules=True) version("1.0", commit="ae31ef9cb44678d5ace77994b45b0778defa3d2f") - version("develop", branch="develop") - version("main", branch="main") + version("develop", branch="develop", submodules=True) + version("main", branch="main", submodules=True) depends_on("cxx", type="build") # generated @@ -47,13 +48,17 @@ class Beatnik(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos +wrapper", when="%gcc+cuda") # Cabana dependencies - depends_on("cabana @0.6.0 +grid +heffte +silo +hdf5 +mpi") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@1.1") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@1.0") + depends_on("cabana @master +grid +heffte +silo +hdf5 +mpi +arborx", when="@develop") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@main") depends_on("cabana +cuda", when="+cuda") depends_on("cabana +rocm", when="+rocm") # Silo dependencies depends_on("silo @4.11:") - depends_on("silo @4.11.1:", when="%cce") # Eariler silo versions have trouble cce + depends_on("silo @4.11.1 +fpzip+hzip~python", when="%cce") + # Eariler silo versions have trouble with cce # Heffte dependencies - We always require FFTW so that there's a host # backend even when we're compiling for GPUs From fb5910d139317d423ea850bd95c496e8481c648b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 10 Nov 2024 17:53:15 +0100 Subject: [PATCH 372/615] py-torchmetrics: add v1.5.2 (#47497) --- var/spack/repos/builtin/packages/py-torchmetrics/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-torchmetrics/package.py b/var/spack/repos/builtin/packages/py-torchmetrics/package.py index 16b272e7a992f9..f3cf233cbfa769 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -15,6 +15,7 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.5.2", sha256="2d0e4957af0ea76438d2779fe1a626d8cba6cda8607eadb54267598153e7ea63") version("1.5.1", sha256="9701632cf811bc460abf07bd7b971b79c1ae9c8231e03d495b53a0975e43fe07") version("1.5.0", sha256="c18e68bab4104ad7d2285af601ddc6dc04f9f3b7cafaa8ad13fa1dcc539e33b6") version("1.4.3", sha256="5554a19167e91f543afe82ff58a01059c8eec854359ad22896449c2c8fb0ad89") From 33109ce9b9468d75d82567b5ba0f851cef6b46e1 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Sun, 10 Nov 2024 17:11:13 +0000 Subject: [PATCH 373/615] lksctp-tools: added version 1.0.21 (#47493) Adds version 1.0.21 of lksctp-tools --- var/spack/repos/builtin/packages/lksctp-tools/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/lksctp-tools/package.py b/var/spack/repos/builtin/packages/lksctp-tools/package.py index 1222dddffb42f3..e690b5a9be127d 100644 --- a/var/spack/repos/builtin/packages/lksctp-tools/package.py +++ b/var/spack/repos/builtin/packages/lksctp-tools/package.py @@ -14,6 +14,7 @@ class LksctpTools(AutotoolsPackage): license("GPL-2.0-or-later AND LGPL-2.1-or-later") + version("1.0.21", sha256="8738bf17ecffbbe2440a6e2ffaf1cbcebb633fc99d63d88761af35c02a571893") version("1.0.18", sha256="3e9ab5b3844a8b65fc8152633aafe85f406e6da463e53921583dfc4a443ff03a") depends_on("c", type="build") # generated From 825fd1ccf6e5b3142ecc01cfb0eb81ff8d58dd68 Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Sun, 10 Nov 2024 11:47:12 -0600 Subject: [PATCH 374/615] Disable the optional flexblas support as system flexiblas is possibly used as flexiblas is not a depends and the entire build chain to support using flexibls is not setup. As this does not seem to be needed with the spack blas and lapack, it is easier to disable (#47514) --- var/spack/repos/builtin/packages/armadillo/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 0f723296caf920..a2b562518ab33e 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -87,4 +87,9 @@ def cmake_args(self): self.define("SuperLU_LIBRARY", spec["superlu"].libs.joined(";")), # HDF5 support self.define("DETECT_HDF5", "ON" if spec.satisfies("+hdf5") else "OFF"), + # disable flexiblas support because armadillo will possibly detect system + # flexiblas which causes problems. If this is removed, then SuperLU and ARPACK must + # also link with Flexiblas. As this does not seem to be needed with the spack + # blas and lapack, it is easier to disable + self.define("ALLOW_FLEXIBLAS_LINUX", "OFF"), ] From 4c9bc8d879a2eee8c38eeaee209fc0308fc68a37 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:51:07 +0000 Subject: [PATCH 375/615] Add v0.47 (#47456) --- var/spack/repos/builtin/packages/yosys/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/yosys/package.py b/var/spack/repos/builtin/packages/yosys/package.py index d37712955a6536..2da4aa007a11d4 100644 --- a/var/spack/repos/builtin/packages/yosys/package.py +++ b/var/spack/repos/builtin/packages/yosys/package.py @@ -29,6 +29,7 @@ class Yosys(MakefilePackage): version("master", branch="master") + version("0.47", commit="647d61dd9212365a3cd44db219660b8f90b95cbd", submodules=True) version("0.46", commit="e97731b9dda91fa5fa53ed87df7c34163ba59a41", submodules=True) version("0.45", commit="9ed031ddd588442f22be13ce608547a5809b62f0", submodules=True) version("0.44", commit="80ba43d26264738c93900129dc0aab7fab36c53f", submodules=True) From 97b5ec6e4fc5c77885c9535e921bc03449e3e604 Mon Sep 17 00:00:00 2001 From: Kaan <61908449+kaanolgu@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:51:39 +0000 Subject: [PATCH 376/615] Add support for Codeplay AMD Plugin for Intel OneAPI Compilers (#46749) * Added support for Codeplay AMD Plugin for Intel OneAPI Compilers * [@spackbot] updating style on behalf of kaanolgu * Adding 2025.0.0 * removed HOME and XDG_RUNTIME_DIR * [@spackbot] updating style on behalf of kaanolgu --------- Co-authored-by: Kaan Olgu --- .../intel-oneapi-compilers/package.py | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index 3fc63be6522921..d7cb974a56e185 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -20,6 +20,14 @@ "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/69f79888-2d6c-4b20-999e-e99d72af68d4/intel-fortran-compiler-2025.0.0.723_offline.sh", "sha256": "2be6d607ce84f35921228595b118fbc516d28587cbc4e6dcf6b7219e5cd1a9a9", }, + "nvidia-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2025.0.0&filters[]=12.0&filters[]=linux", + "sha256": "264a43d2e07c08eb31d6483fb1c289a6b148709e48e9a250efc1b1e9a527feb6", + }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2025.0.0&filters[]=6.1.0&filters[]=linux", + "sha256": "2c5a147e82f0e995b9c0457b53967cc066d5741d675cb64cb9eba8e3c791a064", + }, }, { "version": "2024.2.1", @@ -35,6 +43,10 @@ "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2024.2.1&filters[]=12.0&filters[]=linux", "sha256": "2c377027c650291ccd8267cbf75bd3d00c7b11998cc59d5668a02a0cbc2c015f", }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2024.2.1&filters[]=6.1.0&filters[]=linux", + "sha256": "fbeb64f959f907cbf3469f4e154b2af6d8ff46fe4fc667c811e04f3872a13823", + }, }, { "version": "2024.2.0", @@ -50,6 +62,10 @@ "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2024.2.0&filters[]=12.0&filters[]=linux", "sha256": "0622df0054364b01e91e7ed72a33cb3281e281db5b0e86579f516b1cc5336b0f", }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2024.2.0&filters[]=6.1.0&filters[]=linux", + "sha256": "d1e9d30fa92f3ef606f054d8cbd7c338b3e46f6a9f8472736e29e8ccd9e50688", + }, }, { "version": "2024.1.0", @@ -286,6 +302,9 @@ class IntelOneapiCompilers(IntelOneApiPackage, CompilerPackage): # Add the nvidia variant variant("nvidia", default=False, description="Install NVIDIA plugin for OneAPI") conflicts("@:2022.2.1", when="+nvidia", msg="Codeplay NVIDIA plugin requires newer release") + # Add the amd variant + variant("amd", default=False, description="Install AMD plugin for OneAPI") + conflicts("@:2022.2.1", when="+amd", msg="Codeplay AMD plugin requires newer release") # TODO: effectively gcc is a direct dependency of intel-oneapi-compilers, but we # cannot express that properly. For now, add conflicts for non-gcc compilers # instead. @@ -309,6 +328,14 @@ class IntelOneapiCompilers(IntelOneApiPackage, CompilerPackage): expand=False, **v["nvidia-plugin"], ) + if "amd-plugin" in v: + resource( + name="amd-plugin-installer", + placement="amd-plugin-installer", + when="@{0}".format(v["version"]), + expand=False, + **v["amd-plugin"], + ) @property def v2_layout_versions(self): @@ -374,12 +401,15 @@ def install(self, spec, prefix): if nvidia_script: if platform.system() == "Linux": bash = Executable("bash") - # Installer writes files in ~/intel set HOME so it goes to prefix - bash.add_default_env("HOME", prefix) - # Installer checks $XDG_RUNTIME_DIR/.bootstrapper_lock_file as well - bash.add_default_env("XDG_RUNTIME_DIR", join_path(self.stage.path, "runtime")) # For NVIDIA plugin installer bash(nvidia_script[0], "-y", "--install-dir", self.prefix) + if self.spec.satisfies("+amd"): + amd_script = find("amd-plugin-installer", "*") + if amd_script: + if platform.system() == "Linux": + bash = Executable("bash") + # For AMD plugin installer + bash(amd_script[0], "-y", "--install-dir", self.prefix) @run_after("install") def inject_rpaths(self): From ebd4ef934c754f4c8cb5b19a7bde0c5b3d09fe7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 13:03:37 -0600 Subject: [PATCH 377/615] build(deps): bump types-six in /.github/workflows/requirements/style (#47454) Bumps [types-six](https://github.com/python/typeshed) from 1.16.21.20241009 to 1.16.21.20241105. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-six dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/requirements/style/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/requirements/style/requirements.txt b/.github/workflows/requirements/style/requirements.txt index be2bfefc80bb11..93ab7eaa7f78cf 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -3,5 +3,5 @@ clingo==5.7.1 flake8==7.1.1 isort==5.13.2 mypy==1.8.0 -types-six==1.16.21.20241009 +types-six==1.16.21.20241105 vermin==1.6.0 From 16b01c5661c53736bf0a4a274bf40d4f176966e1 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Sun, 10 Nov 2024 19:06:41 +0000 Subject: [PATCH 378/615] librdkafka: added missing dependency on curl (#47500) * librdkafka: added missing dependency on curl This PR adds a missing dependency on curl in librdkafka. * librdkafka: added dependency on openssl and zlib --- var/spack/repos/builtin/packages/librdkafka/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/librdkafka/package.py b/var/spack/repos/builtin/packages/librdkafka/package.py index 9d1a506dc19762..df90516c227e8d 100644 --- a/var/spack/repos/builtin/packages/librdkafka/package.py +++ b/var/spack/repos/builtin/packages/librdkafka/package.py @@ -31,3 +31,6 @@ class Librdkafka(AutotoolsPackage): depends_on("zstd") depends_on("lz4") + depends_on("curl") + depends_on("openssl") + depends_on("zlib") From 2713b0c216cbd4483009e22a5916d843308984fb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 10 Nov 2024 20:21:01 +0100 Subject: [PATCH 379/615] py-kornia: add v0.7.4 (#47435) --- var/spack/repos/builtin/packages/py-kornia/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-kornia/package.py b/var/spack/repos/builtin/packages/py-kornia/package.py index 4789984a2ecd78..06a0c262988946 100644 --- a/var/spack/repos/builtin/packages/py-kornia/package.py +++ b/var/spack/repos/builtin/packages/py-kornia/package.py @@ -23,6 +23,7 @@ class PyKornia(PythonPackage): "adamjstewart", ) + version("0.7.4", sha256="1f8dd6268ca5a2f2ec04b13c48da4dfb90ba2cfae7e31e0cc80d37f6520fa3f1") version("0.7.3", sha256="0eb861ea5d7e6c3891ae699a8b7103a5783af0a7c41888ca482420dd3d055306") version("0.7.2", sha256="f834ccd51188d071ed286a6727471c94344ea2a718903cc6f0e56a92f9c66ac5") version("0.7.1", sha256="65b54a50f70c1f88240b557fda3fdcc1ab866982a5d062e52213130f5a48465c") From 2da4366ba6b180007976e00ee20d87d19fa0e78d Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Sun, 10 Nov 2024 21:12:23 +0100 Subject: [PATCH 380/615] benchmark: enable shared libraries by default (#47368) * benchmark: enable shared libraries by default The existing behaviour of Google Benchmark yiels static objects which are of little use for most projects. This PR changes the spec to use dynamic libraries instead. * Add shared variant --- var/spack/repos/builtin/packages/benchmark/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 8e398aefa3c722..488a7509518904 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -14,6 +14,7 @@ class Benchmark(CMakePackage): git = "https://github.com/google/benchmark.git" license("Apache-2.0") + maintainers("stephenswat") # first properly installed CMake config packages in # 1.2.0 release: https://github.com/google/benchmark/issues/363 @@ -54,6 +55,9 @@ class Benchmark(CMakePackage): when="@1.5.4:", description="Enable performance counters provided by libpfm", ) + variant( + "shared", default=True, sticky=True, description="Build the libraries as shared objects" + ) depends_on("cmake@2.8.11:", type="build", when="@:1.1.0") depends_on("cmake@2.8.12:", type="build", when="@1.2.0:1.4") @@ -64,6 +68,7 @@ def cmake_args(self): # No need for testing for the install args = [ self.define("BENCHMARK_ENABLE_TESTING", False), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("BENCHMARK_ENABLE_LIBPFM", "performance_counters"), ] return args From 68570b75874c1312d463d1d43907a2b95db8c76f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 10 Nov 2024 21:34:20 +0100 Subject: [PATCH 381/615] GDAL: add v3.10.0 (#47472) --- var/spack/repos/builtin/packages/gdal/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 1253219e8bf091..67e8e209875e7a 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -28,10 +28,10 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): list_url = "https://download.osgeo.org/gdal/" list_depth = 1 - maintainers("adamjstewart") - license("MIT") + maintainers("adamjstewart") + version("3.10.0", sha256="af821a3bcf68cf085724c21c9b53605fd451d83af3c8854d8bf194638eb734a8") version("3.9.3", sha256="34a037852ffe6d2163f1b8948a1aa7019ff767148aea55876c1339b22ad751f1") version("3.9.2", sha256="bfbcc9f087f012c36151c20c79f8eac9529e1e5298fbded79cd5a1365f0b113a") version("3.9.1", sha256="aff3086fee75f5773e33a5598df98d8a4d10be411f777d3ce23584b21d8171ca") @@ -115,6 +115,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): variant( "arrow", default=False, when="build_system=cmake", description="Required for Arrow driver" ) + variant("avif", default=False, when="@3.10:", description="Required for AVIF driver") variant( "basisu", default=False, when="@3.6:", description="Required for BASISU and KTX2 drivers" ) @@ -197,6 +198,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): "opencad", default=False, when="build_system=cmake", description="Required for CAD driver" ) variant("opencl", default=False, description="Required to accelerate warping computations") + variant("opendrive", default=False, when="@3.10:", description="Required for XODR driver") variant("openexr", default=False, when="@3.1:", description="Required for EXR driver") variant("openjpeg", default=False, description="Required for JP2OpenJPEG driver") variant("openssl", default=False, when="@2.3:", description="Required for EEDAI driver") @@ -289,6 +291,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): depends_on("blas", when="+armadillo") depends_on("lapack", when="+armadillo") depends_on("arrow", when="+arrow") + depends_on("libavif", when="+avif") # depends_on("basis-universal", when="+basisu") depends_on("c-blosc", when="+blosc") depends_on("brunsli", when="+brunsli") @@ -354,6 +357,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): # depends_on('ogdi', when='+ogdi') # depends_on('lib-opencad', when='+opencad') depends_on("opencl", when="+opencl") + # depends_on("libopendrive@0.6:", when="+opendrive") depends_on("openexr@2.2:", when="+openexr") depends_on("openjpeg@2.3.1:", when="@3.9:+openjpeg") depends_on("openjpeg", when="+openjpeg") @@ -549,6 +553,7 @@ def cmake_args(self): self.define_from_variant("GDAL_USE_ARCHIVE", "archive"), self.define_from_variant("GDAL_USE_ARMADILLO", "armadillo"), self.define_from_variant("GDAL_USE_ARROW", "arrow"), + self.define_from_variant("GDAL_USE_AVIF", "avif"), self.define_from_variant("GDAL_USE_BASISU", "basisu"), self.define_from_variant("GDAL_USE_BLOSC", "blosc"), self.define_from_variant("GDAL_USE_BRUNSLI", "brunsli"), @@ -595,6 +600,7 @@ def cmake_args(self): self.define_from_variant("GDAL_USE_OGDI", "ogdi"), self.define_from_variant("GDAL_USE_OPENCAD", "opencad"), self.define_from_variant("GDAL_USE_OPENCL", "opencl"), + self.define_from_variant("GDAL_USE_OPENDRIVE", "opendrive"), self.define_from_variant("GDAL_USE_OPENEXR", "openexr"), self.define_from_variant("GDAL_USE_OPENJPEG", "openjpeg"), self.define_from_variant("GDAL_USE_OPENSSL", "openssl"), From 913dcd97bcbcf3b6d15e32f8385705a585fb2159 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Sun, 10 Nov 2024 23:07:12 +0000 Subject: [PATCH 382/615] verilator: add v5.030 (#47455) * Add 5.030 and remove the requirement to patch verilator, the problem has be fixed in this rev * Update var/spack/repos/builtin/packages/verilator/package.py Co-authored-by: Wouter Deconinck --------- Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/verilator/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/verilator/package.py b/var/spack/repos/builtin/packages/verilator/package.py index 0399839d0492c3..1422c28f1701f1 100644 --- a/var/spack/repos/builtin/packages/verilator/package.py +++ b/var/spack/repos/builtin/packages/verilator/package.py @@ -42,6 +42,7 @@ class Verilator(AutotoolsPackage): version("master", branch="master") + version("5.030", sha256="b9e7e97257ca3825fcc75acbed792b03c3ec411d6808ad209d20917705407eac") version("5.028", sha256="02d4b6f34754b46a97cfd70f5fcbc9b730bd1f0a24c3fc37223397778fcb142c") version("5.026", sha256="87fdecf3967007d9ee8c30191ff2476f2a33635d0e0c6e3dbf345cc2f0c50b78") version("5.024", sha256="88b04c953e7165c670d6a700f202cef99c746a0867b4e2efe1d7ea789dee35f3") @@ -87,7 +88,7 @@ class Verilator(AutotoolsPackage): conflicts("%gcc@:6", msg="C++14 support required") - patch("fix_compile_gch.patch", level=1, when="@5.0.18:") + patch("fix_compile_gch.patch", level=1, when="@5.018:5.028") # we need to fix the CXX and LINK paths, as they point to the spack # wrapper scripts which aren't usable without spack From f5b8b0ac5dfab0fa5e9baa3b2a32fc500d9a93a6 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 10 Nov 2024 17:09:06 -0600 Subject: [PATCH 383/615] mbedtls: add v2.28.9, v3.6.2 (fix CVEs) (#46637) * mbedtls: add v2.28.9, v3.6.1 (fix CVEs) * mbedtls: add v3.6.2 --- .../repos/builtin/packages/mbedtls/package.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 73f463239d026c..2478192bc48f66 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -18,13 +18,18 @@ class Mbedtls(MakefilePackage): maintainers("haampie") - license("Apache-2.0 OR GPL-2.0-or-later") + license("Apache-2.0 OR GPL-2.0-or-later", checked_by="wdconinc") # version 3.x - version("3.6.0", sha256="3ecf94fcfdaacafb757786a01b7538a61750ebd85c4b024f56ff8ba1490fcd38") - version("3.3.0", sha256="a22ff38512697b9cd8472faa2ea2d35e320657f6d268def3a64765548b81c3ec") + version("3.6.2", sha256="8b54fb9bcf4d5a7078028e0520acddefb7900b3e66fec7f7175bb5b7d85ccdca") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-45159 + version("3.6.1", sha256="fc8bef0991b43629b7e5319de6f34f13359011105e08e3e16eed3a9fe6ffd3a3") + version("3.6.0", sha256="3ecf94fcfdaacafb757786a01b7538a61750ebd85c4b024f56ff8ba1490fcd38") + version("3.3.0", sha256="a22ff38512697b9cd8472faa2ea2d35e320657f6d268def3a64765548b81c3ec") # version 2.x + version("2.28.9", sha256="e85ea97aaf78dd6c0a5ba2e54dd5932ffa15f39abfc189c26beef7684630c02b") version("2.28.8", sha256="241c68402cef653e586be3ce28d57da24598eb0df13fcdea9d99bfce58717132") version("2.28.2", sha256="1db6d4196178fa9f8264bef5940611cd9febcd5d54ec05f52f1e8400f792b5a4") version("2.7.19", sha256="3da12b1cebe1a25da8365d5349f67db514aefcaa75e26082d7cb2fa3ce9608aa") @@ -79,7 +84,10 @@ class Mbedtls(MakefilePackage): def url_for_version(self, version): if self.spec.satisfies("@:2.28.7,3:3.5"): return f"https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v{version}.tar.gz" - return f"https://github.com/Mbed-TLS/mbedtls/releases/download/v{version}/mbedtls-{version}.tar.bz2" + if self.spec.satisfies("@2.28.8,3.6.0"): + return f"https://github.com/Mbed-TLS/mbedtls/releases/download/v{version}/mbedtls-{version}.tar.bz2" + # release tags for @2.28.9:2,3.6.1: + return f"https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-{version}/mbedtls-{version}.tar.bz2" def flag_handler(self, name, flags): # Compile with PIC, if requested. From 30db7644495c8a52f8bbf81af564a33f1373fb31 Mon Sep 17 00:00:00 2001 From: Giuncan <38205328+Giuncan@users.noreply.github.com> Date: Mon, 11 Nov 2024 03:12:15 +0100 Subject: [PATCH 384/615] lua: always generate pcfile without patch and remove +pcfile variant (#47353) * lua: add +pcfile support for @5.4: versions, without using a version-dependent patch * lua: always generate pcfile, remove +pcfile variant from all packages * lua: minor fixes * rpm: minor fix --- .../repos/builtin/packages/lua/package.py | 38 ++++++++++++------- .../repos/builtin/packages/rpm/package.py | 4 +- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 683657882359f0..8f791b5cd867b7 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -12,6 +12,23 @@ from spack.package import * from spack.util.executable import Executable +# This is the template for a pkgconfig file for rpm +# https://github.com/guix-mirror/guix/raw/dcaf70897a0bad38a4638a2905aaa3c46b1f1402/gnu/packages/patches/lua-pkgconfig.patch +_LUA_PC_TEMPLATE = """prefix={0} +libdir={0}/lib +includedir={0}/include +bindir={0}/bin +INSTALL_LMOD={0}/share/lua/{1} +INSTALL_CMOD={0}/lib/lua/{1} +INTERPRETER=${{bindir}}/lua +COMPILER=${{bindir}}/luac +Name: Lua +Description: A powerful, fast, lightweight, embeddable scripting language +Version: {2} +Libs: -L${{libdir}} -llua -lm +Cflags: -I${{includedir}} +""" + class LuaImplPackage(MakefilePackage): """Specialized class for lua *implementations* @@ -226,7 +243,6 @@ class Lua(LuaImplPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - variant("pcfile", default=False, description="Add patch for lua.pc generation") variant("shared", default=True, description="Builds a shared version of the library") provides("lua-lang@5.1", when="@5.1:5.1.99") @@ -237,12 +253,6 @@ class Lua(LuaImplPackage): depends_on("ncurses+termlib") depends_on("readline") - patch( - "http://lua.2524044.n2.nabble.com/attachment/7666421/0/pkg-config.patch", - sha256="208316c2564bdd5343fa522f3b230d84bd164058957059838df7df56876cb4ae", - when="+pcfile @:5.3.9999", - ) - def build(self, spec, prefix): if spec.satisfies("platform=darwin"): target = "macosx" @@ -289,10 +299,10 @@ def install(self, spec, prefix): os.symlink(src_path, dest_path) @run_after("install") - def link_pkg_config(self): - if self.spec.satisfies("+pcfile"): - versioned_pc_file_name = "lua{0}.pc".format(self.version.up_to(2)) - symlink( - join_path(self.prefix.lib, "pkgconfig", versioned_pc_file_name), - join_path(self.prefix.lib, "pkgconfig", "lua.pc"), - ) + def generate_pkg_config(self): + mkdirp(self.prefix.lib.pkgconfig) + versioned_pc_file_name = "lua{0}.pc".format(self.version.up_to(2)) + versioned_pc_file_path = join_path(self.prefix.lib.pkgconfig, versioned_pc_file_name) + with open(versioned_pc_file_path, "w") as pcfile: + pcfile.write(_LUA_PC_TEMPLATE.format(self.prefix, self.version.up_to(2), self.version)) + symlink(versioned_pc_file_path, join_path(self.prefix.lib.pkgconfig, "lua.pc")) diff --git a/var/spack/repos/builtin/packages/rpm/package.py b/var/spack/repos/builtin/packages/rpm/package.py index 18d373f299e9ec..39d2d44af4d848 100644 --- a/var/spack/repos/builtin/packages/rpm/package.py +++ b/var/spack/repos/builtin/packages/rpm/package.py @@ -60,8 +60,8 @@ class Rpm(AutotoolsPackage): # Always required depends_on("popt") - # Without this file patch, we don't detect lua - depends_on("lua+pcfile@5.3.5:", when="+lua") + # support for embedded Lua interpreter + depends_on("lua@5.3.5:", when="+lua") # Enable POSIX.1e draft 15 file capabilities support depends_on("libcap", when="+posix") From a9e60749964e976382fc87bf5e8b9a0d40b816d2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 11 Nov 2024 10:43:23 +0100 Subject: [PATCH 385/615] filesystem.py find: return directories and improve performance (#47537) --- lib/spack/llnl/util/filesystem.py | 84 ++++++++++---------- lib/spack/spack/test/llnl/util/filesystem.py | 22 ++--- 2 files changed, 49 insertions(+), 57 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 83cbe45104377b..a876a76c270266 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1693,11 +1693,11 @@ def find( recursive: bool = True, max_depth: Optional[int] = None, ) -> List[str]: - """Finds all non-directory files matching the patterns from ``files`` starting from ``root``. - This function returns a deterministic result for the same input and directory structure when - run multiple times. Symlinked directories are followed, and unique directories are searched - only once. Each matching file is returned only once at lowest depth in case multiple paths - exist due to symlinked directories. + """Finds all files matching the patterns from ``files`` starting from ``root``. This function + returns a deterministic result for the same input and directory structure when run multiple + times. Symlinked directories are followed, and unique directories are searched only once. Each + matching file is returned only once at lowest depth in case multiple paths exist due to + symlinked directories. Accepts any glob characters accepted by fnmatch: @@ -1830,54 +1830,58 @@ def _find_max_depth( # Use glob.glob for complex patterns. for pattern_name, pattern in complex_patterns.items(): matched_paths[pattern_name].extend( - path - for path in glob.glob(os.path.join(curr_dir, pattern)) - if not os.path.isdir(path) + path for path in glob.glob(os.path.join(curr_dir, pattern)) ) + # List of subdirectories by path and (inode, device) tuple + subdirs: List[Tuple[str, Tuple[int, int]]] = [] + with dir_iter: - ordered_entries = sorted(dir_iter, key=lambda x: x.name) - for dir_entry in ordered_entries: + for dir_entry in dir_iter: + + # Match filename only patterns + if filename_only_patterns: + m = regex.match(os.path.normcase(dir_entry.name)) + if m: + for pattern_name in filename_only_patterns: + if m.group(pattern_name): + matched_paths[pattern_name].append(dir_entry.path) + break + + # Collect subdirectories + if depth >= max_depth: + continue + try: - it_is_a_dir = dir_entry.is_dir(follow_symlinks=True) + if not dir_entry.is_dir(follow_symlinks=True): + continue + if sys.platform == "win32": + # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we have + # to call os.stat + stat_info = os.stat(dir_entry.path, follow_symlinks=True) + else: + stat_info = dir_entry.stat(follow_symlinks=True) except OSError as e: # Possible permission issue, or a symlink that cannot be resolved (ELOOP). _log_file_access_issue(e, dir_entry.path) continue - if it_is_a_dir: - if depth >= max_depth: - continue - try: - # The stat should be performed in a try/except block. We repeat that here - # vs. moving to the above block because we only want to call `stat` if we - # haven't exceeded our max_depth - if sys.platform == "win32": - # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we - # have to call os.stat - stat_info = os.stat(dir_entry.path, follow_symlinks=True) - else: - stat_info = dir_entry.stat(follow_symlinks=True) - except OSError as e: - _log_file_access_issue(e, dir_entry.path) - continue + subdirs.append((dir_entry.path, _file_id(stat_info))) - dir_id = _file_id(stat_info) - if dir_id not in visited_dirs: - dir_queue.appendleft((depth + 1, dir_entry.path)) - visited_dirs.add(dir_id) - elif filename_only_patterns: - m = regex.match(os.path.normcase(dir_entry.name)) - if not m: - continue - for pattern_name in filename_only_patterns: - if m.group(pattern_name): - matched_paths[pattern_name].append(dir_entry.path) - break + # Enqueue subdirectories in a deterministic order + if subdirs: + subdirs.sort(key=lambda s: os.path.basename(s[0])) + for subdir, subdir_id in subdirs: + if subdir_id not in visited_dirs: + dir_queue.appendleft((depth + 1, subdir)) + visited_dirs.add(subdir_id) + # Sort the matched paths for deterministic output + for paths in matched_paths.values(): + paths.sort() all_matching_paths = [path for paths in matched_paths.values() for path in paths] - # we only dedupe files if we have any complex patterns, since only they can match the same file + # We only dedupe files if we have any complex patterns, since only they can match the same file # multiple times return _dedupe_files(all_matching_paths) if complex_patterns else all_matching_paths diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index fd801295f4c26b..1a32e5707c735b 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -1130,16 +1130,16 @@ def complex_dir_structure(request, tmpdir): / l1-d1/ l2-d1/ - l3-s1 -> l1-d2 # points to directory above l2-d1 l3-d2/ l4-f1 - l3-s3 -> l1-d1 # cyclic link l3-d4/ l4-f2 + l3-s1 -> l1-d2 # points to directory above l2-d1 + l3-s3 -> l1-d1 # cyclic link l1-d2/ - l2-f1 l2-d2/ l3-f3 + l2-f1 l2-s3 -> l2-d2 l1-s3 -> l3-d4 # a link that "skips" a directory level l1-s4 -> l2-s3 # a link to a link to a dir @@ -1155,7 +1155,7 @@ def complex_dir_structure(request, tmpdir): l3_d2 = l2_d1.join("l3-d2").ensure(dir=True) l3_d4 = l2_d1.join("l3-d4").ensure(dir=True) l1_d2 = tmpdir.join("l1-d2").ensure(dir=True) - l2_d2 = l1_d2.join("l1-d2").ensure(dir=True) + l2_d2 = l1_d2.join("l2-d2").ensure(dir=True) if use_junctions: link_fn = llnl.util.symlink._windows_create_junction @@ -1216,7 +1216,7 @@ def test_find_max_depth_multiple_and_repeated_entry_points(complex_dir_structure def test_multiple_patterns(complex_dir_structure): root, _ = complex_dir_structure - paths = fs.find(root, ["l2-f1", "l*-d*/l3-f3", "*", "*/*"]) + paths = fs.find(root, ["l2-f1", "l*-d*/l3-f3", "*-f*", "*/*-f*"]) # There shouldn't be duplicate results with multiple, overlapping patterns assert len(set(paths)) == len(paths) # All files should be found @@ -1249,15 +1249,3 @@ def test_find_input_types(tmp_path: pathlib.Path): with pytest.raises(TypeError): fs.find(1, "file.txt") # type: ignore - - -def test_find_only_finds_files(tmp_path: pathlib.Path): - """ensure that find only returns files even at max_depth""" - (tmp_path / "subdir").mkdir() - (tmp_path / "subdir" / "dir").mkdir() - (tmp_path / "subdir" / "file.txt").write_text("") - assert ( - fs.find(tmp_path, "*", max_depth=1) - == fs.find(tmp_path, "*/*", max_depth=1) - == [str(tmp_path / "subdir" / "file.txt")] - ) From 6961514122e04f3509c5e4a095060b056c38f5e9 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 10 Nov 2024 16:00:34 -0800 Subject: [PATCH 386/615] imports: move `conditional` to `directives.py` `conditional()`, which defines conditional variant values, and the other ways to declare variant values should probably be in a layer above `spack.variant`. This does the simple thing and moves *just* `conditional()` to `spack.directives` to avoid a circular import. We can revisit the public variant interface later, when we split packages from core. Co-authored-by: Harmen Stoppels Signed-off-by: Todd Gamblin --- lib/spack/spack/directives.py | 10 ++++++++++ lib/spack/spack/package.py | 7 +------ lib/spack/spack/variant.py | 11 ++--------- var/spack/repos/builtin/packages/geant4/package.py | 4 ++-- var/spack/repos/builtin/packages/vecgeom/package.py | 4 ++-- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 8f9e43bf8bfbba..7a3657e2225f5c 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -64,6 +64,7 @@ class OpenMpi(Package): "DirectiveMeta", "DisableRedistribute", "version", + "conditional", "conflicts", "depends_on", "extends", @@ -577,6 +578,15 @@ def _execute_patch(pkg_or_dep: Union["spack.package_base.PackageBase", Dependenc return _execute_patch +def conditional(*values: List[Any], when: Optional[WhenType] = None): + """Conditional values that can be used in variant declarations.""" + # _make_when_spec returns None when the condition is statically false. + when = _make_when_spec(when) + return spack.variant.ConditionalVariantValues( + spack.variant.Value(x, when=when) for x in values + ) + + @directive("variants") def variant( name: str, diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bf8538032ae462..f8028d9ecaf10c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -103,12 +103,7 @@ from spack.spec import InvalidSpecDetected, Spec from spack.util.executable import * from spack.util.filesystem import file_command, fix_darwin_install_name, mime_type -from spack.variant import ( - any_combination_of, - auto_or_any_combination_of, - conditional, - disjoint_sets, -) +from spack.variant import any_combination_of, auto_or_any_combination_of, disjoint_sets from spack.version import Version, ver # These are just here for editor support; they will be replaced when the build env diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index e5a5ddfa3c904a..e5dcf72f36f94f 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -266,7 +266,7 @@ def _flatten(values) -> Collection: flattened: List = [] for item in values: - if isinstance(item, _ConditionalVariantValues): + if isinstance(item, ConditionalVariantValues): flattened.extend(item) else: flattened.append(item) @@ -884,17 +884,10 @@ def prevalidate_variant_value( ) -class _ConditionalVariantValues(lang.TypedMutableSequence): +class ConditionalVariantValues(lang.TypedMutableSequence): """A list, just with a different type""" -def conditional(*values: List[Any], when: Optional["spack.directives.WhenType"] = None): - """Conditional values that can be used in variant declarations.""" - # _make_when_spec returns None when the condition is statically false. - when = spack.directives._make_when_spec(when) - return _ConditionalVariantValues([Value(x, when=when) for x in values]) - - class DuplicateVariantError(error.SpecError): """Raised when the same variant occurs in a spec twice.""" diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index 8dd3f18b5d92b5..38ebb060fb6340 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.variant import _ConditionalVariantValues +from spack.variant import ConditionalVariantValues class Geant4(CMakePackage): @@ -180,7 +180,7 @@ class Geant4(CMakePackage): def std_when(values): for v in values: - if isinstance(v, _ConditionalVariantValues): + if isinstance(v, ConditionalVariantValues): for c in v: yield (c.value, c.when) else: diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index d48585ad13e990..ff0fdd145dc7da 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -5,7 +5,7 @@ from spack.package import * -from spack.variant import _ConditionalVariantValues +from spack.variant import ConditionalVariantValues class Vecgeom(CMakePackage, CudaPackage): @@ -196,7 +196,7 @@ class Vecgeom(CMakePackage, CudaPackage): def std_when(values): for v in values: - if isinstance(v, _ConditionalVariantValues): + if isinstance(v, ConditionalVariantValues): for c in v: yield (c.value, c.when) else: From c4a5a996a54b0e9385c9311aea0efbe6df00de28 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 10 Nov 2024 17:37:36 -0800 Subject: [PATCH 387/615] solver: avoid parsing specs in setup - [x] Get rid of a call to `parser.quote_if_needed()` during solver setup, which introduces a circular import and also isn't necessary. - [x] Rename `spack.variant.Value` to `spack.variant.ConditionalValue`, as it is *only* used for conditional values. This makes it much easier to understand some of the logic for variant definitions. Co-authored-by: Harmen Stoppels Signed-off-by: Todd Gamblin --- lib/spack/spack/audit.py | 4 ++-- lib/spack/spack/directives.py | 2 +- lib/spack/spack/solver/asp.py | 17 +++++++++-------- lib/spack/spack/test/variant.py | 2 +- lib/spack/spack/variant.py | 11 +++++++---- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index dc988ac90edd97..273e335ade03cf 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -714,9 +714,9 @@ def _ensure_env_methods_are_ported_to_builders(pkgs, error_cls): for pkg_name in pkgs: pkg_cls = spack.repo.PATH.get_pkg_class(pkg_name) - # values are either Value objects (for conditional values) or the values themselves + # values are either ConditionalValue objects or the values themselves build_system_names = set( - v.value if isinstance(v, spack.variant.Value) else v + v.value if isinstance(v, spack.variant.ConditionalValue) else v for _, variant in pkg_cls.variant_definitions("build_system") for v in variant.values ) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 7a3657e2225f5c..0d6b66780c8921 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -583,7 +583,7 @@ def conditional(*values: List[Any], when: Optional[WhenType] = None): # _make_when_spec returns None when the condition is statically false. when = _make_when_spec(when) return spack.variant.ConditionalVariantValues( - spack.variant.Value(x, when=when) for x in values + spack.variant.ConditionalValue(x, when=when) for x in values ) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index b723b6bbb22023..24b7aeb4ff17a5 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -1436,14 +1436,13 @@ def define_variant( for value in sorted(values): pkg_fact(fn.variant_possible_value(vid, value)) - # when=True means unconditional, so no need for conditional values - if getattr(value, "when", True) is True: + # we're done here for unconditional values + if not isinstance(value, vt.ConditionalValue): continue - # now we have to handle conditional values - quoted_value = spack.parser.quote_if_needed(str(value)) - vstring = f"{name}={quoted_value}" - variant_has_value = spack.spec.Spec(vstring) + # make a spec indicating whether the variant has this conditional value + variant_has_value = spack.spec.Spec() + variant_has_value.variants[name] = spack.variant.AbstractVariant(name, value.value) if value.when: # the conditional value is always "possible", but it imposes its when condition as @@ -1454,10 +1453,12 @@ def define_variant( imposed_spec=value.when, required_name=pkg.name, imposed_name=pkg.name, - msg=f"{pkg.name} variant {name} has value '{quoted_value}' when {value.when}", + msg=f"{pkg.name} variant {name} has value '{value.value}' when {value.when}", ) else: - # We know the value is never allowed statically (when was false), but we can't just + vstring = f"{name}='{value.value}'" + + # We know the value is never allowed statically (when was None), but we can't just # ignore it b/c it could come in as a possible value and we need a good error msg. # So, it's a conflict -- if the value is somehow used, it'll trigger an error. trigger_id = self.condition( diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index c4c439b86f8991..518110d52534d0 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -762,7 +762,7 @@ def test_disjoint_set_fluent_methods(): @pytest.mark.regression("32694") @pytest.mark.parametrize("other", [True, False]) def test_conditional_value_comparable_to_bool(other): - value = spack.variant.Value("98", when="@1.0") + value = spack.variant.ConditionalValue("98", when=Spec("@1.0")) comparison = value == other assert comparison is False diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index e5dcf72f36f94f..0dc82b2ff7b381 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -775,18 +775,21 @@ def disjoint_sets(*sets): @functools.total_ordering -class Value: - """Conditional value that might be used in variants.""" +class ConditionalValue: + """Conditional value for a variant.""" value: Any - when: Optional["spack.spec.Spec"] # optional b/c we need to know about disabled values + + # optional because statically disabled values (when=False) are set to None + # when=True results in spack.spec.Spec() + when: Optional["spack.spec.Spec"] def __init__(self, value: Any, when: Optional["spack.spec.Spec"]): self.value = value self.when = when def __repr__(self): - return f"Value({self.value}, when={self.when})" + return f"ConditionalValue({self.value}, when={self.when})" def __str__(self): return str(self.value) From 84d33fccce5d4395091b63a2aa8a1ee61ecbc5af Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 11 Nov 2024 13:05:01 +0100 Subject: [PATCH 388/615] llvm: filter clang-ocl from the executables being probed (#47536) This filters any selected executable ending with `-ocl` from the list of executables being probed as candidate for external `llvm` installations. I couldn't reproduce the entire issue, but with a simple script: ``` #!/bin/bash touch foo.o echo "clang version 10.0.0-4ubuntu1 " echo "Target: x86_64-pc-linux-gnu" echo "Thread model: posix" echo "InstalledDir: /usr/bin" exit 0 ``` I noticed the executable was still probed: ``` $ spack -d compiler find /tmp/ocl [ ... ] ==> [2024-11-11-08:38:41.933618] '/tmp/ocl/bin/clang-ocl' '--version' ``` and `foo.o` was left in the working directory. With this change, instead the executable is filtered out of the list on which we run `--version`, so `clang-ocl --version` is not run by Spack. --- var/spack/repos/builtin/packages/llvm/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 208d73f0940533..0dc66b950357cc 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -28,7 +28,7 @@ def filter_detected_exes(cls, prefix, exes_in_prefix): # Executables like lldb-vscode-X are daemon listening on some port and would hang Spack # during detection. clang-cl, clang-cpp, etc. are dev tools that we don't need to test reject = re.compile( - r"-(vscode|cpp|cl|gpu|tidy|rename|scan-deps|format|refactor|offload|" + r"-(vscode|cpp|cl|ocl|gpu|tidy|rename|scan-deps|format|refactor|offload|" r"check|query|doc|move|extdef|apply|reorder|change-namespace|" r"include-fixer|import-test|dap|server)" ) From 01edde35beefb57c44c87eeea5afc759db683c01 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 11 Nov 2024 14:07:08 +0100 Subject: [PATCH 389/615] ut: add 2.1.0 and 2.1.1 (#47538) --- var/spack/repos/builtin/packages/ut/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/ut/package.py b/var/spack/repos/builtin/packages/ut/package.py index fc4add539ccfc8..2cdd96dc99eca6 100644 --- a/var/spack/repos/builtin/packages/ut/package.py +++ b/var/spack/repos/builtin/packages/ut/package.py @@ -18,6 +18,8 @@ class Ut(CMakePackage): license("BSL-1.0") version("master", branch="master") + version("2.1.1", sha256="016ac5ece1808cd1100be72f90da4fa59ea41de487587a3283c6c981381cc216") + version("2.1.0", sha256="1c9c35c039ad3a9795a278447db6da0a4ec1a1d223bf7d64687ad28f673b7ae8") version("2.0.1", sha256="1e43be17045a881c95cedc843d72fe9c1e53239b02ed179c1e39e041ebcd7dad") version("2.0.0", sha256="8b5b11197d1308dfc1fe20efd6a656e0c833dbec2807e2292967f6e2f7c0420f") version("1.1.9", sha256="1a666513157905aa0e53a13fac602b5673dcafb04a869100a85cd3f000c2ed0d") From 8b165c2cfec43659fa33847b538fb8f0c94e3a42 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 07:28:52 -0600 Subject: [PATCH 390/615] py-gosam: add v2.1.2 (#47533) --- var/spack/repos/builtin/packages/py-gosam/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-gosam/package.py b/var/spack/repos/builtin/packages/py-gosam/package.py index fc6eff141da774..c5f5433383e915 100644 --- a/var/spack/repos/builtin/packages/py-gosam/package.py +++ b/var/spack/repos/builtin/packages/py-gosam/package.py @@ -20,6 +20,11 @@ class PyGosam(Package): license("GPL-3.0-only") + version( + "2.1.2", + url="https://github.com/gudrunhe/gosam/releases/download/2.1.2/gosam-2.1.2+c307997.tar.gz", + sha256="53601ab203c3d572764439018f976baff9c83b87abe1fcbbe15c07caf174680c", + ) version( "2.1.1", url="https://github.com/gudrunhe/gosam/releases/download/2.1.1/gosam-2.1.1-4b98559.tar.gz", From 8c962a94b0c2d5ebe8371774966d32fea4a5bbcc Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 08:24:44 -0600 Subject: [PATCH 391/615] vbfnlo: add v3.0; depends on tcsh (build) (#47532) * vbfnlo: depends on tcsh (build) * vbfnlo: add v3.0 * vbfnlo: comment Co-authored-by: Valentin Volkl --------- Co-authored-by: Valentin Volkl --- var/spack/repos/builtin/packages/vbfnlo/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/vbfnlo/package.py b/var/spack/repos/builtin/packages/vbfnlo/package.py index 77648aef6148a0..42abc3245cfcd4 100644 --- a/var/spack/repos/builtin/packages/vbfnlo/package.py +++ b/var/spack/repos/builtin/packages/vbfnlo/package.py @@ -20,6 +20,7 @@ class Vbfnlo(AutotoolsPackage): license("GPL-2.0-only") # The commented out versions exist, but are not tested + version("3.0", sha256="b9df02603e4f801f866360c720191a29afdb958d0bd4369ea7d810e761503e51") version( "3.0.0beta5", sha256="777a3dedb365ea9abc38848a60f30d325da3799cbad69fa308664b94a8c31a90" ) @@ -41,7 +42,6 @@ class Vbfnlo(AutotoolsPackage): depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated - # version('2.7.0', sha256='0e96c0912599e3000fffec5305700b947b604a7b06c7975851503f445311e4ef') # Documentation is broken on some systems: # See https://github.com/vbfnlo/vbfnlo/issues/2 @@ -55,6 +55,8 @@ class Vbfnlo(AutotoolsPackage): depends_on("autoconf", type="build") depends_on("m4", type="build") depends_on("libtool", type="build") + # needed as tcsh is hardcoded in m4/vbfnlo.m4, could be patched out in the future + depends_on("tcsh", type="build") @when("@2.7.1") def setup_build_environment(self, env): From f458392c1b223d628bffe1ce72d7a86118f3fc75 Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Mon, 11 Nov 2024 08:52:20 -0600 Subject: [PATCH 392/615] petsc: use --with-exodusii-dir [as exodus does not have 'libs()' to provide value for --with-exodusii-lib] (#47506) --- var/spack/repos/builtin/packages/petsc/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 0a0d61da856919..918b2e83679969 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -514,6 +514,9 @@ def configure_options(self): else: hdf5libs = ":hl" + if "+exodusii+fortran" in spec and "+fortran" in spec: + options.append("--with-exodusii-fortran-bindings") + # tuple format (spacklibname, petsclibname, useinc, uselib) # default: 'gmp', => ('gmp', 'gmp', True, True) # any other combination needs a full tuple @@ -553,7 +556,7 @@ def configure_options(self): ("parallel-netcdf", "pnetcdf", True, True), ("moab", "moab", False, False), ("random123", "random123", False, False), - "exodusii", + ("exodusii", "exodusii", False, False), "cgns", "memkind", "p4est", From 33dd894eff169b78103fb7bb5e2b6ebe62cd3916 Mon Sep 17 00:00:00 2001 From: v <39996356+vhewes@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:10:09 -0600 Subject: [PATCH 393/615] py-oracledb: add v1.4.2, v2.3.0, v2.4.1 (#47313) the py-oracledb package only has a single outdated version available in its recipe. this PR adds a much broader range of versions and their corresponding checksums. * add more versions of py-oracledb * update py-oracledb recipe * add py-cython version dependencies * tweak py-cython version dependencies * remove older versions of py-oracledb --- .../repos/builtin/packages/py-oracledb/package.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-oracledb/package.py b/var/spack/repos/builtin/packages/py-oracledb/package.py index 3e50ac8da0c8d6..2e690e36be70a4 100644 --- a/var/spack/repos/builtin/packages/py-oracledb/package.py +++ b/var/spack/repos/builtin/packages/py-oracledb/package.py @@ -12,17 +12,23 @@ class PyOracledb(PythonPackage): Python programs to access Oracle Database.""" homepage = "https://oracle.github.io/python-oracledb/" - pypi = "oracledb/oracledb-1.2.2.tar.gz" + pypi = "oracledb/oracledb-1.4.2.tar.gz" license("Apache-2.0") - version("1.2.2", sha256="dd9f63084e44642b484a46b2fcfb4fc921f39facf494a1bab00628fa6409f4fc") + version("2.4.1", sha256="bd5976bef0e466e0f9d1b9f6531fb5b8171dc8534717ccb04b26e680b6c7571d") + version("2.3.0", sha256="b9b0c4ec280b10063e6789bed23ddc2435ae98569ebe64e0b9a270780b9103d5") + version("1.4.2", sha256="e28ed9046f2735dc2dd5bbcdf3667f284e384e0ec7eed3eeb3798fa8a7d47e36") - depends_on("c", type="build") # generated + depends_on("python@3.8:3.13", when="@2.4:") + depends_on("python@3.8:3.12", when="@2.0:2.3") + depends_on("python@3.8:3.11", when="@:1.4") + + depends_on("c", type="build") depends_on("py-setuptools@40.6.0:", type="build") depends_on("py-cryptography@3.2.1:", type=("build", "run")) - depends_on("py-cython", type="build") + depends_on("py-cython@3:", type="build") depends_on("python@3.6:", type=("build", "run")) depends_on("oracle-instant-client", type="run", when="impl=thick") From b803dabb2c28e93c41f62977c65aad385594b8f9 Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:34:39 -0600 Subject: [PATCH 394/615] mirrors: allow username/password as environment variables (#46549) `spack mirror add` and `set` now have flags `--oci-password-variable`, `--oci-password-variable`, `--s3-access-key-id-variable`, `--s3-access-key-secret-variable`, `--s3-access-token-variable`, which allows users to specify an environment variable in which a username or password is stored. Storing plain text passwords in config files is considered deprecated. The schema for mirrors.yaml has changed, notably the `access_pair` list is generally replaced with a dictionary of `{id: ..., secret_variable: ...}` or `{id_variable: ..., secret_variable: ...}`. --- lib/spack/spack/binary_distribution.py | 3 + lib/spack/spack/cmd/common/arguments.py | 48 +++++++-- lib/spack/spack/cmd/mirror.py | 137 ++++++++++++++++++++++-- lib/spack/spack/mirror.py | 112 +++++++++++++++++-- lib/spack/spack/oci/opener.py | 5 +- lib/spack/spack/schema/mirrors.py | 61 ++++++++++- lib/spack/spack/test/cmd/mirror.py | 126 ++++++++++++++++++++-- lib/spack/spack/test/mirror.py | 60 ++++++++++- lib/spack/spack/util/s3.py | 25 ++--- share/spack/spack-completion.bash | 6 +- share/spack/spack-completion.fish | 36 ++++++- 11 files changed, 556 insertions(+), 63 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 2f74f38dac3200..dcc82130e77441 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -1182,6 +1182,9 @@ def __init__(self, mirror: spack.mirror.Mirror, force: bool, update_index: bool) self.tmpdir: str self.executor: concurrent.futures.Executor + # Verify if the mirror meets the requirements to push + self.mirror.ensure_mirror_usable("push") + def __enter__(self): self._tmpdir = tempfile.TemporaryDirectory(dir=spack.stage.get_stage_root()) self._executor = spack.util.parallel.make_concurrent_executor() diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 6a4a43e9e93746..7ddafd4d14c566 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -581,23 +581,51 @@ def add_concretizer_args(subparser): def add_connection_args(subparser, add_help): - subparser.add_argument( - "--s3-access-key-id", help="ID string to use to connect to this S3 mirror" + def add_argument_string_or_variable(parser, arg: str, *, deprecate_str: bool = True, **kwargs): + group = parser.add_mutually_exclusive_group() + group.add_argument(arg, **kwargs) + # Update help string + if "help" in kwargs: + kwargs["help"] = "environment variable containing " + kwargs["help"] + group.add_argument(arg + "-variable", **kwargs) + + s3_connection_parser = subparser.add_argument_group("S3 Connection") + + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-key-id", + help="ID string to use to connect to this S3 mirror", ) - subparser.add_argument( - "--s3-access-key-secret", help="secret string to use to connect to this S3 mirror" + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-key-secret", + help="secret string to use to connect to this S3 mirror", ) - subparser.add_argument( - "--s3-access-token", help="access token to use to connect to this S3 mirror" + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-token", + help="access token to use to connect to this S3 mirror", ) - subparser.add_argument( + s3_connection_parser.add_argument( "--s3-profile", help="S3 profile name to use to connect to this S3 mirror", default=None ) - subparser.add_argument( + s3_connection_parser.add_argument( "--s3-endpoint-url", help="endpoint URL to use to connect to this S3 mirror" ) - subparser.add_argument("--oci-username", help="username to use to connect to this OCI mirror") - subparser.add_argument("--oci-password", help="password to use to connect to this OCI mirror") + + oci_connection_parser = subparser.add_argument_group("OCI Connection") + + add_argument_string_or_variable( + oci_connection_parser, + "--oci-username", + deprecate_str=False, + help="username to use to connect to this OCI mirror", + ) + add_argument_string_or_variable( + oci_connection_parser, + "--oci-password", + help="password to use to connect to this OCI mirror", + ) def use_buildcache(cli_arg_value): diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index af6a45e3990752..ede042949796c0 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -231,31 +231,133 @@ def setup_parser(subparser): ) +def _configure_access_pair( + args, id_tok, id_variable_tok, secret_tok, secret_variable_tok, default=None +): + """Configure the access_pair options""" + + # Check if any of the arguments are set to update this access_pair. + # If none are set, then skip computing the new access pair + args_id = getattr(args, id_tok) + args_id_variable = getattr(args, id_variable_tok) + args_secret = getattr(args, secret_tok) + args_secret_variable = getattr(args, secret_variable_tok) + if not any([args_id, args_id_variable, args_secret, args_secret_variable]): + return None + + def _default_value(id_): + if isinstance(default, list): + return default[0] if id_ == "id" else default[1] + elif isinstance(default, dict): + return default.get(id_) + else: + return None + + def _default_variable(id_): + if isinstance(default, dict): + return default.get(id_ + "_variable") + else: + return None + + id_ = None + id_variable = None + secret = None + secret_variable = None + + # Get the value/default value if the argument of the inverse + if not args_id_variable: + id_ = getattr(args, id_tok) or _default_value("id") + if not args_id: + id_variable = getattr(args, id_variable_tok) or _default_variable("id") + if not args_secret_variable: + secret = getattr(args, secret_tok) or _default_value("secret") + if not args_secret: + secret_variable = getattr(args, secret_variable_tok) or _default_variable("secret") + + if (id_ or id_variable) and (secret or secret_variable): + if secret: + if not id_: + raise SpackError("Cannot add mirror with a variable id and text secret") + + return [id_, secret] + else: + return dict( + [ + (("id", id_) if id_ else ("id_variable", id_variable)), + ("secret_variable", secret_variable), + ] + ) + else: + if id_ or id_variable or secret or secret_variable is not None: + id_arg_tok = id_tok.replace("_", "-") + secret_arg_tok = secret_tok.replace("_", "-") + tty.warn( + "Expected both parts of the access pair to be specified. " + f"(i.e. --{id_arg_tok} and --{secret_arg_tok})" + ) + + return None + + def mirror_add(args): """add a mirror to Spack""" if ( args.s3_access_key_id or args.s3_access_key_secret or args.s3_access_token + or args.s3_access_key_id_variable + or args.s3_access_key_secret_variable + or args.s3_access_token_variable or args.s3_profile or args.s3_endpoint_url or args.type or args.oci_username or args.oci_password + or args.oci_username_variable + or args.oci_password_variable or args.autopush or args.signed is not None ): connection = {"url": args.url} - if args.s3_access_key_id and args.s3_access_key_secret: - connection["access_pair"] = [args.s3_access_key_id, args.s3_access_key_secret] + # S3 Connection + if args.s3_access_key_secret: + tty.warn( + "Configuring mirror secrets as plain text with --s3-access-key-secret is " + "deprecated. Use --s3-access-key-secret-variable instead" + ) + if args.oci_password: + tty.warn( + "Configuring mirror secrets as plain text with --oci-password is deprecated. " + "Use --oci-password-variable instead" + ) + access_pair = _configure_access_pair( + args, + "s3_access_key_id", + "s3_access_key_id_variable", + "s3_access_key_secret", + "s3_access_key_secret_variable", + ) + if access_pair: + connection["access_pair"] = access_pair + if args.s3_access_token: connection["access_token"] = args.s3_access_token + elif args.s3_access_token_variable: + connection["access_token_variable"] = args.s3_access_token_variable + if args.s3_profile: connection["profile"] = args.s3_profile + if args.s3_endpoint_url: connection["endpoint_url"] = args.s3_endpoint_url - if args.oci_username and args.oci_password: - connection["access_pair"] = [args.oci_username, args.oci_password] + + # OCI Connection + access_pair = _configure_access_pair( + args, "oci_username", "oci_username_variable", "oci_password", "oci_password_variable" + ) + if access_pair: + connection["access_pair"] = access_pair + if args.type: connection["binary"] = "binary" in args.type connection["source"] = "source" in args.type @@ -285,16 +387,35 @@ def _configure_mirror(args): changes = {} if args.url: changes["url"] = args.url - if args.s3_access_key_id and args.s3_access_key_secret: - changes["access_pair"] = [args.s3_access_key_id, args.s3_access_key_secret] + + default_access_pair = entry._get_value("access_pair", direction or "fetch") + # TODO: Init access_pair args with the fetch/push/base values in the current mirror state + access_pair = _configure_access_pair( + args, + "s3_access_key_id", + "s3_access_key_id_variable", + "s3_access_key_secret", + "s3_access_key_secret_variable", + default=default_access_pair, + ) + if access_pair: + changes["access_pair"] = access_pair if args.s3_access_token: changes["access_token"] = args.s3_access_token if args.s3_profile: changes["profile"] = args.s3_profile if args.s3_endpoint_url: changes["endpoint_url"] = args.s3_endpoint_url - if args.oci_username and args.oci_password: - changes["access_pair"] = [args.oci_username, args.oci_password] + access_pair = _configure_access_pair( + args, + "oci_username", + "oci_username_variable", + "oci_password", + "oci_password_variable", + default=default_access_pair, + ) + if access_pair: + changes["access_pair"] = access_pair if getattr(args, "signed", None) is not None: changes["signed"] = args.signed if getattr(args, "autopush", None) is not None: diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index b320671361e1b1..328a456fc3cb17 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -18,7 +18,7 @@ import sys import traceback import urllib.parse -from typing import List, Optional, Union +from typing import Any, Dict, Optional, Tuple, Union import llnl.url import llnl.util.symlink @@ -153,8 +153,66 @@ def push_url(self): """Get the valid, canonicalized fetch URL""" return self.get_url("push") + def ensure_mirror_usable(self, direction: str = "push"): + access_pair = self._get_value("access_pair", direction) + access_token_variable = self._get_value("access_token_variable", direction) + + errors = [] + + # Verify that the credentials that are variables expand + if access_pair and isinstance(access_pair, dict): + if "id_variable" in access_pair and access_pair["id_variable"] not in os.environ: + errors.append(f"id_variable {access_pair['id_variable']} not set in environment") + if "secret_variable" in access_pair: + if access_pair["secret_variable"] not in os.environ: + errors.append( + f"environment variable `{access_pair['secret_variable']}` " + "(secret_variable) not set" + ) + + if access_token_variable: + if access_token_variable not in os.environ: + errors.append( + f"environment variable `{access_pair['access_token_variable']}` " + "(access_token_variable) not set" + ) + + if errors: + msg = f"invalid {direction} configuration for mirror {self.name}: " + msg += "\n ".join(errors) + raise spack.mirror.MirrorError(msg) + def _update_connection_dict(self, current_data: dict, new_data: dict, top_level: bool): - keys = ["url", "access_pair", "access_token", "profile", "endpoint_url"] + # Only allow one to exist in the config + if "access_token" in current_data and "access_token_variable" in new_data: + current_data.pop("access_token") + elif "access_token_variable" in current_data and "access_token" in new_data: + current_data.pop("access_token_variable") + + # If updating to a new access_pair that is the deprecated list, warn + warn_deprecated_access_pair = False + if "access_pair" in new_data: + warn_deprecated_access_pair = isinstance(new_data["access_pair"], list) + # If the not updating the current access_pair, and it is the deprecated list, warn + elif "access_pair" in current_data: + warn_deprecated_access_pair = isinstance(current_data["access_pair"], list) + + if warn_deprecated_access_pair: + tty.warn( + f"in mirror {self.name}: support for plain text secrets in config files " + "(access_pair: [id, secret]) is deprecated and will be removed in a future Spack " + "version. Use environment variables instead (access_pair: " + "{id: ..., secret_variable: ...})" + ) + + keys = [ + "url", + "access_pair", + "access_token", + "access_token_variable", + "profile", + "endpoint_url", + ] if top_level: keys += ["binary", "source", "signed", "autopush"] changed = False @@ -270,11 +328,53 @@ def get_url(self, direction: str) -> str: return _url_or_path_to_url(url) - def get_access_token(self, direction: str) -> Optional[str]: - return self._get_value("access_token", direction) + def get_credentials(self, direction: str) -> Dict[str, Any]: + """Get the mirror credentials from the mirror config + + Args: + direction: fetch or push mirror config + + Returns: + Dictionary from credential type string to value - def get_access_pair(self, direction: str) -> Optional[List]: - return self._get_value("access_pair", direction) + Credential Type Map: + access_token -> str + access_pair -> tuple(str,str) + profile -> str + """ + creddict: Dict[str, Any] = {} + access_token = self.get_access_token(direction) + if access_token: + creddict["access_token"] = access_token + + access_pair = self.get_access_pair(direction) + if access_pair: + creddict.update({"access_pair": access_pair}) + + profile = self.get_profile(direction) + if profile: + creddict["profile"] = profile + + return creddict + + def get_access_token(self, direction: str) -> Optional[str]: + tok = self._get_value("access_token_variable", direction) + if tok: + return os.environ.get(tok) + else: + return self._get_value("access_token", direction) + return None + + def get_access_pair(self, direction: str) -> Optional[Tuple[str, str]]: + pair = self._get_value("access_pair", direction) + if isinstance(pair, (tuple, list)) and len(pair) == 2: + return (pair[0], pair[1]) if all(pair) else None + elif isinstance(pair, dict): + id_ = os.environ.get(pair["id_variable"]) if "id_variable" in pair else pair["id"] + secret = os.environ.get(pair["secret_variable"]) + return (id_, secret) if id_ and secret else None + else: + return None def get_profile(self, direction: str) -> Optional[str]: return self._get_value("profile", direction) diff --git a/lib/spack/spack/oci/opener.py b/lib/spack/spack/oci/opener.py index 906d5d2b92c60b..2f9e83f5be1619 100644 --- a/lib/spack/spack/oci/opener.py +++ b/lib/spack/spack/oci/opener.py @@ -377,9 +377,10 @@ def credentials_from_mirrors( # Prefer push credentials over fetch. Unlikely that those are different # but our config format allows it. for direction in ("push", "fetch"): - pair = mirror.get_access_pair(direction) - if pair is None: + pair = mirror.get_credentials(direction).get("access_pair") + if not pair: continue + url = mirror.get_url(direction) if not url.startswith("oci://"): continue diff --git a/lib/spack/spack/schema/mirrors.py b/lib/spack/spack/schema/mirrors.py index 9a56f1a7e28415..8a61fd5b5344fe 100644 --- a/lib/spack/spack/schema/mirrors.py +++ b/lib/spack/spack/schema/mirrors.py @@ -15,14 +15,42 @@ "url": {"type": "string"}, # todo: replace this with named keys "username" / "password" or "id" / "secret" "access_pair": { - "type": "array", - "items": {"type": ["string", "null"], "minItems": 2, "maxItems": 2}, + "oneOf": [ + { + "type": "array", + "items": {"minItems": 2, "maxItems": 2, "type": ["string", "null"]}, + }, # deprecated + { + "type": "object", + "required": ["secret_variable"], + # Only allow id or id_variable to be set, not both + "oneOf": [{"required": ["id"]}, {"required": ["id_variable"]}], + "properties": { + "id": {"type": "string"}, + "id_variable": {"type": "string"}, + "secret_variable": {"type": "string"}, + }, + }, + ] }, - "access_token": {"type": ["string", "null"]}, "profile": {"type": ["string", "null"]}, "endpoint_url": {"type": ["string", "null"]}, + "access_token": {"type": ["string", "null"]}, # deprecated + "access_token_variable": {"type": ["string", "null"]}, } +connection_ext = { + "deprecatedProperties": [ + { + "names": ["access_token"], + "message": "Use of plain text `access_token` in mirror config is deprecated, use " + "environment variables instead (access_token_variable)", + "error": False, + } + ] +} + + #: Mirror connection inside pull/push keys fetch_and_push = { "anyOf": [ @@ -31,6 +59,7 @@ "type": "object", "additionalProperties": False, "properties": {**connection}, # type: ignore + **connection_ext, # type: ignore }, ] } @@ -49,6 +78,7 @@ "autopush": {"type": "boolean"}, **connection, # type: ignore }, + **connection_ext, # type: ignore } #: Properties for inclusion in other schemas @@ -70,3 +100,28 @@ "additionalProperties": False, "properties": properties, } + + +def update(data): + import jsonschema + + errors = [] + + def check_access_pair(name, section): + if not section or not isinstance(section, dict): + return + + if "access_token" in section and "access_token_variable" in section: + errors.append( + f'{name}: mirror credential "access_token" conflicts with "access_token_variable"' + ) + + # Check all of the sections + for name, section in data.items(): + check_access_pair(name, section) + if isinstance(section, dict): + check_access_pair(name, section.get("fetch")) + check_access_pair(name, section.get("push")) + + if errors: + raise jsonschema.ValidationError("\n".join(errors)) diff --git a/lib/spack/spack/test/cmd/mirror.py b/lib/spack/spack/test/cmd/mirror.py index 2a67bc2e1432ed..ee827c05547e8d 100644 --- a/lib/spack/spack/test/cmd/mirror.py +++ b/lib/spack/spack/test/cmd/mirror.py @@ -17,6 +17,7 @@ import spack.version from spack.main import SpackCommand, SpackCommandError +config = SpackCommand("config") mirror = SpackCommand("mirror") env = SpackCommand("env") add = SpackCommand("add") @@ -181,20 +182,122 @@ def test_mirror_crud(mutable_config, capsys): output = mirror("remove", "mirror") assert "Removed mirror" in output - # Test S3 connection info id/key - mirror( - "add", - "--s3-access-key-id", - "foo", - "--s3-access-key-secret", - "bar", - "mirror", - "s3://spack-public", - ) + # Test S3 connection info token as variable + mirror("add", "--s3-access-token-variable", "aaaaaazzzzz", "mirror", "s3://spack-public") output = mirror("remove", "mirror") assert "Removed mirror" in output + def do_add_set_seturl_access_pair( + id_arg, secret_arg, mirror_name="mirror", mirror_url="s3://spack-public" + ): + # Test S3 connection info id/key + output = mirror("add", id_arg, "foo", secret_arg, "bar", mirror_name, mirror_url) + if "variable" not in secret_arg: + assert ( + f"Configuring mirror secrets as plain text with {secret_arg} is deprecated. " + in output + ) + + output = config("blame", "mirrors") + assert all([x in output for x in ("foo", "bar", mirror_name, mirror_url)]) + # Mirror access_pair deprecation warning should not be in blame output + assert "support for plain text secrets" not in output + + output = mirror("set", id_arg, "foo_set", secret_arg, "bar_set", mirror_name) + if "variable" not in secret_arg: + assert "support for plain text secrets" in output + output = config("blame", "mirrors") + assert all([x in output for x in ("foo_set", "bar_set", mirror_name, mirror_url)]) + if "variable" not in secret_arg: + output = mirror( + "set", id_arg, "foo_set", secret_arg + "-variable", "bar_set_var", mirror_name + ) + assert "support for plain text secrets" not in output + output = config("blame", "mirrors") + assert all( + [x in output for x in ("foo_set", "bar_set_var", mirror_name, mirror_url)] + ) + + output = mirror( + "set-url", + id_arg, + "foo_set_url", + secret_arg, + "bar_set_url", + "--push", + mirror_name, + mirror_url + "-push", + ) + output = config("blame", "mirrors") + assert all( + [ + x in output + for x in ("foo_set_url", "bar_set_url", mirror_name, mirror_url + "-push") + ] + ) + + output = mirror("set", id_arg, "a", mirror_name) + assert "No changes made to mirror" not in output + + output = mirror("set", secret_arg, "b", mirror_name) + assert "No changes made to mirror" not in output + + output = mirror("set-url", id_arg, "c", mirror_name, mirror_url) + assert "No changes made to mirror" not in output + + output = mirror("set-url", secret_arg, "d", mirror_name, mirror_url) + assert "No changes made to mirror" not in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("add", id_arg, "foo", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set-url", id_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set", id_arg, "bar", mirror_name) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("add", secret_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set-url", secret_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set", secret_arg, "bar", mirror_name) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("list") + assert "No mirrors configured" in output + + do_add_set_seturl_access_pair("--s3-access-key-id", "--s3-access-key-secret") + do_add_set_seturl_access_pair("--s3-access-key-id", "--s3-access-key-secret-variable") + do_add_set_seturl_access_pair( + "--s3-access-key-id-variable", "--s3-access-key-secret-variable" + ) + with pytest.raises( + spack.error.SpackError, match="Cannot add mirror with a variable id and text secret" + ): + do_add_set_seturl_access_pair("--s3-access-key-id-variable", "--s3-access-key-secret") + + # Test OCI connection info user/password + do_add_set_seturl_access_pair("--oci-username", "--oci-password") + do_add_set_seturl_access_pair("--oci-username", "--oci-password-variable") + do_add_set_seturl_access_pair("--oci-username-variable", "--oci-password-variable") + with pytest.raises( + spack.error.SpackError, match="Cannot add mirror with a variable id and text secret" + ): + do_add_set_seturl_access_pair("--s3-access-key-id-variable", "--s3-access-key-secret") + # Test S3 connection info with endpoint URL mirror( "add", @@ -218,6 +321,9 @@ def test_mirror_crud(mutable_config, capsys): output = mirror("remove", "mirror") assert "Removed mirror" in output + output = mirror("list") + assert "No mirrors configured" in output + def test_mirror_nonexisting(mutable_config): with pytest.raises(SpackCommandError): diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index b62d5a3e41c787..ce104259fc76ca 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -329,9 +329,9 @@ def test_update_4(): @pytest.mark.parametrize("direction", ["fetch", "push"]) -def test_update_connection_params(direction): +def test_update_connection_params(direction, tmpdir, monkeypatch): """Test whether new connection params expand the mirror config to a dict.""" - m = spack.mirror.Mirror("https://example.com") + m = spack.mirror.Mirror("https://example.com", "example") assert m.update( { @@ -354,12 +354,64 @@ def test_update_connection_params(direction): "endpoint_url": "https://example.com", }, } - - assert m.get_access_pair(direction) == ["username", "password"] + assert m.get_access_pair(direction) == ("username", "password") assert m.get_access_token(direction) == "token" assert m.get_profile(direction) == "profile" assert m.get_endpoint_url(direction) == "https://example.com" + # Expand environment variables + os.environ["_SPACK_TEST_PAIR_USERNAME"] = "expanded_username" + os.environ["_SPACK_TEST_PAIR_PASSWORD"] = "expanded_password" + os.environ["_SPACK_TEST_TOKEN"] = "expanded_token" + + assert m.update( + { + "access_pair": { + "id_variable": "_SPACK_TEST_PAIR_USERNAME", + "secret_variable": "_SPACK_TEST_PAIR_PASSWORD", + } + }, + direction, + ) + + assert m.to_dict() == { + "url": "https://example.com", + direction: { + "url": "http://example.org", + "access_pair": { + "id_variable": "_SPACK_TEST_PAIR_USERNAME", + "secret_variable": "_SPACK_TEST_PAIR_PASSWORD", + }, + "access_token": "token", + "profile": "profile", + "endpoint_url": "https://example.com", + }, + } + + assert m.get_access_pair(direction) == ("expanded_username", "expanded_password") + + assert m.update( + { + "access_pair": {"id": "username", "secret_variable": "_SPACK_TEST_PAIR_PASSWORD"}, + "access_token_variable": "_SPACK_TEST_TOKEN", + }, + direction, + ) + + assert m.to_dict() == { + "url": "https://example.com", + direction: { + "url": "http://example.org", + "access_pair": {"id": "username", "secret_variable": "_SPACK_TEST_PAIR_PASSWORD"}, + "access_token_variable": "_SPACK_TEST_TOKEN", + "profile": "profile", + "endpoint_url": "https://example.com", + }, + } + + assert m.get_access_pair(direction) == ("username", "expanded_password") + assert m.get_access_token(direction) == "expanded_token" + def test_mirror_name_or_url_dir_parsing(tmp_path): curdir = tmp_path / "mirror" diff --git a/lib/spack/spack/util/s3.py b/lib/spack/spack/util/s3.py index 5457abdca58453..700db07135704c 100644 --- a/lib/spack/spack/util/s3.py +++ b/lib/spack/spack/util/s3.py @@ -94,20 +94,17 @@ def get_mirror_s3_connection_info(mirror, method): # access token if isinstance(mirror, Mirror): - access_token = mirror.get_access_token(method) - if access_token: - s3_connection["aws_session_token"] = access_token - - # access pair - access_pair = mirror.get_access_pair(method) - if access_pair and access_pair[0] and access_pair[1]: - s3_connection["aws_access_key_id"] = access_pair[0] - s3_connection["aws_secret_access_key"] = access_pair[1] - - # profile - profile = mirror.get_profile(method) - if profile: - s3_connection["profile_name"] = profile + credentials = mirror.get_credentials(method) + if credentials: + if "access_token" in credentials: + s3_connection["aws_session_token"] = credentials["access_token"] + + if "access_pair" in credentials: + s3_connection["aws_access_key_id"] = credentials["access_pair"][0] + s3_connection["aws_secret_access_key"] = credentials["access_pair"][1] + + if "profile" in credentials: + s3_connection["profile_name"] = credentials["profile"] # endpoint url endpoint_url = mirror.get_endpoint_url(method) or os.environ.get("S3_ENDPOINT_URL") diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 8946bf1dcc888d..706fb7e2d59348 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1455,7 +1455,7 @@ _spack_mirror_destroy() { _spack_mirror_add() { if $list_options then - SPACK_COMPREPLY="-h --help --scope --type --autopush --unsigned --signed --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --scope --type --autopush --unsigned --signed --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi @@ -1482,7 +1482,7 @@ _spack_mirror_rm() { _spack_mirror_set_url() { if $list_options then - SPACK_COMPREPLY="-h --help --push --fetch --scope --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --push --fetch --scope --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi @@ -1491,7 +1491,7 @@ _spack_mirror_set_url() { _spack_mirror_set() { if $list_options then - SPACK_COMPREPLY="-h --help --push --fetch --type --url --autopush --no-autopush --unsigned --signed --scope --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --push --fetch --type --url --autopush --no-autopush --unsigned --signed --scope --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 17b7cd42e46f34..52153f01c0e05e 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -2295,7 +2295,7 @@ complete -c spack -n '__fish_spack_using_command mirror destroy' -l mirror-url - complete -c spack -n '__fish_spack_using_command mirror destroy' -l mirror-url -r -d 'find mirror to destroy by url' # spack mirror add -set -g __fish_spack_optspecs_spack_mirror_add h/help scope= type= autopush unsigned signed s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_add h/help scope= type= autopush unsigned signed s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror add' -f complete -c spack -n '__fish_spack_using_command mirror add' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror add' -s h -l help -d 'show this help message and exit' @@ -2311,18 +2311,28 @@ complete -c spack -n '__fish_spack_using_command mirror add' -l signed -f -a sig complete -c spack -n '__fish_spack_using_command mirror add' -l signed -d 'require signing and signature verification when pushing and installing from this build cache' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror add' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror add' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror remove set -g __fish_spack_optspecs_spack_mirror_remove h/help scope= @@ -2341,7 +2351,7 @@ complete -c spack -n '__fish_spack_using_command mirror rm' -l scope -r -f -a '_ complete -c spack -n '__fish_spack_using_command mirror rm' -l scope -r -d 'configuration scope to modify' # spack mirror set-url -set -g __fish_spack_optspecs_spack_mirror_set_url h/help push fetch scope= s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_set_url h/help push fetch scope= s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror set-url' -f -a '(__fish_spack_mirrors)' complete -c spack -n '__fish_spack_using_command mirror set-url' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror set-url' -s h -l help -d 'show this help message and exit' @@ -2353,21 +2363,31 @@ complete -c spack -n '__fish_spack_using_command mirror set-url' -l scope -r -f complete -c spack -n '__fish_spack_using_command mirror set-url' -l scope -r -d 'configuration scope to modify' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror set -set -g __fish_spack_optspecs_spack_mirror_set h/help push fetch type= url= autopush no-autopush unsigned signed scope= s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_set h/help push fetch type= url= autopush no-autopush unsigned signed scope= s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror set' -f -a '(__fish_spack_mirrors)' complete -c spack -n '__fish_spack_using_command mirror set' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror set' -s h -l help -d 'show this help message and exit' @@ -2391,18 +2411,28 @@ complete -c spack -n '__fish_spack_using_command mirror set' -l scope -r -f -a ' complete -c spack -n '__fish_spack_using_command mirror set' -l scope -r -d 'configuration scope to modify' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror set' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror set' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror list set -g __fish_spack_optspecs_spack_mirror_list h/help scope= From 3b423a67a29d266cd1722b86a4420126b443811e Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Mon, 11 Nov 2024 11:18:03 -0600 Subject: [PATCH 395/615] butterflypack: add v3.2.0, strumpack: add v8.0.0 (#47462) * butterflypack: add v3.2.0 * strumpack: add v8.0.0 * restrict fj patch to @1.2.0 * Update var/spack/repos/builtin/packages/butterflypack/package.py Co-authored-by: Wouter Deconinck --------- Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/butterflypack/package.py | 7 ++++--- var/spack/repos/builtin/packages/strumpack/package.py | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/butterflypack/package.py b/var/spack/repos/builtin/packages/butterflypack/package.py index 7fc6cbd77b9648..c36d1d3a4bd08d 100644 --- a/var/spack/repos/builtin/packages/butterflypack/package.py +++ b/var/spack/repos/builtin/packages/butterflypack/package.py @@ -28,6 +28,7 @@ class Butterflypack(CMakePackage): license("BSD-3-Clause-LBNL") version("master", branch="master") + version("3.2.0", sha256="0f1570947f0a7c0e130bbec3abbb2fa275ae453dc3f428e7a3a2265fecafe1ae") version("2.4.0", sha256="12d04e7101b2c8292b5c62d9f42b5cd1e8a3c5af639d2665596e3e4255fd0804") version("2.2.2", sha256="73f67073e4291877f1eee19483a8a7b3c761eaf79a75805d52105ceedead85ea") version("2.2.1", sha256="4cedc2896a6b368773ce4f9003aa2c0230baf56a4464a6b899a155e01406a232") @@ -61,9 +62,9 @@ class Butterflypack(CMakePackage): # https://github.com/spack/spack/issues/31818 patch("qopenmp-for-oneapi.patch", when="@2.1.1 %oneapi") - patch("longline.patch", when="%fj") - patch("fjfortran.patch", when="%fj") - patch("isnan.patch", when="%fj") + patch("longline.patch", when="@1.2.0 %fj") + patch("fjfortran.patch", when="@1.2.0 %fj") + patch("isnan.patch", when="@1.2.0 %fj") def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index cb1428dcff8a0b..fc600ac42e634b 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -36,6 +36,7 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause-LBNL") version("master", branch="master") + version("8.0.0", sha256="11cc8645d622a16510b39a20efc64f34862b41976152d17f9fbf3e91f899766c") version("7.2.0", sha256="6988c00c3213f13e53d75fb474102358f4fecf07a4b4304b7123d86fdc784639") version("7.1.3", sha256="c951f38ee7af20da3ff46429e38fcebd57fb6f12619b2c56040d6da5096abcb0") version("7.1.2", sha256="262a0193fa1682d0eaa90363f739e0be7a778d5deeb80e4d4ae12446082a39cc") @@ -86,9 +87,11 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): depends_on("parmetis", when="+parmetis") depends_on("scotch~metis", when="+scotch") depends_on("scotch~metis+mpi", when="+scotch+mpi") + depends_on("scotch@7.0.4:", when="@8.0.0: +scotch") depends_on("butterflypack@1.1.0", when="@3.3.0:3.9 +butterflypack+mpi") depends_on("butterflypack@1.2.0:", when="@4.0.0: +butterflypack+mpi") depends_on("butterflypack@2.1.0:", when="@6.3.0: +butterflypack+mpi") + depends_on("butterflypack@3.2.0:", when="@8.0.0: +butterflypack+mpi") depends_on("cuda", when="@4.0.0: +cuda") depends_on("zfp@0.5.5", when="@:7.0.1 +zfp") depends_on("zfp", when="@7.0.2: +zfp") From 4eb7b998e842e3f3deb4ff73391128e7e75099ad Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 11 Nov 2024 19:01:24 +0100 Subject: [PATCH 396/615] Move concretization tests to the same folder (#47539) * Move concretization tests to the same folder Signed-off-by: Massimiliano Culpo * Fix for clingo-cffi --------- Signed-off-by: Massimiliano Culpo --- .github/workflows/unit_tests.yaml | 2 +- .../compiler_runtimes.py} | 0 lib/spack/spack/test/{concretize.py => concretization/core.py} | 0 .../test/{concretize_errors.py => concretization/errors.py} | 0 lib/spack/spack/test/{ => concretization}/flag_mixing.py | 0 .../preferences.py} | 0 .../requirements.py} | 0 7 files changed, 1 insertion(+), 1 deletion(-) rename lib/spack/spack/test/{concretize_compiler_runtimes.py => concretization/compiler_runtimes.py} (100%) rename lib/spack/spack/test/{concretize.py => concretization/core.py} (100%) rename lib/spack/spack/test/{concretize_errors.py => concretization/errors.py} (100%) rename lib/spack/spack/test/{ => concretization}/flag_mixing.py (100%) rename lib/spack/spack/test/{concretize_preferences.py => concretization/preferences.py} (100%) rename lib/spack/spack/test/{concretize_requirements.py => concretization/requirements.py} (100%) diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 58525d405ce020..72184b7fbf90fa 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -174,7 +174,7 @@ jobs: spack bootstrap disable github-actions-v0.6 spack bootstrap status spack solve zlib - spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretize.py + spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretization/core.py - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 with: name: coverage-clingo-cffi diff --git a/lib/spack/spack/test/concretize_compiler_runtimes.py b/lib/spack/spack/test/concretization/compiler_runtimes.py similarity index 100% rename from lib/spack/spack/test/concretize_compiler_runtimes.py rename to lib/spack/spack/test/concretization/compiler_runtimes.py diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretization/core.py similarity index 100% rename from lib/spack/spack/test/concretize.py rename to lib/spack/spack/test/concretization/core.py diff --git a/lib/spack/spack/test/concretize_errors.py b/lib/spack/spack/test/concretization/errors.py similarity index 100% rename from lib/spack/spack/test/concretize_errors.py rename to lib/spack/spack/test/concretization/errors.py diff --git a/lib/spack/spack/test/flag_mixing.py b/lib/spack/spack/test/concretization/flag_mixing.py similarity index 100% rename from lib/spack/spack/test/flag_mixing.py rename to lib/spack/spack/test/concretization/flag_mixing.py diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretization/preferences.py similarity index 100% rename from lib/spack/spack/test/concretize_preferences.py rename to lib/spack/spack/test/concretization/preferences.py diff --git a/lib/spack/spack/test/concretize_requirements.py b/lib/spack/spack/test/concretization/requirements.py similarity index 100% rename from lib/spack/spack/test/concretize_requirements.py rename to lib/spack/spack/test/concretization/requirements.py From 9ed5e1de8e81eff9fb2d746305d146d5c4cd64f5 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Mon, 11 Nov 2024 10:13:31 -0800 Subject: [PATCH 397/615] Bugfix: `spack find -x` in environments (#46798) This addresses part [1] of #46345 #44713 introduced a bug where all non-spec query parameters like date ranges, -x, etc. were ignored when an env was active. This fixes that issue and adds tests for it. --------- Co-authored-by: Harmen Stoppels --- lib/spack/spack/cmd/__init__.py | 12 ++ lib/spack/spack/cmd/find.py | 90 +++++++++------ lib/spack/spack/cmd/modules/__init__.py | 13 +-- lib/spack/spack/test/cmd/find.py | 140 ++++++++++++++++++++++++ lib/spack/spack/test/utilities.py | 32 ++++++ 5 files changed, 242 insertions(+), 45 deletions(-) create mode 100644 lib/spack/spack/test/utilities.py diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index e9df5fc18955b8..c0efd5252153e7 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -545,6 +545,18 @@ def __init__(self, name): super().__init__("{0} is not a permissible Spack command name.".format(name)) +class MultipleSpecsMatch(Exception): + """Raised when multiple specs match a constraint, in a context where + this is not allowed. + """ + + +class NoSpecMatches(Exception): + """Raised when no spec matches a constraint, in a context where + this is not allowed. + """ + + ######################################## # argparse types for argument validation ######################################## diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 079c5bf4d31913..c6930097ac3ad1 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -222,11 +222,9 @@ def decorator(spec, fmt): def display_env(env, args, decorator, results): """Display extra find output when running in an environment. - Find in an environment outputs 2 or 3 sections: - - 1. Root specs - 2. Concretized roots (if asked for with -c) - 3. Installed specs + In an environment, `spack find` outputs a preliminary section + showing the root specs of the environment (this is in addition + to the section listing out specs matching the query parameters). """ tty.msg("In environment %s" % env.name) @@ -299,42 +297,70 @@ def root_decorator(spec, string): print() -def find(parser, args): - env = ev.active_environment() - - if not env and args.only_roots: - tty.die("-r / --only-roots requires an active environment") - if not env and args.show_concretized: - tty.die("-c / --show-concretized requires an active environment") - +def _find_query(args, env): + q_args = query_arguments(args) + concretized_but_not_installed = list() if env: + all_env_specs = env.all_specs() if args.constraint: - init_specs = spack.cmd.parse_specs(args.constraint) - results = env.all_matching_specs(*init_specs) + init_specs = cmd.parse_specs(args.constraint) + env_specs = env.all_matching_specs(*init_specs) else: - results = env.all_specs() + env_specs = all_env_specs + + spec_hashes = set(x.dag_hash() for x in env_specs) + specs_meeting_q_args = set(spack.store.STORE.db.query(hashes=spec_hashes, **q_args)) + + results = list() + with spack.store.STORE.db.read_transaction(): + for spec in env_specs: + if not spec.installed: + concretized_but_not_installed.append(spec) + if spec in specs_meeting_q_args: + results.append(spec) else: - q_args = query_arguments(args) results = args.specs(**q_args) - decorator = make_env_decorator(env) if env else lambda s, f: f - # use groups by default except with format. if args.groups is None: args.groups = not args.format # Exit early with an error code if no package matches the constraint - if not results and args.constraint: - constraint_str = " ".join(str(s) for s in args.constraint_specs) - tty.die(f"No package matches the query: {constraint_str}") + if concretized_but_not_installed and args.show_concretized: + pass + elif results: + pass + elif args.constraint: + raise cmd.NoSpecMatches() # If tags have been specified on the command line, filter by tags if args.tags: packages_with_tags = spack.repo.PATH.packages_with_tags(*args.tags) results = [x for x in results if x.name in packages_with_tags] + concretized_but_not_installed = [ + x for x in concretized_but_not_installed if x.name in packages_with_tags + ] if args.loaded: - results = spack.cmd.filter_loaded_specs(results) + results = cmd.filter_loaded_specs(results) + + return results, concretized_but_not_installed + + +def find(parser, args): + env = ev.active_environment() + + if not env and args.only_roots: + tty.die("-r / --only-roots requires an active environment") + if not env and args.show_concretized: + tty.die("-c / --show-concretized requires an active environment") + + try: + results, concretized_but_not_installed = _find_query(args, env) + except cmd.NoSpecMatches: + # Note: this uses args.constraint vs. args.constraint_specs because + # the latter only exists if you call args.specs() + tty.die(f"No package matches the query: {' '.join(args.constraint)}") if args.install_status or args.show_concretized: status_fn = spack.spec.Spec.install_status @@ -345,14 +371,16 @@ def find(parser, args): if args.json: cmd.display_specs_as_json(results, deps=args.deps) else: + decorator = make_env_decorator(env) if env else lambda s, f: f + if not args.format: if env: display_env(env, args, decorator, results) if not args.only_roots: - display_results = results - if not args.show_concretized: - display_results = list(x for x in results if x.installed) + display_results = list(results) + if args.show_concretized: + display_results += concretized_but_not_installed cmd.display_specs( display_results, args, decorator=decorator, all_headers=True, status_fn=status_fn ) @@ -370,13 +398,9 @@ def find(parser, args): concretized_suffix += " (show with `spack find -c`)" pkg_type = "loaded" if args.loaded else "installed" - spack.cmd.print_how_many_pkgs( - list(x for x in results if x.installed), pkg_type, suffix=installed_suffix - ) + cmd.print_how_many_pkgs(results, pkg_type, suffix=installed_suffix) if env: - spack.cmd.print_how_many_pkgs( - list(x for x in results if not x.installed), - "concretized", - suffix=concretized_suffix, + cmd.print_how_many_pkgs( + concretized_but_not_installed, "concretized", suffix=concretized_suffix ) diff --git a/lib/spack/spack/cmd/modules/__init__.py b/lib/spack/spack/cmd/modules/__init__.py index 754813addcdc24..013f4723dba05f 100644 --- a/lib/spack/spack/cmd/modules/__init__.py +++ b/lib/spack/spack/cmd/modules/__init__.py @@ -19,6 +19,7 @@ import spack.modules import spack.modules.common import spack.repo +from spack.cmd import MultipleSpecsMatch, NoSpecMatches from spack.cmd.common import arguments description = "manipulate module files" @@ -91,18 +92,6 @@ def add_loads_arguments(subparser): arguments.add_common_arguments(subparser, ["recurse_dependencies"]) -class MultipleSpecsMatch(Exception): - """Raised when multiple specs match a constraint, in a context where - this is not allowed. - """ - - -class NoSpecMatches(Exception): - """Raised when no spec matches a constraint, in a context where - this is not allowed. - """ - - def one_spec_or_raise(specs): """Ensures exactly one spec has been selected, or raises the appropriate exception. diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index d947362f185ae6..779c6a942f0f21 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -14,10 +14,13 @@ import spack.cmd as cmd import spack.cmd.find import spack.environment as ev +import spack.repo import spack.store import spack.user_environment as uenv from spack.main import SpackCommand from spack.spec import Spec +from spack.test.conftest import create_test_repo +from spack.test.utilities import SpackCommandArgs from spack.util.pattern import Bunch find = SpackCommand("find") @@ -453,3 +456,140 @@ def test_environment_with_version_range_in_compiler_doesnt_fail(tmp_path): with test_environment: output = find() assert "zlib%gcc@12.1.0" in output + + +_pkga = ( + "a0", + """\ +class A0(Package): + version("1.2") + version("1.1") + + depends_on("b0") + depends_on("c0") +""", +) + + +_pkgb = ( + "b0", + """\ +class B0(Package): + version("1.2") + version("1.1") +""", +) + + +_pkgc = ( + "c0", + """\ +class C0(Package): + version("1.2") + version("1.1") + + tags = ["tag0", "tag1"] +""", +) + + +_pkgd = ( + "d0", + """\ +class D0(Package): + version("1.2") + version("1.1") + + depends_on("c0") + depends_on("e0") +""", +) + + +_pkge = ( + "e0", + """\ +class E0(Package): + tags = ["tag1", "tag2"] + + version("1.2") + version("1.1") +""", +) + + +@pytest.fixture +def _create_test_repo(tmpdir, mutable_config): + r""" + a0 d0 + / \ / \ + b0 c0 e0 + """ + yield create_test_repo(tmpdir, [_pkga, _pkgb, _pkgc, _pkgd, _pkge]) + + +@pytest.fixture +def test_repo(_create_test_repo, monkeypatch, mock_stage): + with spack.repo.use_repositories(_create_test_repo) as mock_repo_path: + yield mock_repo_path + + +def test_find_concretized_not_installed( + mutable_mock_env_path, install_mockery, mock_fetch, test_repo, mock_archive +): + """Test queries against installs of specs against fake repo. + + Given A, B, C, D, E, create an environment and install A. + Add and concretize (but do not install) D. + Test a few queries after force uninstalling a dependency of A (but not + A itself). + """ + add = SpackCommand("add") + concretize = SpackCommand("concretize") + uninstall = SpackCommand("uninstall") + + def _query(_e, *args): + return spack.cmd.find._find_query(SpackCommandArgs("find")(*args), _e) + + def _nresults(_qresult): + return len(_qresult[0]), len(_qresult[1]) + + env("create", "test") + with ev.read("test") as e: + install("--fake", "--add", "a0") + + assert _nresults(_query(e)) == (3, 0) + assert _nresults(_query(e, "--explicit")) == (1, 0) + + add("d0") + concretize("--reuse") + + # At this point d0 should use existing c0, but d/e + # are not installed in the env + + # --explicit, --deprecated, --start-date, etc. are all + # filters on records, and therefore don't apply to + # concretized-but-not-installed results + assert _nresults(_query(e, "--explicit")) == (1, 2) + + assert _nresults(_query(e)) == (3, 2) + assert _nresults(_query(e, "-c", "d0")) == (0, 1) + + uninstall("-f", "-y", "b0") + + # b0 is now missing (it is not installed, but has an + # installed parent) + + assert _nresults(_query(e)) == (2, 3) + # b0 is "double-counted" here: it meets the --missing + # criteria, and also now qualifies as a + # concretized-but-not-installed spec + assert _nresults(_query(e, "--missing")) == (3, 3) + assert _nresults(_query(e, "--only-missing")) == (1, 3) + + # Tags are not attached to install records, so they + # can modify the concretized-but-not-installed results + + assert _nresults(_query(e, "--tag=tag0")) == (1, 0) + assert _nresults(_query(e, "--tag=tag1")) == (1, 1) + assert _nresults(_query(e, "--tag=tag2")) == (0, 1) diff --git a/lib/spack/spack/test/utilities.py b/lib/spack/spack/test/utilities.py new file mode 100644 index 00000000000000..5e83db9da27939 --- /dev/null +++ b/lib/spack/spack/test/utilities.py @@ -0,0 +1,32 @@ +# 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) + +"""Non-fixture utilities for test code. Must be imported. +""" +from spack.main import make_argument_parser + + +class SpackCommandArgs: + """Use this to get an Args object like what is passed into + a command. + + Useful for emulating args in unit tests that want to check + helper functions in Spack commands. Ensures that you get all + the default arg values established by the parser. + + Example usage:: + + install_args = SpackCommandArgs("install")("-v", "mpich") + """ + + def __init__(self, command_name): + self.parser = make_argument_parser() + self.command_name = command_name + + def __call__(self, *argv, **kwargs): + self.parser.add_command(self.command_name) + prepend = kwargs["global_args"] if "global_args" in kwargs else [] + args, unknown = self.parser.parse_known_args(prepend + [self.command_name] + list(argv)) + return args From 484c9cf47c3017e96803edb16eb407a087ec2f11 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 11 Nov 2024 19:55:47 +0100 Subject: [PATCH 398/615] py-pillow: patch for disabling optional deps (#47542) --- var/spack/repos/builtin/packages/py-pillow/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 1e0e5374200cfd..3bd7e9399e9c3d 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -74,6 +74,12 @@ class PyPillowBase(PythonPackage): depends_on("libimagequant", when="+imagequant") depends_on("libxcb", when="+xcb") + patch( + "https://github.com/python-pillow/Pillow/commit/1c11d4581c5705dfa21bc5a4f3b6980c556978bf.patch?full_index=1", + sha256="599f37e6a5a8d1adb9f4025ffc7cae5f5b61cad60a04e7c7a3015f9e350047bb", + when="@11.0.0", + ) + @when("@10:") def config_settings(self, spec, prefix): settings = {"parallel": make_jobs} From a55073e7b09df4a6b2f53844fe470125a1ca76ba Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:57:45 -0800 Subject: [PATCH 399/615] vtk-m %oneapi@2025: cxxflags add -Wno-error=missing-template-arg-list-after-template-kw (#47477) --- var/spack/repos/builtin/packages/vtk-m/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index 6bf7c4203f5538..c5cef49c5856f2 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -185,6 +185,12 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): when="@1.6.0:2.1 +cuda ^cuda@12.5:", ) + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("@:2.2.0 %oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec options = [] From 4691301eba3747e1e488034f114cf06946420da4 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 11 Nov 2024 23:12:43 +0100 Subject: [PATCH 400/615] Compiler.default_libc: early exit on darwin/win (#47554) * Compiler.default_libc: early exit on darwin/win * use .cc when testing c++ compiler if c compiler is missing --- lib/spack/spack/compiler.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 46382a3d983107..e16e4a2725c194 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -428,6 +428,11 @@ def default_dynamic_linker(self) -> Optional[str]: @property def default_libc(self) -> Optional["spack.spec.Spec"]: """Determine libc targeted by the compiler from link line""" + # technically this should be testing the target platform of the compiler, but we don't have + # that, so stick to host platform for now. + if sys.platform in ("darwin", "win32"): + return None + dynamic_linker = self.default_dynamic_linker if not dynamic_linker: @@ -449,14 +454,20 @@ def compiler_verbose_output(self) -> Optional[str]: return self.cache.get(self).c_compiler_output def _compile_dummy_c_source(self) -> Optional[str]: - cc = self.cc if self.cc else self.cxx + if self.cc: + cc = self.cc + ext = "c" + else: + cc = self.cxx + ext = "cc" + if not cc or not self.verbose_flag: return None try: tmpdir = tempfile.mkdtemp(prefix="spack-implicit-link-info") fout = os.path.join(tmpdir, "output") - fin = os.path.join(tmpdir, "main.c") + fin = os.path.join(tmpdir, f"main.{ext}") with open(fin, "w") as csource: csource.write( From 786f8dfcce92a9464f988478f27743c7dbec27f7 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 11 Nov 2024 23:14:38 +0100 Subject: [PATCH 401/615] openmpi: fix detection (#47541) Take a simpler approach to listing variant options -- store them in variables instead of trying to roundtrip them through metadata dictionaries. --- .../repos/builtin/packages/openmpi/package.py | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 58105a90f7538f..c82e58cfba6511 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -452,33 +452,34 @@ class Openmpi(AutotoolsPackage, CudaPackage): patch("pmix_getline_pmix_version.patch", when="@5.0.0:5.0.3") patch("pmix_getline_pmix_version-prte.patch", when="@5.0.3") + FABRICS = ( + "psm", + "psm2", + "verbs", + "mxm", + "ucx", + "ofi", + "fca", + "hcoll", + "ucc", + "xpmem", + "cma", + "knem", + ) + variant( "fabrics", values=disjoint_sets( - ("auto",), - ( - "psm", - "psm2", - "verbs", - "mxm", - "ucx", - "ofi", - "fca", - "hcoll", - "ucc", - "xpmem", - "cma", - "knem", - ), # shared memory transports + ("auto",), FABRICS # shared memory transports ).with_non_feature_values("auto", "none"), description="List of fabrics that are enabled; " "'auto' lets openmpi determine", ) + SCHEDULERS = ("alps", "lsf", "tm", "slurm", "sge", "loadleveler") + variant( "schedulers", - values=disjoint_sets( - ("auto",), ("alps", "lsf", "tm", "slurm", "sge", "loadleveler") - ).with_non_feature_values("auto", "none"), + values=disjoint_sets(("auto",), SCHEDULERS).with_non_feature_values("auto", "none"), description="List of schedulers for which support is enabled; " "'auto' lets openmpi determine", ) @@ -806,24 +807,26 @@ def determine_variants(cls, exes, version): variants.append("~pmi") # fabrics - fabrics = get_options_from_variant(cls, "fabrics") used_fabrics = [] - for fabric in fabrics: + for fabric in cls.FABRICS: match = re.search(r"\bMCA (?:mtl|btl|pml): %s\b" % fabric, output) if match: used_fabrics.append(fabric) if used_fabrics: variants.append("fabrics=" + ",".join(used_fabrics)) + else: + variants.append("fabrics=none") # schedulers - schedulers = get_options_from_variant(cls, "schedulers") used_schedulers = [] - for scheduler in schedulers: + for scheduler in cls.SCHEDULERS: match = re.search(r"\bMCA (?:prrte|ras): %s\b" % scheduler, output) if match: used_schedulers.append(scheduler) if used_schedulers: variants.append("schedulers=" + ",".join(used_schedulers)) + else: + variants.append("schedulers=none") # Get the appropriate compiler match = re.search(r"\bC compiler absolute: (\S+)", output) @@ -1412,12 +1415,3 @@ def is_enabled(text): if text in set(["t", "true", "enabled", "yes", "1"]): return True return False - - -# This code gets all the fabric names from the variants list -# Idea taken from the AutotoolsPackage source. -def get_options_from_variant(self, name): - values = self.variants[name][0].values - if getattr(values, "feature_values", None): - values = values.feature_values - return values From 993f7432452908c05676cc0d3a67eb17129784b8 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 00:03:08 +0100 Subject: [PATCH 402/615] soqt: new package (#47443) * soqt: Add SoQt package The geomodel package needs this if visualization is turned on. * make qt versions explicit * use virtual dependency for qt * pr feedback Remove myself as maintainer Remove v1.6.0 Remove unused qt variant --- .../repos/builtin/packages/soqt/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/soqt/package.py diff --git a/var/spack/repos/builtin/packages/soqt/package.py b/var/spack/repos/builtin/packages/soqt/package.py new file mode 100644 index 00000000000000..bceeb5bc46dd9d --- /dev/null +++ b/var/spack/repos/builtin/packages/soqt/package.py @@ -0,0 +1,56 @@ +# 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) + +from spack.package import * + + +class Soqt(CMakePackage): + """Old Coin GUI binding for Qt, replaced by Quarter""" + + homepage = "https://github.com/coin3d/soqt/" + url = "https://github.com/coin3d/soqt/releases/download/v1.6.3/soqt-1.6.3-src.tar.gz" + git = "https://github.com/coin3d/soqt/" + + depends_on("cxx", type="build") + depends_on("cmake@3:", type="build") + + license("BSD-3-Clause", checked_by="paulgessinger") + + version("1.6.3", sha256="79342e89290783457c075fb6a60088aad4a48ea072ede06fdf01985075ef46bd") + version("1.6.2", sha256="fb483b20015ab827ba46eb090bd7be5bc2f3d0349c2f947c3089af2b7003869c") + version("1.6.1", sha256="80289d9bd49ffe709ab85778c952573f43f1c725ea958c6d5969b2e9c77bb3ba") + + depends_on("coin3d") + depends_on("opengl") + + variant( + "static_defaults", + default=True, + description="Enable statically linked in default materials", + ) + variant("spacenav", default=True, description="Enable Space Navigator support") + variant("tests", default=False, description="Build small test programs.") + variant("iv", default=True, description="Enable extra Open Inventor extensions") + + depends_on("qmake") + with when("^[virtuals=qmake] qt"): + depends_on("qt@5 +gui +opengl") + with when("^[virtuals=qmake] qt-base"): + depends_on("qt-base@6 +gui +opengl +widgets") + + def cmake_args(self): + args = [ + self.define_from_variant("COIN_IV_EXTENSIONS", "iv"), + self.define_from_variant("WITH_STATIC_DEFAULTS", "static_defaults"), + self.define_from_variant("HAVE_SPACENAV_SUPPORT", "spacenav"), + self.define_from_variant("SOQT_BUILD_TESTS", "tests"), + ] + if self.spec.satisfies("^[virtuals=qmake] qt"): + args.append(self.define("SOQT_USE_QT5", True)) + args.append(self.define("SOQT_USE_QT6", False)) + if self.spec.satisfies("^[virtuals=qmake] qt-base"): + args.append(self.define("SOQT_USE_QT5", False)) + args.append(self.define("SOQT_USE_QT6", True)) + return args From 247446a8f3b4917ef079ee116646c50cfb8b4ab4 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Mon, 11 Nov 2024 18:12:48 -0600 Subject: [PATCH 403/615] bfs: add v4.0.4 (#47550) --- var/spack/repos/builtin/packages/bfs/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bfs/package.py b/var/spack/repos/builtin/packages/bfs/package.py index add324f8d44e8f..105b698be4aefc 100644 --- a/var/spack/repos/builtin/packages/bfs/package.py +++ b/var/spack/repos/builtin/packages/bfs/package.py @@ -16,6 +16,7 @@ class Bfs(MakefilePackage): license("0BSD") + version("4.0.4", sha256="209da9e9f43d8fe30fd689c189ea529e9d6b5358ce84a63a44721003aea3e1ca") version("4.0.1", sha256="8117b76b0a967887278a11470cbfa9e7aeae98f11a7eeb136f456ac462e5ba23") version("3.1.1", sha256="d73f345c1021e0630e0db930a3fa68dd1f968833037d8471ee1096e5040bf91b") version("3.1", sha256="aa6a94231915d3d37e5dd62d194cb58a575a8f45270020f2bdd5ab41e31d1492") From 9fd698edcbb6961da40fad2eef1232dd2a62f54c Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Mon, 11 Nov 2024 18:15:34 -0600 Subject: [PATCH 404/615] fzf: add v0.56.2 (#47549) --- var/spack/repos/builtin/packages/fzf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fzf/package.py b/var/spack/repos/builtin/packages/fzf/package.py index a3c75798c47fd6..91b838a3fe8222 100644 --- a/var/spack/repos/builtin/packages/fzf/package.py +++ b/var/spack/repos/builtin/packages/fzf/package.py @@ -19,6 +19,7 @@ class Fzf(MakefilePackage): license("MIT") + version("0.56.2", sha256="1d67edb3e3ffbb14fcbf786bfcc0b5b8d87db6a0685135677b8ef4c114d2b864") version("0.55.0", sha256="805383f71bca7f8fb271ecd716852aea88fd898d5027d58add9e43df6ea766da") version("0.54.3", sha256="6413f3916f8058b396820f9078b1336d94c72cbae39c593b1d16b83fcc4fdf74") version("0.53.0", sha256="d45abbfb64f21913c633d46818d9d3eb3d7ebc7e94bd16f45941958aa5480e1d") From 31b2b790e76cb38214503be1f76d5d767a645555 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 12 Nov 2024 01:57:00 +0100 Subject: [PATCH 405/615] py-non-regression-test-tools: add v1.1.4 (#47520) Co-authored-by: t. chantrait --- .../builtin/packages/py-non-regression-test-tools/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py index d97e7868527847..e72f207275e523 100644 --- a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py +++ b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py @@ -18,8 +18,9 @@ class PyNonRegressionTestTools(PythonPackage): version("develop", branch="develop") version("main", branch="main") - version("1.1.2", tag="v1.1.2", preferred=True) + version("1.1.4", tag="v1.1.4") + version("1.1.2", tag="v1.1.2") depends_on("py-numpy", type="run") depends_on("python@3.10:", type="run") - depends_on("py-setuptools", type="build") + depends_on("py-setuptools@69.2.0:", type="build") From 82dd33c04c4f6e9308bfd97f5d352a20c252b218 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:21:27 -0600 Subject: [PATCH 406/615] git: add v2.46.2, v2.47.0 (#47534) --- var/spack/repos/builtin/packages/git/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index da8c14c6ad170a..713fd0abf8de8c 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -29,6 +29,8 @@ class Git(AutotoolsPackage): # Every new git release comes with a corresponding manpage resource: # https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.gz # https://mirrors.edge.kernel.org/pub/software/scm/git/sha256sums.asc + version("2.47.0", sha256="a84a7917e0ab608312834413f01fc01edc7844f9f9002ba69f3b4f4bcb8d937a") + version("2.46.2", sha256="65c5689fd44f1d09de7fd8c44de7fef074ddd69dda8b8503d44afb91495ecbce") version("2.45.2", sha256="98b26090ed667099a3691b93698d1e213e1ded73d36a2fde7e9125fce28ba234") version("2.44.2", sha256="f0655e81c5ecfeef7440aa4fcffa1c1a77eaccf764d6fe29579e9a06eac2cd04") version("2.43.5", sha256="324c3b85d668e6afe571b3502035848e4b349dead35188e2b8ab1b96c0cd45ff") @@ -99,6 +101,8 @@ class Git(AutotoolsPackage): depends_on("c", type="build") # generated for _version, _sha256_manpage in { + "2.47.0": "1a6f1e775dfe324a9b521793cbd2b3bba546442cc2ac2106d4df33dea9005038", + "2.46.2": "4bc3774ee4597098977befa4ec30b0f2cbed3b59b756e7cbb59ce1738682d43a", "2.45.2": "48c1e2e3ecbb2ce9faa020a19fcdbc6ce64ea25692111b5930686bc0bb4f0e7f", "2.45.1": "d9098fd93a3c0ef242814fc856a99886ce31dae2ba457afc416ba4e92af8f8f5", "2.44.2": "ee6a7238d5ede18fe21c0cc2131c7fbff1f871c25e2848892ee864d40baf7218", From cbd9fad66e711c91219e481f2c2613edbf10f5e9 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:22:32 -0600 Subject: [PATCH 407/615] xtrans: add v1.5.2 (#47530) --- var/spack/repos/builtin/packages/xtrans/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py index 92a5c73d87dea3..aeadc39d7f547f 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -19,6 +19,7 @@ class Xtrans(AutotoolsPackage, XorgPackage): maintainers("wdconinc") + version("1.5.2", sha256="23031301f10fef5eaa55b438610fbd29294a70d2fa189355343bf0186bff8374") version("1.5.0", sha256="a806f8a92f879dcd0146f3f1153fdffe845f2fc0df9b1a26c19312b7b0a29c86") version("1.4.0", sha256="48ed850ce772fef1b44ca23639b0a57e38884045ed2cbb18ab137ef33ec713f9") version("1.3.5", sha256="b7a577c1b6c75030145e53b4793db9c88f9359ac49e7d771d4385d21b3e5945d") From b748907a61543572d794509d4b1537c58f9d0a50 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:26:29 -0600 Subject: [PATCH 408/615] pixman: add v0.44.0 (switch to meson) (#47529) * pixman: add v0.44.0 (switch to meson) --- .../repos/builtin/packages/pixman/package.py | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index a1abb45bba7744..e84ff0a48aaa1f 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -18,6 +18,7 @@ class Pixman(AutotoolsPackage): license("MIT") + version("0.44.0", sha256="89a4c1e1e45e0b23dffe708202cb2eaffde0fe3727d7692b2e1739fec78a7dac") version("0.42.2", sha256="ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e") version("0.42.0", sha256="07f74c8d95e4a43eb2b08578b37f40b7937e6c5b48597b3a0bb2c13a53f46c13") version("0.40.0", sha256="6d200dec3740d9ec4ec8d1180e25779c00bc749f94278c8b9021f5534db223fc") @@ -26,11 +27,19 @@ class Pixman(AutotoolsPackage): version("0.34.0", sha256="21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e") version("0.32.6", sha256="3dfed13b8060eadabf0a4945c7045b7793cc7e3e910e748a8bb0f0dc3e794904") - depends_on("c", type="build") # generated + build_system( + conditional("autotools", when="@:0.42"), + conditional("meson", when="@0.38:"), + default="meson", + ) + depends_on("c", type="build") + with when("build_system=meson"): + depends_on("meson@0.52:", type="build") depends_on("pkgconfig", type="build") depends_on("flex", type="build") depends_on("bison@3:", type="build") + depends_on("libpng") variant("shared", default=True, description="Build shared library") @@ -68,6 +77,32 @@ def libs(self): "libpixman-1", self.prefix, shared=self.spec.satisfies("+shared"), recursive=True ) + +class MesonBuilder(spack.build_systems.meson.MesonBuilder): + def meson_args(self): + args = ["-Dlibpng=enabled", "-Dgtk=disabled", "-Db_staticpic=true"] + + if sys.platform == "darwin": + args += ["-Dmmx=disabled"] + + # From homebrew, see: + # https://gitlab.freedesktop.org/pixman/pixman/-/issues/59 + # https://gitlab.freedesktop.org/pixman/pixman/-/issues/69 + if self.spec.target.family == "aarch64": + args.append("-Da64-neon=disabled") + + # The Fujitsu compiler does not support assembler macros. + if self.spec.satisfies("%fj"): + args.append("-Da64-neon=disabled") + + args.append( + "-Ddefault_library=" + ("shared" if self.spec.satisfies("+shared") else "static") + ) + + return args + + +class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): args = ["--enable-libpng", "--disable-gtk", "--with-pic"] From 4d91d3f77fa11f57f0e64551a1a2e220da35c0aa Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:28:06 -0600 Subject: [PATCH 409/615] scitokens-cpp: add v1.1.2 (#47523) --- var/spack/repos/builtin/packages/scitokens-cpp/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/scitokens-cpp/package.py b/var/spack/repos/builtin/packages/scitokens-cpp/package.py index 1426828700f0eb..6c193e4bd274db 100644 --- a/var/spack/repos/builtin/packages/scitokens-cpp/package.py +++ b/var/spack/repos/builtin/packages/scitokens-cpp/package.py @@ -17,6 +17,7 @@ class ScitokensCpp(CMakePackage): license("Apache-2.0") + version("1.1.2", sha256="07d33cb51a3ccd8460f2acebb15b35393aeccfc70e3554a73c9e5cffed6edb39") version("1.1.1", sha256="a9091b888fc778282caf2a6808c86f685d2411557673152d58fe53932a6c7212") version("1.1.0", sha256="9c4afd6638e94855ede52ecfc3d4f05082f2bdf151a9ab8dafcc2bb7cd4d9039") version("1.0.2", sha256="cdc1e80e0cba9ca0e16de2efa10ec5e38765792bf5107024bfb66ddad5a16a85") From 09a88ad3bd2edffc30957ddaca77d1c6330cbbb0 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:30:30 -0600 Subject: [PATCH 410/615] xerces-c: add v3.3.0 (#47522) --- .../repos/builtin/packages/xerces-c/package.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index a62f25746e37fc..ac10c1e068d079 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -20,13 +20,16 @@ class XercesC(AutotoolsPackage): license("Apache-2.0") + version("3.3.0", sha256="ef752578587e26013a933f16d76305c9b43ca32f869e3d3426986e03efb01d64") version("3.2.5", sha256="1db4028c9b7f1f778efbf4a9462d65e13f9938f2c22f9e9994e12c49ba97e252") - version("3.2.4", sha256="74aa626fc71e729ee227602870dd29a5a01cd8c9c1c7330837a51da2eb5722cc") - version("3.2.3", sha256="45c2329e684405f2b8854ecbddfb8d5b055cdf0fe4d35736cc352c504989bbb6") - version("3.2.2", sha256="1f2a4d1dbd0086ce0f52b718ac0fa4af3dc1ce7a7ff73a581a05fbe78a82bce0") - version("3.2.1", sha256="a36b6e162913ec218cfb84772d2535d43c3365355a601d45d4b8ce11f0ece0da") - version("3.1.4", sha256="9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891") - version("3.1.3", sha256="fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-1311 + version("3.2.4", sha256="74aa626fc71e729ee227602870dd29a5a01cd8c9c1c7330837a51da2eb5722cc") + version("3.2.3", sha256="45c2329e684405f2b8854ecbddfb8d5b055cdf0fe4d35736cc352c504989bbb6") + version("3.2.2", sha256="1f2a4d1dbd0086ce0f52b718ac0fa4af3dc1ce7a7ff73a581a05fbe78a82bce0") + version("3.2.1", sha256="a36b6e162913ec218cfb84772d2535d43c3365355a601d45d4b8ce11f0ece0da") + version("3.1.4", sha256="9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891") + version("3.1.3", sha256="fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated From b98e5886e5c9b5e005b54fa727704da384d81f21 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:44:28 -0600 Subject: [PATCH 411/615] py-pyppeteer: new package (#47375) * py-pyppeteer: new package * py-pyee: new package (v11.1.1, v12.0.0) --- .../repos/builtin/packages/py-pyee/package.py | 25 ++++++++++++++++ .../builtin/packages/py-pyppeteer/package.py | 29 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyee/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyppeteer/package.py diff --git a/var/spack/repos/builtin/packages/py-pyee/package.py b/var/spack/repos/builtin/packages/py-pyee/package.py new file mode 100644 index 00000000000000..34d26b7b57ab6d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyee/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class PyPyee(PythonPackage): + """A rough port of Node.js's EventEmitter to Python + with a few tricks of its own.""" + + homepage = "https://github.com/jfhbrook/pyee" + pypi = "pyee/pyee-12.0.0.tar.gz" + + license("MIT", checked_by="wdconinc") + + version("12.0.0", sha256="c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145") + version("11.1.1", sha256="82e1eb1853f8497c4ff1a0c7fa26b9cd2f1253e2b6ffb93b4700fda907017302") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-setuptools-scm", type="build") + depends_on("py-wheel", type="build") + depends_on("py-typing-extensions", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyppeteer/package.py b/var/spack/repos/builtin/packages/py-pyppeteer/package.py new file mode 100644 index 00000000000000..64a999c3e40a3c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyppeteer/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class PyPyppeteer(PythonPackage): + """Headless chrome/chromium automation library + (unofficial port of puppeteer).""" + + homepage = "https://github.com/pyppeteer/pyppeteer" + pypi = "pyppeteer/pyppeteer-2.0.0.tar.gz" + + license("MIT") + + version("2.0.0", sha256="4af63473ff36a746a53347b2336a49efda669bcd781e400bc1799b81838358d9") + + depends_on("py-poetry-core", type="build") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-appdirs@1.4.3:1", type=("build", "run")) + depends_on("py-importlib-metadata@1.4:", type=("build", "run")) + depends_on("py-pyee@11", type=("build", "run")) + depends_on("py-tqdm@4.42.1:4", type=("build", "run")) + depends_on("py-urllib3@1.25.8:1", type=("build", "run")) + depends_on("py-websockets@10", type=("build", "run")) + depends_on("py-certifi@2023:", type=("build", "run")) From cdaacce4db9207397d553a45239f73bfb4121e94 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:47:53 -0600 Subject: [PATCH 412/615] varnish-cache: add v7.6.1 (#47513) --- .../builtin/packages/varnish-cache/package.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/varnish-cache/package.py b/var/spack/repos/builtin/packages/varnish-cache/package.py index 2950922511ee9c..b6ffd4e571142e 100644 --- a/var/spack/repos/builtin/packages/varnish-cache/package.py +++ b/var/spack/repos/builtin/packages/varnish-cache/package.py @@ -10,15 +10,18 @@ class VarnishCache(AutotoolsPackage): """This is Varnish Cache, the high-performance HTTP accelerator.""" homepage = "https://www.varnish-cache.org/" - url = "https://github.com/varnishcache/varnish-cache/archive/varnish-6.4.0.tar.gz" + url = "https://github.com/varnishcache/varnish-cache/archive/refs/tags/varnish-6.4.0.tar.gz" license("BSD-2-Clause") - version("6.4.0", sha256="d9702c2c689c5d4ecd911886f769ddf22f46ac0722e275bee4033928cab09243") - version("6.3.2", sha256="e50f3dd4e26d5669c5b73657cdb0d5ddac7dcc3cfa1761a983afa24b659f3785") - version("6.3.1", sha256="8cc57360c1db36e8c77fc51304a935803a06247f6d6120fa47e8345efadf17a9") - version("6.3.0", sha256="c7170d4bc57f1d2454da046fc5e43e2d19a804448d2dd839fa5c33f76bd677bb") - version("6.2.3", sha256="64cd273aa155c78c21e74def53622be5920c8a7d952fee74f0663e57a01c9a9d") + version("7.6.1", sha256="6cfa30d761fa5edf33322048564cda3ee99de93ee57732c10f720d98d12f1899") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-23959 + version("6.4.0", sha256="d9702c2c689c5d4ecd911886f769ddf22f46ac0722e275bee4033928cab09243") + version("6.3.2", sha256="e50f3dd4e26d5669c5b73657cdb0d5ddac7dcc3cfa1761a983afa24b659f3785") + version("6.3.1", sha256="8cc57360c1db36e8c77fc51304a935803a06247f6d6120fa47e8345efadf17a9") + version("6.3.0", sha256="c7170d4bc57f1d2454da046fc5e43e2d19a804448d2dd839fa5c33f76bd677bb") + version("6.2.3", sha256="64cd273aa155c78c21e74def53622be5920c8a7d952fee74f0663e57a01c9a9d") depends_on("c", type="build") # generated @@ -26,7 +29,9 @@ class VarnishCache(AutotoolsPackage): depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") - depends_on("pcre") + depends_on("pkgconfig", type="build") + depends_on("pcre2", when="@7:") + depends_on("pcre", when="@:6") depends_on("readline") depends_on("python", type=("build", "run")) depends_on("py-sphinx", type=("build", "run")) From c44c938cafb64405de978a948f3648c6ee8f9399 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:50:02 -0600 Subject: [PATCH 413/615] rsyslog: add v8.2410.0 (fix CVE) (#47511) * rsyslog: add v8.2410.0 --- .../repos/builtin/packages/rsyslog/package.py | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/rsyslog/package.py b/var/spack/repos/builtin/packages/rsyslog/package.py index 6de8baf1116cd6..eafa2d9c1bab16 100644 --- a/var/spack/repos/builtin/packages/rsyslog/package.py +++ b/var/spack/repos/builtin/packages/rsyslog/package.py @@ -10,13 +10,22 @@ class Rsyslog(AutotoolsPackage): """The rocket-fast Syslog Server.""" homepage = "https://www.rsyslog.com/" - url = "https://github.com/rsyslog/rsyslog/archive/v8.2006.0.tar.gz" + url = "https://github.com/rsyslog/rsyslog/archive/refs/tags/v8.2006.0.tar.gz" license("Apache-2.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later", checked_by="tgamblin") - version("8.2006.0", sha256="dc30a2ec02d5fac91d3a4f15a00641e0987941313483ced46592ab0b0d68f324") - version("8.2004.0", sha256="b56b985fec076a22160471d389b7ff271909dfd86513dad31e401a775a6dfdc2") - version("8.2002.0", sha256="b31d56311532335212ef2ea7be4501508224cb21f1bef9d262c6d78e21959ea1") + version("8.2410.0", sha256="0e4e6fcb1d72a1cb65438d85dd2bbf37a8f82115d7e271788535d1e7fbcf6838") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-24903 + version( + "8.2006.0", sha256="dc30a2ec02d5fac91d3a4f15a00641e0987941313483ced46592ab0b0d68f324" + ) + version( + "8.2004.0", sha256="b56b985fec076a22160471d389b7ff271909dfd86513dad31e401a775a6dfdc2" + ) + version( + "8.2002.0", sha256="b31d56311532335212ef2ea7be4501508224cb21f1bef9d262c6d78e21959ea1" + ) depends_on("c", type="build") # generated @@ -24,6 +33,7 @@ class Rsyslog(AutotoolsPackage): depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") + depends_on("pkgconfig", type="build") depends_on("libestr") depends_on("libfastjson") depends_on("zlib-api") @@ -36,6 +46,9 @@ class Rsyslog(AutotoolsPackage): def setup_run_environment(self, env): env.prepend_path("PATH", self.prefix.sbin) + def autoreconf(self, spec, prefix): + Executable("./autogen.sh")() + def configure_args(self): args = ["--with-systemdsystemunitdir=" + self.spec["rsyslog"].prefix.lib.systemd.system] return args From e38e51a6bcabfaaf2a2a23a7b3a20e907c61995a Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Mon, 11 Nov 2024 19:52:19 -0600 Subject: [PATCH 414/615] superlu-dist: add v9.1.0, v9.0.0 (#47461) Fix typo wrt @xiaoyeli --- var/spack/repos/builtin/packages/superlu-dist/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 1440da388a4b66..0e3844bcc3a9f5 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -16,10 +16,12 @@ class SuperluDist(CMakePackage, CudaPackage, ROCmPackage): tags = ["e4s"] - maintainers("xiaoye", "gchavez2", "balay", "pghysels", "liuyangzhuan") + maintainers("xiaoyeli", "gchavez2", "balay", "pghysels", "liuyangzhuan") version("develop", branch="master") version("amd", branch="amd") + version("9.1.0", sha256="1cb2c6dc7e8231b2ec30c1266e55e440ffca9f55527771d8df28f900dd179f9d") + version("9.0.0", sha256="aa43d33d4b1b0f5f7b5ad7685e9a6bc25088832c6c74d2ab8f75a2c9f4e9e955") version("8.2.1", sha256="b77d065cafa6bc1a1dcc15bf23fd854f54b05762b165badcffc195835ad2bddf") version("8.2.0", sha256="d53573e5a399b2b4ab1fcc36e8421c1b6fab36345c0af14f8fa20326e3365f1f") version("8.1.2", sha256="7b16c442bb01ea8b298c0aab9a2584aa4615d09786aac968cb2f3118c058206b") From 0614ded2ef418fa9b2a90fb8c9db4dbc905dcdc2 Mon Sep 17 00:00:00 2001 From: renjithravindrankannath <94420380+renjithravindrankannath@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:54:19 -0800 Subject: [PATCH 415/615] Removing args to get libraries added in RPATH (#47465) --- ...ng-rocm-path-with-package-path-6.2.1.patch | 686 ++++++++++++++++++ .../packages/rocm-validation-suite/package.py | 28 +- 2 files changed, 696 insertions(+), 18 deletions(-) create mode 100644 var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch diff --git a/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch b/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch new file mode 100644 index 00000000000000..5283f5a25627fc --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch @@ -0,0 +1,686 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7867e3a..7268387 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -74,14 +74,18 @@ endif(rocblas_FOUND) + # Making ROCM_PATH, CMAKE_INSTALL_PREFIX, CPACK_PACKAGING_INSTALL_PREFIX as CACHE + # variables since we will pass them as cmake params appropriately, and + # all find_packages relevant to this build will be in ROCM path hence appending it to CMAKE_PREFIX_PATH +-set(ROCM_PATH "/opt/rocm" CACHE PATH "ROCM install path") +-set(CMAKE_INSTALL_PREFIX "/opt/rocm" CACHE PATH "CMAKE installation directory") +-set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE PATH "Prefix used in built packages") ++set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") ++set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) ++set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + list(APPEND CMAKE_PREFIX_PATH "${ROCM_PATH}") +-set(ROCR_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Runtime" FORCE) +-set(ROCR_LIB_DIR "${ROCM_PATH}/lib" CACHE PATH "Contains library files exported by ROC Runtime" FORCE) +-set(HIP_INC_DIR "${ROCM_PATH}" CACHE PATH "Contains header files exported by ROC Runtime") +-set(ROCT_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Trunk" FORCE) ++set(ROCR_INC_DIR "${HSA_PATH}/include" CACHE PATH "Contains header files exported by ROC Runtime") ++set(ROCR_LIB_DIR "${HSA_PATH}/lib" CACHE PATH "Contains library files exported by ROC Runtime") ++set(HIP_INC_DIR "${HIP_PATH}" CACHE PATH "Contains header files exported by ROC Runtime") ++set(ROCT_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(HIPRAND_INC_DIR "${HIPRAND_DIR}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(HIPRAND_LIB_DIR "${HIPRAND_DIR}/lib" CACHE PATH "Contains header files exported by ROC Trunk") ++set(ROCRAND_INC_DIR "${ROCRAND_DIR}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(ROCRAND_LIB_DIR "${ROCRAND_DIR}/lib" CACHE PATH "Contains header files exported by ROC Trunk") + + add_definitions(-DROCM_PATH="${ROCM_PATH}") + if(FETCH_ROCMPATH_FROM_ROCMCORE) +@@ -443,15 +447,18 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/rvs_smi-build/librocm_smi64.so + + endif() # if (RVS_ROCMSMI EQUAL 1) + +-set(HIPRAND_INC_DIR "${ROCM_PATH}/include") +-set(HIPRAND_LIB_DIR "${ROCM_PATH}/lib") ++set(HIPRAND_INC_DIR "${HIPRAND_DIR}/include") ++set(HIPRAND_LIB_DIR "${HIPRAND_DIR}/lib") ++ ++set(ROCRAND_INC_DIR "${ROCRAND_DIR}/include") ++set(ROCRAND_LIB_DIR "${ROCRAND_DIR}/lib") + + if (RVS_ROCBLAS EQUAL 1) + set(ROCBLAS_INC_DIR "${CMAKE_BINARY_DIR}/rvs_rblas-src/build/release/rocblas-install") + set(ROCBLAS_LIB_DIR "${CMAKE_BINARY_DIR}/rvs_rblas-src/build/release/rocblas-install/lib/") + else() +- set(ROCBLAS_INC_DIR "${ROCM_PATH}/include") +- set(ROCBLAS_LIB_DIR "${ROCM_PATH}/lib") ++ set(ROCBLAS_INC_DIR "${ROCBLAS_DIR}/include") ++ set(ROCBLAS_LIB_DIR "${ROCBLAS_DIR}/lib") + endif() + + if (RVS_ROCMSMI EQUAL 1) +@@ -466,8 +473,8 @@ else() + set(ROCM_SMI_LIB_DIR "${ROCM_PATH}/rocm_smi/lib") + else() + message( STATUS "ROCBLAS REORG Enabled Version: ${RVS_ROCBLAS_VERSION_FLAT}" ) +- set(ROCM_SMI_INC_DIR "${ROCM_PATH}/include") +- set(ROCM_SMI_LIB_DIR "${ROCM_PATH}/lib") ++ set(ROCM_SMI_INC_DIR "${ROCM_SMI_DIR}/include") ++ set(ROCM_SMI_LIB_DIR "${ROCM_SMI_DIR}/lib") + endif() + endif() + set(ROCM_SMI_LIB "rocm_smi64" CACHE STRING "rocm_smi library name") +diff --git a/babel.so/CMakeLists.txt b/babel.so/CMakeLists.txt +index 54a0e3a..c9ddeaa 100644 +--- a/babel.so/CMakeLists.txt ++++ b/babel.so/CMakeLists.txt +@@ -109,13 +109,13 @@ set(HIP_HCC_LIB "amdhip64") + add_compile_options(-DRVS_ROCBLAS_VERSION_FLAT=${RVS_ROCBLAS_VERSION_FLAT}) + + # Determine Roc Runtime header files are accessible +-if(NOT EXISTS ${HIP_INC_DIR}/include/hip/hip_runtime.h) +- message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_INC_DIR path. Current value is : " ${HIP_INC_DIR}) ++if(NOT EXISTS ${HIP_PATH}/include/hip/hip_runtime.h) ++ message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + +-if(NOT EXISTS ${HIP_INC_DIR}/include/hip/hip_runtime_api.h) +- message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_INC_DIR path. Current value is : " ${HIP_INC_DIR}) ++if(NOT EXISTS ${HIP_PATH}/include/hip/hip_runtime_api.h) ++ message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + +@@ -135,16 +135,16 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") +- message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) ++if(NOT EXISTS "${HIP_PATH}/lib/lib${HIP_HCC_LIB}.so") ++ message("ERROR: ROC Runtime libraries can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${HIP_PATH}) + + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${HIP_PATH}/lib/ ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries + set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) + +@@ -156,7 +156,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/cmake_modules/tests_unit.cmake b/cmake_modules/tests_unit.cmake +index 9760b72..d585f8b 100644 +--- a/cmake_modules/tests_unit.cmake ++++ b/cmake_modules/tests_unit.cmake +@@ -27,7 +27,7 @@ + ## define additional unit testing include directories + include_directories(${UT_INC}) + ## define additional unit testing lib directories +-link_directories(${UT_LIB} ${RVS_LIB_DIR}) ++link_directories(${UT_LIB} ${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + file(GLOB TESTSOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} test/test*.cpp ) + #message ( "TESTSOURCES: ${TESTSOURCES}" ) +@@ -46,6 +46,7 @@ FOREACH(SINGLE_TEST ${TESTSOURCES}) + add_dependencies(${TEST_NAME} rvs_gtest_target) + target_link_libraries(${TEST_NAME} + ${UT_LINK_LIBS} rvslibut rvslib gtest_main gtest pthread pci ++ ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so + ) + target_compile_definitions(${TEST_NAME} PUBLIC RVS_UNIT_TEST) + if(DEFINED tcd.${TEST_NAME}) +diff --git a/edp.so/CMakeLists.txt b/edp.so/CMakeLists.txt +index 7dd34ea..41c8493 100644 +--- a/edp.so/CMakeLists.txt ++++ b/edp.so/CMakeLists.txt +@@ -128,17 +128,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpciaccess.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpciaccess.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set (SOURCES src/rvs_module.cpp src/action.cpp src/edp_worker.cpp ) +@@ -148,7 +148,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${HIPRAND_LIB} ${ROCRAND_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/gm.so/CMakeLists.txt b/gm.so/CMakeLists.txt +index d3caa84..94a06be 100644 +--- a/gm.so/CMakeLists.txt ++++ b/gm.so/CMakeLists.txt +@@ -118,11 +118,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so librocm_smi64.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +@@ -133,7 +133,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${ROCM_SMI_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +@@ -149,7 +149,7 @@ install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib${RVS}.so" + + # TEST SECTION + if (RVS_BUILD_TESTS) +- add_custom_command(TARGET ${RVS_TARGET} POST_BUILD ++ B_add_custom_command(TARGET ${RVS_TARGET} POST_BUILD + COMMAND ln -fs ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib${RVS}.so.${VERSION_MAJOR} ${RVS_BINTEST_FOLDER}/lib${RVS}.so WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + ) + include(${CMAKE_CURRENT_SOURCE_DIR}/tests.cmake) +diff --git a/gm.so/tests.cmake b/gm.so/tests.cmake +index b360065..172e97c 100644 +--- a/gm.so/tests.cmake ++++ b/gm.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${ROCRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES src/action.cpp src/worker.cpp + ) +diff --git a/gpup.so/CMakeLists.txt b/gpup.so/CMakeLists.txt +index 43d337a..c92d8ba 100644 +--- a/gpup.so/CMakeLists.txt ++++ b/gpup.so/CMakeLists.txt +@@ -109,11 +109,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ include ../include) ++include_directories(./ ../ include ../include ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +diff --git a/gpup.so/tests.cmake b/gpup.so/tests.cmake +index 9a1f7ed..3649ae4 100644 +--- a/gpup.so/tests.cmake ++++ b/gpup.so/tests.cmake +@@ -25,12 +25,13 @@ + + set(ROCBLAS_LIB "rocblas") + set(HIPRAND_LIB "hiprand") ++set(ROCRAND_LIB "rocrand") + set(ROC_THUNK_NAME "hsakmt") + set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libm.so libdl.so ${ROCM_SMI_LIB} +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB}) ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ${ROCRAND_LIB}) + + # Add directories to look for library files to link + link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR}) +diff --git a/gst.so/CMakeLists.txt b/gst.so/CMakeLists.txt +index fd346ce..7e17a68 100644 +--- a/gst.so/CMakeLists.txt ++++ b/gst.so/CMakeLists.txt +@@ -137,17 +137,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib/ ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_DIR} ${ROCRAND_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/gst_worker.cpp) +diff --git a/iet.so/CMakeLists.txt b/iet.so/CMakeLists.txt +index 002c03c..604b86b 100644 +--- a/iet.so/CMakeLists.txt ++++ b/iet.so/CMakeLists.txt +@@ -145,7 +145,7 @@ if(DEFINED RVS_ROCMSMI) + endif() + endif() + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() +@@ -160,11 +160,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so librocm_smi64.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so ) + + set(SOURCES src/rvs_module.cpp src/action.cpp src/iet_worker.cpp ) + +@@ -173,7 +173,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${ROCM_SMI_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_INC_DIR}/lib/ ${HIP_HCC_LIB} ${ROCBLAS_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/mem.so/CMakeLists.txt b/mem.so/CMakeLists.txt +index 5133337..3ba941f 100644 +--- a/mem.so/CMakeLists.txt ++++ b/mem.so/CMakeLists.txt +@@ -134,18 +134,18 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/rvs_memtest.cpp src/rvs_memworker.cpp) +diff --git a/pbqt.so/CMakeLists.txt b/pbqt.so/CMakeLists.txt +index 5ae675a..873a1e8 100644 +--- a/pbqt.so/CMakeLists.txt ++++ b/pbqt.so/CMakeLists.txt +@@ -136,11 +136,11 @@ if(NOT EXISTS ${ROCR_LIB_DIR}/${CORE_RUNTIME_LIBRARY}.so) + endif() + + ## define include directories +-include_directories(./ ../ pci ${ROCR_INC_DIR}) ++include_directories(./ ../ pci ${ROCR_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HSAKMT_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/action_run.cpp +diff --git a/pebb.so/CMakeLists.txt b/pebb.so/CMakeLists.txt +index c4e2964..41a45f5 100644 +--- a/pebb.so/CMakeLists.txt ++++ b/pebb.so/CMakeLists.txt +@@ -137,11 +137,11 @@ if(NOT EXISTS ${ROCR_LIB_DIR}/${CORE_RUNTIME_LIBRARY}.so) + endif() + + ## define include directories +-include_directories(./ ../ pci ${ROCR_INC_DIR}) ++include_directories(./ ../ pci ${ROCR_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HSAKMT_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR}/.. ${ROCRAND_LIB_DIR}/..) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/action_run.cpp +diff --git a/peqt.so/CMakeLists.txt b/peqt.so/CMakeLists.txt +index ead507d..d83c9e5 100644 +--- a/peqt.so/CMakeLists.txt ++++ b/peqt.so/CMakeLists.txt +@@ -107,11 +107,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../) ++include_directories(./ ../ ${HSA_PATH}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${HSA_PATH}/lib/ ${HSAKMT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +@@ -121,7 +121,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/perf.so/CMakeLists.txt b/perf.so/CMakeLists.txt +index 518dac9..dfe05f5 100644 +--- a/perf.so/CMakeLists.txt ++++ b/perf.so/CMakeLists.txt +@@ -137,17 +137,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/perf_worker.cpp) +@@ -157,7 +157,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/pesm.so/CMakeLists.txt b/pesm.so/CMakeLists.txt +index 1f27f34..502c1c8 100644 +--- a/pesm.so/CMakeLists.txt ++++ b/pesm.so/CMakeLists.txt +@@ -107,11 +107,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_DIR} ${ROCRAND_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so ${PROJECT_LINK_LIBS} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +diff --git a/pesm.so/tests.cmake b/pesm.so/tests.cmake +index 2c72658..c6acbf4 100644 +--- a/pesm.so/tests.cmake ++++ b/pesm.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${ROCRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES test/unitactionbase.cpp + ) +diff --git a/rcqt.so/CMakeLists.txt b/rcqt.so/CMakeLists.txt +index c0099ab..fcc82f3 100644 +--- a/rcqt.so/CMakeLists.txt ++++ b/rcqt.so/CMakeLists.txt +@@ -108,11 +108,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../) ++include_directories(./ ../ ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ASAN_LIB_PATH} ${HSAKMT_LIB_DIR} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib) ++set (PROJECT_LINK_LIBS rvslib ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES +diff --git a/rvs/CMakeLists.txt b/rvs/CMakeLists.txt +index fc0118e..04c9abf 100644 +--- a/rvs/CMakeLists.txt ++++ b/rvs/CMakeLists.txt +@@ -34,6 +34,7 @@ set ( RVS "rvs" ) + set ( RVS_PACKAGE "rvs-roct" ) + set ( RVS_COMPONENT "lib${RVS}" ) + set ( RVS_TARGET "${RVS}" ) ++set ( YAML_CPP_LIBRARIES "${YAML_CPP_LIB_PATH}") + + project ( ${RVS_TARGET} ) + +@@ -115,20 +116,22 @@ endif() + ## define include directories + include_directories(./ ../ ${YAML_CPP_INCLUDE_DIRS}) + ## define lib directories +-link_directories(${CMAKE_CURRENT_BINARY_DIR} ${RVS_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_PATH}) ++link_directories(${CMAKE_CURRENT_BINARY_DIR} ${RVS_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR} ${RVS_LIB_DIR}/.. ${YAML_CPP_LIBRARIES}) + + ## additional libraries +-set(ROCBLAS_LIB "rocblas") +-set(ROC_THUNK_NAME "hsakmt") +-set(CORE_RUNTIME_NAME "hsa-runtime") +-set(HIPRAND_LIB "hiprand") +-set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") +-set(PROJECT_LINK_LIBS libdl.so libpthread.so libpci.so ${YAML_CPP_LIBRARIES}) ++set(ROCBLAS_LIB "${ROCBLAS_LIB_DIR}/librocblas.so") ++set(ROC_THUNK_NAME "${HSAKMT_LIB_DIR}/libhsakmt.a") ++set(CORE_RUNTIME_NAME "${HSA_PATH}/lib/libhsa-runtime64.so") ++set(YAML_CPP_LIB "${YAML_CPP_LIBRARIES}/libyaml-cpp.a") ++set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}") ++set(PROJECT_LINK_LIBS libdl.so libpthread.so libpci.so) ++set(HIPRAND_LIB "${HIPRAND_LIB_DIR}/libhiprand.so") ++set(ROCRAND_LIB "${ROCRAND_LIB_DIR}/librocrand.so") + + ## define target + add_executable(${RVS_TARGET} src/rvs.cpp) + target_link_libraries(${RVS_TARGET} rvslib +- ${ROCBLAS_LIB} ${ROCM_SMI_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${PROJECT_LINK_LIBS} ${HIPRAND_LIB}) ++ ${ROCBLAS_LIB} ${ROCM_SMI_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${PROJECT_LINK_LIBS} ${HIPRAND_LIB} ${YAML_CPP_LIB} ${ROCRAND_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + install(TARGETS ${RVS_TARGET} +diff --git a/rvs/tests.cmake b/rvs/tests.cmake +index c519482..64a4ad0 100644 +--- a/rvs/tests.cmake ++++ b/rvs/tests.cmake +@@ -32,17 +32,18 @@ + + set(ROCBLAS_LIB "rocblas") + set(HIPRAND_LIB "hiprand") ++set(ROCRAND_LIB "rocrand") + set(ROC_THUNK_NAME "hsakmt") + set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + ## define lib directories +-link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + ## define target for "test-to-fail" + add_executable(${RVS_TARGET}fail src/rvs.cpp) + target_link_libraries(${RVS_TARGET}fail rvslib rvslibut ${PROJECT_LINK_LIBS} +- ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${ROCM_CORE} ${CORE_RUNTIME_TARGET} ${HIPRAND_LIB}) ++ ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${ROCM_CORE} ${CORE_RUNTIME_TARGET} ${HIPRAND_LIB} ${ROCRAND_LIB}) + + target_compile_definitions(${RVS_TARGET}fail PRIVATE RVS_INVERT_RETURN_STATUS) + set_target_properties(${RVS_TARGET}fail PROPERTIES +@@ -211,7 +212,7 @@ FOREACH(SINGLE_TEST ${TESTSOURCES}) + ${PROJECT_LINK_LIBS} + ${PROJECT_TEST_LINK_LIBS} + rvslib rvslibut gtest_main gtest pthread +- ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${HIPRAND_LIB} ++ ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${HIPRAND_LIB} ${ROCRAND_LIB} + ) + add_dependencies(${TEST_NAME} rvs_gtest_target) + +diff --git a/rvslib/CMakeLists.txt b/rvslib/CMakeLists.txt +index 8d29590..18eb9f4 100644 +--- a/rvslib/CMakeLists.txt ++++ b/rvslib/CMakeLists.txt +@@ -116,7 +116,7 @@ endif() + + ## define include directories + include_directories(./ ../ ../rvs +- ${ROCM_SMI_INC_DIR} ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++ ${ROCM_SMI_INC_DIR} ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_PATH} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + + link_directories(${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + +diff --git a/smqt.so/CMakeLists.txt b/smqt.so/CMakeLists.txt +index 042586f..285cb17 100644 +--- a/smqt.so/CMakeLists.txt ++++ b/smqt.so/CMakeLists.txt +@@ -106,11 +106,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +diff --git a/smqt.so/tests.cmake b/smqt.so/tests.cmake +index 76766de..804441a 100644 +--- a/smqt.so/tests.cmake ++++ b/smqt.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${HIPRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES src/action.cpp test/unitsmqt.cpp + ) +diff --git a/testif.so/CMakeLists.txt b/testif.so/CMakeLists.txt +index 4cba0f9..691534a 100644 +--- a/testif.so/CMakeLists.txt ++++ b/testif.so/CMakeLists.txt +@@ -108,11 +108,11 @@ endif() + + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so) + + ## define source files + ## set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +diff --git a/tst.so/CMakeLists.txt b/tst.so/CMakeLists.txt +index 1a1a8b0..c6e46da 100644 +--- a/tst.so/CMakeLists.txt ++++ b/tst.so/CMakeLists.txt +@@ -140,7 +140,7 @@ if(DEFINED RVS_ROCMSMI) + endif() + endif() + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() +@@ -155,11 +155,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR}/.. ${ROCRAND_LIB_DIR}/..) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + set(SOURCES src/rvs_module.cpp src/action.cpp src/tst_worker.cpp ) + diff --git a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py index f3b06fefcd19b8..7cdce00f34af96 100644 --- a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py @@ -58,7 +58,8 @@ class RocmValidationSuite(CMakePackage): # It expects rocm components headers and libraries in /opt/rocm # It doesn't find package to include the library and include path without this patch. patch("009-replacing-rocm-path-with-package-path.patch", when="@6.0") - patch("009-replacing-rocm-path-with-package-path-6.1.patch", when="@6.1") + patch("009-replacing-rocm-path-with-package-path-6.1.patch", when="@6.1:6.2.0") + patch("009-replacing-rocm-path-with-package-path-6.2.1.patch", when="@6.2.1") depends_on("cmake@3.5:", type="build") depends_on("zlib-api", type="link") depends_on("yaml-cpp~shared") @@ -94,6 +95,9 @@ def setup_build_environment(self, build_env): depends_on(f"rocm-smi-lib@{ver}", when=f"@{ver}") depends_on(f"hsa-rocr-dev@{ver}", when=f"@{ver}") depends_on(f"hsakmt-roct@{ver}", when=f"@{ver}") + for ver in ["6.2.1"]: + depends_on(f"hiprand@{ver}", when=f"@{ver}") + depends_on(f"rocrand@{ver}", when=f"@{ver}") def patch(self): if self.spec.satisfies("@5.2:5.4"): @@ -104,7 +108,7 @@ def patch(self): filter_file( r"@ROCM_PATH@/rvs", self.spec.prefix.rvs, "rvs/conf/deviceid.sh.in", string=True ) - elif self.spec.satisfies("@6.0:"): + elif self.spec.satisfies("@6.0:6.1"): filter_file( "@ROCM_PATH@/rvs", self.spec.prefix.bin, "rvs/conf/deviceid.sh.in", string=True ) @@ -119,6 +123,9 @@ def cmake_args(self): self.define("YAML_CPP_INCLUDE_DIRS", self.spec["yaml-cpp"].prefix.include), self.define("UT_INC", self.spec["googletest"].prefix.include), ] + if self.spec.satisfies("@6.2.1:"): + args.append(self.define("HIPRAND_DIR", self.spec["hiprand"].prefix)), + args.append(self.define("ROCRAND_DIR", self.spec["rocrand"].prefix)), libloc = self.spec["googletest"].prefix.lib64 if not os.path.isdir(libloc): libloc = self.spec["googletest"].prefix.lib @@ -131,20 +138,5 @@ def cmake_args(self): if not os.path.isdir(libloc): libloc = self.spec["yaml-cpp"].prefix.lib args.append(self.define("YAML_CPP_LIB_PATH", libloc)) - if self.spec.satisfies("@6.2:"): - args.append( - self.define( - "CMAKE_CXX_FLAGS", - f"-I{self.spec['rocm-smi-lib'].prefix.include} " - f"-I{self.spec['rocblas'].prefix.include} " - f"-I{self.spec['yaml-cpp'].prefix.include} " - f"-L{self.spec['hip'].prefix.lib} " - f"-L{self.spec['hsa-rocr-dev'].prefix.lib} " - f"-L{self.spec['hsakmt-roct'].prefix.lib} " - f"-L{self.spec['rocm-smi-lib'].prefix.lib} " - f"-L{self.spec['rocblas'].prefix.lib} " - f"{libloc}/libyaml-cpp.a ", - ) - ) - args.append(self.define("CPACK_PACKAGING_INSTALL_PREFIX", self.spec.prefix)) + return args From 3fed7086180966329a5cee2e3f9c73cf34c5a532 Mon Sep 17 00:00:00 2001 From: Stephen Herbener <32968781+srherbener@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:55:28 -0700 Subject: [PATCH 416/615] openmpi: add two_level_namespace variant for MacOS (#47202) * Add two_level_namespace variant (default is disabled) for MacOS to enable building executables and libraries with two level namespace enabled. * Addressed reviewer comments. * Moved two_level_namespace variant ahead of the patch that uses that variant to get concretize to work properly. * Removed extra print statements --- .../repos/builtin/packages/openmpi/package.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index c82e58cfba6511..425156907245cb 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -575,6 +575,24 @@ class Openmpi(AutotoolsPackage, CudaPackage): variant("openshmem", default=False, description="Enable building OpenSHMEM") variant("debug", default=False, description="Make debug build", when="build_system=autotools") + variant( + "two_level_namespace", + default=False, + description="""Build shared libraries and programs +built with the mpicc/mpifort/etc. compiler wrappers +with '-Wl,-commons,use_dylibs' and without +'-Wl,-flat_namespace'.""", + ) + + # Patch to allow two-level namespace on a MacOS platform when building + # openmpi. Unfortuntately, the openmpi configure command has flat namespace + # hardwired in. In spack, this only works for openmpi up to versions 4, + # because for versions 5+ autoreconf is triggered (see below) and this + # patch needs to be applied (again) AFTER autoreconf ran. + @when("+two_level_namespace platform=darwin") + def patch(self): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") + provides("mpi@:2.0", when="@:1.2") provides("mpi@:2.1", when="@1.3:1.7.2") provides("mpi@:2.2", when="@1.7.3:1.7.4") @@ -997,11 +1015,15 @@ def die_without_fortran(self): def autoreconf(self, spec, prefix): perl = which("perl") perl("autogen.pl") + if spec.satisfies("+two_level_namespace platform=darwin"): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") @when("@5.0.0:5.0.1") def autoreconf(self, spec, prefix): perl = which("perl") perl("autogen.pl", "--force") + if spec.satisfies("+two_level_namespace platform=darwin"): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") def configure_args(self): spec = self.spec From fc7125fdf3f594683d264e48160ca86717c2109d Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 19:58:18 -0600 Subject: [PATCH 417/615] py-fsspec-xrootd: new package (#47405) * py-fsspec-xrootd: new package * py-fsspec-xrootd: depends_on python@3.8: --- .../packages/py-fsspec-xrootd/package.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py diff --git a/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py b/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py new file mode 100644 index 00000000000000..b14291a6b51742 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py @@ -0,0 +1,26 @@ +# 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) + +from spack.package import * + + +class PyFsspecXrootd(PythonPackage): + """An XRootD implementation for fsspec.""" + + homepage = "https://coffeateam.github.io/fsspec-xrootd/" + pypi = "fsspec_xrootd/fsspec_xrootd-0.4.0.tar.gz" + + maintainers("wdconinc") + + license("BSD-3-Clause", checked_by="wdconinc") + + version("0.4.0", sha256="d7f124430d26ab9139d33bc50fa8abfde3624db5dcaa5c18f56af9bf17f16f13") + + depends_on("python@3.8:", type=("build", "run")) + + depends_on("py-setuptools@42:", type="build") + depends_on("py-setuptools-scm@3.4:+toml", type="build") + + depends_on("py-fsspec", type=("build", "run")) From 370694f11232e33e4fce39da1a7f3644d45da9bd Mon Sep 17 00:00:00 2001 From: MatthewLieber <77356607+MatthewLieber@users.noreply.github.com> Date: Mon, 11 Nov 2024 21:01:39 -0500 Subject: [PATCH 418/615] osu-micro-benchmarks: add v7.5 (#47423) * Adding sha for 7.4 release of OSU Micro Benchmarks * Adds the sha256sum for the OSU mirco benchmarks 7.5 release. --- var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index bf2c2e505dc20c..204e4e97f74a4b 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -20,6 +20,7 @@ class OsuMicroBenchmarks(AutotoolsPackage, CudaPackage, ROCmPackage): maintainers("natshineman", "harisubramoni", "MatthewLieber") + version("7.5", sha256="1cf84ac5419456202757a757c5f9a4f5c6ecd05c65783c7976421cfd6020b3b3") version("7.4", sha256="1edd0c2efa61999409bfb28740a7f39689a5b42b1a1b4c66d1656e5637f7cefc") version("7.3", sha256="8fa25b8aaa34e4b07ab3a4f30b7690ab46b038b08d204a853a9b6aa7bdb02f2f") version("7.2", sha256="1a4e1f2aab0e65404b3414e23bd46616184b69b6231ce9313d9c630bd6e633c1") From 42fd1cafe6c5c7da2c4d0b4dbefe955e25f0c24d Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam Date: Tue, 12 Nov 2024 07:35:21 +0530 Subject: [PATCH 419/615] Fix the build error during compilation of rocdecode package (#47283) * fix the build error during compilation of rocdecode.was dependent on libva-devel packag * address review comment * address review changes.commit the changes --- .../repos/builtin/packages/libva/package.py | 46 +++++++++++++++++++ .../builtin/packages/rocdecode/package.py | 2 + 2 files changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libva/package.py diff --git a/var/spack/repos/builtin/packages/libva/package.py b/var/spack/repos/builtin/packages/libva/package.py new file mode 100644 index 00000000000000..538ca8914ea654 --- /dev/null +++ b/var/spack/repos/builtin/packages/libva/package.py @@ -0,0 +1,46 @@ +# 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) + + +from spack.package import * + + +class Libva(AutotoolsPackage): + """Libva is an implementation for VA-API (Video Acceleration API). + VA-API is an open-source library and API specification, which provides + access to graphics hardware acceleration capabilities for video + processing. It consists of a main library and driver-specific + acceleration backends for each supported hardware vendor.""" + + homepage = "https://github.com/intel/libva" + url = "https://github.com/intel/libva/archive/refs/tags/2.22.0.tar.gz" + + version("2.22.0", sha256="467c418c2640a178c6baad5be2e00d569842123763b80507721ab87eb7af8735") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + depends_on("m4", type="build") + depends_on("pkgconfig", type="build") + + depends_on("libdrm") + depends_on("libx11", when="^[virtuals=gl] glx") + depends_on("libxext", when="^[virtuals=gl] glx") + + def autoreconf(self, spec, prefix): + autogen = Executable("./autogen.sh") + autogen() + + def configure_args(self): + spec = self.spec + args = ["--disable-x11", "--disable-wayland", "--disable-glx", "--enable-libdrm"] + if spec.satisfies("^[virtuals=gl] glx"): + args.append("--enable-x11") + else: + args.append("--disable-x11") + return args diff --git a/var/spack/repos/builtin/packages/rocdecode/package.py b/var/spack/repos/builtin/packages/rocdecode/package.py index 1f284de531949f..bac7679a15b5b4 100644 --- a/var/spack/repos/builtin/packages/rocdecode/package.py +++ b/var/spack/repos/builtin/packages/rocdecode/package.py @@ -33,6 +33,8 @@ class Rocdecode(CMakePackage): sticky=True, ) + depends_on("libva", type="build", when="@6.2:") + for ver in ["6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1"]: depends_on(f"hip@{ver}", when=f"@{ver}") From 37de92e7a23ed6d22a8713f21e195bdc379527ab Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 11 Nov 2024 20:09:03 -0600 Subject: [PATCH 420/615] extrae: Update dyninst dependency (#47359) --- .../packages/extrae/dyninst_instruction.patch | 19 ++++++++++++ .../repos/builtin/packages/extrae/package.py | 30 ++++++++++++++----- 2 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch diff --git a/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch b/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch new file mode 100644 index 00000000000000..08c691c4f74711 --- /dev/null +++ b/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch @@ -0,0 +1,19 @@ +diff --git a/src/launcher/dyninst/commonSnippets.C b/src/launcher/dyninst/commonSnippets.C +index 94904a23..2f918949 100644 +--- a/src/launcher/dyninst/commonSnippets.C ++++ b/src/launcher/dyninst/commonSnippets.C +@@ -482,9 +482,10 @@ string decodeBasicBlocks(BPatch_function * function, string routine) + ParseAPI::Block* b = ParseAPI::convert(block); + void * buf = b->region()->getPtrToInstruction(b->start()); + InstructionAPI::InstructionDecoder dec((unsigned char*)buf,b->size(),b->region()->getArch()); +- InstructionAPI::Instruction::Ptr insn; +- while((insn = dec.decode())) { +- res <format() << endl; ++ InstructionAPI::Instruction insn = dec.decode(); ++ while(insn.isValid()) { ++ res < Date: Mon, 11 Nov 2024 20:13:46 -0600 Subject: [PATCH 421/615] packages: new versions (`diamond`, `py-alive-progress`, `py-bakta`, `py-deepsig-biocomp`), new packages (`py-pyhmmer`, `py-pyrodigal`) (#47277) * added updated versions * added pyhmmer * updated infernal * fix blast-plus for apple-clang * fix py-biopython build on apple-clang * remove erroneous biopython dep: build issue is with python 3.8, not biopython * deepsig python 3.9: expanding unnecessary python restrictions * add pyrodigal * fix unnecessarily strict diamond version * builds and updates: blast-plus indexing broken, still need to test db download and bakta pipeline * builds and runs * revert blast-plus changes: remove my personal hacks to get blast-plus to build --- .../repos/builtin/packages/diamond/package.py | 1 + .../packages/py-alive-progress/package.py | 5 ++- .../builtin/packages/py-bakta/package.py | 43 ++++++++++++++----- .../packages/py-deepsig-biocomp/package.py | 6 +-- .../builtin/packages/py-pyhmmer/package.py | 27 ++++++++++++ .../builtin/packages/py-pyrodigal/package.py | 25 +++++++++++ 6 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-pyhmmer/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyrodigal/package.py diff --git a/var/spack/repos/builtin/packages/diamond/package.py b/var/spack/repos/builtin/packages/diamond/package.py index c87e675eaebd5d..1ce6bcae9df68f 100644 --- a/var/spack/repos/builtin/packages/diamond/package.py +++ b/var/spack/repos/builtin/packages/diamond/package.py @@ -16,6 +16,7 @@ class Diamond(CMakePackage): license("GPL-3.0-only") + version("2.1.10", sha256="c6ede5df30d9d496af314e740964c35a0e358458d9c8d9b8dd517d69828d9981") version("2.1.9", sha256="4cde9df78c63e8aef9df1e3265cd06a93ce1b047d6dba513a1437719b70e9d88") version("2.1.8", sha256="b6088259f2bc92d1f9dc4add44590cff68321bcbf91eefbc295a3525118b9415") version("2.1.7", sha256="2dcaba0e79ecb02c3d2a6816d317e714767118a9a056721643abff4c586ca95b") diff --git a/var/spack/repos/builtin/packages/py-alive-progress/package.py b/var/spack/repos/builtin/packages/py-alive-progress/package.py index 31c011e687a8e6..0342326115af66 100644 --- a/var/spack/repos/builtin/packages/py-alive-progress/package.py +++ b/var/spack/repos/builtin/packages/py-alive-progress/package.py @@ -16,12 +16,15 @@ class PyAliveProgress(PythonPackage): license("MIT") + version("3.2.0", sha256="ede29d046ff454fe56b941f686f89dd9389430c4a5b7658e445cb0b80e0e4deb") version("2.4.1", sha256="089757c8197f27ad972ba27e1060f6db92368d83c736884e159034fd74865323") version("1.6.2", sha256="642e1ce98becf226c8c36bf24e10221085998c5465a357a66fb83b7dc618b43e") depends_on("python@2.7:3", type=("build", "run")) depends_on("python@3.6:3", type=("build", "run"), when="@2:") depends_on("python@3.7:3", type=("build", "run"), when="@2.2:") + depends_on("python@3.9:3", type=("build", "run"), when="@3.2:") depends_on("py-setuptools", type="build") - depends_on("py-about-time@3.1.1", type=("build", "run"), when="@2.4.1:") + depends_on("py-about-time@3.1.1", type=("build", "run"), when="@2.4.1") + depends_on("py-about-time@4.2.1", type=("build", "run"), when="@3:") depends_on("py-grapheme@0.6.0", type=("build", "run"), when="@2.4.1:") diff --git a/var/spack/repos/builtin/packages/py-bakta/package.py b/var/spack/repos/builtin/packages/py-bakta/package.py index 57dcbc64bb398c..edec5d634fd1ac 100644 --- a/var/spack/repos/builtin/packages/py-bakta/package.py +++ b/var/spack/repos/builtin/packages/py-bakta/package.py @@ -18,21 +18,42 @@ class PyBakta(PythonPackage): license("GPL-3.0-only") + version("1.9.4", sha256="10330a10e459144dc78daa26f3a73674799706e2e1653e080366b1bbb9e5a5d9") version("1.5.1", sha256="36781612c4eaa99e6e24a00e8ab5b27dadf21c98ae6d16432f3e78c96a4adb5d") - depends_on("python@3.8:", type=("build", "run")) + variant("deepsig", default=True, description="builds with deepsig to predict signal peptides") + + depends_on("python@3.8:3.10", type=("build", "run")) depends_on("py-setuptools", type=("build", "run")) depends_on("py-biopython@1.78:", type=("build", "run")) - depends_on("py-xopen@1.1.0:", type=("build", "run")) + depends_on("py-xopen@1.5.0:", when="@1.8.2:", type=("build", "run")) + depends_on("py-xopen@1.1.0:", when="@:1.8.1", type=("build", "run")) depends_on("py-requests@2.25.1:", type=("build", "run")) - depends_on("py-alive-progress@1.6.2", type=("build", "run")) - depends_on("trnascan-se@2.0.8:", type=("build", "run")) - depends_on("aragorn@1.2.38:", type=("build", "run")) + depends_on("py-alive-progress@3.0.1:", when="@1.7.0:", type=("build", "run")) + depends_on("py-alive-progress@1.6.2", when="@:1.6.1", type=("build", "run")) + depends_on("py-pyyaml@6.0:", when="@1.6.0:", type=("build", "run")) + depends_on("trnascan-se@2.0.11:", when="@1.6.0:", type=("build", "run")) + depends_on("trnascan-se@2.0.8:", when="@:1.5.1", type=("build", "run")) + depends_on("aragorn@1.2.41:", when="@1.7.0:", type=("build", "run")) + depends_on("aragorn@1.2.38:", when="@:1.6.1", type=("build", "run")) depends_on("infernal@1.1.4:", type=("build", "run")) depends_on("pilercr@1.06:", type=("build", "run")) - depends_on("prodigal@2.6.3:", type=("build", "run")) - depends_on("hmmer@3.3.2:", type=("build", "run")) - depends_on("diamond@2.0.14:", type=("build", "run")) - depends_on("blast-plus@2.12.0:", type=("build", "run")) - depends_on("amrfinder@3.10.23:", type=("build", "run")) - depends_on("py-deepsig-biocomp@1.2.5:", type=("build", "run")) + depends_on("py-pyrodigal@3.1.0:", when="@1.9.0:", type=("build", "run")) + depends_on("py-pyrodigal@2.1.0:", when="@1.7.0:1.8.2", type=("build", "run")) + depends_on("py-pyrodigal@2.0.2:", when="@1.6.0:1.6.1", type=("build", "run")) + depends_on("prodigal@2.6.3:", when="@:1.5.1", type=("build", "run")) + depends_on("hmmer@3.3.2:", when="@:1.8.1", type=("build", "run")) + depends_on("py-pyhmmer@0.10.4:", when="@1.9.4:", type=("build", "run")) + depends_on("py-pyhmmer@0.10.0:", when="@1.8.2:1.9.3", type=("build", "run")) + # known bug with diamond v2.1.9 + # see https://github.com/oschwengers/bakta/issues/290 + depends_on("diamond@2.1.8,2.1.10:", when="@1.9.0:", type=("build", "run")) + depends_on("diamond@2.0.14:", when="@:1.8.2", type=("build", "run")) + depends_on("blast-plus@2.14.0:", when="@1.9.0:", type=("build", "run")) + depends_on("blast-plus@2.12.0:", when="@:1.8.2", type=("build", "run")) + depends_on("amrfinder@3.11.26:", when="@1.9.0:", type=("build", "run")) + depends_on("amrfinder@3.10.23:", when="@1.5.1", type=("build", "run")) + depends_on("circos@0.69.8:", when="@1.6.0:", type=("build", "run")) + depends_on("py-deepsig-biocomp@1.2.5:", when="+deepsig", type=("build", "run")) + + conflicts("platform=darwin", when="+deepsig") diff --git a/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py b/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py index 01b527251fc52f..8c1abc2e8ff378 100644 --- a/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py +++ b/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py @@ -19,11 +19,11 @@ class PyDeepsigBiocomp(PythonPackage): version("1.2.5", sha256="e954b815d63c221c564c7d3fe27123d7cd2c39b191d6107369ab095d506496e0") - depends_on("python@3.8", type=("build", "run")) + depends_on("python@3.8:", type=("build", "run")) depends_on("py-setuptools", type="build") depends_on("py-biopython@1.78:", type=("build", "run")) - depends_on("py-keras@2.4.3", type=("build", "run")) - depends_on("py-tensorflow@2.2.0", type=("build", "run")) + depends_on("py-keras@2.4.3:", type=("build", "run")) + depends_on("py-tensorflow@2.2.0:", type=("build", "run")) depends_on("py-tensorboard", type=("build", "run")) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-pyhmmer/package.py b/var/spack/repos/builtin/packages/py-pyhmmer/package.py new file mode 100644 index 00000000000000..b263e89389ea1d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyhmmer/package.py @@ -0,0 +1,27 @@ +# 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) + +from spack.package import * + + +class PyPyhmmer(PythonPackage): + """HMMER is a biological sequence analysis tool that uses profile hidden + Markov models to search for sequence homologs. HMMER3 is developed and + maintained by the Eddy/Rivas Laboratory at Harvard University. pyhmmer + is a Python package, implemented using the Cython language, that provides + bindings to HMMER3.""" + + homepage = "https://github.com/althonos/pyhmmer" + pypi = "pyhmmer/pyhmmer-0.10.14.tar.gz" + + license("MIT", checked_by="luke-dt") + + version("0.10.15", sha256="bf8e97ce8da6fb5850298f3074640f3e998d5a655877f865c1592eb057dc7921") + version("0.10.14", sha256="eb50bdfdf67a3b1fecfe877d7ca6d9bade9a9f3dea3ad60c959453bbb235573d") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools@46.4:", type="build") + depends_on("py-cython@3.0", type="build") + depends_on("py-psutil@5.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyrodigal/package.py b/var/spack/repos/builtin/packages/py-pyrodigal/package.py new file mode 100644 index 00000000000000..6bd206f58b1c1a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyrodigal/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class PyPyrodigal(PythonPackage): + """Cython bindings and Python interface to Prodigal, an ORF finder for + genomes and metagenomes""" + + homepage = "https://github.com/althonos/pyrodigal" + pypi = "pyrodigal/pyrodigal-3.5.2.tar.gz" + + license("GPL-3.0", checked_by="luke-dt") + + version("3.5.2", sha256="2a40eb6113e720ada51c326958b295944cdc33ecee9f25d5bad4e9a8e6e6f7f5") + + depends_on("c", type="build") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools@46.4:", type="build") + depends_on("py-archspec@0.2.0:", type="build") + depends_on("py-cython@3.0:", type=("build", "run")) From 65929888dec905180a9330d3b19751394da39a1f Mon Sep 17 00:00:00 2001 From: Alberto Sartori Date: Tue, 12 Nov 2024 03:15:07 +0100 Subject: [PATCH 422/615] justbuild: add version 1.4.0 (#47410) --- var/spack/repos/builtin/packages/justbuild/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/justbuild/package.py b/var/spack/repos/builtin/packages/justbuild/package.py index 18c4939dd26651..1cf96c1bbb09ca 100644 --- a/var/spack/repos/builtin/packages/justbuild/package.py +++ b/var/spack/repos/builtin/packages/justbuild/package.py @@ -24,6 +24,7 @@ class Justbuild(Package): license("Apache-2.0") version("master", branch="master") + version("1.4.0", tag="v1.4.0", commit="562bddf70175a602f896397f41ee5f5e07e834eb") version("1.3.2", tag="v1.3.2", commit="27a56845398b07471f8185648a79a63f97851659") version("1.3.1", tag="v1.3.1", commit="b248838ed0f01bc5824caee3a555e7fd22d5ad10") version("1.3.0", tag="v1.3.0", commit="a7be2417f358049e6a0e28e01bc4020d8de2fdc5") From f0f5ffa9de8e272186783f1faf1566136d5a0802 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Tue, 12 Nov 2024 03:17:36 +0100 Subject: [PATCH 423/615] libunwind: Add 1.7.2, 1.8.1, and new *-stable branches (#47412) * libunwind: Add 1.7.2 and 1.8.1 * libunwind: Remove deprecated 1.1 version * libunwind: Add newer *-stable branches: Remove 1.5-stable branch as well as cleanup. * libunwind: Use GitHub url for all versions * libunwind: Add conflict for PPC and 1.8.* * libunwind: Add conflict for aarch64 and 1.8: Build fails with aarch64/Gos-linux.c: In function '_ULaarch64_local_resume': aarch64/Gos-linux.c:147:1: error: x29 cannot be used in asm here } ^ aarch64/Gos-linux.c:147:1: error: x29 cannot be used in asm here make[2]: *** [Makefile:4795: aarch64/Los-linux.lo] Error 1 --- .../builtin/packages/libunwind/package.py | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 23b2b497c9dbeb..9f6df14fd642ac 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -11,25 +11,23 @@ class Libunwind(AutotoolsPackage): the call-chain of a program.""" homepage = "https://www.nongnu.org/libunwind/" - url = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz" + url = "https://github.com/libunwind/libunwind/releases/download/v0.0.0/libunwind-0.0.0.tar.gz" git = "https://github.com/libunwind/libunwind" maintainers("mwkrentel") license("MIT") version("master", branch="master") + version("1.8-stable", branch="v1.8-stable") + version("1.8.1", sha256="ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157") + version("1.7-stable", branch="v1.7-stable") + version("1.7.2", sha256="a18a6a24307443a8ace7a8acc2ce79fbbe6826cd0edf98d6326d0225d6a5d6e6") version("1.6-stable", branch="v1.6-stable") version("1.6.2", sha256="4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976") - version("1.5-stable", branch="v1.5-stable") version("1.5.0", sha256="90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017") version("1.4.0", sha256="df59c931bd4d7ebfd83ee481c943edf015138089b8e50abed8d9c57ba9338435") version("1.3.1", sha256="43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8") version("1.2.1", sha256="3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb") - version( - "1.1", - sha256="9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a", - deprecated=True, - ) depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -83,7 +81,7 @@ class Libunwind(AutotoolsPackage): # The libunwind releases contain the autotools generated files, # but the git repo snapshots do not. - reconf_versions = "@master,1.5-stable,1.6-stable" + reconf_versions = "@master,1.6-stable,1.7-stable,1.8-stable" depends_on("autoconf", type="build", when=reconf_versions) depends_on("automake", type="build", when=reconf_versions) depends_on("libtool", type="build", when=reconf_versions) @@ -94,8 +92,21 @@ class Libunwind(AutotoolsPackage): conflicts("platform=darwin", msg="Non-GNU libunwind needs ELF libraries Darwin does not have") + # Introduced in https://github.com/libunwind/libunwind/pull/555, fixed in + # https://github.com/libunwind/libunwind/pull/723 + conflicts("target=ppc64:", when="@1.8") + conflicts("target=ppc64le:", when="@1.8") + + conflicts("target=aarch64:", when="@1.8:") + provides("unwind") + def url_for_version(self, version): + if version == Version("1.5.0"): + return f"https://github.com/libunwind/libunwind/releases/download/v{version.up_to(2)}/libunwind-{version}.tar.gz" + else: + return super().url_for_version(version) + def flag_handler(self, name, flags): wrapper_flags = [] From ac703bc88d3dbdc8b8a3c93368562e584f46c89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Tue, 12 Nov 2024 04:34:32 +0000 Subject: [PATCH 424/615] prometheus: add v2.55.1 (#47544) --- var/spack/repos/builtin/packages/prometheus/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/prometheus/package.py b/var/spack/repos/builtin/packages/prometheus/package.py index 3e6c8baab10b03..1a818f8a492cf2 100644 --- a/var/spack/repos/builtin/packages/prometheus/package.py +++ b/var/spack/repos/builtin/packages/prometheus/package.py @@ -15,6 +15,7 @@ class Prometheus(MakefilePackage): license("Apache-2.0") + version("2.55.1", sha256="f48251f5c89eea6d3b43814499d558bacc4829265419ee69be49c5af98f79573") version("2.19.2", sha256="d4e84cae2fed6761bb8a80fcc69b6e0e9f274d19dffc0f38fb5845f11da1bbc3") version("2.19.1", sha256="b72b9b6bdbae246dcc29ef354d429425eb3c0a6e1596fc8b29b502578a4ce045") version("2.18.2", sha256="a26c106c97d81506e3a20699145c11ea2cce936427a0e96eb2fd0dc7cd1945ba") @@ -26,6 +27,7 @@ class Prometheus(MakefilePackage): depends_on("go", type="build") depends_on("node-js@11.10.1:", type="build") depends_on("yarn", type="build") + depends_on("npm", type="build", when="@2.55.1:") def build(self, spec, prefix): make("build", parallel=False) @@ -34,5 +36,6 @@ def install(self, spec, prefix): mkdirp(prefix.bin) install("prometheus", prefix.bin) install("promtool", prefix.bin) - install("tsdb/tsdb", prefix.bin) + if spec.satisfies("@:2.19.2"): + install("tsdb/tsdb", prefix.bin) install_tree("documentation", prefix.documentation) From def161374191190ed89940c4943955d940fd9993 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 11 Nov 2024 22:44:33 -0600 Subject: [PATCH 425/615] gdb: add version 15.2 (#47540) --- var/spack/repos/builtin/packages/gdb/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index 4b500ed36af40e..4d0f7d0ccfc1fd 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -21,6 +21,7 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage): license("GPL-3.0-or-later AND LGPL-3.0-or-later") + version("15.2", sha256="9d16bc2539a2a20dc3ef99b48b8414d51c51305c8577eb7a1da00996f6dea223") version("14.2", sha256="2de5174762e959a5e529e20c20d88a04735469d8fffd98f61664e70b341dc47c") version("14.1", sha256="683e63182fb72bd5d8db32ab388143796370a8e3e71c26bc264effb487db7927") version("13.2", sha256="7ead13d9e19fa0c57bb19104e1a5f67eefa9fc79f2e6360de491e8fddeda1e30") From 91310d3ae6adb7d222e6cf2b8df7326fe72564de Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Tue, 12 Nov 2024 05:45:03 +0100 Subject: [PATCH 426/615] environment-modules: add version 5.5.0 (#47543) This new version is compatible with Tcl 9.0. It also requires 'util-linux' for new logging capabilities. --- .../builtin/packages/environment-modules/package.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 173c340162fd3c..2b28e5651d161e 100644 --- a/var/spack/repos/builtin/packages/environment-modules/package.py +++ b/var/spack/repos/builtin/packages/environment-modules/package.py @@ -13,12 +13,13 @@ class EnvironmentModules(Package): """ homepage = "https://cea-hpc.github.io/modules/" - url = "https://github.com/cea-hpc/modules/releases/download/v5.4.0/modules-5.4.0.tar.gz" + url = "https://github.com/cea-hpc/modules/releases/download/v5.5.0/modules-5.5.0.tar.gz" git = "https://github.com/cea-hpc/modules.git" maintainers("xdelaruelle") version("main", branch="main") + version("5.5.0", sha256="ad0e360c7adc2515a99836863d98499b3ad89cd7548625499b20293845b040cb") version("5.4.0", sha256="586245cbf9420866078d8c28fce8ef4f192530c69a0f368f51e848340dcf3b90") version("5.3.1", sha256="d02f9ce4f8baf6c99edceb7c73bfdd1e97d77bcc4725810b86efed9f58dda962") version("5.3.0", sha256="21b8daa0181044ef65097a1e3517af1f24e7c7343cc5bdaf70be11e3cb0edb51") @@ -62,6 +63,7 @@ class EnvironmentModules(Package): variant("X", default=True, description="Build with X functionality") + depends_on("util-linux", type=("build", "run"), when="@5.5:") depends_on("less", type=("build", "run"), when="@4.1:") with when("@main"): depends_on("autoconf", type="build") @@ -75,7 +77,8 @@ class EnvironmentModules(Package): # Dependencies: depends_on("tcl", type=("build", "link", "run")) depends_on("tcl@8.4:", type=("build", "link", "run"), when="@4.0.0:4.8") - depends_on("tcl@8.5:", type=("build", "link", "run"), when="@5.0.0:") + depends_on("tcl@8.5:8", type=("build", "link", "run"), when="@5.0.0:5.4.0") + depends_on("tcl@8.5:", type=("build", "link", "run"), when="@5.5.0:") def install(self, spec, prefix): tcl = spec["tcl"] @@ -95,6 +98,9 @@ def install(self, spec, prefix): if spec.satisfies("~X"): config_args = ["--without-x"] + config_args + if self.spec.satisfies("@5.5.0:"): + config_args.extend(["--enable-conflict-unload"]) + if self.spec.satisfies("@4.4.0:4.8"): config_args.extend( [ @@ -140,6 +146,9 @@ def install(self, spec, prefix): ] ) + if self.spec.satisfies("@5.5:"): + config_args.append(f"--with-logger={str(self.spec['util-linux'].prefix.bin.logger)}") + if self.spec.satisfies("@4.1:"): config_args.append(f"--with-pager={str(self.spec['less'].prefix.bin.less)}") From ada4c208d4e72d798acac54820984b74ddb8cf62 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 11 Nov 2024 23:09:33 -0600 Subject: [PATCH 427/615] py-cryptography: add v43.0.3 (switch to maturin) (#47546) * py-cryptography: add v43.0.3 (switch to maturin) * py-cryptography: deny some setuptools versions * py-cryptography: depends_on py-setuptools-rust when @42, no range --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --- .../builtin/packages/py-cryptography/package.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index a883c11e04ae4d..214deae9b1d7ed 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -15,6 +15,7 @@ class PyCryptography(PythonPackage): license("Apache-2.0") + version("43.0.3", sha256="315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805") version("42.0.8", sha256="8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2") version("41.0.7", sha256="13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc") version("41.0.3", sha256="6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34") @@ -41,9 +42,16 @@ class PyCryptography(PythonPackage): depends_on("py-setuptools@40.6:", when="@2.7:36", type="build") depends_on("py-setuptools@18.5:", when="@2.2:2.6", type="build") depends_on("py-setuptools@11.3:", when="@:2.1", type="build") - depends_on("py-setuptools-rust@1.7.0:", when="@42:", type=("build", "run")) - depends_on("py-setuptools-rust@0.11.4:", when="@3.4.2:", type="build") - depends_on("py-setuptools-rust@0.11.4:", when="@3.4:3.4.1", type=("build", "run")) + with when("@43:"): + depends_on("py-maturin@1", type="build") + conflicts( + "^py-setuptools@74.0.0,74.1.0,74.1.1,74.1.2,74.1.3,75.0.0,75.1.0,75.2.0", + msg="some setuptools version are incompatible", + ) + with when("@:42"): + depends_on("py-setuptools-rust@1.7.0:", when="@42", type=("build", "run")) + depends_on("py-setuptools-rust@0.11.4:", when="@3.4.2:", type="build") + depends_on("py-setuptools-rust@0.11.4:", when="@3.4:3.4.1", type=("build", "run")) depends_on("rust@1.56:", when="@41:", type="build") depends_on("rust@1.48:", when="@38:", type="build") depends_on("rust@1.41:", when="@3.4.5:", type="build") From e33cbac01fdfca24190bba0a9b0f28cad511788b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 12 Nov 2024 08:59:07 +0100 Subject: [PATCH 428/615] getting_started.rst: fix list of spack deps (#47557) --- lib/spack/docs/getting_started.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index cb8a586e3c94c4..6654f50e775230 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -35,7 +35,7 @@ A build matrix showing which packages are working on which systems is shown belo .. code-block:: console apt update - apt install build-essential ca-certificates coreutils curl environment-modules gfortran git gpg lsb-release python3 python3-distutils python3-venv unzip zip + apt install bzip2 ca-certificates file g++ gcc gfortran git gzip lsb-release patch python3 tar unzip xz-utils zstd .. tab-item:: RHEL @@ -43,14 +43,14 @@ A build matrix showing which packages are working on which systems is shown belo dnf install epel-release dnf group install "Development Tools" - dnf install curl findutils gcc-gfortran gnupg2 hostname iproute redhat-lsb-core python3 python3-pip python3-setuptools unzip python3-boto3 + dnf install gcc-gfortran redhat-lsb-core python3 unzip .. tab-item:: macOS Brew .. code-block:: console brew update - brew install curl gcc git gnupg zip + brew install gcc git zip ------------ Installation From 00e68af7949452175b49693056fe892cb4aa358b Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 12 Nov 2024 14:51:33 +0100 Subject: [PATCH 429/615] llvm-amdgpu: add missing dependency on libxml2 (#47560) --- var/spack/repos/builtin/packages/llvm-amdgpu/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 4fec91e9ea0667..6c98043a3add54 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -78,6 +78,7 @@ class LlvmAmdgpu(CMakePackage, CompilerPackage): depends_on("z3", type="link") depends_on("zlib-api", type="link") depends_on("ncurses+termlib", type="link") + depends_on("libxml2", type="link") depends_on("pkgconfig", type="build") # This flavour of LLVM doesn't work on MacOS, so we should ensure that it From 99fd37931c117c2842c503d623aa9749891a9203 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Tue, 12 Nov 2024 15:10:00 +0100 Subject: [PATCH 430/615] expat: Add 2.6.4 with security fixes + deprecate vulnerable 2.6.3 (#47521) --- var/spack/repos/builtin/packages/expat/package.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index a41d4912de8415..485f773a82db83 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -16,9 +16,14 @@ class Expat(AutotoolsPackage, CMakePackage): url = "https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2" license("MIT") - - version("2.6.3", sha256="b8baef92f328eebcf731f4d18103951c61fa8c8ec21d5ff4202fb6f2198aeb2d") - # deprecate all releases before 2.6.3 because of security issues + version("2.6.4", sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada") + # deprecate all releases before 2.6.4 because of security issues + # CVE-2024-50602 (fixed in 2.6.4) + version( + "2.6.3", + sha256="b8baef92f328eebcf731f4d18103951c61fa8c8ec21d5ff4202fb6f2198aeb2d", + deprecated=True, + ) # CVE-2024-45490 (fixed in 2.6.3) # CVE-2024-45491 (fixed in 2.6.3) # CVE-2024-45492 (fixed in 2.6.3) From e083acdc5dbf4b056181900c0205f3bfcf996d02 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 12 Nov 2024 17:04:20 +0100 Subject: [PATCH 431/615] costo: new package and to fix the build, add pkgconfig dep to vtk (#47121) Co-authored-by: Bernhard Kaindl --- .../repos/builtin/packages/costo/package.py | 49 +++++++++++++++++++ .../repos/builtin/packages/vtk/package.py | 5 +- 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/costo/package.py diff --git a/var/spack/repos/builtin/packages/costo/package.py b/var/spack/repos/builtin/packages/costo/package.py new file mode 100644 index 00000000000000..2e509974de1d87 --- /dev/null +++ b/var/spack/repos/builtin/packages/costo/package.py @@ -0,0 +1,49 @@ +# 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) + +from spack.package import * + + +class Costo(CMakePackage): + """costo stand for COSimulation TOols. + Its a layer above MPI to share data between meshes. + """ + + homepage = "https://gitlab.com/Te_ch/costo" + git = "https://gitlab.com/Te_ch/costo.git" + + maintainers("tech-91") + + license("LGPL-3.0-or-later") + + version("0.0.5", tag="v0.0.5", preferred=True) + version("develop", branch="devel") + version("main", branch="main", deprecated=True) + + variant("shared", default=True, description="Build shared library") + variant("tests", default=False, description="Enable testing") + + depends_on("mpi", type=all) + depends_on("python@3.10:", type=all) + + depends_on("py-non-regression-test-tools", type="build") + depends_on("py-pyvista", type=("build", "run")) + depends_on("py-numpy", type=("build", "link", "run")) + depends_on("py-mpi4py", type=("build", "run")) + depends_on("py-scipy", type=("build", "run")) + depends_on("py-mgmetis", type=("build", "run")) + depends_on("py-colorama", type=("build", "run")) + depends_on("py-pip", type="build") + + def cmake_args(self): + args = [ + # self.define("COSTO_ENABLE_TESTS", "OFF"), + self.define("COSTO_ENABLE_PYTHON_BINDINGS", "OFF"), + self.define("WITH_PYTHON_MODULE", "ON"), + self.define_from_variant("WITH_SHARED_LIBS", "shared"), + self.define_from_variant("WITH_TESTS", "tests"), + ] + + return args diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index d2da1fe43e3bea..10e941e8dc07cb 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -54,8 +54,9 @@ class Vtk(CMakePackage): version("6.3.0", sha256="92a493354c5fa66bea73b5fc014154af5d9f3f6cee8d20a826f4cd5d4b0e8a5e") version("6.1.0", sha256="bd7df10a479606d529a8b71f466c44a2bdd11fd534c62ce0aa44fad91883fa34") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build", when="platform=linux") # VTK7 defaults to OpenGL2 rendering backend variant("opengl2", default=True, description="Enable OpenGL2 backend") From e7c9bb5258211bf26fcc17bce23f5ff839cfa900 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Tue, 12 Nov 2024 17:53:34 +0000 Subject: [PATCH 432/615] py-constantly: add v23.10.4 (#47548) * py-constantly: added version 23.10.4 * py-constantly: fixed dependency on py-versioneer * py-constantly: updated py-versioneer dependency Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --- var/spack/repos/builtin/packages/arrow/package.py | 1 + var/spack/repos/builtin/packages/py-constantly/package.py | 2 ++ var/spack/repos/builtin/packages/thrift/package.py | 1 + var/spack/repos/builtin/packages/xfsprogs/package.py | 1 + 4 files changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index 994579cdb9d297..53fc4bd8c67b79 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -17,6 +17,7 @@ class Arrow(CMakePackage, CudaPackage): license("Apache-2.0") + version("18.0.0", sha256="9c473f2c9914c59ab571761c9497cf0e5cfd3ea335f7782ccc6121f5cb99ae9b") version("16.1.0", sha256="9762d9ecc13d09de2a03f9c625a74db0d645cb012de1e9a10dfed0b4ddc09524") version("15.0.2", sha256="4735b349845bff1fe95ed11abbfed204eb092cabc37523aa13a80cb830fe5b5e") version("14.0.2", sha256="07cdb4da6795487c800526b2865c150ab7d80b8512a31793e6a7147c8ccd270f") diff --git a/var/spack/repos/builtin/packages/py-constantly/package.py b/var/spack/repos/builtin/packages/py-constantly/package.py index b569b524348d90..4e6216ee5a2fbf 100644 --- a/var/spack/repos/builtin/packages/py-constantly/package.py +++ b/var/spack/repos/builtin/packages/py-constantly/package.py @@ -14,6 +14,8 @@ class PyConstantly(PythonPackage): license("MIT") + version("23.10.4", sha256="aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd") version("15.1.0", sha256="586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35") depends_on("py-setuptools", type="build") + depends_on("py-versioneer+toml@0.29", type="build", when="@23.10.4:") diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 14631e80bfa387..764b57b370dd77 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -65,6 +65,7 @@ class Thrift(Package): depends_on("ant", when="+java") extends("python", when="+python") + depends_on("python@:3.11.9", when="+python") depends_on("py-setuptools", type=("build", "run"), when="+python") depends_on("py-six@1.7.2:", type=("build", "run"), when="@0.10.0:+python") depends_on("py-tornado", type=("build", "run"), when="+python") diff --git a/var/spack/repos/builtin/packages/xfsprogs/package.py b/var/spack/repos/builtin/packages/xfsprogs/package.py index 2cc15a88613b0f..c80002bf29933c 100644 --- a/var/spack/repos/builtin/packages/xfsprogs/package.py +++ b/var/spack/repos/builtin/packages/xfsprogs/package.py @@ -14,6 +14,7 @@ class Xfsprogs(AutotoolsPackage): license("LGPL-2.1-or-later") + version("6.11.0", sha256="dae3bb432196f7b183b2e6bd5dc44bf33edbd7d0e85bd37d25c235df81b8100a") version("5.11.0", sha256="0e9c390fcdbb8a79e1b8f5e6e25fd529fc9f9c2ef8f2d5e647b3556b82d1b353") version("5.8.0", sha256="8ef46ed9e6bb927f407f541dc4324857c908ddf1374265edc910d23724048c6b") version("5.7.0", sha256="8f2348a68a686a3f4491dda5d62dd32d885fbc52d32875edd41e2c296e7b4f35") From acdcd1016a84ba3c7d2ecf95c6c61bc04795f4ae Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 12 Nov 2024 13:04:12 -0500 Subject: [PATCH 433/615] openssh: add v9.9p1 (#47555) --- .../repos/builtin/packages/openssh/package.py | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py index 07ea7c9599b192..a31bbf46fb9585 100755 --- a/var/spack/repos/builtin/packages/openssh/package.py +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -25,35 +25,38 @@ class Openssh(AutotoolsPackage): license("SSH-OpenSSH") + version("9.9p1", sha256="b343fbcdbff87f15b1986e6e15d6d4fc9a7d36066be6b7fb507087ba8f966c02") version("9.8p1", sha256="dd8bd002a379b5d499dfb050dd1fa9af8029e80461f4bb6c523c49973f5a39f3") version("9.7p1", sha256="490426f766d82a2763fcacd8d83ea3d70798750c7bd2aff2e57dc5660f773ffd") version("9.6p1", sha256="910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c") version("9.5p1", sha256="f026e7b79ba7fb540f75182af96dc8a8f1db395f922bbc9f6ca603672686086b") version("9.4p1", sha256="3608fd9088db2163ceb3e600c85ab79d0de3d221e59192ea1923e23263866a85") version("9.3p1", sha256="e9baba7701a76a51f3d85a62c383a3c9dcd97fa900b859bc7db114c1868af8a8") - version("9.2p1", sha256="3f66dbf1655fb45f50e1c56da62ab01218c228807b21338d634ebcdf9d71cf46") - version("9.1p1", sha256="19f85009c7e3e23787f0236fbb1578392ab4d4bf9f8ec5fe6bc1cd7e8bfdd288") - version("9.0p1", sha256="03974302161e9ecce32153cfa10012f1e65c8f3750f573a73ab1befd5972a28a") - version("8.9p1", sha256="fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7") - version("8.8p1", sha256="4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9") - version("8.7p1", sha256="7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24") - version("8.6p1", sha256="c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae") - version("8.5p1", sha256="f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25") - version("8.4p1", sha256="5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24") - version("8.3p1", sha256="f2befbe0472fe7eb75d23340eb17531cb6b3aac24075e2066b41f814e12387b2") - version("8.1p1", sha256="02f5dbef3835d0753556f973cd57b4c19b6b1f6cd24c03445e23ac77ca1b93ff") - version("7.9p1", sha256="6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad") - version("7.6p1", sha256="a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723") - version("7.5p1", sha256="9846e3c5fab9f0547400b4d2c017992f914222b3fd1f8eee6c7dc6bc5e59f9f0") - version("7.4p1", sha256="1b1fc4a14e2024293181924ed24872e6f2e06293f3e8926a376b8aec481f19d1") - version("7.3p1", sha256="3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc") - version("7.2p2", sha256="a72781d1a043876a224ff1b0032daa4094d87565a68528759c1c2cab5482548c") - version("7.1p2", sha256="dd75f024dcf21e06a0d6421d582690bf987a1f6323e32ad6619392f3bfde6bbd") - version("7.0p1", sha256="fd5932493a19f4c81153d812ee4e042b49bbd3b759ab3d9344abecc2bc1485e5") - version("6.9p1", sha256="6e074df538f357d440be6cf93dc581a21f22d39e236f217fcd8eacbb6c896cfe") - version("6.8p1", sha256="3ff64ce73ee124480b5bf767b9830d7d3c03bbcb6abe716b78f0192c37ce160e") - version("6.7p1", sha256="b2f8394eae858dabbdef7dac10b99aec00c95462753e80342e530bbb6f725507") - version("6.6p1", sha256="48c1f0664b4534875038004cc4f3555b8329c2a81c1df48db5c517800de203bb") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-38408 + version("9.2p1", sha256="3f66dbf1655fb45f50e1c56da62ab01218c228807b21338d634ebcdf9d71cf46") + version("9.1p1", sha256="19f85009c7e3e23787f0236fbb1578392ab4d4bf9f8ec5fe6bc1cd7e8bfdd288") + version("9.0p1", sha256="03974302161e9ecce32153cfa10012f1e65c8f3750f573a73ab1befd5972a28a") + version("8.9p1", sha256="fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7") + version("8.8p1", sha256="4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9") + version("8.7p1", sha256="7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24") + version("8.6p1", sha256="c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae") + version("8.5p1", sha256="f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25") + version("8.4p1", sha256="5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24") + version("8.3p1", sha256="f2befbe0472fe7eb75d23340eb17531cb6b3aac24075e2066b41f814e12387b2") + version("8.1p1", sha256="02f5dbef3835d0753556f973cd57b4c19b6b1f6cd24c03445e23ac77ca1b93ff") + version("7.9p1", sha256="6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad") + version("7.6p1", sha256="a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723") + version("7.5p1", sha256="9846e3c5fab9f0547400b4d2c017992f914222b3fd1f8eee6c7dc6bc5e59f9f0") + version("7.4p1", sha256="1b1fc4a14e2024293181924ed24872e6f2e06293f3e8926a376b8aec481f19d1") + version("7.3p1", sha256="3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc") + version("7.2p2", sha256="a72781d1a043876a224ff1b0032daa4094d87565a68528759c1c2cab5482548c") + version("7.1p2", sha256="dd75f024dcf21e06a0d6421d582690bf987a1f6323e32ad6619392f3bfde6bbd") + version("7.0p1", sha256="fd5932493a19f4c81153d812ee4e042b49bbd3b759ab3d9344abecc2bc1485e5") + version("6.9p1", sha256="6e074df538f357d440be6cf93dc581a21f22d39e236f217fcd8eacbb6c896cfe") + version("6.8p1", sha256="3ff64ce73ee124480b5bf767b9830d7d3c03bbcb6abe716b78f0192c37ce160e") + version("6.7p1", sha256="b2f8394eae858dabbdef7dac10b99aec00c95462753e80342e530bbb6f725507") + version("6.6p1", sha256="48c1f0664b4534875038004cc4f3555b8329c2a81c1df48db5c517800de203bb") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated From 57a1ebc77ee69a15902f3e65a8467d4937c3f194 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Tue, 12 Nov 2024 18:20:48 +0000 Subject: [PATCH 434/615] xfsprogs: fix dependency on gettext (#47547) * xfsprogs: fix dependency on gettext * changed dependency on gettext in xfsprogs Co-authored-by: Wouter Deconinck --------- Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/xfsprogs/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xfsprogs/package.py b/var/spack/repos/builtin/packages/xfsprogs/package.py index c80002bf29933c..c25a95ed4c5c95 100644 --- a/var/spack/repos/builtin/packages/xfsprogs/package.py +++ b/var/spack/repos/builtin/packages/xfsprogs/package.py @@ -26,6 +26,7 @@ class Xfsprogs(AutotoolsPackage): depends_on("libinih") depends_on("gettext") + depends_on("gettext@:0.21.1", when="@:6.3") depends_on("uuid") depends_on("util-linux") @@ -33,7 +34,7 @@ def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("@:5.4.0 %gcc@10:"): flags.append("-fcommon") - elif name == "ldlibs": + elif name == "ldlibs" or name == "ldflags": if "intl" in self.spec["gettext"].libs.names: flags.append("-lintl") return build_system_flags(name, flags) From f6d6a5a480450c90b256c2f06104b057add8fa57 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 12 Nov 2024 13:31:57 -0500 Subject: [PATCH 435/615] parsec: update urls (#47416) * parsec: update urls * parsec: fix homepage --- .../repos/builtin/packages/parsec/package.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/parsec/package.py b/var/spack/repos/builtin/packages/parsec/package.py index faba983eea22ae..e15068a15ea565 100644 --- a/var/spack/repos/builtin/packages/parsec/package.py +++ b/var/spack/repos/builtin/packages/parsec/package.py @@ -15,7 +15,7 @@ class Parsec(CMakePackage, CudaPackage): parallel execution of micro-tasks on distributed, heterogeneous systems. """ - homepage = "https://icl.utk.edu/dte" + homepage = "https://github.com/icldisco/parsec" git = "https://github.com/icldisco/parsec.git" url = "https://github.com/ICLDisco/parsec/archive/refs/tags/parsec-3.0.2012.tar.gz" list_url = "https://github.com/ICLDisco/parsec/tags" @@ -27,20 +27,12 @@ class Parsec(CMakePackage, CudaPackage): license("BSD-3-Clause-Open-MPI") version("master", branch="master") - version( - "3.0.2209", - sha256="67d383d076991484cb2a265f56420abdea7cc1f329c63ac65a3e96fbfb6cc295", - url="https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2209.tar.bz2", - ) - version( - "3.0.2012", - sha256="f565bcfffe106be8237b6aea3e83a5770607b7236606414b6f270244fa6ec3bc", - url="https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2012.tar.bz2", - ) + version("3.0.2209", sha256="67d383d076991484cb2a265f56420abdea7cc1f329c63ac65a3e96fbfb6cc295") + version("3.0.2012", sha256="7a8403ca67305738f3974cbc7a51b64c4ec353ae9170f2468262a9a52035eff6") version( "1.1.0", - sha256="d2928033c121000ae0a554f1e7f757c1f22274a8b74457ecd52744ae1f70b95a", - url="https://bitbucket.org/icldistcomp/parsec/get/v1.1.0.tar.bz2", + sha256="d1e038713f2c1cd7db6765c891408d85648c46ee23e780fbd5e941b53c9eef85", + url="https://github.com/ICLDisco/parsec/archive/refs/tags/v1.1.0.tar.gz", ) variant( From 751585f1e3f93a784f402fdc598949d5e63cba34 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 12 Nov 2024 11:07:34 -0800 Subject: [PATCH 436/615] glab: add v1.48.0 (#47552) --- var/spack/repos/builtin/packages/glab/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/glab/package.py b/var/spack/repos/builtin/packages/glab/package.py index 58ed827e1fd112..ed4eead79820c5 100644 --- a/var/spack/repos/builtin/packages/glab/package.py +++ b/var/spack/repos/builtin/packages/glab/package.py @@ -16,6 +16,7 @@ class Glab(GoPackage): license("MIT") + version("1.48.0", sha256="45410de23a7bad37feeae18f47f3c0113d81133ad9bb97c8f0b8afc5409272c7") version("1.46.1", sha256="935f732ddacc6e54fc83d06351fc25454ac8a58c465c3efa43e066ea226257c2") version("1.36.0", sha256="8d6c759ebfe9c6942fcdb7055a4a5c7209a3b22beb25947f906c9aef3bc067e8") version("1.35.0", sha256="7ed31c7a9b425fc15922f83c5dd8634a2758262a4f25f92583378655fcad6303") @@ -40,6 +41,7 @@ class Glab(GoPackage): depends_on("go@1.22.4:", type="build", when="@1.42:") depends_on("go@1.22.5:", type="build", when="@1.44:") depends_on("go@1.23:", type="build", when="@1.46:") + depends_on("go@1.23.2:", type="build", when="@1.48:") build_directory = "cmd/glab" From 3dadf569a4754c4254db7f411336e67dde52cbf4 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 20:41:14 +0100 Subject: [PATCH 437/615] geomodel: Allow configuring C++ standard (#47422) * geomodel: Allow configuring C++ standard * drop c++11 --- var/spack/repos/builtin/packages/geomodel/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/geomodel/package.py b/var/spack/repos/builtin/packages/geomodel/package.py index 9490c569e8aa53..68d561a015a373 100644 --- a/var/spack/repos/builtin/packages/geomodel/package.py +++ b/var/spack/repos/builtin/packages/geomodel/package.py @@ -54,6 +54,14 @@ class Geomodel(CMakePackage): when="+fullsimlight", ) + variant( + "cxxstd", + default="17", + values=("17", "20", "23"), + multi=False, + description="Use the specified C++ standard when building", + ) + conflicts("+fullsimlight", when="+fsl", msg="FSL triggers the build of the FullSimLight") depends_on("cmake@3.16:", type="build") @@ -80,5 +88,6 @@ def cmake_args(self): self.define_from_variant("GEOMODEL_BUILD_FSL", "fsl"), self.define_from_variant("GEOMODEL_BUILD_EXAMPLES", "examples"), self.define_from_variant("GEOMODEL_BUILD_TOOLS", "tools"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), ] return args From 6d8fdbcf829138610fe8b78f757a1b4ca1058c00 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 12 Nov 2024 12:54:19 -0800 Subject: [PATCH 438/615] direnv: add v2.35.0 (#47551) --- var/spack/repos/builtin/packages/direnv/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/direnv/package.py b/var/spack/repos/builtin/packages/direnv/package.py index e091d1242f22d3..58c8807424f496 100644 --- a/var/spack/repos/builtin/packages/direnv/package.py +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -16,6 +16,7 @@ class Direnv(GoPackage): license("MIT") + version("2.35.0", sha256="a7aaec49d1b305f0745dad364af967fb3dc9bb5befc9f29d268d528b5a474e57") version("2.34.0", sha256="3d7067e71500e95d69eac86a271a6b6fc3f2f2817ba0e9a589524bf3e73e007c") version("2.33.0", sha256="8ef18051aa6bdcd6b59f04f02acdd0b78849b8ddbdbd372d4957af7889c903ea") version("2.32.3", sha256="c66f6d1000f28f919c6106b5dcdd0a0e54fb553602c63c60bf59d9bbdf8bd33c") From a02b40b670692cc7986a32d5a1de65e252b1791c Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 12 Nov 2024 13:15:53 -0800 Subject: [PATCH 439/615] restic: add v0.17.3 (#47553) --- var/spack/repos/builtin/packages/restic/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/restic/package.py b/var/spack/repos/builtin/packages/restic/package.py index e6144806699c50..2c3489e98e3049 100644 --- a/var/spack/repos/builtin/packages/restic/package.py +++ b/var/spack/repos/builtin/packages/restic/package.py @@ -16,6 +16,7 @@ class Restic(GoPackage): license("BSD-2-Clause") + version("0.17.3", sha256="bf0dd73edfae531c24070e2e7833938613f7b179ed165e6b681098edfdf286c8") version("0.17.1", sha256="cba3a5759690d11dae4b5620c44f56be17a5688e32c9856776db8a9a93d6d59a") version("0.16.4", sha256="d736a57972bb7ee3398cf6b45f30e5455d51266f5305987534b45a4ef505f965") version("0.16.3", sha256="a94d6c1feb0034fcff3e8b4f2d65c0678f906fc21a1cf2d435341f69e7e7af52") From 1809b81e1d28e51e13846d1e981e8e49e2ea0c43 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Tue, 12 Nov 2024 14:04:47 -0800 Subject: [PATCH 440/615] parse_specs: special case for concretizing lookups quickly (#47556) We added unification semantics for parsing specs from the CLI, but there are a couple of special cases in which we can avoid calls to the concretizer for speed when the specs can all be resolved by lookups. - [x] special case 1: solving a single spec - [x] special case 2: all specs are either concrete (come from a file) or have an abstract hash. In this case if concretizer:unify:true we need an additional check to confirm the specs are compatible. - [x] add a parameterized test for unifying on the CI --------- Signed-off-by: Todd Gamblin Co-authored-by: Todd Gamblin --- lib/spack/spack/cmd/__init__.py | 38 +++++++ lib/spack/spack/spec.py | 6 +- lib/spack/spack/test/cmd/init_py_functions.py | 101 ++++++++++++++++++ lib/spack/spack/test/cmd/spec.py | 40 +++++++ 4 files changed, 182 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index c0efd5252153e7..9449face85a7fc 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -8,6 +8,7 @@ import os import re import sys +from collections import Counter from typing import List, Union import llnl.string @@ -189,6 +190,43 @@ def _concretize_spec_pairs(to_concretize, tests=False): rules from config.""" unify = spack.config.get("concretizer:unify", False) + # Special case for concretizing a single spec + if len(to_concretize) == 1: + abstract, concrete = to_concretize[0] + return [concrete or abstract.concretized()] + + # Special case if every spec is either concrete or has an abstract hash + if all( + concrete or abstract.concrete or abstract.abstract_hash + for abstract, concrete in to_concretize + ): + # Get all the concrete specs + ret = [ + concrete or (abstract if abstract.concrete else abstract.lookup_hash()) + for abstract, concrete in to_concretize + ] + + # If unify: true, check that specs don't conflict + # Since all concrete, "when_possible" is not relevant + if unify is True: # True, "when_possible", False are possible values + runtimes = spack.repo.PATH.packages_with_tags("runtime") + specs_per_name = Counter( + spec.name + for spec in traverse.traverse_nodes( + ret, deptype=("link", "run"), key=traverse.by_dag_hash + ) + if spec.name not in runtimes # runtimes are allowed multiple times + ) + + conflicts = sorted(name for name, count in specs_per_name.items() if count > 1) + if conflicts: + raise spack.error.SpecError( + "Specs conflict and `concretizer:unify` is configured true.", + f" specs depend on multiple versions of {', '.join(conflicts)}", + ) + return ret + + # Standard case concretize_method = spack.concretize.concretize_separately # unify: false if unify is True: concretize_method = spack.concretize.concretize_together diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 3d92879484f8a7..d87296a3fb7c79 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -59,7 +59,7 @@ import re import socket import warnings -from typing import Any, Callable, Dict, List, Match, Optional, Set, Tuple, Union +from typing import Any, Callable, Dict, Iterable, List, Match, Optional, Set, Tuple, Union import archspec.cpu @@ -2828,7 +2828,7 @@ def ensure_no_deprecated(root): msg += " For each package listed, choose another spec\n" raise SpecDeprecatedError(msg) - def concretize(self, tests: Union[bool, List[str]] = False) -> None: + def concretize(self, tests: Union[bool, Iterable[str]] = False) -> None: """Concretize the current spec. Args: @@ -2956,7 +2956,7 @@ def _finalize_concretization(self): for spec in self.traverse(): spec._cached_hash(ht.dag_hash) - def concretized(self, tests=False): + def concretized(self, tests: Union[bool, Iterable[str]] = False) -> "spack.spec.Spec": """This is a non-destructive version of concretize(). First clones, then returns a concrete version of this package diff --git a/lib/spack/spack/test/cmd/init_py_functions.py b/lib/spack/spack/test/cmd/init_py_functions.py index 4dc000edb9434d..deb6222411b725 100644 --- a/lib/spack/spack/test/cmd/init_py_functions.py +++ b/lib/spack/spack/test/cmd/init_py_functions.py @@ -4,10 +4,15 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import pytest +import spack.environment as ev +import spack.error +import spack.solver.asp as asp from spack.cmd import ( CommandNameError, PythonNameError, cmd_name, + matching_specs_from_env, + parse_specs, python_name, require_cmd_name, require_python_name, @@ -34,3 +39,99 @@ def test_require_cmd_name(): with pytest.raises(CommandNameError): require_cmd_name("okey_dokey") require_cmd_name(cmd_name("okey_dokey")) + + +@pytest.mark.parametrize( + "unify,spec_strs,error", + [ + # single spec + (True, ["zmpi"], None), + (False, ["mpileaks"], None), + # multiple specs, some from hash some from file + (True, ["zmpi", "mpileaks^zmpi", "libelf"], None), + (True, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], spack.error.SpecError), + (False, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], None), + ], +) +def test_special_cases_concretization_parse_specs( + unify, spec_strs, error, monkeypatch, mutable_config, mutable_database, tmpdir +): + """Test that special cases in parse_specs(concretize=True) bypass solver""" + + # monkeypatch to ensure we do not call the actual concretizer + def _fail(*args, **kwargs): + assert False + + monkeypatch.setattr(asp.SpackSolverSetup, "setup", _fail) + + spack.config.set("concretizer:unify", unify) + + args = [f"/{spack.store.STORE.db.query(s)[0].dag_hash()}" for s in spec_strs] + if len(args) > 1: + # We convert the last one to a specfile input + filename = tmpdir.join("spec.json") + spec = parse_specs(args[-1], concretize=True)[0] + with open(filename, "w") as f: + spec.to_json(f) + args[-1] = str(filename) + + if error: + with pytest.raises(error): + parse_specs(args, concretize=True) + else: + # assertion error from monkeypatch above if test fails + parse_specs(args, concretize=True) + + +@pytest.mark.parametrize( + "unify,spec_strs,error", + [ + # single spec + (True, ["zmpi"], None), + (False, ["mpileaks"], None), + # multiple specs, some from hash some from file + (True, ["zmpi", "mpileaks^zmpi", "libelf"], None), + (True, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], spack.error.SpecError), + (False, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], None), + ], +) +def test_special_cases_concretization_matching_specs_from_env( + unify, + spec_strs, + error, + monkeypatch, + mutable_config, + mutable_database, + tmpdir, + mutable_mock_env_path, +): + """Test that special cases in parse_specs(concretize=True) bypass solver""" + + # monkeypatch to ensure we do not call the actual concretizer + def _fail(*args, **kwargs): + assert False + + monkeypatch.setattr(asp.SpackSolverSetup, "setup", _fail) + + spack.config.set("concretizer:unify", unify) + + ev.create("test") + env = ev.read("test") + + args = [f"/{spack.store.STORE.db.query(s)[0].dag_hash()}" for s in spec_strs] + if len(args) > 1: + # We convert the last one to a specfile input + filename = tmpdir.join("spec.json") + spec = parse_specs(args[-1], concretize=True)[0] + with open(filename, "w") as f: + spec.to_json(f) + args[-1] = str(filename) + + with env: + specs = parse_specs(args, concretize=False) + if error: + with pytest.raises(error): + matching_specs_from_env(specs) + else: + # assertion error from monkeypatch above if test fails + matching_specs_from_env(specs) diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py index a57c40ec926823..1d0d08f494b595 100644 --- a/lib/spack/spack/test/cmd/spec.py +++ b/lib/spack/spack/test/cmd/spec.py @@ -179,3 +179,43 @@ def test_spec_version_assigned_git_ref_as_version(name, version, error): else: output = spec(name + "@" + version) assert version in output + + +@pytest.mark.parametrize( + "unify, spec_hash_args, match, error", + [ + # success cases with unfiy:true + (True, ["mpileaks_mpich"], "mpich", None), + (True, ["mpileaks_zmpi"], "zmpi", None), + (True, ["mpileaks_mpich", "dyninst"], "mpich", None), + (True, ["mpileaks_zmpi", "dyninst"], "zmpi", None), + # same success cases with unfiy:false + (False, ["mpileaks_mpich"], "mpich", None), + (False, ["mpileaks_zmpi"], "zmpi", None), + (False, ["mpileaks_mpich", "dyninst"], "mpich", None), + (False, ["mpileaks_zmpi", "dyninst"], "zmpi", None), + # cases with unfiy:false + (True, ["mpileaks_mpich", "mpileaks_zmpi"], "callpath, mpileaks", spack.error.SpecError), + (False, ["mpileaks_mpich", "mpileaks_zmpi"], "zmpi", None), + ], +) +def test_spec_unification_from_cli( + install_mockery, mutable_config, mutable_database, unify, spec_hash_args, match, error +): + """Ensure specs grouped together on the CLI are concretized together when unify:true.""" + spack.config.set("concretizer:unify", unify) + + db = spack.store.STORE.db + spec_lookup = { + "mpileaks_mpich": db.query_one("mpileaks ^mpich").dag_hash(), + "mpileaks_zmpi": db.query_one("mpileaks ^zmpi").dag_hash(), + "dyninst": db.query_one("dyninst").dag_hash(), + } + + hashes = [f"/{spec_lookup[name]}" for name in spec_hash_args] + if error: + with pytest.raises(error, match=match): + output = spec(*hashes) + else: + output = spec(*hashes) + assert match in output From a76e3f203025c1ab9ea12447d2852db1fd7eb326 Mon Sep 17 00:00:00 2001 From: SXS Bot <31972027+sxs-bot@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:16:27 -0500 Subject: [PATCH 441/615] spectre: add v2024.03.19 (#43275) Co-authored-by: sxs-bot --- var/spack/repos/builtin/packages/spectre/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/spectre/package.py b/var/spack/repos/builtin/packages/spectre/package.py index 40282f7d5a4308..3d56114c420044 100644 --- a/var/spack/repos/builtin/packages/spectre/package.py +++ b/var/spack/repos/builtin/packages/spectre/package.py @@ -31,6 +31,9 @@ class Spectre(CMakePackage): license("MIT") version("develop", branch="develop") + version( + "2024.03.19", sha256="42a25c8827b56268d9826239cde521491be19318d83785b35cd0265a9f6a1f7c" + ) version( "2024.09.29", sha256="b5e84b4564ad7cd2e069a24c6c472aab342753fe8393242eceba378b52226acb" ) From ad518d975c711c04bdc013363d8fc33a212e9194 Mon Sep 17 00:00:00 2001 From: v <39996356+vhewes@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:34:11 -0600 Subject: [PATCH 442/615] py-nugraph, ph5concat, py-numl: Add new nugraph packages (#47315) --- .../builtin/packages/ph5concat/package.py | 35 ++++++++++++++++ .../builtin/packages/py-nugraph/package.py | 34 ++++++++++++++++ .../repos/builtin/packages/py-numl/package.py | 40 +++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ph5concat/package.py create mode 100644 var/spack/repos/builtin/packages/py-nugraph/package.py create mode 100644 var/spack/repos/builtin/packages/py-numl/package.py diff --git a/var/spack/repos/builtin/packages/ph5concat/package.py b/var/spack/repos/builtin/packages/ph5concat/package.py new file mode 100644 index 00000000000000..949d86d24b66d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/ph5concat/package.py @@ -0,0 +1,35 @@ +# 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) + +from spack.package import * + + +class Ph5concat(AutotoolsPackage): + """Parallel Data Concatenation for High Energy Physics Data Analysis""" + + homepage = "https://github.com/NU-CUCIS/ph5concat" + url = "https://github.com/NU-CUCIS/ph5concat/archive/v1.1.0.tar.gz" + + maintainers("vhewes") + + version("1.1.0", sha256="cecc22325a56771cda1fc186e6bd1f9bde2957beca3fa9a387d55462efd5254f") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + + depends_on("zlib") + depends_on("hdf5+hl+mpi@1.10.4:1.12") + depends_on("mpich") + + variant("profiling", default=False, description="Enable profiling support") + + def setup_build_environment(self, env): + env.set("LIBS", "-ldl -lz") + + def configure_args(self): + args = [f"--with-{pkg}={self.spec[pkg].prefix}" for pkg in ("hdf5", "mpich")] + args.extend(self.enable_or_disable("profiling")) + return args diff --git a/var/spack/repos/builtin/packages/py-nugraph/package.py b/var/spack/repos/builtin/packages/py-nugraph/package.py new file mode 100644 index 00000000000000..83b14447a26412 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-nugraph/package.py @@ -0,0 +1,34 @@ +# 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) + +from spack.package import * + + +class PyNugraph(PythonPackage): + """Graph Neural Network for neutrino physics event reconstruction""" + + pypi = "nugraph/nugraph-24.7.1.tar.gz" + + maintainers("vhewes") + + license("MIT", checked_by="vhewes") + + version("24.7.1", sha256="e1449e4a37049cc774ad026d4f2db339eb60bb59109a11920bb65a4061915de8") + version("24.7.0", sha256="b95d93a1cbcd280a3529ce4782ef778b982d9d4edcc19f522442c38144895f65") + version("24.4.0", sha256="5f888d065819b1ec7c33e7f829ad65eb963db2cf109a5d31b4caef49c004f86f") + version("24.2.0", sha256="4765ea73b384e95a38a598499e77d805541e415049da9f6f46193f8bc281208a") + version("23.11.1", sha256="b160996fca9615b2c7e6ed02fb780af5edaa97f6cdafd45abdf65ea0c7a6f2ca") + version("23.11.0", sha256="a1e01a8c3143fc8db2cf8a3584d192a738d89eb865b1d52cd2994b24bd4175ec") + version("23.10.0", sha256="8a0219318c6bd6d0d240e419ef88cdedd7e944276f0cce430d9ece423e06f1b8") + + depends_on("py-flit-core", type="build") + + depends_on("py-matplotlib") + depends_on("py-numl") + depends_on("py-pynvml") + depends_on("py-seaborn") + depends_on("py-pytorch-lightning") + + extends("python") diff --git a/var/spack/repos/builtin/packages/py-numl/package.py b/var/spack/repos/builtin/packages/py-numl/package.py new file mode 100644 index 00000000000000..1c61a9d53eb0b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-numl/package.py @@ -0,0 +1,40 @@ +# 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) + +from spack.package import * + + +class PyNuml(PythonPackage): + """Standardised ML input processing for particle physics""" + + pypi = "pynuml/pynuml-24.7.1.tar.gz" + + maintainers("vhewes") + + license("MIT", checked_by="vhewes") + + version("24.7.1", sha256="20d2f1a07887473e67c79ecc3804b8012e22b78883199fdb0d07bb1b725b6ab0") + version("24.7.0", sha256="d47f71ead6861278595b79d04c554da4998d5c4c50587e4c90231f50db0f2e81") + version("24.6.0", sha256="357d2b0e0b9ca179514d177278620e5ac57bed37bfb6d145c172150126432613") + version("23.11.0", sha256="1a7e61864cfeb0b27c6a93646c33e3f457bbc384eb86aee4df76b5e02898d02f") + version("23.9.0", sha256="77ea8c9df541351adeb249594cce27d742973ee82a0d7f2ad8cdcffa9d3fa6b1") + version("23.8.0", sha256="0896797f3f70b3a6d3d74f7a3e7fe5eaf59a2000a47ffc7ac08b73be0aa15706") + version("23.7.0", sha256="5449dd09a7e046d036e12c7971e61d2862cdb79c7932144b038288fc05ca50a8") + version("23.6.1", sha256="fdb23a9d4f1b83b06cc35b07608fe4c2e55f8307ac47851cccc21a20b69ab674") + version("23.6.0", sha256="fcc1546b9489584f2635f6418c5e1a43f6bdf02dd5c46b7afa09ea5f247524a2") + version("23.5.2", sha256="d83576c8e25e22cc9ba68a35b9690ea861f7a4c09db65ca134849c89fba9b330") + version("23.5.1", sha256="73ef1bea1022b9ebddec35ac7d66c1394003aa5e63a4ec99bfa14d4f833e04a4") + version("23.5.0", sha256="dccb774932813ddc788b1d27e52e251d9db6ea16b303596bfa0955ae51098674") + + depends_on("py-flit-core", type="build") + + depends_on("mpich") + depends_on("py-h5py +mpi") + depends_on("py-pandas") + depends_on("py-particle") + depends_on("py-plotly") + depends_on("py-torch-geometric") + + extends("python") From bf16f0bf7424355976470cd4ae8813b9960b16fa Mon Sep 17 00:00:00 2001 From: John Gouwar Date: Tue, 12 Nov 2024 23:51:19 -0500 Subject: [PATCH 443/615] Add solver capability for synthesizing splices of ABI compatible packages. (#46729) This PR provides complementary 2 features: 1. An augmentation to the package language to express ABI compatibility relationships among packages. 2. An extension to the concretizer that can synthesize splices between ABI compatible packages. 1. The `can_splice` directive and ABI compatibility We augment the package language with a single directive: `can_splice`. Here is an example of a package `Foo` exercising the `can_splice` directive: class Foo(Package): version("1.0") version("1.1") variant("compat", default=True) variant("json", default=False) variant("pic", default=False) can_splice("foo@1.0", when="@1.1") can_splice("bar@1.0", when="@1.0+compat") can_splice("baz@1.0+compat", when="@1.0+compat", match_variants="*") can_splice("quux@1.0", when=@1.1~compat", match_variants="json") Explanations of the uses of each directive: - `can_splice("foo@1.0", when="@1.1")`: If `foo@1.0` is the dependency of an already installed spec and `foo@1.1` could be a valid dependency for the parent spec, then `foo@1.1` can be spliced in for `foo@1.0` in the parent spec. - `can_splice("bar@1.0", when="@1.0+compat")`: If `bar@1.0` is the dependency of an already installed spec and `foo@1.0+compat` could be a valid dependency for the parent spec, then `foo@1.0+compat` can be spliced in for `bar@1.0+compat` in the parent spec - `can_splice("baz@1.0", when="@1.0+compat", match_variants="*")`: If `baz@1.0+compat` is the dependency of an already installed spec and `foo@1.0+compat` could be a valid dependency for the parent spec, then `foo@1.0+compat` can be spliced in for `baz@1.0+compat` in the parent spec, provided that they have the same value for all other variants (regardless of what those values are). - `can_splice("quux@1.0", when=@1.1~compat", match_variants="json")`:If `quux@1.0` is the dependency of an already installed spec and `foo@1.1~compat` could be a valid dependency for the parent spec, then `foo@1.0~compat` can be spliced in for `quux@1.0` in the parent spec, provided that they have the same value for their `json` variant. 2. Augmenting the solver to synthesize splices ### Changes to the hash encoding in `asp.py` Previously, when including concrete specs in the solve, they would have the following form: installed_hash("foo", "xxxyyy") imposed_constraint("xxxyyy", "foo", "attr1", ...) imposed_constraint("xxxyyy", "foo", "attr2", ...) % etc. Concrete specs now have the following form: installed_hash("foo", "xxxyyy") hash_attr("xxxyyy", "foo", "attr1", ...) hash_attr("xxxyyy", "foo", "attr2", ...) This transformation allows us to control which constraints are imposed when we select a hash, to facilitate the splicing of dependencies. 2.1 Compiling `can_splice` directives in `asp.py` Consider the concrete spec: foo@2.72%gcc@11.4 arch=linux-ubuntu22.04-icelake build_system=autotools ^bar ... It will emit the following facts for reuse (below is a subset) installed_hash("foo", "xxxyyy") hash_attr("xxxyyy", "hash", "foo", "xxxyyy") hash_attr("xxxyyy", "version", "foo", "2.72") hash_attr("xxxyyy", "node_os", "ubuntu22.04") hash_attr("xxxyyy", "hash", "bar", "zzzqqq") hash_attr("xxxyyy", "depends_on", "foo", "bar", "link") Rules that derive abi_splice_conditions_hold will be generated from use of the `can_splice` directive. They will have the following form: can_splice("foo@1.0.0+a", when="@1.0.1+a", match_variants=["b"]) ---> abi_splice_conditions_hold(0, node(SID, "foo"), "foo", BaseHash) :- installed_hash("foo", BaseHash), attr("node", node(SID, SpliceName)), attr("node_version_satisfies", node(SID, "foo"), "1.0.1"), hash_attr("hash", "node_version_satisfies", "foo", "1.0.1"), attr("variant_value", node(SID, "foo"), "a", "True"), hash_attr("hash", "variant_value", "foo", "a", "True"), attr("variant_value", node(SID, "foo"), "b", VariVar0), hash_attr("hash", "variant_value", "foo", "b", VariVar0). 2.2 Synthesizing splices in `concretize.lp` and `splices.lp` The ASP solver generates "splice_at_hash" attrs to indicate that a particular node has a splice in one of its immediate dependencies. Splices can be introduced in the dependencies of concrete specs when `splices.lp` is conditionally loaded (based on the config option `concretizer:splice:True`. 2.3 Constructing spliced specs in `asp.py` The method `SpecBuilder._resolve_splices` implements a top-down memoized implementation of hybrid splicing. This is an optimization over the more general `Spec.splice`, since the solver gives a global view of exactly which specs can be shared, to ensure the minimal number of splicing operations. Misc changes to facilitate configuration and benchmarking - Added the method `Solver.solve_with_stats` to expose timers from the public interface for easier benchmarking - Added the boolean config option `concretizer:splice` to conditionally load splicing behavior Co-authored-by: Greg Becker --- etc/spack/defaults/concretizer.yaml | 10 +- lib/spack/docs/build_settings.rst | 32 +++ lib/spack/docs/packaging_guide.rst | 52 +++- lib/spack/spack/directives.py | 38 +++ lib/spack/spack/package_base.py | 1 + lib/spack/spack/schema/concretizer.py | 3 +- lib/spack/spack/solver/asp.py | 202 ++++++++++++--- lib/spack/spack/solver/concretize.lp | 71 +++++- lib/spack/spack/solver/core.py | 13 + lib/spack/spack/solver/display.lp | 1 - lib/spack/spack/solver/splices.lp | 56 +++++ lib/spack/spack/spec.py | 24 +- lib/spack/spack/test/abi_splicing.py | 234 ++++++++++++++++++ lib/spack/spack/test/cmd/pkg.py | 14 +- lib/spack/spack/test/spec_semantics.py | 4 +- .../depends-on-manyvariants/package.py | 25 ++ .../depends-on-virtual-with-abi/package.py | 19 ++ .../packages/manyvariants/package.py | 33 +++ .../builtin.mock/packages/splice-h/package.py | 9 +- .../builtin.mock/packages/splice-z/package.py | 8 +- .../packages/virtual-abi-1/package.py | 25 ++ .../packages/virtual-abi-2/package.py | 25 ++ .../packages/virtual-abi-multi/package.py | 29 +++ .../packages/virtual-with-abi/package.py | 16 ++ 24 files changed, 885 insertions(+), 59 deletions(-) create mode 100644 lib/spack/spack/solver/splices.lp create mode 100644 lib/spack/spack/test/abi_splicing.py create mode 100644 var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py create mode 100644 var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py create mode 100644 var/spack/repos/builtin.mock/packages/manyvariants/package.py create mode 100644 var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py create mode 100644 var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py create mode 100644 var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py create mode 100644 var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index fef46967a84a58..8cce19ebab9317 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -39,7 +39,8 @@ concretizer: # Option to deal with possible duplicate nodes (i.e. different nodes from the same package) in the DAG. duplicates: # "none": allows a single node for any package in the DAG. - # "minimal": allows the duplication of 'build-tools' nodes only (e.g. py-setuptools, cmake etc.) + # "minimal": allows the duplication of 'build-tools' nodes only + # (e.g. py-setuptools, cmake etc.) # "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG) strategy: minimal # Option to specify compatibility between operating systems for reuse of compilers and packages @@ -47,3 +48,10 @@ concretizer: # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's # requires two entries i.e. os_compatible: {sonoma: [monterey], monterey: [sonoma]} os_compatible: {} + + # Option to specify whether to support splicing. Splicing allows for + # the relinking of concrete package dependencies in order to better + # reuse already built packages with ABI compatible dependencies + splice: + explicit: [] + automatic: false diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 97c81bf17a40ea..bdad8c8a51464c 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -237,3 +237,35 @@ is optional -- by default, splices will be transitive. ``mpich/abcdef`` instead of ``mvapich2`` as the MPI provider. Spack will warn the user in this case, but will not fail the concretization. + +.. _automatic_splicing: + +^^^^^^^^^^^^^^^^^^ +Automatic Splicing +^^^^^^^^^^^^^^^^^^ + +The Spack solver can be configured to do automatic splicing for +ABI-compatible packages. Automatic splices are enabled in the concretizer +config section + +.. code-block:: yaml + + concretizer: + splice: + automatic: True + +Packages can include ABI-compatibility information using the +``can_splice`` directive. See :ref:`the packaging +guide` for instructions on specifying ABI +compatibility using the ``can_splice`` directive. + +.. note:: + + The ``can_splice`` directive is experimental and may be changed in + future versions. + +When automatic splicing is enabled, the concretizer will combine any +number of ABI-compatible specs if possible to reuse installed packages +and packages available from binary caches. The end result of these +specs is equivalent to a series of transitive/intransitive splices, +but the series may be non-obvious. diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index d9a37175b6c72d..87fb184c656d1f 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1267,7 +1267,7 @@ Git fetching supports the following parameters to ``version``: This feature requires ``git`` to be version ``2.25.0`` or later but is useful for large repositories that have separate portions that can be built independently. If paths provided are directories then all the subdirectories and associated files - will also be cloned. + will also be cloned. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time. @@ -1367,8 +1367,8 @@ Submodules git-submodule``. Sparse-Checkout - You can supply ``git_sparse_paths`` at the package or version level to utilize git's - sparse-checkout feature. This will only clone the paths that are specified in the + You can supply ``git_sparse_paths`` at the package or version level to utilize git's + sparse-checkout feature. This will only clone the paths that are specified in the ``git_sparse_paths`` attribute for the package along with the files in the top level directory. This feature allows you to only clone what you need from a large repository. Note that this is a newer feature in git and requries git ``2.25.0`` or greater. @@ -2392,7 +2392,7 @@ by the ``--jobs`` option: .. code-block:: python :emphasize-lines: 7, 11 :linenos: - + class Xios(Package): ... def install(self, spec, prefix): @@ -5420,7 +5420,7 @@ by build recipes. Examples of checking :ref:`variant settings ` and determine whether it needs to also set up build dependencies (see :ref:`test-build-tests`). -The ``MyPackage`` package below provides two basic test examples: +The ``MyPackage`` package below provides two basic test examples: ``test_example`` and ``test_example2``. The first runs the installed ``example`` and ensures its output contains an expected string. The second runs ``example2`` without checking output so is only concerned with confirming @@ -5737,7 +5737,7 @@ subdirectory of the installation prefix. They are automatically copied to the appropriate relative paths under the test stage directory prior to executing stand-alone tests. -.. tip:: +.. tip:: *Perform test-related conversions once when copying files.* @@ -7113,6 +7113,46 @@ might write: CXXFLAGS += -I$DWARF_PREFIX/include CXXFLAGS += -L$DWARF_PREFIX/lib +.. _abi_compatibility: + +---------------------------- +Specifying ABI Compatibility +---------------------------- + +Packages can include ABI-compatibility information using the +``can_splice`` directive. For example, if ``Foo`` version 1.1 can +always replace version 1.0, then the package could have: + +.. code-block:: python + + can_splice("foo@1.0", when="@1.1") + +For virtual packages, packages can also specify ABI-compabitiliby with +other packages providing the same virtual. For example, ``zlib-ng`` +could specify: + +.. code-block:: python + + can_splice("zlib@1.3.1", when="@2.2+compat") + +Some packages have ABI-compatibility that is dependent on matching +variant values, either for all variants or for some set of +ABI-relevant variants. In those cases, it is not necessary to specify +the full combinatorial explosion. The ``match_variants`` keyword can +cover all single-value variants. + +.. code-block:: python + + can_splice("foo@1.1", when="@1.2", match_variants=["bar"]) # any value for bar as long as they're the same + can_splice("foo@1.2", when="@1.3", match_variants="*") # any variant values if all single-value variants match + +The concretizer will use ABI compatibility to determine automatic +splices when :ref:`automatic splicing` is enabled. + +.. note:: + + The ``can_splice`` directive is experimental, and may be replaced + by a higher-level interface in future versions of Spack. .. _package_class_structure: diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 0d6b66780c8921..0e3bb522cefe8b 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -77,6 +77,7 @@ class OpenMpi(Package): "build_system", "requires", "redistribute", + "can_splice", ] _patch_order_index = 0 @@ -505,6 +506,43 @@ def _execute_provides(pkg: "spack.package_base.PackageBase"): return _execute_provides +@directive("splice_specs") +def can_splice( + target: SpecType, *, when: SpecType, match_variants: Union[None, str, List[str]] = None +): + """Packages can declare whether they are ABI-compatible with another package + and thus can be spliced into concrete versions of that package. + + Args: + target: The spec that the current package is ABI-compatible with. + + when: An anonymous spec constraining current package for when it is + ABI-compatible with target. + + match_variants: A list of variants that must match + between target spec and current package, with special value '*' + which matches all variants. Example: a variant is defined on both + packages called json, and they are ABI-compatible whenever they agree on + the json variant (regardless of whether it is turned on or off). Note + that this cannot be applied to multi-valued variants and multi-valued + variants will be skipped by '*'. + """ + + def _execute_can_splice(pkg: "spack.package_base.PackageBase"): + when_spec = _make_when_spec(when) + if isinstance(match_variants, str) and match_variants != "*": + raise ValueError( + "* is the only valid string for match_variants " + "if looking to provide a single variant, use " + f"[{match_variants}] instead" + ) + if when_spec is None: + return + pkg.splice_specs[when_spec] = (spack.spec.Spec(target), match_variants) + + return _execute_can_splice + + @directive("patches") def patch( url_or_filename: str, diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index ef2f27cca63ab2..943c4eb0a4f666 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -622,6 +622,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, RedistributionMixin, metaclass patches: Dict["spack.spec.Spec", List["spack.patch.Patch"]] variants: Dict["spack.spec.Spec", Dict[str, "spack.variant.Variant"]] languages: Dict["spack.spec.Spec", Set[str]] + splice_specs: Dict["spack.spec.Spec", Tuple["spack.spec.Spec", Union[None, str, List[str]]]] #: By default, packages are not virtual #: Virtual packages override this attribute diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index 86e58de2580fe6..4fba79fece55ed 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -78,7 +78,8 @@ "transitive": {"type": "boolean", "default": False}, }, }, - } + }, + "automatic": {"type": "boolean"}, }, }, "duplicates": { diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 24b7aeb4ff17a5..32db03f5cf906b 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -52,6 +52,7 @@ from .core import ( AspFunction, + AspVar, NodeArgument, ast_sym, ast_type, @@ -524,12 +525,14 @@ def _compute_specs_from_answer_set(self): node = SpecBuilder.make_node(pkg=providers[0]) candidate = answer.get(node) - if candidate and candidate.build_spec.satisfies(input_spec): - if not candidate.satisfies(input_spec): - tty.warn( - "explicit splice configuration has caused the concretized spec" - f" {candidate} not to satisfy the input spec {input_spec}" - ) + if candidate and candidate.satisfies(input_spec): + self._concrete_specs.append(answer[node]) + self._concrete_specs_by_input[input_spec] = answer[node] + elif candidate and candidate.build_spec.satisfies(input_spec): + tty.warn( + "explicit splice configuration has caused the concretized spec" + f" {candidate} not to satisfy the input spec {input_spec}" + ) self._concrete_specs.append(answer[node]) self._concrete_specs_by_input[input_spec] = answer[node] else: @@ -854,6 +857,8 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre self.control.load(os.path.join(parent_dir, "libc_compatibility.lp")) else: self.control.load(os.path.join(parent_dir, "os_compatibility.lp")) + if setup.enable_splicing: + self.control.load(os.path.join(parent_dir, "splices.lp")) timer.stop("load") @@ -1166,6 +1171,9 @@ def __init__(self, tests: bool = False): # list of unique libc specs targeted by compilers (or an educated guess if no compiler) self.libcs: List[spack.spec.Spec] = [] + # If true, we have to load the code for synthesizing splices + self.enable_splicing: bool = spack.config.CONFIG.get("concretizer:splice:automatic") + def pkg_version_rules(self, pkg): """Output declared versions of a package. @@ -1336,6 +1344,10 @@ def pkg_rules(self, pkg, tests): # dependencies self.package_dependencies_rules(pkg) + # splices + if self.enable_splicing: + self.package_splice_rules(pkg) + # virtual preferences self.virtual_preferences( pkg.name, @@ -1674,6 +1686,94 @@ def dependency_holds(input_spec, requirements): self.gen.newline() + def _gen_match_variant_splice_constraints( + self, + pkg, + cond_spec: "spack.spec.Spec", + splice_spec: "spack.spec.Spec", + hash_asp_var: "AspVar", + splice_node, + match_variants: List[str], + ): + # If there are no variants to match, no constraints are needed + variant_constraints = [] + for i, variant_name in enumerate(match_variants): + vari_defs = pkg.variant_definitions(variant_name) + # the spliceable config of the package always includes the variant + if vari_defs != [] and any(cond_spec.satisfies(s) for (s, _) in vari_defs): + variant = vari_defs[0][1] + if variant.multi: + continue # cannot automatically match multi-valued variants + value_var = AspVar(f"VariValue{i}") + attr_constraint = fn.attr("variant_value", splice_node, variant_name, value_var) + hash_attr_constraint = fn.hash_attr( + hash_asp_var, "variant_value", splice_spec.name, variant_name, value_var + ) + variant_constraints.append(attr_constraint) + variant_constraints.append(hash_attr_constraint) + return variant_constraints + + def package_splice_rules(self, pkg): + self.gen.h2("Splice rules") + for i, (cond, (spec_to_splice, match_variants)) in enumerate( + sorted(pkg.splice_specs.items()) + ): + with named_spec(cond, pkg.name): + self.version_constraints.add((cond.name, cond.versions)) + self.version_constraints.add((spec_to_splice.name, spec_to_splice.versions)) + hash_var = AspVar("Hash") + splice_node = fn.node(AspVar("NID"), cond.name) + when_spec_attrs = [ + fn.attr(c.args[0], splice_node, *(c.args[2:])) + for c in self.spec_clauses(cond, body=True, required_from=None) + if c.args[0] != "node" + ] + splice_spec_hash_attrs = [ + fn.hash_attr(hash_var, *(c.args)) + for c in self.spec_clauses(spec_to_splice, body=True, required_from=None) + if c.args[0] != "node" + ] + if match_variants is None: + variant_constraints = [] + elif match_variants == "*": + filt_match_variants = set() + for map in pkg.variants.values(): + for k in map: + filt_match_variants.add(k) + filt_match_variants = list(filt_match_variants) + variant_constraints = self._gen_match_variant_splice_constraints( + pkg, cond, spec_to_splice, hash_var, splice_node, filt_match_variants + ) + else: + if any( + v in cond.variants or v in spec_to_splice.variants for v in match_variants + ): + raise Exception( + "Overlap between match_variants and explicitly set variants" + ) + variant_constraints = self._gen_match_variant_splice_constraints( + pkg, cond, spec_to_splice, hash_var, splice_node, match_variants + ) + + rule_head = fn.abi_splice_conditions_hold( + i, splice_node, spec_to_splice.name, hash_var + ) + rule_body_components = ( + [ + # splice_set_fact, + fn.attr("node", splice_node), + fn.installed_hash(spec_to_splice.name, hash_var), + ] + + when_spec_attrs + + splice_spec_hash_attrs + + variant_constraints + ) + rule_body = ",\n ".join(str(r) for r in rule_body_components) + rule = f"{rule_head} :-\n {rule_body}." + self.gen.append(rule) + + self.gen.newline() + def virtual_preferences(self, pkg_name, func): """Call func(vspec, provider, i) for each of pkg's provider prefs.""" config = spack.config.get("packages") @@ -2536,8 +2636,9 @@ def concrete_specs(self): for h, spec in self.reusable_and_possible.explicit_items(): # this indicates that there is a spec like this installed self.gen.fact(fn.installed_hash(spec.name, h)) - # this describes what constraints it imposes on the solve - self.impose(h, spec, body=True) + # indirection layer between hash constraints and imposition to allow for splicing + for pred in self.spec_clauses(spec, body=True, required_from=None): + self.gen.fact(fn.hash_attr(h, *pred.args)) self.gen.newline() # Declare as possible parts of specs that are not in package.py # - Add versions to possible versions @@ -3478,6 +3579,14 @@ def consume_facts(self): self._setup.effect_rules() +# This should be a dataclass, but dataclasses don't work on Python 3.6 +class Splice: + def __init__(self, splice_node: NodeArgument, child_name: str, child_hash: str): + self.splice_node = splice_node + self.child_name = child_name + self.child_hash = child_hash + + class SpecBuilder: """Class with actions to rebuild a spec from ASP results.""" @@ -3513,10 +3622,11 @@ def make_node(*, pkg: str) -> NodeArgument: """ return NodeArgument(id="0", pkg=pkg) - def __init__( - self, specs: List[spack.spec.Spec], *, hash_lookup: Optional[ConcreteSpecsByHash] = None - ): + def __init__(self, specs, hash_lookup=None): self._specs: Dict[NodeArgument, spack.spec.Spec] = {} + + # Matches parent nodes to splice node + self._splices: Dict[NodeArgument, List[Splice]] = {} self._result = None self._command_line_specs = specs self._flag_sources: Dict[Tuple[NodeArgument, str], Set[str]] = collections.defaultdict( @@ -3600,16 +3710,8 @@ def external_spec_selected(self, node, idx): def depends_on(self, parent_node, dependency_node, type): dependency_spec = self._specs[dependency_node] - edges = self._specs[parent_node].edges_to_dependencies(name=dependency_spec.name) - edges = [x for x in edges if id(x.spec) == id(dependency_spec)] depflag = dt.flag_from_string(type) - - if not edges: - self._specs[parent_node].add_dependency_edge( - self._specs[dependency_node], depflag=depflag, virtuals=() - ) - else: - edges[0].update_deptypes(depflag=depflag) + self._specs[parent_node].add_dependency_edge(dependency_spec, depflag=depflag, virtuals=()) def virtual_on_edge(self, parent_node, provider_node, virtual): dependencies = self._specs[parent_node].edges_to_dependencies(name=(provider_node.pkg)) @@ -3726,6 +3828,48 @@ def _order_index(flag_group): def deprecated(self, node: NodeArgument, version: str) -> None: tty.warn(f'using "{node.pkg}@{version}" which is a deprecated version') + def splice_at_hash( + self, + parent_node: NodeArgument, + splice_node: NodeArgument, + child_name: str, + child_hash: str, + ): + splice = Splice(splice_node, child_name=child_name, child_hash=child_hash) + self._splices.setdefault(parent_node, []).append(splice) + + def _resolve_automatic_splices(self): + """After all of the specs have been concretized, apply all immediate + splices in size order. This ensures that all dependencies are resolved + before their parents, allowing for maximal sharing and minimal copying. + """ + fixed_specs = {} + for node, spec in sorted(self._specs.items(), key=lambda x: len(x[1])): + immediate = self._splices.get(node, []) + if not immediate and not any( + edge.spec in fixed_specs for edge in spec.edges_to_dependencies() + ): + continue + new_spec = spec.copy(deps=False) + new_spec.build_spec = spec + for edge in spec.edges_to_dependencies(): + depflag = edge.depflag & ~dt.BUILD + if any(edge.spec.dag_hash() == splice.child_hash for splice in immediate): + splice = [s for s in immediate if s.child_hash == edge.spec.dag_hash()][0] + new_spec.add_dependency_edge( + self._specs[splice.splice_node], depflag=depflag, virtuals=edge.virtuals + ) + elif edge.spec in fixed_specs: + new_spec.add_dependency_edge( + fixed_specs[edge.spec], depflag=depflag, virtuals=edge.virtuals + ) + else: + new_spec.add_dependency_edge( + edge.spec, depflag=depflag, virtuals=edge.virtuals + ) + self._specs[node] = new_spec + fixed_specs[spec] = new_spec + @staticmethod def sort_fn(function_tuple) -> Tuple[int, int]: """Ensure attributes are evaluated in the correct order. @@ -3755,7 +3899,6 @@ def build_specs(self, function_tuples): # them here so that directives that build objects (like node and # node_compiler) are called in the right order. self.function_tuples = sorted(set(function_tuples), key=self.sort_fn) - self._specs = {} for name, args in self.function_tuples: if SpecBuilder.ignored_attributes.match(name): @@ -3785,10 +3928,14 @@ def build_specs(self, function_tuples): continue # if we've already gotten a concrete spec for this pkg, - # do not bother calling actions on it + # do not bother calling actions on it except for node_flag_source, + # since node_flag_source is tracking information not in the spec itself + # we also need to keep track of splicing information. spec = self._specs.get(args[0]) if spec and spec.concrete: - continue + do_not_ignore_attrs = ["node_flag_source", "splice_at_hash"] + if name not in do_not_ignore_attrs: + continue action(*args) @@ -3798,7 +3945,7 @@ def build_specs(self, function_tuples): # inject patches -- note that we' can't use set() to unique the # roots here, because the specs aren't complete, and the hash # function will loop forever. - roots = [spec.root for spec in self._specs.values() if not spec.root.installed] + roots = [spec.root for spec in self._specs.values()] roots = dict((id(r), r) for r in roots) for root in roots.values(): spack.spec.Spec.inject_patches_variant(root) @@ -3814,6 +3961,8 @@ def build_specs(self, function_tuples): for root in roots.values(): root._finalize_concretization() + self._resolve_automatic_splices() + for s in self._specs.values(): spack.spec.Spec.ensure_no_deprecated(s) @@ -3828,7 +3977,6 @@ def build_specs(self, function_tuples): ) specs = self.execute_explicit_splices() - return specs def execute_explicit_splices(self): @@ -4165,7 +4313,6 @@ def reusable_specs(self, specs: List[spack.spec.Spec]) -> List[spack.spec.Spec]: result = [] for reuse_source in self.reuse_sources: result.extend(reuse_source.selected_specs()) - # If we only want to reuse dependencies, remove the root specs if self.reuse_strategy == ReuseStrategy.DEPENDENCIES: result = [spec for spec in result if not any(root in spec for root in specs)] @@ -4335,11 +4482,10 @@ def __init__(self, provided, conflicts): super().__init__(msg) - self.provided = provided - # Add attribute expected of the superclass interface self.required = None self.constraint_type = None + self.provided = provided class InvalidSpliceError(spack.error.SpackError): diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index f4695be9b90fbf..63a5a711758120 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -1449,25 +1449,71 @@ attr("node_flag", PackageNode, NodeFlag) :- attr("node_flag_set", PackageNode, N %----------------------------------------------------------------------------- -% Installed packages +% Installed Packages %----------------------------------------------------------------------------- -% the solver is free to choose at most one installed hash for each package -{ attr("hash", node(ID, Package), Hash) : installed_hash(Package, Hash) } 1 - :- attr("node", node(ID, Package)), internal_error("Package must resolve to at most one hash"). +#defined installed_hash/2. +#defined abi_splice_conditions_hold/4. + +% These are the previously concretized attributes of the installed package as +% a hash. It has the general form: +% hash_attr(Hash, Attribute, PackageName, Args*) +#defined hash_attr/3. +#defined hash_attr/4. +#defined hash_attr/5. +#defined hash_attr/6. +#defined hash_attr/7. + +{ attr("hash", node(ID, PackageName), Hash): installed_hash(PackageName, Hash) } 1 :- + attr("node", node(ID, PackageName)), + internal_error("Package must resolve to at most 1 hash"). % you can't choose an installed hash for a dev spec :- attr("hash", PackageNode, Hash), attr("variant_value", PackageNode, "dev_path", _). - % You can't install a hash, if it is not installed :- attr("hash", node(ID, Package), Hash), not installed_hash(Package, Hash). -% This should be redundant given the constraint above -:- attr("node", PackageNode), 2 { attr("hash", PackageNode, Hash) }. -% if a hash is selected, we impose all the constraints that implies -impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash). +% hash_attrs are versions, but can_splice_attr are usually node_version_satisfies +hash_attr(Hash, "node_version_satisfies", PackageName, Constraint) :- + hash_attr(Hash, "version", PackageName, Version), + pkg_fact(PackageName, version_satisfies(Constraint, Version)). + +% This recovers the exact semantics for hash reuse hash and depends_on are where +% splices are decided, and virtual_on_edge can result in name-changes, which is +% why they are all treated separately. +imposed_constraint(Hash, Attr, PackageName) :- + hash_attr(Hash, Attr, PackageName). +imposed_constraint(Hash, Attr, PackageName, A1) :- + hash_attr(Hash, Attr, PackageName, A1), Attr != "hash". +imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- + hash_attr(Hash, Attr, PackageName, Arg1, Arg2), + Attr != "depends_on", + Attr != "virtual_on_edge". +imposed_constraint(Hash, Attr, PackageName, A1, A2, A3) :- + hash_attr(Hash, Attr, PackageName, A1, A2, A3). +imposed_constraint(Hash, "hash", PackageName, Hash) :- installed_hash(PackageName, Hash). +% Without splicing, we simply recover the exact semantics +imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- + hash_attr(ParentHash, "hash", ChildName, ChildHash), + ChildHash != ParentHash, + not abi_splice_conditions_hold(_, _, ChildName, ChildHash). + +imposed_constraint(Hash, "depends_on", PackageName, DepName, Type) :- + hash_attr(Hash, "depends_on", PackageName, DepName, Type), + hash_attr(Hash, "hash", DepName, DepHash), + not attr("splice_at_hash", _, _, DepName, DepHash). + +imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- + hash_attr(Hash, "virtual_on_edge", PackageName, DepName, VirtName), + not attr("splice_at_hash", _, _, DepName,_). + +% Rules pertaining to attr("splice_at_hash") and abi_splice_conditions_hold will +% be conditionally loaded from splices.lp + +impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash), attr("node", PackageNode). + +% If there is not a hash for a package, we build it. +build(PackageNode) :- attr("node", PackageNode), not concrete(PackageNode). -% if we haven't selected a hash for a package, we'll be building it -build(PackageNode) :- not attr("hash", PackageNode, _), attr("node", PackageNode). % Minimizing builds is tricky. We want a minimizing criterion @@ -1480,6 +1526,7 @@ build(PackageNode) :- not attr("hash", PackageNode, _), attr("node", PackageNode % criteria for built specs -- so that they take precedence over the otherwise % topmost-priority criterion to reuse what is installed. % + % The priority ranges are: % 1000+ Optimizations for concretization errors % 300 - 1000 Highest priority optimizations for valid solutions @@ -1505,12 +1552,10 @@ build_priority(PackageNode, 0) :- not build(PackageNode), attr("node", Package pkg_fact(Package, version_declared(Version, Weight, "installed")), not optimize_for_reuse(). -#defined installed_hash/2. % This statement, which is a hidden feature of clingo, let us avoid cycles in the DAG #edge (A, B) : depends_on(A, B). - %----------------------------------------------------------------- % Optimization to avoid errors %----------------------------------------------------------------- diff --git a/lib/spack/spack/solver/core.py b/lib/spack/spack/solver/core.py index 2530981a21dda6..ba257173a502f1 100644 --- a/lib/spack/spack/solver/core.py +++ b/lib/spack/spack/solver/core.py @@ -44,6 +44,17 @@ def _id(thing: Any) -> Union[str, AspObject]: return f'"{str(thing)}"' +class AspVar(AspObject): + """Represents a variable in an ASP rule, allows for conditionally generating + rules""" + + def __init__(self, name: str): + self.name = name + + def __str__(self) -> str: + return str(self.name) + + @lang.key_ordering class AspFunction(AspObject): """A term in the ASP logic program""" @@ -88,6 +99,8 @@ def _argify(self, arg: Any) -> Any: return clingo().Number(arg) elif isinstance(arg, AspFunction): return clingo().Function(arg.name, [self._argify(x) for x in arg.args], positive=True) + elif isinstance(arg, AspVar): + return clingo().Variable(arg.name) return clingo().String(str(arg)) def symbol(self): diff --git a/lib/spack/spack/solver/display.lp b/lib/spack/spack/solver/display.lp index 675a9d17d278ee..61d96b25b5ac2c 100644 --- a/lib/spack/spack/solver/display.lp +++ b/lib/spack/spack/solver/display.lp @@ -15,7 +15,6 @@ #show attr/4. #show attr/5. #show attr/6. - % names of optimization criteria #show opt_criterion/2. diff --git a/lib/spack/spack/solver/splices.lp b/lib/spack/spack/solver/splices.lp new file mode 100644 index 00000000000000..96762c456c18db --- /dev/null +++ b/lib/spack/spack/solver/splices.lp @@ -0,0 +1,56 @@ +% 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) + +%============================================================================= +% These rules are conditionally loaded to handle the synthesis of spliced +% packages. +% ============================================================================= +% Consider the concrete spec: +% foo@2.72%gcc@11.4 arch=linux-ubuntu22.04-icelake build_system=autotools ^bar ... +% It will emit the following facts for reuse (below is a subset) +% installed_hash("foo", "xxxyyy") +% hash_attr("xxxyyy", "hash", "foo", "xxxyyy") +% hash_attr("xxxyyy", "version", "foo", "2.72") +% hash_attr("xxxyyy", "node_os", "ubuntu22.04") +% hash_attr("xxxyyy", "hash", "bar", "zzzqqq") +% hash_attr("xxxyyy", "depends_on", "foo", "bar", "link") +% Rules that derive abi_splice_conditions_hold will be generated from +% use of the `can_splice` directive. The will have the following form: +% can_splice("foo@1.0.0+a", when="@1.0.1+a", match_variants=["b"]) ---> +% abi_splice_conditions_hold(0, node(SID, "foo"), "foo", BashHash) :- +% installed_hash("foo", BaseHash), +% attr("node", node(SID, SpliceName)), +% attr("node_version_satisfies", node(SID, "foo"), "1.0.1"), +% hash_attr("hash", "node_version_satisfies", "foo", "1.0.1"), +% attr("variant_value", node(SID, "foo"), "a", "True"), +% hash_attr("hash", "variant_value", "foo", "a", "True"), +% attr("variant_value", node(SID, "foo"), "b", VariVar0), +% hash_attr("hash", "variant_value", "foo", "b", VariVar0), + +% If the splice is valid (i.e. abi_splice_conditions_hold is derived) in the +% dependency of a concrete spec the solver free to choose whether to continue +% with the exact hash semantics by simply imposing the child hash, or introducing +% a spliced node as the dependency instead +{ imposed_constraint(ParentHash, "hash", ChildName, ChildHash) } :- + hash_attr(ParentHash, "hash", ChildName, ChildHash), + abi_splice_conditions_hold(_, node(SID, SpliceName), ChildName, ChildHash). + +attr("splice_at_hash", ParentNode, node(SID, SpliceName), ChildName, ChildHash) :- + attr("hash", ParentNode, ParentHash), + hash_attr(ParentHash, "hash", ChildName, ChildHash), + abi_splice_conditions_hold(_, node(SID, SpliceName), ChildName, ChildHash), + ParentHash != ChildHash, + not imposed_constraint(ParentHash, "hash", ChildName, ChildHash). + +% Names and virtual providers may change when a dependency is spliced in +imposed_constraint(Hash, "dependency_holds", ParentName, SpliceName, Type) :- + hash_attr(Hash, "depends_on", ParentName, DepName, Type), + hash_attr(Hash, "hash", DepName, DepHash), + attr("splice_at_hash", node(ID, ParentName), node(SID, SpliceName), DepName, DepHash). + +imposed_constraint(Hash, "virtual_on_edge", ParentName, SpliceName, VirtName) :- + hash_attr(Hash, "virtual_on_edge", ParentName, DepName, VirtName), + attr("splice_at_hash", node(ID, ParentName), node(SID, SpliceName), DepName, DepHash). + diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index d87296a3fb7c79..03a372be4e5284 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1431,6 +1431,8 @@ def tree( class Spec: #: Cache for spec's prefix, computed lazily in the corresponding property _prefix = None + #: Cache for spec's length, computed lazily in the corresponding property + _length = None abstract_hash = None @staticmethod @@ -2907,7 +2909,7 @@ def _mark_concrete(self, value=True): if (not value) and s.concrete and s.installed: continue elif not value: - s.clear_cached_hashes() + s.clear_caches() s._mark_root_concrete(value) def _finalize_concretization(self): @@ -3700,6 +3702,18 @@ def __getitem__(self, name: str): return child + def __len__(self): + if not self.concrete: + raise spack.error.SpecError(f"Cannot get length of abstract spec: {self}") + + if not self._length: + self._length = 1 + sum(len(dep) for dep in self.dependencies()) + return self._length + + def __bool__(self): + # Need to define this so __len__ isn't used by default + return True + def __contains__(self, spec): """True if this spec or some dependency satisfies the spec. @@ -4256,7 +4270,7 @@ def _splice_detach_and_add_dependents(self, replacement, context): for ancestor in ancestors_in_context: # Only set it if it hasn't been spliced before ancestor._build_spec = ancestor._build_spec or ancestor.copy() - ancestor.clear_cached_hashes(ignore=(ht.package_hash.attr,)) + ancestor.clear_caches(ignore=(ht.package_hash.attr,)) for edge in ancestor.edges_to_dependencies(depflag=dt.BUILD): if edge.depflag & ~dt.BUILD: edge.depflag &= ~dt.BUILD @@ -4450,7 +4464,7 @@ def mask_build_deps(in_spec): return spec - def clear_cached_hashes(self, ignore=()): + def clear_caches(self, ignore=()): """ Clears all cached hashes in a Spec, while preserving other properties. """ @@ -4458,7 +4472,9 @@ def clear_cached_hashes(self, ignore=()): if h.attr not in ignore: if hasattr(self, h.attr): setattr(self, h.attr, None) - self._dunder_hash = None + for attr in ("_dunder_hash", "_prefix", "_length"): + if attr not in ignore: + setattr(self, attr, None) def __hash__(self): # If the spec is concrete, we leverage the process hash and just use diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py new file mode 100644 index 00000000000000..97601c578a0577 --- /dev/null +++ b/lib/spack/spack/test/abi_splicing.py @@ -0,0 +1,234 @@ +# 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) +""" Test ABI-based splicing of dependencies """ + +from typing import List + +import pytest + +import spack.config +import spack.deptypes as dt +import spack.package_base +import spack.paths +import spack.repo +import spack.solver.asp +from spack.installer import PackageInstaller +from spack.spec import Spec + + +class CacheManager: + def __init__(self, specs: List[str]) -> None: + self.req_specs = specs + self.concr_specs: List[Spec] + self.concr_specs = [] + + def __enter__(self): + self.concr_specs = [Spec(s).concretized() for s in self.req_specs] + for s in self.concr_specs: + PackageInstaller([s.package], fake=True, explicit=True).install() + + def __exit__(self, exc_type, exc_val, exc_tb): + for s in self.concr_specs: + s.package.do_uninstall() + + +# MacOS and Windows only work if you pass this function pointer rather than a +# closure +def _mock_has_runtime_dependencies(_x): + return True + + +def _make_specs_non_buildable(specs: List[str]): + output_config = {} + for spec in specs: + output_config[spec] = {"buildable": False} + return output_config + + +@pytest.fixture +def splicing_setup(mutable_database, mock_packages, monkeypatch): + spack.config.set("concretizer:reuse", True) + monkeypatch.setattr( + spack.solver.asp, "_has_runtime_dependencies", _mock_has_runtime_dependencies + ) + + +def _enable_splicing(): + spack.config.set("concretizer:splice", {"automatic": True}) + + +def _has_build_dependency(spec: Spec, name: str): + return any(s.name == name for s in spec.dependencies(None, dt.BUILD)) + + +def test_simple_reuse(splicing_setup): + with CacheManager(["splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-z"])) + assert Spec("splice-z").concretized().satisfies(Spec("splice-z")) + + +def test_simple_dep_reuse(splicing_setup): + with CacheManager(["splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-z"])) + assert Spec("splice-h@1").concretized().satisfies(Spec("splice-h@1")) + + +def test_splice_installed_hash(splicing_setup): + cache = [ + "splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0", + "splice-h@1.0.2+compat ^splice-z@1.0.0", + ] + with CacheManager(cache): + packages_config = _make_specs_non_buildable(["splice-t", "splice-h"]) + spack.config.set("packages", packages_config) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.0") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +def test_splice_build_splice_node(splicing_setup): + with CacheManager(["splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-t"])) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.0+compat") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +def test_double_splice(splicing_setup): + cache = [ + "splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0+compat", + "splice-h@1.0.2+compat ^splice-z@1.0.1+compat", + "splice-z@1.0.2+compat", + ] + with CacheManager(cache): + freeze_builds_config = _make_specs_non_buildable(["splice-t", "splice-h", "splice-z"]) + spack.config.set("packages", freeze_builds_config) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.2+compat") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +# The next two tests are mirrors of one another +def test_virtual_multi_splices_in(splicing_setup): + cache = [ + "depends-on-virtual-with-abi ^virtual-abi-1", + "depends-on-virtual-with-abi ^virtual-abi-2", + ] + goal_specs = [ + "depends-on-virtual-with-abi ^virtual-abi-multi abi=one", + "depends-on-virtual-with-abi ^virtual-abi-multi abi=two", + ] + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["depends-on-virtual-with-abi"])) + for gs in goal_specs: + with pytest.raises(Exception): + Spec(gs).concretized() + _enable_splicing() + for gs in goal_specs: + assert Spec(gs).concretized().satisfies(gs) + + +def test_virtual_multi_can_be_spliced(splicing_setup): + cache = [ + "depends-on-virtual-with-abi ^virtual-abi-multi abi=one", + "depends-on-virtual-with-abi ^virtual-abi-multi abi=two", + ] + goal_specs = [ + "depends-on-virtual-with-abi ^virtual-abi-1", + "depends-on-virtual-with-abi ^virtual-abi-2", + ] + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["depends-on-virtual-with-abi"])) + with pytest.raises(Exception): + for gs in goal_specs: + Spec(gs).concretized() + _enable_splicing() + for gs in goal_specs: + assert Spec(gs).concretized().satisfies(gs) + + +def test_manyvariant_star_matching_variant_splice(splicing_setup): + cache = [ + # can_splice("manyvariants@1.0.0", when="@1.0.1", match_variants="*") + "depends-on-manyvariants ^manyvariants@1.0.0+a+b c=v1 d=v2", + "depends-on-manyvariants ^manyvariants@1.0.0~a~b c=v3 d=v3", + ] + goal_specs = [ + Spec("depends-on-manyvariants ^manyvariants@1.0.1+a+b c=v1 d=v2"), + Spec("depends-on-manyvariants ^manyvariants@1.0.1~a~b c=v3 d=v3"), + ] + with CacheManager(cache): + freeze_build_config = {"depends-on-manyvariants": {"buildable": False}} + spack.config.set("packages", freeze_build_config) + for goal in goal_specs: + with pytest.raises(Exception): + goal.concretized() + _enable_splicing() + for goal in goal_specs: + assert goal.concretized().satisfies(goal) + + +def test_manyvariant_limited_matching(splicing_setup): + cache = [ + # can_splice("manyvariants@2.0.0+a~b", when="@2.0.1~a+b", match_variants=["c", "d"]) + "depends-on-manyvariants@2.0 ^manyvariants@2.0.0+a~b c=v3 d=v2", + # can_splice("manyvariants@2.0.0 c=v1 d=v1", when="@2.0.1+a+b") + "depends-on-manyvariants@2.0 ^manyvariants@2.0.0~a~b c=v1 d=v1", + ] + goal_specs = [ + Spec("depends-on-manyvariants@2.0 ^manyvariants@2.0.1~a+b c=v3 d=v2"), + Spec("depends-on-manyvariants@2.0 ^manyvariants@2.0.1+a+b c=v3 d=v3"), + ] + with CacheManager(cache): + freeze_build_config = {"depends-on-manyvariants": {"buildable": False}} + spack.config.set("packages", freeze_build_config) + for s in goal_specs: + with pytest.raises(Exception): + s.concretized() + _enable_splicing() + for s in goal_specs: + assert s.concretized().satisfies(s) + + +def test_external_splice_same_name(splicing_setup): + cache = [ + "splice-h@1.0.0 ^splice-z@1.0.0+compat", + "splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.1+compat", + ] + packages_yaml = { + "splice-z": {"externals": [{"spec": "splice-z@1.0.2+compat", "prefix": "/usr"}]} + } + goal_specs = [ + Spec("splice-h@1.0.0 ^splice-z@1.0.2"), + Spec("splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.2"), + ] + with CacheManager(cache): + spack.config.set("packages", packages_yaml) + _enable_splicing() + for s in goal_specs: + assert s.concretized().satisfies(s) + + +def test_spliced_build_deps_only_in_build_spec(splicing_setup): + cache = ["splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.0"] + goal_spec = Spec("splice-t@1.0 ^splice-h@1.0.2 ^splice-z@1.0.0") + + with CacheManager(cache): + _enable_splicing() + concr_goal = goal_spec.concretized() + build_spec = concr_goal._build_spec + # Spec has been spliced + assert build_spec is not None + # Build spec has spliced build dependencies + assert _has_build_dependency(build_spec, "splice-h") + assert _has_build_dependency(build_spec, "splice-z") + # Spliced build dependencies are removed + assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 diff --git a/lib/spack/spack/test/cmd/pkg.py b/lib/spack/spack/test/cmd/pkg.py index d1f0ed139ecac3..1811b1a617fddd 100644 --- a/lib/spack/spack/test/cmd/pkg.py +++ b/lib/spack/spack/test/cmd/pkg.py @@ -311,7 +311,19 @@ def test_pkg_grep(mock_packages, capfd): output, _ = capfd.readouterr() assert output.strip() == "\n".join( spack.repo.PATH.get_pkg_class(name).module.__file__ - for name in ["splice-a", "splice-h", "splice-t", "splice-vh", "splice-vt", "splice-z"] + for name in [ + "depends-on-manyvariants", + "manyvariants", + "splice-a", + "splice-h", + "splice-t", + "splice-vh", + "splice-vt", + "splice-z", + "virtual-abi-1", + "virtual-abi-2", + "virtual-abi-multi", + ] ) # ensure that this string isn't fouhnd diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 38424e951c55cc..9f94d11a08a37a 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -1763,8 +1763,8 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co assert a1.dag_hash() == a2.dag_hash() assert a1.process_hash() == a2.process_hash() - a1.clear_cached_hashes() - a2.clear_cached_hashes() + a1.clear_caches() + a2.clear_caches() # tweak the dag hash of one of these specs new_hash = "00000000000000000000000000000000" diff --git a/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py b/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py new file mode 100644 index 00000000000000..f1314471f917b2 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class DependsOnManyvariants(Package): + """ + A package with a dependency on `manyvariants`, so that `manyvariants` can + be spliced in tests. + """ + + homepage = "https://www.test.com" + has_code = False + + version("1.0") + version("2.0") + + depends_on("manyvariants@1.0", when="@1.0") + depends_on("manyvariants@2.0", when="@2.0") + + def install(self, spec, prefix): + touch(prefix.bar) diff --git a/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py b/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py new file mode 100644 index 00000000000000..9f281f337b2d35 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class DependsOnVirtualWithAbi(Package): + """ + This has a virtual dependency on `virtual-with-abi`, mostly for testing + automatic splicing of providers. + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + depends_on("virtual-with-abi") diff --git a/var/spack/repos/builtin.mock/packages/manyvariants/package.py b/var/spack/repos/builtin.mock/packages/manyvariants/package.py new file mode 100644 index 00000000000000..4747fab53f8d3d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/manyvariants/package.py @@ -0,0 +1,33 @@ +# 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) + +from spack.package import * + + +class Manyvariants(Package): + """ + A package with 4 different variants of different arities to test the + `match_variants` argument to `can_splice` + """ + + homepage = "https://www.test.com" + has_code = False + + version("2.0.1") + version("2.0.0") + version("1.0.1") + version("1.0.0") + + variant("a", default=True) + variant("b", default=False) + variant("c", values=("v1", "v2", "v3"), multi=False, default="v1") + variant("d", values=("v1", "v2", "v3"), multi=False, default="v1") + + can_splice("manyvariants@1.0.0", when="@1.0.1", match_variants="*") + can_splice("manyvariants@2.0.0+a~b", when="@2.0.1~a+b", match_variants=["c", "d"]) + can_splice("manyvariants@2.0.0 c=v1 d=v1", when="@2.0.1+a+b") + + def install(self, spec, prefix): + touch(prefix.bar) diff --git a/var/spack/repos/builtin.mock/packages/splice-h/package.py b/var/spack/repos/builtin.mock/packages/splice-h/package.py index a54f1e7f7d683a..6f86f09f92e16d 100644 --- a/var/spack/repos/builtin.mock/packages/splice-h/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-h/package.py @@ -12,17 +12,24 @@ class SpliceH(Package): homepage = "http://www.example.com" url = "http://www.example.com/splice-h-1.0.tar.gz" - version("1.0", md5="0123456789abcdef0123456789abcdef") + version("1.0.2") + version("1.0.1") + version("1.0.0") variant("foo", default=False, description="nope") variant("bar", default=False, description="nope") variant("baz", default=False, description="nope") + variant("compat", default=True, description="nope") depends_on("splice-z") depends_on("splice-z+foo", when="+foo") provides("something") provides("somethingelse") + provides("virtual-abi") + + can_splice("splice-h@1.0.0 +compat", when="@1.0.1 +compat") + can_splice("splice-h@1.0.0:1.0.1 +compat", when="@1.0.2 +compat") def install(self, spec, prefix): with open(prefix.join("splice-h"), "w") as f: diff --git a/var/spack/repos/builtin.mock/packages/splice-z/package.py b/var/spack/repos/builtin.mock/packages/splice-z/package.py index ff73fbaa03701e..bac33be6000927 100644 --- a/var/spack/repos/builtin.mock/packages/splice-z/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-z/package.py @@ -12,10 +12,16 @@ class SpliceZ(Package): homepage = "http://www.example.com" url = "http://www.example.com/splice-z-1.0.tar.gz" - version("1.0", md5="0123456789abcdef0123456789abcdef") + version("1.0.2") + version("1.0.1") + version("1.0.0") variant("foo", default=False, description="nope") variant("bar", default=False, description="nope") + variant("compat", default=True, description="nope") + + can_splice("splice-z@1.0.0 +compat", when="@1.0.1 +compat") + can_splice("splice-z@1.0.0:1.0.1 +compat", when="@1.0.2 +compat") def install(self, spec, prefix): with open(prefix.join("splice-z"), "w") as f: diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py new file mode 100644 index 00000000000000..60a4c64f9e298a --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class VirtualAbi1(Package): + """ + This package provides `virtual-with-abi` and is conditionally ABI + compatible with `virtual-abi-multi` + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + provides("virtual-with-abi") + + can_splice("virtual-abi-multi@1.0 abi=one", when="@1.0") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py new file mode 100644 index 00000000000000..5725bf504c433d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py @@ -0,0 +1,25 @@ +# 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) + +from spack.package import * + + +class VirtualAbi2(Package): + """ + This package provides `virtual-with-abi` and is conditionally ABI + compatible with `virtual-abi-multi` + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + provides("virtual-with-abi") + + can_splice("virtual-abi-multi@1.0 abi=two", when="@1.0") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py new file mode 100644 index 00000000000000..87cfd31544aeef --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py @@ -0,0 +1,29 @@ +# 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) + +from spack.package import * + + +class VirtualAbiMulti(Package): + """ + This package provides `virtual-with-abi` is ABI compatible with either + `virtual-abi-1` or `virtual-abi-2` depending on the value of its `abi` + variant + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + variant("abi", default="custom", multi=False, values=("one", "two", "custom")) + + provides("virtual-with-abi") + + can_splice("virtual-abi-1@1.0", when="@1.0 abi=one") + can_splice("virtual-abi-2@1.0", when="@1.0 abi=two") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py b/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py new file mode 100644 index 00000000000000..1147efd20219e5 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py @@ -0,0 +1,16 @@ +# 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) + +from spack.package import * + + +class VirtualWithAbi(Package): + """Virtual package for mocking an interface with stable ABI .""" + + homepage = "https://www.abi.org/" + virtual = True + + def test_hello(self): + print("Hello there!") From 9642b045130974a0195ad308ad20effb5c467f4d Mon Sep 17 00:00:00 2001 From: dslarm <38504854+dslarm@users.noreply.github.com> Date: Wed, 13 Nov 2024 05:09:05 +0000 Subject: [PATCH 444/615] Add SVE as a variant for Neoverse N2. Default to true, but should be (#47567) benchmarked to test if that is a correct decision. --- var/spack/repos/builtin/packages/gromacs/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index d273f42299d0f1..5703587a6584f4 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -183,7 +183,7 @@ class Gromacs(CMakePackage, CudaPackage): "sve", default=True, description="Enable SVE on aarch64 if available", - when="target=neoverse_v1:,neoverse_v2:", + when="target=neoverse_v1:,neoverse_v2:,neoverse_n2:", ) variant( "sve", default=True, description="Enable SVE on aarch64 if available", when="target=a64fx" From 41d9f687f607b680d579756be1c6e556dff3a850 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 13 Nov 2024 13:03:09 +0100 Subject: [PATCH 445/615] missing and redundant imports (#47577) --- lib/spack/spack/cmd/__init__.py | 1 + lib/spack/spack/mirror.py | 2 +- lib/spack/spack/test/abi_splicing.py | 3 --- lib/spack/spack/test/cmd/init_py_functions.py | 2 ++ lib/spack/spack/test/cmd/spec.py | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 9449face85a7fc..11569a34c70b44 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -25,6 +25,7 @@ import spack.extensions import spack.parser import spack.paths +import spack.repo import spack.spec import spack.store import spack.traverse as traverse diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 328a456fc3cb17..fe38d1f963afeb 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -180,7 +180,7 @@ def ensure_mirror_usable(self, direction: str = "push"): if errors: msg = f"invalid {direction} configuration for mirror {self.name}: " msg += "\n ".join(errors) - raise spack.mirror.MirrorError(msg) + raise MirrorError(msg) def _update_connection_dict(self, current_data: dict, new_data: dict, top_level: bool): # Only allow one to exist in the config diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py index 97601c578a0577..b36c285b134923 100644 --- a/lib/spack/spack/test/abi_splicing.py +++ b/lib/spack/spack/test/abi_splicing.py @@ -10,9 +10,6 @@ import spack.config import spack.deptypes as dt -import spack.package_base -import spack.paths -import spack.repo import spack.solver.asp from spack.installer import PackageInstaller from spack.spec import Spec diff --git a/lib/spack/spack/test/cmd/init_py_functions.py b/lib/spack/spack/test/cmd/init_py_functions.py index deb6222411b725..d7245c6ecce824 100644 --- a/lib/spack/spack/test/cmd/init_py_functions.py +++ b/lib/spack/spack/test/cmd/init_py_functions.py @@ -4,9 +4,11 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import pytest +import spack.config import spack.environment as ev import spack.error import spack.solver.asp as asp +import spack.store from spack.cmd import ( CommandNameError, PythonNameError, diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py index 1d0d08f494b595..dda48de4df0599 100644 --- a/lib/spack/spack/test/cmd/spec.py +++ b/lib/spack/spack/test/cmd/spec.py @@ -7,6 +7,7 @@ import pytest +import spack.config import spack.environment as ev import spack.error import spack.spec From 181c404af5761170ad512be6f530df4729cf9c37 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 13 Nov 2024 13:03:09 +0100 Subject: [PATCH 446/615] missing and redundant imports (#47577) --- lib/spack/spack/cmd/__init__.py | 1 + lib/spack/spack/mirror.py | 2 +- lib/spack/spack/test/abi_splicing.py | 3 --- lib/spack/spack/test/cmd/init_py_functions.py | 2 ++ lib/spack/spack/test/cmd/spec.py | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 9449face85a7fc..11569a34c70b44 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -25,6 +25,7 @@ import spack.extensions import spack.parser import spack.paths +import spack.repo import spack.spec import spack.store import spack.traverse as traverse diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 328a456fc3cb17..fe38d1f963afeb 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -180,7 +180,7 @@ def ensure_mirror_usable(self, direction: str = "push"): if errors: msg = f"invalid {direction} configuration for mirror {self.name}: " msg += "\n ".join(errors) - raise spack.mirror.MirrorError(msg) + raise MirrorError(msg) def _update_connection_dict(self, current_data: dict, new_data: dict, top_level: bool): # Only allow one to exist in the config diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py index 97601c578a0577..b36c285b134923 100644 --- a/lib/spack/spack/test/abi_splicing.py +++ b/lib/spack/spack/test/abi_splicing.py @@ -10,9 +10,6 @@ import spack.config import spack.deptypes as dt -import spack.package_base -import spack.paths -import spack.repo import spack.solver.asp from spack.installer import PackageInstaller from spack.spec import Spec diff --git a/lib/spack/spack/test/cmd/init_py_functions.py b/lib/spack/spack/test/cmd/init_py_functions.py index deb6222411b725..d7245c6ecce824 100644 --- a/lib/spack/spack/test/cmd/init_py_functions.py +++ b/lib/spack/spack/test/cmd/init_py_functions.py @@ -4,9 +4,11 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import pytest +import spack.config import spack.environment as ev import spack.error import spack.solver.asp as asp +import spack.store from spack.cmd import ( CommandNameError, PythonNameError, diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py index 1d0d08f494b595..dda48de4df0599 100644 --- a/lib/spack/spack/test/cmd/spec.py +++ b/lib/spack/spack/test/cmd/spec.py @@ -7,6 +7,7 @@ import pytest +import spack.config import spack.environment as ev import spack.error import spack.spec From be918817d61baaf9f2d946b741e78581ec0c1689 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 13 Nov 2024 13:05:14 +0100 Subject: [PATCH 447/615] bump version to 0.24.0.dev0 (#47578) --- lib/spack/spack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 9a83564db7daa9..e3b5bc21f4cef3 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -11,7 +11,7 @@ import spack.util.git #: PEP440 canonical ... string -__version__ = "0.23.0.dev0" +__version__ = "0.24.0.dev0" spack_version = __version__ From badb3cedcd83a4f3f38bb3ec5612f1e1f8a222cf Mon Sep 17 00:00:00 2001 From: Luca Heltai Date: Wed, 13 Nov 2024 15:34:27 +0100 Subject: [PATCH 448/615] dealii: add v9.6.0 (#45554) Co-authored-by: eugeneswalker Co-authored-by: Satish Balay --- .../stacks/e4s-neoverse_v1/spack.yaml | 4 +- .../stacks/e4s-oneapi/spack.yaml | 2 +- .../cloud_pipelines/stacks/e4s/spack.yaml | 2 +- .../repos/builtin/packages/dealii/package.py | 44 +++++++++++++++---- 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index 24a488fbe921bf..886699b54a64f3 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -211,7 +211,6 @@ spack: - chai +cuda cuda_arch=75 ^umpire ~shared - chapel +cuda cuda_arch=75 - cusz +cuda cuda_arch=75 - - dealii +cuda cuda_arch=75 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=75 # # +paraview: job killed oom? - fftx +cuda cuda_arch=75 - flecsi +cuda cuda_arch=75 @@ -245,6 +244,7 @@ spack: - zfp +cuda cuda_arch=75 # -- # - cp2k +mpi +cuda cuda_arch=75 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80') + # - dealii +cuda cuda_arch=75 ~vtk # include/deal.II/base/vectorization.h(1498): error: identifier "vaddvq_f32" is undefined; +vtk: https://github.com/spack/spack/pull/45554#issuecomment-2457255720 # - lammps +cuda cuda_arch=75 # lammps: needs NVIDIA driver # - lbann +cuda cuda_arch=75 # aluminum: include/aluminum/base.hpp:53: multiple definition of `cub::CUB_200400___CUDA_ARCH_LIST___NS::Debug(cudaError,char const*, int)'; lbann: https://github.com/spack/spack/issues/38788 # - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf ~cusz +mgard +cuda cuda_arch=75 # libpressio: CMake Error at CMakeLists.txt:498 (find_library): Could not find CUFile_LIBRARY using the following names: cufile ; +cusz: https://github.com/spack/spack/issues/38787 @@ -260,7 +260,6 @@ spack: - chai +cuda cuda_arch=80 ^umpire ~shared - chapel +cuda cuda_arch=80 - cusz +cuda cuda_arch=80 - - dealii +cuda cuda_arch=80 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=80 # +paraview: job killed oom? - fftx +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80 @@ -294,6 +293,7 @@ spack: - zfp +cuda cuda_arch=80 # -- # - cp2k +mpi +cuda cuda_arch=80 # cp2k: Error: KeyError: 'Point environment variable LIBSMM_PATH to the absolute path of the libsmm.a file' + # - dealii +cuda cuda_arch=80 ~vtk # include/deal.II/base/vectorization.h(1498): error: identifier "vaddvq_f32" is undefined; +vtk: https://github.com/spack/spack/pull/45554#issuecomment-2457255720 # - lammps +cuda cuda_arch=80 # lammps: needs NVIDIA driver # - lbann +cuda cuda_arch=80 # aluminum: include/aluminum/base.hpp:53: multiple definition of `cub::CUB_200400___CUDA_ARCH_LIST___NS::Debug(cudaError,char const*, int)'; lbann: https://github.com/spack/spack/issues/38788 # - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf ~cusz +mgard +cuda cuda_arch=80 # libpressio: CMake Error at CMakeLists.txt:498 (find_library): Could not find CUFile_LIBRARY using the following names: cufile ; +cusz: https://github.com/spack/spack/issues/38787 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml index ea22c43fbaae0b..0095fd3ec1ab01 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml @@ -84,7 +84,7 @@ spack: - charliecloud - conduit - datatransferkit - - dealii + - dealii ~vtk ~taskflow cflags=-O0 cxxflags=-O0 # +vtk +taskflow: ^taskflow: CMake Error at CMakeLists.txt:81 (message): Taskflow currently supports the following compilers: g++ v7.0 or above, clang++ v6.0 or above; use -O0 to work around compiler failure - drishti - dxt-explorer - ecp-data-vis-sdk ~cuda ~rocm +adios2 ~ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +ascent: fides: fides/xgc/XGCCommon.cxx:233:10: error: no member named 'iota' in namespace 'std'; +visit: visit_vtk/lightweight/vtkSkewLookupTable.C:32:10: error: cannot initialize return object of type 'unsigned char *' with an rvalue of type 'const unsigned char *' diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 0b81e53d568d1d..29d5f63a16738c 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -62,7 +62,7 @@ spack: - conduit - cp2k +mpi - datatransferkit - - dealii + - dealii ~vtk # https://github.com/spack/spack/pull/45554#issuecomment-2457255720 - drishti - dxt-explorer - dyninst diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 50ff2dbb5177b7..e9ed50ac7aa8bb 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -28,6 +28,8 @@ class Dealii(CMakePackage, CudaPackage): generator("make") version("master", branch="master") + version("9.6.0", sha256="675323f0eb8eed2cfc93e2ced07a0ec5727c6a566ff9e7786c01a2ddcde17bed") + version("9.5.2", sha256="7930e5218a9807d60cc05c300a3b70f36f4af22c3551a2cd1141fbab013bbaf1") version("9.5.1", sha256="a818b535e6488d3aef7853311657c7b4fadc29a9abe91b7b202b131aad630f5e") version("9.5.0", sha256="a81f41565f0d3a22d491ee687957dd48053225da72e8d6d628d210358f4a0464") version("9.4.2", sha256="45a76cb400bfcff25cc2d9093d9a5c91545c8367985e6798811c5e9d2a6a6fd4") @@ -78,7 +80,10 @@ class Dealii(CMakePackage, CudaPackage): values=("default", "11", "14", "17"), ) variant("doc", default=False, description="Compile with documentation") - variant("examples", default=True, description="Compile and install tutorial programs") + variant("examples", default=True, description="Install source files of tutorial programs") + variant( + "examples_compile", default=True, description="Install binary files of tutorial programs" + ) variant("int64", default=False, description="Compile with 64 bit indices support") variant("mpi", default=True, description="Compile with MPI") variant("optflags", default=False, description="Compile using additional optimization flags") @@ -91,6 +96,9 @@ class Dealii(CMakePackage, CudaPackage): variant("arpack", default=True, description="Compile with Arpack and PArpack (only with MPI)") variant("adol-c", default=True, description="Compile with ADOL-C") variant("cgal", default=True, when="@9.4:~cuda", description="Compile with CGAL") + variant( + "complex", default=False, when="@9.1.0:", description="Compile with complex value support" + ) variant("ginkgo", default=True, description="Compile with Ginkgo") variant("gmsh", default=True, description="Compile with GMSH") variant("gsl", default=True, description="Compile with GSL") @@ -100,7 +108,8 @@ class Dealii(CMakePackage, CudaPackage): variant("muparser", default=True, description="Compile with muParser") variant("nanoflann", default=False, description="Compile with Nanoflann") variant("netcdf", default=False, description="Compile with Netcdf (only with MPI)") - variant("oce", default=True, description="Compile with OCE") + variant("oce", default=False, description="Compile with OCE") + variant("opencascade", default=True, description="Compile with OPENCASCADE") variant("p4est", default=True, description="Compile with P4est (only with MPI)") variant("petsc", default=True, description="Compile with Petsc (only with MPI)") variant("scalapack", default=True, description="Compile with ScaLAPACK (only with MPI)") @@ -132,7 +141,7 @@ class Dealii(CMakePackage, CudaPackage): # dealii does not build with Boost 1.80.0 # (https://github.com/spack/spack/pull/32879#issuecomment-1265933265) depends_on( - "boost@1.59.0:1.63,1.65.1,1.67.0:1.79+thread+system+serialization+iostreams", + "boost@1.59.0:1.63,1.65.1,1.67.0:1.79,1.83:+thread+system+serialization+iostreams", patches=[ patch("boost_1.65.1_singleton.patch", level=1, when="@1.65.1"), patch("boost_1.68.0.patch", level=1, when="@1.68.0"), @@ -187,13 +196,18 @@ class Dealii(CMakePackage, CudaPackage): depends_on("graphviz", when="+doc") depends_on("ginkgo", when="@9.1:+ginkgo") depends_on("ginkgo@1.4.0:", when="@9.4:+ginkgo") - depends_on("gmsh+tetgen+netgen+oce", when="@9.0:+gmsh", type=("build", "run")) + depends_on("gmsh+oce", when="@9.0:+gmsh+oce", type=("build", "run")) + depends_on("gmsh+opencascade", when="@9.0:+gmsh+opencascade", type=("build", "run")) + depends_on("gmsh", when="@9.0:+gmsh~opencascade~oce", type=("build", "run")) depends_on("gsl", when="@8.5.0:+gsl") # TODO: next line fixes concretization with petsc depends_on("hdf5+mpi+hl+fortran", when="+hdf5+mpi+petsc") depends_on("hdf5+mpi+hl", when="+hdf5+mpi~petsc") depends_on("kokkos@3.7:", when="@9.5:+kokkos~trilinos") - depends_on("kokkos@3.7:+cuda+cuda_lambda+wrapper", when="@9.5:+kokkos~trilinos+cuda") + depends_on("kokkos@3.7:+cuda+cuda_lambda+wrapper", when="@9.5:9.5.99+kokkos~trilinos+cuda") + depends_on( + "kokkos@3.7:+cuda+cuda_lambda+cuda_constexpr+wrapper", when="@9.6:+kokkos~trilinos+cuda" + ) # TODO: concretizer bug. The two lines mimic what comes from PETSc # but we should not need it depends_on("metis@5:+int64", when="+metis+int64") @@ -204,6 +218,7 @@ class Dealii(CMakePackage, CudaPackage): depends_on("netcdf-c+mpi", when="+netcdf+mpi") depends_on("netcdf-cxx", when="+netcdf+mpi") depends_on("oce", when="+oce") + depends_on("opencascade", when="+opencascade") depends_on("p4est", when="+p4est+mpi") depends_on("petsc+mpi~int64", when="+petsc+mpi~int64") depends_on("petsc+mpi+int64", when="+petsc+mpi+int64") @@ -215,6 +230,7 @@ class Dealii(CMakePackage, CudaPackage): depends_on("sundials@5:6.7", when="@9.3.4:+sundials") depends_on("taskflow@3.4:", when="@9.6:+taskflow") depends_on("trilinos gotype=int", when="+trilinos@12.18.1:") + depends_on("trilinos+cuda+cuda_constexpr", when="@9.6:+trilinos+cuda") # TODO: next line fixes concretization with trilinos and adol-c depends_on("trilinos~exodus", when="@9.0:+adol-c+trilinos") # Both Trilinos and SymEngine bundle the Teuchos RCP library. @@ -319,6 +335,8 @@ class Dealii(CMakePackage, CudaPackage): msg="Deal.II 9.6 onwards requires the C++ standard to be set to 17 or later.", ) + conflicts("oce", when="+opencascade", msg="Only one among OCE or OPENCASCADE can be selected.") + # Interfaces added in 8.5.0: for _package in ["gsl", "python"]: conflicts( @@ -466,7 +484,7 @@ def cmake_args(self): # Examples / tutorial programs options.append(self.define_from_variant("DEAL_II_COMPONENT_EXAMPLES", "examples")) - options.append(self.define_from_variant("DEAL_II_COMPILE_EXAMPLES", "examples")) + options.append(self.define_from_variant("DEAL_II_COMPILE_EXAMPLES", "examples_compile")) # Enforce the specified C++ standard if spec.variants["cxxstd"].value != "default": @@ -535,6 +553,9 @@ def cmake_args(self): if spec.satisfies("+trilinos"): options.extend([self.define("CMAKE_CXX_COMPILER", spec["trilinos"].kokkos_cxx)]) + # Complex support + options.append(self.define_from_variant("DEAL_II_WITH_COMPLEX_VALUES", "complex")) + # Python bindings if spec.satisfies("@8.5.0:"): options.append(self.define_from_variant("DEAL_II_COMPONENT_PYTHON_BINDINGS", "python")) @@ -643,11 +664,16 @@ def cmake_args(self): ] ) - # Open Cascade - options.append(self.define_from_variant("DEAL_II_WITH_OPENCASCADE", "oce")) - if spec.satisfies("+oce"): + # Open Cascade -- OCE + if "+oce" in spec: + options.append(self.define_from_variant("DEAL_II_WITH_OPENCASCADE", "oce")) options.append(self.define("OPENCASCADE_DIR", spec["oce"].prefix)) + # Open Cascade -- OpenCascade + if "+opencascade" in spec: + options.append(self.define_from_variant("DEAL_II_WITH_OPENCASCADE", "opencascade")) + options.append(self.define("OPENCASCADE_DIR", spec["opencascade"].prefix)) + # As a final step, collect CXX flags that may have been # added anywhere above: if len(cxx_flags_release) > 0 and "+optflags" in spec: From 93bf0634f35d832b4e77de9893c16a9d564f4365 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Wed, 13 Nov 2024 07:20:56 -0800 Subject: [PATCH 449/615] nlopt: reformat for best practices (#47340) --- .../repos/builtin/packages/nlopt/package.py | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/var/spack/repos/builtin/packages/nlopt/package.py b/var/spack/repos/builtin/packages/nlopt/package.py index 132fff424c70ed..f2967c46f773ef 100644 --- a/var/spack/repos/builtin/packages/nlopt/package.py +++ b/var/spack/repos/builtin/packages/nlopt/package.py @@ -21,7 +21,6 @@ class Nlopt(CMakePackage): license("LGPL-2.1-or-later") version("master", branch="master") - version("2.8.0", sha256="e02a4956a69d323775d79fdaec7ba7a23ed912c7d45e439bc933d991ea3193fd") version("2.7.1", sha256="db88232fa5cef0ff6e39943fc63ab6074208831dc0031cf1545f6ecd31ae2a1a") version("2.7.0", sha256="b881cc2a5face5139f1c5a30caf26b7d3cb43d69d5e423c9d78392f99844499f") @@ -53,26 +52,14 @@ class Nlopt(CMakePackage): extends("python", when="+python") def cmake_args(self): - # Add arguments other than - # CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE spec = self.spec - args = [] - - # Specify on command line to alter defaults: - # eg: spack install nlopt@master +guile -octave +cxx - - # On is default - if "~shared" in spec: - args.append("-DBUILD_SHARED_LIBS:Bool=OFF") - - # On is default - if "~octave" in spec: - args.append("-DNLOPT_OCTAVE:Bool=OFF") - - if "+cxx" in spec: - args.append("-DNLOPT_CXX:BOOL=ON") - - if "+matlab" in spec: - args.append("-DMatlab_ROOT_DIR=%s" % spec["matlab"].command.path) + args = [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("NLOPT_OCTAVE", "octave"), + self.define_from_variant("NLOPT_CXX", "cxx"), + ] + + if spec.satisfies("+matlab"): + args.append(self.define("Matlab_ROOT_DIR", spec["matlab"].command.path)) return args From 6f948eb847c46a9caea852d3ffffd9cd4575dacc Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 13 Nov 2024 07:21:16 -0800 Subject: [PATCH 450/615] `spack spec`: simplify and unify output (#47574) `spack spec` output has looked like this for a while: ```console > spack spec /v5fn6xo /wd2p2v7 Input spec -------------------------------- - /v5fn6xo Concretized -------------------------------- [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared build_system=generic certs=mozilla arch=darwin-sequoia-m1 [+] ^ca-certificates-mozilla@2023-05-30%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ... Input spec -------------------------------- - /wd2p2v7 Concretized -------------------------------- [+] py-six@1.16.0%apple-clang@16.0.0 build_system=python_pip arch=darwin-sequoia-m1 [+] ^py-pip@23.1.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ``` But the input spec is right there on the CLI, and it doesn't add anything to the output. Also, since #44843, specs concretized in the CLI line can be unified, so it makes sense to display them as we did in #44489 -- as one multi-root tree instead of as multiple single-root trees. With this PR, concretize output now looks like this: ```console > spack spec /v5fn6xo /wd2p2v7 [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared build_system=generic certs=mozilla arch=darwin-sequoia-m1 [+] ^ca-certificates-mozilla@2023-05-30%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] ^gmake@4.4.1%apple-clang@16.0.0~guile build_system=generic arch=darwin-sequoia-m1 [+] ^perl@5.40.0%apple-clang@16.0.0+cpanm+opcode+open+shared+threads build_system=generic arch=darwin-sequoia-m1 [+] ^berkeley-db@18.1.40%apple-clang@16.0.0+cxx~docs+stl build_system=autotools patches=26090f4,b231fcc arch=darwin-sequoia-m1 [+] ^bzip2@1.0.8%apple-clang@16.0.0~debug~pic+shared build_system=generic arch=darwin-sequoia-m1 [+] ^diffutils@3.10%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^libiconv@1.17%apple-clang@16.0.0 build_system=autotools libs=shared,static arch=darwin-sequoia-m1 [+] ^gdbm@1.23%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^readline@8.2%apple-clang@16.0.0 build_system=autotools patches=bbf97f1 arch=darwin-sequoia-m1 [+] ^ncurses@6.5%apple-clang@16.0.0~symlinks+termlib abi=none build_system=autotools patches=7a351bc arch=darwin-sequoia-m1 [+] ^pkgconf@2.2.0%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^zlib-ng@2.2.1%apple-clang@16.0.0+compat+new_strategies+opt+pic+shared build_system=autotools arch=darwin-sequoia-m1 [+] ^gnuconfig@2022-09-17%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] py-six@1.16.0%apple-clang@16.0.0 build_system=python_pip arch=darwin-sequoia-m1 [+] ^py-pip@23.1.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] ^py-setuptools@69.2.0%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [-] ^py-wheel@0.41.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ... ``` With no input spec displayed -- just the concretization output shown as one consolidated tree and multiple roots. - [x] remove "Input Spec" section and "Concretized" header from `spack spec` output - [x] print concretized specs as one BFS tree instead of multiple --------- Signed-off-by: Todd Gamblin Co-authored-by: Harmen Stoppels --- lib/spack/spack/cmd/spec.py | 65 +++++++++++++------------------------ 1 file changed, 23 insertions(+), 42 deletions(-) diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 188e5360886856..d1278a71753970 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -82,14 +82,6 @@ def spec(parser, args): if args.namespaces: fmt = "{namespace}." + fmt - tree_kwargs = { - "cover": args.cover, - "format": fmt, - "hashlen": None if args.very_long else 7, - "show_types": args.types, - "status_fn": install_status_fn if args.install_status else None, - } - # use a read transaction if we are getting install status for every # spec in the DAG. This avoids repeatedly querying the DB. tree_context = lang.nullcontext @@ -99,46 +91,35 @@ def spec(parser, args): env = ev.active_environment() if args.specs: - input_specs = spack.cmd.parse_specs(args.specs) - concretized_specs = spack.cmd.parse_specs(args.specs, concretize=True) - specs = list(zip(input_specs, concretized_specs)) + concrete_specs = spack.cmd.parse_specs(args.specs, concretize=True) elif env: env.concretize() - specs = env.concretized_specs() - - if not args.format: - # environments are printed together in a combined tree() invocation, - # except when using --yaml or --json, which we print spec by spec below. - tree_kwargs["key"] = spack.traverse.by_dag_hash - tree_kwargs["hashes"] = args.long or args.very_long - print(spack.spec.tree([concrete for _, concrete in specs], **tree_kwargs)) - return + concrete_specs = env.concrete_roots() else: tty.die("spack spec requires at least one spec or an active environment") - for input, output in specs: - # With --yaml or --json, just print the raw specs to output - if args.format: + # With --yaml, --json, or --format, just print the raw specs to output + if args.format: + for spec in concrete_specs: if args.format == "yaml": # use write because to_yaml already has a newline. - sys.stdout.write(output.to_yaml(hash=ht.dag_hash)) + sys.stdout.write(spec.to_yaml(hash=ht.dag_hash)) elif args.format == "json": - print(output.to_json(hash=ht.dag_hash)) + print(spec.to_json(hash=ht.dag_hash)) else: - print(output.format(args.format)) - continue - - with tree_context(): - # Only show the headers for input specs that are not concrete to avoid - # repeated output. This happens because parse_specs outputs concrete - # specs for `/hash` inputs. - if not input.concrete: - tree_kwargs["hashes"] = False # Always False for input spec - print("Input spec") - print("--------------------------------") - print(input.tree(**tree_kwargs)) - print("Concretized") - print("--------------------------------") - - tree_kwargs["hashes"] = args.long or args.very_long - print(output.tree(**tree_kwargs)) + print(spec.format(args.format)) + return + + with tree_context(): + print( + spack.spec.tree( + concrete_specs, + cover=args.cover, + format=fmt, + hashlen=None if args.very_long else 7, + show_types=args.types, + status_fn=install_status_fn if args.install_status else None, + hashes=args.long or args.very_long, + key=spack.traverse.by_dag_hash, + ) + ) From 2abb7113373add2cc56131004b2b3ba7e9d6c2d9 Mon Sep 17 00:00:00 2001 From: "H. Joe Lee" Date: Wed, 13 Nov 2024 10:29:25 -0600 Subject: [PATCH 451/615] hermes-shm: remove duplicate line (#47575) close #10 --- var/spack/repos/builtin/packages/hermes-shm/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hermes-shm/package.py b/var/spack/repos/builtin/packages/hermes-shm/package.py index f93300553af0a0..f141db123fe2b4 100644 --- a/var/spack/repos/builtin/packages/hermes-shm/package.py +++ b/var/spack/repos/builtin/packages/hermes-shm/package.py @@ -41,7 +41,6 @@ class HermesShm(CMakePackage): depends_on("catch2@3.0.1") depends_on("yaml-cpp") depends_on("doxygen@1.9.3:", type="build") - depends_on("pkgconfig", type="build") depends_on("libelf") # Machine variants From 1cea82b6299506519fff684a3bd0cf82eb6c8182 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Wed, 13 Nov 2024 22:17:20 +0000 Subject: [PATCH 452/615] xfsprogs: fix dependency on liburcu (#47582) * xfsprogs: fix dependency on liburcu * xfsprogs: fix install rules.d * xfsprogs: edited xfsprogs requirement on liburcu * xfsprogs: many more versions --- .../builtin/packages/xfsprogs/package.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xfsprogs/package.py b/var/spack/repos/builtin/packages/xfsprogs/package.py index c25a95ed4c5c95..b5478dcc828c7e 100644 --- a/var/spack/repos/builtin/packages/xfsprogs/package.py +++ b/var/spack/repos/builtin/packages/xfsprogs/package.py @@ -15,6 +15,19 @@ class Xfsprogs(AutotoolsPackage): license("LGPL-2.1-or-later") version("6.11.0", sha256="dae3bb432196f7b183b2e6bd5dc44bf33edbd7d0e85bd37d25c235df81b8100a") + version("6.10.1", sha256="6cb839be1a9535f8352441b3f6eea521ead5c5c7c913e8106cdfac96aa117041") + version("6.10.0", sha256="a16e7caa5d8fea1c9652f1a45c8e5f2acc13fc632cf2066fe364ab13bd9df82d") + version("6.9.0", sha256="975284783fb3fbc4e1ae640bd804d788e4237a86b07582acee86b6e48f6521b7") + version("6.8.0", sha256="78b6ab776eebe5ab52e0884a70fa1b3633e64a282b1ecfae91f5dd1d9ec5f07d") + version("6.7.0", sha256="e75d1e012853e11597411cfcb80e26c811881cf0ca03715e852b42946cc61e1f") + version("6.6.0", sha256="50ca2f4676df8fab4cb4c3ef3dd512d5551e6844d40a65a31d5b8e03593d22df") + version("6.5.0", sha256="8db81712b32756b97d89dd9a681ac5e325bbb75e585382cd4863fab7f9d021c6") + version("6.4.0", sha256="c31868418bfbf49a3a9c47fc70cdffde9d96f4ff0051bd04a0881e6654648104") + version("6.3.0", sha256="ec987c9f0bcb2db2991bffb80d353150b389c3a2b79b6830411f7042adf6990c") + version("6.2.0", sha256="d67dcba5a28e0904b60886b6e5f752bc7c9c3a5c7096153855b5adca9db86c51") + version("6.1.1", sha256="05e8a137870db1d6182df72dda98ab7a7100deb376947e854b9d59c914c2c7bb") + version("6.1.0", sha256="eceb9015c4ebefa56fa85faff756ccb51ed2cf9c39ba239767f8e78705e85251") + version("6.0.0", sha256="b77cec2364aab0b8ae8d8c67daac7fdb3801e0979f1d8328d9c3469e57ca9ca0") version("5.11.0", sha256="0e9c390fcdbb8a79e1b8f5e6e25fd529fc9f9c2ef8f2d5e647b3556b82d1b353") version("5.8.0", sha256="8ef46ed9e6bb927f407f541dc4324857c908ddf1374265edc910d23724048c6b") version("5.7.0", sha256="8f2348a68a686a3f4491dda5d62dd32d885fbc52d32875edd41e2c296e7b4f35") @@ -29,6 +42,7 @@ class Xfsprogs(AutotoolsPackage): depends_on("gettext@:0.21.1", when="@:6.3") depends_on("uuid") depends_on("util-linux") + depends_on("liburcu", when="@6:") def flag_handler(self, name, flags): if name == "cflags": @@ -43,7 +57,10 @@ def setup_build_environment(self, env): env.append_path("C_INCLUDE_PATH", self.spec["util-linux"].prefix.include.blkid) def configure_args(self): - return ["--with-systemd-unit-dir=" + self.spec["xfsprogs"].prefix.lib.systemd.system] + args = ["--with-systemd-unit-dir=" + self.spec["xfsprogs"].prefix.lib.systemd.system] + if self.spec.satisfies("@6.5.0:"): + args.append("--with-udev-rule-dir=" + self.spec["xfsprogs"].prefix) + return args def install(self, spec, prefix): make("install") From ab513690873b6a242e992dc48aa3fc95acf68f89 Mon Sep 17 00:00:00 2001 From: psakievich Date: Thu, 14 Nov 2024 00:15:11 -0700 Subject: [PATCH 453/615] Update tutorial version (#47593) --- lib/spack/spack/cmd/tutorial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/tutorial.py b/lib/spack/spack/cmd/tutorial.py index 478ca52b7f565b..678a9262369c3f 100644 --- a/lib/spack/spack/cmd/tutorial.py +++ b/lib/spack/spack/cmd/tutorial.py @@ -24,7 +24,7 @@ # tutorial configuration parameters -tutorial_branch = "releases/v0.22" +tutorial_branch = "releases/v0.23" tutorial_mirror = "file:///mirror" tutorial_key = os.path.join(spack.paths.share_path, "keys", "tutorial.pub") From 020e30f3e675a0339d88a3a87ca75a9528d35e9d Mon Sep 17 00:00:00 2001 From: psakievich Date: Thu, 14 Nov 2024 00:15:11 -0700 Subject: [PATCH 454/615] Update tutorial version (#47593) --- lib/spack/spack/cmd/tutorial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/tutorial.py b/lib/spack/spack/cmd/tutorial.py index 478ca52b7f565b..678a9262369c3f 100644 --- a/lib/spack/spack/cmd/tutorial.py +++ b/lib/spack/spack/cmd/tutorial.py @@ -24,7 +24,7 @@ # tutorial configuration parameters -tutorial_branch = "releases/v0.22" +tutorial_branch = "releases/v0.23" tutorial_mirror = "file:///mirror" tutorial_key = os.path.join(spack.paths.share_path, "keys", "tutorial.pub") From e5c411d8f011c9d72ba0971e1f0df816997d4b39 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 13 Nov 2024 07:21:16 -0800 Subject: [PATCH 455/615] `spack spec`: simplify and unify output (#47574) `spack spec` output has looked like this for a while: ```console > spack spec /v5fn6xo /wd2p2v7 Input spec -------------------------------- - /v5fn6xo Concretized -------------------------------- [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared build_system=generic certs=mozilla arch=darwin-sequoia-m1 [+] ^ca-certificates-mozilla@2023-05-30%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ... Input spec -------------------------------- - /wd2p2v7 Concretized -------------------------------- [+] py-six@1.16.0%apple-clang@16.0.0 build_system=python_pip arch=darwin-sequoia-m1 [+] ^py-pip@23.1.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ``` But the input spec is right there on the CLI, and it doesn't add anything to the output. Also, since #44843, specs concretized in the CLI line can be unified, so it makes sense to display them as we did in #44489 -- as one multi-root tree instead of as multiple single-root trees. With this PR, concretize output now looks like this: ```console > spack spec /v5fn6xo /wd2p2v7 [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared build_system=generic certs=mozilla arch=darwin-sequoia-m1 [+] ^ca-certificates-mozilla@2023-05-30%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] ^gmake@4.4.1%apple-clang@16.0.0~guile build_system=generic arch=darwin-sequoia-m1 [+] ^perl@5.40.0%apple-clang@16.0.0+cpanm+opcode+open+shared+threads build_system=generic arch=darwin-sequoia-m1 [+] ^berkeley-db@18.1.40%apple-clang@16.0.0+cxx~docs+stl build_system=autotools patches=26090f4,b231fcc arch=darwin-sequoia-m1 [+] ^bzip2@1.0.8%apple-clang@16.0.0~debug~pic+shared build_system=generic arch=darwin-sequoia-m1 [+] ^diffutils@3.10%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^libiconv@1.17%apple-clang@16.0.0 build_system=autotools libs=shared,static arch=darwin-sequoia-m1 [+] ^gdbm@1.23%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^readline@8.2%apple-clang@16.0.0 build_system=autotools patches=bbf97f1 arch=darwin-sequoia-m1 [+] ^ncurses@6.5%apple-clang@16.0.0~symlinks+termlib abi=none build_system=autotools patches=7a351bc arch=darwin-sequoia-m1 [+] ^pkgconf@2.2.0%apple-clang@16.0.0 build_system=autotools arch=darwin-sequoia-m1 [+] ^zlib-ng@2.2.1%apple-clang@16.0.0+compat+new_strategies+opt+pic+shared build_system=autotools arch=darwin-sequoia-m1 [+] ^gnuconfig@2022-09-17%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] py-six@1.16.0%apple-clang@16.0.0 build_system=python_pip arch=darwin-sequoia-m1 [+] ^py-pip@23.1.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [+] ^py-setuptools@69.2.0%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 [-] ^py-wheel@0.41.2%apple-clang@16.0.0 build_system=generic arch=darwin-sequoia-m1 ... ``` With no input spec displayed -- just the concretization output shown as one consolidated tree and multiple roots. - [x] remove "Input Spec" section and "Concretized" header from `spack spec` output - [x] print concretized specs as one BFS tree instead of multiple --------- Signed-off-by: Todd Gamblin Co-authored-by: Harmen Stoppels --- lib/spack/spack/cmd/spec.py | 65 +++++++++++++------------------------ 1 file changed, 23 insertions(+), 42 deletions(-) diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 188e5360886856..d1278a71753970 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -82,14 +82,6 @@ def spec(parser, args): if args.namespaces: fmt = "{namespace}." + fmt - tree_kwargs = { - "cover": args.cover, - "format": fmt, - "hashlen": None if args.very_long else 7, - "show_types": args.types, - "status_fn": install_status_fn if args.install_status else None, - } - # use a read transaction if we are getting install status for every # spec in the DAG. This avoids repeatedly querying the DB. tree_context = lang.nullcontext @@ -99,46 +91,35 @@ def spec(parser, args): env = ev.active_environment() if args.specs: - input_specs = spack.cmd.parse_specs(args.specs) - concretized_specs = spack.cmd.parse_specs(args.specs, concretize=True) - specs = list(zip(input_specs, concretized_specs)) + concrete_specs = spack.cmd.parse_specs(args.specs, concretize=True) elif env: env.concretize() - specs = env.concretized_specs() - - if not args.format: - # environments are printed together in a combined tree() invocation, - # except when using --yaml or --json, which we print spec by spec below. - tree_kwargs["key"] = spack.traverse.by_dag_hash - tree_kwargs["hashes"] = args.long or args.very_long - print(spack.spec.tree([concrete for _, concrete in specs], **tree_kwargs)) - return + concrete_specs = env.concrete_roots() else: tty.die("spack spec requires at least one spec or an active environment") - for input, output in specs: - # With --yaml or --json, just print the raw specs to output - if args.format: + # With --yaml, --json, or --format, just print the raw specs to output + if args.format: + for spec in concrete_specs: if args.format == "yaml": # use write because to_yaml already has a newline. - sys.stdout.write(output.to_yaml(hash=ht.dag_hash)) + sys.stdout.write(spec.to_yaml(hash=ht.dag_hash)) elif args.format == "json": - print(output.to_json(hash=ht.dag_hash)) + print(spec.to_json(hash=ht.dag_hash)) else: - print(output.format(args.format)) - continue - - with tree_context(): - # Only show the headers for input specs that are not concrete to avoid - # repeated output. This happens because parse_specs outputs concrete - # specs for `/hash` inputs. - if not input.concrete: - tree_kwargs["hashes"] = False # Always False for input spec - print("Input spec") - print("--------------------------------") - print(input.tree(**tree_kwargs)) - print("Concretized") - print("--------------------------------") - - tree_kwargs["hashes"] = args.long or args.very_long - print(output.tree(**tree_kwargs)) + print(spec.format(args.format)) + return + + with tree_context(): + print( + spack.spec.tree( + concrete_specs, + cover=args.cover, + format=fmt, + hashlen=None if args.very_long else 7, + show_types=args.types, + status_fn=install_status_fn if args.install_status else None, + hashes=args.long or args.very_long, + key=spack.traverse.by_dag_hash, + ) + ) From d091172d67f94ee8e7b99c0d3b95dacb0d200e03 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 13 Nov 2024 23:20:03 -0800 Subject: [PATCH 456/615] Spec: prefer a splice-specific method to `__len__` (#47585) Automatic splicing say `Spec` grow a `__len__` method but it's only used in one place and it's not clear the semantics are useful elsewhere. It also runs the risk of Specs one day being confused for other types of containers. Rather than introduce a new function for one algorithm, let's use a more specific method in the splice code. - [x] Use topological ordering in `_resolve_automatic_splices` instead of sorting by node count - [x] delete `Spec.__len__()` and `Spec.__bool__()` --------- Signed-off-by: Todd Gamblin Co-authored-by: Greg Becker Co-authored-by: Massimiliano Culpo --- lib/spack/spack/solver/asp.py | 15 ++++++++++--- lib/spack/spack/solver/concretize.lp | 14 ++++++------ lib/spack/spack/spec.py | 16 +------------- lib/spack/spack/test/abi_splicing.py | 16 ++++++++++++++ lib/spack/spack/test/cmd/pkg.py | 1 + .../packages/splice-depends-on-t/package.py | 22 +++++++++++++++++++ 6 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 32db03f5cf906b..5310c4e3a84c89 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -3839,12 +3839,21 @@ def splice_at_hash( self._splices.setdefault(parent_node, []).append(splice) def _resolve_automatic_splices(self): - """After all of the specs have been concretized, apply all immediate - splices in size order. This ensures that all dependencies are resolved + """After all of the specs have been concretized, apply all immediate splices. + + Use reverse topological order to ensure that all dependencies are resolved before their parents, allowing for maximal sharing and minimal copying. + """ fixed_specs = {} - for node, spec in sorted(self._specs.items(), key=lambda x: len(x[1])): + + # create a mapping from dag hash to an integer representing position in reverse topo order. + specs = self._specs.values() + topo_order = list(traverse.traverse_nodes(specs, order="topo", key=traverse.by_dag_hash)) + topo_lookup = {spec.dag_hash(): index for index, spec in enumerate(reversed(topo_order))} + + # iterate over specs, children before parents + for node, spec in sorted(self._specs.items(), key=lambda x: topo_lookup[x[1].dag_hash()]): immediate = self._splices.get(node, []) if not immediate and not any( edge.spec in fixed_specs for edge in spec.edges_to_dependencies() diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 63a5a711758120..9bb237754e1d88 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -1455,7 +1455,7 @@ attr("node_flag", PackageNode, NodeFlag) :- attr("node_flag_set", PackageNode, N #defined installed_hash/2. #defined abi_splice_conditions_hold/4. -% These are the previously concretized attributes of the installed package as +% These are the previously concretized attributes of the installed package as % a hash. It has the general form: % hash_attr(Hash, Attribute, PackageName, Args*) #defined hash_attr/3. @@ -1479,12 +1479,12 @@ hash_attr(Hash, "node_version_satisfies", PackageName, Constraint) :- % This recovers the exact semantics for hash reuse hash and depends_on are where % splices are decided, and virtual_on_edge can result in name-changes, which is -% why they are all treated separately. +% why they are all treated separately. imposed_constraint(Hash, Attr, PackageName) :- hash_attr(Hash, Attr, PackageName). imposed_constraint(Hash, Attr, PackageName, A1) :- hash_attr(Hash, Attr, PackageName, A1), Attr != "hash". -imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- +imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- hash_attr(Hash, Attr, PackageName, Arg1, Arg2), Attr != "depends_on", Attr != "virtual_on_edge". @@ -1492,16 +1492,16 @@ imposed_constraint(Hash, Attr, PackageName, A1, A2, A3) :- hash_attr(Hash, Attr, PackageName, A1, A2, A3). imposed_constraint(Hash, "hash", PackageName, Hash) :- installed_hash(PackageName, Hash). % Without splicing, we simply recover the exact semantics -imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- +imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- hash_attr(ParentHash, "hash", ChildName, ChildHash), ChildHash != ParentHash, not abi_splice_conditions_hold(_, _, ChildName, ChildHash). - + imposed_constraint(Hash, "depends_on", PackageName, DepName, Type) :- hash_attr(Hash, "depends_on", PackageName, DepName, Type), hash_attr(Hash, "hash", DepName, DepHash), not attr("splice_at_hash", _, _, DepName, DepHash). - + imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- hash_attr(Hash, "virtual_on_edge", PackageName, DepName, VirtName), not attr("splice_at_hash", _, _, DepName,_). @@ -1511,7 +1511,7 @@ imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash), attr("node", PackageNode). -% If there is not a hash for a package, we build it. +% If there is not a hash for a package, we build it. build(PackageNode) :- attr("node", PackageNode), not concrete(PackageNode). diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 03a372be4e5284..926f35a70451c2 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1431,8 +1431,6 @@ def tree( class Spec: #: Cache for spec's prefix, computed lazily in the corresponding property _prefix = None - #: Cache for spec's length, computed lazily in the corresponding property - _length = None abstract_hash = None @staticmethod @@ -3702,18 +3700,6 @@ def __getitem__(self, name: str): return child - def __len__(self): - if not self.concrete: - raise spack.error.SpecError(f"Cannot get length of abstract spec: {self}") - - if not self._length: - self._length = 1 + sum(len(dep) for dep in self.dependencies()) - return self._length - - def __bool__(self): - # Need to define this so __len__ isn't used by default - return True - def __contains__(self, spec): """True if this spec or some dependency satisfies the spec. @@ -4472,7 +4458,7 @@ def clear_caches(self, ignore=()): if h.attr not in ignore: if hasattr(self, h.attr): setattr(self, h.attr, None) - for attr in ("_dunder_hash", "_prefix", "_length"): + for attr in ("_dunder_hash", "_prefix"): if attr not in ignore: setattr(self, attr, None) diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py index b36c285b134923..d647647797571f 100644 --- a/lib/spack/spack/test/abi_splicing.py +++ b/lib/spack/spack/test/abi_splicing.py @@ -229,3 +229,19 @@ def test_spliced_build_deps_only_in_build_spec(splicing_setup): assert _has_build_dependency(build_spec, "splice-z") # Spliced build dependencies are removed assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 + + +def test_spliced_transitive_dependency(splicing_setup): + cache = ["splice-depends-on-t@1.0 ^splice-h@1.0.1"] + goal_spec = Spec("splice-depends-on-t^splice-h@1.0.2") + + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["splice-depends-on-t"])) + _enable_splicing() + concr_goal = goal_spec.concretized() + # Spec has been spliced + assert concr_goal._build_spec is not None + assert concr_goal["splice-t"]._build_spec is not None + assert concr_goal.satisfies(goal_spec) + # Spliced build dependencies are removed + assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 diff --git a/lib/spack/spack/test/cmd/pkg.py b/lib/spack/spack/test/cmd/pkg.py index 1811b1a617fddd..8dfdf4773de3f3 100644 --- a/lib/spack/spack/test/cmd/pkg.py +++ b/lib/spack/spack/test/cmd/pkg.py @@ -315,6 +315,7 @@ def test_pkg_grep(mock_packages, capfd): "depends-on-manyvariants", "manyvariants", "splice-a", + "splice-depends-on-t", "splice-h", "splice-t", "splice-vh", diff --git a/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py new file mode 100644 index 00000000000000..9f38da0daa04f0 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py @@ -0,0 +1,22 @@ +# 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) + +from spack.package import * + + +class SpliceDependsOnT(Package): + """Package that depends on splice-t""" + + homepage = "http://www.example.com" + url = "http://www.example.com/splice-depends-on-t-1.0.tar.gz" + + version("1.0", md5="0123456789abcdef0123456789abcdef") + + depends_on("splice-t") + + def install(self, spec, prefix): + with open(prefix.join("splice-depends-on-t"), "w") as f: + f.write("splice-depends-on-t: {0}".format(prefix)) + f.write("splice-t: {0}".format(spec["splice-t"].prefix)) From 48dfa3c95e812e2668a70a1ba48e4089e48d33c0 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 13 Nov 2024 23:20:03 -0800 Subject: [PATCH 457/615] Spec: prefer a splice-specific method to `__len__` (#47585) Automatic splicing say `Spec` grow a `__len__` method but it's only used in one place and it's not clear the semantics are useful elsewhere. It also runs the risk of Specs one day being confused for other types of containers. Rather than introduce a new function for one algorithm, let's use a more specific method in the splice code. - [x] Use topological ordering in `_resolve_automatic_splices` instead of sorting by node count - [x] delete `Spec.__len__()` and `Spec.__bool__()` --------- Signed-off-by: Todd Gamblin Co-authored-by: Greg Becker Co-authored-by: Massimiliano Culpo --- lib/spack/spack/solver/asp.py | 15 ++++++++++--- lib/spack/spack/solver/concretize.lp | 14 ++++++------ lib/spack/spack/spec.py | 16 +------------- lib/spack/spack/test/abi_splicing.py | 16 ++++++++++++++ lib/spack/spack/test/cmd/pkg.py | 1 + .../packages/splice-depends-on-t/package.py | 22 +++++++++++++++++++ 6 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 32db03f5cf906b..5310c4e3a84c89 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -3839,12 +3839,21 @@ def splice_at_hash( self._splices.setdefault(parent_node, []).append(splice) def _resolve_automatic_splices(self): - """After all of the specs have been concretized, apply all immediate - splices in size order. This ensures that all dependencies are resolved + """After all of the specs have been concretized, apply all immediate splices. + + Use reverse topological order to ensure that all dependencies are resolved before their parents, allowing for maximal sharing and minimal copying. + """ fixed_specs = {} - for node, spec in sorted(self._specs.items(), key=lambda x: len(x[1])): + + # create a mapping from dag hash to an integer representing position in reverse topo order. + specs = self._specs.values() + topo_order = list(traverse.traverse_nodes(specs, order="topo", key=traverse.by_dag_hash)) + topo_lookup = {spec.dag_hash(): index for index, spec in enumerate(reversed(topo_order))} + + # iterate over specs, children before parents + for node, spec in sorted(self._specs.items(), key=lambda x: topo_lookup[x[1].dag_hash()]): immediate = self._splices.get(node, []) if not immediate and not any( edge.spec in fixed_specs for edge in spec.edges_to_dependencies() diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 63a5a711758120..9bb237754e1d88 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -1455,7 +1455,7 @@ attr("node_flag", PackageNode, NodeFlag) :- attr("node_flag_set", PackageNode, N #defined installed_hash/2. #defined abi_splice_conditions_hold/4. -% These are the previously concretized attributes of the installed package as +% These are the previously concretized attributes of the installed package as % a hash. It has the general form: % hash_attr(Hash, Attribute, PackageName, Args*) #defined hash_attr/3. @@ -1479,12 +1479,12 @@ hash_attr(Hash, "node_version_satisfies", PackageName, Constraint) :- % This recovers the exact semantics for hash reuse hash and depends_on are where % splices are decided, and virtual_on_edge can result in name-changes, which is -% why they are all treated separately. +% why they are all treated separately. imposed_constraint(Hash, Attr, PackageName) :- hash_attr(Hash, Attr, PackageName). imposed_constraint(Hash, Attr, PackageName, A1) :- hash_attr(Hash, Attr, PackageName, A1), Attr != "hash". -imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- +imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- hash_attr(Hash, Attr, PackageName, Arg1, Arg2), Attr != "depends_on", Attr != "virtual_on_edge". @@ -1492,16 +1492,16 @@ imposed_constraint(Hash, Attr, PackageName, A1, A2, A3) :- hash_attr(Hash, Attr, PackageName, A1, A2, A3). imposed_constraint(Hash, "hash", PackageName, Hash) :- installed_hash(PackageName, Hash). % Without splicing, we simply recover the exact semantics -imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- +imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- hash_attr(ParentHash, "hash", ChildName, ChildHash), ChildHash != ParentHash, not abi_splice_conditions_hold(_, _, ChildName, ChildHash). - + imposed_constraint(Hash, "depends_on", PackageName, DepName, Type) :- hash_attr(Hash, "depends_on", PackageName, DepName, Type), hash_attr(Hash, "hash", DepName, DepHash), not attr("splice_at_hash", _, _, DepName, DepHash). - + imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- hash_attr(Hash, "virtual_on_edge", PackageName, DepName, VirtName), not attr("splice_at_hash", _, _, DepName,_). @@ -1511,7 +1511,7 @@ imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash), attr("node", PackageNode). -% If there is not a hash for a package, we build it. +% If there is not a hash for a package, we build it. build(PackageNode) :- attr("node", PackageNode), not concrete(PackageNode). diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 03a372be4e5284..926f35a70451c2 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1431,8 +1431,6 @@ def tree( class Spec: #: Cache for spec's prefix, computed lazily in the corresponding property _prefix = None - #: Cache for spec's length, computed lazily in the corresponding property - _length = None abstract_hash = None @staticmethod @@ -3702,18 +3700,6 @@ def __getitem__(self, name: str): return child - def __len__(self): - if not self.concrete: - raise spack.error.SpecError(f"Cannot get length of abstract spec: {self}") - - if not self._length: - self._length = 1 + sum(len(dep) for dep in self.dependencies()) - return self._length - - def __bool__(self): - # Need to define this so __len__ isn't used by default - return True - def __contains__(self, spec): """True if this spec or some dependency satisfies the spec. @@ -4472,7 +4458,7 @@ def clear_caches(self, ignore=()): if h.attr not in ignore: if hasattr(self, h.attr): setattr(self, h.attr, None) - for attr in ("_dunder_hash", "_prefix", "_length"): + for attr in ("_dunder_hash", "_prefix"): if attr not in ignore: setattr(self, attr, None) diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py index b36c285b134923..d647647797571f 100644 --- a/lib/spack/spack/test/abi_splicing.py +++ b/lib/spack/spack/test/abi_splicing.py @@ -229,3 +229,19 @@ def test_spliced_build_deps_only_in_build_spec(splicing_setup): assert _has_build_dependency(build_spec, "splice-z") # Spliced build dependencies are removed assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 + + +def test_spliced_transitive_dependency(splicing_setup): + cache = ["splice-depends-on-t@1.0 ^splice-h@1.0.1"] + goal_spec = Spec("splice-depends-on-t^splice-h@1.0.2") + + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["splice-depends-on-t"])) + _enable_splicing() + concr_goal = goal_spec.concretized() + # Spec has been spliced + assert concr_goal._build_spec is not None + assert concr_goal["splice-t"]._build_spec is not None + assert concr_goal.satisfies(goal_spec) + # Spliced build dependencies are removed + assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 diff --git a/lib/spack/spack/test/cmd/pkg.py b/lib/spack/spack/test/cmd/pkg.py index 1811b1a617fddd..8dfdf4773de3f3 100644 --- a/lib/spack/spack/test/cmd/pkg.py +++ b/lib/spack/spack/test/cmd/pkg.py @@ -315,6 +315,7 @@ def test_pkg_grep(mock_packages, capfd): "depends-on-manyvariants", "manyvariants", "splice-a", + "splice-depends-on-t", "splice-h", "splice-t", "splice-vh", diff --git a/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py new file mode 100644 index 00000000000000..9f38da0daa04f0 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py @@ -0,0 +1,22 @@ +# 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) + +from spack.package import * + + +class SpliceDependsOnT(Package): + """Package that depends on splice-t""" + + homepage = "http://www.example.com" + url = "http://www.example.com/splice-depends-on-t-1.0.tar.gz" + + version("1.0", md5="0123456789abcdef0123456789abcdef") + + depends_on("splice-t") + + def install(self, spec, prefix): + with open(prefix.join("splice-depends-on-t"), "w") as f: + f.write("splice-depends-on-t: {0}".format(prefix)) + f.write("splice-t: {0}".format(spec["splice-t"].prefix)) From c0196cde398babcb4d412ac03dc80f946646c921 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 14 Nov 2024 09:17:41 +0100 Subject: [PATCH 458/615] Remove support for PGI compilers (#47195) --- lib/spack/docs/environments.rst | 4 +- lib/spack/docs/getting_started.rst | 63 -- lib/spack/docs/packaging_guide.rst | 74 +- lib/spack/spack/build_systems/cuda.py | 10 - lib/spack/spack/cmd/help.py | 4 +- lib/spack/spack/compilers/clang.py | 2 - lib/spack/spack/compilers/pgi.py | 77 -- lib/spack/spack/install_test.py | 2 +- lib/spack/spack/package_base.py | 2 +- lib/spack/spack/test/compilers/basics.py | 16 - .../compiler_verbose_output/pgcc-16.3.txt | 11 - lib/spack/spack/test/link_paths.py | 11 - lib/spack/spack/test/spec_semantics.py | 12 +- .../repos/builtin/packages/adios2/package.py | 1 - .../builtin/packages/allpaths-lg/package.py | 1 - .../repos/builtin/packages/amber/package.py | 3 - .../repos/builtin/packages/amrvis/package.py | 2 +- .../builtin/packages/babelstream/package.py | 47 +- .../repos/builtin/packages/bison/package.py | 1 - .../repos/builtin/packages/bison/pgi.patch | 10 - .../repos/builtin/packages/blis/package.py | 1 - .../packages/boost/boost_1.63.0_pgi.patch | 290 ------ .../boost_1.63.0_pgi_17.4_workaround.patch | 250 ------ .../packages/boost/boost_1.67.0_pgi.patch | 13 - .../repos/builtin/packages/boost/package.py | 7 - .../repos/builtin/packages/bzip2/package.py | 2 +- .../repos/builtin/packages/cbench/package.py | 2 +- .../repos/builtin/packages/chapel/package.py | 2 - .../packages/cloverleaf-ref/package.py | 3 - .../builtin/packages/cloverleaf/package.py | 4 - .../builtin/packages/cloverleaf3d/package.py | 4 - .../repos/builtin/packages/cmake/package.py | 2 +- .../repos/builtin/packages/cp2k/package.py | 3 +- .../repos/builtin/packages/dock/package.py | 5 +- .../repos/builtin/packages/elk/package.py | 2 - .../repos/builtin/packages/esmf/package.py | 2 - .../repos/builtin/packages/fftw/package.py | 7 +- .../builtin/packages/fftw/pgi-3.3.6-pl2.patch | 121 --- .../repos/builtin/packages/fleur/package.py | 5 - ...6-C.01-fix-building-c-code-with-pgcc.patch | 25 - .../gaussian-src/16-C.01-fix-shebangs.patch | 841 ------------------ ...lace-deprecated-pgf77-with-pgfortran.patch | 146 --- .../builtin/packages/gaussian-src/package.py | 160 ---- .../gaussian-src/spack_perms_fix.sh.j2 | 3 - .../builtin/packages/gaussian-view/package.py | 11 - .../builtin/packages/harfbuzz/package.py | 4 +- .../builtin/packages/libpciaccess/package.py | 9 - .../repos/builtin/packages/libquo/package.py | 9 +- .../builtin/packages/maverick/package.py | 1 - .../builtin/packages/minighost/package.py | 2 - .../builtin/packages/mpas-model/package.py | 3 - .../repos/builtin/packages/mumps/package.py | 3 +- .../repos/builtin/packages/nekcem/package.py | 3 - .../builtin/packages/nlohmann-json/package.py | 1 - .../repos/builtin/packages/numactl/package.py | 7 - .../repos/builtin/packages/nut/package.py | 1 - .../repos/builtin/packages/openmpi/package.py | 7 - .../repos/builtin/packages/p3dfft3/package.py | 3 - .../builtin/packages/parmetis/package.py | 7 - .../repos/builtin/packages/pdt/package.py | 2 - .../repos/builtin/packages/pennant/package.py | 2 - .../repos/builtin/packages/pfunit/package.py | 1 - .../builtin/packages/pgi/detection_test.yaml | 33 - .../repos/builtin/packages/pgi/package.py | 115 --- .../builtin/packages/pkg-config/package.py | 3 - .../repos/builtin/packages/pkgconf/package.py | 6 - .../repos/builtin/packages/plasma/package.py | 1 - .../repos/builtin/packages/precice/package.py | 1 - .../repos/builtin/packages/qmcpack/package.py | 2 - .../packages/quantum-espresso/package.py | 5 - .../repos/builtin/packages/raxml/package.py | 1 - .../repos/builtin/packages/rmgdft/package.py | 1 - .../repos/builtin/packages/rmlab/package.py | 1 - .../repos/builtin/packages/rsbench/package.py | 2 +- .../repos/builtin/packages/scale/package.py | 2 - .../builtin/packages/serialbox/package.py | 8 +- .../builtin/packages/spectrum-mpi/package.py | 16 - .../builtin/packages/stripack/package.py | 2 +- .../builtin/packages/suite-sparse/package.py | 5 +- .../builtin/packages/taskflow/package.py | 1 - .../repos/builtin/packages/tealeaf/package.py | 2 - .../repos/builtin/packages/unblur/package.py | 1 - .../repos/builtin/packages/wi4mpi/package.py | 2 - .../repos/builtin/packages/wps/package.py | 1 - .../repos/builtin/packages/xsimd/package.py | 1 - .../repos/builtin/packages/xtensor/package.py | 1 - .../repos/builtin/packages/xtl/package.py | 1 - .../repos/builtin/packages/zoltan/package.py | 2 - 88 files changed, 65 insertions(+), 2480 deletions(-) delete mode 100644 lib/spack/spack/compilers/pgi.py delete mode 100644 lib/spack/spack/test/data/compiler_verbose_output/pgcc-16.3.txt delete mode 100644 var/spack/repos/builtin/packages/bison/pgi.patch delete mode 100644 var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch delete mode 100644 var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch delete mode 100644 var/spack/repos/builtin/packages/boost/boost_1.67.0_pgi.patch delete mode 100644 var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch delete mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch delete mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch delete mode 100644 var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch delete mode 100644 var/spack/repos/builtin/packages/gaussian-src/package.py delete mode 100644 var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 delete mode 100644 var/spack/repos/builtin/packages/pgi/detection_test.yaml delete mode 100644 var/spack/repos/builtin/packages/pgi/package.py diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst index 2a9bb5c3f2f347..988dd71ba81b92 100644 --- a/lib/spack/docs/environments.rst +++ b/lib/spack/docs/environments.rst @@ -1042,7 +1042,7 @@ file snippet we define a view named ``mpis``, rooted at ``/path/to/view`` in which all projections use the package name, version, and compiler name to determine the path for a given package. This view selects all packages that depend on MPI, and -excludes those built with the PGI compiler at version 18.5. +excludes those built with the GCC compiler at version 18.5. The root specs with their (transitive) link and run type dependencies will be put in the view due to the ``link: all`` option, and the files in the view will be symlinks to the spack install @@ -1056,7 +1056,7 @@ directories. mpis: root: /path/to/view select: [^mpi] - exclude: ['%pgi@18.5'] + exclude: ['%gcc@18.5'] projections: all: '{name}/{version}-{compiler.name}' link: all diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 6654f50e775230..418e84b5cd92dc 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -283,10 +283,6 @@ compilers`` or ``spack compiler list``: intel@14.0.1 intel@13.0.1 intel@12.1.2 intel@10.1 -- clang ------------------------------------------------------- clang@3.4 clang@3.3 clang@3.2 clang@3.1 - -- pgi --------------------------------------------------------- - pgi@14.3-0 pgi@13.2-0 pgi@12.1-0 pgi@10.9-0 pgi@8.0-1 - pgi@13.10-0 pgi@13.1-1 pgi@11.10-0 pgi@10.2-0 pgi@7.1-3 - pgi@13.6-0 pgi@12.8-0 pgi@11.1-0 pgi@9.0-4 pgi@7.0-6 Any of these compilers can be used to build Spack packages. More on how this is done is in :ref:`sec-specs`. @@ -806,65 +802,6 @@ flags to the ``icc`` command: spec: intel@15.0.24.4.9.3 -^^^ -PGI -^^^ - -PGI comes with two sets of compilers for C++ and Fortran, -distinguishable by their names. "Old" compilers: - -.. code-block:: yaml - - cc: /soft/pgi/15.10/linux86-64/15.10/bin/pgcc - cxx: /soft/pgi/15.10/linux86-64/15.10/bin/pgCC - f77: /soft/pgi/15.10/linux86-64/15.10/bin/pgf77 - fc: /soft/pgi/15.10/linux86-64/15.10/bin/pgf90 - -"New" compilers: - -.. code-block:: yaml - - cc: /soft/pgi/15.10/linux86-64/15.10/bin/pgcc - cxx: /soft/pgi/15.10/linux86-64/15.10/bin/pgc++ - f77: /soft/pgi/15.10/linux86-64/15.10/bin/pgfortran - fc: /soft/pgi/15.10/linux86-64/15.10/bin/pgfortran - -Older installations of PGI contains just the old compilers; whereas -newer installations contain the old and the new. The new compiler is -considered preferable, as some packages -(``hdf``) will not build with the old compiler. - -When auto-detecting a PGI compiler, there are cases where Spack will -find the old compilers, when you really want it to find the new -compilers. It is best to check this ``compilers.yaml``; and if the old -compilers are being used, change ``pgf77`` and ``pgf90`` to -``pgfortran``. - -Other issues: - -* There are reports that some packages will not build with PGI, - including ``libpciaccess`` and ``openssl``. A workaround is to - build these packages with another compiler and then use them as - dependencies for PGI-build packages. For example: - - .. code-block:: console - - $ spack install openmpi%pgi ^libpciaccess%gcc - - -* PGI requires a license to use; see :ref:`licensed-compilers` for more - information on installation. - -.. note:: - - It is believed the problem with HDF 4 is that everything is - compiled with the ``F77`` compiler, but at some point some Fortran - 90 code slipped in there. So compilers that can handle both FORTRAN - 77 and Fortran 90 (``gfortran``, ``pgfortran``, etc) are fine. But - compilers specific to one or the other (``pgf77``, ``pgf90``) won't - work. - - ^^^ NAG ^^^ diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 87fb184c656d1f..9b3c2829f7a272 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1928,71 +1928,29 @@ to the empty list. String. A URL pointing to license setup instructions for the software. Defaults to the empty string. -For example, let's take a look at the package for the PGI compilers. +For example, let's take a look at the Arm Forge package. .. code-block:: python # Licensing license_required = True - license_comment = "#" - license_files = ["license.dat"] - license_vars = ["PGROUPD_LICENSE_FILE", "LM_LICENSE_FILE"] - license_url = "http://www.pgroup.com/doc/pgiinstall.pdf" - -As you can see, PGI requires a license. Its license manager, FlexNet, uses -the ``#`` symbol to denote a comment. It expects the license file to be -named ``license.dat`` and to be located directly in the installation prefix. -If you would like the installation file to be located elsewhere, simply set -``PGROUPD_LICENSE_FILE`` or ``LM_LICENSE_FILE`` after installation. For -further instructions on installation and licensing, see the URL provided. - -Let's walk through a sample PGI installation to see exactly what Spack is -and isn't capable of. Since PGI does not provide a download URL, it must -be downloaded manually. It can either be added to a mirror or located in -the current directory when ``spack install pgi`` is run. See :ref:`mirrors` -for instructions on setting up a mirror. - -After running ``spack install pgi``, the first thing that will happen is -Spack will create a global license file located at -``$SPACK_ROOT/etc/spack/licenses/pgi/license.dat``. It will then open up the -file using :ref:`your favorite editor `. It will look like -this: - -.. code-block:: sh - - # A license is required to use pgi. - # - # The recommended solution is to store your license key in this global - # license file. After installation, the following symlink(s) will be - # added to point to this file (relative to the installation prefix): - # - # license.dat - # - # Alternatively, use one of the following environment variable(s): - # - # PGROUPD_LICENSE_FILE - # LM_LICENSE_FILE - # - # If you choose to store your license in a non-standard location, you may - # set one of these variable(s) to the full pathname to the license file, or - # port@host if you store your license keys on a dedicated license server. - # You will likely want to set this variable in a module file so that it - # gets loaded every time someone tries to use pgi. - # - # For further information on how to acquire a license, please refer to: - # - # http://www.pgroup.com/doc/pgiinstall.pdf - # - # You may enter your license below. - -You can add your license directly to this file, or tell FlexNet to use a -license stored on a separate license server. Here is an example that -points to a license server called licman1: + license_comment = "#" + license_files = ["licences/Licence"] + license_vars = [ + "ALLINEA_LICENSE_DIR", + "ALLINEA_LICENCE_DIR", + "ALLINEA_LICENSE_FILE", + "ALLINEA_LICENCE_FILE", + ] + license_url = "https://developer.arm.com/documentation/101169/latest/Use-Arm-Licence-Server" -.. code-block:: none +Arm Forge requires a license. Its license manager uses the ``#`` symbol to denote a comment. +It expects the license file to be named ``License`` and to be located in a ``licenses`` directory +in the installation prefix. - SERVER licman1.mcs.anl.gov 00163eb7fba5 27200 - USE_SERVER +If you would like the installation file to be located elsewhere, simply set ``ALLINEA_LICENSE_DIR`` or +one of the other license variables after installation. For further instructions on installation and +licensing, see the URL provided. If your package requires the license to install, you can reference the location of this global license using ``self.global_license_file``. diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py index 5bfe0cfcadf679..d25c63ed196bb9 100644 --- a/lib/spack/spack/build_systems/cuda.py +++ b/lib/spack/spack/build_systems/cuda.py @@ -180,13 +180,6 @@ def compute_capabilities(arch_list: Iterable[str]) -> List[str]: conflicts("%gcc@7:", when="+cuda ^cuda@:9.1 target=x86_64:") conflicts("%gcc@8:", when="+cuda ^cuda@:10.0.130 target=x86_64:") conflicts("%gcc@9:", when="+cuda ^cuda@:10.2.89 target=x86_64:") - conflicts("%pgi@:14.8", when="+cuda ^cuda@:7.0.27 target=x86_64:") - conflicts("%pgi@:15.3,15.5:", when="+cuda ^cuda@7.5 target=x86_64:") - conflicts("%pgi@:16.2,16.0:16.3", when="+cuda ^cuda@8 target=x86_64:") - conflicts("%pgi@:15,18:", when="+cuda ^cuda@9.0:9.1 target=x86_64:") - conflicts("%pgi@:16,19:", when="+cuda ^cuda@9.2.88:10.0 target=x86_64:") - conflicts("%pgi@:17,20:", when="+cuda ^cuda@10.1.105:10.2.89 target=x86_64:") - conflicts("%pgi@:17,21:", when="+cuda ^cuda@11.0.2:11.1.0 target=x86_64:") conflicts("%clang@:3.4", when="+cuda ^cuda@:7.5 target=x86_64:") conflicts("%clang@:3.7,4:", when="+cuda ^cuda@8.0:9.0 target=x86_64:") conflicts("%clang@:3.7,4.1:", when="+cuda ^cuda@9.1 target=x86_64:") @@ -212,9 +205,6 @@ def compute_capabilities(arch_list: Iterable[str]) -> List[str]: conflicts("%gcc@8:", when="+cuda ^cuda@:10.0.130 target=ppc64le:") conflicts("%gcc@9:", when="+cuda ^cuda@:10.1.243 target=ppc64le:") # officially, CUDA 11.0.2 only supports the system GCC 8.3 on ppc64le - conflicts("%pgi", when="+cuda ^cuda@:8 target=ppc64le:") - conflicts("%pgi@:16", when="+cuda ^cuda@:9.1.185 target=ppc64le:") - conflicts("%pgi@:17", when="+cuda ^cuda@:10 target=ppc64le:") conflicts("%clang@4:", when="+cuda ^cuda@:9.0.176 target=ppc64le:") conflicts("%clang@5:", when="+cuda ^cuda@:9.1 target=ppc64le:") conflicts("%clang@6:", when="+cuda ^cuda@:9.2 target=ppc64le:") diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index 9a4023c87a4bb3..1a38d55cb63bac 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -78,8 +78,8 @@ boxlib @B{dim=2} boxlib built for 2 dimensions libdwarf @g{%intel} ^libelf@g{%gcc} libdwarf, built with intel compiler, linked to libelf built with gcc - mvapich2 @g{%pgi} @B{fabrics=psm,mrail,sock} - mvapich2, built with pgi compiler, with support for multiple fabrics + mvapich2 @g{%gcc} @B{fabrics=psm,mrail,sock} + mvapich2, built with gcc compiler, with support for multiple fabrics """ diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index 98e00aa270f8a8..f4a2708164dc32 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -16,7 +16,6 @@ ("gfortran", os.path.join("clang", "gfortran")), ("xlf_r", os.path.join("xl_r", "xlf_r")), ("xlf", os.path.join("xl", "xlf")), - ("pgfortran", os.path.join("pgi", "pgfortran")), ("ifort", os.path.join("intel", "ifort")), ] @@ -25,7 +24,6 @@ ("gfortran", os.path.join("clang", "gfortran")), ("xlf90_r", os.path.join("xl_r", "xlf90_r")), ("xlf90", os.path.join("xl", "xlf90")), - ("pgfortran", os.path.join("pgi", "pgfortran")), ("ifort", os.path.join("intel", "ifort")), ] diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py deleted file mode 100644 index bb7f290be3bb7c..00000000000000 --- a/lib/spack/spack/compilers/pgi.py +++ /dev/null @@ -1,77 +0,0 @@ -# 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 - -from spack.compiler import Compiler, UnsupportedCompilerFlag -from spack.version import Version - - -class Pgi(Compiler): - # Named wrapper links within build_env_path - link_paths = { - "cc": os.path.join("pgi", "pgcc"), - "cxx": os.path.join("pgi", "pgc++"), - "f77": os.path.join("pgi", "pgfortran"), - "fc": os.path.join("pgi", "pgfortran"), - } - - version_argument = "-V" - ignore_version_errors = [2] # `pgcc -V` on PowerPC annoyingly returns 2 - version_regex = r"pg[^ ]* ([0-9.]+)-[0-9]+ (LLVM )?[^ ]+ target on " - - @property - def verbose_flag(self): - return "-v" - - @property - def debug_flags(self): - return ["-g", "-gopt"] - - @property - def opt_flags(self): - return ["-O", "-O0", "-O1", "-O2", "-O3", "-O4"] - - @property - def openmp_flag(self): - return "-mp" - - @property - def cxx11_flag(self): - return "-std=c++11" - - @property - def cc_pic_flag(self): - return "-fpic" - - @property - def cxx_pic_flag(self): - return "-fpic" - - @property - def f77_pic_flag(self): - return "-fpic" - - @property - def fc_pic_flag(self): - return "-fpic" - - required_libs = ["libpgc", "libpgf90"] - - @property - def c99_flag(self): - if self.real_version >= Version("12.10"): - return "-c99" - raise UnsupportedCompilerFlag(self, "the C99 standard", "c99_flag", "< 12.10") - - @property - def c11_flag(self): - if self.real_version >= Version("15.3"): - return "-c11" - raise UnsupportedCompilerFlag(self, "the C11 standard", "c11_flag", "< 15.3") - - @property - def stdcxx_libs(self): - return ("-pgc++libs",) diff --git a/lib/spack/spack/install_test.py b/lib/spack/spack/install_test.py index f21f4f8cde25bb..d1c5197598bb91 100644 --- a/lib/spack/spack/install_test.py +++ b/lib/spack/spack/install_test.py @@ -764,7 +764,7 @@ def virtuals(pkg): # hack for compilers that are not dependencies (yet) # TODO: this all eventually goes away - c_names = ("gcc", "intel", "intel-parallel-studio", "pgi") + c_names = ("gcc", "intel", "intel-parallel-studio") if pkg.name in c_names: v_names.extend(["c", "cxx", "fortran"]) if pkg.spec.satisfies("llvm+clang"): diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 943c4eb0a4f666..5410f72ab16f9b 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -1016,7 +1016,7 @@ def keep_werror(self) -> Optional[str]: * ``"none"``: filter out all ``-Werror*`` flags. * ``None``: respect the user's configuration (``"none"`` by default). """ - if self.spec.satisfies("%nvhpc@:23.3") or self.spec.satisfies("%pgi"): + if self.spec.satisfies("%nvhpc@:23.3"): # Filtering works by replacing -Werror with -Wno-error, but older nvhpc and # PGI do not understand -Wno-error, so we disable filtering. return "all" diff --git a/lib/spack/spack/test/compilers/basics.py b/lib/spack/spack/test/compilers/basics.py index 75e79d497c6c65..14567745fa9f60 100644 --- a/lib/spack/spack/test/compilers/basics.py +++ b/lib/spack/spack/test/compilers/basics.py @@ -537,22 +537,6 @@ def test_nvhpc_flags(): supported_flag_test("stdcxx_libs", ("-c++libs",), "nvhpc@=20.9") -def test_pgi_flags(): - supported_flag_test("openmp_flag", "-mp", "pgi@=1.0") - supported_flag_test("cxx11_flag", "-std=c++11", "pgi@=1.0") - unsupported_flag_test("c99_flag", "pgi@=12.9") - supported_flag_test("c99_flag", "-c99", "pgi@=12.10") - unsupported_flag_test("c11_flag", "pgi@=15.2") - supported_flag_test("c11_flag", "-c11", "pgi@=15.3") - supported_flag_test("cc_pic_flag", "-fpic", "pgi@=1.0") - supported_flag_test("cxx_pic_flag", "-fpic", "pgi@=1.0") - supported_flag_test("f77_pic_flag", "-fpic", "pgi@=1.0") - supported_flag_test("fc_pic_flag", "-fpic", "pgi@=1.0") - supported_flag_test("stdcxx_libs", ("-pgc++libs",), "pgi@=1.0") - supported_flag_test("debug_flags", ["-g", "-gopt"], "pgi@=1.0") - supported_flag_test("opt_flags", ["-O", "-O0", "-O1", "-O2", "-O3", "-O4"], "pgi@=1.0") - - def test_xl_flags(): supported_flag_test("openmp_flag", "-qsmp=omp", "xl@=1.0") unsupported_flag_test("cxx11_flag", "xl@=13.0") diff --git a/lib/spack/spack/test/data/compiler_verbose_output/pgcc-16.3.txt b/lib/spack/spack/test/data/compiler_verbose_output/pgcc-16.3.txt deleted file mode 100644 index 90413223509951..00000000000000 --- a/lib/spack/spack/test/data/compiler_verbose_output/pgcc-16.3.txt +++ /dev/null @@ -1,11 +0,0 @@ -Export PGI=/usr/tce/packages/pgi/pgi-16.3 - -/usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/bin/pgc test.c -opt 1 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -tp haswell -x 120 0x1000 -astype 0 -stdinc /usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/include-gcc48:/usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/include:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include:/usr/local/include:/usr/include -def unix -def __unix -def __unix__ -def linux -def __linux -def __linux__ -def __NO_MATH_INLINES -def __LP64__ -def __x86_64 -def __x86_64__ -def __LONG_MAX__=9223372036854775807L -def '__SIZE_TYPE__=unsigned long int' -def '__PTRDIFF_TYPE__=long int' -def __THROW= -def __extension__= -def __amd_64__amd64__ -def __k8 -def __k8__ -def __SSE__ -def __MMX__ -def __SSE2__ -def __SSE3__ -def __SSSE3__ -def __STDC_HOSTED__ -predicate '#machine(x86_64) #lint(off) #system(posix) #cpu(x86_64)' -cmdline '+pgcc test.c -v -o test.o' -x 123 0x80000000 -x 123 4 -x 2 0x400 -x 119 0x20 -def __pgnu_vsn=40805 -x 120 0x200000 -x 70 0x40000000 -y 163 0xc0000000 -x 189 0x10 -y 189 0x4000000 -asm /var/tmp/gamblin2/pgccL0MCVCOQsq6l.s -PGC/x86-64 Linux 16.3-0: compilation successful - -/usr/bin/as /var/tmp/gamblin2/pgccL0MCVCOQsq6l.s -o /var/tmp/gamblin2/pgcc10MCFxmYXjgo.o - -/usr/tce/bin/ld /usr/lib64/crt1.o /usr/lib64/crti.o /usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib/trace_init.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o /usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib/initmp.o --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib/pgi.ld -L/usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /var/tmp/gamblin2/pgcc10MCFxmYXjgo.o -rpath /usr/tce/packages/pgi/pgi-16.3/linux86-64/16.3/lib -o test.o -lpgmp -lnuma -lpthread -lnspgc -lpgc -lm -lgcc -lc -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o /usr/lib64/crtn.o -Unlinking /var/tmp/gamblin2/pgccL0MCVCOQsq6l.s -Unlinking /var/tmp/gamblin2/pgccn0MCNcmgIbh8.ll -Unlinking /var/tmp/gamblin2/pgcc10MCFxmYXjgo.o diff --git a/lib/spack/spack/test/link_paths.py b/lib/spack/spack/test/link_paths.py index 2d62c59de61f0d..145203c1ad35cf 100644 --- a/lib/spack/spack/test/link_paths.py +++ b/lib/spack/spack/test/link_paths.py @@ -69,17 +69,6 @@ def test_icc16_link_paths(): ) -def test_pgi_link_paths(): - check_link_paths( - "pgcc-16.3.txt", - [ - os.path.join( - root, "usr", "tce", "packages", "pgi", "pgi-16.3", "linux86-64", "16.3", "lib" - ) - ], - ) - - def test_gcc7_link_paths(): check_link_paths("gcc-7.3.1.txt", []) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 9f94d11a08a37a..6fcdcded151f83 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -159,8 +159,8 @@ class TestSpecSemantics: ("foo%intel", "%intel", "foo%intel"), ("foo%gcc", "%gcc@4.7.2", "foo%gcc@4.7.2"), ("foo%intel", "%intel@4.7.2", "foo%intel@4.7.2"), - ("foo%pgi@4.5", "%pgi@4.4:4.6", "foo%pgi@4.5"), - ("foo@2.0%pgi@4.5", "@1:3%pgi@4.4:4.6", "foo@2.0%pgi@4.5"), + ("foo%gcc@4.5", "%gcc@4.4:4.6", "foo%gcc@4.5"), + ("foo@2.0%gcc@4.5", "@1:3%gcc@4.4:4.6", "foo@2.0%gcc@4.5"), ("foo %gcc@4.7.3", "%gcc@4.7", "foo %gcc@4.7.3"), ("libelf %gcc@4.4.7", "libelf %gcc@4.4.7", "libelf %gcc@4.4.7"), ("libelf", "libelf %gcc@4.4.7", "libelf %gcc@4.4.7"), @@ -462,10 +462,10 @@ def test_concrete_specs_which_satisfies_abstract(self, lhs, rhs, default_mock_co ("foo target=x86_64", "platform=test os=redhat6 target=x86"), ("foo arch=test-frontend-frontend", "platform=test os=frontend target=backend"), ("foo%intel", "%gcc"), - ("foo%intel", "%pgi"), - ("foo%pgi@4.3", "%pgi@4.4:4.6"), - ("foo@4.0%pgi", "@1:3%pgi"), - ("foo@4.0%pgi@4.5", "@1:3%pgi@4.4:4.6"), + ("foo%intel", "%gcc"), + ("foo%gcc@4.3", "%gcc@4.4:4.6"), + ("foo@4.0%gcc", "@1:3%gcc"), + ("foo@4.0%gcc@4.5", "@1:3%gcc@4.4:4.6"), ("builtin.mock.mpich", "builtin.mpich"), ("mpileaks ^builtin.mock.mpich", "^builtin.mpich"), ("mpileaks^mpich@1.2", "^mpich@2.0"), diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 76ca3b0c9f1c5c..dabe5554a3f474 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -113,7 +113,6 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # Requires mature C++11 implementations conflicts("%gcc@:4.7") conflicts("%intel@:15") - conflicts("%pgi@:14") # ifx does not support submodules in separate files conflicts("%oneapi@:2022.1.0", when="+fortran") diff --git a/var/spack/repos/builtin/packages/allpaths-lg/package.py b/var/spack/repos/builtin/packages/allpaths-lg/package.py index 2a325cd3b7f5af..337ea8b7ac0da8 100644 --- a/var/spack/repos/builtin/packages/allpaths-lg/package.py +++ b/var/spack/repos/builtin/packages/allpaths-lg/package.py @@ -24,6 +24,5 @@ class AllpathsLg(AutotoolsPackage): conflicts("%clang") conflicts("%intel") conflicts("%nag") - conflicts("%pgi") conflicts("%xl") conflicts("%xl_r") diff --git a/var/spack/repos/builtin/packages/amber/package.py b/var/spack/repos/builtin/packages/amber/package.py index f72ce9bc4da690..1eb8ca557db328 100644 --- a/var/spack/repos/builtin/packages/amber/package.py +++ b/var/spack/repos/builtin/packages/amber/package.py @@ -148,7 +148,6 @@ class Amber(Package, CudaPackage): conflicts( "+openmp", when="%apple-clang", msg="OpenMP not available for the Apple clang compiler" ) - conflicts("+openmp", when="%pgi", msg="OpenMP not available for the pgi compiler") def url_for_version(self, version): url = "file://{0}/Amber{1}.tar.bz2".format(os.getcwd(), version) @@ -182,8 +181,6 @@ def install(self, spec, prefix): compiler = "gnu" elif self.spec.satisfies("%intel"): compiler = "intel" - elif self.spec.satisfies("%pgi"): - compiler = "pgi" elif self.spec.satisfies("%nvhpc"): compiler = "pgi" elif self.spec.satisfies("%clang"): diff --git a/var/spack/repos/builtin/packages/amrvis/package.py b/var/spack/repos/builtin/packages/amrvis/package.py index e05668483d1844..8ca075cda54335 100644 --- a/var/spack/repos/builtin/packages/amrvis/package.py +++ b/var/spack/repos/builtin/packages/amrvis/package.py @@ -57,7 +57,7 @@ class Amrvis(MakefilePackage): # Only doing gcc and clang at the moment. # Intel currently fails searching for mpiicc, mpiicpc, etc. - for comp in ["%intel", "%cce", "%nag", "%pgi", "%xl", "%xl_r"]: + for comp in ["%intel", "%cce", "%nag", "%xl", "%xl_r"]: conflicts(comp, msg="Amrvis currently only builds with gcc and clang") # Need to clone AMReX into Amrvis because Amrvis uses AMReX's source diff --git a/var/spack/repos/builtin/packages/babelstream/package.py b/var/spack/repos/builtin/packages/babelstream/package.py index b09fcc5f6e4a62..d4d94d078e9e8f 100644 --- a/var/spack/repos/builtin/packages/babelstream/package.py +++ b/var/spack/repos/builtin/packages/babelstream/package.py @@ -390,31 +390,28 @@ def cmake_args(self): Refer to `nvc++ --help` for the full list" "") """ - if self.spec.satisfies("+acc~kokkos~raja"): - if (self.spec.compiler.name == "nvhpc") or (self.spec.compiler.name == "pgi"): - target_device = "gpu" if "cuda_arch" in self.spec.variants else "multicore" - if "cuda_arch" in self.spec.variants: - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append cc_ to the name - cuda_arch = "cc" + cuda_arch_list[0] - # args.append( - # "-DCXX_EXTRA_FLAGS=" + "-target=" + target_device + "-gpu=" + cuda_arch - # ) - args.append("-DCUDA_ARCH=" + cuda_arch) - else: - # get the cpu architecture value from user - target_processor = str( - self.spec.target - ) # self.spec.variants["cpu_arch"].value[0] - args.append("-DTARGET_PROCESSOR=" + target_processor) - # args.append( - # "-DCXX_EXTRA_FLAGS=" - # + "-target=" - # + target_device - # + "-tp=" - # + target_processor - # ) - args.append("-DTARGET_DEVICE=" + target_device) + if self.spec.satisfies("+acc~kokkos~raja %nvhpc"): + target_device = "gpu" if "cuda_arch" in self.spec.variants else "multicore" + if "cuda_arch" in self.spec.variants: + cuda_arch_list = self.spec.variants["cuda_arch"].value + # the architecture value is only number so append cc_ to the name + cuda_arch = "cc" + cuda_arch_list[0] + # args.append( + # "-DCXX_EXTRA_FLAGS=" + "-target=" + target_device + "-gpu=" + cuda_arch + # ) + args.append("-DCUDA_ARCH=" + cuda_arch) + else: + # get the cpu architecture value from user + target_processor = str(self.spec.target) # self.spec.variants["cpu_arch"].value[0] + args.append("-DTARGET_PROCESSOR=" + target_processor) + # args.append( + # "-DCXX_EXTRA_FLAGS=" + # + "-target=" + # + target_device + # + "-tp=" + # + target_processor + # ) + args.append("-DTARGET_DEVICE=" + target_device) # =================================== # STDdata,STDindices,STDranges # =================================== diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 7226ae8be4d9d7..5ca28a2a2b309d 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -64,7 +64,6 @@ class Bison(AutotoolsPackage, GNUMirrorPackage): depends_on("m4@1.4.6:", type=("build", "run")) depends_on("diffutils", type="build") - patch("pgi.patch", when="@3.0.4") # The NVIDIA compilers do not currently support some GNU builtins. # Detect this case and use the fallback path. patch("nvhpc-3.6.patch", when="@3.6.0:3.6 %nvhpc") diff --git a/var/spack/repos/builtin/packages/bison/pgi.patch b/var/spack/repos/builtin/packages/bison/pgi.patch deleted file mode 100644 index 8aeaa96a516955..00000000000000 --- a/var/spack/repos/builtin/packages/bison/pgi.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/lib/config.in.h -+++ b/lib/config.in.h -@@ -2182,6 +2182,7 @@ - ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ - : (199901L <= __STDC_VERSION__ \ - && !defined __HP_cc \ -+ && !defined __PGI \ - && !(defined __SUNPRO_C && __STDC__))) \ - && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) - # define _GL_INLINE inline diff --git a/var/spack/repos/builtin/packages/blis/package.py b/var/spack/repos/builtin/packages/blis/package.py index 56524abfd7528a..e7fdec6acbc15b 100644 --- a/var/spack/repos/builtin/packages/blis/package.py +++ b/var/spack/repos/builtin/packages/blis/package.py @@ -49,7 +49,6 @@ class BlisBase(MakefilePackage): provides("blas", when="+cblas") conflicts("%nvhpc") - conflicts("%pgi") def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch deleted file mode 100644 index 925592e321712b..00000000000000 --- a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch +++ /dev/null @@ -1,290 +0,0 @@ -diff -uNr boost_1_63_0/boost/mpl/assert.hpp boost_1_63_0/boost/mpl/assert.hpp ---- boost_1_63_0/boost/mpl/assert.hpp 2016-12-22 07:33:17.000000000 -0500 -+++ boost_1_63_0/boost/mpl/assert.hpp 2017-05-31 20:09:43.704689605 -0400 -@@ -56,7 +56,7 @@ - // and GCC (which issues "unused variable" warnings when static constants are used - // at a function scope) - #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ -- || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) -+ || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) - # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr } - #else - # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr) -diff -uNr boost_1_63_0/boost/type_traits/is_floating_point.hpp boost_1_63_0/boost/type_traits/is_floating_point.hpp ---- boost_1_63_0/boost/type_traits/is_floating_point.hpp 2016-12-22 07:33:20.000000000 -0500 -+++ boost_1_63_0/boost/type_traits/is_floating_point.hpp 2017-05-31 20:12:50.187001957 -0400 -@@ -20,8 +20,9 @@ - template<> struct is_floating_point : public true_type{}; - template<> struct is_floating_point : public true_type{}; - template<> struct is_floating_point : public true_type{}; -- --#if defined(BOOST_HAS_FLOAT128) -+ -+// In PGI compiler, __float128 is a typedef, not its own type. -+#if defined(BOOST_HAS_FLOAT128) && !defined(__PGI) - template<> struct is_floating_point<__float128> : public true_type{}; - #endif - -diff -uNr boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp ---- boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp 2016-12-22 07:33:20.000000000 -0500 -+++ boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp 2017-05-31 20:11:12.365788989 -0400 -@@ -98,11 +98,7 @@ - }; - - public: -- functor() --#if defined(__PGI) -- : eof() --#endif -- {} -+ functor() {} - - #if BOOST_WORKAROUND(BOOST_MSVC, <= 1310) - // somehow VC7.1 needs this (meaningless) assignment operator -diff -uNr boost_1_63_0/boost/cstdint.hpp boost_1_63_0/boost/cstdint.hpp ---- boost_1_63_0/boost/cstdint.hpp 2016-12-22 07:33:14.000000000 -0500 -+++ boost_1_63_0/boost/cstdint.hpp 2017-05-31 20:04:52.821068853 -0400 -@@ -367,9 +367,6 @@ - #include - #endif - --// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config. --#if !defined(__PGIC__) -- - #if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \ - || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ - || defined(__CYGWIN__) \ -@@ -393,8 +390,6 @@ - - #endif - --#endif // !defined(__PGIC__) -- - #endif // BOOST_CSTDINT_HPP - - -diff -uNr boost_1_63_0/libs/filesystem/src/operations.cpp boost_1_63_0/libs/filesystem/src/operations.cpp ---- boost_1_63_0/libs/filesystem/src/operations.cpp 2016-12-22 07:33:15.000000000 -0500 -+++ boost_1_63_0/libs/filesystem/src/operations.cpp 2017-05-31 20:06:26.492231150 -0400 -@@ -2051,10 +2051,6 @@ - return ok; - } - --#if defined(__PGI) && defined(__USE_FILE_OFFSET64) --#define dirent dirent64 --#endif -- - error_code dir_itr_first(void *& handle, void *& buffer, - const char* dir, string& target, - fs::file_status &, fs::file_status &) -diff -uNr boost_1_63_0/tools/build/src/engine/boehm_gc/configure boost_1_63_0/tools/build/src/engine/boehm_gc/configure ---- boost_1_63_0/tools/build/src/engine/boehm_gc/configure 2016-12-22 07:33:21.000000000 -0500 -+++ boost_1_63_0/tools/build/src/engine/boehm_gc/configure 2017-05-31 13:02:25.089265415 -0400 -@@ -9286,7 +9286,7 @@ - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' -@@ -9722,7 +9722,7 @@ - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in -- pgcc*) # Portland Group C compiler -+ pgcc* | pgc++*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; -@@ -13421,7 +13421,7 @@ - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; -- pgCC*) -+ pgc++*) - # Portland Group C++ compiler - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -@@ -14098,7 +14098,7 @@ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; -- pgCC*) -+ pgc++*) - # Portland Group C++ compiler. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' -@@ -15812,7 +15812,7 @@ - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_F77='-Wl,' -@@ -16248,7 +16248,7 @@ - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in -- pgcc*) # Portland Group C compiler -+ pgcc* | pgc++*) # Portland Group C compiler - whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; -@@ -18386,7 +18386,7 @@ - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_GCJ='-Wl,' -@@ -18822,7 +18822,7 @@ - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in -- pgcc*) # Portland Group C compiler -+ pgcc* | pgc++*) # Portland Group C compiler - whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; -diff -uNr boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 ---- boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 2016-12-22 07:33:21.000000000 -0500 -+++ boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 2017-05-31 13:02:56.629643895 -0400 -@@ -3325,7 +3325,7 @@ - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; -- pgCC*) -+ pgc++*) - # Portland Group C++ compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -@@ -4977,7 +4977,7 @@ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; -- pgCC*) -+ pgc++*) - # Portland Group C++ compiler. - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -@@ -5225,7 +5225,7 @@ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; -- pgcc* | pgf77* | pgf90* | pgf95*) -+ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -diff -uNr boost_1_63_0/tools/build/src/tools/pgi.jam boost_1_63_0/tools/build/src/tools/pgi.jam ---- boost_1_63_0/tools/build/src/tools/pgi.jam 2016-12-22 07:33:21.000000000 -0500 -+++ boost_1_63_0/tools/build/src/tools/pgi.jam 2017-05-31 20:25:19.726296130 -0400 -@@ -25,7 +25,7 @@ - { - local condition = [ common.check-init-parameters pgi : version $(version) ] ; - -- local l_command = [ common.get-invocation-command pgi : pgCC : $(command) ] ; -+ local l_command = [ common.get-invocation-command pgi : pgc++ : $(command) ] ; - - common.handle-options pgi : $(condition) : $(l_command) : $(options) ; - -@@ -36,17 +36,10 @@ - flags pgi.compile DEFINES $(condition) : - [ feature.get-values : $(options) ] : unchecked ; - -- # IOV_MAX support -- flags pgi.compile DEFINES $(condition) : __need_IOV_MAX : unchecked ; -- - # set link flags - flags pgi.link FINDLIBS-ST : [ - feature.get-values : $(options) ] : unchecked ; - -- # always link lib rt to resolve clock_gettime() -- flags pgi.link FINDLIBS-SA : rt [ -- feature.get-values : $(options) ] : unchecked ; -- - gcc.init-link-flags pgi gnu $(condition) ; - } - -@@ -56,18 +49,19 @@ - generators.register-fortran-compiler pgi.compile.fortran : FORTRAN : OBJ : pgi ; - - # Declare flags and actions for compilation --flags pgi.compile OPTIONS : -Kieee ; --flags pgi.compile OPTIONS shared : -fpic -fPIC ; -+flags pgi.compile OPTIONS shared : -fpic ; - flags pgi.compile OPTIONS on : -gopt ; --flags pgi.compile OPTIONS on : -xprofile=tcov ; --flags pgi.compile OPTIONS speed : -fast -Mx,8,0x10000000 ; --flags pgi.compile OPTIONS space : -xO2 -xspace ; --# flags pgi.compile OPTIONS multi : -mt ; -+flags pgi.compile OPTIONS off : -O0 ; -+flags pgi.compile OPTIONS speed : -fast ; -+flags pgi.compile OPTIONS space : -fast ; - - flags pgi.compile OPTIONS off : -Minform=severe ; - flags pgi.compile OPTIONS on : -Minform=warn ; -+flags pgi.compile OPTIONS on : -Werror ; - - flags pgi.compile.c++ OPTIONS off : -INLINE:none ; -+flags pgi.compile.c++ OPTIONS off : --no_rtti ; -+flags pgi.compile.c++ OPTIONS off : --no_exceptions ; - - flags pgi.compile OPTIONS ; - flags pgi.compile.c++ OPTIONS ; -@@ -95,9 +89,8 @@ - flags pgi.link OPTIONS on : -gopt ; - # Strip the binary when no debugging is needed - flags pgi.link OPTIONS off : -s ; --flags pgi.link OPTIONS on : -xprofile=tcov ; - flags pgi.link OPTIONS ; --flags pgi.link OPTIONS shared : -fpic -fPIC ; -+flags pgi.link OPTIONS shared : -fpic ; - flags pgi.link LINKPATH ; - flags pgi.link FINDLIBS-ST ; - flags pgi.link FINDLIBS-SA ; -@@ -107,24 +100,14 @@ - flags pgi.link LINK-RUNTIME shared : dynamic ; - flags pgi.link RPATH ; - --# On gcc, there are separate options for dll path at runtime and --# link time. On Solaris, there's only one: -R, so we have to use --# it, even though it's bad idea. --flags pgi.link RPATH ; -- - rule link ( targets * : sources * : properties * ) - { - SPACE on $(targets) = " " ; - } - --# reddish can only link statically and, somehow, the presence of -Bdynamic on the link line --# marks the executable as a dynamically linked exec even though no dynamic libraries are supplied. --# Yod on redstorm refuses to load an executable that is dynamically linked. --# removing the dynamic link options should get us where we need to be on redstorm. --# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) - actions link bind LIBRARIES - { -- "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bstatic -l$(FINDLIBS-ST) -Bdynamic -l$(FINDLIBS-SA) -B$(LINK-RUNTIME) -+ "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) - } - - # Slight mods for dlls -@@ -133,11 +116,10 @@ - SPACE on $(targets) = " " ; - } - --# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" -h$(<[1]:D=) -G "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) - - actions link.dll bind LIBRARIES - { -- "$(CONFIG_COMMAND)" $(OPTIONS) -shared -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" -Wl,-h -Wl,$(<[1]:D=) "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) -+ "$(CONFIG_COMMAND)" $(OPTIONS) -shared -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) - } - - actions updated together piecemeal pgi.archive diff --git a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch deleted file mode 100644 index 3bfb989f807ad7..00000000000000 --- a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch +++ /dev/null @@ -1,250 +0,0 @@ -diff -uNr boost_1_63_0/boost/archive/archive_exception.hpp boost_1_63_0/boost/archive/archive_exception.hpp ---- boost_1_63_0/boost/archive/archive_exception.hpp 2016-12-22 07:33:19.000000000 -0500 -+++ boost_1_63_0/boost/archive/archive_exception.hpp 2017-06-01 22:07:26.013983567 -0400 -@@ -42,13 +42,6 @@ - class BOOST_SYMBOL_VISIBLE archive_exception : - public virtual std::exception - { --private: -- char m_buffer[128]; --protected: -- BOOST_ARCHIVE_DECL unsigned int -- append(unsigned int l, const char * a); -- BOOST_ARCHIVE_DECL -- archive_exception() BOOST_NOEXCEPT; - public: - typedef enum { - no_exception, // initialized without code -@@ -90,6 +83,15 @@ - BOOST_ARCHIVE_DECL archive_exception(archive_exception const &) BOOST_NOEXCEPT ; - virtual BOOST_ARCHIVE_DECL ~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; - virtual BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; -+protected: -+ BOOST_ARCHIVE_DECL unsigned int -+ append(unsigned int l, const char * a); -+ BOOST_ARCHIVE_DECL -+ archive_exception() BOOST_NOEXCEPT; -+private: -+ char m_buffer[128]; -+ BOOST_ARCHIVE_DECL void -+ pgi_bug_workaround_init(archive_exception *, const char *, const char *); - }; - - }// namespace archive -diff -uNr boost_1_63_0/boost/archive/xml_archive_exception.hpp boost_1_63_0/boost/archive/xml_archive_exception.hpp ---- boost_1_63_0/boost/archive/xml_archive_exception.hpp 2016-12-22 07:33:19.000000000 -0500 -+++ boost_1_63_0/boost/archive/xml_archive_exception.hpp 2017-05-31 21:02:03.373700156 -0400 -@@ -47,6 +47,9 @@ - ); - BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; - virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; -+private: -+ BOOST_ARCHIVE_DECL void -+ pgi_bug_workaround_init_xml(xml_archive_exception *, exception_code, const char *, const char *); - }; - - }// namespace archive -diff -uNr boost_1_63_0/libs/serialization/src/archive_exception.cpp boost_1_63_0/libs/serialization/src/archive_exception.cpp ---- boost_1_63_0/libs/serialization/src/archive_exception.cpp 2016-12-22 07:33:19.000000000 -0500 -+++ boost_1_63_0/libs/serialization/src/archive_exception.cpp 2017-06-01 22:06:14.193128909 -0400 -@@ -37,83 +37,90 @@ - } - - BOOST_ARCHIVE_DECL --archive_exception::archive_exception( -- exception_code c, -- const char * e1, -- const char * e2 --) BOOST_NOEXCEPT : -- code(c) -+void -+archive_exception::pgi_bug_workaround_init(archive_exception *new_object, const char *e1, const char *e2) - { - unsigned int length = 0; -- switch(code){ -+ switch(new_object->code){ - case no_exception: -- length = append(length, "uninitialized exception"); -+ length = new_object->append(length, "uninitialized exception"); - break; -- case unregistered_class: -- length = append(length, "unregistered class"); -+ case archive_exception::unregistered_class: -+ length = new_object->append(length, "unregistered class"); - if(NULL != e1){ -- length = append(length, " - "); -- length = append(length, e1); -+ length = new_object->append(length, " - "); -+ length = new_object->append(length, e1); - } - break; - case invalid_signature: -- length = append(length, "invalid signature"); -+ length = new_object->append(length, "invalid signature"); - break; - case unsupported_version: -- length = append(length, "unsupported version"); -+ length = new_object->append(length, "unsupported version"); - break; - case pointer_conflict: -- length = append(length, "pointer conflict"); -+ length = new_object->append(length, "pointer conflict"); - break; - case incompatible_native_format: -- length = append(length, "incompatible native format"); -+ length = new_object->append(length, "incompatible native format"); - if(NULL != e1){ -- length = append(length, " - "); -- length = append(length, e1); -+ length = new_object->append(length, " - "); -+ length = new_object->append(length, e1); - } - break; - case array_size_too_short: -- length = append(length, "array size too short"); -+ length = new_object->append(length, "array size too short"); - break; - case input_stream_error: -- length = append(length, "input stream error"); -+ length = new_object->append(length, "input stream error"); - break; - case invalid_class_name: -- length = append(length, "class name too long"); -+ length = new_object->append(length, "class name too long"); - break; - case unregistered_cast: -- length = append(length, "unregistered void cast "); -- length = append(length, (NULL != e1) ? e1 : "?"); -- length = append(length, "<-"); -- length = append(length, (NULL != e2) ? e2 : "?"); -+ length = new_object->append(length, "unregistered void cast "); -+ length = new_object->append(length, (NULL != e1) ? e1 : "?"); -+ length = new_object->append(length, "<-"); -+ length = new_object->append(length, (NULL != e2) ? e2 : "?"); - break; - case unsupported_class_version: -- length = append(length, "class version "); -- length = append(length, (NULL != e1) ? e1 : ""); -+ length = new_object->append(length, "class version "); -+ length = new_object->append(length, (NULL != e1) ? e1 : ""); - break; - case other_exception: - // if get here - it indicates a derived exception - // was sliced by passing by value in catch -- length = append(length, "unknown derived exception"); -+ length = new_object->append(length, "unknown derived exception"); - break; - case multiple_code_instantiation: -- length = append(length, "code instantiated in more than one module"); -+ length = new_object->append(length, "code instantiated in more than one module"); - if(NULL != e1){ -- length = append(length, " - "); -- length = append(length, e1); -+ length = new_object->append(length, " - "); -+ length = new_object->append(length, e1); - } - break; - case output_stream_error: -- length = append(length, "output stream error"); -+ length = new_object->append(length, "output stream error"); - break; - default: - BOOST_ASSERT(false); -- length = append(length, "programming error"); -+ length = new_object->append(length, "programming error"); - break; - } - } - - BOOST_ARCHIVE_DECL -+archive_exception::archive_exception( -+ exception_code c, -+ const char * e1, -+ const char * e2 -+) BOOST_NOEXCEPT : -+ code(c) -+{ -+ pgi_bug_workaround_init(this, e1, e2); -+} -+ -+BOOST_ARCHIVE_DECL - archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : - std::exception(oth), - code(oth.code) -diff -uNr boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp ---- boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp 2016-12-22 07:33:19.000000000 -0500 -+++ boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp 2017-05-31 20:58:15.650876427 -0400 -@@ -26,41 +26,48 @@ - namespace archive { - - BOOST_ARCHIVE_DECL -+void -+xml_archive_exception::pgi_bug_workaround_init_xml(xml_archive_exception *new_object, exception_code c, const char *e1, const char *e2) -+{ -+ switch(c){ -+ case xml_archive_parsing_error: -+ new_object->append(0, "unrecognized XML syntax"); -+ break; -+ case xml_archive_tag_mismatch:{ -+ unsigned int l; -+ l = new_object->append(0, "XML start/end tag mismatch"); -+ if(NULL != e1){ -+ l = new_object->append(l, " - "); -+ new_object->append(l, e1); -+ } -+ break; -+ } -+ case xml_archive_tag_name_error: -+ new_object->append(0, "Invalid XML tag name"); -+ break; -+ default: -+ BOOST_ASSERT(false); -+ new_object->append(0, "programming error"); -+ break; -+ } -+} -+ -+BOOST_ARCHIVE_DECL - xml_archive_exception::xml_archive_exception( - exception_code c, - const char * e1, - const char * e2 - ) : - archive_exception(other_exception, e1, e2) -- { -- switch(c){ -- case xml_archive_parsing_error: -- archive_exception::append(0, "unrecognized XML syntax"); -- break; -- case xml_archive_tag_mismatch:{ -- unsigned int l; -- l = archive_exception::append(0, "XML start/end tag mismatch"); -- if(NULL != e1){ -- l = archive_exception::append(l, " - "); -- archive_exception::append(l, e1); -- } -- break; -- } -- case xml_archive_tag_name_error: -- archive_exception::append(0, "Invalid XML tag name"); -- break; -- default: -- BOOST_ASSERT(false); -- archive_exception::append(0, "programming error"); -- break; -- } -- } -+{ -+ pgi_bug_workaround_init_xml(this, c, e1, e2); -+} - - BOOST_ARCHIVE_DECL - xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) : - archive_exception(oth) -- { -- } -+{ -+} - - BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} - diff --git a/var/spack/repos/builtin/packages/boost/boost_1.67.0_pgi.patch b/var/spack/repos/builtin/packages/boost/boost_1.67.0_pgi.patch deleted file mode 100644 index b2c7acaf6bedd2..00000000000000 --- a/var/spack/repos/builtin/packages/boost/boost_1.67.0_pgi.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/libs/filesystem/src/operations.cpp -+++ b/libs/filesystem/src/operations.cpp -@@ -2056,10 +2056,6 @@ - return ok; - } - --#if defined(__PGI) && defined(__USE_FILE_OFFSET64) --#define dirent dirent64 --#endif -- - error_code dir_itr_first(void *& handle, void *& buffer, - const char* dir, string& target, - fs::file_status &, fs::file_status &) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 0dbb60ae9b8fcb..dc7317c6bce6c6 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -330,11 +330,6 @@ def libs(self): # Patch fix from https://svn.boost.org/trac/boost/ticket/10125 patch("call_once_variadic.patch", when="@1.54.0:1.55%gcc@5.0:") - # Patch fix for PGI compiler - patch("boost_1.67.0_pgi.patch", when="@1.67.0:1.68%pgi") - patch("boost_1.63.0_pgi.patch", when="@1.63.0%pgi") - patch("boost_1.63.0_pgi_17.4_workaround.patch", when="@1.63.0%pgi@17.4") - # Patch to override the PGI toolset when using the NVIDIA compilers patch("nvhpc-1.74.patch", when="@1.74.0:1.75%nvhpc") patch("nvhpc-1.76.patch", when="@1.76.0:1.76%nvhpc") @@ -453,7 +448,6 @@ def patch(self): filter_file("BOOST_LOG_USE_AVX2", "", "libs/log/build/Jamfile.v2") filter_file("dump_ssse3", "", "libs/log/build/Jamfile.v2") filter_file("BOOST_LOG_USE_SSSE3", "", "libs/log/build/Jamfile.v2") - filter_file("-fast", "-O1", "tools/build/src/tools/pgi.jam") filter_file("-fast", "-O1", "tools/build/src/engine/build.sh") @@ -484,7 +478,6 @@ def determine_toolset(self, spec): "%arm": "clang", "%xl": "xlcpp", "%xl_r": "xlcpp", - "%pgi": "pgi", "%nvhpc": "pgi", "%fj": "clang", } diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index 7bcb0bfc34244a..f71c2bd0c5fe66 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -84,7 +84,7 @@ def patch(self): filter_file(r"^CC=gcc", "CC={0}".format(spack_cc), "Makefile-libbz2_so") # The Makefiles use GCC flags that are incompatible with PGI - if self.spec.satisfies("%pgi") or self.spec.satisfies("%nvhpc@:20.11"): + if self.spec.satisfies("%nvhpc@:20.11"): filter_file("-Wall -Winline", "-Minform=inform", "Makefile") filter_file("-Wall -Winline", "-Minform=inform", "Makefile-libbz2_so") diff --git a/var/spack/repos/builtin/packages/cbench/package.py b/var/spack/repos/builtin/packages/cbench/package.py index ad598b6bb7a318..1668faa104e38f 100644 --- a/var/spack/repos/builtin/packages/cbench/package.py +++ b/var/spack/repos/builtin/packages/cbench/package.py @@ -47,7 +47,7 @@ def setup_build_environment(self, env): env.set("MPIHOME", self.spec["mpi"].prefix) # Pick the compiler collection/chain you want to compile with. - # Examples include: intel, gcc, pgi. + # Examples include: intel, gcc. env.set("COMPILERCOLLECTION", self.compiler.name) # Linking flags for BLAS/LAPACK and FFTW diff --git a/var/spack/repos/builtin/packages/chapel/package.py b/var/spack/repos/builtin/packages/chapel/package.py index 0538221e35e417..21f19a0c00eb18 100644 --- a/var/spack/repos/builtin/packages/chapel/package.py +++ b/var/spack/repos/builtin/packages/chapel/package.py @@ -96,7 +96,6 @@ class Chapel(AutotoolsPackage, CudaPackage, ROCmPackage): "intel": "intel", "llvm": "llvm", "oneapi": "intel", - "pgi": "pgi", "rocmcc": "clang", "unset": "unset", } @@ -553,7 +552,6 @@ class Chapel(AutotoolsPackage, CudaPackage, ROCmPackage): "%intel", "%llvm", "%oneapi", - "%pgi", "%rocmcc", policy="one_of", ) diff --git a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py index 7982479eccf9a5..4028e319e2b57e 100644 --- a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py @@ -97,9 +97,6 @@ def build_targets(self): targets.append("COMPILER=CRAY") targets.append("OMP_CRAY=-fopenmp") - elif self.spec.satisfies("%pgi"): - targets.append("COMPILER=PGI") - elif self.spec.satisfies("%xl"): targets.append("COMPILER=XLF") diff --git a/var/spack/repos/builtin/packages/cloverleaf/package.py b/var/spack/repos/builtin/packages/cloverleaf/package.py index a561b1039e0a5e..042733a9e04727 100644 --- a/var/spack/repos/builtin/packages/cloverleaf/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf/package.py @@ -96,10 +96,6 @@ def build_targets(self): targets.append("CFLAGS_INTEL=") elif self.spec.satisfies("%aocc"): targets.append("COMPILER=AOCC") - elif self.spec.satisfies("%pgi"): - targets.append("COMPILER=PGI") - targets.append("FLAGS_PGI=") - targets.append("CFLAGS_PGI=") elif self.spec.satisfies("%xl"): targets.append("COMPILER=XLF") targets.append("FLAGS_XLF=") diff --git a/var/spack/repos/builtin/packages/cloverleaf3d/package.py b/var/spack/repos/builtin/packages/cloverleaf3d/package.py index 8e8f8de0fd8eb6..f52e3df2db9618 100644 --- a/var/spack/repos/builtin/packages/cloverleaf3d/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf3d/package.py @@ -67,10 +67,6 @@ def build_targets(self): targets.append("COMPILER=INTEL") targets.append("FLAGS_INTEL=") targets.append("CFLAGS_INTEL=") - elif self.spec.satisfies("%pgi"): - targets.append("COMPILER=PGI") - targets.append("FLAGS_PGI=") - targets.append("CFLAGS_PGI=") elif self.spec.satisfies("%xl"): targets.append("COMPILER=XLF") targets.append("FLAGS_XLF=") diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 9b4b760a33b6aa..a4baa66ca4ccff 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -234,7 +234,7 @@ class Cmake(Package): patch("fujitsu_add_linker_option.patch", when="%fj") # Remove -A from the C++ flags we use when CXX_EXTENSIONS is OFF - # Should be fixed in 3.19. + # Should be fixed in 3.19. This patch is needed also for nvhpc. # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5025 patch("pgi-cxx-ansi.patch", when="@3.15:3.18") diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 71d6bab5a2e024..dc24d525f32ff3 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -434,7 +434,6 @@ def edit(self, pkg, spec, prefix): optimization_flags = { "gcc": ["-O2", "-funroll-loops", "-ftree-vectorize"], "intel": ["-O2", "-pc64", "-unroll"], - "pgi": ["-fast"], "nvhpc": ["-fast"], "cce": ["-O2"], "xl": ["-O3"], @@ -483,7 +482,7 @@ def edit(self, pkg, spec, prefix): ] elif spec.satisfies("%aocc") or spec.satisfies("%rocmcc"): fcflags += ["-ffree-form", "-Mbackslash"] - elif spec.satisfies("%pgi") or spec.satisfies("%nvhpc"): + elif spec.satisfies("%nvhpc"): fcflags += ["-Mfreeform", "-Mextend"] elif spec.satisfies("%cce"): fcflags += ["-emf", "-ffree", "-hflex_mp=strict"] diff --git a/var/spack/repos/builtin/packages/dock/package.py b/var/spack/repos/builtin/packages/dock/package.py index 86f7d5153ad6c0..1188963c989a1b 100644 --- a/var/spack/repos/builtin/packages/dock/package.py +++ b/var/spack/repos/builtin/packages/dock/package.py @@ -33,7 +33,7 @@ def setup_build_environment(self, env): env.set("MPICH_HOME", self.spec["mpi"].prefix) def install(self, spec, prefix): - compiler_targets = {"gcc": "gnu", "intel": "intel", "pgi": "pgi", "sgi": "sgi"} + compiler_targets = {"gcc": "gnu", "intel": "intel", "sgi": "sgi"} if self.compiler.name not in compiler_targets: template = "Unsupported compiler {0}! Supported compilers: {1}" @@ -41,9 +41,6 @@ def install(self, spec, prefix): raise InstallError(err) - if self.compiler.name == "pgi" and "+mpi" in spec: - raise InstallError("Parallel output is not supported with pgi.") - with working_dir("install"): sh_args = ["./configure", compiler_targets[self.compiler.name]] config_source = compiler_targets[self.compiler.name] diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py index 4f357442225e13..a010200e49250f 100644 --- a/var/spack/repos/builtin/packages/elk/package.py +++ b/var/spack/repos/builtin/packages/elk/package.py @@ -125,8 +125,6 @@ def edit(self, spec, prefix): flags = "-O3 -ffast-math -funroll-loops" if spec.satisfies("%gcc@10:"): flags += " -fallow-argument-mismatch " - elif self.compiler.name == "pgi": - flags = "-O3 -lpthread" elif self.compiler.name == "g95": flags = "-O3 -fno-second-underscore" elif self.compiler.name == "nag": diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index c953465b6e76b6..9eb145478a239e 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -276,8 +276,6 @@ def setup_build_environment(self, env): ) elif self.pkg.compiler.name == "nag": env.set("ESMF_COMPILER", "nag") - elif self.pkg.compiler.name == "pgi": - env.set("ESMF_COMPILER", "pgi") elif self.pkg.compiler.name == "nvhpc": env.set("ESMF_COMPILER", "nvhpc") elif self.pkg.compiler.name == "cce": diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 44aace9f3ed3d4..028248fa93dd6e 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -129,12 +129,8 @@ def configure(self, spec, prefix): # float only float_simd_features = ["altivec", "sse", "neon"] - # Workaround PGI compiler bug when avx2 is enabled - if spec.satisfies("%pgi") and "avx2" in simd_features: - simd_features.remove("avx2") - # Workaround NVIDIA/PGI compiler bug when avx512 is enabled - if spec.satisfies("%nvhpc") or spec.satisfies("%pgi"): + if spec.satisfies("%nvhpc"): if "avx512" in simd_features: simd_features.remove("avx512") @@ -254,5 +250,4 @@ class Fftw(FftwBase): ) patch("pfft-3.3.5.patch", when="@3.3.5:3.3.8+pfft_patches", level=0) patch("pfft-3.3.4.patch", when="@3.3.4+pfft_patches", level=0) - patch("pgi-3.3.6-pl2.patch", when="@3.3.6-pl2%pgi", level=0) patch("intel-configure.patch", when="@3:3.3.8%intel", level=0) diff --git a/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch b/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch deleted file mode 100644 index 1822db12311593..00000000000000 --- a/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch +++ /dev/null @@ -1,121 +0,0 @@ ---- configure 2017-01-27 16:08:52.000000000 -0500 -+++ configure 2017-05-08 22:34:32.358821182 -0400 -@@ -21744,117 +21744,7 @@ - - # Various other checks: - if test "x$acx_pthread_ok" = xyes; then -- save_LIBS="$LIBS" -- LIBS="$PTHREAD_LIBS $LIBS" -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -- -- # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 --$as_echo_n "checking for joinable pthread attribute... " >&6; } -- attr_name=unknown -- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --#include --#ifdef F77_DUMMY_MAIN -- --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -- --#endif --int --main () --{ --int attr=$attr; return attr; -- ; -- return 0; --} --_ACEOF --if ac_fn_c_try_link "$LINENO"; then : -- attr_name=$attr; break --fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -- done -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 --$as_echo "$attr_name" >&6; } -- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then -- --cat >>confdefs.h <<_ACEOF --#define PTHREAD_CREATE_JOINABLE $attr_name --_ACEOF -- -- fi -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 --$as_echo_n "checking if more special flags are required for pthreads... " >&6; } -- flag=no -- case "${host_cpu}-${host_os}" in -- *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; -- *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; -- esac -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 --$as_echo "${flag}" >&6; } -- if test "x$flag" != xno; then -- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" -- fi -- -- LIBS="$save_LIBS" -- CFLAGS="$save_CFLAGS" -- -- # More AIX lossage: must compile with xlc_r or cc_r -- if test x"$GCC" != xyes; then -- for ac_prog in xlc_r cc_r --do -- # Extract the first word of "$ac_prog", so it can be a program name with args. --set dummy $ac_prog; ac_word=$2 --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 --$as_echo_n "checking for $ac_word... " >&6; } --if ${ac_cv_prog_PTHREAD_CC+:} false; then : -- $as_echo_n "(cached) " >&6 --else -- if test -n "$PTHREAD_CC"; then -- ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. --else --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -- ac_cv_prog_PTHREAD_CC="$ac_prog" -- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -- break 2 -- fi --done -- done --IFS=$as_save_IFS -- --fi --fi --PTHREAD_CC=$ac_cv_prog_PTHREAD_CC --if test -n "$PTHREAD_CC"; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 --$as_echo "$PTHREAD_CC" >&6; } --else -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 --$as_echo "no" >&6; } --fi -- -- -- test -n "$PTHREAD_CC" && break --done --test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" -- -- else -- PTHREAD_CC=$CC -- fi --else -- PTHREAD_CC="$CC" -+ PTHREAD_CC="$CC" - fi - - diff --git a/var/spack/repos/builtin/packages/fleur/package.py b/var/spack/repos/builtin/packages/fleur/package.py index dc2e6d7727761e..d5294733cc178c 100644 --- a/var/spack/repos/builtin/packages/fleur/package.py +++ b/var/spack/repos/builtin/packages/fleur/package.py @@ -68,11 +68,6 @@ class Fleur(Package): conflicts("%intel@:16.0.4", msg="ifort version <16.0 will most probably not work correctly") conflicts("%gcc@:6.3.0", msg="gfortran is known to work with versions newer than v6.3") - conflicts( - "%pgi@:18.4.0", - msg="You need at least PGI version 18.4 \ - but might still run into some problems.", - ) conflicts("~scalapack", when="+elpa", msg="ELPA requires scalapack support") conflicts("@:5.0", when="fft=fftw", msg="FFTW interface is supported from Fleur v5.0") conflicts("@:5.0", when="+wannier90", msg="wannier90 is supported from Fleur v5.0") diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch deleted file mode 100644 index 50ec242a41ad9b..00000000000000 --- a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-building-c-code-with-pgcc.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ed64417746c570a00b0ba6c2c8091de4845f9ed1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tiziano=20M=C3=BCller?= -Date: Tue, 6 Oct 2020 17:48:12 +0200 -Subject: [PATCH 4/5] fix building c code with pgcc - ---- - bsd/i386.make | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bsd/i386.make b/bsd/i386.make -index 759ed84..9018c1b 100644 ---- a/bsd/i386.make -+++ b/bsd/i386.make -@@ -130,7 +130,7 @@ VECTOR = -Mvect=assoc,recog,noaltcode,cachesize:$(CSIZE)$(VECTOR4) - MACHTY = p7-32 - MACH = -tp $(MACHTY) $(TIME) - OPTOI = -m32 -march=i486 -malign-double --GCCOPTS = -ffast-math -funroll-loops -fexpensive-optimizations -+GCCOPTS = -fast - OPTFLAGO = $(OPTOI) -O3 $(GCCOPTS) - # Flags for portland compiler. - # --- -2.26.2 - diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch deleted file mode 100644 index fe3681e4ad6e01..00000000000000 --- a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-fix-shebangs.patch +++ /dev/null @@ -1,841 +0,0 @@ -From 7f5d1d92b18951e364fe32a247056eea0cf130a0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tiziano=20M=C3=BCller?= -Date: Tue, 6 Oct 2020 17:55:08 +0200 -Subject: [PATCH 5/5] fix shebangs - ---- - bsd/bldg16 | 3 ++- - bsd/cachesize | 2 +- - bsd/checkf | 2 +- - bsd/ckall | 2 +- - bsd/ckwork | 2 +- - bsd/clearipc | 2 +- - bsd/clone-working | 2 +- - bsd/cloneg16 | 2 +- - bsd/co1 | 2 +- - bsd/comp | 2 +- - bsd/comp4 | 2 +- - bsd/compall | 2 +- - bsd/comphalf | 2 +- - bsd/diff-src | 2 +- - bsd/do-util | 3 ++- - bsd/dom | 2 +- - bsd/extract-ghelp | 2 +- - bsd/extract-ghelp-16 | 2 +- - bsd/findnew | 2 +- - bsd/findnew1 | 2 +- - bsd/fixlib | 2 +- - bsd/fixlinda | 2 +- - bsd/g16test | 2 +- - bsd/gau-arflags | 2 +- - bsd/gau-fixexe | 2 +- - bsd/gau-get | 2 +- - bsd/gau-hname | 2 +- - bsd/gau-nname | 2 +- - bsd/gau-ranlib | 2 +- - bsd/gau-unlimit | 2 +- - bsd/get-ref | 2 +- - bsd/getx | 2 +- - bsd/gzt | 2 +- - bsd/install | 2 +- - bsd/l1.make | 2 +- - bsd/l4x | 3 ++- - bsd/l9999.make | 2 +- - bsd/linda-ln | 2 +- - bsd/linda-lnx | 2 +- - bsd/link.make | 2 +- - bsd/lx-working | 2 +- - bsd/lxi-working | 2 +- - bsd/make-edir | 2 +- - bsd/make-ldir | 2 +- - bsd/make-nutill | 3 ++- - bsd/makeutilcd | 2 +- - bsd/mkt | 3 ++- - bsd/mkunixcd | 2 +- - bsd/movemerged | 2 +- - bsd/rdmat-ext | 2 +- - bsd/ren | 2 +- - bsd/rfhello | 3 ++- - bsd/rs6k.make | 3 ++- - bsd/save-working | 2 +- - bsd/set-mflags | 2 +- - bsd/setcdef | 2 +- - bsd/setup-linda | 2 +- - bsd/ssrunx | 3 ++- - bsd/ssruny | 2 +- - bsd/subg16 | 4 ++-- - bsd/sumcpu | 2 +- - bsd/tbzip | 2 +- - bsd/test-times | 2 +- - bsd/testl1 | 2 +- - bsd/testunf | 3 ++- - bsd/tgzip | 2 +- - bsd/tree.make | 2 +- - bsd/txzip | 2 +- - bsd/tzzip | 2 +- - bsd/upd | 2 +- - bsd/upd-util | 3 ++- - bsd/updatelink | 2 +- - bsd/updatelink1 | 2 +- - bsd/x86type | 2 +- - 74 files changed, 85 insertions(+), 75 deletions(-) - -diff --git a/bsd/bldg16 b/bsd/bldg16 -index c3db34a..f7af456 100755 ---- a/bsd/bldg16 -+++ b/bsd/bldg16 -@@ -1,4 +1,5 @@ --#!/bin/csh -xf -+#!/usr/bin/env tcsh -+set echo - # - # Build Gaussian 16 from source as from distribution tape. The default - # directory should be the main g16 directory. -diff --git a/bsd/cachesize b/bsd/cachesize -index 5ec2c79..f03b7e7 100755 ---- a/bsd/cachesize -+++ b/bsd/cachesize -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set x = `gau-machine` - @ minc = "524288" - if ($?GAUSS_CACHESIZE) then -diff --git a/bsd/checkf b/bsd/checkf -index f7a271e..0a672b7 100755 ---- a/bsd/checkf -+++ b/bsd/checkf -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set name = "xxx-ftnchek" - set flags = "-noextern -sixchar -common=2 -novice=no -arguments=3 -array=0 -common=2 -f77=automatic-array,common-subprog-name,quotemark,statement-order,do-enddo,inline-comment,mixed-common -notruncation -truncation=real-do-index -truncation=real-subscript -nopure -nopretty -pretty=embedded-spaces -pretty=long-line -pretty=missing-space -usage=no-do-index-modified,no-arg-alias,no-arg-array-alias,arg-const-modified,ext-multiply-defined,var-set-unused,var-uninitialized,var-unused -nowrap -portability=tab -quiet" - set TD = "/tmp" -diff --git a/bsd/ckall b/bsd/ckall -index 0c058ec..177be53 100755 ---- a/bsd/ckall -+++ b/bsd/ckall -@@ -1,3 +1,3 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - cat $g16root/g16/{l[0-9]*,lapack-generic,blas-generic,mm,formchk,unfchk,chkchk,c8616,copychk,cubegen,cubman,dummy,freqchk,freqmem,newzmat,wrappers,rwfdump,solname,trajgen,*util*,bsd/mdutil,bsd/mdl1}.F >all.all - checkf all.all x >&all.dat -diff --git a/bsd/ckwork b/bsd/ckwork -index 66f99a1..5194544 100755 ---- a/bsd/ckwork -+++ b/bsd/ckwork -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Check for routines already in working which are also new in the - # current directory. -diff --git a/bsd/clearipc b/bsd/clearipc -index a94cc26..71a9dd7 100755 ---- a/bsd/clearipc -+++ b/bsd/clearipc -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - unalias rm - if ("`whoami`" == "root") then - set us="x" -diff --git a/bsd/clone-working b/bsd/clone-working -index 22afef2..6c5f2e5 100755 ---- a/bsd/clone-working -+++ b/bsd/clone-working -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ("$1" == "-s") then - set ww = "/$workbase/1/frisch/working/save-$2" - mkdir save-$2 -diff --git a/bsd/cloneg16 b/bsd/cloneg16 -index ef69d69..56fb567 100755 ---- a/bsd/cloneg16 -+++ b/bsd/cloneg16 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Make a cloned copy of the Gaussian directories, with soft links - # to the source files but local copies of objects. -diff --git a/bsd/co1 b/bsd/co1 -index 12ea322..007a2f5 100755 ---- a/bsd/co1 -+++ b/bsd/co1 -@@ -1,2 +1,2 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - ../bsd/comp -o ${1}*.F >&../make${1}.log -diff --git a/bsd/comp b/bsd/comp -index cb1737c..5a583c3 100755 ---- a/bsd/comp -+++ b/bsd/comp -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - source $g16root/g16/bsd/g16.login - set mfile = "bsd/g16.make" - set mflags = "`set-mflags`" -diff --git a/bsd/comp4 b/bsd/comp4 -index 0ca0806..7e11bf8 100755 ---- a/bsd/comp4 -+++ b/bsd/comp4 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if (-e bsd/g16.make) make -f bsd/g16.make clean - rm -f make*log - bsd/bldg16 $argv >&make.log & -diff --git a/bsd/compall b/bsd/compall -index d53392d..0b68de0 100755 ---- a/bsd/compall -+++ b/bsd/compall -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if (-e bsd/g16.make) make -f bsd/g16.make clean - rm -f make*log - bsd/bldg16 $argv >&make.log & -diff --git a/bsd/comphalf b/bsd/comphalf -index 43bb0ee..b5fd399 100755 ---- a/bsd/comphalf -+++ b/bsd/comphalf -@@ -1,2 +1,2 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - bsd/comp newzmat.F l1.F l101.F l10[2-9].F l1[1-2]?.F l[2-9]*.F l1???.F -diff --git a/bsd/diff-src b/bsd/diff-src -index 8b63e3a..cb08d97 100755 ---- a/bsd/diff-src -+++ b/bsd/diff-src -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - foreach x (*.new) - diff -i -w $x $x:r.F >$x:r.diff - if ($status) then -diff --git a/bsd/do-util b/bsd/do-util -index b43b109..8469289 100755 ---- a/bsd/do-util -+++ b/bsd/do-util -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - mkdir temp - cd temp - gau-fsplit $1/${2}.F -diff --git a/bsd/dom b/bsd/dom -index 4475ad5..92eccc4 100755 ---- a/bsd/dom -+++ b/bsd/dom -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set file = "$1" - shift - set file = "$file:r" -diff --git a/bsd/extract-ghelp b/bsd/extract-ghelp -index a4e5e9e..36e6ba8 100755 ---- a/bsd/extract-ghelp -+++ b/bsd/extract-ghelp -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # This script runs awk to create abstracts of each source file - # containing the information for ghelp. This allows ghelp to -diff --git a/bsd/extract-ghelp-16 b/bsd/extract-ghelp-16 -index 9635d7b..36e6ba8 100755 ---- a/bsd/extract-ghelp-16 -+++ b/bsd/extract-ghelp-16 -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - # - # This script runs awk to create abstracts of each source file - # containing the information for ghelp. This allows ghelp to -diff --git a/bsd/findnew b/bsd/findnew -index bc1d527..2ab83c4 100755 ---- a/bsd/findnew -+++ b/bsd/findnew -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ("$1" == "") then - set ext = "diffn" - @ docopy = 0 -diff --git a/bsd/findnew1 b/bsd/findnew1 -index 9d42145..70ae61f 100755 ---- a/bsd/findnew1 -+++ b/bsd/findnew1 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ("$1" == "") then - set ext = "diff" - else -diff --git a/bsd/fixlib b/bsd/fixlib -index ae7118d..0cd9ad1 100755 ---- a/bsd/fixlib -+++ b/bsd/fixlib -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Fix up a library using lorder. This routine just does a ranlib except - # on the trace because some of the libraries have too many object files -diff --git a/bsd/fixlinda b/bsd/fixlinda -index 233fff1..0a395db 100755 ---- a/bsd/fixlinda -+++ b/bsd/fixlinda -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set x = `pwd` - set y = `basename $x` - if ("$y" != "g16") then -diff --git a/bsd/g16test b/bsd/g16test -index 3967e8e..a7c0808 100755 ---- a/bsd/g16test -+++ b/bsd/g16test -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Script to run G16 from a working directory with - # other executables from the standard places. -diff --git a/bsd/gau-arflags b/bsd/gau-arflags -index 7aba8a4..d268bc0 100755 ---- a/bsd/gau-arflags -+++ b/bsd/gau-arflags -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set x = `gau-machine` - set machflags = "" - set modeflags = "" -diff --git a/bsd/gau-fixexe b/bsd/gau-fixexe -index 2266453..892eec6 100755 ---- a/bsd/gau-fixexe -+++ b/bsd/gau-fixexe -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set gm = "$g16root/g16/bsd/gau-hname" - if (-e $gm) then - set hname = `gau-hname` -diff --git a/bsd/gau-get b/bsd/gau-get -index 29e9e96..4da00b0 100755 ---- a/bsd/gau-get -+++ b/bsd/gau-get -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - @ n = $#argv - 1 - set str = "" - foreach x ($argv[1-$n]) -diff --git a/bsd/gau-hname b/bsd/gau-hname -index c56cc6f..00a422e 100755 ---- a/bsd/gau-hname -+++ b/bsd/gau-hname -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set xname = "$g16root/g16" - if ((-e $xname/ia32p4.flag) || (-e $xname/ia32p3.flag) ) then - set hname = "i386" -diff --git a/bsd/gau-nname b/bsd/gau-nname -index 391f44f..ad7daa7 100755 ---- a/bsd/gau-nname -+++ b/bsd/gau-nname -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ("$1" == "-") then - set nn = "" - else -diff --git a/bsd/gau-ranlib b/bsd/gau-ranlib -index 79c4eda..5ff56cb 100755 ---- a/bsd/gau-ranlib -+++ b/bsd/gau-ranlib -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Do a ranlib if necessary on this machine. - # -diff --git a/bsd/gau-unlimit b/bsd/gau-unlimit -index 3e7b971..df3c044 100755 ---- a/bsd/gau-unlimit -+++ b/bsd/gau-unlimit -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Do unlimits if this machine allows them. - # -diff --git a/bsd/get-ref b/bsd/get-ref -index 023696c..b6a773f 100755 ---- a/bsd/get-ref -+++ b/bsd/get-ref -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ($#argv < 1) then - set flist = "mdutil cphfutil putil osutil utilam utilnz" - else -diff --git a/bsd/getx b/bsd/getx -index 4a5d8f8..23691eb 100755 ---- a/bsd/getx -+++ b/bsd/getx -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ($#argv < 2) then - echo "usage: getx link" - exit -diff --git a/bsd/gzt b/bsd/gzt -index ffa5fa0..95ad348 100755 ---- a/bsd/gzt -+++ b/bsd/gzt -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - # - # Compress a range of test output files. - # -diff --git a/bsd/install b/bsd/install -index 7b0e589..f5f29af 100755 ---- a/bsd/install -+++ b/bsd/install -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Fix file protections in the g16 directories. - # -diff --git a/bsd/l1.make b/bsd/l1.make -index f041912..585ac3a 100644 ---- a/bsd/l1.make -+++ b/bsd/l1.make -@@ -1,4 +1,4 @@ --SHELL=/bin/csh -+SHELL=/usr/bin/env tcsh - GAU_DIR = $(g16root)/g16 - GAU_DIRL = $(GAU_DIR) - GAU_DIRA = $(GAU_DIR) -diff --git a/bsd/l4x b/bsd/l4x -index a7de578..e58226f 100755 ---- a/bsd/l4x -+++ b/bsd/l4x -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - setenv GAUSS_LFLAGS '-n 3 -mp 2 -nodelist "brahms bruckner"' - setenv GAUSS_EXEDIR $g98root/g98/linda-exe:$g98root/g98 - setenv LD_LIBRARY_PATH $g98root/g98 -diff --git a/bsd/l9999.make b/bsd/l9999.make -index 643b580..6b317ee 100644 ---- a/bsd/l9999.make -+++ b/bsd/l9999.make -@@ -1,4 +1,4 @@ --SHELL=/bin/csh -+SHELL=/usr/bin/env tcsh - GAU_DIR = $(g16root)/g16 - GAU_DIRL = $(GAU_DIR) - GAU_DIRA = $(GAU_DIR) -diff --git a/bsd/linda-ln b/bsd/linda-ln -index d6f26a2..eb514e6 100755 ---- a/bsd/linda-ln -+++ b/bsd/linda-ln -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Make soft links to the dummy linda link and to each each real one. - # -diff --git a/bsd/linda-lnx b/bsd/linda-lnx -index 15ab0d0..65824be 100755 ---- a/bsd/linda-lnx -+++ b/bsd/linda-lnx -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Make soft links to the dummy linda link and to each each real one. - # -diff --git a/bsd/link.make b/bsd/link.make -index 540903d..dfbeb4b 100644 ---- a/bsd/link.make -+++ b/bsd/link.make -@@ -1,4 +1,4 @@ --SHELL=/bin/csh -+SHELL=/usr/bin/env tcsh - GAU_DIR = $(g16root)/g16 - GAU_DIRL = $(GAU_DIR) - GAU_DIRA = $(GAU_DIR) -diff --git a/bsd/lx-working b/bsd/lx-working -index 5b9315d..e07e01d 100755 ---- a/bsd/lx-working -+++ b/bsd/lx-working -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - foreach x ($argv) - ln -s /$workbase/1/frisch/working/$x:r.{com,log} . - end -diff --git a/bsd/lxi-working b/bsd/lxi-working -index 7b08887..1adce2f 100755 ---- a/bsd/lxi-working -+++ b/bsd/lxi-working -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - set m = "`gau-machine`" - if ($m == "sgi") then - set ext = ".sgi" -diff --git a/bsd/make-edir b/bsd/make-edir -index 7fb8a35..01afb73 100755 ---- a/bsd/make-edir -+++ b/bsd/make-edir -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # usage: make-edir - # -diff --git a/bsd/make-ldir b/bsd/make-ldir -index 944b35e..59acb95 100755 ---- a/bsd/make-ldir -+++ b/bsd/make-ldir -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # usage: make-ldir links - # -diff --git a/bsd/make-nutill b/bsd/make-nutill -index 016cb34..c5b8ac3 100755 ---- a/bsd/make-nutill -+++ b/bsd/make-nutill -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - rm -fr nutill - mkdir nutill - cd nutil -diff --git a/bsd/makeutilcd b/bsd/makeutilcd -index 6ea4228..9fa264c 100755 ---- a/bsd/makeutilcd -+++ b/bsd/makeutilcd -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - # - # Should be in cds directory, then - # -diff --git a/bsd/mkt b/bsd/mkt -index 976efa2..bf7eeb2 100755 ---- a/bsd/mkt -+++ b/bsd/mkt -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - if (! (-d $1)) then - echo "no directory $1" - exit -diff --git a/bsd/mkunixcd b/bsd/mkunixcd -index 6503593..15995ce 100755 ---- a/bsd/mkunixcd -+++ b/bsd/mkunixcd -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - if ($#argv <2) then - echo "usage: mkisofs target-file source-directories" - exit -diff --git a/bsd/movemerged b/bsd/movemerged -index 45fa619..538b4ed 100755 ---- a/bsd/movemerged -+++ b/bsd/movemerged -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if ($#argv < 2) then - set dir = "../nutil" - else -diff --git a/bsd/rdmat-ext b/bsd/rdmat-ext -index 59e62d0..713046b 100755 ---- a/bsd/rdmat-ext -+++ b/bsd/rdmat-ext -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - @ savefiles = 0 - @ dumpfiles = 1 - @ narg = 0 -diff --git a/bsd/ren b/bsd/ren -index 60171eb..2862edb 100755 ---- a/bsd/ren -+++ b/bsd/ren -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Rename a list of files to a new extension. - # -diff --git a/bsd/rfhello b/bsd/rfhello -index fb31adf..9ce5b94 100755 ---- a/bsd/rfhello -+++ b/bsd/rfhello -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - set host = `hostname` - if ("$1" == "") then - @ n = 8 -diff --git a/bsd/rs6k.make b/bsd/rs6k.make -index 09f3e0c..259812b 100644 ---- a/bsd/rs6k.make -+++ b/bsd/rs6k.make -@@ -1,4 +1,5 @@ --#SHELL=/bin/csh -xf -+#SHELL=/usr/bin/env tcsh -+set echo - # - # Makefile for Gaussian 16. - # -diff --git a/bsd/save-working b/bsd/save-working -index c0e67d0..db78b18 100755 ---- a/bsd/save-working -+++ b/bsd/save-working -@@ -1,4 +1,4 @@ --#!/bin/csh -x -+#!/usr/bin/env tcsh -x - if (-e save.num) then - @ n = `cat save.num` + 1 - else -diff --git a/bsd/set-mflags b/bsd/set-mflags -index ea3523a..6505c17 100755 ---- a/bsd/set-mflags -+++ b/bsd/set-mflags -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # echo the appropriate flags for make (no arguments) or the make command (1 argument). - # -diff --git a/bsd/setcdef b/bsd/setcdef -index b9142e4..c985e0b 100755 ---- a/bsd/setcdef -+++ b/bsd/setcdef -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # return a string for the GAUSS_CDEF environment variable - # -diff --git a/bsd/setup-linda b/bsd/setup-linda -index de9e996..c8ef8fd 100755 ---- a/bsd/setup-linda -+++ b/bsd/setup-linda -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - cd linda7.1 - common/bin/install_pkg - cd .. -diff --git a/bsd/ssrunx b/bsd/ssrunx -index 34a80ff..b211151 100755 ---- a/bsd/ssrunx -+++ b/bsd/ssrunx -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - set x = "`gau-machine`" - set n = "`basename $0`" - set d = "$n:r" -diff --git a/bsd/ssruny b/bsd/ssruny -index e96f64f..e82c4c0 100755 ---- a/bsd/ssruny -+++ b/bsd/ssruny -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set x = "`gau-machine`" - set n = "`basename $0`" - set d = "$n:r" -diff --git a/bsd/subg16 b/bsd/subg16 -index fd2fab6..66dbc1b 100755 ---- a/bsd/subg16 -+++ b/bsd/subg16 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Submit a Gaussian 16 job to an nqs batch queue. - # -@@ -12,7 +12,7 @@ - # Generate script, explicitly requesting the csh. - # - cat <$2.job --#!/bin/csh -+#!/usr/bin/env tcsh - cd \$QSUB_WORKDIR - source $g16root/g16/bsd/gau-unlimit - g16 <$2.com >&$2.log -diff --git a/bsd/sumcpu b/bsd/sumcpu -index 4d8c823..93e015d 100755 ---- a/bsd/sumcpu -+++ b/bsd/sumcpu -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # sum cpu usage - # -diff --git a/bsd/tbzip b/bsd/tbzip -index 78e5bce..8b28598 100755 ---- a/bsd/tbzip -+++ b/bsd/tbzip -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - foreach x ($argv) - bzip2 -9 -v $x:r.tar - mv $x:r.tar.bz2 $x:r.tbz -diff --git a/bsd/test-times b/bsd/test-times -index be04ce1..6c44242 100755 ---- a/bsd/test-times -+++ b/bsd/test-times -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set h = `grep days $argv | count 7` - set m = `grep days $argv | count 9` - set s = `grep days $argv | count 11` -diff --git a/bsd/testl1 b/bsd/testl1 -index 3901f2f..4ac7a37 100755 ---- a/bsd/testl1 -+++ b/bsd/testl1 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Test a new version of link 1. The new version is assumed to be - # l1/testrt. If arguments are provided, they are used as the route; -diff --git a/bsd/testunf b/bsd/testunf -index c3ae429..142c0ca 100755 ---- a/bsd/testunf -+++ b/bsd/testunf -@@ -1,3 +1,4 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - echo "argv is $argv" - cp $1 $7 -diff --git a/bsd/tgzip b/bsd/tgzip -index 90b27c1..e7051d8 100755 ---- a/bsd/tgzip -+++ b/bsd/tgzip -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - foreach x ($argv) - gzip -9 -v $x:r.tar - mv $x:r.tar.gz $x:r.tgz -diff --git a/bsd/tree.make b/bsd/tree.make -index e22451b..91e76ce 100644 ---- a/bsd/tree.make -+++ b/bsd/tree.make -@@ -5,7 +5,7 @@ - GAU_DIR = $(g16root)/g16 - GAU_DIRL = $(GAU_DIR) - --SHELL = /bin/csh -+SHELL = /usr/bin/env tcsh - UTIL_NAME = util.a - GAU_DIRA = $(GAU_DIR) - -diff --git a/bsd/txzip b/bsd/txzip -index 23a6a1b..a9248ff 100755 ---- a/bsd/txzip -+++ b/bsd/txzip -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - if (("$1" == "j") || ("$1" == "J")) then - set ext = "tbJ" - shift -diff --git a/bsd/tzzip b/bsd/tzzip -index a86a4b8..9a2f462 100755 ---- a/bsd/tzzip -+++ b/bsd/tzzip -@@ -1,4 +1,4 @@ --#!/bin/csh -+#!/usr/bin/env tcsh - foreach x ($argv) - xz -9 -v $x:r.tar - mv $x:r.tar.bz2 $x:r.tbz -diff --git a/bsd/upd b/bsd/upd -index d6017b3..00ca77f 100755 ---- a/bsd/upd -+++ b/bsd/upd -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Update a link for which the specified routines have been changed. - # -diff --git a/bsd/upd-util b/bsd/upd-util -index 7d007ea..c16b082 100755 ---- a/bsd/upd-util -+++ b/bsd/upd-util -@@ -1,4 +1,5 @@ --#!/bin/csh -fx -+#!/usr/bin/env tcsh -+set echo - mkdir temp - cd temp - foreach x ($argv) -diff --git a/bsd/updatelink b/bsd/updatelink -index 7cc99ee..6399d53 100755 ---- a/bsd/updatelink -+++ b/bsd/updatelink -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Update a link library with the specified source files. - # -diff --git a/bsd/updatelink1 b/bsd/updatelink1 -index 906e3aa..962dd59 100755 ---- a/bsd/updatelink1 -+++ b/bsd/updatelink1 -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - # - # Update a link library with the specified source files. - # -diff --git a/bsd/x86type b/bsd/x86type -index 9ead8f3..7ef1ebe 100755 ---- a/bsd/x86type -+++ b/bsd/x86type -@@ -1,4 +1,4 @@ --#!/bin/csh -f -+#!/usr/bin/env tcsh - set type = "amd" - set list = "sse4" - if (-e /proc/cpuinfo) then --- -2.26.2 - diff --git a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch b/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch deleted file mode 100644 index 49e40693d7ab36..00000000000000 --- a/var/spack/repos/builtin/packages/gaussian-src/16-C.01-replace-deprecated-pgf77-with-pgfortran.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 6774eb8f9743977d7b3f52ea877c2c0ed6bc45f5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tiziano=20M=C3=BCller?= -Date: Tue, 6 Oct 2020 17:47:26 +0200 -Subject: [PATCH 3/5] replace deprecated pgf77 with pgfortran - ---- - bsd/i386.make | 2 +- - bsd/l1.make | 2 +- - bsd/l9999.make | 2 +- - bsd/link.make | 2 +- - bsd/setup-make | 18 +++++++++--------- - bsd/tree.make | 4 ++-- - 6 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/bsd/i386.make b/bsd/i386.make -index c9cf696..759ed84 100644 ---- a/bsd/i386.make -+++ b/bsd/i386.make -@@ -138,7 +138,7 @@ I8FLAG = - R8FLAG = - MMODEL = - PGISTATIC = -Bstatic_pgi --PGNAME = pgf77 -+PGNAME = pgfortran - GPUFLAG = $(GPUFLAG1) $(GPUFLAG2) $(GPUFLAG3) - RUNF77 = $(PGNAME) $(PGISTATIC) $(I8FLAG) $(R8FLAG) $(MMODEL) $(DEBUGF) $(SPECFLAG) $(GPUFLAG) - F2CLIB = -diff --git a/bsd/l1.make b/bsd/l1.make -index fe9897f..f041912 100644 ---- a/bsd/l1.make -+++ b/bsd/l1.make -@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch - ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \ - -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \ - -reentrancy threaded --LIN_FC = pgf77 -mp -Mnostdlib -+LIN_FC = pgfortran -mp -Mnostdlib - PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a - LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS) - CRY_FC = f90 -diff --git a/bsd/l9999.make b/bsd/l9999.make -index 2c59b37..643b580 100644 ---- a/bsd/l9999.make -+++ b/bsd/l9999.make -@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch - ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \ - -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \ - -reentrancy threaded --LIN_FC = pgf77 -mp -Mnostdlib -+LIN_FC = pgfortran -mp -Mnostdlib - PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a - LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS) - CRY_FC = f90 -diff --git a/bsd/link.make b/bsd/link.make -index 40cbd06..540903d 100644 ---- a/bsd/link.make -+++ b/bsd/link.make -@@ -16,7 +16,7 @@ SUN_FC = f95 -fast -xtypemap=real:64,double:64,integer:64 -xtarget=native -xarch - ALP_FC = f90 -O5 -transform_loops -omp -automatic -i8 -r8 -align dcommons \ - -tune host -trapuv -assume noaccuracy_sensitive -math_library fast \ - -reentrancy threaded --LIN_FC = pgf77 -mp -Mnostdlib -+LIN_FC = pgfortran -mp -Mnostdlib - PGILIBS = $(PGI)/linux86/lib/libpgthread.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgftnrtl.a $(PGI)/linux86/lib/libpgc.a $(PGI)/linux86/lib/libpgmp.a $(PGI)/linux86/lib/libpgc.a - LIN_FC2 = /usr/local/lib/libf77blas.a /usr/local/lib/libatlas.a $(PGILIBS) - CRY_FC = f90 -diff --git a/bsd/setup-make b/bsd/setup-make -index 7759da2..1a497dd 100644 ---- a/bsd/setup-make -+++ b/bsd/setup-make -@@ -34,7 +34,7 @@ else if (-e $xname/kepler.flag) then - set acclib = "-Mcudalib=cublas" - set acclib1 = "" - else -- set pgname = "pgf77" -+ set pgname = "pgfortran" - set accopt = "" - set accflag = "" - set acclib = "" -@@ -88,16 +88,16 @@ else if (("$mach" == "i386") || ("$mach" == "amd64") || ("$mach" == "em64t") || - set xutilname = "util" - if (-e $xname/ia32p3.flag) then - set xutilname = "$xutilname,bsd/libf77blas-ia32,bsd/libatlas-ia32" -- set fcname = "FCN='pgf77 -Bstatic_pgi'" -+ set fcname = "FCN='pgfortran -Bstatic_pgi'" - set blas = "BLAS='' MACHTY=p6" - set fcflag = "FC='-mp=nonuma -tp p6'" -- set lfort = "pgf77 -Bstatic_pgi -tp p6 -mp=nonuma" -+ set lfort = "pgfortran -Bstatic_pgi -tp p6 -mp=nonuma" - else if ("$mach" == "i386") then - set xutilname = "$xutilname,bsd/libf77blas-ia32,bsd/libatlas-ia32" -- set fcname = "FCN='pgf77 -Bstatic_pgi'" -+ set fcname = "FCN='pgfortran -Bstatic_pgi'" - set blas = "BLAS='' " - set fcflag = "FC='-mp=nonuma -fastsse -tp p7-32'" -- set lfort = "pgf77 -Bstatic_pgi -fastsse -tp p7-32 -mp=nonuma" -+ set lfort = "pgfortran -Bstatic_pgi -fastsse -tp p7-32 -mp=nonuma" - else if ("$mach" == "amd64") then - set fcname = "FCN='" - set fcname = "$fcname$pgname -Bstatic_pgi'" -@@ -142,16 +142,16 @@ else if (("$mach" == "i386") || ("$mach" == "amd64") || ("$mach" == "em64t") || - endif - else if ("$mach" == "i386-mac64") then - set xutilname = "$xutilname,bsd/libf77blas-imac64,bsd/libatlas-imac64" -- set fcname = "FCN='pgf77'" -+ set fcname = "FCN='pgfortran'" - set fcflag = "FC='-Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8'" - set blas = "BLAS='' MACHTY=p7-64 GAULIBU=util.a PGISTATIC= LINK1='-Wl,-u' LINK2='-Wl,_drum_' EXTCFLAGS=-D_FORTIFY_SOURCE=0 I8FLAG=-i8 R8FLAG=-r8 OPTOI=-m64 I8CPP1=-DI64 I8CPP2=-DP64 I8CPP3=-DPACK64 I8CPP4=-DUSE_I2 NJSEC=-DDEFJSEC=512" -- set lfort = "pgf77 -Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8" -+ set lfort = "pgfortran -Wl,-u -Wl,_drum_ -mp -tp p7-64 -i8 -r8" - else if ("$mach" == "i386-mac32") then - set xutilname = "$xutilname,bsd/libf77blas-imac32,bsd/libatlas-imac32" -- set fcname = "FCN='pgf77'" -+ set fcname = "FCN='pgfortran'" - set fcflag = "FC='-Wl,-u -Wl,_drum_ -mp -tp p7-32'" - set blas = "BLAS='' MACHTY=p7-32 GAULIBU=util.a PGISTATIC= LINK1='-Wl,-u' LINK2='-Wl,_drum_' EXTCFLAGS=-D_FORTIFY_SOURCE=0 I8FLAG= R8FLAG=-r8 OPTOI=-m32" -- set lfort = "pgf77 -Wl,-u -Wl,_drum_ -mp -tp p7-32" -+ set lfort = "pgfortran -Wl,-u -Wl,_drum_ -mp -tp p7-32" - setenv LINDA_CC 'cc -m32' - else - echo "logic failure in setup-make" -diff --git a/bsd/tree.make b/bsd/tree.make -index e504f38..e22451b 100644 ---- a/bsd/tree.make -+++ b/bsd/tree.make -@@ -17,7 +17,7 @@ SGI_FC = f77 -w -i8 -r8 -r8const -mips4 -64 -mp -r10000 -align64 -trapuv - SGI_FC2 = -lcomplib.sgimath_mp -lfastm - SUN_FC = fc - ALP_FC = f90 -omp -automatic -O -i8 -r8 -align dcommons -threads --LIN_FC = pgf77 -mp -+LIN_FC = pgfortran -mp - LIN_FC2 = -llapack /usr/local/lib/blas-opt.a /usr/local/lib/blas-f2c.a - CRY_FC = f90 - CRY_FC2 = -Wl"-M /dev/null -D DUPENTRY=NOTE -D FORCE=OFF -f indef" -@@ -31,7 +31,7 @@ NUTIL = ../nutil/*.o ../nutil/*.qo - NUTILL = ../nutill/*.lo ../nutill/*.o ../nutill/*.qo - NUTILX = nutil/*.o nutil/*.qo - else --PGNAME = pgf77 -+PGNAME = pgfortran - NUTIL = ../nutil/*.o - NUTILL = ../nutill/*.lo ../nutill/*.o - NUTILX = nutil/*.o --- -2.26.2 - diff --git a/var/spack/repos/builtin/packages/gaussian-src/package.py b/var/spack/repos/builtin/packages/gaussian-src/package.py deleted file mode 100644 index 8f34198a81ebb9..00000000000000 --- a/var/spack/repos/builtin/packages/gaussian-src/package.py +++ /dev/null @@ -1,160 +0,0 @@ -# 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 glob -import os - -import llnl.util.tty as tty - -from spack.package import * - - -class GaussianSrc(Package): - """Gaussian is a computer program for computational chemistry. - - This Spack package builds Gaussian from source. - - Needs post-install steps to make it run! - See package installation log for details.""" - - homepage = "http://www.gaussian.com/" - manual_download = True - - maintainers("dev-zero") - - version("16-C.01", sha256="c9eb73a9df5ca8705fcf2d7ce2d5f9aceb05ae663689f54c0a581c9d4d44fffb") - - depends_on("tcsh", type="build") - - # All compilers except for pgi are in conflict: - requires("%pgi", msg="Gaussian can only be built with the PGI compiler") - - patch("16-C.01-replace-deprecated-pgf77-with-pgfortran.patch", when="@16-C.01") - patch("16-C.01-fix-building-c-code-with-pgcc.patch", when="@16-C.01") - patch("16-C.01-fix-shebangs.patch", when="@16-C.01") - - @property - def g_name(self): - return "g{0}".format(self.version.up_to(1)) - - @property - def g_root(self): - return self.prefix.join(self.g_name) - - def url_for_version(self, version): - return "file://{0}/g{1}.tgz".format(os.getcwd(), version) - - def install(self, spec, prefix): - # Spacks strips the single dir inside the tarball, but Gaussian - # needs it -> move them back - files = os.listdir() - mkdirp(self.g_name) - for f in files: - os.rename(f, join_path(self.g_name, f)) - - opts = ["all"] - # if spec.satisfies('+cuda'): - # opts += [spec.variants['cuda_family'].value] - - with working_dir(self.g_name): - # can only build with tcsh - tcsh = which("tcsh") - tcsh( - "-c", - "source ${0}root/{0}/bsd/{0}.login ;" - "./bsd/bld{0} {1}".format(self.g_name, " ".join(opts)), - ) - - install_tree("./bsd", self.g_root.bsd) - install_tree("./basis", self.g_root.basis) - install_tree("./doc", self.g_root.doc) - - for exe in glob.glob("*.exe"): - install(exe, self.g_root) - - exes = [ - self.g_name, - "gauopt", - "gauoptl", - "ghelp", - "newzmat", - "testrt", - "cubegen", - "cubman", - "c8616", - "ham506", - "rwfdump", - "freqchk", - "freqmem", - "formchk", - "demofc", - "chkchk", - "solname", - "gautraj", - "copychk", - "pluck", - "rdmat", - "wrmat", - "unfchk", - "gdrgen", - "trajgen", - "mm", - "grate", - ] - for exe in exes: - install(exe, self.g_root) - - @run_after("install") - def caveats(self): - perm_script = "spack_perms_fix.sh" - perm_script_path = join_path(self.spec.prefix, perm_script) - with open(perm_script_path, "w") as f: - env = spack.tengine.make_environment(dirs=self.package_dir) - t = env.get_template(perm_script + ".j2") - f.write(t.render({"prefix": self.g_root})) - chmod = which("chmod") - chmod("0555", perm_script_path) - - tty.warn( - """ -For a working Gaussian installation, all executable files can only be accessible by -the owner and the group but not the world. - -We've installed a script that will make the necessary changes; -read through it and then execute it: - - {0} - -If you have to give others access, please customize the group membership of the package -files as documented here: - - https://spack.readthedocs.io/en/latest/packages_yaml.html#package-permissions""".format( - perm_script_path - ) - ) - - def setup_build_environment(self, env): - env.set("{0}root".format(self.g_name), self.stage.source_path) - - def setup_run_environment(self, env): - # defaults taken from G16's g16.profile - env.set("GAUSS_LFLAGS2", "--LindaOptions -s 10000000") - env.set("_DSM_BARRIER", "SHM") - env.set("PGI_TERM", "trace,abort") - - env.set("{0}root".format(self.g_name), self.prefix) - - env.prepend_path("GAUSS_EXEDIR", self.g_root) - env.prepend_path("GAUSS_EXEDIR", self.g_root.bsd) - - env.prepend_path("PATH", self.g_root) - env.prepend_path("PATH", self.g_root.bsd) - - env.set("GAUSS_LEXEDIR", self.g_root.join("linda-exe")) - env.set("GAUSS_ARCHDIR", self.g_root.arch) - env.set("GAUSS_BSDDIR", self.g_root.bsd) - env.set("G{0}BASIS".format(self.version.up_to(1)), self.g_root.basis) - - env.prepend_path("LD_LIBRARY_PATH", self.g_root) - env.prepend_path("LD_LIBRARY_PATH", self.g_root.bsd) diff --git a/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 b/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 deleted file mode 100644 index 889ab7fbc2d43e..00000000000000 --- a/var/spack/repos/builtin/packages/gaussian-src/spack_perms_fix.sh.j2 +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -eu - -chmod o-rwx "{{ prefix }}"/* diff --git a/var/spack/repos/builtin/packages/gaussian-view/package.py b/var/spack/repos/builtin/packages/gaussian-view/package.py index 985de8e0498c9b..eec0877b577e93 100644 --- a/var/spack/repos/builtin/packages/gaussian-view/package.py +++ b/var/spack/repos/builtin/packages/gaussian-view/package.py @@ -38,18 +38,7 @@ class GaussianView(Package): extension="tbz", ) - variant( - "gaussian-src", - default=False, - description="Use gaussian-src instead of gaussian (prebuilt binary)", - ) - depends_on("gaussian@16-B.01", type="run", when="@:6.0") - # TODO: add the checksum for gaussian@16-C.01 before uncommenting - # depends_on('gaussian@16-C.01', type='run', when='~gaussian-src@6.1:') - depends_on("gaussian-src@16-C.01", type="run", when="+gaussian-src@6.1:") - - conflicts("+gaussian-src", when="@:6.0") depends_on("libx11", type=("run", "link")) depends_on("libxext", type=("run", "link")) diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index b4d436f4ce7db0..0a22bb9997d87a 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -120,9 +120,9 @@ def flag_handler(self, name, flags): if name == "cxxflags": flags.append(self.compiler.cxx11_flag) if name == "cflags": - if "%pgi" not in self.spec and self.spec.satisfies("%gcc@:5.1"): + if self.spec.satisfies("%gcc@:5.1"): flags.append("-std=gnu99") - return (None, None, flags) + return None, None, flags def setup_run_environment(self, env): env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index 6cab9031dd779d..922af5e8998d27 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -26,15 +26,6 @@ class Libpciaccess(AutotoolsPackage, XorgPackage): patch("nvhpc.patch", when="%nvhpc") - # A known issue exists when building with PGI as documented here: - # https://bugs.freedesktop.org/show_bug.cgi?id=94398 - # https://www.pgroup.com/userforum/viewtopic.php?f=4&t=5126 - # https://gitlab.freedesktop.org/xorg/lib/libpciaccess/issues/7 - # - # When the ability to use dependencies built by another compiler, using a - # libpciaccess built by gcc should be usable by PGI builds. - conflicts("%pgi") - conflicts("platform=darwin") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py index 099dcf0ec55580..efaa0da76fb34d 100644 --- a/var/spack/repos/builtin/packages/libquo/package.py +++ b/var/spack/repos/builtin/packages/libquo/package.py @@ -43,11 +43,4 @@ def autoreconf(self, spec, prefix): bash("./autogen") def configure_args(self): - config_args = [ - "CC={0}".format(self.spec["mpi"].mpicc), - "FC={0}".format(self.spec["mpi"].mpifc), - ] - if self.spec.satisfies("%pgi"): - config_args.append("CFLAGS={0}".format(self.compiler.cc_pic_flag)) - config_args.append("FCFLAGS={0}".format(self.compiler.fc_pic_flag)) - return config_args + return [f"CC={self.spec['mpi'].mpicc}", f"FC={self.spec['mpi'].mpifc}"] diff --git a/var/spack/repos/builtin/packages/maverick/package.py b/var/spack/repos/builtin/packages/maverick/package.py index bce42ca490cd22..7936a61bd32493 100644 --- a/var/spack/repos/builtin/packages/maverick/package.py +++ b/var/spack/repos/builtin/packages/maverick/package.py @@ -24,7 +24,6 @@ class Maverick(MakefilePackage): conflicts("%clang") conflicts("%intel") conflicts("%nag") - conflicts("%pgi") conflicts("%xl") conflicts("%xl_r") diff --git a/var/spack/repos/builtin/packages/minighost/package.py b/var/spack/repos/builtin/packages/minighost/package.py index d894a8a554b751..5702a681ac1326 100644 --- a/var/spack/repos/builtin/packages/minighost/package.py +++ b/var/spack/repos/builtin/packages/minighost/package.py @@ -51,8 +51,6 @@ def build_targets(self): targets.append("COMPILER_SUITE=cray") elif "%intel" in self.spec: targets.append("COMPILER_SUITE=intel") - elif "%pgi" in self.spec: - targets.append("COMPILER_SUITE=pgi") return targets diff --git a/var/spack/repos/builtin/packages/mpas-model/package.py b/var/spack/repos/builtin/packages/mpas-model/package.py index 7b738f2d76b3e6..927026ddf9fe45 100644 --- a/var/spack/repos/builtin/packages/mpas-model/package.py +++ b/var/spack/repos/builtin/packages/mpas-model/package.py @@ -35,9 +35,6 @@ class MpasModel(MakefilePackage): "xlf", "ftn", "titan-cray", - "pgi", - "pgi-nersc", - "pgi-llnl", "ifort", "ifort-scorep", "ifort-gcc", diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index d6a4434852410c..0b33b6fa0e69e3 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -174,7 +174,6 @@ def write_makefile_inc(self): # Determine which compiler suite we are using using_gcc = self.compiler.name == "gcc" - using_pgi = self.compiler.name == "pgi" using_nvhpc = self.compiler.name == "nvhpc" using_intel = self.compiler.name == "intel" using_oneapi = self.compiler.name == "oneapi" @@ -287,7 +286,7 @@ def write_makefile_inc(self): # TODO: change the value to the correct one according to the # compiler possible values are -DAdd_, -DAdd__ and/or -DUPPER - if using_intel or using_oneapi or using_pgi or using_nvhpc or using_fj: + if using_intel or using_oneapi or using_nvhpc or using_fj: # Intel, PGI, and Fujitsu Fortran compiler provides # the main() function so C examples linked with the Fortran # compiler require a hack defined by _DMAIN_COMP diff --git a/var/spack/repos/builtin/packages/nekcem/package.py b/var/spack/repos/builtin/packages/nekcem/package.py index 51b8cc0b525ebe..d34543833234f6 100644 --- a/var/spack/repos/builtin/packages/nekcem/package.py +++ b/var/spack/repos/builtin/packages/nekcem/package.py @@ -84,9 +84,6 @@ def install(self, spec, prefix): elif self.compiler.name == "xl" or self.compiler.name == "xl_r": fflags += ["-qrealsize=8"] cflags += ["-DPREFIX=jl_", "-DIBM"] - elif self.compiler.name == "pgi": - fflags += ["-r8"] - cflags += ["-DUNDERSCORE"] error = Executable(fc)("empty.f", output=str, error=str, fail_on_error=False) diff --git a/var/spack/repos/builtin/packages/nlohmann-json/package.py b/var/spack/repos/builtin/packages/nlohmann-json/package.py index d0003219c60039..cb8980f8a72d51 100644 --- a/var/spack/repos/builtin/packages/nlohmann-json/package.py +++ b/var/spack/repos/builtin/packages/nlohmann-json/package.py @@ -52,7 +52,6 @@ class NlohmannJson(CMakePackage): # https://github.com/nlohmann/json/releases/tag/v3.3.0 conflicts("%gcc@:4.8", when="@:3.2.9") conflicts("%intel@:16") - conflicts("%pgi@:14") def cmake_args(self): return [ diff --git a/var/spack/repos/builtin/packages/numactl/package.py b/var/spack/repos/builtin/packages/numactl/package.py index cde391471cdafb..6930f3f4f78234 100644 --- a/var/spack/repos/builtin/packages/numactl/package.py +++ b/var/spack/repos/builtin/packages/numactl/package.py @@ -50,13 +50,6 @@ def autoreconf(self, spec, prefix): @when("%nvhpc") def patch(self): - self._nvhpc_patch() - - @when("%pgi@20:") - def patch(self): - self._nvhpc_patch() - - def _nvhpc_patch(self): # Remove flags not recognized by the NVIDIA compiler filter_file("-ffast-math -funroll-loops", "", "Makefile.am") filter_file("-std=gnu99", "-c99", "Makefile.am") diff --git a/var/spack/repos/builtin/packages/nut/package.py b/var/spack/repos/builtin/packages/nut/package.py index 4d00edcbb31950..7c9a162f65d14f 100644 --- a/var/spack/repos/builtin/packages/nut/package.py +++ b/var/spack/repos/builtin/packages/nut/package.py @@ -32,7 +32,6 @@ class Nut(CMakePackage): # which is a C++ template library conflicts("%nvhpc") conflicts("%intel", when="@serial") - conflicts("%pgi", when="@serial") conflicts("%xl", when="@serial") conflicts("%nag", when="@serial") build_targets = ["VERBOSE=on"] diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 425156907245cb..75d09bbc64cbc3 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -1162,13 +1162,6 @@ def configure_args(self): if spec.satisfies("@1.7.2"): # There was a bug in 1.7.2 when --enable-static is used config_args.append("--enable-mca-no-build=pml-bfo") - if spec.satisfies("%pgi^cuda@7.0:7"): - # OpenMPI has problems with CUDA 7 and PGI - config_args.append("--with-wrapper-cflags=-D__LP64__ -ta:tesla") - if spec.satisfies("%pgi@:15.8"): - # With PGI 15.9 and later compilers, the - # CFLAGS=-D__LP64__ is no longer needed. - config_args.append("CFLAGS=-D__LP64__") elif spec.satisfies("@1.7:"): config_args.append("--without-cuda") diff --git a/var/spack/repos/builtin/packages/p3dfft3/package.py b/var/spack/repos/builtin/packages/p3dfft3/package.py index 11427f1f8e1ea3..8ce6d33e4ec3ef 100644 --- a/var/spack/repos/builtin/packages/p3dfft3/package.py +++ b/var/spack/repos/builtin/packages/p3dfft3/package.py @@ -64,9 +64,6 @@ def configure_args(self): if "%cce" in self.spec: args.append("--enable-cray") - if "%pgi" in self.spec: - args.append("--enable-pgi") - if "+mpi" in self.spec: args.append("CC=%s" % self.spec["mpi"].mpicc) args.append("CXX=%s" % self.spec["mpi"].mpicxx) diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index c18d61e798799d..f9e2754eb52778 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -40,13 +40,6 @@ class Parmetis(CMakePackage): # https://bitbucket.org/petsc/pkg-parmetis/commits/82409d68aa1d6cbc70740d0f35024aae17f7d5cb/raw/ patch("pkg-parmetis-82409d68aa1d6cbc70740d0f35024aae17f7d5cb.patch") - def flag_handler(self, name, flags): - if name == "cflags": - if "%pgi" in self.spec: - my_flags = flags + ["-c11"] - return (None, None, my_flags) - return (None, None, flags) - def url_for_version(self, version): url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis" if version < Version("3.2.0"): diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 41a0d02a9fce63..d4784cb6ed1381 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -60,8 +60,6 @@ def configure(self, spec, prefix): options.append("-icpx") else: options.append("-icpc") - elif self.compiler.name == "pgi": - options.append("-pgCC") elif self.compiler.name == "gcc": options.append("-GNU") elif self.compiler.name in ["clang", "apple-clang", "aocc"]: diff --git a/var/spack/repos/builtin/packages/pennant/package.py b/var/spack/repos/builtin/packages/pennant/package.py index eb5fd1b8d66f65..a903e0e6e7bac0 100644 --- a/var/spack/repos/builtin/packages/pennant/package.py +++ b/var/spack/repos/builtin/packages/pennant/package.py @@ -40,8 +40,6 @@ def edit(self, spec, prefix): if self.compiler.name == "intel": opt += " -fast -fno-alias" - if self.compiler.name == "pgi": - opt += " -fastsse" makefile.filter("CXXFLAGS_DEBUG .*", "CXXFLAGS_DEBUG := {0}".format(debug)) makefile.filter("CXXFLAGS_OPT .*", "CXXFLAGS_OPT := {0}".format(opt)) diff --git a/var/spack/repos/builtin/packages/pfunit/package.py b/var/spack/repos/builtin/packages/pfunit/package.py index 0ad50d8a486c0e..a635dd96ec99cc 100644 --- a/var/spack/repos/builtin/packages/pfunit/package.py +++ b/var/spack/repos/builtin/packages/pfunit/package.py @@ -225,7 +225,6 @@ def compiler_vendor(self): "%gcc": "GNU", "%clang": "GNU", "%intel": "Intel", - "%pgi": "PGI", "%nag": "NAG", "%cce": "Cray", } diff --git a/var/spack/repos/builtin/packages/pgi/detection_test.yaml b/var/spack/repos/builtin/packages/pgi/detection_test.yaml deleted file mode 100644 index ec6268282ea7f2..00000000000000 --- a/var/spack/repos/builtin/packages/pgi/detection_test.yaml +++ /dev/null @@ -1,33 +0,0 @@ -paths: -- layout: - - executables: - - bin/pgcc - script: | - echo "pgcc 15.10-0 64-bit target on x86-64 Linux -tp sandybridge" - echo "The Portland Group - PGI Compilers and Tools" - echo "Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved." - platforms: [linux] - results: - - spec: pgi@15.10 - -- layout: - - executables: - - bin/pgcc - script: | - echo "pgcc 17.4-0 linuxpower target on Linuxpower" - echo "PGI Compilers and Tools" - echo "Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved." - platforms: [linux] - results: - - spec: pgi@17.4 - -- layout: - - executables: - - bin/pgcc - script: | - echo "pgcc-llvm 18.4-0 LLVM 64-bit target on x86-64 Linux -tp haswell" - echo "PGI Compilers and Tools" - echo "Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved." - platforms: [linux] - results: - - spec: pgi@18.4 diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py deleted file mode 100644 index 37196669cf4c9d..00000000000000 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ /dev/null @@ -1,115 +0,0 @@ -# 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 - -from spack.package import * -from spack.util.prefix import Prefix - - -class Pgi(Package, CompilerPackage): - """PGI optimizing multi-core x64 compilers for Linux, MacOS & Windows - with support for debugging and profiling of local MPI processes. - - Note: The PGI compilers are licensed software. You will need to create an - account on the PGI homepage and download PGI yourself. Spack will search - your current directory for the download tarball. Alternatively, add this - file to a mirror so that Spack can find it. For instructions on how to - set up a mirror, see https://spack.readthedocs.io/en/latest/mirrors.html""" - - homepage = "https://www.pgroup.com/" - manual_download = True - - version("20.4", sha256="f3ecc2104b304cd5c8b20e3ffdb5da88f2b5f7cc148e8daf00561928a5cbbc2e") - version("19.10", sha256="ac9db73ba80a66fe3bc875f63aaa9e16f54674a4e88b25416432430ba8cf203d") - version("19.7", sha256="439692aeb51eff464b968c3bfed4536ed7bd3ba6f8174bc0ebe2219a78fe62ae") - version("19.4", sha256="23eee0d4da751dd6f247d624b68b03538ebd172e63a053c41bb67013f07cf68e") - version("19.1", sha256="3e05a6db2bf80b5d15f6ff83188f20cb89dc23e233417921e5c0822e7e57d34f") - version("18.10", sha256="4b3ff83d2a13de6001bed599246eff8e63ef711b8952d4a9ee12efd666b3e326") - version("18.4", sha256="81e0dcf6000b026093ece180d42d77854c23269fb8409cedcf51c674ca580a0f") - version("17.10", sha256="9da8f869fb9b70c0c4423c903d40a9e22d54b997af359a43573c0841165cd1b6") - version("17.4", sha256="115c212d526695fc116fe44f1e722793e60b6f7d1b341cd7e77a95da8e7f6c34") - - variant("network", default=True, description="Perform a network install") - variant("single", default=False, description="Perform a single system install") - variant( - "nvidia", default=False, description="Enable installation of optional NVIDIA components" - ) - variant("amd", default=False, description="Enable installation of optional AMD components") - variant("java", default=False, description="Enable installation of Java Runtime Environment") - variant("mpi", default=False, description="Enable installation of Open MPI") - - # Licensing - license_required = True - license_comment = "#" - license_files = ["license.dat"] - license_vars = ["PGROUPD_LICENSE_FILE", "LM_LICENSE_FILE"] - license_url = "http://www.pgroup.com/doc/pgiinstall.pdf" - - def url_for_version(self, version): - if int(str(version.up_to(1))) <= 17: - return "file://{0}/pgilinux-20{1}-{2}-x86_64.tar.gz".format( - os.getcwd(), version.up_to(1), version.joined - ) - else: - return "file://{0}/pgilinux-20{1}-{2}-x86-64.tar.gz".format( - os.getcwd(), version.up_to(1), version.joined - ) - - compiler_languages = ["c", "cxx", "fortran"] - c_names = ["pgcc"] - cxx_names = ["pgc++", "pgCC"] - fortran_names = ["pgfortran"] # older names long deprecated - compiler_version_argument = "-V" - compiler_version_regex = r"pg[^ ]* ([0-9.]+)-[0-9]+ (?:LLVM )?[^ ]+ target on " - - def install(self, spec, prefix): - # Enable the silent installation feature - os.environ["PGI_SILENT"] = "true" - os.environ["PGI_ACCEPT_EULA"] = "accept" - os.environ["PGI_INSTALL_DIR"] = prefix - - if "+network" in spec and "~single" in spec: - os.environ["PGI_INSTALL_TYPE"] = "network" - os.environ["PGI_INSTALL_LOCAL_DIR"] = "%s/%s/share_objects" % (prefix, self.version) - elif "+single" in spec and "~network" in spec: - os.environ["PGI_INSTALL_TYPE"] = "single" - else: - msg = "You must choose either a network install or a single " - msg += "system install.\nYou cannot choose both." - raise RuntimeError(msg) - - if "+nvidia" in spec: - os.environ["PGI_INSTALL_NVIDIA"] = "true" - - if "+amd" in spec: - os.environ["PGI_INSTALL_AMD"] = "true" - - if "+java" in spec: - os.environ["PGI_INSTALL_JAVA"] = "true" - - if "+mpi" in spec: - os.environ["PGI_INSTALL_MPI"] = "true" - - # Run install script - os.system("./install") - - def setup_run_environment(self, env): - prefix = Prefix(join_path(self.prefix, "linux86-64", self.version)) - - env.prepend_path("PATH", prefix.bin) - env.prepend_path("MANPATH", prefix.man) - env.prepend_path("LD_LIBRARY_PATH", prefix.lib) - env.set("CC", join_path(prefix.bin, "pgcc")) - env.set("CXX", join_path(prefix.bin, "pgc++")) - env.set("F77", join_path(prefix.bin, "pgfortran")) - env.set("FC", join_path(prefix.bin, "pgfortran")) - - if "+mpi" in self.spec: - ompi_dir = os.listdir(prefix.mpi)[0] - env.prepend_path("PATH", join_path(prefix.mpi, ompi_dir, "bin")) - env.prepend_path("LD_LIBRARY_PATH", join_path(prefix.mpi, ompi_dir, "lib")) - env.prepend_path("C_INCLUDE_PATH", join_path(prefix.mpi, ompi_dir, "include")) - env.prepend_path("MANPATH", join_path(prefix.mpi, ompi_dir, "share/man")) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index d2f51bf11d0488..6122182c39b209 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -29,9 +29,6 @@ class PkgConfig(AutotoolsPackage): # The following patch is needed for gcc-6.1 patch("g_date_strftime.patch", when="@:0.29.1") - # https://github.com/spack/spack/issues/3525 - conflicts("%pgi") - parallel = False tags = ["build-tools"] diff --git a/var/spack/repos/builtin/packages/pkgconf/package.py b/var/spack/repos/builtin/packages/pkgconf/package.py index 39f3b198e0d2d4..abf731d41b7983 100644 --- a/var/spack/repos/builtin/packages/pkgconf/package.py +++ b/var/spack/repos/builtin/packages/pkgconf/package.py @@ -40,12 +40,6 @@ class Pkgconf(AutotoolsPackage): # https://github.com/spack/spack/issues/11704 patch("nvhpc.patch", when="@1.7.3%nvhpc") - # TODO: Add a package for the kyua testing framework - # depends_on('kyua', type='test') - - # https://github.com/spack/spack/issues/3525 - conflicts("%pgi") - tags = ["build-tools"] executables = ["^pkgconf$", "^pkg-config$"] diff --git a/var/spack/repos/builtin/packages/plasma/package.py b/var/spack/repos/builtin/packages/plasma/package.py index 1d5e46b272b58a..65825a781f4d5f 100644 --- a/var/spack/repos/builtin/packages/plasma/package.py +++ b/var/spack/repos/builtin/packages/plasma/package.py @@ -82,7 +82,6 @@ class Plasma(CMakePackage): conflicts("%clang") conflicts("%intel") conflicts("%nag") - conflicts("%pgi") conflicts("%xl") conflicts("%xl_r") diff --git a/var/spack/repos/builtin/packages/precice/package.py b/var/spack/repos/builtin/packages/precice/package.py index 2c1db9878fd8d5..b3332713659b0d 100644 --- a/var/spack/repos/builtin/packages/precice/package.py +++ b/var/spack/repos/builtin/packages/precice/package.py @@ -116,7 +116,6 @@ class Precice(CMakePackage): conflicts("%apple-clang@:5") conflicts("%clang@:3.7") conflicts("%intel@:16") - conflicts("%pgi@:17.3") def xsdk_tpl_args(self): return [ diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index 5b9996e04f7427..b39e9d59e491f8 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -145,7 +145,6 @@ class Qmcpack(CMakePackage, CudaPackage): cpp14_warning = "QMCPACK v3.6.0 or later requires a " "compiler with support for C++14" conflicts("%gcc@:4", when="@3.6.0:", msg=cpp14_warning) conflicts("%intel@:17", when="@3.6.0:", msg=cpp14_warning) - conflicts("%pgi@:17", when="@3.6.0:", msg=cpp14_warning) conflicts("%clang@:3.4", when="@3.6.0:", msg=cpp14_warning) conflicts("+afqmc", when="@:3.6.0", msg="AFQMC not recommended before v3.7") @@ -167,7 +166,6 @@ class Qmcpack(CMakePackage, CudaPackage): "Intel compiler when linking against Intel MKL" ) conflicts("%gcc", when="@:3.4.0 ^intel-mkl", msg=mkl_warning) - conflicts("%pgi", when="@:3.4.0 ^intel-mkl", msg=mkl_warning) conflicts("%llvm", when="@:3.4.0 ^intel-mkl", msg=mkl_warning) # Dependencies match those in the QMCPACK manual. diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py index ea8715a64dbbdc..76cb719bcfbaee 100644 --- a/var/spack/repos/builtin/packages/quantum-espresso/package.py +++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py @@ -226,11 +226,6 @@ class QuantumEspresso(CMakePackage, Package): # EPW doesn't gets along well with OpenMPI 2.x.x conflicts("^openmpi@2.0.0:2", msg="OpenMPI version incompatible with EPW") - # EPW also doesn't gets along well with PGI 17.x + OpenMPI 1.10.7 - conflicts( - "^openmpi@1.10.7%pgi@17.0:17.12", msg="PGI+OpenMPI version combo incompatible with EPW" - ) - variant( "environ", default=False, diff --git a/var/spack/repos/builtin/packages/raxml/package.py b/var/spack/repos/builtin/packages/raxml/package.py index 4691a5c496acb3..4d09f191e31a89 100644 --- a/var/spack/repos/builtin/packages/raxml/package.py +++ b/var/spack/repos/builtin/packages/raxml/package.py @@ -35,7 +35,6 @@ class Raxml(Package): conflicts("%apple-clang") conflicts("%clang") conflicts("%nag") - conflicts("%pgi") conflicts("%xl") conflicts("%xl_r") diff --git a/var/spack/repos/builtin/packages/rmgdft/package.py b/var/spack/repos/builtin/packages/rmgdft/package.py index 8165f07d548f3b..233725205272f5 100644 --- a/var/spack/repos/builtin/packages/rmgdft/package.py +++ b/var/spack/repos/builtin/packages/rmgdft/package.py @@ -55,7 +55,6 @@ class Rmgdft(CMakePackage, CudaPackage): compiler_warning14 = "RMGDFT 4.0.0 or later requires a compiler with support for C++14" conflicts("%gcc@:4", when="@3.6.0:", msg=compiler_warning14) conflicts("%intel@:17", when="@3.6.0:", msg=compiler_warning14) - conflicts("%pgi@:17", when="@3.6.0:", msg=compiler_warning14) conflicts("%llvm@:3.4", when="@3.6.0:", msg=compiler_warning14) # RMGDFT 5.0.0 requires C++17 and increase the minimum gcc to 8 diff --git a/var/spack/repos/builtin/packages/rmlab/package.py b/var/spack/repos/builtin/packages/rmlab/package.py index 836f52039b2cf4..63f361d0a8d939 100644 --- a/var/spack/repos/builtin/packages/rmlab/package.py +++ b/var/spack/repos/builtin/packages/rmlab/package.py @@ -27,7 +27,6 @@ class Rmlab(CMakePackage): # C++11 conflicts("%gcc@:4.7") conflicts("%intel@:15") - conflicts("%pgi@:14") depends_on("pngwriter@0.6.0:", when="+png") diff --git a/var/spack/repos/builtin/packages/rsbench/package.py b/var/spack/repos/builtin/packages/rsbench/package.py index 7c2cd25bbd75f5..6b4f041d8007b7 100644 --- a/var/spack/repos/builtin/packages/rsbench/package.py +++ b/var/spack/repos/builtin/packages/rsbench/package.py @@ -45,7 +45,7 @@ def build_targets(self): cflags += " -ffast-math " elif spec.satisfies("%intel"): cflags += " -xhost -ansi-alias -no-prec-div " - elif spec.satisfies("%pgi") or spec.satisfies("%nvhpc"): + elif spec.satisfies("%nvhpc"): cflags += " -fastsse " elif spec.satisfies("%arm"): cflags += " -ffast-math " diff --git a/var/spack/repos/builtin/packages/scale/package.py b/var/spack/repos/builtin/packages/scale/package.py index 8d9171756f6384..3d45b572c42d9b 100644 --- a/var/spack/repos/builtin/packages/scale/package.py +++ b/var/spack/repos/builtin/packages/scale/package.py @@ -51,8 +51,6 @@ def build(self, spec, prefix): scale_sys_str = "Linux64-gnu-ompi" elif self.spec.satisfies("platform=linux %intel"): scale_sys_str = "Linux64-intel-impi" - elif self.spec.satisfies("platform=linux %pgi"): - scale_sys_str = "Linux64-pgi-ompi" elif self.spec.satisfies("platform=linux target=arm %gcc"): scale_sys_str = "LinuxARM-gnu-ompi" elif self.spec.satisfies("platform=linux target=a64fx %fj"): diff --git a/var/spack/repos/builtin/packages/serialbox/package.py b/var/spack/repos/builtin/packages/serialbox/package.py index 0618fe9db2bffb..1d756cb0d99a9b 100644 --- a/var/spack/repos/builtin/packages/serialbox/package.py +++ b/var/spack/repos/builtin/packages/serialbox/package.py @@ -45,9 +45,6 @@ class Serialbox(CMakePackage): ) depends_on("cmake@3.12:", type="build") - # We might be provided with an external vanilla cmake, and we need one with - # with https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5025 - depends_on("cmake@3.19:", when="%pgi", type="build") depends_on("boost@1.54:", type="build") depends_on("boost+filesystem+system", when="~std-filesystem", type=("build", "link")) @@ -147,10 +144,7 @@ def flag_handler(self, name, flags): # undefined reference to # `std::experimental::filesystem::v1::__cxx11::path:: # _M_find_extension[abi:cxx11]() const' - if any( - self.spec.satisfies("{0}+std-filesystem".format(x)) - for x in ["%intel@:19.0.1", "%pgi@:19.9"] - ): + if self.spec.satisfies("%intel@:19.0.1+std-filesystem"): cmake_flags.append("-D_GLIBCXX_USE_CXX11_ABI=0") return flags, None, (cmake_flags or None) diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 9c06900e6a7983..54c70c6b56f78f 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -37,7 +37,6 @@ def determine_version(cls, exe): def determine_variants(cls, exes, version): compiler_suites = { "xl": {"cc": "mpixlc", "cxx": "mpixlC", "f77": "mpixlf", "fc": "mpixlf"}, - "pgi": {"cc": "mpipgicc", "cxx": "mpipgic++", "f77": "mpipgifort", "fc": "mpipgifort"}, "default": {"cc": "mpicc", "cxx": "mpicxx", "f77": "mpif77", "fc": "mpif90"}, } @@ -110,11 +109,6 @@ def setup_dependent_package(self, module, dependent_spec): self.spec.mpicxx = os.path.join(self.prefix.bin, "mpixlC") self.spec.mpif77 = os.path.join(self.prefix.bin, "mpixlf") self.spec.mpifc = os.path.join(self.prefix.bin, "mpixlf") - elif "%pgi" in dependent_spec: - self.spec.mpicc = os.path.join(self.prefix.bin, "mpipgicc") - self.spec.mpicxx = os.path.join(self.prefix.bin, "mpipgic++") - self.spec.mpif77 = os.path.join(self.prefix.bin, "mpipgifort") - self.spec.mpifc = os.path.join(self.prefix.bin, "mpipgifort") else: self.spec.mpicc = os.path.join(self.prefix.bin, "mpicc") self.spec.mpicxx = os.path.join(self.prefix.bin, "mpicxx") @@ -127,11 +121,6 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set("MPICXX", os.path.join(self.prefix.bin, "mpixlC")) env.set("MPIF77", os.path.join(self.prefix.bin, "mpixlf")) env.set("MPIF90", os.path.join(self.prefix.bin, "mpixlf")) - elif "%pgi" in dependent_spec: - env.set("MPICC", os.path.join(self.prefix.bin, "mpipgicc")) - env.set("MPICXX", os.path.join(self.prefix.bin, "mpipgic++")) - env.set("MPIF77", os.path.join(self.prefix.bin, "mpipgifort")) - env.set("MPIF90", os.path.join(self.prefix.bin, "mpipgifort")) else: env.set("MPICC", os.path.join(self.prefix.bin, "mpicc")) env.set("MPICXX", os.path.join(self.prefix.bin, "mpic++")) @@ -153,11 +142,6 @@ def setup_run_environment(self, env): env.set("MPICXX", os.path.join(self.prefix.bin, "mpixlC")) env.set("MPIF77", os.path.join(self.prefix.bin, "mpixlf")) env.set("MPIF90", os.path.join(self.prefix.bin, "mpixlf")) - elif "%pgi" in self.spec: - env.set("MPICC", os.path.join(self.prefix.bin, "mpipgicc")) - env.set("MPICXX", os.path.join(self.prefix.bin, "mpipgic++")) - env.set("MPIF77", os.path.join(self.prefix.bin, "mpipgifort")) - env.set("MPIF90", os.path.join(self.prefix.bin, "mpipgifort")) else: env.set("MPICC", os.path.join(self.prefix.bin, "mpicc")) env.set("MPICXX", os.path.join(self.prefix.bin, "mpic++")) diff --git a/var/spack/repos/builtin/packages/stripack/package.py b/var/spack/repos/builtin/packages/stripack/package.py index 289101da5efe8f..75a1c636871fb9 100644 --- a/var/spack/repos/builtin/packages/stripack/package.py +++ b/var/spack/repos/builtin/packages/stripack/package.py @@ -69,7 +69,7 @@ def build(self, spec, prefix): fflags += ["-qrealsize=8"] elif satisfies("%fj"): fflags += ["-CcdRR8"] - elif satisfies("%pgi") or satisfies("%nvhpc"): + elif satisfies("%nvhpc"): fflags += ["-r8"] fflags += [self.compiler.fc_pic_flag] make("all", "FFLAGS={0}".format(" ".join(fflags))) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index a6c8fbaed82b91..3069a521272bc5 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -90,8 +90,7 @@ class SuiteSparse(Package): msg="suite-sparse needs task_scheduler_init.h dropped in recent tbb libs", ) - # This patch removes unsupported flags for pgi compiler - patch("pgi.patch", when="%pgi") + # This patch removes unsupported flags for nvhpc compiler patch("pgi.patch", when="%nvhpc") # This patch adds '-lm' when linking libgraphblas and when using clang. @@ -234,8 +233,6 @@ def install(self, spec, prefix): # optimizations if any([x in spec for x in ("%apple-clang", "%clang", "%gcc", "%intel", "%fj")]): make_args += ["CFLAGS+=-fno-common -fexceptions"] - elif "%pgi" in spec: - make_args += ["CFLAGS+=--exceptions"] if spack_f77.endswith("xlf") or spack_f77.endswith("xlf_r"): make_args += ["CFLAGS+=-DBLAS_NO_UNDERSCORE"] diff --git a/var/spack/repos/builtin/packages/taskflow/package.py b/var/spack/repos/builtin/packages/taskflow/package.py index 8be3f42b56f16d..510509e5b5eca6 100644 --- a/var/spack/repos/builtin/packages/taskflow/package.py +++ b/var/spack/repos/builtin/packages/taskflow/package.py @@ -31,7 +31,6 @@ class Taskflow(CMakePackage): conflicts("%clang@:3.5") conflicts("%apple-clang@:8.0.0") # untested: conflicts('%intel@:15') - # untested: conflicts('%pgi@:14') def cmake_args(self): try: diff --git a/var/spack/repos/builtin/packages/tealeaf/package.py b/var/spack/repos/builtin/packages/tealeaf/package.py index 443c8997334983..ba894d03805d86 100644 --- a/var/spack/repos/builtin/packages/tealeaf/package.py +++ b/var/spack/repos/builtin/packages/tealeaf/package.py @@ -47,8 +47,6 @@ def build_targets(self): targets.append("COMPILER=CRAY") elif "%intel" in self.spec: targets.append("COMPILER=INTEL") - elif "%pgi" in self.spec: - targets.append("COMPILER=PGI") elif "%xl" in self.spec: targets.append("COMPILER=XL") diff --git a/var/spack/repos/builtin/packages/unblur/package.py b/var/spack/repos/builtin/packages/unblur/package.py index 0965489df8fcb3..c0e6bc1a79032d 100644 --- a/var/spack/repos/builtin/packages/unblur/package.py +++ b/var/spack/repos/builtin/packages/unblur/package.py @@ -26,7 +26,6 @@ class Unblur(AutotoolsPackage): depends_on("fftw@3:") # Requires Intel Fortran compiler conflicts("%gcc") - conflicts("%pgi") conflicts("%apple-clang") conflicts("%clang") conflicts("%cce") diff --git a/var/spack/repos/builtin/packages/wi4mpi/package.py b/var/spack/repos/builtin/packages/wi4mpi/package.py index 4e800940076ea3..19b5ba033a1632 100644 --- a/var/spack/repos/builtin/packages/wi4mpi/package.py +++ b/var/spack/repos/builtin/packages/wi4mpi/package.py @@ -47,8 +47,6 @@ def cmake_args(self): compiler = "INTEL" elif "%clang" in self.spec: compiler = "LLVM" - elif "%pgi" in self.spec: - compiler = "PGI" else: tty.error("Could not determine compiler used") wi4mpi_build_type = "RELEASE" diff --git a/var/spack/repos/builtin/packages/wps/package.py b/var/spack/repos/builtin/packages/wps/package.py index 89633e7c8dd088..7aef1c38cf9c4d 100644 --- a/var/spack/repos/builtin/packages/wps/package.py +++ b/var/spack/repos/builtin/packages/wps/package.py @@ -95,7 +95,6 @@ def configure(self, spec, prefix): "dmpar": "19", "dmpar_NO_GRIB2": "20", }, - "pgi": {"serial": "5", "serial_NO_GRIB2": "6", "dmpar": "7", "dmpar_NO_GRIB2": "8"}, } try: diff --git a/var/spack/repos/builtin/packages/xsimd/package.py b/var/spack/repos/builtin/packages/xsimd/package.py index e869da903cedd6..0086812647de98 100644 --- a/var/spack/repos/builtin/packages/xsimd/package.py +++ b/var/spack/repos/builtin/packages/xsimd/package.py @@ -41,7 +41,6 @@ class Xsimd(CMakePackage): conflicts("%gcc@:4.8") conflicts("%clang@:3.6") # untested: conflicts('%intel@:15') - # untested: conflicts('%pgi@:14') def cmake_args(self): args = [self.define("BUILD_TESTS", self.run_tests)] diff --git a/var/spack/repos/builtin/packages/xtensor/package.py b/var/spack/repos/builtin/packages/xtensor/package.py index 58c20ab95e585d..3e964afbf0c17f 100644 --- a/var/spack/repos/builtin/packages/xtensor/package.py +++ b/var/spack/repos/builtin/packages/xtensor/package.py @@ -52,7 +52,6 @@ class Xtensor(CMakePackage): conflicts("%gcc@:4.8") conflicts("%clang@:3.5") # untested: conflicts('%intel@:15') - # untested: conflicts('%pgi@:14') def cmake_args(self): args = [ diff --git a/var/spack/repos/builtin/packages/xtl/package.py b/var/spack/repos/builtin/packages/xtl/package.py index f3dcf90fa0bf76..007c4d1ea6e190 100644 --- a/var/spack/repos/builtin/packages/xtl/package.py +++ b/var/spack/repos/builtin/packages/xtl/package.py @@ -31,4 +31,3 @@ class Xtl(CMakePackage): conflicts("%gcc@:4.8") conflicts("%clang@:3.6") # untested: conflicts('%intel@:15') - # untested: conflicts('%pgi@:14') diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 86121f412e65e6..f6e3b6d74644ef 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -102,8 +102,6 @@ def configure_args(self): config_incdirs = [] # PGI runtime libraries - if "%pgi" in spec: - config_ldflags.append("-pgf90libs") # NVHPC runtime libraries if "%nvhpc" in spec: config_ldflags.append("-fortranlibs") From fb46c7a72df15592351e38cddf71a6299fde8c50 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 14 Nov 2024 15:43:31 +0100 Subject: [PATCH 459/615] Rework `spack.database.InstallStatuses` into a flag (#47321) --- lib/spack/spack/binary_distribution.py | 4 +- lib/spack/spack/cmd/__init__.py | 47 ++++---- lib/spack/spack/cmd/buildcache.py | 7 +- lib/spack/spack/cmd/deprecate.py | 11 +- lib/spack/spack/cmd/find.py | 37 ++++--- lib/spack/spack/cmd/mark.py | 6 +- lib/spack/spack/cmd/uninstall.py | 11 +- lib/spack/spack/database.py | 142 ++++++++++--------------- lib/spack/spack/enums.py | 15 +++ lib/spack/spack/spec.py | 4 +- lib/spack/spack/test/cmd/deprecate.py | 18 ++-- lib/spack/spack/test/cmd/find.py | 3 +- lib/spack/spack/test/cmd/reindex.py | 7 +- lib/spack/spack/test/cmd/uninstall.py | 7 +- lib/spack/spack/test/database.py | 28 ++--- share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 6 +- 17 files changed, 196 insertions(+), 159 deletions(-) create mode 100644 lib/spack/spack/enums.py diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index dcc82130e77441..db26f32c00885c 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -87,6 +87,8 @@ from spack.stage import Stage from spack.util.executable import which +from .enums import InstallRecordStatus + BUILD_CACHE_RELATIVE_PATH = "build_cache" BUILD_CACHE_KEYS_RELATIVE_PATH = "_pgp" @@ -252,7 +254,7 @@ def _associate_built_specs_with_mirror(self, cache_key, mirror_url): spec_list = [ s - for s in db.query_local(installed=any) + for s in db.query_local(installed=InstallRecordStatus.ANY) if s.external or db.query_local_by_spec_hash(s.dag_hash()).in_buildcache ] diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 11569a34c70b44..e0bcf6da8d0311 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -9,7 +9,7 @@ import re import sys from collections import Counter -from typing import List, Union +from typing import List, Optional, Union import llnl.string import llnl.util.tty as tty @@ -33,6 +33,8 @@ import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml +from ..enums import InstallRecordStatus + # cmd has a submodule called "list" so preserve the python list module python_list = list @@ -267,39 +269,48 @@ def matching_specs_from_env(specs): return _concretize_spec_pairs(spec_pairs + additional_concrete_specs)[: len(spec_pairs)] -def disambiguate_spec(spec, env, local=False, installed=True, first=False): +def disambiguate_spec( + spec: spack.spec.Spec, + env: Optional[ev.Environment], + local: bool = False, + installed: Union[bool, InstallRecordStatus] = True, + first: bool = False, +) -> spack.spec.Spec: """Given a spec, figure out which installed package it refers to. - Arguments: - spec (spack.spec.Spec): a spec to disambiguate - env (spack.environment.Environment): a spack environment, - if one is active, or None if no environment is active - local (bool): do not search chained spack instances - installed (bool or spack.database.InstallStatus or typing.Iterable): - install status argument passed to database query. - See ``spack.database.Database._query`` for details. + Args: + spec: a spec to disambiguate + env: a spack environment, if one is active, or None if no environment is active + local: do not search chained spack instances + installed: install status argument passed to database query. + first: returns the first matching spec, even if more than one match is found """ hashes = env.all_hashes() if env else None return disambiguate_spec_from_hashes(spec, hashes, local, installed, first) -def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True, first=False): +def disambiguate_spec_from_hashes( + spec: spack.spec.Spec, + hashes: List[str], + local: bool = False, + installed: Union[bool, InstallRecordStatus] = True, + first: bool = False, +) -> spack.spec.Spec: """Given a spec and a list of hashes, get concrete spec the spec refers to. Arguments: - spec (spack.spec.Spec): a spec to disambiguate - hashes (typing.Iterable): a set of hashes of specs among which to disambiguate - local (bool): do not search chained spack instances - installed (bool or spack.database.InstallStatus or typing.Iterable): - install status argument passed to database query. - See ``spack.database.Database._query`` for details. + spec: a spec to disambiguate + hashes: a set of hashes of specs among which to disambiguate + local: if True, do not search chained spack instances + installed: install status argument passed to database query. + first: returns the first matching spec, even if more than one match is found """ if local: matching_specs = spack.store.STORE.db.query_local(spec, hashes=hashes, installed=installed) else: matching_specs = spack.store.STORE.db.query(spec, hashes=hashes, installed=installed) if not matching_specs: - tty.die("Spec '%s' matches no installed packages." % spec) + tty.die(f"Spec '{spec}' matches no installed packages.") elif first: return matching_specs[0] diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py index 960f468c7d13b6..8daa78610c128f 100644 --- a/lib/spack/spack/cmd/buildcache.py +++ b/lib/spack/spack/cmd/buildcache.py @@ -34,6 +34,8 @@ from spack.cmd.common import arguments from spack.spec import Spec, save_dependency_specfiles +from ..enums import InstallRecordStatus + description = "create, download and install binary packages" section = "packaging" level = "long" @@ -308,7 +310,10 @@ def setup_parser(subparser: argparse.ArgumentParser): def _matching_specs(specs: List[Spec]) -> List[Spec]: """Disambiguate specs and return a list of matching specs""" - return [spack.cmd.disambiguate_spec(s, ev.active_environment(), installed=any) for s in specs] + return [ + spack.cmd.disambiguate_spec(s, ev.active_environment(), installed=InstallRecordStatus.ANY) + for s in specs + ] def _format_spec(spec: Spec) -> str: diff --git a/lib/spack/spack/cmd/deprecate.py b/lib/spack/spack/cmd/deprecate.py index abca550ccad4a0..f7ecc39312faae 100644 --- a/lib/spack/spack/cmd/deprecate.py +++ b/lib/spack/spack/cmd/deprecate.py @@ -23,9 +23,10 @@ import spack.installer import spack.store from spack.cmd.common import arguments -from spack.database import InstallStatuses from spack.error import SpackError +from ..enums import InstallRecordStatus + description = "replace one package with another via symlinks" section = "admin" level = "long" @@ -95,8 +96,12 @@ def deprecate(parser, args): if len(specs) != 2: raise SpackError("spack deprecate requires exactly two specs") - install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED] - deprecate = spack.cmd.disambiguate_spec(specs[0], env, local=True, installed=install_query) + deprecate = spack.cmd.disambiguate_spec( + specs[0], + env, + local=True, + installed=(InstallRecordStatus.INSTALLED | InstallRecordStatus.DEPRECATED), + ) if args.install: deprecator = specs[1].concretized() diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index c6930097ac3ad1..29ac155984aaee 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -17,7 +17,8 @@ import spack.spec import spack.store from spack.cmd.common import arguments -from spack.database import InstallStatuses + +from ..enums import InstallRecordStatus description = "list and search installed packages" section = "basic" @@ -137,21 +138,22 @@ def setup_parser(subparser): subparser.add_argument( "--loaded", action="store_true", help="show only packages loaded in the user environment" ) - subparser.add_argument( + only_missing_or_deprecated = subparser.add_mutually_exclusive_group() + only_missing_or_deprecated.add_argument( "-M", "--only-missing", action="store_true", dest="only_missing", help="show only missing dependencies", ) + only_missing_or_deprecated.add_argument( + "--only-deprecated", action="store_true", help="show only deprecated packages" + ) subparser.add_argument( "--deprecated", action="store_true", help="show deprecated packages as well as installed specs", ) - subparser.add_argument( - "--only-deprecated", action="store_true", help="show only deprecated packages" - ) subparser.add_argument( "--install-tree", action="store", @@ -165,14 +167,23 @@ def setup_parser(subparser): def query_arguments(args): - # Set up query arguments. - installed = [] - if not (args.only_missing or args.only_deprecated): - installed.append(InstallStatuses.INSTALLED) - if (args.deprecated or args.only_deprecated) and not args.only_missing: - installed.append(InstallStatuses.DEPRECATED) - if (args.missing or args.only_missing) and not args.only_deprecated: - installed.append(InstallStatuses.MISSING) + if args.only_missing and (args.deprecated or args.missing): + raise RuntimeError("cannot use --only-missing with --deprecated, or --missing") + + if args.only_deprecated and (args.deprecated or args.missing): + raise RuntimeError("cannot use --only-deprecated with --deprecated, or --missing") + + installed = InstallRecordStatus.INSTALLED + if args.only_missing: + installed = InstallRecordStatus.MISSING + elif args.only_deprecated: + installed = InstallRecordStatus.DEPRECATED + + if args.missing: + installed |= InstallRecordStatus.MISSING + + if args.deprecated: + installed |= InstallRecordStatus.DEPRECATED predicate_fn = None if args.unknown: diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py index 66a84fb9076212..f613522d2c5076 100644 --- a/lib/spack/spack/cmd/mark.py +++ b/lib/spack/spack/cmd/mark.py @@ -10,7 +10,8 @@ import spack.cmd import spack.store from spack.cmd.common import arguments -from spack.database import InstallStatuses + +from ..enums import InstallRecordStatus description = "mark packages as explicitly or implicitly installed" section = "admin" @@ -67,8 +68,7 @@ def find_matching_specs(specs, allow_multiple_matches=False): has_errors = False for spec in specs: - install_query = [InstallStatuses.INSTALLED] - matching = spack.store.STORE.db.query_local(spec, installed=install_query) + matching = spack.store.STORE.db.query_local(spec, installed=InstallRecordStatus.INSTALLED) # For each spec provided, make sure it refers to only one package. # Fail and ask user to be unambiguous if it doesn't if not allow_multiple_matches and len(matching) > 1: diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 5d6779eea9195a..fb13df369c0603 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -17,7 +17,8 @@ import spack.store import spack.traverse as traverse from spack.cmd.common import arguments -from spack.database import InstallStatuses + +from ..enums import InstallRecordStatus description = "remove installed packages" section = "build" @@ -99,12 +100,14 @@ def find_matching_specs( hashes = env.all_hashes() if env else None # List of specs that match expressions given via command line - specs_from_cli: List["spack.spec.Spec"] = [] + specs_from_cli: List[spack.spec.Spec] = [] has_errors = False for spec in specs: - install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED] matching = spack.store.STORE.db.query_local( - spec, hashes=hashes, installed=install_query, origin=origin + spec, + hashes=hashes, + installed=(InstallRecordStatus.INSTALLED | InstallRecordStatus.DEPRECATED), + origin=origin, ) # For each spec provided, make sure it refers to only one package. # Fail and ask user to be unambiguous if it doesn't diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index e53dd817a52b1d..ed68b5d13c0f18 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -69,6 +69,8 @@ from spack.error import SpackError from spack.util.crypto import bit_length +from .enums import InstallRecordStatus + # TODO: Provide an API automatically retyring a build after detecting and # TODO: clearing a failure. @@ -160,36 +162,12 @@ def converter(self, spec_like, *args, **kwargs): return converter -class InstallStatus(str): - pass - - -class InstallStatuses: - INSTALLED = InstallStatus("installed") - DEPRECATED = InstallStatus("deprecated") - MISSING = InstallStatus("missing") - - @classmethod - def canonicalize(cls, query_arg): - if query_arg is True: - return [cls.INSTALLED] - if query_arg is False: - return [cls.MISSING] - if query_arg is any: - return [cls.INSTALLED, cls.DEPRECATED, cls.MISSING] - if isinstance(query_arg, InstallStatus): - return [query_arg] - try: - statuses = list(query_arg) - if all(isinstance(x, InstallStatus) for x in statuses): - return statuses - except TypeError: - pass - - raise TypeError( - "installation query must be `any`, boolean, " - "InstallStatus, or iterable of InstallStatus" - ) +def normalize_query(installed: Union[bool, InstallRecordStatus]) -> InstallRecordStatus: + if installed is True: + installed = InstallRecordStatus.INSTALLED + elif installed is False: + installed = InstallRecordStatus.MISSING + return installed class InstallRecord: @@ -227,8 +205,8 @@ def __init__( installation_time: Optional[float] = None, deprecated_for: Optional[str] = None, in_buildcache: bool = False, - origin=None, - ): + origin: Optional[str] = None, + ) -> None: self.spec = spec self.path = str(path) if path else None self.installed = bool(installed) @@ -239,14 +217,12 @@ def __init__( self.in_buildcache = in_buildcache self.origin = origin - def install_type_matches(self, installed): - installed = InstallStatuses.canonicalize(installed) + def install_type_matches(self, installed: InstallRecordStatus) -> bool: if self.installed: - return InstallStatuses.INSTALLED in installed + return InstallRecordStatus.INSTALLED in installed elif self.deprecated_for: - return InstallStatuses.DEPRECATED in installed - else: - return InstallStatuses.MISSING in installed + return InstallRecordStatus.DEPRECATED in installed + return InstallRecordStatus.MISSING in installed def to_dict(self, include_fields=DEFAULT_INSTALL_RECORD_FIELDS): rec_dict = {} @@ -1396,7 +1372,13 @@ def installed_extensions_for(self, extendee_spec: "spack.spec.Spec"): if spec.package.extends(extendee_spec): yield spec.package - def _get_by_hash_local(self, dag_hash, default=None, installed=any): + def _get_by_hash_local( + self, + dag_hash: str, + default: Optional[List["spack.spec.Spec"]] = None, + installed: Union[bool, InstallRecordStatus] = InstallRecordStatus.ANY, + ) -> Optional[List["spack.spec.Spec"]]: + installed = normalize_query(installed) # hash is a full hash and is in the data somewhere if dag_hash in self._data: rec = self._data[dag_hash] @@ -1405,8 +1387,7 @@ def _get_by_hash_local(self, dag_hash, default=None, installed=any): else: return default - # check if hash is a prefix of some installed (or previously - # installed) spec. + # check if hash is a prefix of some installed (or previously installed) spec. matches = [ record.spec for h, record in self._data.items() @@ -1418,52 +1399,43 @@ def _get_by_hash_local(self, dag_hash, default=None, installed=any): # nothing found return default - def get_by_hash_local(self, dag_hash, default=None, installed=any): + def get_by_hash_local( + self, + dag_hash: str, + default: Optional[List["spack.spec.Spec"]] = None, + installed: Union[bool, InstallRecordStatus] = InstallRecordStatus.ANY, + ) -> Optional[List["spack.spec.Spec"]]: """Look up a spec in *this DB* by DAG hash, or by a DAG hash prefix. - Arguments: - dag_hash (str): hash (or hash prefix) to look up - default (object or None): default value to return if dag_hash is - not in the DB (default: None) - installed (bool or InstallStatus or typing.Iterable or None): - if ``True``, includes only installed - specs in the search; if ``False`` only missing specs, and if - ``any``, all specs in database. If an InstallStatus or iterable - of InstallStatus, returns specs whose install status - (installed, deprecated, or missing) matches (one of) the - InstallStatus. (default: any) - - ``installed`` defaults to ``any`` so that we can refer to any - known hash. Note that ``query()`` and ``query_one()`` differ in - that they only return installed specs by default. - - Returns: - (list): a list of specs matching the hash or hash prefix + Args: + dag_hash: hash (or hash prefix) to look up + default: default value to return if dag_hash is not in the DB + installed: if ``True``, includes only installed specs in the search; if ``False`` + only missing specs. Otherwise, a InstallRecordStatus flag. + + ``installed`` defaults to ``InstallRecordStatus.ANY`` so we can refer to any known hash. + ``query()`` and ``query_one()`` differ in that they only return installed specs by default. """ with self.read_transaction(): return self._get_by_hash_local(dag_hash, default=default, installed=installed) - def get_by_hash(self, dag_hash, default=None, installed=any): + def get_by_hash( + self, + dag_hash: str, + default: Optional[List["spack.spec.Spec"]] = None, + installed: Union[bool, InstallRecordStatus] = InstallRecordStatus.ANY, + ) -> Optional[List["spack.spec.Spec"]]: """Look up a spec by DAG hash, or by a DAG hash prefix. - Arguments: - dag_hash (str): hash (or hash prefix) to look up - default (object or None): default value to return if dag_hash is - not in the DB (default: None) - installed (bool or InstallStatus or typing.Iterable or None): - if ``True``, includes only installed specs in the search; if ``False`` - only missing specs, and if ``any``, all specs in database. If an - InstallStatus or iterable of InstallStatus, returns specs whose install - status (installed, deprecated, or missing) matches (one of) the - InstallStatus. (default: any) - - ``installed`` defaults to ``any`` so that we can refer to any - known hash. Note that ``query()`` and ``query_one()`` differ in - that they only return installed specs by default. - - Returns: - (list): a list of specs matching the hash or hash prefix + Args: + dag_hash: hash (or hash prefix) to look up + default: default value to return if dag_hash is not in the DB + installed: if ``True``, includes only installed specs in the search; if ``False`` + only missing specs. Otherwise, a InstallRecordStatus flag. + + ``installed`` defaults to ``InstallRecordStatus.ANY`` so we can refer to any known hash. + ``query()`` and ``query_one()`` differ in that they only return installed specs by default. """ @@ -1483,7 +1455,7 @@ def _query( query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, *, predicate_fn: Optional[SelectType] = None, - installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + installed: Union[bool, InstallRecordStatus] = True, explicit: Optional[bool] = None, start_date: Optional[datetime.datetime] = None, end_date: Optional[datetime.datetime] = None, @@ -1491,6 +1463,7 @@ def _query( in_buildcache: Optional[bool] = None, origin: Optional[str] = None, ) -> List["spack.spec.Spec"]: + installed = normalize_query(installed) # Restrict the set of records over which we iterate first matching_hashes = self._data @@ -1560,7 +1533,7 @@ def query_local( query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, *, predicate_fn: Optional[SelectType] = None, - installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + installed: Union[bool, InstallRecordStatus] = True, explicit: Optional[bool] = None, start_date: Optional[datetime.datetime] = None, end_date: Optional[datetime.datetime] = None, @@ -1620,7 +1593,7 @@ def query( query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, *, predicate_fn: Optional[SelectType] = None, - installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + installed: Union[bool, InstallRecordStatus] = True, explicit: Optional[bool] = None, start_date: Optional[datetime.datetime] = None, end_date: Optional[datetime.datetime] = None, @@ -1628,7 +1601,7 @@ def query( hashes: Optional[List[str]] = None, origin: Optional[str] = None, install_tree: str = "all", - ): + ) -> List["spack.spec.Spec"]: """Queries the Spack database including all upstream databases. Args: @@ -1709,13 +1682,14 @@ def query( ) results = list(local_results) + list(x for x in upstream_results if x not in local_results) - return sorted(results) + results.sort() + return results def query_one( self, query_spec: Optional[Union[str, "spack.spec.Spec"]], predicate_fn: Optional[SelectType] = None, - installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + installed: Union[bool, InstallRecordStatus] = True, ) -> Optional["spack.spec.Spec"]: """Query for exactly one spec that matches the query spec. diff --git a/lib/spack/spack/enums.py b/lib/spack/spack/enums.py new file mode 100644 index 00000000000000..7df7ab5a42340e --- /dev/null +++ b/lib/spack/spack/enums.py @@ -0,0 +1,15 @@ +# 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) +"""Enumerations used throughout Spack""" +import enum + + +class InstallRecordStatus(enum.Flag): + """Enum flag to facilitate querying status from the DB""" + + INSTALLED = enum.auto() + DEPRECATED = enum.auto() + MISSING = enum.auto() + ANY = INSTALLED | DEPRECATED | MISSING diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 926f35a70451c2..1c5f96ee72172a 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -95,6 +95,8 @@ import spack.version as vn import spack.version.git_ref_lookup +from .enums import InstallRecordStatus + __all__ = [ "CompilerSpec", "Spec", @@ -2071,7 +2073,7 @@ def _lookup_hash(self): # First env, then store, then binary cache matches = ( (active_env.all_matching_specs(self) if active_env else []) - or spack.store.STORE.db.query(self, installed=any) + or spack.store.STORE.db.query(self, installed=InstallRecordStatus.ANY) or spack.binary_distribution.BinaryCacheQuery(True)(self) ) diff --git a/lib/spack/spack/test/cmd/deprecate.py b/lib/spack/spack/test/cmd/deprecate.py index 3bb84fce7d8ef3..89e07bd04bb84e 100644 --- a/lib/spack/spack/test/cmd/deprecate.py +++ b/lib/spack/spack/test/cmd/deprecate.py @@ -7,7 +7,7 @@ import spack.spec import spack.store -from spack.database import InstallStatuses +from spack.enums import InstallRecordStatus from spack.main import SpackCommand install = SpackCommand("install") @@ -26,7 +26,7 @@ def test_deprecate(mock_packages, mock_archive, mock_fetch, install_mockery): deprecate("-y", "libelf@0.8.10", "libelf@0.8.13") non_deprecated = spack.store.STORE.db.query() - all_available = spack.store.STORE.db.query(installed=any) + all_available = spack.store.STORE.db.query(installed=InstallRecordStatus.ANY) assert all_available == all_installed assert non_deprecated == spack.store.STORE.db.query("libelf@0.8.13") @@ -56,7 +56,7 @@ def test_deprecate_install(mock_packages, mock_archive, mock_fetch, install_mock deprecate("-y", "-i", "libelf@0.8.10", "libelf@0.8.13") non_deprecated = spack.store.STORE.db.query() - deprecated = spack.store.STORE.db.query(installed=InstallStatuses.DEPRECATED) + deprecated = spack.store.STORE.db.query(installed=InstallRecordStatus.DEPRECATED) assert deprecated == to_deprecate assert len(non_deprecated) == 1 assert non_deprecated[0].satisfies("libelf@0.8.13") @@ -75,8 +75,8 @@ def test_deprecate_deps(mock_packages, mock_archive, mock_fetch, install_mockery deprecate("-y", "-d", "libdwarf@20130207", "libdwarf@20130729") non_deprecated = spack.store.STORE.db.query() - all_available = spack.store.STORE.db.query(installed=any) - deprecated = spack.store.STORE.db.query(installed=InstallStatuses.DEPRECATED) + all_available = spack.store.STORE.db.query(installed=InstallRecordStatus.ANY) + deprecated = spack.store.STORE.db.query(installed=InstallRecordStatus.DEPRECATED) assert all_available == all_installed assert sorted(all_available) == sorted(deprecated + non_deprecated) @@ -96,7 +96,9 @@ def test_uninstall_deprecated(mock_packages, mock_archive, mock_fetch, install_m uninstall("-y", "libelf@0.8.10") - assert spack.store.STORE.db.query() == spack.store.STORE.db.query(installed=any) + assert spack.store.STORE.db.query() == spack.store.STORE.db.query( + installed=InstallRecordStatus.ANY + ) assert spack.store.STORE.db.query() == non_deprecated @@ -116,7 +118,7 @@ def test_deprecate_already_deprecated(mock_packages, mock_archive, mock_fetch, i deprecate("-y", "libelf@0.8.10", "libelf@0.8.13") non_deprecated = spack.store.STORE.db.query() - all_available = spack.store.STORE.db.query(installed=any) + all_available = spack.store.STORE.db.query(installed=InstallRecordStatus.ANY) assert len(non_deprecated) == 2 assert len(all_available) == 3 @@ -143,7 +145,7 @@ def test_deprecate_deprecator(mock_packages, mock_archive, mock_fetch, install_m deprecate("-y", "libelf@0.8.12", "libelf@0.8.13") non_deprecated = spack.store.STORE.db.query() - all_available = spack.store.STORE.db.query(installed=any) + all_available = spack.store.STORE.db.query(installed=InstallRecordStatus.ANY) assert len(non_deprecated) == 1 assert len(all_available) == 3 diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index 779c6a942f0f21..5398dff46918d4 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -17,6 +17,7 @@ import spack.repo import spack.store import spack.user_environment as uenv +from spack.enums import InstallRecordStatus from spack.main import SpackCommand from spack.spec import Spec from spack.test.conftest import create_test_repo @@ -75,7 +76,7 @@ def test_query_arguments(): assert "installed" in q_args assert "predicate_fn" in q_args assert "explicit" in q_args - assert q_args["installed"] == ["installed"] + assert q_args["installed"] == InstallRecordStatus.INSTALLED assert q_args["predicate_fn"] is None assert q_args["explicit"] is None assert "start_date" in q_args diff --git a/lib/spack/spack/test/cmd/reindex.py b/lib/spack/spack/test/cmd/reindex.py index abaaf4530c0ca7..a7d6d8fda0e195 100644 --- a/lib/spack/spack/test/cmd/reindex.py +++ b/lib/spack/spack/test/cmd/reindex.py @@ -6,6 +6,7 @@ import spack.store from spack.database import Database +from spack.enums import InstallRecordStatus from spack.main import SpackCommand install = SpackCommand("install") @@ -57,18 +58,18 @@ def test_reindex_with_deprecated_packages( db = spack.store.STORE.db - all_installed = db.query(installed=any) + all_installed = db.query(installed=InstallRecordStatus.ANY) non_deprecated = db.query(installed=True) _clear_db(tmp_path) reindex() - assert db.query(installed=any) == all_installed + assert db.query(installed=InstallRecordStatus.ANY) == all_installed assert db.query(installed=True) == non_deprecated old_libelf = db.query_local_by_spec_hash( - db.query_local("libelf@0.8.12", installed=any)[0].dag_hash() + db.query_local("libelf@0.8.12", installed=InstallRecordStatus.ANY)[0].dag_hash() ) new_libelf = db.query_local_by_spec_hash( db.query_local("libelf@0.8.13", installed=True)[0].dag_hash() diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py index 35b6a15455aa04..6ac74b8abc6364 100644 --- a/lib/spack/spack/test/cmd/uninstall.py +++ b/lib/spack/spack/test/cmd/uninstall.py @@ -11,6 +11,7 @@ import spack.cmd.uninstall import spack.environment import spack.store +from spack.enums import InstallRecordStatus from spack.main import SpackCommand, SpackCommandError uninstall = SpackCommand("uninstall") @@ -129,10 +130,10 @@ def validate_callpath_spec(installed): specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=installed) assert len(specs) == 1 and specs[0] == callpath_spec - specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=any) + specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=InstallRecordStatus.ANY) assert len(specs) == 1 and specs[0] == callpath_spec - specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=any) + specs = spack.store.STORE.db.get_by_hash(dag_hash[:7], installed=InstallRecordStatus.ANY) assert len(specs) == 1 and specs[0] == callpath_spec specs = spack.store.STORE.db.get_by_hash(dag_hash, installed=not installed) @@ -147,7 +148,7 @@ def validate_callpath_spec(installed): spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=installed) assert spec == callpath_spec - spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=any) + spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=InstallRecordStatus.ANY) assert spec == callpath_spec spec = spack.store.STORE.db.query_one("callpath ^mpich", installed=not installed) diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 3049e543986030..07cbe3dd81fd7e 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -34,6 +34,7 @@ import spack.spec import spack.store import spack.version as vn +from spack.enums import InstallRecordStatus from spack.installer import PackageInstaller from spack.schema.database_index import schema from spack.util.executable import Executable @@ -292,7 +293,7 @@ def _print_ref_counts(): recs = [] def add_rec(spec): - cspecs = spack.store.STORE.db.query(spec, installed=any) + cspecs = spack.store.STORE.db.query(spec, installed=InstallRecordStatus.ANY) if not cspecs: recs.append("[ %-7s ] %-20s-" % ("", spec)) @@ -324,7 +325,7 @@ def add_rec(spec): def _check_merkleiness(): """Ensure the spack database is a valid merkle graph.""" - all_specs = spack.store.STORE.db.query(installed=any) + all_specs = spack.store.STORE.db.query(installed=InstallRecordStatus.ANY) seen = {} for spec in all_specs: @@ -617,7 +618,7 @@ def test_080_root_ref_counts(mutable_database): mutable_database.remove("mpileaks ^mpich") # record no longer in DB - assert mutable_database.query("mpileaks ^mpich", installed=any) == [] + assert mutable_database.query("mpileaks ^mpich", installed=InstallRecordStatus.ANY) == [] # record's deps have updated ref_counts assert mutable_database.get_record("callpath ^mpich").ref_count == 0 @@ -627,7 +628,7 @@ def test_080_root_ref_counts(mutable_database): mutable_database.add(rec.spec) # record is present again - assert len(mutable_database.query("mpileaks ^mpich", installed=any)) == 1 + assert len(mutable_database.query("mpileaks ^mpich", installed=InstallRecordStatus.ANY)) == 1 # dependencies have ref counts updated assert mutable_database.get_record("callpath ^mpich").ref_count == 1 @@ -643,18 +644,21 @@ def test_090_non_root_ref_counts(mutable_database): # record still in DB but marked uninstalled assert mutable_database.query("callpath ^mpich", installed=True) == [] - assert len(mutable_database.query("callpath ^mpich", installed=any)) == 1 + assert len(mutable_database.query("callpath ^mpich", installed=InstallRecordStatus.ANY)) == 1 # record and its deps have same ref_counts - assert mutable_database.get_record("callpath ^mpich", installed=any).ref_count == 1 + assert ( + mutable_database.get_record("callpath ^mpich", installed=InstallRecordStatus.ANY).ref_count + == 1 + ) assert mutable_database.get_record("mpich").ref_count == 2 # remove only dependent of uninstalled callpath record mutable_database.remove("mpileaks ^mpich") # record and parent are completely gone. - assert mutable_database.query("mpileaks ^mpich", installed=any) == [] - assert mutable_database.query("callpath ^mpich", installed=any) == [] + assert mutable_database.query("mpileaks ^mpich", installed=InstallRecordStatus.ANY) == [] + assert mutable_database.query("callpath ^mpich", installed=InstallRecordStatus.ANY) == [] # mpich ref count updated properly. mpich_rec = mutable_database.get_record("mpich") @@ -668,14 +672,14 @@ def fail_while_writing(): raise Exception() with database.read_transaction(): - assert len(database.query("mpileaks ^zmpi", installed=any)) == 1 + assert len(database.query("mpileaks ^zmpi", installed=InstallRecordStatus.ANY)) == 1 with pytest.raises(Exception): fail_while_writing() # reload DB and make sure zmpi is still there. with database.read_transaction(): - assert len(database.query("mpileaks ^zmpi", installed=any)) == 1 + assert len(database.query("mpileaks ^zmpi", installed=InstallRecordStatus.ANY)) == 1 def test_110_no_write_with_exception_on_install(database): @@ -685,14 +689,14 @@ def fail_while_writing(): raise Exception() with database.read_transaction(): - assert database.query("cmake", installed=any) == [] + assert database.query("cmake", installed=InstallRecordStatus.ANY) == [] with pytest.raises(Exception): fail_while_writing() # reload DB and make sure cmake was not written. with database.read_transaction(): - assert database.query("cmake", installed=any) == [] + assert database.query("cmake", installed=InstallRecordStatus.ANY) == [] def test_115_reindex_with_packages_not_in_repo(mutable_database, tmpdir): diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 706fb7e2d59348..b9b4fd2d7a4360 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1206,7 +1206,7 @@ _spack_fetch() { _spack_find() { if $list_options then - SPACK_COMPREPLY="-h --help --format -H --hashes --json -I --install-status -d --deps -p --paths --groups --no-groups -l --long -L --very-long -t --tag -N --namespaces -r --only-roots -c --show-concretized -f --show-flags --show-full-compiler -x --explicit -X --implicit -u --unknown -m --missing -v --variants --loaded -M --only-missing --deprecated --only-deprecated --install-tree --start-date --end-date" + SPACK_COMPREPLY="-h --help --format -H --hashes --json -I --install-status -d --deps -p --paths --groups --no-groups -l --long -L --very-long -t --tag -N --namespaces -r --only-roots -c --show-concretized -f --show-flags --show-full-compiler -x --explicit -X --implicit -u --unknown -m --missing -v --variants --loaded -M --only-missing --only-deprecated --deprecated --install-tree --start-date --end-date" else _installed_packages fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 52153f01c0e05e..385361389a5ff7 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -1776,7 +1776,7 @@ complete -c spack -n '__fish_spack_using_command fetch' -l deprecated -f -a conf complete -c spack -n '__fish_spack_using_command fetch' -l deprecated -d 'allow concretizer to select deprecated versions' # spack find -set -g __fish_spack_optspecs_spack_find h/help format= H/hashes json I/install-status d/deps p/paths groups no-groups l/long L/very-long t/tag= N/namespaces r/only-roots c/show-concretized f/show-flags show-full-compiler x/explicit X/implicit u/unknown m/missing v/variants loaded M/only-missing deprecated only-deprecated install-tree= start-date= end-date= +set -g __fish_spack_optspecs_spack_find h/help format= H/hashes json I/install-status d/deps p/paths groups no-groups l/long L/very-long t/tag= N/namespaces r/only-roots c/show-concretized f/show-flags show-full-compiler x/explicit X/implicit u/unknown m/missing v/variants loaded M/only-missing only-deprecated deprecated install-tree= start-date= end-date= complete -c spack -n '__fish_spack_using_command_pos_remainder 0 find' -f -a '(__fish_spack_installed_specs)' complete -c spack -n '__fish_spack_using_command find' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command find' -s h -l help -d 'show this help message and exit' @@ -1826,10 +1826,10 @@ complete -c spack -n '__fish_spack_using_command find' -l loaded -f -a loaded complete -c spack -n '__fish_spack_using_command find' -l loaded -d 'show only packages loaded in the user environment' complete -c spack -n '__fish_spack_using_command find' -s M -l only-missing -f -a only_missing complete -c spack -n '__fish_spack_using_command find' -s M -l only-missing -d 'show only missing dependencies' -complete -c spack -n '__fish_spack_using_command find' -l deprecated -f -a deprecated -complete -c spack -n '__fish_spack_using_command find' -l deprecated -d 'show deprecated packages as well as installed specs' complete -c spack -n '__fish_spack_using_command find' -l only-deprecated -f -a only_deprecated complete -c spack -n '__fish_spack_using_command find' -l only-deprecated -d 'show only deprecated packages' +complete -c spack -n '__fish_spack_using_command find' -l deprecated -f -a deprecated +complete -c spack -n '__fish_spack_using_command find' -l deprecated -d 'show deprecated packages as well as installed specs' complete -c spack -n '__fish_spack_using_command find' -l install-tree -r -f -a install_tree complete -c spack -n '__fish_spack_using_command find' -l install-tree -r -d 'Install trees to query: '"'"'all'"'"' (default), '"'"'local'"'"', '"'"'upstream'"'"', upstream name or path' complete -c spack -n '__fish_spack_using_command find' -l start-date -r -f -a start_date From 9888683a21c5f0ec0301c6e06d32d9c8204d0592 Mon Sep 17 00:00:00 2001 From: Dominic Hofer <6570912+dominichofer@users.noreply.github.com> Date: Thu, 14 Nov 2024 19:57:59 +0100 Subject: [PATCH 460/615] eccodes: add v2.38.0 (#47581) * eccodes: Add 2.38.0 * Update var/spack/repos/builtin/packages/eccodes/package.py --- var/spack/repos/builtin/packages/eccodes/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index d05aeaa4873dbe..fc8f89f71a28cd 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -50,6 +50,7 @@ class Eccodes(CMakePackage): license("Apache-2.0") version("develop", branch="develop") + version("2.38.0", sha256="96a21fbe8ca3aa4c31bb71bbd378b7fd130cbc0f7a477567d70e66a000ff68d9") version("2.34.0", sha256="3cd208c8ddad132789662cf8f67a9405514bfefcacac403c0d8c84507f303aba") version("2.33.0", sha256="bdcec8ce63654ec6803400c507f01220a9aa403a45fa6b5bdff7fdcc44fd7daf") version("2.32.1", sha256="ad2ac1bf36577b1d35c4a771b4d174a06f522a1e5ef6c1f5e53a795fb624863e") From 9b2cd1b2084b5869eaa089e32af5a57b67f87d71 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Thu, 14 Nov 2024 14:01:21 -0500 Subject: [PATCH 461/615] yyjson: new package (#47563) * yyjson: new package * [@spackbot] updating style on behalf of pranav-sivaraman --------- Co-authored-by: pranav-sivaraman --- .../repos/builtin/packages/yyjson/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/yyjson/package.py diff --git a/var/spack/repos/builtin/packages/yyjson/package.py b/var/spack/repos/builtin/packages/yyjson/package.py new file mode 100644 index 00000000000000..d15bd851171412 --- /dev/null +++ b/var/spack/repos/builtin/packages/yyjson/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class Yyjson(CMakePackage): + """The fastest JSON library in C""" + + homepage = "https://ibireme.github.io/yyjson/doc/doxygen/html/" + url = "https://github.com/ibireme/yyjson/archive/refs/tags/0.10.0.tar.gz" + + license("MIT", checked_by="pranav-sivaraman") + + version("0.10.0", sha256="0d901cb2c45c5586e3f3a4245e58c2252d6b24bf4b402723f6179523d389b165") + + depends_on("c", type="build") + depends_on("cxx", type="build") # TODO: test only dependency, but does not work + + def cmake_args(self): + return [self.define("YYJSON_BUILD_TESTS", self.run_tests)] From 66622ec4d0903123de65974516ba7e5480206be1 Mon Sep 17 00:00:00 2001 From: etiennemlb Date: Fri, 15 Nov 2024 07:47:23 +0100 Subject: [PATCH 462/615] py-easybuild-framework: add python forward compat bound (#47597) --- .../repos/builtin/packages/py-easybuild-framework/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py index 7f18df00f3a460..233009c960a598 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py @@ -21,4 +21,6 @@ class PyEasybuildFramework(PythonPackage): version("4.0.0", sha256="f5c40345cc8b9b5750f53263ade6c9c3a8cd3dfab488d58f76ac61a8ca7c5a77") depends_on("python@3.5:", type=("build", "run")) + # https://github.com/easybuilders/easybuild-framework/issues/3963 + depends_on("python@:3.11", type=("build", "run"), when="@:4") depends_on("py-setuptools", type=("build", "run")) From b7993317ea8e9319d1b02a901fbfe58447faf910 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 15 Nov 2024 09:13:10 +0100 Subject: [PATCH 463/615] Improve type hints for package API (#47576) by disentangling `package_base`, `builder` and `directives`. --- lib/spack/docs/conf.py | 2 +- lib/spack/docs/packaging_guide.rst | 4 +- lib/spack/spack/build_environment.py | 3 +- lib/spack/spack/build_systems/_checks.py | 11 +- lib/spack/spack/build_systems/autotools.py | 251 ++++++------ lib/spack/spack/build_systems/cached_cmake.py | 4 +- lib/spack/spack/build_systems/cargo.py | 7 +- lib/spack/spack/build_systems/cmake.py | 367 ++++++++++-------- lib/spack/spack/build_systems/generic.py | 9 +- lib/spack/spack/build_systems/go.py | 7 +- lib/spack/spack/build_systems/intel.py | 16 +- lib/spack/spack/build_systems/makefile.py | 40 +- lib/spack/spack/build_systems/maven.py | 4 +- lib/spack/spack/build_systems/meson.py | 40 +- lib/spack/spack/build_systems/msbuild.py | 4 +- lib/spack/spack/build_systems/nmake.py | 4 +- lib/spack/spack/build_systems/octave.py | 4 +- lib/spack/spack/build_systems/perl.py | 9 +- lib/spack/spack/build_systems/python.py | 9 +- lib/spack/spack/build_systems/qmake.py | 7 +- lib/spack/spack/build_systems/ruby.py | 4 +- lib/spack/spack/build_systems/scons.py | 7 +- lib/spack/spack/build_systems/sip.py | 7 +- lib/spack/spack/build_systems/waf.py | 9 +- lib/spack/spack/builder.py | 304 ++++++--------- lib/spack/spack/ci.py | 7 +- lib/spack/spack/cmd/info.py | 7 +- lib/spack/spack/directives.py | 45 +-- lib/spack/spack/install_test.py | 5 +- lib/spack/spack/installer.py | 6 +- lib/spack/spack/mirror.py | 1 + lib/spack/spack/mixins.py | 4 +- lib/spack/spack/package.py | 3 +- lib/spack/spack/package_base.py | 182 ++++----- lib/spack/spack/phase_callbacks.py | 105 +++++ lib/spack/spack/test/build_systems.py | 15 +- lib/spack/spack/test/conftest.py | 4 +- .../packages/builder-and-mixins/package.py | 4 +- .../packages/py-test-callback/package.py | 6 +- .../repos/builtin/packages/adios2/package.py | 5 +- .../repos/builtin/packages/assimp/package.py | 2 +- .../repos/builtin/packages/bacio/package.py | 2 +- .../repos/builtin/packages/blaspp/package.py | 4 +- .../repos/builtin/packages/boost/package.py | 12 - .../repos/builtin/packages/bufr/package.py | 2 +- .../repos/builtin/packages/g2/package.py | 2 +- .../repos/builtin/packages/g2c/package.py | 2 +- .../repos/builtin/packages/g2tmpl/package.py | 2 +- .../repos/builtin/packages/gfsio/package.py | 2 +- .../repos/builtin/packages/glib/package.py | 6 +- .../builtin/packages/grib-util/package.py | 2 +- .../repos/builtin/packages/hipblas/package.py | 4 +- .../builtin/packages/hipsolver/package.py | 2 +- .../repos/builtin/packages/ip/package.py | 2 +- .../builtin/packages/landsfcutil/package.py | 2 +- .../builtin/packages/lapackpp/package.py | 4 +- .../builtin/packages/lc-framework/package.py | 3 +- .../repos/builtin/packages/libxml2/package.py | 7 +- .../repos/builtin/packages/mapl/package.py | 2 +- .../repos/builtin/packages/mercury/package.py | 2 +- .../repos/builtin/packages/ncio/package.py | 2 +- .../repos/builtin/packages/nemsio/package.py | 2 +- .../builtin/packages/nemsiogfs/package.py | 2 +- .../builtin/packages/netcdf-c/package.py | 9 +- .../builtin/packages/nimrod-aai/package.py | 2 +- .../builtin/packages/prod-util/package.py | 2 +- .../repos/builtin/packages/proj/package.py | 7 +- .../repos/builtin/packages/raja/package.py | 2 +- .../builtin/packages/rocthrust/package.py | 2 +- .../repos/builtin/packages/sfcio/package.py | 2 +- .../repos/builtin/packages/sigio/package.py | 2 +- .../repos/builtin/packages/sp/package.py | 2 +- .../builtin/packages/strumpack/package.py | 2 +- .../builtin/packages/sundials/package.py | 2 +- .../repos/builtin/packages/superlu/package.py | 6 +- .../repos/builtin/packages/tcl/package.py | 40 +- .../repos/builtin/packages/vtk-m/package.py | 5 +- .../repos/builtin/packages/w3emc/package.py | 2 +- .../builtin/packages/xsdk-examples/package.py | 2 +- 79 files changed, 897 insertions(+), 796 deletions(-) create mode 100644 lib/spack/spack/phase_callbacks.py diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 4d8592ffd930da..688554fac6da13 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -210,7 +210,7 @@ def setup(sphinx): # Spack classes that are private and we don't want to expose ("py:class", "spack.provider_index._IndexBase"), ("py:class", "spack.repo._PrependFileLoader"), - ("py:class", "spack.build_systems._checks.BaseBuilder"), + ("py:class", "spack.build_systems._checks.BuilderWithDefaults"), # Spack classes that intersphinx is unable to resolve ("py:class", "spack.version.StandardVersion"), ("py:class", "spack.spec.DependencySpec"), diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 9b3c2829f7a272..a7564c2b039db4 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2925,9 +2925,9 @@ make sense during the build phase may not be needed at runtime, and vice versa. it makes sense to let a dependency set the environment variables for its dependents. To allow all this, Spack provides four different methods that can be overridden in a package: -1. :meth:`setup_build_environment ` +1. :meth:`setup_build_environment ` 2. :meth:`setup_run_environment ` -3. :meth:`setup_dependent_build_environment ` +3. :meth:`setup_dependent_build_environment ` 4. :meth:`setup_dependent_run_environment ` The Qt package, for instance, uses this call: diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 33586eccde2974..3a4f8b3fa941bf 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -56,7 +56,6 @@ from llnl.util.symlink import symlink from llnl.util.tty.color import cescape, colorize -import spack.build_systems._checks import spack.build_systems.cmake import spack.build_systems.meson import spack.build_systems.python @@ -1375,7 +1374,7 @@ def exitcode_msg(p): return child_result -CONTEXT_BASES = (spack.package_base.PackageBase, spack.build_systems._checks.BaseBuilder) +CONTEXT_BASES = (spack.package_base.PackageBase, spack.builder.Builder) def get_package_context(traceback, context=3): diff --git a/lib/spack/spack/build_systems/_checks.py b/lib/spack/spack/build_systems/_checks.py index e15409fc38d80d..2c88f15e2bf593 100644 --- a/lib/spack/spack/build_systems/_checks.py +++ b/lib/spack/spack/build_systems/_checks.py @@ -9,6 +9,7 @@ import spack.builder import spack.error +import spack.phase_callbacks import spack.relocate import spack.spec import spack.store @@ -63,7 +64,7 @@ def apply_macos_rpath_fixups(builder: spack.builder.Builder): def ensure_build_dependencies_or_raise( - spec: spack.spec.Spec, dependencies: List[spack.spec.Spec], error_msg: str + spec: spack.spec.Spec, dependencies: List[str], error_msg: str ): """Ensure that some build dependencies are present in the concrete spec. @@ -71,7 +72,7 @@ def ensure_build_dependencies_or_raise( Args: spec: concrete spec to be checked. - dependencies: list of abstract specs to be satisfied + dependencies: list of package names of required build dependencies error_msg: brief error message to be prepended to a longer description Raises: @@ -127,8 +128,8 @@ def execute_install_time_tests(builder: spack.builder.Builder): builder.pkg.tester.phase_tests(builder, "install", builder.install_time_test_callbacks) -class BaseBuilder(spack.builder.Builder): - """Base class for builders to register common checks""" +class BuilderWithDefaults(spack.builder.Builder): + """Base class for all specific builders with common callbacks registered.""" # Check that self.prefix is there after installation - spack.builder.run_after("install")(sanity_check_prefix) + spack.phase_callbacks.run_after("install")(sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 47911271fef860..aad8a6ffb107fb 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -6,7 +6,7 @@ import os.path import stat import subprocess -from typing import List +from typing import Callable, List, Optional, Set, Tuple, Union import llnl.util.filesystem as fs import llnl.util.tty as tty @@ -15,6 +15,9 @@ import spack.builder import spack.error import spack.package_base +import spack.phase_callbacks +import spack.spec +import spack.util.prefix from spack.directives import build_system, conflicts, depends_on from spack.multimethod import when from spack.operating_systems.mac_os import macos_version @@ -22,7 +25,7 @@ from spack.version import Version from ._checks import ( - BaseBuilder, + BuilderWithDefaults, apply_macos_rpath_fixups, ensure_build_dependencies_or_raise, execute_build_time_tests, @@ -69,14 +72,14 @@ def flags_to_build_system_args(self, flags): # Legacy methods (used by too many packages to change them, # need to forward to the builder) def enable_or_disable(self, *args, **kwargs): - return self.builder.enable_or_disable(*args, **kwargs) + return spack.builder.create(self).enable_or_disable(*args, **kwargs) def with_or_without(self, *args, **kwargs): - return self.builder.with_or_without(*args, **kwargs) + return spack.builder.create(self).with_or_without(*args, **kwargs) @spack.builder.builder("autotools") -class AutotoolsBuilder(BaseBuilder): +class AutotoolsBuilder(BuilderWithDefaults): """The autotools builder encodes the default way of installing software built with autotools. It has four phases that can be overridden, if need be: @@ -157,7 +160,7 @@ class AutotoolsBuilder(BaseBuilder): install_libtool_archives = False @property - def patch_config_files(self): + def patch_config_files(self) -> bool: """Whether to update old ``config.guess`` and ``config.sub`` files distributed with the tarball. @@ -177,7 +180,7 @@ def patch_config_files(self): ) @property - def _removed_la_files_log(self): + def _removed_la_files_log(self) -> str: """File containing the list of removed libtool archives""" build_dir = self.build_directory if not os.path.isabs(self.build_directory): @@ -185,15 +188,15 @@ def _removed_la_files_log(self): return os.path.join(build_dir, "removed_la_files.txt") @property - def archive_files(self): + def archive_files(self) -> List[str]: """Files to archive for packages based on autotools""" files = [os.path.join(self.build_directory, "config.log")] if not self.install_libtool_archives: files.append(self._removed_la_files_log) return files - @spack.builder.run_after("autoreconf") - def _do_patch_config_files(self): + @spack.phase_callbacks.run_after("autoreconf") + def _do_patch_config_files(self) -> None: """Some packages ship with older config.guess/config.sub files and need to have these updated when installed on a newer architecture. @@ -294,7 +297,7 @@ def runs_ok(script_abs_path): and set the prefix to the directory containing the `config.guess` and `config.sub` files. """ - raise spack.error.InstallError(msg.format(", ".join(to_be_found), self.name)) + raise spack.error.InstallError(msg.format(", ".join(to_be_found), self.pkg.name)) # Copy the good files over the bad ones for abs_path in to_be_patched: @@ -304,8 +307,8 @@ def runs_ok(script_abs_path): fs.copy(substitutes[name], abs_path) os.chmod(abs_path, mode) - @spack.builder.run_before("configure") - def _patch_usr_bin_file(self): + @spack.phase_callbacks.run_before("configure") + def _patch_usr_bin_file(self) -> None: """On NixOS file is not available in /usr/bin/file. Patch configure scripts to use file from path.""" @@ -316,8 +319,8 @@ def _patch_usr_bin_file(self): with fs.keep_modification_time(*x.filenames): x.filter(regex="/usr/bin/file", repl="file", string=True) - @spack.builder.run_before("configure") - def _set_autotools_environment_variables(self): + @spack.phase_callbacks.run_before("configure") + def _set_autotools_environment_variables(self) -> None: """Many autotools builds use a version of mknod.m4 that fails when running as root unless FORCE_UNSAFE_CONFIGURE is set to 1. @@ -330,8 +333,8 @@ def _set_autotools_environment_variables(self): """ os.environ["FORCE_UNSAFE_CONFIGURE"] = "1" - @spack.builder.run_before("configure") - def _do_patch_libtool_configure(self): + @spack.phase_callbacks.run_before("configure") + def _do_patch_libtool_configure(self) -> None: """Patch bugs that propagate from libtool macros into "configure" and further into "libtool". Note that patches that can be fixed by patching "libtool" directly should be implemented in the _do_patch_libtool method @@ -358,8 +361,8 @@ def _do_patch_libtool_configure(self): # Support Libtool 2.4.2 and older: x.filter(regex=r'^(\s*test \$p = "-R")(; then\s*)$', repl=r'\1 || test x-l = x"$p"\2') - @spack.builder.run_after("configure") - def _do_patch_libtool(self): + @spack.phase_callbacks.run_after("configure") + def _do_patch_libtool(self) -> None: """If configure generates a "libtool" script that does not correctly detect the compiler (and patch_libtool is set), patch in the correct values for libtool variables. @@ -507,63 +510,36 @@ def _do_patch_libtool(self): ) @property - def configure_directory(self): + def configure_directory(self) -> str: """Return the directory where 'configure' resides.""" return self.pkg.stage.source_path @property - def configure_abs_path(self): + def configure_abs_path(self) -> str: # Absolute path to configure configure_abs_path = os.path.join(os.path.abspath(self.configure_directory), "configure") return configure_abs_path @property - def build_directory(self): + def build_directory(self) -> str: """Override to provide another place to build the package""" return self.configure_directory - @spack.builder.run_before("autoreconf") - def delete_configure_to_force_update(self): + @spack.phase_callbacks.run_before("autoreconf") + def delete_configure_to_force_update(self) -> None: if self.force_autoreconf: fs.force_remove(self.configure_abs_path) - def autoreconf(self, pkg, spec, prefix): - """Not needed usually, configure should be already there""" - - # If configure exists nothing needs to be done - if os.path.exists(self.configure_abs_path): - return - - # Else try to regenerate it, which requires a few build dependencies - ensure_build_dependencies_or_raise( - spec=spec, - dependencies=["autoconf", "automake", "libtool"], - error_msg="Cannot generate configure", - ) - - tty.msg("Configure script not found: trying to generate it") - tty.warn("*********************************************************") - tty.warn("* If the default procedure fails, consider implementing *") - tty.warn("* a custom AUTORECONF phase in the package *") - tty.warn("*********************************************************") - with fs.working_dir(self.configure_directory): - # This line is what is needed most of the time - # --install, --verbose, --force - autoreconf_args = ["-ivf"] - autoreconf_args += self.autoreconf_search_path_args - autoreconf_args += self.autoreconf_extra_args - self.pkg.module.autoreconf(*autoreconf_args) - @property - def autoreconf_search_path_args(self): + def autoreconf_search_path_args(self) -> List[str]: """Search path includes for autoreconf. Add an -I flag for all `aclocal` dirs of build deps, skips the default path of automake, move external include flags to the back, since they might pull in unrelated m4 files shadowing spack dependencies.""" return _autoreconf_search_path_args(self.spec) - @spack.builder.run_after("autoreconf") - def set_configure_or_die(self): + @spack.phase_callbacks.run_after("autoreconf") + def set_configure_or_die(self) -> None: """Ensure the presence of a "configure" script, or raise. If the "configure" is found, a module level attribute is set. @@ -580,13 +556,50 @@ def set_configure_or_die(self): globals_for_pkg.configure = Executable(self.configure_abs_path) globals_for_pkg.propagate_changes_to_mro() - def configure_args(self): + def configure_args(self) -> List[str]: """Return the list of all the arguments that must be passed to configure, except ``--prefix`` which will be pre-pended to the list. """ return [] - def configure(self, pkg, spec, prefix): + def autoreconf( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: + """Not needed usually, configure should be already there""" + + # If configure exists nothing needs to be done + if os.path.exists(self.configure_abs_path): + return + + # Else try to regenerate it, which requires a few build dependencies + ensure_build_dependencies_or_raise( + spec=spec, + dependencies=["autoconf", "automake", "libtool"], + error_msg="Cannot generate configure", + ) + + tty.msg("Configure script not found: trying to generate it") + tty.warn("*********************************************************") + tty.warn("* If the default procedure fails, consider implementing *") + tty.warn("* a custom AUTORECONF phase in the package *") + tty.warn("*********************************************************") + with fs.working_dir(self.configure_directory): + # This line is what is needed most of the time + # --install, --verbose, --force + autoreconf_args = ["-ivf"] + autoreconf_args += self.autoreconf_search_path_args + autoreconf_args += self.autoreconf_extra_args + self.pkg.module.autoreconf(*autoreconf_args) + + def configure( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run "configure", with the arguments specified by the builder and an appropriately set prefix. """ @@ -597,7 +610,12 @@ def configure(self, pkg, spec, prefix): with fs.working_dir(self.build_directory, create=True): pkg.module.configure(*options) - def build(self, pkg, spec, prefix): + def build( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run "make" on the build targets specified by the builder.""" # See https://autotools.io/automake/silent.html params = ["V=1"] @@ -605,41 +623,49 @@ def build(self, pkg, spec, prefix): with fs.working_dir(self.build_directory): pkg.module.make(*params) - def install(self, pkg, spec, prefix): + def install( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run "make" on the install targets specified by the builder.""" with fs.working_dir(self.build_directory): pkg.module.make(*self.install_targets) - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) - def check(self): + def check(self) -> None: """Run "make" on the ``test`` and ``check`` targets, if found.""" with fs.working_dir(self.build_directory): self.pkg._if_make_target_execute("test") self.pkg._if_make_target_execute("check") def _activate_or_not( - self, name, activation_word, deactivation_word, activation_value=None, variant=None - ): + self, + name: str, + activation_word: str, + deactivation_word: str, + activation_value: Optional[Union[Callable, str]] = None, + variant=None, + ) -> List[str]: """This function contain the current implementation details of :meth:`~spack.build_systems.autotools.AutotoolsBuilder.with_or_without` and :meth:`~spack.build_systems.autotools.AutotoolsBuilder.enable_or_disable`. Args: - name (str): name of the option that is being activated or not - activation_word (str): the default activation word ('with' in the - case of ``with_or_without``) - deactivation_word (str): the default deactivation word ('without' - in the case of ``with_or_without``) - activation_value (typing.Callable): callable that accepts a single - value. This value is either one of the allowed values for a - multi-valued variant or the name of a bool-valued variant. + name: name of the option that is being activated or not + activation_word: the default activation word ('with' in the case of + ``with_or_without``) + deactivation_word: the default deactivation word ('without' in the case of + ``with_or_without``) + activation_value: callable that accepts a single value. This value is either one of the + allowed values for a multi-valued variant or the name of a bool-valued variant. Returns the parameter to be used when the value is activated. - The special value 'prefix' can also be assigned and will return + The special value "prefix" can also be assigned and will return ``spec[name].prefix`` as activation parameter. - variant (str): name of the variant that is being processed - (if different from option name) + variant: name of the variant that is being processed (if different from option name) Examples: @@ -647,19 +673,19 @@ def _activate_or_not( .. code-block:: python - variant('foo', values=('x', 'y'), description='') - variant('bar', default=True, description='') - variant('ba_z', default=True, description='') + variant("foo", values=("x", "y"), description=") + variant("bar", default=True, description=") + variant("ba_z", default=True, description=") calling this function like: .. code-block:: python _activate_or_not( - 'foo', 'with', 'without', activation_value='prefix' + "foo", "with", "without", activation_value="prefix" ) - _activate_or_not('bar', 'with', 'without') - _activate_or_not('ba-z', 'with', 'without', variant='ba_z') + _activate_or_not("bar", "with", "without") + _activate_or_not("ba-z", "with", "without", variant="ba_z") will generate the following configuration options: @@ -679,8 +705,8 @@ def _activate_or_not( Raises: KeyError: if name is not among known variants """ - spec = self.pkg.spec - args = [] + spec: spack.spec.Spec = self.pkg.spec + args: List[str] = [] if activation_value == "prefix": activation_value = lambda x: spec[x].prefix @@ -698,7 +724,7 @@ def _activate_or_not( # Create a list of pairs. Each pair includes a configuration # option and whether or not that option is activated vdef = self.pkg.get_variant(variant) - if set(vdef.values) == set((True, False)): + if set(vdef.values) == set((True, False)): # type: ignore # BoolValuedVariant carry information about a single option. # Nonetheless, for uniformity of treatment we'll package them # in an iterable of one element. @@ -709,14 +735,12 @@ def _activate_or_not( # package's build system. It excludes values which have special # meanings and do not correspond to features (e.g. "none") feature_values = getattr(vdef.values, "feature_values", None) or vdef.values - options = [(value, f"{variant}={value}" in spec) for value in feature_values] + options = [(v, f"{variant}={v}" in spec) for v in feature_values] # type: ignore # For each allowed value in the list of values for option_value, activated in options: # Search for an override in the package for this value - override_name = "{0}_or_{1}_{2}".format( - activation_word, deactivation_word, option_value - ) + override_name = f"{activation_word}_or_{deactivation_word}_{option_value}" line_generator = getattr(self, override_name, None) or getattr( self.pkg, override_name, None ) @@ -725,19 +749,24 @@ def _activate_or_not( def _default_generator(is_activated): if is_activated: - line = "--{0}-{1}".format(activation_word, option_value) + line = f"--{activation_word}-{option_value}" if activation_value is not None and activation_value( option_value ): # NOQA=ignore=E501 - line += "={0}".format(activation_value(option_value)) + line = f"{line}={activation_value(option_value)}" return line - return "--{0}-{1}".format(deactivation_word, option_value) + return f"--{deactivation_word}-{option_value}" line_generator = _default_generator args.append(line_generator(activated)) return args - def with_or_without(self, name, activation_value=None, variant=None): + def with_or_without( + self, + name: str, + activation_value: Optional[Union[Callable, str]] = None, + variant: Optional[str] = None, + ) -> List[str]: """Inspects a variant and returns the arguments that activate or deactivate the selected feature(s) for the configure options. @@ -752,12 +781,11 @@ def with_or_without(self, name, activation_value=None, variant=None): ``variant=value`` is in the spec. Args: - name (str): name of a valid multi-valued variant - activation_value (typing.Callable): callable that accepts a single - value and returns the parameter to be used leading to an entry - of the type ``--with-{name}={parameter}``. + name: name of a valid multi-valued variant + activation_value: callable that accepts a single value and returns the parameter to be + used leading to an entry of the type ``--with-{name}={parameter}``. - The special value 'prefix' can also be assigned and will return + The special value "prefix" can also be assigned and will return ``spec[name].prefix`` as activation parameter. Returns: @@ -765,18 +793,22 @@ def with_or_without(self, name, activation_value=None, variant=None): """ return self._activate_or_not(name, "with", "without", activation_value, variant) - def enable_or_disable(self, name, activation_value=None, variant=None): + def enable_or_disable( + self, + name: str, + activation_value: Optional[Union[Callable, str]] = None, + variant: Optional[str] = None, + ) -> List[str]: """Same as :meth:`~spack.build_systems.autotools.AutotoolsBuilder.with_or_without` but substitute ``with`` with ``enable`` and ``without`` with ``disable``. Args: - name (str): name of a valid multi-valued variant - activation_value (typing.Callable): if present accepts a single value - and returns the parameter to be used leading to an entry of the - type ``--enable-{name}={parameter}`` + name: name of a valid multi-valued variant + activation_value: if present accepts a single value and returns the parameter to be + used leading to an entry of the type ``--enable-{name}={parameter}`` - The special value 'prefix' can also be assigned and will return + The special value "prefix" can also be assigned and will return ``spec[name].prefix`` as activation parameter. Returns: @@ -784,15 +816,15 @@ def enable_or_disable(self, name, activation_value=None, variant=None): """ return self._activate_or_not(name, "enable", "disable", activation_value, variant) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) - def installcheck(self): + def installcheck(self) -> None: """Run "make" on the ``installcheck`` target, if found.""" with fs.working_dir(self.build_directory): self.pkg._if_make_target_execute("installcheck") - @spack.builder.run_after("install") - def remove_libtool_archives(self): + @spack.phase_callbacks.run_after("install") + def remove_libtool_archives(self) -> None: """Remove all .la files in prefix sub-folders if the package sets ``install_libtool_archives`` to be False. """ @@ -814,12 +846,13 @@ def setup_build_environment(self, env): env.set("MACOSX_DEPLOYMENT_TARGET", "10.16") # On macOS, force rpaths for shared library IDs and remove duplicate rpaths - spack.builder.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) + spack.phase_callbacks.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) -def _autoreconf_search_path_args(spec): - dirs_seen = set() - flags_spack, flags_external = [], [] +def _autoreconf_search_path_args(spec: spack.spec.Spec) -> List[str]: + dirs_seen: Set[Tuple[int, int]] = set() + flags_spack: List[str] = [] + flags_external: List[str] = [] # We don't want to add an include flag for automake's default search path. for automake in spec.dependencies(name="automake", deptype="build"): diff --git a/lib/spack/spack/build_systems/cached_cmake.py b/lib/spack/spack/build_systems/cached_cmake.py index d9b415cbc76416..c22068e5ca354b 100644 --- a/lib/spack/spack/build_systems/cached_cmake.py +++ b/lib/spack/spack/build_systems/cached_cmake.py @@ -10,7 +10,7 @@ import llnl.util.filesystem as fs import llnl.util.tty as tty -import spack.builder +import spack.phase_callbacks from .cmake import CMakeBuilder, CMakePackage @@ -332,7 +332,7 @@ def std_cmake_args(self): args.extend(["-C", self.cache_path]) return args - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def install_cmake_cache(self): fs.mkdirp(self.pkg.spec.prefix.share.cmake) fs.install(self.cache_path, self.pkg.spec.prefix.share.cmake) diff --git a/lib/spack/spack/build_systems/cargo.py b/lib/spack/spack/build_systems/cargo.py index 4dded46559fb3a..a27ded465c8b86 100644 --- a/lib/spack/spack/build_systems/cargo.py +++ b/lib/spack/spack/build_systems/cargo.py @@ -7,10 +7,11 @@ import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, depends_on from spack.multimethod import when -from ._checks import BaseBuilder, execute_install_time_tests +from ._checks import BuilderWithDefaults, execute_install_time_tests class CargoPackage(spack.package_base.PackageBase): @@ -27,7 +28,7 @@ class CargoPackage(spack.package_base.PackageBase): @spack.builder.builder("cargo") -class CargoBuilder(BaseBuilder): +class CargoBuilder(BuilderWithDefaults): """The Cargo builder encodes the most common way of building software with a rust Cargo.toml file. It has two phases that can be overridden, if need be: @@ -77,7 +78,7 @@ def install(self, pkg, spec, prefix): with fs.working_dir(self.build_directory): fs.install_tree("out", prefix) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) def check(self): """Run "cargo test".""" diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index f6d346155c2632..dd1261c811c94d 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -9,7 +9,7 @@ import re import sys from itertools import chain -from typing import List, Optional, Set, Tuple +from typing import Any, List, Optional, Set, Tuple import llnl.util.filesystem as fs from llnl.util.lang import stable_partition @@ -18,11 +18,14 @@ import spack.deptypes as dt import spack.error import spack.package_base +import spack.phase_callbacks +import spack.spec +import spack.util.prefix from spack.directives import build_system, conflicts, depends_on, variant from spack.multimethod import when from spack.util.environment import filter_system_paths -from ._checks import BaseBuilder, execute_build_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests # Regex to extract the primary generator from the CMake generator # string. @@ -48,9 +51,9 @@ def _maybe_set_python_hints(pkg: spack.package_base.PackageBase, args: List[str] python_executable = pkg.spec["python"].command.path args.extend( [ - CMakeBuilder.define("PYTHON_EXECUTABLE", python_executable), - CMakeBuilder.define("Python_EXECUTABLE", python_executable), - CMakeBuilder.define("Python3_EXECUTABLE", python_executable), + define("PYTHON_EXECUTABLE", python_executable), + define("Python_EXECUTABLE", python_executable), + define("Python3_EXECUTABLE", python_executable), ] ) @@ -85,7 +88,7 @@ def _conditional_cmake_defaults(pkg: spack.package_base.PackageBase, args: List[ ipo = False if cmake.satisfies("@3.9:"): - args.append(CMakeBuilder.define("CMAKE_INTERPROCEDURAL_OPTIMIZATION", ipo)) + args.append(define("CMAKE_INTERPROCEDURAL_OPTIMIZATION", ipo)) # Disable Package Registry: export(PACKAGE) may put files in the user's home directory, and # find_package may search there. This is not what we want. @@ -93,30 +96,36 @@ def _conditional_cmake_defaults(pkg: spack.package_base.PackageBase, args: List[ # Do not populate CMake User Package Registry if cmake.satisfies("@3.15:"): # see https://cmake.org/cmake/help/latest/policy/CMP0090.html - args.append(CMakeBuilder.define("CMAKE_POLICY_DEFAULT_CMP0090", "NEW")) + args.append(define("CMAKE_POLICY_DEFAULT_CMP0090", "NEW")) elif cmake.satisfies("@3.1:"): # see https://cmake.org/cmake/help/latest/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.html - args.append(CMakeBuilder.define("CMAKE_EXPORT_NO_PACKAGE_REGISTRY", True)) + args.append(define("CMAKE_EXPORT_NO_PACKAGE_REGISTRY", True)) # Do not use CMake User/System Package Registry # https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#disabling-the-package-registry if cmake.satisfies("@3.16:"): - args.append(CMakeBuilder.define("CMAKE_FIND_USE_PACKAGE_REGISTRY", False)) + args.append(define("CMAKE_FIND_USE_PACKAGE_REGISTRY", False)) elif cmake.satisfies("@3.1:3.15"): - args.append(CMakeBuilder.define("CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY", False)) - args.append(CMakeBuilder.define("CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY", False)) + args.append(define("CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY", False)) + args.append(define("CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY", False)) # Export a compilation database if supported. if _supports_compilation_databases(pkg): - args.append(CMakeBuilder.define("CMAKE_EXPORT_COMPILE_COMMANDS", True)) + args.append(define("CMAKE_EXPORT_COMPILE_COMMANDS", True)) # Enable MACOSX_RPATH by default when cmake_minimum_required < 3 # https://cmake.org/cmake/help/latest/policy/CMP0042.html if pkg.spec.satisfies("platform=darwin") and cmake.satisfies("@3:"): - args.append(CMakeBuilder.define("CMAKE_POLICY_DEFAULT_CMP0042", "NEW")) + args.append(define("CMAKE_POLICY_DEFAULT_CMP0042", "NEW")) + # Disable find package's config mode for versions of Boost that + # didn't provide it. See https://github.com/spack/spack/issues/20169 + # and https://cmake.org/cmake/help/latest/module/FindBoost.html + if pkg.spec.satisfies("^boost@:1.69.0"): + args.append(define("Boost_NO_BOOST_CMAKE", True)) -def generator(*names: str, default: Optional[str] = None): + +def generator(*names: str, default: Optional[str] = None) -> None: """The build system generator to use. See ``cmake --help`` for a list of valid generators. @@ -263,15 +272,15 @@ def flags_to_build_system_args(self, flags): # Legacy methods (used by too many packages to change them, # need to forward to the builder) - def define(self, *args, **kwargs): - return self.builder.define(*args, **kwargs) + def define(self, cmake_var: str, value: Any) -> str: + return define(cmake_var, value) - def define_from_variant(self, *args, **kwargs): - return self.builder.define_from_variant(*args, **kwargs) + def define_from_variant(self, cmake_var: str, variant: Optional[str] = None) -> str: + return define_from_variant(self, cmake_var, variant) @spack.builder.builder("cmake") -class CMakeBuilder(BaseBuilder): +class CMakeBuilder(BuilderWithDefaults): """The cmake builder encodes the default way of building software with CMake. IT has three phases that can be overridden: @@ -321,15 +330,15 @@ class CMakeBuilder(BaseBuilder): build_time_test_callbacks = ["check"] @property - def archive_files(self): + def archive_files(self) -> List[str]: """Files to archive for packages based on CMake""" files = [os.path.join(self.build_directory, "CMakeCache.txt")] - if _supports_compilation_databases(self): + if _supports_compilation_databases(self.pkg): files.append(os.path.join(self.build_directory, "compile_commands.json")) return files @property - def root_cmakelists_dir(self): + def root_cmakelists_dir(self) -> str: """The relative path to the directory containing CMakeLists.txt This path is relative to the root of the extracted tarball, @@ -338,16 +347,17 @@ def root_cmakelists_dir(self): return self.pkg.stage.source_path @property - def generator(self): + def generator(self) -> str: if self.spec.satisfies("generator=make"): return "Unix Makefiles" if self.spec.satisfies("generator=ninja"): return "Ninja" - msg = f'{self.spec.format()} has an unsupported value for the "generator" variant' - raise ValueError(msg) + raise ValueError( + f'{self.spec.format()} has an unsupported value for the "generator" variant' + ) @property - def std_cmake_args(self): + def std_cmake_args(self) -> List[str]: """Standard cmake arguments provided as a property for convenience of package writers """ @@ -356,7 +366,9 @@ def std_cmake_args(self): return args @staticmethod - def std_args(pkg, generator=None): + def std_args( + pkg: spack.package_base.PackageBase, generator: Optional[str] = None + ) -> List[str]: """Computes the standard cmake arguments for a generic package""" default_generator = "Ninja" if sys.platform == "win32" else "Unix Makefiles" generator = generator or default_generator @@ -373,7 +385,6 @@ def std_args(pkg, generator=None): except KeyError: build_type = "RelWithDebInfo" - define = CMakeBuilder.define args = [ "-G", generator, @@ -405,152 +416,31 @@ def std_args(pkg, generator=None): return args @staticmethod - def define_cuda_architectures(pkg): - """Returns the str ``-DCMAKE_CUDA_ARCHITECTURES:STRING=(expanded cuda_arch)``. - - ``cuda_arch`` is variant composed of a list of target CUDA architectures and - it is declared in the cuda package. - - This method is no-op for cmake<3.18 and when ``cuda_arch`` variant is not set. - - """ - cmake_flag = str() - if "cuda_arch" in pkg.spec.variants and pkg.spec.satisfies("^cmake@3.18:"): - cmake_flag = CMakeBuilder.define( - "CMAKE_CUDA_ARCHITECTURES", pkg.spec.variants["cuda_arch"].value - ) - - return cmake_flag + def define_cuda_architectures(pkg: spack.package_base.PackageBase) -> str: + return define_cuda_architectures(pkg) @staticmethod - def define_hip_architectures(pkg): - """Returns the str ``-DCMAKE_HIP_ARCHITECTURES:STRING=(expanded amdgpu_target)``. - - ``amdgpu_target`` is variant composed of a list of the target HIP - architectures and it is declared in the rocm package. - - This method is no-op for cmake<3.18 and when ``amdgpu_target`` variant is - not set. - - """ - cmake_flag = str() - if "amdgpu_target" in pkg.spec.variants and pkg.spec.satisfies("^cmake@3.21:"): - cmake_flag = CMakeBuilder.define( - "CMAKE_HIP_ARCHITECTURES", pkg.spec.variants["amdgpu_target"].value - ) - - return cmake_flag + def define_hip_architectures(pkg: spack.package_base.PackageBase) -> str: + return define_hip_architectures(pkg) @staticmethod - def define(cmake_var, value): - """Return a CMake command line argument that defines a variable. - - The resulting argument will convert boolean values to OFF/ON - and lists/tuples to CMake semicolon-separated string lists. All other - values will be interpreted as strings. - - Examples: - - .. code-block:: python - - [define('BUILD_SHARED_LIBS', True), - define('CMAKE_CXX_STANDARD', 14), - define('swr', ['avx', 'avx2'])] - - will generate the following configuration options: - - .. code-block:: console - - ["-DBUILD_SHARED_LIBS:BOOL=ON", - "-DCMAKE_CXX_STANDARD:STRING=14", - "-DSWR:STRING=avx;avx2] - - """ - # Create a list of pairs. Each pair includes a configuration - # option and whether or not that option is activated - if isinstance(value, bool): - kind = "BOOL" - value = "ON" if value else "OFF" - else: - kind = "STRING" - if isinstance(value, collections.abc.Sequence) and not isinstance(value, str): - value = ";".join(str(v) for v in value) - else: - value = str(value) - - return "".join(["-D", cmake_var, ":", kind, "=", value]) - - def define_from_variant(self, cmake_var, variant=None): - """Return a CMake command line argument from the given variant's value. - - The optional ``variant`` argument defaults to the lower-case transform - of ``cmake_var``. - - This utility function is similar to - :meth:`~spack.build_systems.autotools.AutotoolsBuilder.with_or_without`. - - Examples: - - Given a package with: - - .. code-block:: python - - variant('cxxstd', default='11', values=('11', '14'), - multi=False, description='') - variant('shared', default=True, description='') - variant('swr', values=any_combination_of('avx', 'avx2'), - description='') - - calling this function like: - - .. code-block:: python - - [self.define_from_variant('BUILD_SHARED_LIBS', 'shared'), - self.define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'), - self.define_from_variant('SWR')] - - will generate the following configuration options: - - .. code-block:: console - - ["-DBUILD_SHARED_LIBS:BOOL=ON", - "-DCMAKE_CXX_STANDARD:STRING=14", - "-DSWR:STRING=avx;avx2] - - for `` cxxstd=14 +shared swr=avx,avx2`` - - Note: if the provided variant is conditional, and the condition is not met, - this function returns an empty string. CMake discards empty strings - provided on the command line. - """ - - if variant is None: - variant = cmake_var.lower() - - if not self.pkg.has_variant(variant): - raise KeyError('"{0}" is not a variant of "{1}"'.format(variant, self.pkg.name)) - - if variant not in self.pkg.spec.variants: - return "" - - value = self.pkg.spec.variants[variant].value - if isinstance(value, (tuple, list)): - # Sort multi-valued variants for reproducibility - value = sorted(value) + def define(cmake_var: str, value: Any) -> str: + return define(cmake_var, value) - return self.define(cmake_var, value) + def define_from_variant(self, cmake_var: str, variant: Optional[str] = None) -> str: + return define_from_variant(self.pkg, cmake_var, variant) @property - def build_dirname(self): + def build_dirname(self) -> str: """Directory name to use when building the package.""" - return "spack-build-%s" % self.pkg.spec.dag_hash(7) + return f"spack-build-{self.pkg.spec.dag_hash(7)}" @property - def build_directory(self): + def build_directory(self) -> str: """Full-path to the directory to use when building the package.""" return os.path.join(self.pkg.stage.path, self.build_dirname) - def cmake_args(self): + def cmake_args(self) -> List[str]: """List of all the arguments that must be passed to cmake, except: * CMAKE_INSTALL_PREFIX @@ -560,7 +450,12 @@ def cmake_args(self): """ return [] - def cmake(self, pkg, spec, prefix): + def cmake( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Runs ``cmake`` in the build directory""" # skip cmake phase if it is an incremental develop build @@ -575,7 +470,12 @@ def cmake(self, pkg, spec, prefix): with fs.working_dir(self.build_directory, create=True): pkg.module.cmake(*options) - def build(self, pkg, spec, prefix): + def build( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Make the build targets""" with fs.working_dir(self.build_directory): if self.generator == "Unix Makefiles": @@ -584,7 +484,12 @@ def build(self, pkg, spec, prefix): self.build_targets.append("-v") pkg.module.ninja(*self.build_targets) - def install(self, pkg, spec, prefix): + def install( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Make the install targets""" with fs.working_dir(self.build_directory): if self.generator == "Unix Makefiles": @@ -592,9 +497,9 @@ def install(self, pkg, spec, prefix): elif self.generator == "Ninja": pkg.module.ninja(*self.install_targets) - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) - def check(self): + def check(self) -> None: """Search the CMake-generated files for the targets ``test`` and ``check``, and runs them if found. """ @@ -605,3 +510,133 @@ def check(self): elif self.generator == "Ninja": self.pkg._if_ninja_target_execute("test", jobs_env="CTEST_PARALLEL_LEVEL") self.pkg._if_ninja_target_execute("check") + + +def define(cmake_var: str, value: Any) -> str: + """Return a CMake command line argument that defines a variable. + + The resulting argument will convert boolean values to OFF/ON and lists/tuples to CMake + semicolon-separated string lists. All other values will be interpreted as strings. + + Examples: + + .. code-block:: python + + [define("BUILD_SHARED_LIBS", True), + define("CMAKE_CXX_STANDARD", 14), + define("swr", ["avx", "avx2"])] + + will generate the following configuration options: + + .. code-block:: console + + ["-DBUILD_SHARED_LIBS:BOOL=ON", + "-DCMAKE_CXX_STANDARD:STRING=14", + "-DSWR:STRING=avx;avx2] + + """ + # Create a list of pairs. Each pair includes a configuration + # option and whether or not that option is activated + if isinstance(value, bool): + kind = "BOOL" + value = "ON" if value else "OFF" + else: + kind = "STRING" + if isinstance(value, collections.abc.Sequence) and not isinstance(value, str): + value = ";".join(str(v) for v in value) + else: + value = str(value) + + return "".join(["-D", cmake_var, ":", kind, "=", value]) + + +def define_from_variant( + pkg: spack.package_base.PackageBase, cmake_var: str, variant: Optional[str] = None +) -> str: + """Return a CMake command line argument from the given variant's value. + + The optional ``variant`` argument defaults to the lower-case transform + of ``cmake_var``. + + Examples: + + Given a package with: + + .. code-block:: python + + variant("cxxstd", default="11", values=("11", "14"), + multi=False, description="") + variant("shared", default=True, description="") + variant("swr", values=any_combination_of("avx", "avx2"), + description="") + + calling this function like: + + .. code-block:: python + + [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), + self.define_from_variant("SWR"), + ] + + will generate the following configuration options: + + .. code-block:: console + + [ + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DCMAKE_CXX_STANDARD:STRING=14", + "-DSWR:STRING=avx;avx2", + ] + + for `` cxxstd=14 +shared swr=avx,avx2`` + + Note: if the provided variant is conditional, and the condition is not met, this function + returns an empty string. CMake discards empty strings provided on the command line. + """ + if variant is None: + variant = cmake_var.lower() + + if not pkg.has_variant(variant): + raise KeyError('"{0}" is not a variant of "{1}"'.format(variant, pkg.name)) + + if variant not in pkg.spec.variants: + return "" + + value = pkg.spec.variants[variant].value + if isinstance(value, (tuple, list)): + # Sort multi-valued variants for reproducibility + value = sorted(value) + + return define(cmake_var, value) + + +def define_hip_architectures(pkg: spack.package_base.PackageBase) -> str: + """Returns the str ``-DCMAKE_HIP_ARCHITECTURES:STRING=(expanded amdgpu_target)``. + + ``amdgpu_target`` is variant composed of a list of the target HIP + architectures and it is declared in the rocm package. + + This method is no-op for cmake<3.18 and when ``amdgpu_target`` variant is + not set. + + """ + if "amdgpu_target" in pkg.spec.variants and pkg.spec.satisfies("^cmake@3.21:"): + return define("CMAKE_HIP_ARCHITECTURES", pkg.spec.variants["amdgpu_target"].value) + + return "" + + +def define_cuda_architectures(pkg: spack.package_base.PackageBase) -> str: + """Returns the str ``-DCMAKE_CUDA_ARCHITECTURES:STRING=(expanded cuda_arch)``. + + ``cuda_arch`` is variant composed of a list of target CUDA architectures and + it is declared in the cuda package. + + This method is no-op for cmake<3.18 and when ``cuda_arch`` variant is not set. + + """ + if "cuda_arch" in pkg.spec.variants and pkg.spec.satisfies("^cmake@3.18:"): + return define("CMAKE_CUDA_ARCHITECTURES", pkg.spec.variants["cuda_arch"].value) + return "" diff --git a/lib/spack/spack/build_systems/generic.py b/lib/spack/spack/build_systems/generic.py index 5a0446a4ad6e7f..781aba9b0fb312 100644 --- a/lib/spack/spack/build_systems/generic.py +++ b/lib/spack/spack/build_systems/generic.py @@ -7,8 +7,9 @@ import spack.builder import spack.directives import spack.package_base +import spack.phase_callbacks -from ._checks import BaseBuilder, apply_macos_rpath_fixups, execute_install_time_tests +from ._checks import BuilderWithDefaults, apply_macos_rpath_fixups, execute_install_time_tests class Package(spack.package_base.PackageBase): @@ -26,7 +27,7 @@ class Package(spack.package_base.PackageBase): @spack.builder.builder("generic") -class GenericBuilder(BaseBuilder): +class GenericBuilder(BuilderWithDefaults): """A builder for a generic build system, that require packagers to implement an "install" phase. """ @@ -44,7 +45,7 @@ class GenericBuilder(BaseBuilder): install_time_test_callbacks = [] # On macOS, force rpaths for shared library IDs and remove duplicate rpaths - spack.builder.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) + spack.phase_callbacks.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) # unconditionally perform any post-install phase tests - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) diff --git a/lib/spack/spack/build_systems/go.py b/lib/spack/spack/build_systems/go.py index ae588789c774d5..bcd38d65bd1550 100644 --- a/lib/spack/spack/build_systems/go.py +++ b/lib/spack/spack/build_systems/go.py @@ -7,10 +7,11 @@ import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, extends from spack.multimethod import when -from ._checks import BaseBuilder, execute_install_time_tests +from ._checks import BuilderWithDefaults, execute_install_time_tests class GoPackage(spack.package_base.PackageBase): @@ -32,7 +33,7 @@ class GoPackage(spack.package_base.PackageBase): @spack.builder.builder("go") -class GoBuilder(BaseBuilder): +class GoBuilder(BuilderWithDefaults): """The Go builder encodes the most common way of building software with a golang go.mod file. It has two phases that can be overridden, if need be: @@ -99,7 +100,7 @@ def install(self, pkg, spec, prefix): fs.mkdirp(prefix.bin) fs.install(pkg.name, prefix.bin) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) def check(self): """Run ``go test .`` in the source directory""" diff --git a/lib/spack/spack/build_systems/intel.py b/lib/spack/spack/build_systems/intel.py index 9f82bae14d39b0..0a791f899930fc 100644 --- a/lib/spack/spack/build_systems/intel.py +++ b/lib/spack/spack/build_systems/intel.py @@ -22,8 +22,8 @@ install, ) -import spack.builder import spack.error +import spack.phase_callbacks from spack.build_environment import dso_suffix from spack.error import InstallError from spack.util.environment import EnvironmentModifications @@ -1163,7 +1163,7 @@ def _determine_license_type(self): debug_print(license_type) return license_type - @spack.builder.run_before("install") + @spack.phase_callbacks.run_before("install") def configure(self): """Generates the silent.cfg file to pass to installer.sh. @@ -1250,7 +1250,7 @@ def install(self, spec, prefix): for f in glob.glob("%s/intel*log" % tmpdir): install(f, dst) - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def validate_install(self): # Sometimes the installer exits with an error but doesn't pass a # non-zero exit code to spack. Check for the existence of a 'bin' @@ -1258,7 +1258,7 @@ def validate_install(self): if not os.path.exists(self.prefix.bin): raise InstallError("The installer has failed to install anything.") - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def configure_rpath(self): if "+rpath" not in self.spec: return @@ -1276,7 +1276,7 @@ def configure_rpath(self): with open(compiler_cfg, "w") as fh: fh.write("-Xlinker -rpath={0}\n".format(compilers_lib_dir)) - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def configure_auto_dispatch(self): if self._has_compilers: if "auto_dispatch=none" in self.spec: @@ -1300,7 +1300,7 @@ def configure_auto_dispatch(self): with open(compiler_cfg, "a") as fh: fh.write("-ax{0}\n".format(",".join(ad))) - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def filter_compiler_wrappers(self): if ("+mpi" in self.spec or self.provides("mpi")) and "~newdtags" in self.spec: bin_dir = self.component_bin_dir("mpi") @@ -1308,7 +1308,7 @@ def filter_compiler_wrappers(self): f = os.path.join(bin_dir, f) filter_file("-Xlinker --enable-new-dtags", " ", f, string=True) - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def uninstall_ism(self): # The "Intel(R) Software Improvement Program" [ahem] gets installed, # apparently regardless of PHONEHOME_SEND_USAGE_DATA. @@ -1340,7 +1340,7 @@ def base_lib_dir(self): debug_print(d) return d - @spack.builder.run_after("install") + @spack.phase_callbacks.run_after("install") def modify_LLVMgold_rpath(self): """Add libimf.so and other required libraries to the RUNPATH of LLVMgold.so. diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index 25f25adfe3d716..083cab3744fa45 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -8,11 +8,14 @@ import spack.builder import spack.package_base +import spack.phase_callbacks +import spack.spec +import spack.util.prefix from spack.directives import build_system, conflicts, depends_on from spack.multimethod import when from ._checks import ( - BaseBuilder, + BuilderWithDefaults, apply_macos_rpath_fixups, execute_build_time_tests, execute_install_time_tests, @@ -36,7 +39,7 @@ class MakefilePackage(spack.package_base.PackageBase): @spack.builder.builder("makefile") -class MakefileBuilder(BaseBuilder): +class MakefileBuilder(BuilderWithDefaults): """The Makefile builder encodes the most common way of building software with Makefiles. It has three phases that can be overridden, if need be: @@ -91,35 +94,50 @@ class MakefileBuilder(BaseBuilder): install_time_test_callbacks = ["installcheck"] @property - def build_directory(self): + def build_directory(self) -> str: """Return the directory containing the main Makefile.""" return self.pkg.stage.source_path - def edit(self, pkg, spec, prefix): + def edit( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Edit the Makefile before calling make. The default is a no-op.""" pass - def build(self, pkg, spec, prefix): + def build( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run "make" on the build targets specified by the builder.""" with fs.working_dir(self.build_directory): pkg.module.make(*self.build_targets) - def install(self, pkg, spec, prefix): + def install( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run "make" on the install targets specified by the builder.""" with fs.working_dir(self.build_directory): pkg.module.make(*self.install_targets) - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) - def check(self): + def check(self) -> None: """Run "make" on the ``test`` and ``check`` targets, if found.""" with fs.working_dir(self.build_directory): self.pkg._if_make_target_execute("test") self.pkg._if_make_target_execute("check") - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) - def installcheck(self): + def installcheck(self) -> None: """Searches the Makefile for an ``installcheck`` target and runs it if found. """ @@ -127,4 +145,4 @@ def installcheck(self): self.pkg._if_make_target_execute("installcheck") # On macOS, force rpaths for shared library IDs and remove duplicate rpaths - spack.builder.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) + spack.phase_callbacks.run_after("install", when="platform=darwin")(apply_macos_rpath_fixups) diff --git a/lib/spack/spack/build_systems/maven.py b/lib/spack/spack/build_systems/maven.py index 809258d5dff2c5..962d05f96c43af 100644 --- a/lib/spack/spack/build_systems/maven.py +++ b/lib/spack/spack/build_systems/maven.py @@ -10,7 +10,7 @@ from spack.multimethod import when from spack.util.executable import which -from ._checks import BaseBuilder +from ._checks import BuilderWithDefaults class MavenPackage(spack.package_base.PackageBase): @@ -34,7 +34,7 @@ class MavenPackage(spack.package_base.PackageBase): @spack.builder.builder("maven") -class MavenBuilder(BaseBuilder): +class MavenBuilder(BuilderWithDefaults): """The Maven builder encodes the default way to build software with Maven. It has two phases that can be overridden, if need be: diff --git a/lib/spack/spack/build_systems/meson.py b/lib/spack/spack/build_systems/meson.py index cf3cd24e2032f7..8a5ea5d850f52b 100644 --- a/lib/spack/spack/build_systems/meson.py +++ b/lib/spack/spack/build_systems/meson.py @@ -9,10 +9,13 @@ import spack.builder import spack.package_base +import spack.phase_callbacks +import spack.spec +import spack.util.prefix from spack.directives import build_system, conflicts, depends_on, variant from spack.multimethod import when -from ._checks import BaseBuilder, execute_build_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests class MesonPackage(spack.package_base.PackageBase): @@ -62,7 +65,7 @@ def flags_to_build_system_args(self, flags): @spack.builder.builder("meson") -class MesonBuilder(BaseBuilder): +class MesonBuilder(BuilderWithDefaults): """The Meson builder encodes the default way to build software with Meson. The builder has three phases that can be overridden, if need be: @@ -112,7 +115,7 @@ def archive_files(self): return [os.path.join(self.build_directory, "meson-logs", "meson-log.txt")] @property - def root_mesonlists_dir(self): + def root_mesonlists_dir(self) -> str: """Relative path to the directory containing meson.build This path is relative to the root of the extracted tarball, @@ -121,7 +124,7 @@ def root_mesonlists_dir(self): return self.pkg.stage.source_path @property - def std_meson_args(self): + def std_meson_args(self) -> List[str]: """Standard meson arguments provided as a property for convenience of package writers. """ @@ -132,7 +135,7 @@ def std_meson_args(self): return std_meson_args @staticmethod - def std_args(pkg): + def std_args(pkg) -> List[str]: """Standard meson arguments for a generic package.""" try: build_type = pkg.spec.variants["buildtype"].value @@ -172,7 +175,7 @@ def build_directory(self): """Directory to use when building the package.""" return os.path.join(self.pkg.stage.path, self.build_dirname) - def meson_args(self): + def meson_args(self) -> List[str]: """List of arguments that must be passed to meson, except: * ``--prefix`` @@ -185,7 +188,12 @@ def meson_args(self): """ return [] - def meson(self, pkg, spec, prefix): + def meson( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Run ``meson`` in the build directory""" options = [] if self.spec["meson"].satisfies("@0.64:"): @@ -196,21 +204,31 @@ def meson(self, pkg, spec, prefix): with fs.working_dir(self.build_directory, create=True): pkg.module.meson(*options) - def build(self, pkg, spec, prefix): + def build( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Make the build targets""" options = ["-v"] options += self.build_targets with fs.working_dir(self.build_directory): pkg.module.ninja(*options) - def install(self, pkg, spec, prefix): + def install( + self, + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, + prefix: spack.util.prefix.Prefix, + ) -> None: """Make the install targets""" with fs.working_dir(self.build_directory): pkg.module.ninja(*self.install_targets) - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) - def check(self): + def check(self) -> None: """Search Meson-generated files for the target ``test`` and run it if found.""" with fs.working_dir(self.build_directory): self.pkg._if_ninja_target_execute("test") diff --git a/lib/spack/spack/build_systems/msbuild.py b/lib/spack/spack/build_systems/msbuild.py index 8fb4ef936e0758..3ffc7212157392 100644 --- a/lib/spack/spack/build_systems/msbuild.py +++ b/lib/spack/spack/build_systems/msbuild.py @@ -10,7 +10,7 @@ import spack.package_base from spack.directives import build_system, conflicts -from ._checks import BaseBuilder +from ._checks import BuilderWithDefaults class MSBuildPackage(spack.package_base.PackageBase): @@ -26,7 +26,7 @@ class MSBuildPackage(spack.package_base.PackageBase): @spack.builder.builder("msbuild") -class MSBuildBuilder(BaseBuilder): +class MSBuildBuilder(BuilderWithDefaults): """The MSBuild builder encodes the most common way of building software with Mircosoft's MSBuild tool. It has two phases that can be overridden, if need be: diff --git a/lib/spack/spack/build_systems/nmake.py b/lib/spack/spack/build_systems/nmake.py index 50232f3e2da993..b6eb75e3e53047 100644 --- a/lib/spack/spack/build_systems/nmake.py +++ b/lib/spack/spack/build_systems/nmake.py @@ -10,7 +10,7 @@ import spack.package_base from spack.directives import build_system, conflicts -from ._checks import BaseBuilder +from ._checks import BuilderWithDefaults class NMakePackage(spack.package_base.PackageBase): @@ -26,7 +26,7 @@ class NMakePackage(spack.package_base.PackageBase): @spack.builder.builder("nmake") -class NMakeBuilder(BaseBuilder): +class NMakeBuilder(BuilderWithDefaults): """The NMake builder encodes the most common way of building software with Mircosoft's NMake tool. It has two phases that can be overridden, if need be: diff --git a/lib/spack/spack/build_systems/octave.py b/lib/spack/spack/build_systems/octave.py index 1b0a88c6e76551..e8f15767858761 100644 --- a/lib/spack/spack/build_systems/octave.py +++ b/lib/spack/spack/build_systems/octave.py @@ -7,7 +7,7 @@ from spack.directives import build_system, extends from spack.multimethod import when -from ._checks import BaseBuilder +from ._checks import BuilderWithDefaults class OctavePackage(spack.package_base.PackageBase): @@ -29,7 +29,7 @@ class OctavePackage(spack.package_base.PackageBase): @spack.builder.builder("octave") -class OctaveBuilder(BaseBuilder): +class OctaveBuilder(BuilderWithDefaults): """The octave builder provides the following phases that can be overridden: 1. :py:meth:`~.OctaveBuilder.install` diff --git a/lib/spack/spack/build_systems/perl.py b/lib/spack/spack/build_systems/perl.py index 4caab7131b096f..bb47adaaf54541 100644 --- a/lib/spack/spack/build_systems/perl.py +++ b/lib/spack/spack/build_systems/perl.py @@ -10,11 +10,12 @@ import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, extends from spack.install_test import SkipTest, test_part from spack.util.executable import Executable -from ._checks import BaseBuilder, execute_build_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests class PerlPackage(spack.package_base.PackageBase): @@ -84,7 +85,7 @@ def test_use(self): @spack.builder.builder("perl") -class PerlBuilder(BaseBuilder): +class PerlBuilder(BuilderWithDefaults): """The perl builder provides four phases that can be overridden, if required: 1. :py:meth:`~.PerlBuilder.configure` @@ -163,7 +164,7 @@ def configure(self, pkg, spec, prefix): # Build.PL may be too long causing the build to fail. Patching the shebang # does not happen until after install so set '/usr/bin/env perl' here in # the Build script. - @spack.builder.run_after("configure") + @spack.phase_callbacks.run_after("configure") def fix_shebang(self): if self.build_method == "Build.PL": pattern = "#!{0}".format(self.spec["perl"].command.path) @@ -175,7 +176,7 @@ def build(self, pkg, spec, prefix): self.build_executable() # Ensure that tests run after build (if requested): - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) def check(self): """Runs built-in tests of a Perl package.""" diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index b951ec2a977814..9f5db48f4d3015 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -24,6 +24,7 @@ import spack.detection import spack.multimethod import spack.package_base +import spack.phase_callbacks import spack.platforms import spack.repo import spack.spec @@ -34,7 +35,7 @@ from spack.spec import Spec from spack.util.prefix import Prefix -from ._checks import BaseBuilder, execute_install_time_tests +from ._checks import BuilderWithDefaults, execute_install_time_tests def _flatten_dict(dictionary: Mapping[str, object]) -> Iterable[str]: @@ -374,7 +375,7 @@ def list_url(cls) -> Optional[str]: # type: ignore[override] return None @property - def python_spec(self): + def python_spec(self) -> Spec: """Get python-venv if it exists or python otherwise.""" python, *_ = self.spec.dependencies("python-venv") or self.spec.dependencies("python") return python @@ -425,7 +426,7 @@ def libs(self) -> LibraryList: @spack.builder.builder("python_pip") -class PythonPipBuilder(BaseBuilder): +class PythonPipBuilder(BuilderWithDefaults): phases = ("install",) #: Names associated with package methods in the old build-system format @@ -543,4 +544,4 @@ def install(self, pkg: PythonPackage, spec: Spec, prefix: Prefix) -> None: with fs.working_dir(self.build_directory): pip(*args) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) diff --git a/lib/spack/spack/build_systems/qmake.py b/lib/spack/spack/build_systems/qmake.py index 75ad3860b4b2dc..eb530f4b38aef3 100644 --- a/lib/spack/spack/build_systems/qmake.py +++ b/lib/spack/spack/build_systems/qmake.py @@ -6,9 +6,10 @@ import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, depends_on -from ._checks import BaseBuilder, execute_build_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests class QMakePackage(spack.package_base.PackageBase): @@ -30,7 +31,7 @@ class QMakePackage(spack.package_base.PackageBase): @spack.builder.builder("qmake") -class QMakeBuilder(BaseBuilder): +class QMakeBuilder(BuilderWithDefaults): """The qmake builder provides three phases that can be overridden: 1. :py:meth:`~.QMakeBuilder.qmake` @@ -81,4 +82,4 @@ def check(self): with working_dir(self.build_directory): self.pkg._if_make_target_execute("check") - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) diff --git a/lib/spack/spack/build_systems/ruby.py b/lib/spack/spack/build_systems/ruby.py index 77d7ef289c7460..50228e21374aea 100644 --- a/lib/spack/spack/build_systems/ruby.py +++ b/lib/spack/spack/build_systems/ruby.py @@ -8,7 +8,7 @@ import spack.package_base from spack.directives import build_system, extends, maintainers -from ._checks import BaseBuilder +from ._checks import BuilderWithDefaults class RubyPackage(spack.package_base.PackageBase): @@ -28,7 +28,7 @@ class RubyPackage(spack.package_base.PackageBase): @spack.builder.builder("ruby") -class RubyBuilder(BaseBuilder): +class RubyBuilder(BuilderWithDefaults): """The Ruby builder provides two phases that can be overridden if required: #. :py:meth:`~.RubyBuilder.build` diff --git a/lib/spack/spack/build_systems/scons.py b/lib/spack/spack/build_systems/scons.py index 4a32b690f794ae..5e0211903daf2b 100644 --- a/lib/spack/spack/build_systems/scons.py +++ b/lib/spack/spack/build_systems/scons.py @@ -4,9 +4,10 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, depends_on -from ._checks import BaseBuilder, execute_build_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests class SConsPackage(spack.package_base.PackageBase): @@ -28,7 +29,7 @@ class SConsPackage(spack.package_base.PackageBase): @spack.builder.builder("scons") -class SConsBuilder(BaseBuilder): +class SConsBuilder(BuilderWithDefaults): """The Scons builder provides the following phases that can be overridden: 1. :py:meth:`~.SConsBuilder.build` @@ -79,4 +80,4 @@ def build_test(self): """ pass - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) diff --git a/lib/spack/spack/build_systems/sip.py b/lib/spack/spack/build_systems/sip.py index f297c59a00be97..54ce4c6d8e4e86 100644 --- a/lib/spack/spack/build_systems/sip.py +++ b/lib/spack/spack/build_systems/sip.py @@ -11,11 +11,12 @@ import spack.builder import spack.install_test import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, depends_on, extends from spack.multimethod import when from spack.util.executable import Executable -from ._checks import BaseBuilder, execute_install_time_tests +from ._checks import BuilderWithDefaults, execute_install_time_tests class SIPPackage(spack.package_base.PackageBase): @@ -103,7 +104,7 @@ def test_imports(self): @spack.builder.builder("sip") -class SIPBuilder(BaseBuilder): +class SIPBuilder(BuilderWithDefaults): """The SIP builder provides the following phases that can be overridden: * configure @@ -170,4 +171,4 @@ def install_args(self): """Arguments to pass to install.""" return [] - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) diff --git a/lib/spack/spack/build_systems/waf.py b/lib/spack/spack/build_systems/waf.py index a0110c5c3480b3..5161f40985aafb 100644 --- a/lib/spack/spack/build_systems/waf.py +++ b/lib/spack/spack/build_systems/waf.py @@ -6,9 +6,10 @@ import spack.builder import spack.package_base +import spack.phase_callbacks from spack.directives import build_system, depends_on -from ._checks import BaseBuilder, execute_build_time_tests, execute_install_time_tests +from ._checks import BuilderWithDefaults, execute_build_time_tests, execute_install_time_tests class WafPackage(spack.package_base.PackageBase): @@ -30,7 +31,7 @@ class WafPackage(spack.package_base.PackageBase): @spack.builder.builder("waf") -class WafBuilder(BaseBuilder): +class WafBuilder(BuilderWithDefaults): """The WAF builder provides the following phases that can be overridden: * configure @@ -136,7 +137,7 @@ def build_test(self): """ pass - spack.builder.run_after("build")(execute_build_time_tests) + spack.phase_callbacks.run_after("build")(execute_build_time_tests) def install_test(self): """Run unit tests after install. @@ -146,4 +147,4 @@ def install_test(self): """ pass - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) diff --git a/lib/spack/spack/builder.py b/lib/spack/spack/builder.py index b767f15b6dc765..6dd84fab452c44 100644 --- a/lib/spack/spack/builder.py +++ b/lib/spack/spack/builder.py @@ -6,44 +6,30 @@ import collections.abc import copy import functools -from typing import List, Optional, Tuple - -from llnl.util import lang +from typing import Dict, List, Optional, Tuple, Type import spack.error import spack.multimethod +import spack.package_base +import spack.phase_callbacks import spack.repo +import spack.spec +import spack.util.environment #: Builder classes, as registered by the "builder" decorator -BUILDER_CLS = {} - -#: An object of this kind is a shared global state used to collect callbacks during -#: class definition time, and is flushed when the class object is created at the end -#: of the class definition -#: -#: Args: -#: attribute_name (str): name of the attribute that will be attached to the builder -#: callbacks (list): container used to temporarily aggregate the callbacks -CallbackTemporaryStage = collections.namedtuple( - "CallbackTemporaryStage", ["attribute_name", "callbacks"] -) - -#: Shared global state to aggregate "@run_before" callbacks -_RUN_BEFORE = CallbackTemporaryStage(attribute_name="run_before_callbacks", callbacks=[]) -#: Shared global state to aggregate "@run_after" callbacks -_RUN_AFTER = CallbackTemporaryStage(attribute_name="run_after_callbacks", callbacks=[]) +BUILDER_CLS: Dict[str, Type["Builder"]] = {} #: Map id(pkg) to a builder, to avoid creating multiple #: builders for the same package object. -_BUILDERS = {} +_BUILDERS: Dict[int, "Builder"] = {} -def builder(build_system_name): +def builder(build_system_name: str): """Class decorator used to register the default builder for a given build-system. Args: - build_system_name (str): name of the build-system + build_system_name: name of the build-system """ def _decorator(cls): @@ -54,13 +40,9 @@ def _decorator(cls): return _decorator -def create(pkg): - """Given a package object with an associated concrete spec, - return the builder object that can install it. - - Args: - pkg (spack.package_base.PackageBase): package for which we want the builder - """ +def create(pkg: spack.package_base.PackageBase) -> "Builder": + """Given a package object with an associated concrete spec, return the builder object that can + install it.""" if id(pkg) not in _BUILDERS: _BUILDERS[id(pkg)] = _create(pkg) return _BUILDERS[id(pkg)] @@ -75,7 +57,7 @@ def __call__(self, spec, prefix): return self.phase_fn(self.builder.pkg, spec, prefix) -def get_builder_class(pkg, name: str) -> Optional[type]: +def get_builder_class(pkg, name: str) -> Optional[Type["Builder"]]: """Return the builder class if a package module defines it.""" cls = getattr(pkg.module, name, None) if cls and cls.__module__.startswith(spack.repo.ROOT_PYTHON_NAMESPACE): @@ -83,7 +65,7 @@ def get_builder_class(pkg, name: str) -> Optional[type]: return None -def _create(pkg): +def _create(pkg: spack.package_base.PackageBase) -> "Builder": """Return a new builder object for the package object being passed as argument. The function inspects the build-system used by the package object and try to: @@ -103,7 +85,7 @@ class hierarchy (look at AspellDictPackage for an example of that) to look for build-related methods in the ``*Package``. Args: - pkg (spack.package_base.PackageBase): package object for which we need a builder + pkg: package object for which we need a builder """ package_buildsystem = buildsystem_name(pkg) default_builder_cls = BUILDER_CLS[package_buildsystem] @@ -168,8 +150,8 @@ def __forward(self, *args, **kwargs): # with the same name is defined in the Package, it will override this definition # (when _ForwardToBaseBuilder is initialized) for method_name in ( - base_cls.phases - + base_cls.legacy_methods + base_cls.phases # type: ignore + + base_cls.legacy_methods # type: ignore + getattr(base_cls, "legacy_long_methods", tuple()) + ("setup_build_environment", "setup_dependent_build_environment") ): @@ -181,14 +163,14 @@ def __forward(self): return __forward - for attribute_name in base_cls.legacy_attributes: + for attribute_name in base_cls.legacy_attributes: # type: ignore setattr( _ForwardToBaseBuilder, attribute_name, property(forward_property_to_getattr(attribute_name)), ) - class Adapter(base_cls, metaclass=_PackageAdapterMeta): + class Adapter(base_cls, metaclass=_PackageAdapterMeta): # type: ignore def __init__(self, pkg): # Deal with custom phases in packages here if hasattr(pkg, "phases"): @@ -213,99 +195,18 @@ def setup_dependent_build_environment(self, env, dependent_spec): return Adapter(pkg) -def buildsystem_name(pkg): +def buildsystem_name(pkg: spack.package_base.PackageBase) -> str: """Given a package object with an associated concrete spec, - return the name of its build system. - - Args: - pkg (spack.package_base.PackageBase): package for which we want - the build system name - """ + return the name of its build system.""" try: return pkg.spec.variants["build_system"].value except KeyError: # We are reading an old spec without the build_system variant - return pkg.legacy_buildsystem - - -class PhaseCallbacksMeta(type): - """Permit to register arbitrary functions during class definition and run them - later, before or after a given install phase. - - Each method decorated with ``run_before`` or ``run_after`` gets temporarily - stored in a global shared state when a class being defined is parsed by the Python - interpreter. At class definition time that temporary storage gets flushed and a list - of callbacks is attached to the class being defined. - """ - - def __new__(mcs, name, bases, attr_dict): - for temporary_stage in (_RUN_BEFORE, _RUN_AFTER): - staged_callbacks = temporary_stage.callbacks - - # Here we have an adapter from an old-style package. This means there is no - # hierarchy of builders, and every callback that had to be combined between - # *Package and *Builder has been combined already by _PackageAdapterMeta - if name == "Adapter": - continue - - # If we are here we have callbacks. To get a complete list, we accumulate all the - # callbacks from base classes, we deduplicate them, then prepend what we have - # registered here. - # - # The order should be: - # 1. Callbacks are registered in order within the same class - # 2. Callbacks defined in derived classes precede those defined in base - # classes - callbacks_from_base = [] - for base in bases: - current_callbacks = getattr(base, temporary_stage.attribute_name, None) - if not current_callbacks: - continue - callbacks_from_base.extend(current_callbacks) - callbacks_from_base = list(lang.dedupe(callbacks_from_base)) - # Set the callbacks in this class and flush the temporary stage - attr_dict[temporary_stage.attribute_name] = staged_callbacks[:] + callbacks_from_base - del temporary_stage.callbacks[:] - - return super(PhaseCallbacksMeta, mcs).__new__(mcs, name, bases, attr_dict) - - @staticmethod - def run_after(phase, when=None): - """Decorator to register a function for running after a given phase. - - Args: - phase (str): phase after which the function must run. - when (str): condition under which the function is run (if None, it is always run). - """ - - def _decorator(fn): - key = (phase, when) - item = (key, fn) - _RUN_AFTER.callbacks.append(item) - return fn - - return _decorator - - @staticmethod - def run_before(phase, when=None): - """Decorator to register a function for running before a given phase. - - Args: - phase (str): phase before which the function must run. - when (str): condition under which the function is run (if None, it is always run). - """ - - def _decorator(fn): - key = (phase, when) - item = (key, fn) - _RUN_BEFORE.callbacks.append(item) - return fn - - return _decorator + return pkg.legacy_buildsystem # type: ignore class BuilderMeta( - PhaseCallbacksMeta, + spack.phase_callbacks.PhaseCallbacksMeta, spack.multimethod.MultiMethodMeta, type(collections.abc.Sequence), # type: ignore ): @@ -400,8 +301,12 @@ def __new__(mcs, name, bases, attr_dict): ) combine_callbacks = _PackageAdapterMeta.combine_callbacks - attr_dict[_RUN_BEFORE.attribute_name] = combine_callbacks(_RUN_BEFORE.attribute_name) - attr_dict[_RUN_AFTER.attribute_name] = combine_callbacks(_RUN_AFTER.attribute_name) + attr_dict[spack.phase_callbacks._RUN_BEFORE.attribute_name] = combine_callbacks( + spack.phase_callbacks._RUN_BEFORE.attribute_name + ) + attr_dict[spack.phase_callbacks._RUN_AFTER.attribute_name] = combine_callbacks( + spack.phase_callbacks._RUN_AFTER.attribute_name + ) return super(_PackageAdapterMeta, mcs).__new__(mcs, name, bases, attr_dict) @@ -421,8 +326,8 @@ def __init__(self, name, builder): self.name = name self.builder = builder self.phase_fn = self._select_phase_fn() - self.run_before = self._make_callbacks(_RUN_BEFORE.attribute_name) - self.run_after = self._make_callbacks(_RUN_AFTER.attribute_name) + self.run_before = self._make_callbacks(spack.phase_callbacks._RUN_BEFORE.attribute_name) + self.run_after = self._make_callbacks(spack.phase_callbacks._RUN_AFTER.attribute_name) def _make_callbacks(self, callbacks_attribute): result = [] @@ -483,44 +388,36 @@ def copy(self): return copy.deepcopy(self) -class Builder(collections.abc.Sequence, metaclass=BuilderMeta): - """A builder is a class that, given a package object (i.e. associated with - concrete spec), knows how to install it. +class BaseBuilder(metaclass=BuilderMeta): + """An interface for builders, without any phases defined. This class is exposed in the package + API, so that packagers can create a single class to define ``setup_build_environment`` and + ``@run_before`` and ``@run_after`` callbacks that can be shared among different builders. - The builder behaves like a sequence, and when iterated over return the - "phases" of the installation in the correct order. + Example: - Args: - pkg (spack.package_base.PackageBase): package object to be built - """ + .. code-block:: python - #: Sequence of phases. Must be defined in derived classes - phases: Tuple[str, ...] = () - #: Build system name. Must also be defined in derived classes. - build_system: Optional[str] = None + class AnyBuilder(BaseBuilder): + @run_after("install") + def fixup_install(self): + # do something after the package is installed + pass - legacy_methods: Tuple[str, ...] = () - legacy_attributes: Tuple[str, ...] = () + def setup_build_environment(self, env): + env.set("MY_ENV_VAR", "my_value") - # type hints for some of the legacy methods - build_time_test_callbacks: List[str] - install_time_test_callbacks: List[str] + class CMakeBuilder(cmake.CMakeBuilder, AnyBuilder): + pass - #: List of glob expressions. Each expression must either be - #: absolute or relative to the package source path. - #: Matching artifacts found at the end of the build process will be - #: copied in the same directory tree as _spack_build_logfile and - #: _spack_build_envfile. - archive_files: List[str] = [] + class AutotoolsBuilder(autotools.AutotoolsBuilder, AnyBuilder): + pass + """ - def __init__(self, pkg): + def __init__(self, pkg: spack.package_base.PackageBase) -> None: self.pkg = pkg - self.callbacks = {} - for phase in self.phases: - self.callbacks[phase] = InstallationPhase(phase, self) @property - def spec(self): + def spec(self) -> spack.spec.Spec: return self.pkg.spec @property @@ -531,53 +428,89 @@ def stage(self): def prefix(self): return self.pkg.prefix - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: """Sets up the build environment for a package. This method will be called before the current package prefix exists in Spack's store. Args: - env (spack.util.environment.EnvironmentModifications): environment - modifications to be applied when the package is built. Package authors + env: environment modifications to be applied when the package is built. Package authors can call methods on it to alter the build environment. """ if not hasattr(super(), "setup_build_environment"): return - super().setup_build_environment(env) - - def setup_dependent_build_environment(self, env, dependent_spec): - """Sets up the build environment of packages that depend on this one. + super().setup_build_environment(env) # type: ignore - This is similar to ``setup_build_environment``, but it is used to - modify the build environments of packages that *depend* on this one. + def setup_dependent_build_environment( + self, env: spack.util.environment.EnvironmentModifications, dependent_spec: spack.spec.Spec + ) -> None: + """Sets up the build environment of a package that depends on this one. - This gives packages like Python and others that follow the extension - model a way to implement common environment or compile-time settings - for dependencies. + This is similar to ``setup_build_environment``, but it is used to modify the build + environment of a package that *depends* on this one. - This method will be called before the dependent package prefix exists - in Spack's store. + This gives packages the ability to set environment variables for the build of the + dependent, which can be useful to provide search hints for headers or libraries if they are + not in standard locations. - Examples: - 1. Installing python modules generally requires ``PYTHONPATH`` - to point to the ``lib/pythonX.Y/site-packages`` directory in the - module's install prefix. This method could be used to set that - variable. + This method will be called before the dependent package prefix exists in Spack's store. Args: - env (spack.util.environment.EnvironmentModifications): environment - modifications to be applied when the dependent package is built. + env: environment modifications to be applied when the dependent package is built. Package authors can call methods on it to alter the build environment. - dependent_spec (spack.spec.Spec): the spec of the dependent package - about to be built. This allows the extendee (self) to query - the dependent's state. Note that *this* package's spec is + dependent_spec: the spec of the dependent package about to be built. This allows the + extendee (self) to query the dependent's state. Note that *this* package's spec is available as ``self.spec`` """ if not hasattr(super(), "setup_dependent_build_environment"): return - super().setup_dependent_build_environment(env, dependent_spec) + super().setup_dependent_build_environment(env, dependent_spec) # type: ignore + + def __repr__(self): + fmt = "{name}{/hash:7}" + return f"{self.__class__.__name__}({self.spec.format(fmt)})" + + def __str__(self): + fmt = "{name}{/hash:7}" + return f'"{self.__class__.__name__}" builder for "{self.spec.format(fmt)}"' + + +class Builder(BaseBuilder, collections.abc.Sequence): + """A builder is a class that, given a package object (i.e. associated with concrete spec), + knows how to install it. + + The builder behaves like a sequence, and when iterated over return the "phases" of the + installation in the correct order. + """ + + #: Sequence of phases. Must be defined in derived classes + phases: Tuple[str, ...] = () + #: Build system name. Must also be defined in derived classes. + build_system: Optional[str] = None + + legacy_methods: Tuple[str, ...] = () + legacy_attributes: Tuple[str, ...] = () + + # type hints for some of the legacy methods + build_time_test_callbacks: List[str] + install_time_test_callbacks: List[str] + + #: List of glob expressions. Each expression must either be absolute or relative to the package + #: source path. Matching artifacts found at the end of the build process will be copied in the + #: same directory tree as _spack_build_logfile and _spack_build_envfile. + @property + def archive_files(self) -> List[str]: + return [] + + def __init__(self, pkg: spack.package_base.PackageBase) -> None: + super().__init__(pkg) + self.callbacks = {} + for phase in self.phases: + self.callbacks[phase] = InstallationPhase(phase, self) def __getitem__(self, idx): key = self.phases[idx] @@ -585,16 +518,3 @@ def __getitem__(self, idx): def __len__(self): return len(self.phases) - - def __repr__(self): - msg = "{0}({1})" - return msg.format(type(self).__name__, self.pkg.spec.format("{name}/{hash:7}")) - - def __str__(self): - msg = '"{0}" builder for "{1}"' - return msg.format(type(self).build_system, self.pkg.spec.format("{name}/{hash:7}")) - - -# Export these names as standalone to be used in packages -run_after = PhaseCallbacksMeta.run_after -run_before = PhaseCallbacksMeta.run_before diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index 5a8b2ae1e7d49a..6fba4863561184 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -32,6 +32,7 @@ import spack import spack.binary_distribution as bindist +import spack.builder import spack.concretize import spack.config as cfg import spack.error @@ -1387,7 +1388,11 @@ def copy_stage_logs_to_artifacts(job_spec: spack.spec.Spec, job_log_dir: str) -> stage_dir = job_pkg.stage.path tty.debug(f"stage dir: {stage_dir}") - for file in [job_pkg.log_path, job_pkg.env_mods_path, *job_pkg.builder.archive_files]: + for file in [ + job_pkg.log_path, + job_pkg.env_mods_path, + *spack.builder.create(job_pkg).archive_files, + ]: copy_files_to_artifacts(file, job_log_dir) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 890b32b3002507..25b113992d602d 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -11,6 +11,7 @@ import llnl.util.tty.color as color from llnl.util.tty.colify import colify +import spack.builder import spack.deptypes as dt import spack.fetch_strategy as fs import spack.install_test @@ -202,11 +203,13 @@ def print_namespace(pkg, args): def print_phases(pkg, args): """output installation phases""" - if hasattr(pkg.builder, "phases") and pkg.builder.phases: + builder = spack.builder.create(pkg) + + if hasattr(builder, "phases") and builder.phases: color.cprint("") color.cprint(section_title("Installation Phases:")) phase_str = "" - for phase in pkg.builder.phases: + for phase in builder.phases: phase_str += " {0}".format(phase) color.cprint(phase_str) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 0e3bb522cefe8b..e8a89dc5a5d6c1 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -34,12 +34,13 @@ class OpenMpi(Package): import collections.abc import os.path import re -from typing import TYPE_CHECKING, Any, Callable, List, Optional, Tuple, Union +from typing import Any, Callable, List, Optional, Tuple, Union import llnl.util.lang import llnl.util.tty.color import spack.deptypes as dt +import spack.package_base import spack.patch import spack.spec import spack.util.crypto @@ -56,13 +57,8 @@ class OpenMpi(Package): VersionLookupError, ) -if TYPE_CHECKING: - import spack.package_base - __all__ = [ "DirectiveError", - "DirectiveMeta", - "DisableRedistribute", "version", "conditional", "conflicts", @@ -85,15 +81,15 @@ class OpenMpi(Package): SpecType = str DepType = Union[Tuple[str, ...], str] -WhenType = Optional[Union["spack.spec.Spec", str, bool]] -Patcher = Callable[[Union["spack.package_base.PackageBase", Dependency]], None] +WhenType = Optional[Union[spack.spec.Spec, str, bool]] +Patcher = Callable[[Union[spack.package_base.PackageBase, Dependency]], None] PatchesType = Optional[Union[Patcher, str, List[Union[Patcher, str]]]] SUPPORTED_LANGUAGES = ("fortran", "cxx", "c") -def _make_when_spec(value: WhenType) -> Optional["spack.spec.Spec"]: +def _make_when_spec(value: WhenType) -> Optional[spack.spec.Spec]: """Create a ``Spec`` that indicates when a directive should be applied. Directives with ``when`` specs, e.g.: @@ -138,7 +134,7 @@ def _make_when_spec(value: WhenType) -> Optional["spack.spec.Spec"]: return spack.spec.Spec(value) -SubmoduleCallback = Callable[["spack.package_base.PackageBase"], Union[str, List[str], bool]] +SubmoduleCallback = Callable[[spack.package_base.PackageBase], Union[str, List[str], bool]] directive = DirectiveMeta.directive @@ -254,8 +250,8 @@ def _execute_version(pkg, ver, **kwargs): def _depends_on( - pkg: "spack.package_base.PackageBase", - spec: "spack.spec.Spec", + pkg: spack.package_base.PackageBase, + spec: spack.spec.Spec, *, when: WhenType = None, type: DepType = dt.DEFAULT_TYPES, @@ -334,7 +330,7 @@ def conflicts(conflict_spec: SpecType, when: WhenType = None, msg: Optional[str] msg (str): optional user defined message """ - def _execute_conflicts(pkg: "spack.package_base.PackageBase"): + def _execute_conflicts(pkg: spack.package_base.PackageBase): # If when is not specified the conflict always holds when_spec = _make_when_spec(when) if not when_spec: @@ -375,19 +371,12 @@ def depends_on( assert type == "build", "languages must be of 'build' type" return _language(lang_spec_str=spec, when=when) - def _execute_depends_on(pkg: "spack.package_base.PackageBase"): + def _execute_depends_on(pkg: spack.package_base.PackageBase): _depends_on(pkg, dep_spec, when=when, type=type, patches=patches) return _execute_depends_on -#: Store whether a given Spec source/binary should not be redistributed. -class DisableRedistribute: - def __init__(self, source, binary): - self.source = source - self.binary = binary - - @directive("disable_redistribute") def redistribute(source=None, binary=None, when: WhenType = None): """Can be used inside a Package definition to declare that @@ -404,7 +393,7 @@ def redistribute(source=None, binary=None, when: WhenType = None): def _execute_redistribute( - pkg: "spack.package_base.PackageBase", source=None, binary=None, when: WhenType = None + pkg: spack.package_base.PackageBase, source=None, binary=None, when: WhenType = None ): if source is None and binary is None: return @@ -434,7 +423,7 @@ def _execute_redistribute( if not binary: disable.binary = True else: - pkg.disable_redistribute[when_spec] = DisableRedistribute( + pkg.disable_redistribute[when_spec] = spack.package_base.DisableRedistribute( source=not source, binary=not binary ) @@ -480,7 +469,7 @@ def provides(*specs: SpecType, when: WhenType = None): when: condition when this provides clause needs to be considered """ - def _execute_provides(pkg: "spack.package_base.PackageBase"): + def _execute_provides(pkg: spack.package_base.PackageBase): import spack.parser # Avoid circular dependency when_spec = _make_when_spec(when) @@ -528,7 +517,7 @@ def can_splice( variants will be skipped by '*'. """ - def _execute_can_splice(pkg: "spack.package_base.PackageBase"): + def _execute_can_splice(pkg: spack.package_base.PackageBase): when_spec = _make_when_spec(when) if isinstance(match_variants, str) and match_variants != "*": raise ValueError( @@ -569,7 +558,7 @@ def patch( compressed URL patches) """ - def _execute_patch(pkg_or_dep: Union["spack.package_base.PackageBase", Dependency]): + def _execute_patch(pkg_or_dep: Union[spack.package_base.PackageBase, Dependency]): pkg = pkg_or_dep if isinstance(pkg, Dependency): pkg = pkg.pkg @@ -893,7 +882,7 @@ def requires(*requirement_specs: str, policy="one_of", when=None, msg=None): msg: optional user defined message """ - def _execute_requires(pkg: "spack.package_base.PackageBase"): + def _execute_requires(pkg: spack.package_base.PackageBase): if policy not in ("one_of", "any_of"): err_msg = ( f"the 'policy' argument of the 'requires' directive in {pkg.name} is set " @@ -918,7 +907,7 @@ def _execute_requires(pkg: "spack.package_base.PackageBase"): def _language(lang_spec_str: str, *, when: Optional[Union[str, bool]] = None): """Temporary implementation of language virtuals, until compilers are proper dependencies.""" - def _execute_languages(pkg: "spack.package_base.PackageBase"): + def _execute_languages(pkg: spack.package_base.PackageBase): when_spec = _make_when_spec(when) if not when_spec: return diff --git a/lib/spack/spack/install_test.py b/lib/spack/spack/install_test.py index d1c5197598bb91..a4401fc87870c4 100644 --- a/lib/spack/spack/install_test.py +++ b/lib/spack/spack/install_test.py @@ -23,7 +23,6 @@ from llnl.util.tty.color import colorize import spack.build_environment -import spack.builder import spack.config import spack.error import spack.package_base @@ -353,9 +352,7 @@ def status(self, name: str, status: "TestStatus", msg: Optional[str] = None): self.test_parts[part_name] = status self.counts[status] += 1 - def phase_tests( - self, builder: spack.builder.Builder, phase_name: str, method_names: List[str] - ): + def phase_tests(self, builder, phase_name: str, method_names: List[str]): """Execute the builder's package phase-time tests. Args: diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index be09973336b2cd..1fffe251f35773 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -50,6 +50,7 @@ import spack.binary_distribution as binary_distribution import spack.build_environment +import spack.builder import spack.config import spack.database import spack.deptypes as dt @@ -212,7 +213,7 @@ def _check_last_phase(pkg: "spack.package_base.PackageBase") -> None: Raises: ``BadInstallPhase`` if stop_before or last phase is invalid """ - phases = pkg.builder.phases # type: ignore[attr-defined] + phases = spack.builder.create(pkg).phases # type: ignore[attr-defined] if pkg.stop_before_phase and pkg.stop_before_phase not in phases: # type: ignore[attr-defined] raise BadInstallPhase(pkg.name, pkg.stop_before_phase) # type: ignore[attr-defined] @@ -661,7 +662,7 @@ def log(pkg: "spack.package_base.PackageBase") -> None: spack.store.STORE.layout.metadata_path(pkg.spec), "archived-files" ) - for glob_expr in pkg.builder.archive_files: + for glob_expr in spack.builder.create(pkg).archive_files: # Check that we are trying to copy things that are # in the stage tree (not arbitrary files) abs_expr = os.path.realpath(glob_expr) @@ -2394,7 +2395,6 @@ def _install_source(self) -> None: fs.install_tree(pkg.stage.source_path, src_target) def _real_install(self) -> None: - import spack.builder pkg = self.pkg diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index fe38d1f963afeb..a4fd8535c44e8d 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -29,6 +29,7 @@ import spack.config import spack.error import spack.fetch_strategy +import spack.mirror import spack.oci.image import spack.repo import spack.spec diff --git a/lib/spack/spack/mixins.py b/lib/spack/spack/mixins.py index e0e25f42bb4530..2db35fa13490f2 100644 --- a/lib/spack/spack/mixins.py +++ b/lib/spack/spack/mixins.py @@ -10,7 +10,7 @@ import llnl.util.filesystem -import spack.builder +import spack.phase_callbacks def filter_compiler_wrappers(*files, **kwargs): @@ -111,4 +111,4 @@ def _filter_compiler_wrappers_impl(pkg_or_builder): if pkg.compiler.name == "nag": x.filter("-Wl,--enable-new-dtags", "", **filter_kwargs) - spack.builder.run_after(after)(_filter_compiler_wrappers_impl) + spack.phase_callbacks.run_after(after)(_filter_compiler_wrappers_impl) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index f8028d9ecaf10c..8a7795b2ce1b8c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -74,7 +74,7 @@ from spack.build_systems.sourceware import SourcewarePackage from spack.build_systems.waf import WafPackage from spack.build_systems.xorg import XorgPackage -from spack.builder import run_after, run_before +from spack.builder import BaseBuilder from spack.config import determine_number_of_jobs from spack.deptypes import ALL_TYPES as all_deptypes from spack.directives import * @@ -100,6 +100,7 @@ on_package_attributes, ) from spack.package_completions import * +from spack.phase_callbacks import run_after, run_before from spack.spec import InvalidSpecDetected, Spec from spack.util.executable import * from spack.util.filesystem import file_command, fix_darwin_install_name, mime_type diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 5410f72ab16f9b..6ebc948ca46ba4 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -32,18 +32,18 @@ from llnl.util.lang import classproperty, memoized from llnl.util.link_tree import LinkTree -import spack.builder import spack.compilers import spack.config import spack.dependency import spack.deptypes as dt -import spack.directives +import spack.directives_meta import spack.error import spack.fetch_strategy as fs import spack.hooks import spack.mirror import spack.multimethod import spack.patch +import spack.phase_callbacks import spack.repo import spack.spec import spack.store @@ -51,9 +51,9 @@ import spack.util.environment import spack.util.path import spack.util.web +import spack.variant from spack.error import InstallError, NoURLError, PackageError from spack.filesystem_view import YamlFilesystemView -from spack.install_test import PackageTest, TestSuite from spack.solver.version_order import concretization_version_order from spack.stage import DevelopStage, ResourceStage, Stage, StageComposite, compute_stage_name from spack.util.package_hash import package_hash @@ -299,9 +299,9 @@ def determine_variants(cls, objs, version_str): class PackageMeta( - spack.builder.PhaseCallbacksMeta, + spack.phase_callbacks.PhaseCallbacksMeta, DetectablePackageMeta, - spack.directives.DirectiveMeta, + spack.directives_meta.DirectiveMeta, spack.multimethod.MultiMethodMeta, ): """ @@ -453,7 +453,7 @@ def _names(when_indexed_dictionary: WhenDict) -> List[str]: return sorted(all_names) -WhenVariantList = List[Tuple["spack.spec.Spec", "spack.variant.Variant"]] +WhenVariantList = List[Tuple[spack.spec.Spec, spack.variant.Variant]] def _remove_overridden_vdefs(variant_defs: WhenVariantList) -> None: @@ -492,41 +492,14 @@ class Hipblas: i += 1 -class RedistributionMixin: - """Logic for determining whether a Package is source/binary - redistributable. - """ - - #: Store whether a given Spec source/binary should not be - #: redistributed. - disable_redistribute: Dict["spack.spec.Spec", "spack.directives.DisableRedistribute"] +#: Store whether a given Spec source/binary should not be redistributed. +class DisableRedistribute: + def __init__(self, source, binary): + self.source = source + self.binary = binary - # Source redistribution must be determined before concretization - # (because source mirrors work with un-concretized Specs). - @classmethod - def redistribute_source(cls, spec): - """Whether it should be possible to add the source of this - package to a Spack mirror. - """ - for when_spec, disable_redistribute in cls.disable_redistribute.items(): - if disable_redistribute.source and spec.satisfies(when_spec): - return False - - return True - @property - def redistribute_binary(self): - """Whether it should be possible to create a binary out of an - installed instance of this package. - """ - for when_spec, disable_redistribute in self.__class__.disable_redistribute.items(): - if disable_redistribute.binary and self.spec.satisfies(when_spec): - return False - - return True - - -class PackageBase(WindowsRPath, PackageViewMixin, RedistributionMixin, metaclass=PackageMeta): +class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta): """This is the superclass for all spack packages. ***The Package class*** @@ -612,17 +585,20 @@ class PackageBase(WindowsRPath, PackageViewMixin, RedistributionMixin, metaclass # Declare versions dictionary as placeholder for values. # This allows analysis tools to correctly interpret the class attributes. versions: dict - dependencies: Dict["spack.spec.Spec", Dict[str, "spack.dependency.Dependency"]] - conflicts: Dict["spack.spec.Spec", List[Tuple["spack.spec.Spec", Optional[str]]]] + dependencies: Dict[spack.spec.Spec, Dict[str, spack.dependency.Dependency]] + conflicts: Dict[spack.spec.Spec, List[Tuple[spack.spec.Spec, Optional[str]]]] requirements: Dict[ - "spack.spec.Spec", List[Tuple[Tuple["spack.spec.Spec", ...], str, Optional[str]]] + spack.spec.Spec, List[Tuple[Tuple[spack.spec.Spec, ...], str, Optional[str]]] ] - provided: Dict["spack.spec.Spec", Set["spack.spec.Spec"]] - provided_together: Dict["spack.spec.Spec", List[Set[str]]] - patches: Dict["spack.spec.Spec", List["spack.patch.Patch"]] - variants: Dict["spack.spec.Spec", Dict[str, "spack.variant.Variant"]] - languages: Dict["spack.spec.Spec", Set[str]] - splice_specs: Dict["spack.spec.Spec", Tuple["spack.spec.Spec", Union[None, str, List[str]]]] + provided: Dict[spack.spec.Spec, Set[spack.spec.Spec]] + provided_together: Dict[spack.spec.Spec, List[Set[str]]] + patches: Dict[spack.spec.Spec, List[spack.patch.Patch]] + variants: Dict[spack.spec.Spec, Dict[str, spack.variant.Variant]] + languages: Dict[spack.spec.Spec, Set[str]] + splice_specs: Dict[spack.spec.Spec, Tuple[spack.spec.Spec, Union[None, str, List[str]]]] + + #: Store whether a given Spec source/binary should not be redistributed. + disable_redistribute: Dict[spack.spec.Spec, DisableRedistribute] #: By default, packages are not virtual #: Virtual packages override this attribute @@ -737,11 +713,11 @@ class PackageBase(WindowsRPath, PackageViewMixin, RedistributionMixin, metaclass test_requires_compiler: bool = False #: TestSuite instance used to manage stand-alone tests for 1+ specs. - test_suite: Optional["TestSuite"] = None + test_suite: Optional[Any] = None def __init__(self, spec): # this determines how the package should be built. - self.spec: "spack.spec.Spec" = spec + self.spec: spack.spec.Spec = spec # Allow custom staging paths for packages self.path = None @@ -759,7 +735,7 @@ def __init__(self, spec): # init internal variables self._stage: Optional[StageComposite] = None self._fetcher = None - self._tester: Optional["PackageTest"] = None + self._tester: Optional[Any] = None # Set up timing variables self._fetch_time = 0.0 @@ -809,9 +785,7 @@ def variant_definitions(cls, name: str) -> WhenVariantList: return defs @classmethod - def variant_items( - cls, - ) -> Iterable[Tuple["spack.spec.Spec", Dict[str, "spack.variant.Variant"]]]: + def variant_items(cls) -> Iterable[Tuple[spack.spec.Spec, Dict[str, spack.variant.Variant]]]: """Iterate over ``cls.variants.items()`` with overridden definitions removed.""" # Note: This is quadratic in the average number of variant definitions per name. # That is likely close to linear in practice, as there are few variants with @@ -829,7 +803,7 @@ def variant_items( if filtered_variants_by_name: yield when, filtered_variants_by_name - def get_variant(self, name: str) -> "spack.variant.Variant": + def get_variant(self, name: str) -> spack.variant.Variant: """Get the highest precedence variant definition matching this package's spec. Arguments: @@ -1004,6 +978,26 @@ def global_license_file(self): self.global_license_dir, self.name, os.path.basename(self.license_files[0]) ) + # Source redistribution must be determined before concretization (because source mirrors work + # with abstract specs). + @classmethod + def redistribute_source(cls, spec): + """Whether it should be possible to add the source of this + package to a Spack mirror.""" + for when_spec, disable_redistribute in cls.disable_redistribute.items(): + if disable_redistribute.source and spec.satisfies(when_spec): + return False + return True + + @property + def redistribute_binary(self): + """Whether it should be possible to create a binary out of an installed instance of this + package.""" + for when_spec, disable_redistribute in self.disable_redistribute.items(): + if disable_redistribute.binary and self.spec.satisfies(when_spec): + return False + return True + # NOTE: return type should be Optional[Literal['all', 'specific', 'none']] in # Python 3.8+, but we still support 3.6. @property @@ -1353,11 +1347,13 @@ def archive_install_test_log(self): @property def tester(self): + import spack.install_test + if not self.spec.versions.concrete: raise ValueError("Cannot retrieve tester for package without concrete version.") if not self._tester: - self._tester = PackageTest(self) + self._tester = spack.install_test.PackageTest(self) return self._tester @property @@ -2014,72 +2010,58 @@ def build_system_flags( """ return None, None, flags - def setup_run_environment(self, env): + def setup_run_environment(self, env: spack.util.environment.EnvironmentModifications) -> None: """Sets up the run environment for a package. Args: - env (spack.util.environment.EnvironmentModifications): environment - modifications to be applied when the package is run. Package authors + env: environment modifications to be applied when the package is run. Package authors can call methods on it to alter the run environment. """ pass - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: spack.util.environment.EnvironmentModifications, dependent_spec: spack.spec.Spec + ) -> None: """Sets up the run environment of packages that depend on this one. - This is similar to ``setup_run_environment``, but it is used to - modify the run environments of packages that *depend* on this one. + This is similar to ``setup_run_environment``, but it is used to modify the run environment + of a package that *depends* on this one. - This gives packages like Python and others that follow the extension - model a way to implement common environment or run-time settings - for dependencies. + This gives packages like Python and others that follow the extension model a way to + implement common environment or run-time settings for dependencies. Args: - env (spack.util.environment.EnvironmentModifications): environment - modifications to be applied when the dependent package is run. - Package authors can call methods on it to alter the build environment. + env: environment modifications to be applied when the dependent package is run. Package + authors can call methods on it to alter the build environment. - dependent_spec (spack.spec.Spec): The spec of the dependent package - about to be run. This allows the extendee (self) to query - the dependent's state. Note that *this* package's spec is + dependent_spec: The spec of the dependent package about to be run. This allows the + extendee (self) to query the dependent's state. Note that *this* package's spec is available as ``self.spec`` """ pass - def setup_dependent_package(self, module, dependent_spec): - """Set up Python module-scope variables for dependent packages. - - Called before the install() method of dependents. + def setup_dependent_package(self, module, dependent_spec: spack.spec.Spec) -> None: + """Set up module-scope global variables for dependent packages. - Default implementation does nothing, but this can be - overridden by an extendable package to set up the module of - its extensions. This is useful if there are some common steps - to installing all extensions for a certain package. + This function is called when setting up the build and run environments of a DAG. Examples: - 1. Extensions often need to invoke the ``python`` interpreter - from the Python installation being extended. This routine - can put a ``python()`` Executable object in the module scope - for the extension package to simplify extension installs. - - 2. MPI compilers could set some variables in the dependent's - scope that point to ``mpicc``, ``mpicxx``, etc., allowing - them to be called by common name regardless of which MPI is used. + 1. Extensions often need to invoke the ``python`` interpreter from the Python installation + being extended. This routine can put a ``python`` Executable as a global in the module + scope for the extension package to simplify extension installs. - 3. BLAS/LAPACK implementations can set some variables - indicating the path to their libraries, since these - paths differ by BLAS/LAPACK implementation. + 2. MPI compilers could set some variables in the dependent's scope that point to ``mpicc``, + ``mpicxx``, etc., allowing them to be called by common name regardless of which MPI is + used. Args: - module (spack.package_base.PackageBase.module): The Python ``module`` - object of the dependent package. Packages can use this to set - module-scope variables for the dependent to use. + module: The Python ``module`` object of the dependent package. Packages can use this to + set module-scope variables for the dependent to use. - dependent_spec (spack.spec.Spec): The spec of the dependent package - about to be built. This allows the extendee (self) to - query the dependent's state. Note that *this* - package's spec is available as ``self.spec``. + dependent_spec: The spec of the dependent package about to be built. This allows the + extendee (self) to query the dependent's state. Note that *this* package's spec is + available as ``self.spec``. """ pass @@ -2106,7 +2088,7 @@ def flag_handler(self, var: FLAG_HANDLER_TYPE) -> None: # arguments. This is implemented for build system classes where # appropriate and will otherwise raise a NotImplementedError. - def flags_to_build_system_args(self, flags): + def flags_to_build_system_args(self, flags: Dict[str, List[str]]) -> None: # Takes flags as a dict name: list of values if any(v for v in flags.values()): msg = "The {0} build system".format(self.__class__.__name__) @@ -2309,10 +2291,6 @@ def rpath_args(self): """ return " ".join("-Wl,-rpath,%s" % p for p in self.rpath) - @property - def builder(self): - return spack.builder.create(self) - inject_flags = PackageBase.inject_flags env_flags = PackageBase.env_flags diff --git a/lib/spack/spack/phase_callbacks.py b/lib/spack/spack/phase_callbacks.py new file mode 100644 index 00000000000000..58eec54ca1c59f --- /dev/null +++ b/lib/spack/spack/phase_callbacks.py @@ -0,0 +1,105 @@ +# 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 collections + +import llnl.util.lang as lang + +#: An object of this kind is a shared global state used to collect callbacks during +#: class definition time, and is flushed when the class object is created at the end +#: of the class definition +#: +#: Args: +#: attribute_name (str): name of the attribute that will be attached to the builder +#: callbacks (list): container used to temporarily aggregate the callbacks +CallbackTemporaryStage = collections.namedtuple( + "CallbackTemporaryStage", ["attribute_name", "callbacks"] +) + +#: Shared global state to aggregate "@run_before" callbacks +_RUN_BEFORE = CallbackTemporaryStage(attribute_name="run_before_callbacks", callbacks=[]) +#: Shared global state to aggregate "@run_after" callbacks +_RUN_AFTER = CallbackTemporaryStage(attribute_name="run_after_callbacks", callbacks=[]) + + +class PhaseCallbacksMeta(type): + """Permit to register arbitrary functions during class definition and run them + later, before or after a given install phase. + + Each method decorated with ``run_before`` or ``run_after`` gets temporarily + stored in a global shared state when a class being defined is parsed by the Python + interpreter. At class definition time that temporary storage gets flushed and a list + of callbacks is attached to the class being defined. + """ + + def __new__(mcs, name, bases, attr_dict): + for temporary_stage in (_RUN_BEFORE, _RUN_AFTER): + staged_callbacks = temporary_stage.callbacks + + # Here we have an adapter from an old-style package. This means there is no + # hierarchy of builders, and every callback that had to be combined between + # *Package and *Builder has been combined already by _PackageAdapterMeta + if name == "Adapter": + continue + + # If we are here we have callbacks. To get a complete list, we accumulate all the + # callbacks from base classes, we deduplicate them, then prepend what we have + # registered here. + # + # The order should be: + # 1. Callbacks are registered in order within the same class + # 2. Callbacks defined in derived classes precede those defined in base + # classes + callbacks_from_base = [] + for base in bases: + current_callbacks = getattr(base, temporary_stage.attribute_name, None) + if not current_callbacks: + continue + callbacks_from_base.extend(current_callbacks) + callbacks_from_base = list(lang.dedupe(callbacks_from_base)) + # Set the callbacks in this class and flush the temporary stage + attr_dict[temporary_stage.attribute_name] = staged_callbacks[:] + callbacks_from_base + del temporary_stage.callbacks[:] + + return super(PhaseCallbacksMeta, mcs).__new__(mcs, name, bases, attr_dict) + + @staticmethod + def run_after(phase, when=None): + """Decorator to register a function for running after a given phase. + + Args: + phase (str): phase after which the function must run. + when (str): condition under which the function is run (if None, it is always run). + """ + + def _decorator(fn): + key = (phase, when) + item = (key, fn) + _RUN_AFTER.callbacks.append(item) + return fn + + return _decorator + + @staticmethod + def run_before(phase, when=None): + """Decorator to register a function for running before a given phase. + + Args: + phase (str): phase before which the function must run. + when (str): condition under which the function is run (if None, it is always run). + """ + + def _decorator(fn): + key = (phase, when) + item = (key, fn) + _RUN_BEFORE.callbacks.append(item) + return fn + + return _decorator + + +# Export these names as standalone to be used in packages +run_after = PhaseCallbacksMeta.run_after +run_before = PhaseCallbacksMeta.run_before diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index 212ec412d3eec9..47173b7dfc71f8 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -15,6 +15,7 @@ import spack.build_systems.autotools import spack.build_systems.cmake +import spack.builder import spack.environment import spack.error import spack.paths @@ -149,7 +150,7 @@ def test_libtool_archive_files_are_deleted_by_default(self, mutable_database): # Assert the libtool archive is not there and we have # a log of removed files - assert not os.path.exists(s.package.builder.libtool_archive_file) + assert not os.path.exists(spack.builder.create(s.package).libtool_archive_file) search_directory = os.path.join(s.prefix, ".spack") libtool_deletion_log = fs.find(search_directory, "removed_la_files.txt", recursive=True) assert libtool_deletion_log @@ -160,11 +161,13 @@ def test_libtool_archive_files_might_be_installed_on_demand( # Install a package that creates a mock libtool archive, # patch its package to preserve the installation s = Spec("libtool-deletion").concretized() - monkeypatch.setattr(type(s.package.builder), "install_libtool_archives", True) + monkeypatch.setattr( + type(spack.builder.create(s.package)), "install_libtool_archives", True + ) PackageInstaller([s.package], explicit=True).install() # Assert libtool archives are installed - assert os.path.exists(s.package.builder.libtool_archive_file) + assert os.path.exists(spack.builder.create(s.package).libtool_archive_file) def test_autotools_gnuconfig_replacement(self, mutable_database): """ @@ -261,7 +264,7 @@ def test_cmake_std_args(self, default_mock_concretization): # Call the function on a CMakePackage instance s = default_mock_concretization("cmake-client") expected = spack.build_systems.cmake.CMakeBuilder.std_args(s.package) - assert s.package.builder.std_cmake_args == expected + assert spack.builder.create(s.package).std_cmake_args == expected # Call it on another kind of package s = default_mock_concretization("mpich") @@ -381,7 +384,9 @@ def test_autotools_args_from_conditional_variant(default_mock_concretization): is not met. When this is the case, the variant is not set in the spec.""" s = default_mock_concretization("autotools-conditional-variants-test") assert "example" not in s.variants - assert len(s.package.builder._activate_or_not("example", "enable", "disable")) == 0 + assert ( + len(spack.builder.create(s.package)._activate_or_not("example", "enable", "disable")) == 0 + ) def test_autoreconf_search_path_args_multiple(default_mock_concretization, tmpdir): diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index f6670157edf9ff..b56d75c6faba61 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -38,7 +38,7 @@ import spack.compiler import spack.compilers import spack.config -import spack.directives +import spack.directives_meta import spack.environment as ev import spack.error import spack.modules.common @@ -1754,7 +1754,7 @@ def clear_directive_functions(): # Make sure any directive functions overidden by tests are cleared before # proceeding with subsequent tests that may depend on the original # functions. - spack.directives.DirectiveMeta._directives_to_be_executed = [] + spack.directives_meta.DirectiveMeta._directives_to_be_executed = [] @pytest.fixture diff --git a/var/spack/repos/builder.test/packages/builder-and-mixins/package.py b/var/spack/repos/builder.test/packages/builder-and-mixins/package.py index 2e12b0e8061230..354f1bcd1afacd 100644 --- a/var/spack/repos/builder.test/packages/builder-and-mixins/package.py +++ b/var/spack/repos/builder.test/packages/builder-and-mixins/package.py @@ -2,7 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import spack.builder +import spack.phase_callbacks from spack.build_systems import generic from spack.package import * @@ -17,7 +17,7 @@ class BuilderAndMixins(Package): version("1.0", md5="0123456789abcdef0123456789abcdef") -class BuilderMixin(metaclass=spack.builder.PhaseCallbacksMeta): +class BuilderMixin(metaclass=spack.phase_callbacks.PhaseCallbacksMeta): @run_before("install") def before_install(self): pass diff --git a/var/spack/repos/builtin.mock/packages/py-test-callback/package.py b/var/spack/repos/builtin.mock/packages/py-test-callback/package.py index b152490895f5e3..4abad2f679a858 100644 --- a/var/spack/repos/builtin.mock/packages/py-test-callback/package.py +++ b/var/spack/repos/builtin.mock/packages/py-test-callback/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.pkg.builtin.mock.python as mp -from spack.build_systems._checks import BaseBuilder, execute_install_time_tests +from spack.build_systems._checks import BuilderWithDefaults, execute_install_time_tests from spack.package import * @@ -31,7 +31,7 @@ def test_callback(self): @spack.builder.builder("testcallback") -class MyBuilder(BaseBuilder): +class MyBuilder(BuilderWithDefaults): phases = ("install",) #: Callback names for install-time test @@ -40,7 +40,7 @@ class MyBuilder(BaseBuilder): def install(self, pkg, spec, prefix): pkg.install(spec, prefix) - spack.builder.run_after("install")(execute_install_time_tests) + spack.phase_callbacks.run_after("install")(execute_install_time_tests) def test_callback(self): self.pkg.test_callback() diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index dabe5554a3f474..b3a966110c5745 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -6,6 +6,7 @@ import os import tempfile +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -313,11 +314,11 @@ def cmake_args(self): # hip support if spec.satisfies("+cuda"): - args.append(self.builder.define_cuda_architectures(self)) + args.append(CMakeBuilder.define_cuda_architectures(self)) # hip support if spec.satisfies("+rocm"): - args.append(self.builder.define_hip_architectures(self)) + args.append(CMakeBuilder.define_hip_architectures(self)) return args diff --git a/var/spack/repos/builtin/packages/assimp/package.py b/var/spack/repos/builtin/packages/assimp/package.py index 2e51f75e53e11e..ec8f239e4c59cd 100644 --- a/var/spack/repos/builtin/packages/assimp/package.py +++ b/var/spack/repos/builtin/packages/assimp/package.py @@ -70,7 +70,7 @@ def flag_handler(self, name, flags): return (None, None, flags) def check(self): - unit = Executable(join_path(self.builder.build_directory, "bin", "unit")) + unit = Executable(join_path(self.build_directory, "bin", "unit")) skipped_tests = [ "AssimpAPITest_aiMatrix3x3.aiMatrix3FromToTest", "AssimpAPITest_aiMatrix4x4.aiMatrix4FromToTest", diff --git a/var/spack/repos/builtin/packages/bacio/package.py b/var/spack/repos/builtin/packages/bacio/package.py index 676dab9849498d..18a80fdcd351f8 100644 --- a/var/spack/repos/builtin/packages/bacio/package.py +++ b/var/spack/repos/builtin/packages/bacio/package.py @@ -39,5 +39,5 @@ def patch(self): filter_file(".+", "2.4.1", "VERSION") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index 2bdaf62c747a58..9974e1d3973237 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -117,8 +117,8 @@ def cmake_args(self): def check(self): # If the tester fails to build, ensure that the check() fails. - if os.path.isfile(join_path(self.builder.build_directory, "test", "tester")): - with working_dir(self.builder.build_directory): + if os.path.isfile(join_path(self.build_directory, "test", "tester")): + with working_dir(self.build_directory): make("check") else: raise Exception("The tester was not built!") diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index dc7317c6bce6c6..ecc493a3b02255 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -823,18 +823,6 @@ def is_64bit(): def setup_run_environment(self, env): env.set("BOOST_ROOT", self.prefix) - def setup_dependent_package(self, module, dependent_spec): - # Disable find package's config mode for versions of Boost that - # didn't provide it. See https://github.com/spack/spack/issues/20169 - # and https://cmake.org/cmake/help/latest/module/FindBoost.html - if self.spec.satisfies("boost@:1.69.0") and dependent_spec.satisfies("build_system=cmake"): - args_fn = type(dependent_spec.package.builder).cmake_args - - def _cmake_args(self): - return ["-DBoost_NO_BOOST_CMAKE=ON"] + args_fn(self) - - type(dependent_spec.package.builder).cmake_args = _cmake_args - def setup_dependent_build_environment(self, env, dependent_spec): if "+context" in self.spec and "context-impl" in self.spec.variants: context_impl = self.spec.variants["context-impl"].value diff --git a/var/spack/repos/builtin/packages/bufr/package.py b/var/spack/repos/builtin/packages/bufr/package.py index be3431fe6a1b11..1d74b9aaf6b44c 100644 --- a/var/spack/repos/builtin/packages/bufr/package.py +++ b/var/spack/repos/builtin/packages/bufr/package.py @@ -129,5 +129,5 @@ def setup_run_environment(self, env): self._setup_bufr_environment(env, suffix) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2/package.py b/var/spack/repos/builtin/packages/g2/package.py index 3f64de93c2e953..b8d4a9be518b14 100644 --- a/var/spack/repos/builtin/packages/g2/package.py +++ b/var/spack/repos/builtin/packages/g2/package.py @@ -98,5 +98,5 @@ def setup_run_environment(self, env): env.set("G2_INC" + suffix, join_path(self.prefix, "include_" + suffix)) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index d4cb7c74a25915..0554ccf7b83a86 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -94,5 +94,5 @@ def setup_run_environment(self, env): env.set("G2C_INC", join_path(self.prefix, "include")) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/g2tmpl/package.py b/var/spack/repos/builtin/packages/g2tmpl/package.py index b5ad734b014528..b76804e873734e 100644 --- a/var/spack/repos/builtin/packages/g2tmpl/package.py +++ b/var/spack/repos/builtin/packages/g2tmpl/package.py @@ -38,5 +38,5 @@ def cmake_args(self): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/gfsio/package.py b/var/spack/repos/builtin/packages/gfsio/package.py index e478a8b8ed5efb..590f70dac58d65 100644 --- a/var/spack/repos/builtin/packages/gfsio/package.py +++ b/var/spack/repos/builtin/packages/gfsio/package.py @@ -46,5 +46,5 @@ def flag_handler(self, name, flags): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index efdcfa90c13407..057d180dd6e1dc 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -208,7 +208,7 @@ def libs(self): return find_libraries(["libglib*"], root=self.prefix, recursive=True) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @property def dtrace_copy_path(self): return join_path(self.stage.source_path, "dtrace-copy") @@ -288,7 +288,7 @@ def gettext_libdir(self): filter_file(pattern, repl, myfile, backup=False) -class MesonBuilder(BaseBuilder, spack.build_systems.meson.MesonBuilder): +class MesonBuilder(AnyBuilder, spack.build_systems.meson.MesonBuilder): def meson_args(self): args = [] if self.spec.satisfies("@2.63.5:"): @@ -330,7 +330,7 @@ def meson_args(self): return args -class AutotoolsBuilder(BaseBuilder, spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): args = [] if self.spec.satisfies("+libmount"): diff --git a/var/spack/repos/builtin/packages/grib-util/package.py b/var/spack/repos/builtin/packages/grib-util/package.py index b8e2aaee371310..b44e86134ea935 100644 --- a/var/spack/repos/builtin/packages/grib-util/package.py +++ b/var/spack/repos/builtin/packages/grib-util/package.py @@ -56,5 +56,5 @@ def cmake_args(self): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index 1e928b27d5f5c2..e4b0ccc8d5726e 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -145,7 +145,5 @@ def cmake_args(self): return args def check(self): - exe = Executable( - join_path(self.builder.build_directory, "clients", "staging", "hipblas-test") - ) + exe = Executable(join_path(self.build_directory, "clients", "staging", "hipblas-test")) exe("--gtest_filter=-*known_bug*") diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 9769f44ebb1ceb..5df642cd904769 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -119,7 +119,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): patch("0001-suite-sparse-include-path-6.1.1.patch", when="@6.1.1:") def check(self): - exe = join_path(self.builder.build_directory, "clients", "staging", "hipsolver-test") + exe = join_path(self.build_directory, "clients", "staging", "hipsolver-test") exe = which(exe) exe(["--gtest_filter=-*known_bug*"]) diff --git a/var/spack/repos/builtin/packages/ip/package.py b/var/spack/repos/builtin/packages/ip/package.py index 5a55f37b81fedc..e87a5fb6f7f101 100644 --- a/var/spack/repos/builtin/packages/ip/package.py +++ b/var/spack/repos/builtin/packages/ip/package.py @@ -121,5 +121,5 @@ def setup_run_environment(self, env): @when("@4:") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/landsfcutil/package.py b/var/spack/repos/builtin/packages/landsfcutil/package.py index 9027d4eeda7437..c137cb2e90ed10 100644 --- a/var/spack/repos/builtin/packages/landsfcutil/package.py +++ b/var/spack/repos/builtin/packages/landsfcutil/package.py @@ -48,5 +48,5 @@ def flag_handler(self, name, flags): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/lapackpp/package.py b/var/spack/repos/builtin/packages/lapackpp/package.py index a97579255586c5..7e3577aa28d204 100644 --- a/var/spack/repos/builtin/packages/lapackpp/package.py +++ b/var/spack/repos/builtin/packages/lapackpp/package.py @@ -129,8 +129,8 @@ def cmake_args(self): def check(self): # If the tester fails to build, ensure that the check() fails. - if os.path.isfile(join_path(self.builder.build_directory, "test", "tester")): - with working_dir(self.builder.build_directory): + if os.path.isfile(join_path(self.build_directory, "test", "tester")): + with working_dir(self.build_directory): make("check") else: raise Exception("The tester was not built!") diff --git a/var/spack/repos/builtin/packages/lc-framework/package.py b/var/spack/repos/builtin/packages/lc-framework/package.py index 60ff03576b29a8..0f9f1b1be2ef07 100644 --- a/var/spack/repos/builtin/packages/lc-framework/package.py +++ b/var/spack/repos/builtin/packages/lc-framework/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -45,6 +46,6 @@ def cmake_args(self): args = [self.define_from_variant("LC_BUILD_LIBPRESSIO_PLUGIN", "libpressio")] if self.spec.satisfies("+cuda"): args.append(self.define_from_variant("LC_BUILD_CUDA", "cuda")) - args.append(self.builder.define_cuda_architectures(self)) + args.append(CMakeBuilder.define_cuda_architectures(self)) return args diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 048debd6589a8d..8bd6a23b31c1d3 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -6,7 +6,6 @@ import llnl.util.filesystem as fs -import spack.builder from spack.build_systems import autotools, nmake from spack.package import * @@ -225,7 +224,7 @@ def test_xmllint(self): xmllint("--dtdvalid", dtd_path, data_dir.join("info.xml")) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") @on_package_attributes(run_tests=True) def import_module_test(self): @@ -234,7 +233,7 @@ def import_module_test(self): python("-c", "import libxml2") -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): def configure_args(self): spec = self.spec @@ -260,7 +259,7 @@ def configure_args(self): return args -class NMakeBuilder(BaseBuilder, nmake.NMakeBuilder): +class NMakeBuilder(AnyBuilder, nmake.NMakeBuilder): phases = ("configure", "build", "install") @property diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 9f31c3be66fbb2..4fa64a712ea37e 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -423,7 +423,7 @@ def setup_build_environment(self, env): @run_after("build") @on_package_attributes(run_tests=True) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): # The test suite contains a lot of tests. We select only those # that are cheap. Note this requires MPI and 6 processes ctest("--output-on-failure", "-L", "ESSENTIAL") diff --git a/var/spack/repos/builtin/packages/mercury/package.py b/var/spack/repos/builtin/packages/mercury/package.py index 9a533cde8c1993..bf4de22b88b359 100644 --- a/var/spack/repos/builtin/packages/mercury/package.py +++ b/var/spack/repos/builtin/packages/mercury/package.py @@ -160,5 +160,5 @@ def cmake_args(self): def check(self): """Unit tests fail when run in parallel.""" - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test", parallel=False) diff --git a/var/spack/repos/builtin/packages/ncio/package.py b/var/spack/repos/builtin/packages/ncio/package.py index d710a81923fb6b..665742c633702b 100644 --- a/var/spack/repos/builtin/packages/ncio/package.py +++ b/var/spack/repos/builtin/packages/ncio/package.py @@ -36,5 +36,5 @@ def setup_run_environment(self, env): env.set("NCIO_LIBDIR", lib[0]) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/nemsio/package.py b/var/spack/repos/builtin/packages/nemsio/package.py index 0677376d154ebc..20696a70f62239 100644 --- a/var/spack/repos/builtin/packages/nemsio/package.py +++ b/var/spack/repos/builtin/packages/nemsio/package.py @@ -48,5 +48,5 @@ def cmake_args(self): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/nemsiogfs/package.py b/var/spack/repos/builtin/packages/nemsiogfs/package.py index e38f5a0adf2a33..21bb43c2bacd34 100644 --- a/var/spack/repos/builtin/packages/nemsiogfs/package.py +++ b/var/spack/repos/builtin/packages/nemsiogfs/package.py @@ -26,5 +26,5 @@ class Nemsiogfs(CMakePackage): depends_on("nemsio") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 986fbfe7492ddf..d2d05a29d6128d 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -9,7 +9,6 @@ from llnl.util.lang import dedupe -import spack.builder from spack.build_systems import autotools, cmake from spack.package import * from spack.util.environment import filter_system_paths @@ -291,7 +290,7 @@ def setup_run_environment(self, env): env.append_path("HDF5_PLUGIN_PATH", self.prefix.plugins) def flag_handler(self, name, flags): - if self.builder.build_system == "autotools": + if self.spec.satisfies("build_system=autotools"): if name == "cflags": if "+pic" in self.spec: flags.append(self.compiler.cc_pic_flag) @@ -305,7 +304,7 @@ def libs(self): return find_libraries("libnetcdf", root=self.prefix, shared=shared, recursive=True) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): def setup_dependent_build_environment(self, env, dependent_spec): # Some packages, e.g. ncview, refuse to build if the compiler path returned by nc-config # differs from the path to the compiler that the package should be built with. Therefore, @@ -329,7 +328,7 @@ def backup_nc_config(self): filter_compiler_wrappers("nc-config", relative_root="bin") -class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, cmake.CMakeBuilder): def cmake_args(self): base_cmake_args = [ self.define_from_variant("BUILD_SHARED_LIBS", "shared"), @@ -376,7 +375,7 @@ def patch_hdf5_pkgconfigcmake(self): filter_file(f"hdf5_hl-{config}", "hdf5_hl", *files, ignore_absent=True) -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): @property def force_autoreconf(self): return any(self.spec.satisfies(s) for s in self.pkg._force_autoreconf_when) diff --git a/var/spack/repos/builtin/packages/nimrod-aai/package.py b/var/spack/repos/builtin/packages/nimrod-aai/package.py index 0b24858ef86886..2bfc608861becd 100644 --- a/var/spack/repos/builtin/packages/nimrod-aai/package.py +++ b/var/spack/repos/builtin/packages/nimrod-aai/package.py @@ -69,5 +69,5 @@ def cmake_args(self): @run_after("build") @on_package_attributes(run_tests=True) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): ctest("--output-on-failure") diff --git a/var/spack/repos/builtin/packages/prod-util/package.py b/var/spack/repos/builtin/packages/prod-util/package.py index e7c5b37485713b..0fe46740f131be 100644 --- a/var/spack/repos/builtin/packages/prod-util/package.py +++ b/var/spack/repos/builtin/packages/prod-util/package.py @@ -34,5 +34,5 @@ class ProdUtil(CMakePackage): depends_on("w3emc", when="@2:") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index d9ed3ef11d8403..17d7da99ecc07c 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import spack.builder from spack.build_systems import autotools, cmake from spack.package import * @@ -145,7 +144,7 @@ def setup_run_environment(self, env): env.set("PROJ_LIB", self.prefix.share.proj) -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): def setup_build_environment(self, env): env.set("PROJ_LIB", join_path(self.pkg.stage.source_path, "nad")) @@ -154,7 +153,7 @@ def install_datum_grids(self): install_tree(join_path("share", "proj"), self.prefix.share.proj) -class CMakeBuilder(BaseBuilder, cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, cmake.CMakeBuilder): def cmake_args(self): shared_arg = "BUILD_SHARED_LIBS" if self.spec.satisfies("@7:") else "BUILD_LIBPROJ_SHARED" args = [ @@ -177,7 +176,7 @@ def cmake_args(self): return args -class AutotoolsBuilder(BaseBuilder, autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, autotools.AutotoolsBuilder): def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 39f1d108629b0e..1894598f769141 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -448,7 +448,7 @@ def cmake_args(self): @property def build_relpath(self): """Relative path to the cmake build subdirectory.""" - return join_path("..", self.builder.build_dirname) + return join_path("..", self.build_dirname) @run_after("install") def setup_build_tests(self): diff --git a/var/spack/repos/builtin/packages/rocthrust/package.py b/var/spack/repos/builtin/packages/rocthrust/package.py index 93b017243fcd17..29029e992a9bbb 100644 --- a/var/spack/repos/builtin/packages/rocthrust/package.py +++ b/var/spack/repos/builtin/packages/rocthrust/package.py @@ -77,7 +77,7 @@ class Rocthrust(CMakePackage): depends_on(f"rocm-cmake@{ver}:", type="build", when=f"@{ver}") def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/sfcio/package.py b/var/spack/repos/builtin/packages/sfcio/package.py index afe4ed84c7f0e9..5ee64f70928c3f 100644 --- a/var/spack/repos/builtin/packages/sfcio/package.py +++ b/var/spack/repos/builtin/packages/sfcio/package.py @@ -46,5 +46,5 @@ def flag_handler(self, name, flags): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/sigio/package.py b/var/spack/repos/builtin/packages/sigio/package.py index 305f0e9958bc2d..b6d3020211bb3d 100644 --- a/var/spack/repos/builtin/packages/sigio/package.py +++ b/var/spack/repos/builtin/packages/sigio/package.py @@ -44,5 +44,5 @@ def flag_handler(self, name, flags): return (None, None, flags) def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/sp/package.py b/var/spack/repos/builtin/packages/sp/package.py index 5b3b7b4840719b..7b22e688b8deda 100644 --- a/var/spack/repos/builtin/packages/sp/package.py +++ b/var/spack/repos/builtin/packages/sp/package.py @@ -66,5 +66,5 @@ def cmake_args(self): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index fc600ac42e634b..28cc57f26d07f8 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -226,7 +226,7 @@ def _test_example(self, test_prog, test_cmd, pre_args=[]): ) with working_dir(test_dir): - opts = self.builder.std_cmake_args + self.cmake_args() + ["."] + opts = self.std_cmake_args + self.cmake_args() + ["."] cmake = self.spec["cmake"].command cmake(*opts) diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 5be35b6bb04bb6..41f939df5beaff 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -743,7 +743,7 @@ def libs(self): @on_package_attributes(run_tests=True) def check_test_install(self): """Perform test_install on the build.""" - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test_install") @property diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 6a62ae9e1744c4..92f7481befc575 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -84,7 +84,7 @@ def test_example(self): superlu() -class BaseBuilder(metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") def setup_standalone_tests(self): """Set up and copy example source files after the package is installed @@ -138,7 +138,7 @@ def _make_hdr_for_test(self, lib): ] -class CMakeBuilder(BaseBuilder, spack.build_systems.cmake.CMakeBuilder): +class CMakeBuilder(AnyBuilder, spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): if self.pkg.version > Version("5.2.1"): _blaslib_key = "enable_internal_blaslib" @@ -153,7 +153,7 @@ def cmake_args(self): return args -class GenericBuilder(BaseBuilder, spack.build_systems.generic.GenericBuilder): +class GenericBuilder(AnyBuilder, spack.build_systems.generic.GenericBuilder): def install(self, pkg, spec, prefix): """Use autotools before version 5""" # Define make.inc file diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index d95d80331e5c1c..a6b243d4bf2500 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -14,22 +14,20 @@ is_windows = sys.platform == "win32" -class TclHelper: - @staticmethod - def find_script_dir(spec): - # Put more-specific prefixes first - check_prefixes = [ - join_path(spec.prefix, "share", "tcl{0}".format(spec.package.version.up_to(2))), - spec.prefix, - ] - for prefix in check_prefixes: - result = find_first(prefix, "init.tcl") - if result: - return os.path.dirname(result) - raise RuntimeError("Cannot locate init.tcl") - - -class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage, TclHelper): +def find_script_dir(spec: Spec) -> str: + # Put more-specific prefixes first + check_prefixes = [ + join_path(spec.prefix, "share", "tcl{0}".format(spec.package.version.up_to(2))), + spec.prefix, + ] + for prefix in check_prefixes: + result = find_first(prefix, "init.tcl") + if result: + return os.path.dirname(result) + raise RuntimeError("Cannot locate init.tcl") + + +class Tcl(AutotoolsPackage, NMakePackage, SourceforgePackage): """Tcl (Tool Command Language) is a very powerful but easy to learn dynamic programming language, suitable for a very wide range of uses, including web and desktop applications, networking, administration, testing and many more. Open source @@ -105,7 +103,7 @@ def setup_run_environment(self, env): """ # When using tkinter from within spack provided python+tkinter, # python will not be able to find Tcl unless TCL_LIBRARY is set. - env.set("TCL_LIBRARY", TclHelper.find_script_dir(self.spec)) + env.set("TCL_LIBRARY", find_script_dir(self.spec)) def setup_dependent_run_environment(self, env, dependent_spec): """Set TCLLIBPATH to include the tcl-shipped directory for @@ -123,7 +121,7 @@ def setup_dependent_run_environment(self, env, dependent_spec): env.prepend_path("TCLLIBPATH", tcllibpath, separator=" ") -class BaseBuilder(TclHelper, metaclass=spack.builder.PhaseCallbacksMeta): +class AnyBuilder(BaseBuilder): @run_after("install") def symlink_tclsh(self): # There's some logic regarding this suffix in the build system @@ -151,7 +149,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): * https://wiki.tcl-lang.org/page/TCL_LIBRARY * https://wiki.tcl-lang.org/page/TCLLIBPATH """ - env.set("TCL_LIBRARY", TclHelper.find_script_dir(self.spec)) + env.set("TCL_LIBRARY", find_script_dir(self.spec)) # If we set TCLLIBPATH, we must also ensure that the corresponding # tcl is found in the build environment. This to prevent cases @@ -182,7 +180,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("TCLLIBPATH", tcllibpath, separator=" ") -class AutotoolsBuilder(BaseBuilder, spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(AnyBuilder, spack.build_systems.autotools.AutotoolsBuilder): configure_directory = "unix" def install(self, pkg, spec, prefix): @@ -215,7 +213,7 @@ def install(self, pkg, spec, prefix): make("clean") -class NMakeBuilder(BaseBuilder, spack.build_systems.nmake.NMakeBuilder): +class NMakeBuilder(AnyBuilder, spack.build_systems.nmake.NMakeBuilder): build_targets = ["all"] install_targets = ["install"] diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index c5cef49c5856f2..f896e2160e65de 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -7,6 +7,7 @@ import os import sys +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -249,7 +250,7 @@ def cmake_args(self): options.append("-DCMAKE_CUDA_HOST_COMPILER={0}".format(env["SPACK_CXX"])) if spec.satisfies("@1.9.0:") and spec.satisfies("^cmake@3.18:"): - options.append(self.builder.define_cuda_architectures(self)) + options.append(CMakeBuilder.define_cuda_architectures(self)) else: # VTKm_CUDA_Architecture only accepts a single CUDA arch @@ -269,7 +270,7 @@ def cmake_args(self): # hip support if "+rocm" in spec: - options.append(self.builder.define_hip_architectures(self)) + options.append(CMakeBuilder.define_hip_architectures(self)) return options diff --git a/var/spack/repos/builtin/packages/w3emc/package.py b/var/spack/repos/builtin/packages/w3emc/package.py index 82dbf7bf8c6b92..7e0967bcde075b 100644 --- a/var/spack/repos/builtin/packages/w3emc/package.py +++ b/var/spack/repos/builtin/packages/w3emc/package.py @@ -95,5 +95,5 @@ def cmake_args(self): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): make("test") diff --git a/var/spack/repos/builtin/packages/xsdk-examples/package.py b/var/spack/repos/builtin/packages/xsdk-examples/package.py index 66f1ee05a7f0be..4cdb496b9720af 100644 --- a/var/spack/repos/builtin/packages/xsdk-examples/package.py +++ b/var/spack/repos/builtin/packages/xsdk-examples/package.py @@ -101,5 +101,5 @@ def enabled(pkg): return args def check(self): - with working_dir(self.builder.build_directory): + with working_dir(self.build_directory): ctest("--output-on-failure") From 66a93b54333be45b5c3e382ad42aa307f551a3f1 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 15 Nov 2024 15:49:25 +0100 Subject: [PATCH 464/615] Add missing llnl.* imports (#47618) --- lib/spack/spack/modules/common.py | 4 ++-- lib/spack/spack/stage.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/modules/common.py b/lib/spack/spack/modules/common.py index c770564edddb0a..e62520a6c2ef4a 100644 --- a/lib/spack/spack/modules/common.py +++ b/lib/spack/spack/modules/common.py @@ -39,7 +39,7 @@ import llnl.util.filesystem import llnl.util.tty as tty -from llnl.util.lang import dedupe, memoized +from llnl.util.lang import Singleton, dedupe, memoized import spack.build_environment import spack.config @@ -246,7 +246,7 @@ def _generate_upstream_module_index(): return UpstreamModuleIndex(spack.store.STORE.db, module_indices) -upstream_module_index = llnl.util.lang.Singleton(_generate_upstream_module_index) +upstream_module_index = Singleton(_generate_upstream_module_index) ModuleIndexEntry = collections.namedtuple("ModuleIndexEntry", ["path", "use_name"]) diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 8b4efcf387b8f2..84949c2e287295 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -16,6 +16,7 @@ import llnl.string import llnl.util.lang +import llnl.util.symlink import llnl.util.tty as tty from llnl.util.filesystem import ( can_access, From ac0ed2c4ccd01d14260101d47b545ce945ebb6c4 Mon Sep 17 00:00:00 2001 From: Veselin Dobrev Date: Fri, 15 Nov 2024 06:50:44 -0800 Subject: [PATCH 465/615] [mfem] Add a patch for MFEM v4.7 that adds support for SUDIALS v7 (#47591) --- .../packages/mfem/mfem-4.7-sundials-7.patch | 1129 +++++++++++++++++ .../repos/builtin/packages/mfem/package.py | 7 +- .../builtin/packages/sundials/package.py | 2 + 3 files changed, 1136 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/mfem/mfem-4.7-sundials-7.patch diff --git a/var/spack/repos/builtin/packages/mfem/mfem-4.7-sundials-7.patch b/var/spack/repos/builtin/packages/mfem/mfem-4.7-sundials-7.patch new file mode 100644 index 00000000000000..59fc95a3dd2b8a --- /dev/null +++ b/var/spack/repos/builtin/packages/mfem/mfem-4.7-sundials-7.patch @@ -0,0 +1,1129 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0be4f5d65d..1f8e13a8ec 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -337,7 +337,10 @@ if (MFEM_USE_SUNDIALS) + if (MFEM_USE_HIP) + list(APPEND SUNDIALS_COMPONENTS NVector_Hip) + endif() +- find_package(SUNDIALS REQUIRED ${SUNDIALS_COMPONENTS}) ++ # The Core component was added in SUNDIALS v7, so we treat it as optional in ++ # order to support older versions. ++ find_package(SUNDIALS REQUIRED ${SUNDIALS_COMPONENTS} ++ OPTIONAL_COMPONENTS Core) + endif() + + # SuperLU_DIST can only be enabled in parallel +diff --git a/config/cmake/modules/FindSUNDIALS.cmake b/config/cmake/modules/FindSUNDIALS.cmake +index 9a624a9c51..3617df7b24 100644 +--- a/config/cmake/modules/FindSUNDIALS.cmake ++++ b/config/cmake/modules/FindSUNDIALS.cmake +@@ -31,4 +31,5 @@ mfem_find_package(SUNDIALS SUNDIALS SUNDIALS_DIR + ADD_COMPONENT CVODE "include" cvode/cvode.h "lib" sundials_cvode + ADD_COMPONENT CVODES "include" cvodes/cvodes.h "lib" sundials_cvodes + ADD_COMPONENT ARKODE "include" arkode/arkode.h "lib" sundials_arkode +- ADD_COMPONENT KINSOL "include" kinsol/kinsol.h "lib" sundials_kinsol) ++ ADD_COMPONENT KINSOL "include" kinsol/kinsol.h "lib" sundials_kinsol ++ ADD_COMPONENT Core "include" sundials/sundials_core.h "lib" sundials_core) +diff --git a/config/defaults.mk b/config/defaults.mk +index f107f360de..d89344b9e8 100644 +--- a/config/defaults.mk ++++ b/config/defaults.mk +@@ -284,6 +284,13 @@ endif + ifeq ($(MFEM_USE_HIP),YES) + SUNDIALS_LIB += -lsundials_nvechip + endif ++SUNDIALS_CORE_PAT = $(subst\ ++ @MFEM_DIR@,$(MFEM_DIR),$(SUNDIALS_DIR))/lib*/libsundials_core.* ++ifeq ($(MFEM_USE_SUNDIALS),YES) ++ ifneq ($(wildcard $(SUNDIALS_CORE_PAT)),) ++ SUNDIALS_LIB += -lsundials_core ++ endif ++endif + # If SUNDIALS was built with KLU: + # MFEM_USE_SUITESPARSE = YES + +diff --git a/linalg/sundials.cpp b/linalg/sundials.cpp +index 1f4c141477..c8982387aa 100644 +--- a/linalg/sundials.cpp ++++ b/linalg/sundials.cpp +@@ -95,7 +95,7 @@ MFEM_DEPRECATED void* CVodeCreate(int lmm, SUNContext) + + /// (DEPRECATED) Wrapper function for backwards compatibility with SUNDIALS + /// version < 6 +-MFEM_DEPRECATED void* ARKStepCreate(ARKRhsFn fe, ARKRhsFn fi, realtype t0, ++MFEM_DEPRECATED void* ARKStepCreate(ARKRhsFn fe, ARKRhsFn fi, sunrealtype t0, + N_Vector y0, SUNContext) + { + return ARKStepCreate(fe, fi, t0, y0); +@@ -127,7 +127,7 @@ MFEM_DEPRECATED N_Vector N_VNewEmpty_Parallel(MPI_Comm comm, + /// (DEPRECATED) Wrapper function for backwards compatibility with SUNDIALS + /// version < 6 + MFEM_DEPRECATED N_Vector SUN_Hip_OR_Cuda(N_VNewWithMemHelp)(sunindextype length, +- booleantype use_managed_mem, ++ sunbooleantype use_managed_mem, + SUNMemoryHelper helper, + SUNContext) + { +@@ -157,6 +157,16 @@ MFEM_DEPRECATED N_Vector N_VMake_MPIPlusX(MPI_Comm comm, N_Vector local_vector, + + #endif // SUNDIALS_VERSION_MAJOR < 6 + ++#if MFEM_SUNDIALS_VERSION < 70100 ++#define MFEM_ARKode(FUNC) ARKStep##FUNC ++#else ++#define MFEM_ARKode(FUNC) ARKode##FUNC ++#endif ++ ++// Macro STR(): expand the argument and add double quotes ++#define STR1(s) #s ++#define STR(s) STR1(s) ++ + + namespace mfem + { +@@ -187,11 +197,21 @@ SundialsMemHelper &Sundials::GetMemHelper() + Sundials::Sundials() + { + #ifdef MFEM_USE_MPI +- MPI_Comm communicator = MPI_COMM_WORLD; ++ int mpi_initialized = 0; ++ MPI_Initialized(&mpi_initialized); ++ MPI_Comm communicator = mpi_initialized ? MPI_COMM_WORLD : MPI_COMM_NULL; ++#if SUNDIALS_VERSION_MAJOR < 7 + int return_val = SUNContext_Create((void*) &communicator, &context); + #else ++ int return_val = SUNContext_Create(communicator, &context); ++#endif ++#else // #ifdef MFEM_USE_MPI ++#if SUNDIALS_VERSION_MAJOR < 7 + int return_val = SUNContext_Create(nullptr, &context); ++#else ++ int return_val = SUNContext_Create((SUNComm)(0), &context); + #endif ++#endif // #ifdef MFEM_USE_MPI + MFEM_VERIFY(return_val == 0, "Call to SUNContext_Create failed"); + SundialsMemHelper actual_helper(context); + memHelper = std::move(actual_helper); +@@ -250,7 +270,11 @@ int SundialsMemHelper::SundialsMemHelper_Alloc(SUNMemoryHelper helper, + #endif + ) + { ++#if (SUNDIALS_VERSION_MAJOR < 7) + SUNMemory sunmem = SUNMemoryNewEmpty(); ++#else ++ SUNMemory sunmem = SUNMemoryNewEmpty(helper->sunctx); ++#endif + + sunmem->ptr = NULL; + sunmem->own = SUNTRUE; +@@ -631,7 +655,7 @@ static int LSFree(SUNLinearSolver LS) + // --------------------------------------------------------------------------- + // CVODE interface + // --------------------------------------------------------------------------- +-int CVODESolver::RHS(realtype t, const N_Vector y, N_Vector ydot, ++int CVODESolver::RHS(sunrealtype t, const N_Vector y, N_Vector ydot, + void *user_data) + { + // At this point the up-to-date data for N_Vector y and ydot is on the device. +@@ -648,7 +672,8 @@ int CVODESolver::RHS(realtype t, const N_Vector y, N_Vector ydot, + return (0); + } + +-int CVODESolver::root(realtype t, N_Vector y, realtype *gout, void *user_data) ++int CVODESolver::root(sunrealtype t, N_Vector y, sunrealtype *gout, ++ void *user_data) + { + CVODESolver *self = static_cast(user_data); + +@@ -668,8 +693,9 @@ void CVODESolver::SetRootFinder(int components, RootFunction func) + MFEM_VERIFY(flag == CV_SUCCESS, "error in SetRootFinder()"); + } + +-int CVODESolver::LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, +- booleantype jok, booleantype *jcur, realtype gamma, ++int CVODESolver::LinSysSetup(sunrealtype t, N_Vector y, N_Vector fy, ++ SUNMatrix A, sunbooleantype jok, ++ sunbooleantype *jcur, sunrealtype gamma, + void*, N_Vector, N_Vector, N_Vector) + { + // Get data from N_Vectors +@@ -683,7 +709,7 @@ int CVODESolver::LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, + } + + int CVODESolver::LinSysSolve(SUNLinearSolver LS, SUNMatrix, N_Vector x, +- N_Vector b, realtype tol) ++ N_Vector b, sunrealtype tol) + { + SundialsNVector mfem_x(x); + const SundialsNVector mfem_b(b); +@@ -859,7 +885,7 @@ void CVODESolver::UseSundialsLinearSolver() + if (LSA != NULL) { SUNLinSolFree(LSA); LSA = NULL; } + + // Create linear solver +- LSA = SUNLinSol_SPGMR(*Y, PREC_NONE, 0, Sundials::GetContext()); ++ LSA = SUNLinSol_SPGMR(*Y, SUN_PREC_NONE, 0, Sundials::GetContext()); + MFEM_VERIFY(LSA, "error in SUNLinSol_SPGMR()"); + + // Attach linear solver +@@ -1150,7 +1176,7 @@ void CVODESSolver::UseSundialsLinearSolverB() + if (LSB != NULL) { SUNLinSolFree(LSB); LSB = NULL; } + + // Set default linear solver (Newton is the default Nonlinear Solver) +- LSB = SUNLinSol_SPGMR(*yB, PREC_NONE, 0, Sundials::GetContext()); ++ LSB = SUNLinSol_SPGMR(*yB, SUN_PREC_NONE, 0, Sundials::GetContext()); + MFEM_VERIFY(LSB, "error in SUNLinSol_SPGMR()"); + + /* Attach the matrix and linear solver */ +@@ -1158,11 +1184,11 @@ void CVODESSolver::UseSundialsLinearSolverB() + MFEM_VERIFY(flag == CV_SUCCESS, "error in CVodeSetLinearSolverB()"); + } + +-int CVODESSolver::LinSysSetupB(realtype t, N_Vector y, N_Vector yB, ++int CVODESSolver::LinSysSetupB(sunrealtype t, N_Vector y, N_Vector yB, + N_Vector fyB, SUNMatrix AB, +- booleantype jokB, booleantype *jcurB, +- realtype gammaB, void *user_data, N_Vector tmp1, +- N_Vector tmp2, N_Vector tmp3) ++ sunbooleantype jokB, sunbooleantype *jcurB, ++ sunrealtype gammaB, void *user_data, ++ N_Vector tmp1, N_Vector tmp2, N_Vector tmp3) + { + // Get data from N_Vectors + const SundialsNVector mfem_y(y); +@@ -1178,7 +1204,7 @@ int CVODESSolver::LinSysSetupB(realtype t, N_Vector y, N_Vector yB, + } + + int CVODESSolver::LinSysSolveB(SUNLinearSolver LS, SUNMatrix AB, N_Vector yB, +- N_Vector Rb, realtype tol) ++ N_Vector Rb, sunrealtype tol) + { + SundialsNVector mfem_yB(yB); + const SundialsNVector mfem_Rb(Rb); +@@ -1216,7 +1242,7 @@ void CVODESSolver::SetWFTolerances(EWTFunction func) + + // CVODESSolver static functions + +-int CVODESSolver::RHSQ(realtype t, const N_Vector y, N_Vector qdot, ++int CVODESSolver::RHSQ(sunrealtype t, const N_Vector y, N_Vector qdot, + void *user_data) + { + CVODESSolver *self = static_cast(user_data); +@@ -1229,7 +1255,7 @@ int CVODESSolver::RHSQ(realtype t, const N_Vector y, N_Vector qdot, + return 0; + } + +-int CVODESSolver::RHSQB(realtype t, N_Vector y, N_Vector yB, N_Vector qBdot, ++int CVODESSolver::RHSQB(sunrealtype t, N_Vector y, N_Vector yB, N_Vector qBdot, + void *user_dataB) + { + CVODESSolver *self = static_cast(user_dataB); +@@ -1243,7 +1269,7 @@ int CVODESSolver::RHSQB(realtype t, N_Vector y, N_Vector yB, N_Vector qBdot, + return 0; + } + +-int CVODESSolver::RHSB(realtype t, N_Vector y, N_Vector yB, N_Vector yBdot, ++int CVODESSolver::RHSB(sunrealtype t, N_Vector y, N_Vector yB, N_Vector yBdot, + void *user_dataB) + { + CVODESSolver *self = static_cast(user_dataB); +@@ -1341,46 +1367,67 @@ CVODESSolver::~CVODESSolver() + // ARKStep interface + // --------------------------------------------------------------------------- + +-int ARKStepSolver::RHS1(realtype t, const N_Vector y, N_Vector ydot, ++int ARKStepSolver::RHS1(sunrealtype t, const N_Vector y, N_Vector result, + void *user_data) + { + // Get data from N_Vectors + const SundialsNVector mfem_y(y); +- SundialsNVector mfem_ydot(ydot); ++ SundialsNVector mfem_result(result); + ARKStepSolver *self = static_cast(user_data); + +- // Compute f(t, y) in y' = f(t, y) or fe(t, y) in y' = fe(t, y) + fi(t, y) ++ // Compute either f(t, y) in one of ++ // 1. y' = f(t, y) ++ // 2. M y' = f(t, y) ++ // or fe(t, y) in one of ++ // 1. y' = fe(t, y) + fi(t, y) ++ // 2. M y' = fe(t, y) + fi(t, y) + self->f->SetTime(t); + if (self->rk_type == IMEX) + { + self->f->SetEvalMode(TimeDependentOperator::ADDITIVE_TERM_1); + } +- self->f->Mult(mfem_y, mfem_ydot); ++ if (self->f->isExplicit()) // ODE is in form 1 ++ { ++ self->f->Mult(mfem_y, mfem_result); ++ } ++ else // ODE is in form 2 ++ { ++ self->f->ExplicitMult(mfem_y, mfem_result); ++ } + + // Return success + return (0); + } + +-int ARKStepSolver::RHS2(realtype t, const N_Vector y, N_Vector ydot, ++int ARKStepSolver::RHS2(sunrealtype t, const N_Vector y, N_Vector result, + void *user_data) + { + // Get data from N_Vectors + const SundialsNVector mfem_y(y); +- SundialsNVector mfem_ydot(ydot); ++ SundialsNVector mfem_result(result); + ARKStepSolver *self = static_cast(user_data); + +- // Compute fi(t, y) in y' = fe(t, y) + fi(t, y) ++ // Compute fi(t, y) in one of ++ // 1. y' = fe(t, y) + fi(t, y) (ODE is expressed in EXPLICIT form) ++ // 2. M y' = fe(t, y) + fi(y, t) (ODE is expressed in IMPLICIT form) + self->f->SetTime(t); + self->f->SetEvalMode(TimeDependentOperator::ADDITIVE_TERM_2); +- self->f->Mult(mfem_y, mfem_ydot); ++ if (self->f->isExplicit()) ++ { ++ self->f->Mult(mfem_y, mfem_result); ++ } ++ else ++ { ++ self->f->ExplicitMult(mfem_y, mfem_result); ++ } + + // Return success + return (0); + } + +-int ARKStepSolver::LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, +- SUNMatrix, booleantype jok, booleantype *jcur, +- realtype gamma, ++int ARKStepSolver::LinSysSetup(sunrealtype t, N_Vector y, N_Vector fy, ++ SUNMatrix A, SUNMatrix, sunbooleantype jok, ++ sunbooleantype *jcur, sunrealtype gamma, + void*, N_Vector, N_Vector, N_Vector) + { + // Get data from N_Vectors +@@ -1398,7 +1445,7 @@ int ARKStepSolver::LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, + } + + int ARKStepSolver::LinSysSolve(SUNLinearSolver LS, SUNMatrix, N_Vector x, +- N_Vector b, realtype tol) ++ N_Vector b, sunrealtype tol) + { + SundialsNVector mfem_x(x); + const SundialsNVector mfem_b(b); +@@ -1412,7 +1459,7 @@ int ARKStepSolver::LinSysSolve(SUNLinearSolver LS, SUNMatrix, N_Vector x, + return (self->f->SUNImplicitSolve(mfem_b, mfem_x, tol)); + } + +-int ARKStepSolver::MassSysSetup(realtype t, SUNMatrix M, ++int ARKStepSolver::MassSysSetup(sunrealtype t, SUNMatrix M, + void*, N_Vector, N_Vector, N_Vector) + { + ARKStepSolver *self = static_cast(GET_CONTENT(M)); +@@ -1423,7 +1470,7 @@ int ARKStepSolver::MassSysSetup(realtype t, SUNMatrix M, + } + + int ARKStepSolver::MassSysSolve(SUNLinearSolver LS, SUNMatrix, N_Vector x, +- N_Vector b, realtype tol) ++ N_Vector b, sunrealtype tol) + { + SundialsNVector mfem_x(x); + const SundialsNVector mfem_b(b); +@@ -1443,7 +1490,7 @@ int ARKStepSolver::MassMult1(SUNMatrix M, N_Vector x, N_Vector v) + return (self->f->SUNMassMult(mfem_x, mfem_v)); + } + +-int ARKStepSolver::MassMult2(N_Vector x, N_Vector v, realtype t, ++int ARKStepSolver::MassMult2(N_Vector x, N_Vector v, sunrealtype t, + void* mtimes_data) + { + const SundialsNVector mfem_x(x); +@@ -1514,7 +1561,7 @@ void ARKStepSolver::Init(TimeDependentOperator &f_) + // Free existing solver memory and re-create with new vector size + if (resize) + { +- ARKStepFree(&sundials_mem); ++ MFEM_ARKode(Free)(&sundials_mem); + sundials_mem = NULL; + } + } +@@ -1552,12 +1599,15 @@ void ARKStepSolver::Init(TimeDependentOperator &f_) + MFEM_VERIFY(sundials_mem, "error in ARKStepCreate()"); + + // Attach the ARKStepSolver as user-defined data +- flag = ARKStepSetUserData(sundials_mem, this); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetUserData()"); ++ flag = MFEM_ARKode(SetUserData)(sundials_mem, this); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetUserData)) "()"); + + // Set default tolerances +- flag = ARKStepSStolerances(sundials_mem, default_rel_tol, default_abs_tol); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetSStolerances()"); ++ flag = MFEM_ARKode(SStolerances)(sundials_mem, default_rel_tol, ++ default_abs_tol); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SStolerances)) "()"); + + // If implicit, attach MFEM linear solver by default + if (use_implicit) { UseMFEMLinearSolver(); } +@@ -1567,7 +1617,7 @@ void ARKStepSolver::Init(TimeDependentOperator &f_) + reinit = true; + } + +-void ARKStepSolver::Step(Vector &x, double &t, double &dt) ++void ARKStepSolver::Step(Vector &x, real_t &t, real_t &dt) + { + Y->MakeRef(x, 0, x.Size()); + MFEM_VERIFY(Y->Size() == x.Size(), "size mismatch"); +@@ -1596,15 +1646,16 @@ void ARKStepSolver::Step(Vector &x, double &t, double &dt) + + // Integrate the system + double tout = t + dt; +- flag = ARKStepEvolve(sundials_mem, tout, *Y, &t, step_mode); +- MFEM_VERIFY(flag >= 0, "error in ARKStepEvolve()"); ++ flag = MFEM_ARKode(Evolve)(sundials_mem, tout, *Y, &t, step_mode); ++ MFEM_VERIFY(flag >= 0, "error in " STR(MFEM_ARKode(Evolve)) "()"); + + // Make sure host is up to date + Y->HostRead(); + + // Return the last incremental step size +- flag = ARKStepGetLastStep(sundials_mem, &dt); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepGetLastStep()"); ++ flag = MFEM_ARKode(GetLastStep)(sundials_mem, &dt); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(GetLastStep)) "()"); + } + + void ARKStepSolver::UseMFEMLinearSolver() +@@ -1630,12 +1681,14 @@ void ARKStepSolver::UseMFEMLinearSolver() + A->ops->destroy = MatDestroy; + + // Attach the linear solver and matrix +- flag = ARKStepSetLinearSolver(sundials_mem, LSA, A); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetLinearSolver()"); ++ flag = MFEM_ARKode(SetLinearSolver)(sundials_mem, LSA, A); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetLinearSolver)) "()"); + + // Set the linear system evaluation function +- flag = ARKStepSetLinSysFn(sundials_mem, ARKStepSolver::LinSysSetup); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetLinSysFn()"); ++ flag = MFEM_ARKode(SetLinSysFn)(sundials_mem, ARKStepSolver::LinSysSetup); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetLinSysFn)) "()"); + } + + void ARKStepSolver::UseSundialsLinearSolver() +@@ -1645,12 +1698,13 @@ void ARKStepSolver::UseSundialsLinearSolver() + if (LSA != NULL) { SUNLinSolFree(LSA); LSA = NULL; } + + // Create linear solver +- LSA = SUNLinSol_SPGMR(*Y, PREC_NONE, 0, Sundials::GetContext()); ++ LSA = SUNLinSol_SPGMR(*Y, SUN_PREC_NONE, 0, Sundials::GetContext()); + MFEM_VERIFY(LSA, "error in SUNLinSol_SPGMR()"); + + // Attach linear solver +- flag = ARKStepSetLinearSolver(sundials_mem, LSA, NULL); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetLinearSolver()"); ++ flag = MFEM_ARKode(SetLinearSolver)(sundials_mem, LSA, NULL); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetLinearSolver)) "()"); + } + + void ARKStepSolver::UseMFEMMassLinearSolver(int tdep) +@@ -1666,7 +1720,7 @@ void ARKStepSolver::UseMFEMMassLinearSolver(int tdep) + LSM->content = this; + LSM->ops->gettype = LSGetType; + LSM->ops->solve = ARKStepSolver::MassSysSolve; +- LSA->ops->free = LSFree; ++ LSM->ops->free = LSFree; + + M = SUNMatNewEmpty(Sundials::GetContext()); + MFEM_VERIFY(M, "error in SUNMatNewEmpty()"); +@@ -1677,12 +1731,17 @@ void ARKStepSolver::UseMFEMMassLinearSolver(int tdep) + M->ops->destroy = MatDestroy; + + // Attach the linear solver and matrix +- flag = ARKStepSetMassLinearSolver(sundials_mem, LSM, M, tdep); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetLinearSolver()"); ++ flag = MFEM_ARKode(SetMassLinearSolver)(sundials_mem, LSM, M, tdep); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetMassLinearSolver)) "()"); + + // Set the linear system function +- flag = ARKStepSetMassFn(sundials_mem, ARKStepSolver::MassSysSetup); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetMassFn()"); ++ flag = MFEM_ARKode(SetMassFn)(sundials_mem, ARKStepSolver::MassSysSetup); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetMassFn)) "()"); ++ ++ // Check that the ODE is not expressed in EXPLICIT form ++ MFEM_VERIFY(!f->isExplicit(), "ODE operator is expressed in EXPLICIT form") + } + + void ARKStepSolver::UseSundialsMassLinearSolver(int tdep) +@@ -1692,17 +1751,22 @@ void ARKStepSolver::UseSundialsMassLinearSolver(int tdep) + if (LSM != NULL) { SUNLinSolFree(LSM); LSM = NULL; } + + // Create linear solver +- LSM = SUNLinSol_SPGMR(*Y, PREC_NONE, 0, Sundials::GetContext()); ++ LSM = SUNLinSol_SPGMR(*Y, SUN_PREC_NONE, 0, Sundials::GetContext()); + MFEM_VERIFY(LSM, "error in SUNLinSol_SPGMR()"); + + // Attach linear solver +- flag = ARKStepSetMassLinearSolver(sundials_mem, LSM, NULL, tdep); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetMassLinearSolver()"); ++ flag = MFEM_ARKode(SetMassLinearSolver)(sundials_mem, LSM, NULL, tdep); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetMassLinearSolver)) "()"); + + // Attach matrix multiplication function +- flag = ARKStepSetMassTimes(sundials_mem, NULL, ARKStepSolver::MassMult2, +- this); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetMassTimes()"); ++ flag = MFEM_ARKode(SetMassTimes)(sundials_mem, NULL, ++ ARKStepSolver::MassMult2, this); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetMassTimes)) "()"); ++ ++ // Check that the ODE is not expressed in EXPLICIT form ++ MFEM_VERIFY(!f->isExplicit(), "ODE operator is expressed in EXPLICIT form") + } + + void ARKStepSolver::SetStepMode(int itask) +@@ -1712,20 +1776,23 @@ void ARKStepSolver::SetStepMode(int itask) + + void ARKStepSolver::SetSStolerances(double reltol, double abstol) + { +- flag = ARKStepSStolerances(sundials_mem, reltol, abstol); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSStolerances()"); ++ flag = MFEM_ARKode(SStolerances)(sundials_mem, reltol, abstol); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SStolerances)) "()"); + } + + void ARKStepSolver::SetMaxStep(double dt_max) + { +- flag = ARKStepSetMaxStep(sundials_mem, dt_max); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetMaxStep()"); ++ flag = MFEM_ARKode(SetMaxStep)(sundials_mem, dt_max); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetMaxStep)) "()"); + } + + void ARKStepSolver::SetOrder(int order) + { +- flag = ARKStepSetOrder(sundials_mem, order); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetOrder()"); ++ flag = MFEM_ARKode(SetOrder)(sundials_mem, order); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetOrder)) "()"); + } + + void ARKStepSolver::SetERKTableNum(ARKODE_ERKTableID table_id) +@@ -1749,8 +1816,9 @@ void ARKStepSolver::SetIMEXTableNum(ARKODE_ERKTableID etable_id, + + void ARKStepSolver::SetFixedStep(double dt) + { +- flag = ARKStepSetFixedStep(sundials_mem, dt); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepSetFixedStep()"); ++ flag = MFEM_ARKode(SetFixedStep)(sundials_mem, dt); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(SetFixedStep)) "()"); + } + + void ARKStepSolver::PrintInfo() const +@@ -1772,18 +1840,19 @@ void ARKStepSolver::PrintInfo() const + &netfails); + MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepGetTimestepperStats()"); + +- flag = ARKStepGetStepStats(sundials_mem, +- &nsteps, +- &hinused, +- &hlast, +- &hcur, +- &tcur); ++ flag = MFEM_ARKode(GetStepStats)(sundials_mem, ++ &nsteps, ++ &hinused, ++ &hlast, ++ &hcur, ++ &tcur); + + // Get nonlinear solver stats +- flag = ARKStepGetNonlinSolvStats(sundials_mem, +- &nniters, +- &nncfails); +- MFEM_VERIFY(flag == ARK_SUCCESS, "error in ARKStepGetNonlinSolvStats()"); ++ flag = MFEM_ARKode(GetNonlinSolvStats)(sundials_mem, ++ &nniters, ++ &nncfails); ++ MFEM_VERIFY(flag == ARK_SUCCESS, ++ "error in " STR(MFEM_ARKode(GetNonlinSolvStats)) "()"); + + mfem::out << + "ARKStep:\n" +@@ -1811,7 +1880,7 @@ ARKStepSolver::~ARKStepSolver() + SUNMatDestroy(A); + SUNLinSolFree(LSA); + SUNNonlinSolFree(NLS); +- ARKStepFree(&sundials_mem); ++ MFEM_ARKode(Free)(&sundials_mem); + } + + // --------------------------------------------------------------------------- +@@ -1834,7 +1903,7 @@ int KINSolver::Mult(const N_Vector u, N_Vector fu, void *user_data) + + // Wrapper for computing Jacobian-vector products + int KINSolver::GradientMult(N_Vector v, N_Vector Jv, N_Vector u, +- booleantype *new_u, void *user_data) ++ sunbooleantype *new_u, void *user_data) + { + const SundialsNVector mfem_v(v); + SundialsNVector mfem_Jv(Jv); +@@ -1874,7 +1943,7 @@ int KINSolver::LinSysSetup(N_Vector u, N_Vector, SUNMatrix J, + + // Wrapper for solving linear systems J u = b + int KINSolver::LinSysSolve(SUNLinearSolver LS, SUNMatrix, N_Vector u, +- N_Vector b, realtype) ++ N_Vector b, sunrealtype) + { + SundialsNVector mfem_u(u), mfem_b(b); + KINSolver *self = static_cast(GET_CONTENT(LS)); +@@ -1926,28 +1995,36 @@ int KINSolver::PrecSolve(N_Vector uu, + + KINSolver::KINSolver(int strategy, bool oper_grad) + : global_strategy(strategy), use_oper_grad(oper_grad), y_scale(NULL), +- f_scale(NULL), jacobian(NULL), maa(0) ++ f_scale(NULL), jacobian(NULL) + { + Y = new SundialsNVector(); + y_scale = new SundialsNVector(); + f_scale = new SundialsNVector(); + + // Default abs_tol and print_level ++#if MFEM_SUNDIALS_VERSION < 70000 + abs_tol = pow(UNIT_ROUNDOFF, 1.0/3.0); ++#else ++ abs_tol = pow(SUN_UNIT_ROUNDOFF, 1.0/3.0); ++#endif + print_level = 0; + } + + #ifdef MFEM_USE_MPI + KINSolver::KINSolver(MPI_Comm comm, int strategy, bool oper_grad) + : global_strategy(strategy), use_oper_grad(oper_grad), y_scale(NULL), +- f_scale(NULL), jacobian(NULL), maa(0) ++ f_scale(NULL), jacobian(NULL) + { + Y = new SundialsNVector(comm); + y_scale = new SundialsNVector(comm); + f_scale = new SundialsNVector(comm); + + // Default abs_tol and print_level ++#if MFEM_SUNDIALS_VERSION < 70000 + abs_tol = pow(UNIT_ROUNDOFF, 1.0/3.0); ++#else ++ abs_tol = pow(SUN_UNIT_ROUNDOFF, 1.0/3.0); ++#endif + print_level = 0; + } + #endif +@@ -2019,11 +2096,22 @@ void KINSolver::SetOperator(const Operator &op) + sundials_mem = KINCreate(Sundials::GetContext()); + MFEM_VERIFY(sundials_mem, "Error in KINCreate()."); + +- // Set number of acceleration vectors +- if (maa > 0) ++ // Enable Anderson Acceleration ++ if (aa_n > 0) + { +- flag = KINSetMAA(sundials_mem, maa); ++ flag = KINSetMAA(sundials_mem, aa_n); + MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetMAA()"); ++ ++ flag = KINSetDelayAA(sundials_mem, aa_delay); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDelayAA()"); ++ ++ flag = KINSetDampingAA(sundials_mem, aa_damping); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDampingAA()"); ++ ++#if SUNDIALS_VERSION_MAJOR >= 6 ++ flag = KINSetOrthAA(sundials_mem, aa_orth); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetOrthAA()"); ++#endif + } + + // Initialize KINSOL +@@ -2034,6 +2122,9 @@ void KINSolver::SetOperator(const Operator &op) + flag = KINSetUserData(sundials_mem, this); + MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetUserData()"); + ++ flag = KINSetDamping(sundials_mem, fp_damping); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDamping()"); ++ + // Set the linear solver + if (prec || jfnk) + { +@@ -2045,7 +2136,7 @@ void KINSolver::SetOperator(const Operator &op) + if (A != NULL) { SUNMatDestroy(A); A = NULL; } + if (LSA != NULL) { SUNLinSolFree(LSA); LSA = NULL; } + +- LSA = SUNLinSol_SPGMR(*Y, PREC_NONE, 0, Sundials::GetContext()); ++ LSA = SUNLinSol_SPGMR(*Y, SUN_PREC_NONE, 0, Sundials::GetContext()); + MFEM_VERIFY(LSA, "error in SUNLinSol_SPGMR()"); + + flag = KINSetLinearSolver(sundials_mem, LSA, NULL); +@@ -2114,12 +2205,12 @@ void KINSolver::SetJFNKSolver(Solver &solver) + if (LSA != NULL) { SUNLinSolFree(LSA); LSA = NULL; } + + // Setup FGMRES +- LSA = SUNLinSol_SPFGMR(*Y, prec ? PREC_RIGHT : PREC_NONE, maxli, ++ LSA = SUNLinSol_SPFGMR(*Y, prec ? SUN_PREC_RIGHT : SUN_PREC_NONE, maxli, + Sundials::GetContext()); + MFEM_VERIFY(LSA, "error in SUNLinSol_SPFGMR()"); + + flag = SUNLinSol_SPFGMRSetMaxRestarts(LSA, maxlrs); +- MFEM_VERIFY(flag == SUNLS_SUCCESS, "error in SUNLinSol_SPFGMR()"); ++ MFEM_VERIFY(flag == SUN_SUCCESS, "error in SUNLinSol_SPFGMR()"); + + flag = KINSetLinearSolver(sundials_mem, LSA, NULL); + MFEM_VERIFY(flag == KIN_SUCCESS, "error in KINSetLinearSolver()"); +@@ -2145,15 +2236,52 @@ void KINSolver::SetMaxSetupCalls(int max_calls) + MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetMaxSetupCalls()"); + } + +-void KINSolver::SetMAA(int m_aa) ++void KINSolver::EnableAndersonAcc(int n, int orth, int delay, double damping) + { +- // Store internally as maa must be set before calling KINInit() to +- // set the maximum acceleration space size. +- maa = m_aa; +- if (sundials_mem) ++ if (sundials_mem != nullptr) + { +- flag = KINSetMAA(sundials_mem, maa); ++ if (aa_n < n) ++ { ++ MFEM_ABORT("Subsequent calls to EnableAndersonAcc() must set" ++ " the subspace size to less or equal to the initially requested size." ++ " If SetOperator() has already been called, the subspace size can't be" ++ " increased."); ++ } ++ ++ flag = KINSetMAA(sundials_mem, n); + MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetMAA()"); ++ ++ flag = KINSetDelayAA(sundials_mem, delay); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDelayAA()"); ++ ++ flag = KINSetDampingAA(sundials_mem, damping); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDampingAA()"); ++ ++#if SUNDIALS_VERSION_MAJOR >= 6 ++ flag = KINSetOrthAA(sundials_mem, orth); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetOrthAA()"); ++#else ++ if (orth != KIN_ORTH_MGS) ++ { ++ MFEM_WARNING("SUNDIALS < v6 does not support setting the Anderson" ++ " acceleration orthogonalization routine!"); ++ } ++#endif ++ } ++ ++ aa_n = n; ++ aa_delay = delay; ++ aa_damping = damping; ++ aa_orth = orth; ++} ++ ++void KINSolver::SetDamping(double damping) ++{ ++ fp_damping = damping; ++ if (sundials_mem) ++ { ++ flag = KINSetDamping(sundials_mem, fp_damping); ++ MFEM_ASSERT(flag == KIN_SUCCESS, "error in KINSetDamping()"); + } + } + +@@ -2239,18 +2367,21 @@ void KINSolver::Mult(Vector &x, + + if (rank == 0) + { ++#if MFEM_SUNDIALS_VERSION < 70000 + flag = KINSetPrintLevel(sundials_mem, print_level); + MFEM_VERIFY(flag == KIN_SUCCESS, "KINSetPrintLevel() failed!"); ++#endif ++ // NOTE: there is no KINSetPrintLevel in SUNDIALS v7! + + #ifdef SUNDIALS_BUILD_WITH_MONITORING + if (jfnk && print_level) + { + flag = SUNLinSolSetInfoFile_SPFGMR(LSA, stdout); +- MFEM_VERIFY(flag == SUNLS_SUCCESS, ++ MFEM_VERIFY(flag == SUN_SUCCESS, + "error in SUNLinSolSetInfoFile_SPFGMR()"); + + flag = SUNLinSolSetPrintLevel_SPFGMR(LSA, 1); +- MFEM_VERIFY(flag == SUNLS_SUCCESS, ++ MFEM_VERIFY(flag == SUN_SUCCESS, + "error in SUNLinSolSetPrintLevel_SPFGMR()"); + } + #endif +diff --git a/linalg/sundials.hpp b/linalg/sundials.hpp +index f34b4deaf7..08a908c24c 100644 +--- a/linalg/sundials.hpp ++++ b/linalg/sundials.hpp +@@ -54,6 +54,10 @@ + + #include + ++#define MFEM_SUNDIALS_VERSION \ ++ (SUNDIALS_VERSION_MAJOR*10000 + SUNDIALS_VERSION_MINOR*100 + \ ++ SUNDIALS_VERSION_PATCH) ++ + #if (SUNDIALS_VERSION_MAJOR < 6) + + /// (DEPRECATED) Map SUNDIALS version >= 6 datatypes and constants to +@@ -68,7 +72,30 @@ constexpr ARKODE_ERKTableID ARKODE_FEHLBERG_13_7_8 = FEHLBERG_13_7_8; + /// arbitrary type for more compact backwards compatibility + using SUNContext = void*; + +-#endif // SUNDIALS_VERSION_MAJOR < 6 ++/// 'sunrealtype' was first introduced in v6.0.0 ++typedef realtype sunrealtype; ++/// 'sunbooleantype' was first introduced in v6.0.0 ++typedef booleantype sunbooleantype; ++ ++/// New constant names introduced in v6.0.0 ++enum { SUN_PREC_NONE, SUN_PREC_LEFT, SUN_PREC_RIGHT, SUN_PREC_BOTH }; ++ ++// KIN_ORTH_MGS was introduced in SUNDIALS v6; here, we define it just so that ++// it can be used as the default option in the second parameter of ++// KINSolver::EnableAndersonAcc -- the actual value of the parameter will be ++// ignored when using SUNDIALS < v6. ++#define KIN_ORTH_MGS 0 ++ ++#endif // #if SUNDIALS_VERSION_MAJOR < 6 ++ ++#if (SUNDIALS_VERSION_MAJOR < 7) ++ ++/** @brief The enum constant SUN_SUCCESS was added in v7 as a replacement of ++ various *_SUCCESS macros that were removed in v7. */ ++enum { SUN_SUCCESS = 0 }; ++ ++#endif // #if SUNDIALS_VERSION_MAJOR < 7 ++ + + namespace mfem + { +@@ -238,7 +265,14 @@ public: + + #ifdef MFEM_USE_MPI + /// Returns the MPI communicator for the internal N_Vector x. +- inline MPI_Comm GetComm() const { return *static_cast(N_VGetCommunicator(x)); } ++ inline MPI_Comm GetComm() const ++ { ++#if SUNDIALS_VERSION_MAJOR < 7 ++ return *static_cast(N_VGetCommunicator(x)); ++#else ++ return N_VGetCommunicator(x); ++#endif ++ } + + /// Returns the MPI global length for the internal N_Vector x. + inline long GlobalSize() const { return N_VGetLength(x); } +@@ -390,24 +424,26 @@ protected: + int root_components; /// Number of components in gout + + /// Wrapper to compute the ODE rhs function. +- static int RHS(realtype t, const N_Vector y, N_Vector ydot, void *user_data); ++ static int RHS(sunrealtype t, const N_Vector y, N_Vector ydot, ++ void *user_data); + + /// Setup the linear system $ A x = b $. +- static int LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, +- booleantype jok, booleantype *jcur, +- realtype gamma, void *user_data, N_Vector tmp1, ++ static int LinSysSetup(sunrealtype t, N_Vector y, N_Vector fy, SUNMatrix A, ++ sunbooleantype jok, sunbooleantype *jcur, ++ sunrealtype gamma, void *user_data, N_Vector tmp1, + N_Vector tmp2, N_Vector tmp3); + + /// Solve the linear system $ A x = b $. + static int LinSysSolve(SUNLinearSolver LS, SUNMatrix A, N_Vector x, +- N_Vector b, realtype tol); ++ N_Vector b, sunrealtype tol); + + /// Prototype to define root finding for CVODE +- static int root(realtype t, N_Vector y, realtype *gout, void *user_data); ++ static int root(sunrealtype t, N_Vector y, sunrealtype *gout, ++ void *user_data); + + /// Typedef for root finding functions +- typedef std::function +- RootFunction; ++ typedef std::function RootFunction; + + /// A class member to facilitate pointing to a user-specified root function + RootFunction root_func; +@@ -415,7 +451,8 @@ protected: + /// Typedef declaration for error weight functions + typedef std::function EWTFunction; + +- /// A class member to facilitate pointing to a user-specified error weight function ++ /** @brief A class member to facilitate pointing to a user-specified error ++ weight function */ + EWTFunction ewt_func; + + public: +@@ -449,7 +486,7 @@ public: + @note If this method is called a second time with a different problem + size, then any non-default user-set options will be lost and will need + to be set again. */ +- void Init(TimeDependentOperator &f_); ++ void Init(TimeDependentOperator &f_) override; + + /// Integrate the ODE with CVODE using the specified step mode. + /** @param[in,out] x On output, the solution vector at the requested output +@@ -460,7 +497,7 @@ public: + @note On input, the values of @a t and @a dt are used to compute desired + output time for the integration, tout = @a t + @a dt. + */ +- virtual void Step(Vector &x, double &t, double &dt); ++ void Step(Vector &x, double &t, double &dt) override; + + /** @brief Attach the linear system setup and solve methods from the + TimeDependentOperator i.e., SUNImplicitSetup() and SUNImplicitSolve() to +@@ -525,14 +562,15 @@ protected: + int indexB; ///< backward problem index + + /// Wrapper to compute the ODE RHS Quadrature function. +- static int RHSQ(realtype t, const N_Vector y, N_Vector qdot, void *user_data); ++ static int RHSQ(sunrealtype t, const N_Vector y, N_Vector qdot, ++ void *user_data); + + /// Wrapper to compute the ODE RHS backward function. +- static int RHSB(realtype t, N_Vector y, ++ static int RHSB(sunrealtype t, N_Vector y, + N_Vector yB, N_Vector yBdot, void *user_dataB); + + /// Wrapper to compute the ODE RHS Backwards Quadrature function. +- static int RHSQB(realtype t, N_Vector y, N_Vector yB, ++ static int RHSQB(sunrealtype t, N_Vector y, N_Vector yB, + N_Vector qBdot, void *user_dataB); + + /// Error control function +@@ -586,7 +624,7 @@ public: + + @note On input, the values of t and dt are used to compute desired + output time for the integration, tout = t + dt. */ +- virtual void Step(Vector &x, double &t, double &dt); ++ void Step(Vector &x, double &t, double &dt) override; + + /// Solve one adjoint time step + virtual void StepB(Vector &w, double &t, double &dt); +@@ -648,15 +686,15 @@ public: + void SetSVtolerancesB(double reltol, Vector abstol); + + /// Setup the linear system A x = b +- static int LinSysSetupB(realtype t, N_Vector y, N_Vector yB, N_Vector fyB, ++ static int LinSysSetupB(sunrealtype t, N_Vector y, N_Vector yB, N_Vector fyB, + SUNMatrix A, +- booleantype jok, booleantype *jcur, +- realtype gamma, void *user_data, N_Vector tmp1, ++ sunbooleantype jok, sunbooleantype *jcur, ++ sunrealtype gamma, void *user_data, N_Vector tmp1, + N_Vector tmp2, N_Vector tmp3); + + /// Solve the linear system A x = b + static int LinSysSolveB(SUNLinearSolver LS, SUNMatrix A, N_Vector x, +- N_Vector b, realtype tol); ++ N_Vector b, sunrealtype tol); + + + /// Destroy the associated CVODES memory and SUNDIALS objects. +@@ -689,33 +727,35 @@ protected: + RHS1 is explicit RHS and RHS2 the implicit RHS for IMEX integration. When + purely implicit or explicit only RHS1 is used. */ + ///@{ +- static int RHS1(realtype t, const N_Vector y, N_Vector ydot, void *user_data); +- static int RHS2(realtype t, const N_Vector y, N_Vector ydot, void *user_data); ++ static int RHS1(sunrealtype t, const N_Vector y, N_Vector ydot, ++ void *user_data); ++ static int RHS2(sunrealtype t, const N_Vector y, N_Vector ydot, ++ void *user_data); + ///@} + + /// Setup the linear system $ A x = b $. +- static int LinSysSetup(realtype t, N_Vector y, N_Vector fy, SUNMatrix A, +- SUNMatrix M, booleantype jok, booleantype *jcur, +- realtype gamma, void *user_data, N_Vector tmp1, ++ static int LinSysSetup(sunrealtype t, N_Vector y, N_Vector fy, SUNMatrix A, ++ SUNMatrix M, sunbooleantype jok, sunbooleantype *jcur, ++ sunrealtype gamma, void *user_data, N_Vector tmp1, + N_Vector tmp2, N_Vector tmp3); + + /// Solve the linear system $ A x = b $. + static int LinSysSolve(SUNLinearSolver LS, SUNMatrix A, N_Vector x, +- N_Vector b, realtype tol); ++ N_Vector b, sunrealtype tol); + + /// Setup the linear system $ M x = b $. +- static int MassSysSetup(realtype t, SUNMatrix M, void *user_data, ++ static int MassSysSetup(sunrealtype t, SUNMatrix M, void *user_data, + N_Vector tmp1, N_Vector tmp2, N_Vector tmp3); + + /// Solve the linear system $ M x = b $. + static int MassSysSolve(SUNLinearSolver LS, SUNMatrix M, N_Vector x, +- N_Vector b, realtype tol); ++ N_Vector b, sunrealtype tol); + + /// Compute the matrix-vector product $ v = M x $. + static int MassMult1(SUNMatrix M, N_Vector x, N_Vector v); + + /// Compute the matrix-vector product $v = M_t x $ at time t. +- static int MassMult2(N_Vector x, N_Vector v, realtype t, ++ static int MassMult2(N_Vector x, N_Vector v, sunrealtype t, + void* mtimes_data); + + public: +@@ -751,7 +791,7 @@ public: + @note If this method is called a second time with a different problem + size, then any non-default user-set options will be lost and will need + to be set again. */ +- void Init(TimeDependentOperator &f_); ++ void Init(TimeDependentOperator &f_) override; + + /// Integrate the ODE with ARKode using the specified step mode. + /** +@@ -763,7 +803,7 @@ public: + @note On input, the values of @a t and @a dt are used to compute desired + output time for the integration, tout = @a t + @a dt. + */ +- virtual void Step(Vector &x, double &t, double &dt); ++ void Step(Vector &x, real_t &t, real_t &dt) override; + + /** @brief Attach the linear system setup and solve methods from the + TimeDependentOperator i.e., SUNImplicitSetup() and SUNImplicitSolve() to +@@ -850,18 +890,22 @@ protected: + bool use_oper_grad; ///< use the Jv prod function + mutable SundialsNVector *y_scale, *f_scale; ///< scaling vectors + const Operator *jacobian; ///< stores oper->GetGradient() +- int maa; ///< number of acceleration vectors +- bool jfnk = false; ///< enable JFNK +- Vector wrk; ///< Work vector needed for the JFNK PC +- int maxli = 5; ///< Maximum linear iterations +- int maxlrs = 0; ///< Maximum linear solver restarts ++ int aa_n = 0; ///< number of acceleration vectors ++ int aa_delay; ///< Anderson Acceleration delay ++ double aa_damping; ///< Anderson Acceleration damping ++ int aa_orth; ///< Anderson Acceleration orthogonalization routine ++ double fp_damping = 1.0; ///< Fixed Point or Picard damping parameter ++ bool jfnk = false; ///< enable JFNK ++ Vector wrk; ///< Work vector needed for the JFNK PC ++ int maxli = 5; ///< Maximum linear iterations ++ int maxlrs = 0; ///< Maximum linear solver restarts + + /// Wrapper to compute the nonlinear residual $ F(u) = 0 $. + static int Mult(const N_Vector u, N_Vector fu, void *user_data); + + /// Wrapper to compute the Jacobian-vector product $ J(u) v = Jv $. + static int GradientMult(N_Vector v, N_Vector Jv, N_Vector u, +- booleantype *new_u, void *user_data); ++ sunbooleantype *new_u, void *user_data); + + /// Setup the linear system $ J u = b $. + static int LinSysSetup(N_Vector u, N_Vector fu, SUNMatrix J, +@@ -869,7 +913,7 @@ protected: + + /// Solve the linear system $ J u = b $. + static int LinSysSolve(SUNLinearSolver LS, SUNMatrix J, N_Vector u, +- N_Vector b, realtype tol); ++ N_Vector b, sunrealtype tol); + + /// Setup the preconditioner. + static int PrecSetup(N_Vector uu, +@@ -916,7 +960,7 @@ public: + /** @note If this method is called a second time with a different problem + size, then non-default KINSOL-specific options will be lost and will need + to be set again. */ +- virtual void SetOperator(const Operator &op); ++ void SetOperator(const Operator &op) override; + + /// Set the linear solver for inverting the Jacobian. + /** @note This function assumes that Operator::GetGradient(const Vector &) +@@ -924,10 +968,10 @@ public: + SetOperator(const Operator &). + + This method must be called after SetOperator(). */ +- virtual void SetSolver(Solver &solver); ++ void SetSolver(Solver &solver) override; + + /// Equivalent to SetSolver(solver). +- virtual void SetPreconditioner(Solver &solver) { SetSolver(solver); } ++ void SetPreconditioner(Solver &solver) override { SetSolver(solver); } + + /// Set KINSOL's scaled step tolerance. + /** The default tolerance is $ U^\frac{2}{3} $ , where +@@ -940,13 +984,22 @@ public: + @note This method must be called after SetOperator(). */ + void SetMaxSetupCalls(int max_calls); + +- /// Set the number of acceleration vectors to use with KIN_FP or KIN_PICARD. +- /** The default is 0. +- @ note This method must be called before SetOperator() to set the +- maximum size of the acceleration space. The value of @a maa can be +- altered after SetOperator() is called but it can't be higher than initial +- maximum. */ +- void SetMAA(int maa); ++ /// Enable Anderson Acceleration for KIN_FP or KIN_PICARD. ++ /** @note Has to be called once before SetOperator() in order to set up the ++ maximum subspace size. Subsequent calls need @a n less or equal to the ++ initial subspace size. ++ @param[in] n Anderson Acceleration subspace size ++ @param[in] orth Anderson Acceleration orthogonalization routine ++ @param[in] delay Anderson Acceleration delay ++ @param[in] damping Anderson Acceleration damping parameter valid from 0 < ++ d <= 1.0. Default is 1.0 (no damping) */ ++ void EnableAndersonAcc(int n, int orth = KIN_ORTH_MGS, int delay = 0, ++ double damping = 1.0); ++ ++ /// Specifies the value of the damping parameter in the fixed point or Picard ++ /// iteration. ++ /** param[in] damping fixed point iteration or Picard damping parameter */ ++ void SetDamping(double damping); + + /// Set the Jacobian Free Newton Krylov flag. The default is false. + /** This flag indicates to use JFNK as the linear solver for KINSOL. This +@@ -967,10 +1020,10 @@ public: + void SetLSMaxRestarts(int m) { maxlrs = m; } + + /// Set the print level for the KINSetPrintLevel function. +- virtual void SetPrintLevel(int print_lvl) { print_level = print_lvl; } ++ void SetPrintLevel(int print_lvl) override { print_level = print_lvl; } + + /// This method is not supported and will throw an error. +- virtual void SetPrintLevel(PrintLevel); ++ void SetPrintLevel(PrintLevel) override; + + /// Solve the nonlinear system $ F(x) = 0 $. + /** This method computes the x_scale and fx_scale vectors and calls the +@@ -981,7 +1034,7 @@ public: + @param[in,out] x On input, initial guess, if @a #iterative_mode = true, + otherwise the initial guess is zero; on output, the + solution */ +- virtual void Mult(const Vector &b, Vector &x) const; ++ void Mult(const Vector &b, Vector &x) const override; + + /// Solve the nonlinear system $ F(x) = 0 $. + /** Calls KINSol() to solve the nonlinear system. Before calling KINSol(), diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index b50af840f2725d..2b5d75706cd014 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -308,8 +308,10 @@ class Mfem(Package, CudaPackage, ROCmPackage): depends_on("sundials@2.7.0:+mpi+hypre", when="@3.3.2:+sundials+mpi") depends_on("sundials@5.0.0:5", when="@4.1.0:4.4+sundials~mpi") depends_on("sundials@5.0.0:5+mpi+hypre", when="@4.1.0:4.4+sundials+mpi") - depends_on("sundials@5.0.0:6.7.0", when="@4.5.0:+sundials~mpi") - depends_on("sundials@5.0.0:6.7.0+mpi+hypre", when="@4.5.0:+sundials+mpi") + depends_on("sundials@5.0.0:6.7.0", when="@4.5.0:4.6+sundials~mpi") + depends_on("sundials@5.0.0:6.7.0+mpi+hypre", when="@4.5.0:4.6+sundials+mpi") + depends_on("sundials@5.0.0:", when="@4.7.0:+sundials~mpi") + depends_on("sundials@5.0.0:+mpi+hypre", when="@4.7.0:+sundials+mpi") conflicts("cxxstd=11", when="^sundials@6.4.0:") for sm_ in CudaPackage.cuda_arch_values: depends_on( @@ -507,6 +509,7 @@ class Mfem(Package, CudaPackage, ROCmPackage): sha256="2a31682d876626529e2778a216d403648b83b90997873659a505d982d0e65beb", ) patch("mfem-4.7.patch", when="@4.7.0") + patch("mfem-4.7-sundials-7.patch", when="@4.7.0+sundials ^sundials@7:") phases = ["configure", "build", "install"] diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 41f939df5beaff..3708e34d492106 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -733,6 +733,8 @@ def libs(self): # Q: should the result be ordered by dependency? else: sun_libs = ["libsundials_" + p for p in query_parameters] + if self.spec.satisfies("@7:"): + sun_libs += ["libsundials_core"] is_shared = "+shared" in self.spec libs = find_libraries(sun_libs, root=self.prefix, shared=is_shared, recursive=True) From 68b69aa9e3f6fdee943e72a3ed75c23de172142e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:21:42 -0600 Subject: [PATCH 466/615] build(deps): bump sphinx-rtd-theme in /lib/spack/docs (#47588) Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 3.0.1 to 3.0.2. - [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst) - [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/3.0.1...3.0.2) --- updated-dependencies: - dependency-name: sphinx-rtd-theme dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- lib/spack/docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index 879fe33874579b..1012054387cfad 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -1,7 +1,7 @@ sphinx==8.1.3 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 -sphinx-rtd-theme==3.0.1 +sphinx-rtd-theme==3.0.2 python-levenshtein==0.26.1 docutils==0.21.2 pygments==2.18.0 From b90ac6441cfdf6425cb59551e7b0538899b69527 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Fri, 15 Nov 2024 19:27:22 -0500 Subject: [PATCH 467/615] celeritas: remove ancient versions and add CUDA package dependency (#47629) * celeritas: remove deprecated versions through 0.3 * celeritas: deprecate old versions * celeritas: add c++20 option * Propagate vecgeom CUDA requirements * Remove outdated conflicts and format it --- .../builtin/packages/celeritas/package.py | 72 ++++--------------- 1 file changed, 14 insertions(+), 58 deletions(-) diff --git a/var/spack/repos/builtin/packages/celeritas/package.py b/var/spack/repos/builtin/packages/celeritas/package.py index b83a96a9e9c3f4..b0e605ffc3caf5 100644 --- a/var/spack/repos/builtin/packages/celeritas/package.py +++ b/var/spack/repos/builtin/packages/celeritas/package.py @@ -20,67 +20,35 @@ class Celeritas(CMakePackage, CudaPackage, ROCmPackage): license("Apache-2.0") version("0.5.0", sha256="4a8834224d96fd01897e5872ac109f60d91ef0bd7b63fac05a73dcdb61a5530e") - version("0.4.4", sha256="8b5ae63aa2d50c2ecf48d752424e4a33c50c07d9f0f5ca5448246de3286fd836") - version("0.4.3", sha256="b4f603dce1dc9c4894ea4c86f6574026ea8536714982e7dc6dff7472c925c892") - version("0.4.2", sha256="eeca9705413f5e16e0fb81154e042600c8df125af7049912757feb01d43730e2") - version("0.4.1", sha256="24e5c15eb9eec45f52d94a6719ae3505388b49d409cb7e26c875c70ac409bd2c") version( - "0.4.0", - sha256="8b8eaef84641eeca0fc40321d358205fc9d51e3c6dc7bd1bf03218c1919c774e", - deprecated=True, - ) - version("0.3.2", sha256="65a33de2518716638375df259d9dfc4d68b821ba1110f56b24c823ef5c5df249") - version( - "0.3.1", - sha256="0f1effab306856d66f5079e8cadcb63e8c1f8a79245b94bf44b89251b3fb0cf0", - deprecated=True, - ) - version( - "0.3.0", - sha256="f9620b6bcd8c9b5324ef215f8e44461f915c3fff47bf85ae442c9dafacaa79ac", - deprecated=True, - ) - version("0.2.2", sha256="ba5e341d636e00e3d7dbac13a2016b97014917489f46b8b387a2adf9d9563872") - version( - "0.2.1", - sha256="b3717b43f70dd0da848139da4171ca7a887bb6777908845b6d953d47b1f4db41", + "0.4.4", + sha256="8b5ae63aa2d50c2ecf48d752424e4a33c50c07d9f0f5ca5448246de3286fd836", deprecated=True, ) version( - "0.2.0", - sha256="12af28fda0e482a9eba89781b4ead445cf6f170bc1b8d88cc814e49b1ec09e9f", + "0.4.3", + sha256="b4f603dce1dc9c4894ea4c86f6574026ea8536714982e7dc6dff7472c925c892", deprecated=True, ) - version("0.1.5", sha256="5e63b9ce7fcfe34a8938565b84453bce51fa6639d1ede13bb59d41de6431cef4") version( - "0.1.4", - sha256="ea82a03fc750a2a805f87afd9ac944109dd7537edb5c0c370f93d332d4cd47db", + "0.4.2", + sha256="eeca9705413f5e16e0fb81154e042600c8df125af7049912757feb01d43730e2", deprecated=True, ) version( - "0.1.3", - sha256="992c49a48adba884fe3933c9624da5bf480ef0694809430ae98903f2c28cc881", + "0.4.1", + sha256="24e5c15eb9eec45f52d94a6719ae3505388b49d409cb7e26c875c70ac409bd2c", deprecated=True, ) version( - "0.1.2", - sha256="d123ea2e34267adba387d46bae8c9a1146a2e047f87f2ea5f823878c1684678d", - deprecated=True, - ) - version( - "0.1.1", - sha256="a1d58e29226e89a2330d69c40049d61e7c885cf991824e60ff8c9ccc95fc5ec6", - deprecated=True, - ) - version( - "0.1.0", - sha256="46692977b9b31d73662252cc122d7f016f94139475788bca7fdcb97279b93af8", + "0.4.0", + sha256="8b8eaef84641eeca0fc40321d358205fc9d51e3c6dc7bd1bf03218c1919c774e", deprecated=True, ) depends_on("cxx", type="build") - _cxxstd_values = ("14", "17") + _cxxstd_values = ("17", "20") # Note: cuda and rocm variants are defined by mixin classes variant( @@ -107,13 +75,10 @@ class Celeritas(CMakePackage, CudaPackage, ROCmPackage): depends_on("nlohmann-json") depends_on("geant4@10.5:", when="@0.4.2: +geant4") depends_on("geant4@10.5:11.1", when="@0.3.1:0.4.1 +geant4") - depends_on("geant4@10.6:11.1", when="@0.3.0 +geant4") - depends_on("geant4@10.6:11.0", when="@0.2.1:0.2 +geant4") - depends_on("geant4@10.7:11.0", when="@:0.2.0 +geant4") depends_on("hepmc3", when="+hepmc3") depends_on("root", when="+root") depends_on("swig@4.1:", when="+swig") - depends_on("vecgeom", when="+vecgeom") + depends_on("vecgeom@1.2.5:", when="+vecgeom") depends_on("python", type="build") depends_on("doxygen", type="build", when="+doc") @@ -125,20 +90,11 @@ class Celeritas(CMakePackage, CudaPackage, ROCmPackage): depends_on("root cxxstd=" + _std, when="+root cxxstd=" + _std) depends_on("vecgeom cxxstd=" + _std, when="+vecgeom cxxstd=" + _std) - depends_on("vecgeom@1.2.5:", when="+vecgeom @0.4:") - depends_on("vecgeom +gdml@1.1.17:1", when="+vecgeom @:0.3") - depends_on("vecgeom +cuda", when="+vecgeom +cuda") + for _arch in CudaPackage.cuda_arch_values: + depends_on("vecgeom+cuda cuda_arch=" + _arch, when="+vecgeom +cuda cuda_arch=" + _arch) - conflicts("cxxstd=14", when="@0.3:") conflicts("+rocm", when="+cuda", msg="AMD and NVIDIA accelerators are incompatible") conflicts("+rocm", when="+vecgeom", msg="HIP support is only available with ORANGE") - conflicts("^vecgeom+shared@1.2.0", when="+vecgeom +cuda") - - patch( - "https://patch-diff.githubusercontent.com/raw/celeritas-project/celeritas/pull/830.patch?full_index=1", - sha256="9ac1929a95170b497aaac76f62146f313e4b31aea7271acac354270550d0d685", - when="@0.3.0 ^geant4@10", - ) def cmake_args(self): define = self.define From 33a796801c5ab0ed8bffa48c6f8b6007b45dbb63 Mon Sep 17 00:00:00 2001 From: Thomas Gruber Date: Sat, 16 Nov 2024 03:04:21 +0100 Subject: [PATCH 468/615] Likwid: add version 5.4.0 (#47630) --- var/spack/repos/builtin/packages/likwid/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index c6a7242ce91f10..be7990506fc3d5 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -26,6 +26,7 @@ class Likwid(Package): license("GPL-3.0-only") + version("5.4.0", sha256="0f2b671c69caa993fedb48187b3bdcc94c22400ec84c926fd0898dbff68aa03e") version("5.3.0", sha256="c290e554c4253124ac2ab8b056e14ee4d23966b8c9fbfa10ba81f75ae543ce4e") version("5.2.2", sha256="7dda6af722e04a6c40536fc9f89766ce10f595a8569b29e80563767a6a8f940e") version("5.2.1", sha256="1b8e668da117f24302a344596336eca2c69d2bc2f49fa228ca41ea0688f6cbc2") From 55c770c556b48153e5566ed0c516125222968d13 Mon Sep 17 00:00:00 2001 From: Paolo <142514942+paolotricerri@users.noreply.github.com> Date: Sat, 16 Nov 2024 02:05:38 +0000 Subject: [PATCH 469/615] Add ACfL 24.10.1 (#47616) --- .../repos/builtin/packages/acfl/package.py | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index 4df0644898456b..4fa2f553e8d310 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -35,6 +35,36 @@ } _versions = { + "24.10.1": { + "RHEL-8": ( + "0e894ce2a9d7af8fabe21368a44e9f71d25bda80413fb8dd22f389c3c5e36100", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_RHEL-8_aarch64.tar", + ), + "RHEL-9": ( + "5c2cd9c6f505050a39012f180a5c739065f140fe45b9c3039f3e6e6b7c911002", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_RHEL-9_aarch64.tar", + ), + "SLES-15": ( + "3b33b397b253a14994b6341f219ed6af5cf79ba8fc5acb99fa028deb4344fbaf", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_SLES-15_aarch64.tar", + ), + "Ubuntu-20.04": ( + "5a5e47cbb1a28f633961a418ff990f72bdd76c2854da80aa3dcf7619bb0fcc8c", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_Ubuntu-20.04_aarch64.tar", + ), + "Ubuntu-22.04": ( + "d1da0469a0c6df62911edd2bbe49525aa56fffe9a9f419aa19e9aaa9a8bd0295", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_Ubuntu-22.04_aarch64.tar", + ), + "AmazonLinux-2": ( + "bfcb0de00be5b65a37d41473a9f85ac49b29ccb83e0338e57910fa0a9ffef79d", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_AmazonLinux-2_aarch64.tar", + ), + "AmazonLinux-2023": ( + "56a292dd2283c842d5bcfbeaa9bdb81d28f30f7500a7fd113487ecc456652fe9", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10.1/arm-compiler-for-linux_24.10.1_AmazonLinux-2023_aarch64.tar", + ), + }, "24.10": { "RHEL-8": ( "7c685c5393345baff573dc53ea3bb84e6293f9e51808e168ececcf51efb45813", @@ -242,9 +272,7 @@ def get_os(ver): return _os_map_before_23.get(spack_os, "") if ver.startswith("23") or ver == "24.04": return {**_os_map, "centos7": "RHEL-7", "rhel7": "RHEL-7"}.get(spack_os, "RHEL-7") - if ver == "24.10": - return _os_map.get(spack_os, "RHEL-8") - return "RHEL-8" + return _os_map.get(spack_os, "RHEL-8") def get_armpl_version_to_3(spec): From e8a8e2d98b0be343a5dd45a7dfc38f575fd8216b Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Fri, 15 Nov 2024 21:09:22 -0500 Subject: [PATCH 470/615] mapl: add 2.40.3.1 (#47627) * mapl: add 2.40.3.1 * Relax ESMF requirement --- var/spack/repos/builtin/packages/mapl/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 4fa64a712ea37e..ae8ce3780510cd 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -72,6 +72,7 @@ class Mapl(CMakePackage): version("2.41.0", sha256="1142f9395e161174e3ec1654fba8bda1d0bd93edc7438b1927d8f5d7b42a0a86") version("2.40.5", sha256="85b4a4ac0d843398452808b88d7a5c29435aa37b69b91a1f4bee664e9f367b7d") version("2.40.4", sha256="fb843b118d6e56cd4fc4b114c4d6f91956d5c8b3d9389ada56da1dfdbc58904f") + version("2.40.3.1", sha256="1e5a9d6a84d23febe826b1adcd2c2b1681bcc2e61c2959a8bbf4756357e22187") version("2.40.3", sha256="4b82a314c88a035fc2b91395750aa7950d6bee838786178ed16a3f39a1e45519") version("2.40.2", sha256="7327f6f5bce6e09e7f7b930013fba86ee7cbfe8ed4c7c087fc9ab5acbf6640fd") version("2.40.1", sha256="6f40f946fabea6ba73b0764092e495505d220455b191b4e454736a0a25ee058c") @@ -269,6 +270,7 @@ class Mapl(CMakePackage): # ESMF dependency depends_on("esmf@8.6.1:", when="@2.45:") + depends_on("esmf@8.6.1:", when="@=2.40.3.1") depends_on("esmf@8.6.0", when="@2.44") depends_on("esmf@8.5:", when="@2.40:2.43") depends_on("esmf@8.4", when="@2.34:2.39") From d4adfda385b814e99ac202c76416ce0069db8974 Mon Sep 17 00:00:00 2001 From: teddy Date: Sat, 16 Nov 2024 03:10:52 +0100 Subject: [PATCH 471/615] costo: add v0.0.8 (#47625) Co-authored-by: t. chantrait --- var/spack/repos/builtin/packages/costo/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/costo/package.py b/var/spack/repos/builtin/packages/costo/package.py index 2e509974de1d87..179de45e0273b2 100644 --- a/var/spack/repos/builtin/packages/costo/package.py +++ b/var/spack/repos/builtin/packages/costo/package.py @@ -18,7 +18,8 @@ class Costo(CMakePackage): license("LGPL-3.0-or-later") - version("0.0.5", tag="v0.0.5", preferred=True) + version("0.0.8", tag="v0.0.8", preferred=True) + version("0.0.5", tag="v0.0.5") version("develop", branch="devel") version("main", branch="main", deprecated=True) From db83c62fb12f217dd47fee44c986d07b90f557ab Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Sat, 16 Nov 2024 02:54:43 +0000 Subject: [PATCH 472/615] arrow: add v18.0.0 (#47494) * arrow: added version 18.0.0 This PR adds version 18.0.0 to the arrow package. * arrow: updated dependency on llvm --- var/spack/repos/builtin/packages/arrow/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index 53fc4bd8c67b79..31abcd702380ee 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -54,7 +54,12 @@ class Arrow(CMakePackage, CudaPackage): depends_on("llvm@:11 +clang", when="+gandiva @:3", type="build") depends_on("llvm@:12 +clang", when="+gandiva @:4", type="build") depends_on("llvm@:13 +clang", when="+gandiva @:7", type="build") - depends_on("llvm@:14 +clang", when="+gandiva @8:", type="build") + depends_on("llvm@:14 +clang", when="+gandiva @:9", type="build") + depends_on("llvm@:15 +clang", when="+gandiva @:11", type="build") + depends_on("llvm@:16 +clang", when="+gandiva @:13", type="build") + depends_on("llvm@:17 +clang", when="+gandiva @:15.0.1", type="build") + depends_on("llvm@:18.1 +clang", when="+gandiva @:16.0.1", type="build") + depends_on("llvm@:19.1 +clang", when="+gandiva", type="build") depends_on("lz4", when="+lz4") depends_on("ninja", type="build") depends_on("openssl", when="+gandiva @6.0.0:") From 6662046acac5a4c1c0ee80e418a5121b5240f26e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 15 Nov 2024 20:57:48 -0600 Subject: [PATCH 473/615] armadillo: add v14.0.3 (#47634) --- var/spack/repos/builtin/packages/armadillo/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index a2b562518ab33e..939a3e62f91552 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -17,6 +17,7 @@ class Armadillo(CMakePackage): license("Apache-2.0") + version("14.0.3", sha256="ebd6215eeb01ee412fed078c8a9f7f87d4e1f6187ebcdc1bc09f46095a4f4003") version("14.0.2", sha256="248e2535fc092add6cb7dea94fc86ae1c463bda39e46fd82d2a7165c1c197dff") version("12.8.4", sha256="558fe526b990a1663678eff3af6ec93f79ee128c81a4c8aef27ad328fae61138") version("12.8.3", sha256="2922589f6387796504b340da6bb954bef3d87574c298515893289edd2d890151") From e91b8c291a5154b41e42d329f51955b996985c8f Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Sat, 16 Nov 2024 04:16:16 +0100 Subject: [PATCH 474/615] py-numpy-quaternion: add v2024.0.3 (#47469) * py-numpy-quaterion: add new version. * Update dependency version bounds Co-authored-by: Wouter Deconinck * Fix build dependencies. --------- Co-authored-by: Wouter Deconinck --- .../builtin/packages/py-numpy-quaternion/package.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-numpy-quaternion/package.py b/var/spack/repos/builtin/packages/py-numpy-quaternion/package.py index e7e7e1a60a3c59..e4dbee34d1b12a 100644 --- a/var/spack/repos/builtin/packages/py-numpy-quaternion/package.py +++ b/var/spack/repos/builtin/packages/py-numpy-quaternion/package.py @@ -17,13 +17,15 @@ class PyNumpyQuaternion(PythonPackage): C for speed.""" homepage = "https://github.com/moble/quaternion" - pypi = "numpy-quaternion/numpy-quaternion-2021.11.4.15.26.3.tar.gz" + pypi = "numpy-quaternion/numpy_quaternion-2024.0.3.tar.gz" license("MIT") + version("2024.0.3", sha256="cf39a8a4506eeda297ca07a508c10c08b3487df851a0e34f070a7bf8fab9f290") version( "2021.11.4.15.26.3", sha256="b0dc670b2adc8ff2fb8d6105a48769873f68d6ccbe20af6a19e899b1e8d48aaf", + url="https://pypi.io/packages/source/n/numpy-quaternion/numpy-quaternion-2021.11.4.15.26.3.tar.gz", ) depends_on("c", type="build") # generated @@ -31,7 +33,16 @@ class PyNumpyQuaternion(PythonPackage): variant("scipy", default=True, description="Build with scipy support") variant("numba", default=True, description="Build with numba support") + depends_on("python@3.10:", when="@2024:") + depends_on("py-setuptools", type="build") + depends_on("py-setuptools@0.61:", type="build", when="@2024:") + depends_on("py-hatchling", type="build", when="@2024:") + depends_on("py-numpy@1.13:", type=("build", "run")) + depends_on("py-numpy@2", type=("build"), when="@2024:") + depends_on("py-numpy@1.25:2", type=("run"), when="@2024:") depends_on("py-scipy", type=("build", "run"), when="+scipy") + depends_on("py-scipy@1.5:1", type=("build", "run"), when="@2024:+scipy") depends_on("py-numba", type=("build", "run"), when="+numba") + depends_on("py-numba@0.55:", type=("build", "run"), when="@2024:+numba") From 6ef0f495a967ffaa7cffedc630c58d4a98824a6a Mon Sep 17 00:00:00 2001 From: Matthias Wolf Date: Sat, 16 Nov 2024 04:27:41 +0100 Subject: [PATCH 475/615] py-libsonata: add v0.1.29 (#47466) * py-libsonata: new version. * Fix Python version dependency. * py-libsonata: fix typo --------- Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/py-libsonata/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-libsonata/package.py b/var/spack/repos/builtin/packages/py-libsonata/package.py index 36937e902d8ec8..da74fde4f2d22e 100644 --- a/var/spack/repos/builtin/packages/py-libsonata/package.py +++ b/var/spack/repos/builtin/packages/py-libsonata/package.py @@ -16,10 +16,13 @@ class PyLibsonata(PythonPackage): maintainers("tristan0x") version("master", branch="master") + version("0.1.29", sha256="321878f28c7d64a65683443f832dfa2f21ff8ed69e700d2dde62ccb5f87d4525") version("0.1.25", sha256="b332efa718123ee265263e1583a5998eaa945a13b8a22903873764cf1d8173fa") depends_on("cxx", type="build") # generated + depends_on("python@3.9:", type=("build", "run"), when="@0.1.29:") + depends_on("catch2@2.13:", type="test") depends_on("cmake@3.16:", type="build") depends_on("fmt@7.1:") From a5ba4f8d91b333321eedb4820afd16c1b9537e53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 21:41:14 -0600 Subject: [PATCH 476/615] build(deps): bump codecov/codecov-action from 4.6.0 to 5.0.2 (#47631) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.6.0 to 5.0.2. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238...5c47607acb93fed5485fdbf7232e8a31425f672a) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index c9f1a2e004a62c..3357f4a1ba764d 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -29,6 +29,6 @@ jobs: - run: coverage xml - name: "Upload coverage report to CodeCov" - uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 + uses: codecov/codecov-action@5c47607acb93fed5485fdbf7232e8a31425f672a with: verbose: true From 7443a3b57218bc71b578650ee59d659c1e910677 Mon Sep 17 00:00:00 2001 From: Thomas Bouvier Date: Sat, 16 Nov 2024 04:17:51 +0000 Subject: [PATCH 477/615] py-wandb: add v0.16.6 (#43891) * py-wandb: add version v0.16.6 * fix: typo * py-wandb: py-click when @0.15.5:, py-pathtools when @:0.15 --------- Co-authored-by: Wouter Deconinck --- var/spack/repos/builtin/packages/py-wandb/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-wandb/package.py b/var/spack/repos/builtin/packages/py-wandb/package.py index 6d0949338c04d3..23a3b05d8d0f29 100644 --- a/var/spack/repos/builtin/packages/py-wandb/package.py +++ b/var/spack/repos/builtin/packages/py-wandb/package.py @@ -17,11 +17,11 @@ class PyWandb(PythonPackage): license("MIT") + version("0.16.6", sha256="86f491e3012d715e0d7d7421a4d6de41abef643b7403046261f962f3e512fe1c") version("0.13.9", sha256="0a17365ce1f18306ce7a7f16b943094fac7284bb85f4e52c0685705602f9e307") depends_on("py-setuptools", type=("build", "run")) - depends_on("py-pathtools", type=("build", "run")) depends_on("py-setproctitle", type=("build", "run")) depends_on("py-appdirs@1.4.3:", type=("build", "run")) depends_on("py-protobuf@3.19:4", type=("build", "run")) @@ -29,10 +29,15 @@ class PyWandb(PythonPackage): depends_on("py-typing-extensions", type=("build", "run"), when="^python@:3.9") depends_on("py-pyyaml", type=("build", "run")) - depends_on("py-click@7:", type=("build", "run")) + depends_on("py-click@7:", type=("build", "run"), when="@0.13") + depends_on("py-click@7.1:", type=("build", "run"), when="@0.15.5:") conflicts("^py-click@8.0.0") depends_on("py-gitpython@1:", type=("build", "run")) + conflicts("^py-gitpython@3.1.29") depends_on("py-requests@2", type=("build", "run")) depends_on("py-psutil@5:", type=("build", "run")) depends_on("py-sentry-sdk@1.0.0:", type=("build", "run")) depends_on("py-dockerpy-creds@0.4.0:", type=("build", "run")) + + # Historical dependencies + depends_on("py-pathtools", type=("build", "run"), when="@:0.15") From 60eb0e9c8080178c9b0ae093f76213137fc92db9 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 15 Nov 2024 22:56:25 -0700 Subject: [PATCH 478/615] Bug fix in py-scipy for versions 1.8.0 to 1.14.0 that surfaces with latest Clang and Intel LLVM compilers (#47620) --- var/spack/repos/builtin/packages/py-scipy/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 79bb27a1d6bf19..5c2d41645a181a 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -178,6 +178,13 @@ class PyScipy(PythonPackage): patch("scipy-clang.patch", when="@1.5.0:1.6.3 %clang") + # https://github.com/scipy/scipy/issues/21884 + patch( + "https://github.com/scipy/scipy/commit/ab7d08c6148286059f6498ab5c3070268d13cbd9.patch?full_index=1", + sha256="37209324c6c2d9bf9284bf4726ec3ea7ecafabf736c7a72cf6789af97aebd30b", + when="@1.8.0:1.14.0", + ) + @property def archive_files(self): return [join_path(self.stage.source_path, "build", "meson-logs", "meson-log.txt")] From 26d80e7bc5475634fbb4bfd89431f962d2c62be4 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sat, 16 Nov 2024 09:43:54 +0100 Subject: [PATCH 479/615] py-blosc2: use external libblosc2 (#47566) --- .../builtin/packages/py-blosc2/package.py | 25 ++++++++++++++----- .../builtin/packages/py-tables/package.py | 7 ++++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-blosc2/package.py b/var/spack/repos/builtin/packages/py-blosc2/package.py index 30964085df71a7..d852742cc42ea3 100644 --- a/var/spack/repos/builtin/packages/py-blosc2/package.py +++ b/var/spack/repos/builtin/packages/py-blosc2/package.py @@ -3,6 +3,9 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import shlex + +from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -18,16 +21,26 @@ class PyBlosc2(PythonPackage): version("2.2.8", sha256="59065aac5e9b01b0e9f3825d8e7f69f64b59bbfab148a47c54e4115f62a97474") version("2.0.0", sha256="f19b0b3674f6c825b490f00d8264b0c540c2cdc11ec7e81178d38b83c57790a1") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("python@3.9:3", when="@2.2:", type=("build", "link", "run")) depends_on("python@3.8:3", when="@2.0", type=("build", "link", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-scikit-build", type="build") - depends_on("py-cython", type="build") - depends_on("cmake@3.11:", type="build") - depends_on("ninja", type="build") depends_on("py-numpy@1.20.3:", type=("build", "link", "run")) depends_on("py-ndindex@1.4:", when="@2.2:", type=("build", "run")) depends_on("py-msgpack", type=("build", "run")) depends_on("py-py-cpuinfo", when="@2.2:", type=("build", "run")) + depends_on("c-blosc2", type="link") + + with default_args(type="build"): + depends_on("py-setuptools") + depends_on("py-scikit-build") + depends_on("py-cython") + depends_on("cmake@3.11:") + depends_on("ninja") + depends_on("pkgconfig") + + def setup_build_environment(self, env): + cmake_args = [*CMakeBuilder.std_args(self), CMakeBuilder.define("USE_SYSTEM_BLOSC2", True)] + # scikit-build does not want a CMAKE_INSTALL_PREFIX + cmake_args = [arg for arg in cmake_args if "CMAKE_INSTALL_PREFIX" not in arg] + env.set("SKBUILD_CONFIGURE_OPTIONS", " ".join(shlex.quote(arg) for arg in cmake_args)) diff --git a/var/spack/repos/builtin/packages/py-tables/package.py b/var/spack/repos/builtin/packages/py-tables/package.py index e2242acf8cc348..54aa7771fbafec 100644 --- a/var/spack/repos/builtin/packages/py-tables/package.py +++ b/var/spack/repos/builtin/packages/py-tables/package.py @@ -31,8 +31,8 @@ class PyTables(PythonPackage): depends_on("cxx", type="build") # generated variant("zlib", default=True, description="Support for zlib compression") - variant("bzip2", default=False, description="Support for bzip2 compression") - variant("lzo", default=False, description="Support for lzo compression") + variant("bzip2", default=True, description="Support for bzip2 compression") + variant("lzo", default=True, description="Support for lzo compression") # pyproject.toml depends_on("py-setuptools@61:", when="@3.9:", type="build") @@ -65,6 +65,9 @@ class PyTables(PythonPackage): depends_on("c-blosc@1.11.1:", when="@3.8:") depends_on("c-blosc@1.4.1:", when="@3.3:") + # blosc2 headers are directly included + depends_on("c-blosc2") + depends_on("zlib-api", when="+zlib") depends_on("bzip2", when="+bzip2") depends_on("lzo", when="+lzo") From e56057fd795d30146d58934840fe5b6e96f71e65 Mon Sep 17 00:00:00 2001 From: etiennemlb Date: Sat, 16 Nov 2024 11:11:52 +0100 Subject: [PATCH 480/615] gobject-introspection: Do not write to user home (#47621) --- .../repos/builtin/packages/gobject-introspection/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 9ac9aa32e650cb..3e6e32de13a40b 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -106,6 +106,7 @@ def setup_build_environment(self, env): # Only needed for sbang.patch above if self.spec.satisfies("@:1.60"): env.set("SPACK_SBANG", sbang.sbang_install_path()) + env.set("GI_SCANNER_DISABLE_CACHE", "1") def setup_run_environment(self, env): env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) @@ -113,6 +114,7 @@ def setup_run_environment(self, env): def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) + env.set("GI_SCANNER_DISABLE_CACHE", "1") def setup_dependent_run_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) From 448049ccfcd1c841cedd11dd38473e61a8108c34 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sat, 16 Nov 2024 09:09:41 -0600 Subject: [PATCH 481/615] qt-tools: new package (#45602) * qt-tools: new pkg with +designer to build Qt Designer for QWT * qt-tools: fix style * qt-tools: fix unused variable * qt-tools: rm setup_run_environments (now in qt-base) * qt-tools: add myself as maintainer * qt-tools: add variant assistant; use commits with submodule * qt-base: define QtPackage.get_git --- .../repos/builtin/packages/qt-base/package.py | 5 ++ .../builtin/packages/qt-tools/package.py | 60 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qt-tools/package.py diff --git a/var/spack/repos/builtin/packages/qt-base/package.py b/var/spack/repos/builtin/packages/qt-base/package.py index ca3acad6543bf7..ff1d8f5a4651cd 100644 --- a/var/spack/repos/builtin/packages/qt-base/package.py +++ b/var/spack/repos/builtin/packages/qt-base/package.py @@ -27,6 +27,11 @@ def get_url(qualname): _url = "https://github.com/qt/{}/archive/refs/tags/v6.2.3.tar.gz" return _url.format(qualname.lower()) + @staticmethod + def get_git(qualname): + _git = "https://github.com/qt/{}.git" + return _git.format(qualname.lower()) + @staticmethod def get_list_url(qualname): _list_url = "https://github.com/qt/{}/tags" diff --git a/var/spack/repos/builtin/packages/qt-tools/package.py b/var/spack/repos/builtin/packages/qt-tools/package.py new file mode 100644 index 00000000000000..afb28b8a766829 --- /dev/null +++ b/var/spack/repos/builtin/packages/qt-tools/package.py @@ -0,0 +1,60 @@ +# 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) + + +from spack.package import * +from spack.pkg.builtin.qt_base import QtBase, QtPackage + + +class QtTools(QtPackage): + """Qt Tools contains tools like Qt Designer.""" + + url = QtPackage.get_url(__qualname__) + git = QtPackage.get_git(__qualname__) + list_url = QtPackage.get_list_url(__qualname__) + + maintainers("wdconinc") + + license("BSD-3-Clause") + + # src/assistant/qlitehtml is a submodule that is not in the git archive + version("6.7.3", commit="ec4747e62a837a0262212a5f4fb03734660c7360", submodules=True) + version("6.7.2", commit="46ffaed90df8c14d67b4b16fdf5e0b87ab227c88", submodules=True) + + variant( + "assistant", + default=False, + description="Qt Assistant for viewing on-line documentation in Qt help file format.", + ) + variant( + "designer", + default=False, + description="Qt Widgets Designer for designing and building GUIs with Qt Widgets.", + ) + + depends_on("llvm +clang") + + depends_on("qt-base +network") + depends_on("qt-base +widgets", when="+designer") + + for _v in QtBase.versions: + v = str(_v) + depends_on("qt-base@" + v, when="@" + v) + + def cmake_args(self): + spec = self.spec + + args = super().cmake_args() + [] + + def define(cmake_var, value): + args.append(self.define(cmake_var, value)) + + if spec.satisfies("+assistant"): + define("FEATURE_assistant", True) + + if spec.satisfies("+designer"): + define("FEATURE_designer", True) + + return args From f05cbfbf44f326d00ae89993daca94a75d911d50 Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Sat, 16 Nov 2024 16:42:16 -0600 Subject: [PATCH 482/615] xsdk: dealii has changes to variant defaults, update xsdk accordingly (#47602) --- var/spack/repos/builtin/packages/xsdk/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 29cfc1cec8ceca..8048808a65bf1a 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -170,12 +170,14 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("dealii ~trilinos", when="~trilinos +dealii") xsdk_depends_on( "dealii@9.5.1~assimp~python~doc~gmsh+petsc+slepc+mpi~int64" - + "~netcdf+metis+sundials~ginkgo~symengine~simplex~arborx~cgal~oce", + + "~netcdf+metis+sundials~ginkgo~symengine~simplex~arborx~cgal~oce" + + "~opencascade", when="@1.0.0 +dealii", ) xsdk_depends_on( "dealii@9.4.0~assimp~python~doc~gmsh+petsc+slepc+mpi~int64" - + "~netcdf+metis+sundials~ginkgo~symengine~simplex~arborx~cgal", + + "~netcdf+metis+sundials~ginkgo~symengine~simplex~arborx~cgal~oce" + + "~opencascade", when="@0.8.0 +dealii", ) From 08f1cf9ae2e67bdbd104e45690d27d27e3c156d8 Mon Sep 17 00:00:00 2001 From: Gregory Becker Date: Wed, 13 Nov 2024 11:38:18 -0800 Subject: [PATCH 483/615] Update CHANGELOG.md for v0.23.0 --- CHANGELOG.md | 364 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 363 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d17e49d59656e..4f18c386cb796c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,365 @@ +# v0.23.0 (2024-11-13) + +`v0.23.0` is a major feature release. + +We are planning to make this the last major release before Spack `v1.0` +in June 2025. Alongside `v0.23`, we will be making pre-releases (alpha, +beta, etc.) of `v1.0`, and we encourage users to try them and send us +feedback, either on GitHub or on Slack. You can track the road to +`v1.0` here: + + * https://github.com/spack/spack/releases + * https://github.com/spack/spack/discussions/30634 + +## Features in this Release + +1. **Language virtuals** + + Your packages can now explicitly depend on the languages they require. + Historically, Spack has considered C, C++, and Fortran compiler + dependencies to be implicit. In `v0.23`, you should ensure that + new packages add relevant C, C++, and Fortran dependencies like this: + + ```python + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + ``` + + We encourage you to add these annotations to your packages now, to prepare + for Spack `v1.0.0`. In `v1.0.0`, these annotations will be necessary for + your package to use C, C++, and Fortran compilers. Note that you should + *not* add language dependencies to packages that don't need them, e.g., + pure python packages. + + We have already auto-generated these dependencies for packages in the + `builtin` repository (see #45217), based on the types of source files + present in each package's source code. We *may* have added too many or too + few language dependencies, so please submit pull requests to correct + packages if you find that the language dependencies are incorrect. + + Note that we have also backported support for these dependencies to + `v0.21.3` and `v0.22.2`, to make all of them forward-compatible with + `v0.23`. This should allow you to move easily between older and newer Spack + releases without breaking your packages. + +2. **Spec splicing** + + We are working to make binary installation more seamless in Spack. `v0.23` + introduces "splicing", which allows users to deploy binaries using local, + optimized versions of a binary interface, even if they were not built with + that interface. For example, this would allow you to build binaries in the + cloud using `mpich` and install them on a system using a local, optimized + version of `mvapich2` *without rebuilding*. Spack preserves full provenance + for the installed packages and knows that they were built one way but + deployed another. + + Our intent is to leverage this across many key HPC binary packages, + e.g. MPI, CUDA, ROCm, and libfabric. + + Fundamentally, splicing allows Spack to redeploy an existing spec with + different dependencies than how it was built. There are two interfaces to + splicing. + + a. Explicit Splicing + + #39136 introduced the explicit splicing interface. In the + concretizer config, you can specify a target spec and a replacement + by hash. + + ```yaml + concretizer: + splice: + explicit: + - target: mpi + replacement: mpich/abcdef + ``` + + Here, every installation that would normally use the target spec will + instead use its replacement. Above, any spec using *any* `mpi` will be + spliced to depend on the specific `mpich` installation requested. This + *can* go wrong if you try to replace something built with, e.g., + `openmpi` with `mpich`, and it is on the user to ensure ABI + compatibility between target and replacement specs. This currently + requires some expertise to use, but it will allow users to reuse the + binaries they create across more machines and environments. + + b. Automatic Splicing (experimental) + + #46729 introduced automatic splicing. In the concretizer config, enable + automatic splicing: + + ```yaml + concretizer: + splice: + automatic: true + ``` + + or run: + + ```console + spack config add concretizer:splice:automatic:true + ``` + + The concretizer will select splices for ABI compatibility to maximize + package reuse. Packages can denote ABI compatibility using the + `can_splice` directive. No packages in Spack yet use this directive, so + if you want to use this feature you will need to add `can_splice` + annotations to your packages. We are working on ways to add more ABI + compatibility information to the Spack package repository, and this + directive may change in the future. + + See the documentation for more details: + * https://spack.readthedocs.io/en/latest/build_settings.html#splicing + * https://spack.readthedocs.io/en/latest/packaging_guide.html#specifying-abi-compatibility + +3. Broader variant propagation + + Since #42931, you can specify propagated variants like `hdf5 + build_type==RelWithDebInfo` or `trilinos ++openmp` to propagate a variant + to all dependencies for which it is relevant. This is valid *even* if the + variant does not exist on the package or its dependencies. + + See https://spack.readthedocs.io/en/latest/basic_usage.html#variants. + +4. Query specs by namespace + + #45416 allows a package's namespace (indicating the repository it came from) + to be treated like a variant. You can request packages from particular repos + like this: + + ```console + spack find zlib namespace=builtin + spack find zlib namespace=myrepo + ``` + + Previously, the spec syntax only allowed namespaces to be prefixes of spec + names, e.g. `builtin.zlib`. The previous syntax still works. + +5. `spack spec` respects environment settings and `unify:true` + + `spack spec` did not previously respect environment lockfiles or + unification settings, which made it difficult to see exactly how a spec + would concretize within an environment. Now it does, so the output you get + with `spack spec` will be *the same* as what your environment will + concretize to when you run `spack concretize`. Similarly, if you provide + multiple specs on the command line with `spack spec`, it will concretize + them together if `unify:true` is set. + + See #47556 and #44843. + +6. Less noisy `spack spec` output + + `spack spec` previously showed output like this: + + ```console + > spack spec /v5fn6xo + Input spec + -------------------------------- + - /v5fn6xo + + Concretized + -------------------------------- + [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared arch=darwin-sequoia-m1 + ... + ``` + + But the input spec is redundant, and we know we run `spack spec` to concretize + the input spec. `spack spec` now *only* shows the concretized spec. See #47574. + +7. Better output for `spack find -c` + + In an environmnet, `spack find -c` lets you search the concretized, but not + yet installed, specs, just as you would the installed ones. As with `spack + spec`, this should make it easier for you to see what *will* be built + before building and installing it. See #44713. + +8. `spack -C `: use an environment's configuration without activation + + Spack environments allow you to associate: + 1. a set of (possibly concretized) specs, and + 2. configuration + + When you activate an environment, you're using both of these. Previously, we + supported: + * `spack -e ` to run spack in the context of a specific environment, and + * `spack -C ` to run spack using a directory with configuration files. + + You can now also pass an environment to `spack -C` to use *only* the environment's + configuration, but not the specs or lockfile. See #45046. + +## New commands, options, and directives + +* The new `spack env track` command (#41897) takes a non-managed Spack + environment and adds a symlink to Spack's `$environments_root` directory, so + that it will be included for reference counting for commands like `spack + uninstall` and `spack gc`. If you use free-standing directory environments, + this is useful for preventing Spack from removing things required by your + environments. You can undo this tracking with the `spack env untrack` + command. + +* Add `-t` short option for `spack --backtrace` (#47227) + + `spack -d / --debug` enables backtraces on error, but it can be very + verbose, and sometimes you just want the backtrace. `spack -t / --backtrace` + provides that option. + +* `gc`: restrict to specific specs (#46790) + + If you only want to garbage-collect specific packages, you can now provide + them on the command line. This gives users finer-grained control over what + is uninstalled. + +* oci buildcaches now support `--only=package`. You can now push *just* a + package and not its dependencies to an OCI registry. This allows dependents + of non-redistributable specs to be stored in OCI registries without an + error. See #45775. + +## Notable refactors +* Variants are now fully conditional + + The `variants` dictionary on packages was previously keyed by variant name, + and allowed only one definition of any given variant. Spack is now smart + enough to understand that variants may have different values and defaults + for different versions. For example, `warpx` prior to `23.06` only supported + builds for one dimensionality, and newer `warpx` versions could be built + with support for many different dimensions: + + ```python + variant( + "dims", + default="3", + values=("1", "2", "3", "rz"), + multi=False, + description="Number of spatial dimensions", + when="@:23.05", + ) + variant( + "dims", + default="1,2,rz,3", + values=("1", "2", "3", "rz"), + multi=True, + description="Number of spatial dimensions", + when="@23.06:", + ) + ``` + + Previously, the default for the old version of `warpx` was not respected and + had to be specified manually. Now, Spack will select the right variant + definition for each version at concretization time. This allows variants to + evolve more smoothly over time. See #44425 for details. + +## Highlighted bugfixes + +1. Externals no longer override the preferred provider (#45025). + + External definitions could interfere with package preferences. Now, if + `openmpi` is the preferred `mpi`, and an external `mpich` is defined, a new + `openmpi` *will* be built if building it is possible. Previously we would + prefer `mpich` despite the preference. + +2. Composable `cflags` (#41049). + + This release fixes a longstanding bug that concretization would fail if + there were different `cflags` specified in `packages.yaml`, + `compilers.yaml`, or on `the` CLI. Flags and their ordering are now tracked + in the concretizer and flags from multiple sources will be merged. + +3. Fix concretizer Unification for included environments (#45139). + +## Deprecations, removals, and syntax changes + +1. The old concretizer has been removed from Spack, along with the + `config:concretizer` config option. Spack will emit a warning if the option + is present in user configuration, since it now has no effect. Spack now + uses a simpler bootstrapping mechanism, where a JSON prototype is tweaked + slightly to get an initial concrete spec to download. See #45215. + +2. Best-effort expansion of spec matrices has been removed. This feature did + not work with the "new" ASP-based concretizer, and did not work with + `unify: True` or `unify: when_possible`. Use the + [exclude key](https://spack.readthedocs.io/en/latest/environments.html#spec-matrices) + for the environment to exclude invalid components, or use multiple spec + matrices to combine the list of specs for which the constraint is valid and + the list of specs for which it is not. See #40792. + +3. The old Cray `platform` (based on Cray PE modules) has been removed, and + `platform=cray` is no longer supported. Since `v0.19`, Spack has handled + Cray machines like Linux clusters with extra packages, and we have + encouraged using this option to support Cray. The new approach allows us to + correctly handle Cray machines with non-SLES operating systems, and it is + much more reliable than making assumptions about Cray modules. See the + `v0.19` release notes and #43796 for more details. + +4. The `config:install_missing_compilers` config option has been deprecated, + and it is a no-op when set in `v0.23`. Our new compiler dependency model + will replace it with a much more reliable and robust mechanism in `v1.0`. + See #46237. + +5. Config options that deprecated in `v0.21` have been removed in `v0.23`. You + can now only specify preferences for `compilers`, `targets`, and + `providers` globally via the `packages:all:` section. Similarly, you can + only specify `versions:` locally for a specific package. See #44061 and + #31261 for details. + +6. Spack's old test interface has been removed (#45752), having been + deprecated in `v0.22.0` (#34236). All `builtin` packages have been updated + to use the new interface. See the [stand-alone test documentation]( + https://spack.readthedocs.io/en/latest/packaging_guide.html#stand-alone-tests) + +7. The `spack versions --safe-only` option, deprecated since `v0.21.0`, has + been removed. See #45765. + +* The `--dependencies` and `--optimize` arguments to `spack ci` have been + deprecated. See #45005. + +## Binary caches +1. Public binary caches now include an ML stack for Linux/aarch64 (#39666)We + now build an ML stack for Linux/aarch64 for all pull requests and on + develop. The ML stack includes both CPU-only and CUDA builds for Horovod, + Hugging Face, JAX, Keras, PyTorch,scikit-learn, TensorBoard, and + TensorFlow, and related packages. The CPU-only stack also includes XGBoost. + See https://cache.spack.io/tag/develop/?stack=ml-linux-aarch64-cuda. + +2. There is also now an stack of developer tools for macOS (#46910), which is + analogous to the Linux devtools stack. You can use this to avoid building + many common build dependencies. See + https://cache.spack.io/tag/develop/?stack=developer-tools-darwin. + +## Architecture support +* archspec has been updated to `v0.2.5`, with support for `zen5` +* Spack's CUDA package now supports the Grace Hopper `9.0a` compute capability (#45540) + +## Windows +* Windows bootstrapping: `file` and `gpg` (#41810) +* `scripts` directory added to PATH on Windows for python extensions (#45427) +* Fix `spack load --list` and `spack unload` on Windows (#35720) + +## Other notable changes +* Bugfix: `spack find -x` in environments (#46798) +* Spec splices are now robust to duplicate nodes with the same name in a spec (#46382) +* Cache per-compiler libc calculations for performance (#47213) +* Fixed a bug in external detection for openmpi (#47541) +* Mirror configuration allows username/password as environment variables (#46549) +* Default library search caps maximum depth (#41945) +* Unify interface for `spack spec` and `spack solve` commands (#47182) +* Spack no longer RPATHs directories in the default library search path (#44686) +* Improved performance of Spack database (#46554) +* Enable package reuse for packages with versions from git refs (#43859) +* Improved handling for `uuid` virtual on macos (#43002) +* Improved tracking of task queueing/requeueing in the installer (#46293) + +## Spack community stats + +* Over 2,000 pull requests updated package recipes +* 8,307 total packages, 329 new since `v0.22.0` + * 140 new Python packages + * 14 new R packages +* 373 people contributed to this release + * 357 committers to packages + * 60 committers to core + + # v0.22.2 (2024-09-21) ## Bugfixes @@ -419,7 +781,7 @@ - spack graph: fix coloring with environments (#41240) - spack info: sort variants in --variants-by-name (#41389) - Spec.format: error on old style format strings (#41934) -- ASP-based solver: +- ASP-based solver: - fix infinite recursion when computing concretization errors (#41061) - don't error for type mismatch on preferences (#41138) - don't emit spurious debug output (#41218) From c6d4037758140fe15913c29e80cd1547f388ae51 Mon Sep 17 00:00:00 2001 From: Gregory Becker Date: Wed, 13 Nov 2024 01:04:58 -0800 Subject: [PATCH 484/615] update version number to 0.23.0 --- lib/spack/spack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 9a83564db7daa9..8c35e70370f25d 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -11,7 +11,7 @@ import spack.util.git #: PEP440 canonical ... string -__version__ = "0.23.0.dev0" +__version__ = "0.23.0" spack_version = __version__ From 4d3b85c4d4769c36984f7fe556ec23405efedad4 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 17 Nov 2024 09:02:04 +0100 Subject: [PATCH 485/615] spack.package / builtin repo: fix exports/imports (#47617) Add various missing imports in packages. Remove redundant imports Export NoLibrariesError, NoHeadersError, which_string in spack.package --- lib/spack/spack/package.py | 2 +- lib/spack/spack/util/executable.py | 12 +++++------- var/spack/repos/builtin/packages/acfl/package.py | 1 + .../repos/builtin/packages/aqlprofile/package.py | 1 + .../repos/builtin/packages/armpl-gcc/package.py | 2 ++ var/spack/repos/builtin/packages/axom/package.py | 1 - var/spack/repos/builtin/packages/claw/package.py | 2 ++ var/spack/repos/builtin/packages/codipack/package.py | 1 + var/spack/repos/builtin/packages/coin3d/package.py | 2 ++ var/spack/repos/builtin/packages/cp2k/package.py | 2 -- var/spack/repos/builtin/packages/cxx/package.py | 2 ++ var/spack/repos/builtin/packages/dbus/package.py | 2 ++ var/spack/repos/builtin/packages/eccodes/package.py | 2 +- var/spack/repos/builtin/packages/elsi/package.py | 1 - var/spack/repos/builtin/packages/esmf/package.py | 3 +++ .../repos/builtin/packages/flux-core/package.py | 3 +-- .../repos/builtin/packages/flux-sched/package.py | 3 +-- .../repos/builtin/packages/flux-security/package.py | 3 +-- var/spack/repos/builtin/packages/fsl/package.py | 1 + var/spack/repos/builtin/packages/gasnet/package.py | 3 ++- .../repos/builtin/packages/gaussian-view/package.py | 1 + var/spack/repos/builtin/packages/gcc/package.py | 2 +- var/spack/repos/builtin/packages/gem5/package.py | 1 + var/spack/repos/builtin/packages/git/package.py | 1 + var/spack/repos/builtin/packages/glib/package.py | 2 ++ var/spack/repos/builtin/packages/gromacs/package.py | 1 + var/spack/repos/builtin/packages/gtkplus/package.py | 2 ++ var/spack/repos/builtin/packages/hdf/package.py | 2 +- var/spack/repos/builtin/packages/hip/package.py | 1 + var/spack/repos/builtin/packages/hipblas/package.py | 1 + var/spack/repos/builtin/packages/hipcub/package.py | 1 + var/spack/repos/builtin/packages/hipfft/package.py | 1 + var/spack/repos/builtin/packages/hiprand/package.py | 1 + .../repos/builtin/packages/hipsolver/package.py | 1 + .../repos/builtin/packages/hipsparse/package.py | 1 + .../repos/builtin/packages/hipsparselt/package.py | 1 + var/spack/repos/builtin/packages/hiredis/package.py | 2 ++ .../repos/builtin/packages/hpctoolkit/package.py | 2 ++ var/spack/repos/builtin/packages/icu4c/package.py | 2 ++ .../builtin/packages/intel-oneapi-mkl/package.py | 2 +- var/spack/repos/builtin/packages/intel/package.py | 3 ++- var/spack/repos/builtin/packages/ipm/package.py | 1 - var/spack/repos/builtin/packages/jsoncpp/package.py | 2 ++ var/spack/repos/builtin/packages/kokkos/package.py | 1 + var/spack/repos/builtin/packages/lcms/package.py | 1 + var/spack/repos/builtin/packages/libaec/package.py | 2 +- var/spack/repos/builtin/packages/libdrm/package.py | 2 ++ var/spack/repos/builtin/packages/libdwarf/package.py | 2 ++ var/spack/repos/builtin/packages/libepoxy/package.py | 2 ++ .../repos/builtin/packages/libjpeg-turbo/package.py | 1 + var/spack/repos/builtin/packages/libssh2/package.py | 2 ++ var/spack/repos/builtin/packages/libszip/package.py | 2 +- var/spack/repos/builtin/packages/libuv/package.py | 1 + var/spack/repos/builtin/packages/likwid/package.py | 1 + var/spack/repos/builtin/packages/llvm-doe/package.py | 3 +-- var/spack/repos/builtin/packages/llvm/package.py | 4 ++-- var/spack/repos/builtin/packages/lua/package.py | 1 - var/spack/repos/builtin/packages/magma/package.py | 1 + var/spack/repos/builtin/packages/mapl/package.py | 1 + var/spack/repos/builtin/packages/mesa/package.py | 1 + var/spack/repos/builtin/packages/mmg/package.py | 1 - .../repos/builtin/packages/mpas-model/package.py | 1 - var/spack/repos/builtin/packages/mpich/package.py | 1 + var/spack/repos/builtin/packages/msvc/package.py | 1 + var/spack/repos/builtin/packages/mvapich2/package.py | 1 + var/spack/repos/builtin/packages/nasm/package.py | 1 + .../repos/builtin/packages/netcdf-cxx4/package.py | 2 +- .../repos/builtin/packages/netcdf-fortran/package.py | 2 +- .../repos/builtin/packages/ninja-fortran/package.py | 2 +- var/spack/repos/builtin/packages/ninja/package.py | 1 - var/spack/repos/builtin/packages/openmpi/package.py | 2 ++ var/spack/repos/builtin/packages/papi/package.py | 1 + .../builtin/packages/parallel-netcdf/package.py | 2 +- var/spack/repos/builtin/packages/pcre2/package.py | 2 ++ var/spack/repos/builtin/packages/perl/package.py | 4 ++-- var/spack/repos/builtin/packages/phist/package.py | 2 +- var/spack/repos/builtin/packages/pixman/package.py | 2 ++ .../repos/builtin/packages/py-matplotlib/package.py | 2 +- .../py-pennylane-lightning-kokkos/package.py | 1 + .../packages/py-pennylane-lightning/package.py | 1 + var/spack/repos/builtin/packages/python/package.py | 5 +++-- var/spack/repos/builtin/packages/root/package.py | 1 + .../repos/builtin/packages/rpcsvc-proto/package.py | 1 + var/spack/repos/builtin/packages/sccache/package.py | 1 + var/spack/repos/builtin/packages/seqkit/package.py | 1 + .../repos/builtin/packages/serialbox/package.py | 2 +- var/spack/repos/builtin/packages/sherpa/package.py | 2 ++ .../builtin/packages/singularity-eos/package.py | 1 + .../repos/builtin/packages/singularityce/package.py | 1 + .../repos/builtin/packages/spectrum-mpi/package.py | 1 + var/spack/repos/builtin/packages/sqlite/package.py | 2 ++ .../repos/builtin/packages/strumpack/package.py | 1 - var/spack/repos/builtin/packages/szx/package.py | 2 ++ var/spack/repos/builtin/packages/tcl/package.py | 2 ++ var/spack/repos/builtin/packages/thrust/package.py | 2 ++ var/spack/repos/builtin/packages/trilinos/package.py | 1 - var/spack/repos/builtin/packages/upcxx/package.py | 1 + .../repos/builtin/packages/util-macros/package.py | 1 + .../builtin/packages/wayland-protocols/package.py | 1 + var/spack/repos/builtin/packages/yafyaml/package.py | 1 + var/spack/repos/builtin/packages/zziplib/package.py | 1 - 101 files changed, 125 insertions(+), 49 deletions(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 8a7795b2ce1b8c..525721ebb3004a 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -11,7 +11,7 @@ from os import chdir, environ, getcwd, makedirs, mkdir, remove, removedirs from shutil import move, rmtree -from spack.error import InstallError +from spack.error import InstallError, NoHeadersError, NoLibrariesError # Emulate some shell commands for convenience env = environ diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 0c1901cb1a9368..83534f80008d16 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -12,9 +12,9 @@ import llnl.util.tty as tty import spack.error -from spack.util.environment import EnvironmentModifications +import spack.util.environment -__all__ = ["Executable", "which", "ProcessError"] +__all__ = ["Executable", "which", "which_string", "ProcessError"] class Executable: @@ -29,7 +29,7 @@ def __init__(self, name): self.default_env = {} - self.default_envmod = EnvironmentModifications() + self.default_envmod = spack.util.environment.EnvironmentModifications() self.returncode = None self.ignore_quotes = False @@ -168,17 +168,15 @@ def process_cmd_output(out, err): self.default_envmod.apply_modifications(env) env.update(self.default_env) - from spack.util.environment import EnvironmentModifications # no cycle - # Apply env argument - if isinstance(env_arg, EnvironmentModifications): + if isinstance(env_arg, spack.util.environment.EnvironmentModifications): env_arg.apply_modifications(env) elif env_arg: env.update(env_arg) # Apply extra env extra_env = kwargs.get("extra_env", {}) - if isinstance(extra_env, EnvironmentModifications): + if isinstance(extra_env, spack.util.environment.EnvironmentModifications): extra_env.apply_modifications(env) else: env.update(extra_env) diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index 4fa2f553e8d310..6e1d9fa618c1e6 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import spack.platforms from spack.package import * _os_map_before_23 = { diff --git a/var/spack/repos/builtin/packages/aqlprofile/package.py b/var/spack/repos/builtin/packages/aqlprofile/package.py index 199ed72d0f2352..ca5a74b21160cb 100644 --- a/var/spack/repos/builtin/packages/aqlprofile/package.py +++ b/var/spack/repos/builtin/packages/aqlprofile/package.py @@ -5,6 +5,7 @@ import os +import spack.platforms from spack.package import * _versions = { diff --git a/var/spack/repos/builtin/packages/armpl-gcc/package.py b/var/spack/repos/builtin/packages/armpl-gcc/package.py index 25f187781e4822..3da17ef3e42551 100644 --- a/var/spack/repos/builtin/packages/armpl-gcc/package.py +++ b/var/spack/repos/builtin/packages/armpl-gcc/package.py @@ -5,6 +5,8 @@ import os +import spack.error +import spack.platforms from spack.package import * _os_map_before_23 = { diff --git a/var/spack/repos/builtin/packages/axom/package.py b/var/spack/repos/builtin/packages/axom/package.py index 5791fa3df97ebe..23e29fa32f3b09 100644 --- a/var/spack/repos/builtin/packages/axom/package.py +++ b/var/spack/repos/builtin/packages/axom/package.py @@ -9,7 +9,6 @@ from os.path import join as pjoin from spack.package import * -from spack.util.executable import which_string def get_spec_path(spec, package_name, path_replacements={}, use_bin=False): diff --git a/var/spack/repos/builtin/packages/claw/package.py b/var/spack/repos/builtin/packages/claw/package.py index 913b1b82f6a077..481745cb907de4 100644 --- a/var/spack/repos/builtin/packages/claw/package.py +++ b/var/spack/repos/builtin/packages/claw/package.py @@ -5,6 +5,8 @@ import os +import spack.compilers +import spack.spec from spack.package import * diff --git a/var/spack/repos/builtin/packages/codipack/package.py b/var/spack/repos/builtin/packages/codipack/package.py index 2347df15ce3ccf..4c2fe3886bfa34 100644 --- a/var/spack/repos/builtin/packages/codipack/package.py +++ b/var/spack/repos/builtin/packages/codipack/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.generic from spack.package import * diff --git a/var/spack/repos/builtin/packages/coin3d/package.py b/var/spack/repos/builtin/packages/coin3d/package.py index 6cffab95cbd7c4..571c843cb06135 100644 --- a/var/spack/repos/builtin/packages/coin3d/package.py +++ b/var/spack/repos/builtin/packages/coin3d/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * from spack.pkg.builtin.boost import Boost diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index dc24d525f32ff3..5a478ea9850478 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -7,9 +7,7 @@ import os.path import sys -import spack.platforms import spack.util.environment -import spack.util.executable from spack.build_environment import dso_suffix from spack.build_systems import cmake, makefile from spack.package import * diff --git a/var/spack/repos/builtin/packages/cxx/package.py b/var/spack/repos/builtin/packages/cxx/package.py index bedd235fd8f14e..ac5c5cc5a6bae9 100644 --- a/var/spack/repos/builtin/packages/cxx/package.py +++ b/var/spack/repos/builtin/packages/cxx/package.py @@ -5,6 +5,8 @@ import os +import spack.compilers +import spack.spec from spack.package import * diff --git a/var/spack/repos/builtin/packages/dbus/package.py b/var/spack/repos/builtin/packages/dbus/package.py index 4b54a5fce89f1d..3f6677337728f2 100644 --- a/var/spack/repos/builtin/packages/dbus/package.py +++ b/var/spack/repos/builtin/packages/dbus/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index fc8f89f71a28cd..3c1e955cb2058e 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -302,7 +302,7 @@ def libs(self): return libs msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) diff --git a/var/spack/repos/builtin/packages/elsi/package.py b/var/spack/repos/builtin/packages/elsi/package.py index e06936a754e693..43573255a09d2e 100644 --- a/var/spack/repos/builtin/packages/elsi/package.py +++ b/var/spack/repos/builtin/packages/elsi/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os.path -from spack.error import NoHeadersError from spack.package import * diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index 9eb145478a239e..20a7223e630161 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -6,6 +6,9 @@ import os import sys +import spack.build_systems.makefile +import spack.build_systems.python +import spack.compiler from spack.build_environment import dso_suffix, stat_suffix from spack.package import * diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py index 52eddda9fc938a..71d21097897d1c 100644 --- a/var/spack/repos/builtin/packages/flux-core/package.py +++ b/var/spack/repos/builtin/packages/flux-core/package.py @@ -5,7 +5,6 @@ import os -import spack.util.executable from spack.package import * @@ -156,7 +155,7 @@ def setup(self): git("fetch", "--unshallow") git("config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") git("fetch", "origin") - except spack.util.executable.ProcessError: + except ProcessError: git("fetch") def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/flux-sched/package.py b/var/spack/repos/builtin/packages/flux-sched/package.py index 66d5532bf31db9..e9fa209c319894 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -5,7 +5,6 @@ import os -import spack.util.executable from spack.build_systems.autotools import AutotoolsBuilder from spack.build_systems.cmake import CMakeBuilder from spack.package import * @@ -139,7 +138,7 @@ def setup(self): git("fetch", "--unshallow") git("config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") git("fetch", "origin") - except spack.util.executable.ProcessError: + except ProcessError: git("fetch") def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/flux-security/package.py b/var/spack/repos/builtin/packages/flux-security/package.py index 23183c6d3b5076..6431578476bede 100644 --- a/var/spack/repos/builtin/packages/flux-security/package.py +++ b/var/spack/repos/builtin/packages/flux-security/package.py @@ -5,7 +5,6 @@ import os -import spack.util.executable from spack.package import * @@ -54,7 +53,7 @@ def setup(self): git("fetch", "--unshallow") git("config", "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*") git("fetch", "origin") - except spack.util.executable.ProcessError: + except ProcessError: git("fetch") def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/fsl/package.py b/var/spack/repos/builtin/packages/fsl/package.py index 690911373e8559..746005e3d13741 100644 --- a/var/spack/repos/builtin/packages/fsl/package.py +++ b/var/spack/repos/builtin/packages/fsl/package.py @@ -6,6 +6,7 @@ import glob import os +import spack.util.environment from spack.package import * from spack.util.environment import EnvironmentModifications diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index a6100797123cce..a929e6b957b915 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -5,6 +5,7 @@ import os +import spack.main from spack.package import * @@ -145,7 +146,7 @@ def install(self, spec, prefix): try: git = which("git") git("describe", "--long", "--always", output="version.git") - except spack.util.executable.ProcessError: + except ProcessError: spack.main.send_warning_to_tty("Omitting version stamp due to git error") # The GASNet-EX library has a highly multi-dimensional configure space, diff --git a/var/spack/repos/builtin/packages/gaussian-view/package.py b/var/spack/repos/builtin/packages/gaussian-view/package.py index eec0877b577e93..f0b241aed8cf44 100644 --- a/var/spack/repos/builtin/packages/gaussian-view/package.py +++ b/var/spack/repos/builtin/packages/gaussian-view/package.py @@ -8,6 +8,7 @@ import llnl.util.tty as tty +import spack.tengine from spack.package import * diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 60b8d44b7a0a4f..abf152915990b6 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -11,8 +11,8 @@ import llnl.util.tty as tty from llnl.util.symlink import readlink +import spack.compiler import spack.platforms -import spack.util.executable import spack.util.libc from spack.operating_systems.mac_os import macos_sdk_path, macos_version from spack.package import * diff --git a/var/spack/repos/builtin/packages/gem5/package.py b/var/spack/repos/builtin/packages/gem5/package.py index f18a478c3b7e00..194d2743b76be0 100644 --- a/var/spack/repos/builtin/packages/gem5/package.py +++ b/var/spack/repos/builtin/packages/gem5/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.config from spack.package import * diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 713fd0abf8de8c..9b5abba5fcc019 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -6,6 +6,7 @@ import os import re +import spack.fetch_strategy from spack.package import * from spack.util.environment import is_system_path diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 057d180dd6e1dc..982ea5449e16f9 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -5,6 +5,8 @@ import os.path +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * from spack.util.environment import is_system_path diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 5703587a6584f4..055cbebe14304f 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -7,6 +7,7 @@ import llnl.util.filesystem as fs +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 158d7adfd71f03..68b21046fe055f 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py index 85acc3dbb3ec6d..9531524c0c60db 100644 --- a/var/spack/repos/builtin/packages/hdf/package.py +++ b/var/spack/repos/builtin/packages/hdf/package.py @@ -127,7 +127,7 @@ def libs(self): if not libs: msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index 91dc94d33c9008..fa2c892f16bb16 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -6,6 +6,7 @@ import os import re +import spack.build_environment from spack.hooks.sbang import filter_shebang from spack.package import * from spack.util.prefix import Prefix diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index e4b0ccc8d5726e..91bbe38c6208b4 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -5,6 +5,7 @@ import re +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hipcub/package.py b/var/spack/repos/builtin/packages/hipcub/package.py index 5a85b8eb581387..06030e38a1c65b 100644 --- a/var/spack/repos/builtin/packages/hipcub/package.py +++ b/var/spack/repos/builtin/packages/hipcub/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hipfft/package.py b/var/spack/repos/builtin/packages/hipfft/package.py index e70b3112032c79..ae07ec26704067 100644 --- a/var/spack/repos/builtin/packages/hipfft/package.py +++ b/var/spack/repos/builtin/packages/hipfft/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hiprand/package.py b/var/spack/repos/builtin/packages/hiprand/package.py index 61b1702680ece5..d78282fcfc8a3e 100644 --- a/var/spack/repos/builtin/packages/hiprand/package.py +++ b/var/spack/repos/builtin/packages/hiprand/package.py @@ -5,6 +5,7 @@ import re +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 5df642cd904769..4470f7822687a2 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -6,6 +6,7 @@ import os import re +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hipsparse/package.py b/var/spack/repos/builtin/packages/hipsparse/package.py index 65a9a9a18f192e..0aa54869df2616 100644 --- a/var/spack/repos/builtin/packages/hipsparse/package.py +++ b/var/spack/repos/builtin/packages/hipsparse/package.py @@ -5,6 +5,7 @@ import re +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hipsparselt/package.py b/var/spack/repos/builtin/packages/hipsparselt/package.py index e96305ba2cb74a..4c882cc264190a 100644 --- a/var/spack/repos/builtin/packages/hipsparselt/package.py +++ b/var/spack/repos/builtin/packages/hipsparselt/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/hiredis/package.py b/var/spack/repos/builtin/packages/hiredis/package.py index 39eb4aaa5b81f4..9d0a5ba955e0fe 100644 --- a/var/spack/repos/builtin/packages/hiredis/package.py +++ b/var/spack/repos/builtin/packages/hiredis/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.cmake +import spack.build_systems.makefile from spack.package import * diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 548bfad92ccc45..33d0768e3d96b7 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -9,6 +9,8 @@ import llnl.util.tty as tty +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 97f89cfc29c891..10189b1b8579c8 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -5,6 +5,8 @@ import pathlib +import spack.build_systems.autotools +import spack.build_systems.msbuild from spack.package import * diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py index c233490408170f..04b916d2112b82 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py @@ -284,7 +284,7 @@ def _find_mkl_libs(self, shared): try: if self.spec.satisfies("+cluster ^mpi"): resolved_libs = resolved_libs + self.spec["mpi"].libs - except spack.error.NoLibrariesError: + except NoLibrariesError: pass if self.spec.satisfies("threads=openmp"): diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index bdf53db9a810fb..51bae70edb1701 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -6,6 +6,7 @@ import llnl.util.tty as tty +import spack.compiler from spack.package import * @@ -240,7 +241,7 @@ def determine_version(cls, exe): match = version_regex.search(output) if match: return match.group(1) - except spack.util.executable.ProcessError: + except ProcessError: pass except Exception as e: tty.debug(str(e)) diff --git a/var/spack/repos/builtin/packages/ipm/package.py b/var/spack/repos/builtin/packages/ipm/package.py index 9eb248ff526f40..cf0c732280c4d1 100644 --- a/var/spack/repos/builtin/packages/ipm/package.py +++ b/var/spack/repos/builtin/packages/ipm/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.util.executable import Executable class Ipm(AutotoolsPackage): diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 747aa8b205588a..c1766264830852 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.cmake +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 7eeac574d9d3e9..ae8c0a9d6c1661 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -6,6 +6,7 @@ import llnl.util.lang as lang +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index ce452131b2f394..dbfe54508af586 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -5,6 +5,7 @@ import pathlib +import spack.build_systems.msbuild from spack.package import * diff --git a/var/spack/repos/builtin/packages/libaec/package.py b/var/spack/repos/builtin/packages/libaec/package.py index f0498b3fd0dec5..12a059907e4820 100644 --- a/var/spack/repos/builtin/packages/libaec/package.py +++ b/var/spack/repos/builtin/packages/libaec/package.py @@ -48,7 +48,7 @@ def libs(self): if not libs: msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) return libs diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index 5a6aa91b2710fe..6c68e5248f92f7 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index e62211790b774b..89b6e87327b222 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -6,6 +6,8 @@ import os import sys +import spack.build_systems.cmake +import spack.build_systems.generic from spack.package import * # Only build certain parts of dwarf because the other ones break. diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py index 800dbc7303b2b3..c991fdb3710789 100644 --- a/var/spack/repos/builtin/packages/libepoxy/package.py +++ b/var/spack/repos/builtin/packages/libepoxy/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py index 65b07ad458dfbb..d88e2984ef268e 100644 --- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py +++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py @@ -5,6 +5,7 @@ import sys +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py index 754d593c4b1305..8b1b425a717983 100644 --- a/var/spack/repos/builtin/packages/libssh2/package.py +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/libszip/package.py b/var/spack/repos/builtin/packages/libszip/package.py index 107c821272a567..2314879927aeee 100644 --- a/var/spack/repos/builtin/packages/libszip/package.py +++ b/var/spack/repos/builtin/packages/libszip/package.py @@ -34,7 +34,7 @@ def libs(self): if not libs: msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) return libs diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index 5b578d419e90e0..69cce8f9aa42dc 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -5,6 +5,7 @@ import sys import spack.build_systems +import spack.build_systems.autotools from spack.package import * diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index be7990506fc3d5..65b72202d2bc44 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -8,6 +8,7 @@ import llnl.util.tty as tty +import spack.tengine from spack.package import * diff --git a/var/spack/repos/builtin/packages/llvm-doe/package.py b/var/spack/repos/builtin/packages/llvm-doe/package.py index 6bf4f67e505108..8aae32d5ac79f4 100644 --- a/var/spack/repos/builtin/packages/llvm-doe/package.py +++ b/var/spack/repos/builtin/packages/llvm-doe/package.py @@ -9,7 +9,6 @@ import llnl.util.tty as tty -import spack.util.executable from spack.build_systems.cmake import get_cmake_prefix_path from spack.package import * @@ -258,7 +257,7 @@ def determine_version(cls, exe): match = version_regex.search(output) if match: return match.group(match.lastindex) - except spack.util.executable.ProcessError: + except ProcessError: pass except Exception as e: tty.debug(e) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 0dc66b950357cc..81ee8b52c06944 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -10,7 +10,7 @@ import llnl.util.tty as tty from llnl.util.lang import classproperty -import spack.util.executable +import spack.compilers from spack.build_systems.cmake import get_cmake_prefix_path from spack.package import * from spack.package_base import PackageBase @@ -687,7 +687,7 @@ def determine_version(cls, exe): match = re.search(cls.compiler_version_regex, output) if match: return match.group(match.lastindex) - except spack.util.executable.ProcessError: + except ProcessError: pass except Exception as e: tty.debug(e) diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 8f791b5cd867b7..5a12e58e44b929 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -10,7 +10,6 @@ import spack.build_environment from spack.package import * -from spack.util.executable import Executable # This is the template for a pkgconfig file for rpm # https://github.com/guix-mirror/guix/raw/dcaf70897a0bad38a4638a2905aaa3c46b1f1402/gnu/packages/patches/lua-pkgconfig.patch diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index ee0397b66f7a4f..e97d663fd2073a 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.util.environment from spack.package import * diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index ae8ce3780510cd..bb9941f43d2461 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -5,6 +5,7 @@ import subprocess +import spack.compiler from spack.package import * diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 61494f3db6a80e..8bf240409df63a 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -5,6 +5,7 @@ import sys import spack.build_systems.meson +import spack.variant from spack.package import * diff --git a/var/spack/repos/builtin/packages/mmg/package.py b/var/spack/repos/builtin/packages/mmg/package.py index 38a8123516b31a..9bd3d63cef04bc 100644 --- a/var/spack/repos/builtin/packages/mmg/package.py +++ b/var/spack/repos/builtin/packages/mmg/package.py @@ -7,7 +7,6 @@ import spack.build_systems.cmake from spack.package import * -from spack.util.executable import which class Mmg(CMakePackage): diff --git a/var/spack/repos/builtin/packages/mpas-model/package.py b/var/spack/repos/builtin/packages/mpas-model/package.py index 927026ddf9fe45..39a6dfa741656a 100644 --- a/var/spack/repos/builtin/packages/mpas-model/package.py +++ b/var/spack/repos/builtin/packages/mpas-model/package.py @@ -5,7 +5,6 @@ import os from spack.package import * -from spack.util.executable import Executable class MpasModel(MakefilePackage): diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 5fc0538f15c7cc..b93fae3ddd398f 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -7,6 +7,7 @@ import re import sys +import spack.compilers from spack.build_environment import dso_suffix from spack.package import * diff --git a/var/spack/repos/builtin/packages/msvc/package.py b/var/spack/repos/builtin/packages/msvc/package.py index d58dea2f6bb652..4d25b87118dcd8 100644 --- a/var/spack/repos/builtin/packages/msvc/package.py +++ b/var/spack/repos/builtin/packages/msvc/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import re +import spack.compiler from spack.package import * diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 23129c3ec0c4da..c0ff3bb07fa575 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -7,6 +7,7 @@ import re import sys +import spack.compilers from spack.package import * diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index c3d64e47576bd3..4afa6ebe1ce56c 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -5,6 +5,7 @@ import glob import os +import spack.build_systems.generic from spack.package import * diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index 046c17a3fc1117..e5e3d0dc057184 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -57,7 +57,7 @@ def libs(self): return libs msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index ec74f25fc43fca..ba33ee51287e53 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -112,7 +112,7 @@ def libs(self): return libs msg = "Unable to recursively locate {0} {1} libraries in {2}" - raise spack.error.NoLibrariesError( + raise NoLibrariesError( msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) diff --git a/var/spack/repos/builtin/packages/ninja-fortran/package.py b/var/spack/repos/builtin/packages/ninja-fortran/package.py index 071a64b7b6b1da..02fdac7128f5a6 100644 --- a/var/spack/repos/builtin/packages/ninja-fortran/package.py +++ b/var/spack/repos/builtin/packages/ninja-fortran/package.py @@ -3,8 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.version from spack.package import * -from spack.util.executable import which_string class NinjaFortran(Package): diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 64e9eb36030f2d..2249fcdbdbeae7 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -5,7 +5,6 @@ import sys from spack.package import * -from spack.util.executable import which_string class Ninja(Package): diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 75d09bbc64cbc3..889d9034354806 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -11,6 +11,8 @@ import llnl.util.tty as tty +import spack.compilers +import spack.version from spack.package import * diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 4ce382af5f1b2f..8d068108b37c81 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -9,6 +9,7 @@ import llnl.util.filesystem as fs +import spack.util.environment from spack.package import * diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index f7bf6935779342..67b7cd867bf04a 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -105,7 +105,7 @@ def libs(self): msg = f"Unable to recursively locate {'shared' if shared else 'static'} \ {self.spec.name} libraries in {self.spec.prefix}" - raise spack.error.NoLibrariesError(msg) + raise NoLibrariesError(msg) @when("@master") def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index df79accc6ed67e..67f0566385e1ee 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 2246a6ea9a8707..8b608e04d215c9 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -264,7 +264,7 @@ def patch(self): @classmethod def determine_version(cls, exe): - perl = spack.util.executable.Executable(exe) + perl = Executable(exe) output = perl("--version", output=str, error=str) if output: match = re.search(r"perl.*\(v([0-9.]+)\)", output) @@ -275,7 +275,7 @@ def determine_version(cls, exe): @classmethod def determine_variants(cls, exes, version): for exe in exes: - perl = spack.util.executable.Executable(exe) + perl = Executable(exe) output = perl("-V", output=str, error=str) variants = "" if output: diff --git a/var/spack/repos/builtin/packages/phist/package.py b/var/spack/repos/builtin/packages/phist/package.py index da926898e8c086..9b5c05b9812698 100644 --- a/var/spack/repos/builtin/packages/phist/package.py +++ b/var/spack/repos/builtin/packages/phist/package.py @@ -323,7 +323,7 @@ def check(self): tty.warn("========================== %s =======================" % hint) try: make("check") - except spack.util.executable.ProcessError: + except ProcessError: raise InstallError("run-test of phist ^mpich: Hint: " + hint) else: make("check") diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index e84ff0a48aaa1f..dc982be2ad90ba 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -5,6 +5,8 @@ import sys +import spack.build_systems.autotools +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 04b5d63447367e..28db0d5fa5ad76 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -332,7 +332,7 @@ def setup_build_environment(self, env): include.extend(query.headers.directories) try: library.extend(query.libs.directories) - except spack.error.NoLibrariesError: + except NoLibrariesError: pass # Build uses a mix of Spack's compiler wrapper and the actual compiler, diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py index 4513912e67336e..34b01dac5c0ad5 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py @@ -2,6 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.cmake from spack.build_systems.python import PythonPipBuilder from spack.package import * diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py index 383e03a2d2f34b..3e950aad450305 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.cmake from spack.build_systems.python import PythonPipBuilder from spack.package import * diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 3bfdc240d0481c..eedd0067f53d0f 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -16,6 +16,7 @@ import llnl.util.tty as tty from llnl.util.lang import dedupe +import spack.paths from spack.build_environment import dso_suffix, stat_suffix from spack.package import * from spack.util.prefix import Prefix @@ -1088,7 +1089,7 @@ def libs(self): if lib: return lib - raise spack.error.NoLibrariesError( + raise NoLibrariesError( "Unable to find {} libraries with the following names:\n\n* ".format(self.name) + "\n* ".join(candidates) ) @@ -1114,7 +1115,7 @@ def headers(self): config_h = headers[0] break else: - raise spack.error.NoHeadersError( + raise NoHeadersError( "Unable to locate {} headers in any of these locations:\n\n* ".format(self.name) + "\n* ".join(candidates) ) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index e6da973906b73b..d8bb48c720e49f 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -7,6 +7,7 @@ import os import sys +import spack.util.environment from spack.operating_systems.mac_os import macos_version from spack.package import * from spack.util.environment import is_system_path diff --git a/var/spack/repos/builtin/packages/rpcsvc-proto/package.py b/var/spack/repos/builtin/packages/rpcsvc-proto/package.py index cd18cc8dd52675..2aa4338cf1a763 100644 --- a/var/spack/repos/builtin/packages/rpcsvc-proto/package.py +++ b/var/spack/repos/builtin/packages/rpcsvc-proto/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.paths from spack.package import * diff --git a/var/spack/repos/builtin/packages/sccache/package.py b/var/spack/repos/builtin/packages/sccache/package.py index 23fbfe8b770776..2f526242baaf07 100644 --- a/var/spack/repos/builtin/packages/sccache/package.py +++ b/var/spack/repos/builtin/packages/sccache/package.py @@ -7,6 +7,7 @@ import re import spack.build_systems +import spack.build_systems.cargo from spack.package import * diff --git a/var/spack/repos/builtin/packages/seqkit/package.py b/var/spack/repos/builtin/packages/seqkit/package.py index 639f7cbbaf2841..da1e1dbae8334d 100644 --- a/var/spack/repos/builtin/packages/seqkit/package.py +++ b/var/spack/repos/builtin/packages/seqkit/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.go from spack.package import * diff --git a/var/spack/repos/builtin/packages/serialbox/package.py b/var/spack/repos/builtin/packages/serialbox/package.py index 1d756cb0d99a9b..ed455611cff3a6 100644 --- a/var/spack/repos/builtin/packages/serialbox/package.py +++ b/var/spack/repos/builtin/packages/serialbox/package.py @@ -131,7 +131,7 @@ def libs(self): return libs msg = "Unable to recursively locate {0} libraries in {1}" - raise spack.error.NoLibrariesError(msg.format(self.spec.name, self.spec.prefix)) + raise NoLibrariesError(msg.format(self.spec.name, self.spec.prefix)) def flag_handler(self, name, flags): cmake_flags = [] diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index 7d0010a7c2284a..20133e54be6104 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/singularity-eos/package.py b/var/spack/repos/builtin/packages/singularity-eos/package.py index ef5c5711184929..46a768ce47b18a 100644 --- a/var/spack/repos/builtin/packages/singularity-eos/package.py +++ b/var/spack/repos/builtin/packages/singularity-eos/package.py @@ -5,6 +5,7 @@ import os +import spack.version from spack.package import * diff --git a/var/spack/repos/builtin/packages/singularityce/package.py b/var/spack/repos/builtin/packages/singularityce/package.py index 08630bf7512a83..6a14fe471f2e23 100644 --- a/var/spack/repos/builtin/packages/singularityce/package.py +++ b/var/spack/repos/builtin/packages/singularityce/package.py @@ -8,6 +8,7 @@ import llnl.util.tty as tty +import spack.tengine from spack.package import * diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 54c70c6b56f78f..e36be9826c76b7 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -5,6 +5,7 @@ import os import re +import spack.compilers from spack.package import * diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index 57f1272801ca1f..ef8840ea7ad9bd 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -7,6 +7,8 @@ import sys from tempfile import NamedTemporaryFile +import spack.build_systems.autotools +import spack.build_systems.nmake import spack.platforms from spack.package import * diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index 28cc57f26d07f8..d1cb572f29b07a 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -9,7 +9,6 @@ from spack.package import * from spack.util.environment import set_env -from spack.util.executable import ProcessError class Strumpack(CMakePackage, CudaPackage, ROCmPackage): diff --git a/var/spack/repos/builtin/packages/szx/package.py b/var/spack/repos/builtin/packages/szx/package.py index 9d05663fceb0ed..df430e05289e1d 100644 --- a/var/spack/repos/builtin/packages/szx/package.py +++ b/var/spack/repos/builtin/packages/szx/package.py @@ -2,6 +2,8 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index a6b243d4bf2500..b8e9be6e89d5e2 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -8,6 +8,8 @@ from llnl.util.filesystem import find_first +import spack.build_systems.autotools +import spack.build_systems.nmake from spack.package import * from spack.util.environment import is_system_path diff --git a/var/spack/repos/builtin/packages/thrust/package.py b/var/spack/repos/builtin/packages/thrust/package.py index 5d70406dc68275..bbd1708b8cf448 100644 --- a/var/spack/repos/builtin/packages/thrust/package.py +++ b/var/spack/repos/builtin/packages/thrust/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.cmake +import spack.build_systems.generic from spack.package import * diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 0669adff63415a..bb12c6caa3a81e 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -9,7 +9,6 @@ import sys from spack.build_environment import dso_suffix -from spack.error import NoHeadersError from spack.operating_systems.mac_os import macos_version from spack.package import * from spack.pkg.builtin.kokkos import Kokkos diff --git a/var/spack/repos/builtin/packages/upcxx/package.py b/var/spack/repos/builtin/packages/upcxx/package.py index 91971025683297..141060a9d58436 100644 --- a/var/spack/repos/builtin/packages/upcxx/package.py +++ b/var/spack/repos/builtin/packages/upcxx/package.py @@ -6,6 +6,7 @@ import os import re +import spack.platforms from spack.package import * diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 1f6411e2bd9c26..e0bf69fb56320d 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.url from spack.package import * diff --git a/var/spack/repos/builtin/packages/wayland-protocols/package.py b/var/spack/repos/builtin/packages/wayland-protocols/package.py index 20b113de243152..dc5054a356ca92 100644 --- a/var/spack/repos/builtin/packages/wayland-protocols/package.py +++ b/var/spack/repos/builtin/packages/wayland-protocols/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems.meson from spack.package import * diff --git a/var/spack/repos/builtin/packages/yafyaml/package.py b/var/spack/repos/builtin/packages/yafyaml/package.py index 996b57fa1e62e2..379fff05abed89 100644 --- a/var/spack/repos/builtin/packages/yafyaml/package.py +++ b/var/spack/repos/builtin/packages/yafyaml/package.py @@ -6,6 +6,7 @@ import os import re +import spack.compiler from spack.package import * diff --git a/var/spack/repos/builtin/packages/zziplib/package.py b/var/spack/repos/builtin/packages/zziplib/package.py index d91c0cf2ce07b2..2a3b10a14d092b 100644 --- a/var/spack/repos/builtin/packages/zziplib/package.py +++ b/var/spack/repos/builtin/packages/zziplib/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import spack.build_systems.autotools -import spack.build_systems.cmake from spack.package import * From fe2bf4c0f93e8c9b6189361f3cf2e696be8bcb99 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 17 Nov 2024 02:03:15 -0600 Subject: [PATCH 486/615] pixman: add missing MesonPackage (#47607) --- var/spack/repos/builtin/packages/pixman/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index dc982be2ad90ba..638496d50fab05 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -10,7 +10,7 @@ from spack.package import * -class Pixman(AutotoolsPackage): +class Pixman(AutotoolsPackage, MesonPackage): """The Pixman package contains a library that provides low-level pixel manipulation features such as image compositing and trapezoid rasterization.""" From 42c9961bbefcd6aa32c68ffccad24279725df563 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 17 Nov 2024 09:07:08 +0100 Subject: [PATCH 487/615] Added a few missing language deps to packages (#47639) --- var/spack/repos/builtin/packages/armadillo/package.py | 3 ++- var/spack/repos/builtin/packages/camp/package.py | 3 ++- var/spack/repos/builtin/packages/cereal/package.py | 3 ++- var/spack/repos/builtin/packages/fmt/package.py | 1 + var/spack/repos/builtin/packages/kokkos/package.py | 1 + var/spack/repos/builtin/packages/kvtree/package.py | 3 ++- var/spack/repos/builtin/packages/less/package.py | 2 ++ var/spack/repos/builtin/packages/macsio/package.py | 3 ++- var/spack/repos/builtin/packages/metis/package.py | 3 ++- var/spack/repos/builtin/packages/rankstr/package.py | 3 ++- var/spack/repos/builtin/packages/samrai/package.py | 3 +++ var/spack/repos/builtin/packages/spath/package.py | 3 ++- var/spack/repos/builtin/packages/vtk-m/package.py | 3 ++- 13 files changed, 25 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 939a3e62f91552..cd71d9365638d9 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -31,7 +31,8 @@ class Armadillo(CMakePackage): version("8.100.1", sha256="54773f7d828bd3885c598f90122b530ded65d9b195c9034e082baea737cd138d") version("7.950.1", sha256="a32da32a0ea420b8397a53e4b40ed279c1a5fc791dd492a2ced81ffb14ad0d1b") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("hdf5", default=False, description="Include HDF5 support") diff --git a/var/spack/repos/builtin/packages/camp/package.py b/var/spack/repos/builtin/packages/camp/package.py index 7e7c305b18d9da..71327292e6a24a 100644 --- a/var/spack/repos/builtin/packages/camp/package.py +++ b/var/spack/repos/builtin/packages/camp/package.py @@ -54,7 +54,8 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage): version("0.2.2", sha256="194d38b57e50e3494482a7f94940b27f37a2bee8291f2574d64db342b981d819") version("0.1.0", sha256="fd4f0f2a60b82a12a1d9f943f8893dc6fe770db493f8fae5ef6f7d0c439bebcc") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # TODO: figure out gtest dependency and then set this default True. variant("tests", default=False, description="Build tests") diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py index a53ddb79cedb0b..4a0be30b466bca 100644 --- a/var/spack/repos/builtin/packages/cereal/package.py +++ b/var/spack/repos/builtin/packages/cereal/package.py @@ -33,7 +33,8 @@ class Cereal(CMakePackage): version("1.0.0", sha256="51c31c84d4c9e410e56d8bfc3424076b3234f11aa349ac8cda3db9f18118c125") version("0.9.1", sha256="2a99722df9c3d0f75267f732808a4d7e564cb5a35318a3d1c00086e2ef139385") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") patch("Boost.patch", when="@:1.3.0") patch("Boost2.patch", when="@1.2.2:1.3.0") diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py index c0d1b2461a9f7b..72f1e115631dca 100644 --- a/var/spack/repos/builtin/packages/fmt/package.py +++ b/var/spack/repos/builtin/packages/fmt/package.py @@ -47,6 +47,7 @@ class Fmt(CMakePackage): version("3.0.0", sha256="1b050b66fa31b74f1d75a14f15e99e728ab79572f176a53b2f8ad7c201c30ceb") version("master", branch="master") + depends_on("c", type="build") depends_on("cxx", type="build") variant( diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index ae8c0a9d6c1661..9b9b78e11728fd 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -143,6 +143,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): url="https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz", ) + depends_on("c", type="build") depends_on("cxx", type="build") # Kokkos requires a C++ compiler depends_on("cmake@3.16:", type="build") diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py index 865c712c14ca3c..86126ec57abfe2 100644 --- a/var/spack/repos/builtin/packages/kvtree/package.py +++ b/var/spack/repos/builtin/packages/kvtree/package.py @@ -29,7 +29,8 @@ class Kvtree(CMakePackage): version("1.0.3", sha256="c742cdb1241ef4cb13767019204d5350a3c4383384bed9fb66680b93ff44b0d4") version("1.0.2", sha256="56fb5b747758c24a907a8380e8748d296900d94de9547bc15f6b427ac4ae2ec4") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("zlib-api", type="link") diff --git a/var/spack/repos/builtin/packages/less/package.py b/var/spack/repos/builtin/packages/less/package.py index 8e974da266dcbc..8601a602104909 100644 --- a/var/spack/repos/builtin/packages/less/package.py +++ b/var/spack/repos/builtin/packages/less/package.py @@ -19,6 +19,8 @@ class Less(AutotoolsPackage): license("GPL-3.0-or-later OR BSD-2-Clause", checked_by="wdconinc") + depends_on("c", type="build") + version("668", sha256="dbc0de59ea9c50e1e8927e6b077858db3a84954e767909bc599e6e6f602c5717") version("661", sha256="a900e3916738bf8c1a0a2a059810f1c59b8271ac8bb46898c6e921ea6aefd757") version("643", sha256="3bb417c4b909dfcb0adafc371ab87f0b22e8b15f463ec299d156c495fc9aa196") diff --git a/var/spack/repos/builtin/packages/macsio/package.py b/var/spack/repos/builtin/packages/macsio/package.py index 9f61c5dff2745b..00b0256d221960 100644 --- a/var/spack/repos/builtin/packages/macsio/package.py +++ b/var/spack/repos/builtin/packages/macsio/package.py @@ -20,7 +20,8 @@ class Macsio(CMakePackage): version("1.1", sha256="a86249b0f10647c0b631773db69568388094605ec1a0af149d9e61e95e6961ec") version("1.0", sha256="1dd0df28f9f31510329d5874c1519c745b5c6bec12e102cea3e9f4b05e5d3072") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("mpi", default=True, description="Build MPI plugin") variant("silo", default=False, description="Build with SILO plugin") diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 75e8b15982cfca..4e2f6a79b24e95 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -31,7 +31,8 @@ class Metis(CMakePackage, MakefilePackage): version("5.1.0", sha256="76faebe03f6c963127dbb73c13eab58c9a3faeae48779f049066a21c087c5db2") version("4.0.3", sha256="5efa35de80703c1b2c4d0de080fafbcf4e0d363a21149a1ad2f96e0144841a55") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") build_system( conditional("cmake", when="@5:"), conditional("makefile", when="@:4"), default="cmake" diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py index 1fe8a9cf3ee0ca..32e3cb13025e8b 100644 --- a/var/spack/repos/builtin/packages/rankstr/package.py +++ b/var/spack/repos/builtin/packages/rankstr/package.py @@ -26,7 +26,8 @@ class Rankstr(CMakePackage): version("0.0.3", sha256="d32052fbecd44299e13e69bf2dd7e5737c346404ccd784b8c2100ceed99d8cd3") version("0.0.2", sha256="b88357bf88cdda9565472543225d6b0fa50f0726f6e2d464c92d31a98b493abb") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("mpi") diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index 2495476b13308b..48e5a3640fd2c8 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -71,6 +71,9 @@ class Samrai(AutotoolsPackage): depends_on(Boost.with_default_variants, when="@3.0.0:3.11.99", type="build") depends_on("silo+mpi", when="+silo") + depends_on("c", type="build") + depends_on("cxx", type="build") + # don't build SAMRAI 3+ with tools with gcc patch("no-tool-build.patch", when="@3.0.0:%gcc") diff --git a/var/spack/repos/builtin/packages/spath/package.py b/var/spack/repos/builtin/packages/spath/package.py index c25b74b58ec82c..025699736247e5 100644 --- a/var/spack/repos/builtin/packages/spath/package.py +++ b/var/spack/repos/builtin/packages/spath/package.py @@ -26,7 +26,8 @@ class Spath(CMakePackage): version("0.0.2", sha256="7a65be59c3d27e92ed4718fba1a97a4a1c68e0a552b54de13d58afe3d8199cf7") version("0.0.1", sha256="f41c0ac74e6fb8acfd0c072d756db0fc9c00441f22be492cc4ad25f7fb596a24") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("zlib-api", type="link", when="@:0.0.2") diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index f896e2160e65de..09525457c2c6b7 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -53,7 +53,8 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): version("1.2.0", sha256="44596e88b844e7626248fb8e96a38be25a0e585a22256b1c859208b23ef45171") version("1.1.0", sha256="55f42c417d3a41893230b2fd3b5c192daeee689a2193de10bf22a1ef5c24c7ad") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=False, description="build shared libs") From 067fefc46ad0132f5af40a154f425e97924fcacb Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 17 Nov 2024 09:07:42 +0100 Subject: [PATCH 488/615] Set "generic" uarch granularity for a few pipelines (#47640) --- share/spack/gitlab/cloud_pipelines/configs/concretizer.yaml | 1 - .../cloud_pipelines/configs/linux/ppc64le/concretizer.yaml | 3 +++ .../cloud_pipelines/configs/linux/x86_64_v3/concretizer.yaml | 3 +++ .../cloud_pipelines/configs/linux/x86_64_v4/concretizer.yaml | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 share/spack/gitlab/cloud_pipelines/configs/linux/ppc64le/concretizer.yaml create mode 100644 share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v3/concretizer.yaml create mode 100644 share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v4/concretizer.yaml diff --git a/share/spack/gitlab/cloud_pipelines/configs/concretizer.yaml b/share/spack/gitlab/cloud_pipelines/configs/concretizer.yaml index 3e98ced6fdd05f..9006e2ec56a81f 100644 --- a/share/spack/gitlab/cloud_pipelines/configs/concretizer.yaml +++ b/share/spack/gitlab/cloud_pipelines/configs/concretizer.yaml @@ -1,4 +1,3 @@ concretizer: reuse: false unify: false - diff --git a/share/spack/gitlab/cloud_pipelines/configs/linux/ppc64le/concretizer.yaml b/share/spack/gitlab/cloud_pipelines/configs/linux/ppc64le/concretizer.yaml new file mode 100644 index 00000000000000..3050c32a17c7f8 --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/configs/linux/ppc64le/concretizer.yaml @@ -0,0 +1,3 @@ +concretizer: + targets: + granularity: generic diff --git a/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v3/concretizer.yaml b/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v3/concretizer.yaml new file mode 100644 index 00000000000000..3050c32a17c7f8 --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v3/concretizer.yaml @@ -0,0 +1,3 @@ +concretizer: + targets: + granularity: generic diff --git a/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v4/concretizer.yaml b/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v4/concretizer.yaml new file mode 100644 index 00000000000000..3050c32a17c7f8 --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/configs/linux/x86_64_v4/concretizer.yaml @@ -0,0 +1,3 @@ +concretizer: + targets: + granularity: generic From fdedb6f95d09c7f7a78ebce827ba0092b82c8f21 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 17 Nov 2024 09:18:48 +0100 Subject: [PATCH 489/615] style.py: add import-check for missing & redundant imports (#47619) --- lib/spack/spack/cmd/style.py | 162 ++++++++++++++++++++++++++---- lib/spack/spack/test/cmd/style.py | 99 +++++++++++++++++- share/spack/spack-completion.fish | 4 +- 3 files changed, 243 insertions(+), 22 deletions(-) diff --git a/lib/spack/spack/cmd/style.py b/lib/spack/spack/cmd/style.py index d16ff342770d16..5925d1120e5764 100644 --- a/lib/spack/spack/cmd/style.py +++ b/lib/spack/spack/cmd/style.py @@ -3,10 +3,12 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import argparse +import ast import os import re import sys from itertools import zip_longest +from typing import Dict, List, Optional import llnl.util.tty as tty import llnl.util.tty.color as color @@ -14,7 +16,7 @@ import spack.paths import spack.util.git -from spack.util.executable import which +from spack.util.executable import Executable, which description = "runs source code style checks on spack" section = "developer" @@ -36,10 +38,7 @@ def grouper(iterable, n, fillvalue=None): #: double-check the results of other tools (if, e.g., --fix was provided) #: The list maps an executable name to a method to ensure the tool is #: bootstrapped or present in the environment. -tool_names = ["isort", "black", "flake8", "mypy"] - -#: tools we run in spack style -tools = {} +tool_names = ["import-check", "isort", "black", "flake8", "mypy"] #: warnings to ignore in mypy mypy_ignores = [ @@ -61,14 +60,28 @@ def is_package(f): #: decorator for adding tools to the list class tool: - def __init__(self, name, required=False): + def __init__(self, name: str, required: bool = False, external: bool = True) -> None: self.name = name + self.external = external self.required = required def __call__(self, fun): - tools[self.name] = (fun, self.required) + self.fun = fun + tools[self.name] = self return fun + @property + def installed(self) -> bool: + return bool(which(self.name)) if self.external else True + + @property + def executable(self) -> Optional[Executable]: + return which(self.name) if self.external else None + + +#: tools we run in spack style +tools: Dict[str, tool] = {} + def changed_files(base="develop", untracked=True, all_files=False, root=None): """Get list of changed files in the Spack repository. @@ -176,22 +189,22 @@ def setup_parser(subparser): "-t", "--tool", action="append", - help="specify which tools to run (default: %s)" % ",".join(tool_names), + help="specify which tools to run (default: %s)" % ", ".join(tool_names), ) tool_group.add_argument( "-s", "--skip", metavar="TOOL", action="append", - help="specify tools to skip (choose from %s)" % ",".join(tool_names), + help="specify tools to skip (choose from %s)" % ", ".join(tool_names), ) subparser.add_argument("files", nargs=argparse.REMAINDER, help="specific files to check") -def cwd_relative(path, args): +def cwd_relative(path, root, initial_working_dir): """Translate prefix-relative path to current working directory-relative.""" - return os.path.relpath(os.path.join(args.root, path), args.initial_working_dir) + return os.path.relpath(os.path.join(root, path), initial_working_dir) def rewrite_and_print_output( @@ -201,7 +214,10 @@ def rewrite_and_print_output( # print results relative to current working directory def translate(match): - return replacement.format(cwd_relative(match.group(1), args), *list(match.groups()[1:])) + return replacement.format( + cwd_relative(match.group(1), args.root, args.initial_working_dir), + *list(match.groups()[1:]), + ) for line in output.split("\n"): if not line: @@ -220,7 +236,7 @@ def print_style_header(file_list, args, tools_to_run): # translate modified paths to cwd_relative if needed paths = [filename.strip() for filename in file_list] if not args.root_relative: - paths = [cwd_relative(filename, args) for filename in paths] + paths = [cwd_relative(filename, args.root, args.initial_working_dir) for filename in paths] tty.msg("Modified files", *paths) sys.stdout.flush() @@ -352,17 +368,127 @@ def run_black(black_cmd, file_list, args): return returncode +def _module_part(root: str, expr: str): + parts = expr.split(".") + while parts: + f1 = os.path.join(root, "lib", "spack", *parts) + ".py" + f2 = os.path.join(root, "lib", "spack", *parts, "__init__.py") + if os.path.exists(f1) or os.path.exists(f2): + return ".".join(parts) + parts.pop() + return None + + +def _run_import_check( + file_list: List[str], + *, + fix: bool, + root_relative: bool, + root=spack.paths.prefix, + working_dir=spack.paths.prefix, + out=sys.stdout, +): + if sys.version_info < (3, 9): + print("import-check requires Python 3.9 or later") + return 0 + + is_use = re.compile(r"(? List[str]: + return [t for t in tools_to_run if not tools[t].installed] def _bootstrap_dev_dependencies(): @@ -417,9 +543,9 @@ def prefix_relative(path): print_style_header(file_list, args, tools_to_run) for tool_name in tools_to_run: - run_function, required = tools[tool_name] + tool = tools[tool_name] print_tool_header(tool_name) - return_code |= run_function(which(tool_name), file_list, args) + return_code |= tool.fun(tool.executable, file_list, args) if return_code == 0: tty.msg(color.colorize("@*{spack style checks were clean}")) diff --git a/lib/spack/spack/test/cmd/style.py b/lib/spack/spack/test/cmd/style.py index 208e31f8a2fa5f..eab4de18ddaad5 100644 --- a/lib/spack/spack/test/cmd/style.py +++ b/lib/spack/spack/test/cmd/style.py @@ -4,8 +4,11 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import filecmp +import io import os +import pathlib import shutil +import sys import pytest @@ -15,7 +18,7 @@ import spack.main import spack.paths import spack.repo -from spack.cmd.style import changed_files +from spack.cmd.style import _run_import_check, changed_files from spack.util.executable import which #: directory with sample style files @@ -292,5 +295,97 @@ def test_style_with_black(flake8_package_with_errors): def test_skip_tools(): - output = style("--skip", "isort,mypy,black,flake8") + output = style("--skip", "import-check,isort,mypy,black,flake8") assert "Nothing to run" in output + + +@pytest.mark.skipif(sys.version_info < (3, 9), reason="requires Python 3.9+") +def test_run_import_check(tmp_path: pathlib.Path): + file = tmp_path / "issues.py" + contents = ''' +import spack.cmd +import spack.config # do not drop this import because of this comment + +# this comment about spack.error should not be removed +class Example(spack.build_systems.autotools.AutotoolsPackage): + """this is a docstring referencing unused spack.error.SpackError, which is fine""" + pass + +def foo(config: "spack.error.SpackError"): + # the type hint is quoted, so it should not be removed + spack.util.executable.Executable("example") +''' + file.write_text(contents) + root = str(tmp_path) + output_buf = io.StringIO() + exit_code = _run_import_check( + [str(file)], + fix=False, + out=output_buf, + root_relative=False, + root=spack.paths.prefix, + working_dir=root, + ) + output = output_buf.getvalue() + + assert "issues.py: redundant import: spack.cmd" in output + assert "issues.py: redundant import: spack.config" not in output # comment prevents removal + assert "issues.py: missing import: spack.build_systems.autotools" in output + assert "issues.py: missing import: spack.util.executable" in output + assert "issues.py: missing import: spack.error" not in output # not directly used + assert exit_code == 1 + assert file.read_text() == contents # fix=False should not change the file + + # run it with --fix, should have the same output. + output_buf = io.StringIO() + exit_code = _run_import_check( + [str(file)], + fix=True, + out=output_buf, + root_relative=False, + root=spack.paths.prefix, + working_dir=root, + ) + output = output_buf.getvalue() + assert exit_code == 1 + assert "issues.py: redundant import: spack.cmd" in output + assert "issues.py: missing import: spack.build_systems.autotools" in output + assert "issues.py: missing import: spack.util.executable" in output + + # after fix a second fix is idempotent + output_buf = io.StringIO() + exit_code = _run_import_check( + [str(file)], + fix=True, + out=output_buf, + root_relative=False, + root=spack.paths.prefix, + working_dir=root, + ) + output = output_buf.getvalue() + assert exit_code == 0 + assert not output + + # check that the file was fixed + new_contents = file.read_text() + assert "import spack.cmd" not in new_contents + assert "import spack.build_systems.autotools" in new_contents + assert "import spack.util.executable" in new_contents + + +@pytest.mark.skipif(sys.version_info < (3, 9), reason="requires Python 3.9+") +def test_run_import_check_syntax_error_and_missing(tmp_path: pathlib.Path): + (tmp_path / "syntax-error.py").write_text("""this 'is n(ot python code""") + output_buf = io.StringIO() + exit_code = _run_import_check( + [str(tmp_path / "syntax-error.py"), str(tmp_path / "missing.py")], + fix=False, + out=output_buf, + root_relative=True, + root=str(tmp_path), + working_dir=str(tmp_path / "does-not-matter"), + ) + output = output_buf.getvalue() + assert "syntax-error.py: could not parse" in output + assert "missing.py: could not parse" in output + assert exit_code == 1 diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 385361389a5ff7..6c8f2521b42de5 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -2908,9 +2908,9 @@ complete -c spack -n '__fish_spack_using_command style' -s f -l fix -d 'format a complete -c spack -n '__fish_spack_using_command style' -l root -r -f -a root complete -c spack -n '__fish_spack_using_command style' -l root -r -d 'style check a different spack instance' complete -c spack -n '__fish_spack_using_command style' -s t -l tool -r -f -a tool -complete -c spack -n '__fish_spack_using_command style' -s t -l tool -r -d 'specify which tools to run (default: isort,black,flake8,mypy)' +complete -c spack -n '__fish_spack_using_command style' -s t -l tool -r -d 'specify which tools to run (default: import-check, isort, black, flake8, mypy)' complete -c spack -n '__fish_spack_using_command style' -s s -l skip -r -f -a skip -complete -c spack -n '__fish_spack_using_command style' -s s -l skip -r -d 'specify tools to skip (choose from isort,black,flake8,mypy)' +complete -c spack -n '__fish_spack_using_command style' -s s -l skip -r -d 'specify tools to skip (choose from import-check, isort, black, flake8, mypy)' # spack tags set -g __fish_spack_optspecs_spack_tags h/help i/installed a/all From da4f7c2952e4dcc9f0581db2fac43da13b0bcb47 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 17 Nov 2024 21:32:24 +0100 Subject: [PATCH 490/615] Add an audit to prevent using the name "all" in packages (#47651) Packages cannot be named like that, since we use "all" to indicate default settings under the "packages" section of the configuration. --- lib/spack/spack/audit.py | 5 +++++ .../repos/builtin/packages/{all => all-library}/package.py | 2 +- var/spack/repos/builtin/packages/cabana/package.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) rename var/spack/repos/builtin/packages/{all => all-library}/package.py (98%) diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index 273e335ade03cf..7e6b87c987c613 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -571,8 +571,13 @@ def _search_for_deprecated_package_methods(pkgs, error_cls): @package_properties def _ensure_all_package_names_are_lowercase(pkgs, error_cls): """Ensure package names are lowercase and consistent""" + reserved_names = ("all",) badname_regex, errors = re.compile(r"[_A-Z]"), [] for pkg_name in pkgs: + if pkg_name in reserved_names: + error_msg = f"The name '{pkg_name}' is reserved, and cannot be used for packages" + errors.append(error_cls(error_msg, [])) + if badname_regex.search(pkg_name): error_msg = f"Package name '{pkg_name}' should be lowercase and must not contain '_'" errors.append(error_cls(error_msg, [])) diff --git a/var/spack/repos/builtin/packages/all/package.py b/var/spack/repos/builtin/packages/all-library/package.py similarity index 98% rename from var/spack/repos/builtin/packages/all/package.py rename to var/spack/repos/builtin/packages/all-library/package.py index c30254cc95c4e1..8841584194b591 100644 --- a/var/spack/repos/builtin/packages/all/package.py +++ b/var/spack/repos/builtin/packages/all-library/package.py @@ -6,7 +6,7 @@ from spack.package import * -class All(CMakePackage): +class AllLibrary(CMakePackage): """A Load Balancing Library (ALL) The library aims to provide an easy way to include dynamic domain-based diff --git a/var/spack/repos/builtin/packages/cabana/package.py b/var/spack/repos/builtin/packages/cabana/package.py index 42852dc12320c0..3905b30b294afe 100644 --- a/var/spack/repos/builtin/packages/cabana/package.py +++ b/var/spack/repos/builtin/packages/cabana/package.py @@ -93,7 +93,7 @@ class Cabana(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos+cuda_lambda@4.1:", when="+cuda@0.7:") # Dependencies for subpackages - depends_on("all", when="@0.5.0:+all") + depends_on("all-library", when="@0.5.0:+all") depends_on("arborx", when="@0.3.0:+arborx") depends_on("hypre-cmake@2.22.0:", when="@0.4.0:+hypre") depends_on("hypre-cmake@2.22.1:", when="@0.5.0:+hypre") From 00f179ee6da8252dff882c2d2249240f2d43805a Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 17 Nov 2024 18:39:17 -0600 Subject: [PATCH 491/615] root: add v6.32.08 (#47641) --- var/spack/repos/builtin/packages/root/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index d8bb48c720e49f..8aa95df8a27421 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -35,6 +35,7 @@ class Root(CMakePackage): version("develop", branch="master") # Production version + version("6.32.08", sha256="29ad4945a72dff1a009c326a65b6fa5ee2478498823251d3cef86a2cbeb77b27") version("6.32.06", sha256="3fc032d93fe848dea5adb1b47d8f0a86279523293fee0aa2b3cd52a1ffab7247") version("6.32.04", sha256="132f126aae7d30efbccd7dcd991b7ada1890ae57980ef300c16421f9d4d07ea8") version("6.32.02", sha256="3d0f76bf05857e1807ccfb2c9e014f525bcb625f94a2370b455f4b164961602d") From 5f262eb5d3f5314f72f3dd46ec67128e1c657ac9 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 18 Nov 2024 09:39:47 +0100 Subject: [PATCH 492/615] Add further missing C, C++ dependencies to packages (#47649) --- var/spack/repos/builtin/packages/axl/package.py | 3 ++- var/spack/repos/builtin/packages/callpath/package.py | 3 ++- var/spack/repos/builtin/packages/fp16/package.py | 3 ++- var/spack/repos/builtin/packages/fxdiv/package.py | 3 ++- var/spack/repos/builtin/packages/gloo/package.py | 3 +++ var/spack/repos/builtin/packages/googletest/package.py | 3 ++- var/spack/repos/builtin/packages/hipify-clang/package.py | 3 ++- var/spack/repos/builtin/packages/hsa-rocr-dev/package.py | 3 ++- var/spack/repos/builtin/packages/libspatialindex/package.py | 3 ++- var/spack/repos/builtin/packages/parmetis/package.py | 3 ++- var/spack/repos/builtin/packages/py-onnx/package.py | 3 ++- .../repos/builtin/packages/py-scikit-learn-extra/package.py | 3 ++- var/spack/repos/builtin/packages/r/package.py | 5 +++-- var/spack/repos/builtin/packages/samrai/package.py | 1 + var/spack/repos/builtin/packages/shuffile/package.py | 3 ++- 15 files changed, 31 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py index 119cf81da28336..ebf05863f8c253 100644 --- a/var/spack/repos/builtin/packages/axl/package.py +++ b/var/spack/repos/builtin/packages/axl/package.py @@ -46,7 +46,8 @@ class Axl(CMakePackage): deprecated=True, ) - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("kvtree") depends_on("zlib-api", type="link") diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index 3b36222c97e6fc..2044889336d390 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -17,7 +17,8 @@ class Callpath(CMakePackage): version("1.0.2", sha256="cbe42bba8b9dda259dcbe7e16ebd7ecd005eabf7e9ccf169535b03110df75c84") version("1.0.1", sha256="9bd9723126f80d0b518c28e5298ad0fa8d8dbc6a3f03fee5ae5449cf4c9a550f") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("elf", type="link") depends_on("libdwarf") diff --git a/var/spack/repos/builtin/packages/fp16/package.py b/var/spack/repos/builtin/packages/fp16/package.py index a0e49e0da168b9..c756d5b4abadac 100644 --- a/var/spack/repos/builtin/packages/fp16/package.py +++ b/var/spack/repos/builtin/packages/fp16/package.py @@ -21,7 +21,8 @@ class Fp16(CMakePackage): version("2018-10-10", commit="34d4bf01bbf7376f2baa71b8fa148b18524d45cf") # py-torch@1.0 version("2018-02-25", commit="43d6d17df48ebf622587e7ed9472ea76573799b9") # py-torch@:0.4 - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") generator("ninja") depends_on("cmake@2.8.12:", type="build") diff --git a/var/spack/repos/builtin/packages/fxdiv/package.py b/var/spack/repos/builtin/packages/fxdiv/package.py index 4bd936ca302b41..c9194568ef9cc8 100644 --- a/var/spack/repos/builtin/packages/fxdiv/package.py +++ b/var/spack/repos/builtin/packages/fxdiv/package.py @@ -19,7 +19,8 @@ class Fxdiv(CMakePackage): version("2018-11-16", commit="b742d1143724d646cd0f914646f1240eacf5bd73") # py-torch@1.0:1.5 version("2018-02-24", commit="811b482bcd9e8d98ad80c6c78d5302bb830184b0") # py-torch@0.4 - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") generator("ninja") depends_on("cmake@3.5:", type="build") diff --git a/var/spack/repos/builtin/packages/gloo/package.py b/var/spack/repos/builtin/packages/gloo/package.py index 4d431020a87437..f2cae6f993f886 100644 --- a/var/spack/repos/builtin/packages/gloo/package.py +++ b/var/spack/repos/builtin/packages/gloo/package.py @@ -48,7 +48,10 @@ class Gloo(CMakePackage, CudaPackage): ) generator("ninja") + + depends_on("c", type="build") depends_on("cxx", type="build") + depends_on("pkgconfig", type="build") depends_on("libuv@1.26:", when="+libuv") depends_on("cmake@2.8.12:", type="build") diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index d471cbe2f6c12d..ca9bf32afd77bb 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -27,7 +27,8 @@ class Googletest(CMakePackage): version("1.7.0", sha256="f73a6546fdf9fce9ff93a5015e0333a8af3062a152a9ad6bcb772c96687016cc") version("1.6.0", sha256="5fbc058e5b662b9c86d93ac76fefb58eec89cbf26144b49669a38ecb62758447") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("gmock", default=True, when="@1.8:", description="Build with gmock") variant("pthreads", default=True, description="Build multithreaded version with pthreads") diff --git a/var/spack/repos/builtin/packages/hipify-clang/package.py b/var/spack/repos/builtin/packages/hipify-clang/package.py index 44c593938cbbbf..d8fcc5494d548e 100644 --- a/var/spack/repos/builtin/packages/hipify-clang/package.py +++ b/var/spack/repos/builtin/packages/hipify-clang/package.py @@ -39,7 +39,8 @@ class HipifyClang(CMakePackage): version("5.3.3", sha256="9d08e2896e52c10a0a189a5407567043f2510adc7bf618591c97a22a23699691") version("5.3.0", sha256="7674900d2b9319d91fa8f469252c5acb5bedf339142417cdcb64f33ee8482e00") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") diff --git a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py index 579a7b01ba3262..41dd80a081d711 100644 --- a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py @@ -43,7 +43,8 @@ class HsaRocrDev(CMakePackage): version("5.3.3", sha256="aca88d90f169f35bd65ce3366b8670c7cdbe3abc0a2056eab805d0192cfd7130") version("5.3.0", sha256="b51dbedbe73390e0be748b92158839c82d7fa0e514fede60aa7696dc498facf0") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Build shared or static library") variant("image", default=True, description="build with or without image support") diff --git a/var/spack/repos/builtin/packages/libspatialindex/package.py b/var/spack/repos/builtin/packages/libspatialindex/package.py index 3504012bfe9a23..7923e2e0b51011 100644 --- a/var/spack/repos/builtin/packages/libspatialindex/package.py +++ b/var/spack/repos/builtin/packages/libspatialindex/package.py @@ -17,7 +17,8 @@ class Libspatialindex(CMakePackage): version("1.9.3", sha256="7b44340a3edc55c11abfc453bb60f148b29f569cef9e1148583e76132e9c7379") version("1.8.5", sha256="93cce77269612f45287b521d5afdfb245be2b93b8b6438d92f8b9e0bdb37059d") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3.5.0:", type="build") diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index f9e2754eb52778..fe6b00c654bc5d 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -21,7 +21,8 @@ class Parmetis(CMakePackage): version("4.0.3", sha256="f2d9a231b7cf97f1fee6e8c9663113ebf6c240d407d3c118c55b3633d6be6e5f") version("4.0.2", sha256="5acbb700f457d3bda7d4bb944b559d7f21f075bb6fa4c33f42c261019ef2f0b2") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Enables the build of shared libraries.") variant("gdb", default=False, description="Enables gdb support.") diff --git a/var/spack/repos/builtin/packages/py-onnx/package.py b/var/spack/repos/builtin/packages/py-onnx/package.py index 446f6217fd37fe..6ce7596a8d376b 100644 --- a/var/spack/repos/builtin/packages/py-onnx/package.py +++ b/var/spack/repos/builtin/packages/py-onnx/package.py @@ -36,7 +36,8 @@ class PyOnnx(PythonPackage): version("1.6.0", sha256="3b88c3fe521151651a0403c4d131cb2e0311bd28b753ef692020a432a81ce345") version("1.5.0", sha256="1a584a4ef62a6db178c257fffb06a9d8e61b41c0a80bfd8bcd8a253d72c4b0b4") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # CMakeLists.txt depends_on("cmake@3.1:", type="build") diff --git a/var/spack/repos/builtin/packages/py-scikit-learn-extra/package.py b/var/spack/repos/builtin/packages/py-scikit-learn-extra/package.py index d6935fb7801d08..ceb56bdf9e5f6d 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn-extra/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn-extra/package.py @@ -21,7 +21,8 @@ class PyScikitLearnExtra(PythonPackage): version("0.2.0", sha256="3b1bb5fedde47920eb4b3fa0a0c18f80cc7359d9d0496720178788c6153b8019") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # For upperbound see https://github.com/scikit-learn-contrib/scikit-learn-extra/issues/164 depends_on("python@3.6:3.10", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 478d4c5d8bdd8b..768952a3630294 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -69,8 +69,9 @@ class R(AutotoolsPackage): version("3.1.3", sha256="07e98323935baa38079204bfb9414a029704bb9c0ca5ab317020ae521a377312") version("3.1.2", sha256="bcd150afcae0e02f6efb5f35a6ab72432be82e849ec52ce0bb89d8c342a8fa7a") - depends_on("c", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") variant("X", default=False, description="Enable X11 support (TCLTK, PNG, JPEG, TIFF, CAIRO)") variant("memory_profiling", default=False, description="Enable memory profiling") diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index 48e5a3640fd2c8..99239717b9e328 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -73,6 +73,7 @@ class Samrai(AutotoolsPackage): depends_on("c", type="build") depends_on("cxx", type="build") + depends_on("fortran", type="build") # don't build SAMRAI 3+ with tools with gcc patch("no-tool-build.patch", when="@3.0.0:%gcc") diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py index eab7201a424b0e..201d1f3b1acc7d 100644 --- a/var/spack/repos/builtin/packages/shuffile/package.py +++ b/var/spack/repos/builtin/packages/shuffile/package.py @@ -26,7 +26,8 @@ class Shuffile(CMakePackage): version("0.0.4", sha256="f0249ab31fc6123103ad67b1eaf799277c72adcf0dfcddf8c3a18bad2d45031d") version("0.0.3", sha256="a3f685526a1146a5ad8dbacdc5f9c2e1152d9761a1a179c1db34f55afc8372f6") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("mpi") depends_on("kvtree+mpi") From a86953fcb14a1e6ab760cba6957850ecfd40cca7 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 18 Nov 2024 13:58:59 +0100 Subject: [PATCH 493/615] acts: add version 37.4.0 (#47657) This commit adds v37.4.0 of the ACTS project; no new versions of the dependencies were released. --- var/spack/repos/builtin/packages/acts/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 4063fb491b6a75..c2c158a17cca78 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -41,6 +41,7 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version("main", branch="main") version("master", branch="main", deprecated=True) # For compatibility + version("37.4.0", commit="4ae9a44f54c854599d1d753222ec36e0b5b4e9c7", submodules=True) version("37.3.0", commit="b3e856d4dadcda7d1a88a9b846ce5a7acd8410c4", submodules=True) version("37.2.0", commit="821144dc40d35b44aee0d7857a0bd1c99e4a3932", submodules=True) version("37.1.0", commit="fa6ad4d52e0bd09cf8c78507fcbb18e9ac2c87a3", submodules=True) From dfab174f3100840c889e8bb939260b64d93d8dbd Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 18 Nov 2024 14:04:52 +0100 Subject: [PATCH 494/615] benchmark: add version 1.9.0 (#47658) This commit adds Google Benchmark v1.9.0. --- var/spack/repos/builtin/packages/benchmark/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 488a7509518904..1c1074696d90bf 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -19,6 +19,7 @@ class Benchmark(CMakePackage): # first properly installed CMake config packages in # 1.2.0 release: https://github.com/google/benchmark/issues/363 version("main", branch="main") + version("1.9.0", sha256="35a77f46cc782b16fac8d3b107fbfbb37dcd645f7c28eee19f3b8e0758b48994") version("1.8.5", sha256="d26789a2b46d8808a48a4556ee58ccc7c497fcd4c0af9b90197674a81e04798a") version("1.8.4", sha256="3e7059b6b11fb1bbe28e33e02519398ca94c1818874ebed18e504dc6f709be45") version("1.8.3", sha256="6bc180a57d23d4d9515519f92b0c83d61b05b5bab188961f36ac7b06b0d9e9ce") From 299324c7cad842cb03a27b5c7f54336a0d8386c4 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 12:10:14 -0600 Subject: [PATCH 495/615] dbus: add v1.15.12 (#47655) --- var/spack/repos/builtin/packages/dbus/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/dbus/package.py b/var/spack/repos/builtin/packages/dbus/package.py index 3f6677337728f2..c200b357a71268 100644 --- a/var/spack/repos/builtin/packages/dbus/package.py +++ b/var/spack/repos/builtin/packages/dbus/package.py @@ -31,6 +31,7 @@ class Dbus(AutotoolsPackage, MesonPackage): ) # Note: odd minor versions are unstable, keep last stable version preferred + version("1.15.12", sha256="0589c9c707dd593e31f0709caefa5828e69c668c887a7c0d2e5ba445a86bae4d") version("1.15.10", sha256="f700f2f1d0473f11e52f3f3e179f577f31b85419f9ae1972af8c3db0bcfde178") version( "1.14.10", From e9f94d9bf26d0e3fc36fecf913ed4b20a28beb96 Mon Sep 17 00:00:00 2001 From: Teague Sterling Date: Mon, 18 Nov 2024 10:14:16 -0800 Subject: [PATCH 496/615] ollama: add v0.4.2 (#47654) Signed-off-by: Teague Sterling --- var/spack/repos/builtin/packages/ollama/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ollama/package.py b/var/spack/repos/builtin/packages/ollama/package.py index 7de54a4ce8a0d3..acd3524067186f 100644 --- a/var/spack/repos/builtin/packages/ollama/package.py +++ b/var/spack/repos/builtin/packages/ollama/package.py @@ -18,6 +18,7 @@ class Ollama(GoPackage, CudaPackage): # A shell script is run by `go generate` which assumes source is in a git # repo. So we must use git VCS and not tarballs and defeat source caching. with default_args(submodules=True, no_cache=True): + version("0.4.2", commit="d875e99e4639dc07af90b2e3ea0d175e2e692efb") version("0.3.9", commit="a1cef4d0a5f31280ea82b350605775931a6163cb") version("0.1.31", commit="dc011d16b9ff160c0be3829fc39a43054f0315d0") # This is the last verified non-preview version as of 20240413 From 15b3ff2a0aae70587505c0b377d206a3f1be196b Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 12:29:29 -0600 Subject: [PATCH 497/615] harfbuzz: add v10.1.0 (#47645) --- var/spack/repos/builtin/packages/harfbuzz/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 0a22bb9997d87a..09a43358cbed18 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -24,6 +24,7 @@ class Harfbuzz(MesonPackage, AutotoolsPackage): license("MIT") + version("10.1.0", sha256="6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82") version("10.0.1", sha256="b2cb13bd351904cb9038f907dc0dee0ae07127061242fe3556b2795c4e9748fc") version("10.0.0", sha256="c2dfe016ad833a5043ecc6579043f04e8e6d50064e02ad449bb466e6431e3e04") version("9.0.0", sha256="a41b272ceeb920c57263ec851604542d9ec85ee3030506d94662067c7b6ab89e") From 1c75d07f056e207f63c1dee5529f91f98eb81f52 Mon Sep 17 00:00:00 2001 From: wspear Date: Mon, 18 Nov 2024 10:37:53 -0800 Subject: [PATCH 498/615] Fix self.spec reference (#47610) @teaguesterling --- var/spack/repos/builtin/packages/ollama/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ollama/package.py b/var/spack/repos/builtin/packages/ollama/package.py index acd3524067186f..0c916b90bde527 100644 --- a/var/spack/repos/builtin/packages/ollama/package.py +++ b/var/spack/repos/builtin/packages/ollama/package.py @@ -44,7 +44,7 @@ def setup_build_environment(self, env): cuda_prefix = self.spec["cuda"].prefix env.set("CUDACXX", cuda_prefix.bin.nvcc) env.set("CUDA_LIB_DIR", cuda_prefix.lib) - env.set("CMAKE_CUDA_ARCHITECTURES", spec.variants["cuda_arch"].value) + env.set("CMAKE_CUDA_ARCHITECTURES", self.spec.variants["cuda_arch"].value) @property def generate_args(self): From 6cd26b76034ecacaeb50e249f105ece0a4a47e3e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 12:41:32 -0600 Subject: [PATCH 499/615] clinfo: add v3.0.23.01.25 (#47644) From aeb0ab6acf984b48c13ae3651134170715c67c3e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 12:43:26 -0600 Subject: [PATCH 500/615] pocl: add v3.1, v4.0, v5.0, v6.0 (#47643) --- var/spack/repos/builtin/packages/pocl/package.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index 9e6035a5e26b5f..1c51cfb5e5b3fc 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -22,6 +22,10 @@ class Pocl(CMakePackage): license("MIT") version("main", branch="main") + version("6.0", sha256="de9710223fc1855f833dbbf42ea2681e06aa8ec0464f0201104dc80a74dfd1f2") + version("5.0", sha256="fd0bb6e50c2286278c11627b71177991519e1f7ab2576bd8d8742974db414549") + version("4.0", sha256="7f4e8ab608b3191c2b21e3f13c193f1344b40aba7738f78762f7b88f45e8ce03") + version("3.1", sha256="82314362552e050aff417318dd623b18cf0f1d0f84f92d10a7e3750dd12d3a9a") version("3.0", sha256="a3fd3889ef7854b90b8e4c7899c5de48b7494bf770e39fba5ad268a5cbcc719d") version("1.8", sha256="0f63377ae1826e16e90038fc8e7f65029be4ff6f9b059f6907174b5c0d1f8ab2") version("1.7", sha256="5f6bbc391ba144bc7becc3b90888b25468460d5aa6830f63a3b066137e7bfac3") @@ -44,6 +48,9 @@ class Pocl(CMakePackage): provides("opencl@2.0", when="^llvm@:13") provides("opencl@3.0", when="@3: ^llvm@14:") + depends_on("cmake @3.12:", type="build", when="@4:") + depends_on("cmake @3.9:", type="build", when="@3:") + depends_on("cmake @3.3:", type="build", when="@1.6:") depends_on("cmake @2.8.12:", type="build") depends_on("hwloc") depends_on("hwloc@:1", when="@:1.1") @@ -51,7 +58,13 @@ class Pocl(CMakePackage): depends_on("pkgconfig", type="build") depends_on("llvm +clang") - depends_on("llvm @14:15", when="@master") + # PoCL aims to support **the latest LLVM version** at the time of PoCL release, + # **plus the previous** LLVM version + depends_on("llvm @18:19", when="@master") + depends_on("llvm @17:18", when="@6.0") + depends_on("llvm @16:17", when="@5.0") + depends_on("llvm @15:16", when="@4.0") + depends_on("llvm @14:15", when="@3.1") depends_on("llvm @13:14", when="@3.0") depends_on("llvm @12:13", when="@1.8") depends_on("llvm @11:12", when="@1.7") From 52147348c7661b91bc95231603f218220d2c2bea Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 18 Nov 2024 11:52:17 -0700 Subject: [PATCH 501/615] Added Go v1.23.3 (#47633) --- var/spack/repos/builtin/packages/go/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 0a7dffb912d6a5..753c26c4ae82e5 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -41,6 +41,7 @@ class Go(Package): license("BSD-3-Clause") + version("1.23.3", sha256="8d6a77332487557c6afa2421131b50f83db4ae3c579c3bc72e670ee1f6968599") version("1.23.2", sha256="36930162a93df417d90bd22c6e14daff4705baac2b02418edda671cdfa9cd07f") version("1.23.1", sha256="6ee44e298379d146a5e5aa6b1c5b5d5f5d0a3365eabdd70741e6e21340ec3b0d") version("1.22.8", sha256="df12c23ebf19dea0f4bf46a22cbeda4a3eca6f474f318390ce774974278440b8") From e1dfbbf611ee9ed23f51c6a7629ca2584a42d0af Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 13:13:41 -0600 Subject: [PATCH 502/615] py-greenlet: add v3.0.3, v3.1.1 (#47647) * py-greenlet: add v3.0.3, v3.1.1 * py-greenlet: depends_on py-setuptools@40.8.0: --- var/spack/repos/builtin/packages/py-greenlet/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-greenlet/package.py b/var/spack/repos/builtin/packages/py-greenlet/package.py index 71dcc219cdc427..7d5474da3bb98b 100644 --- a/var/spack/repos/builtin/packages/py-greenlet/package.py +++ b/var/spack/repos/builtin/packages/py-greenlet/package.py @@ -17,6 +17,8 @@ class PyGreenlet(PythonPackage): license("MIT AND PSF-2.0", checked_by="tgamblin") + version("3.1.1", sha256="4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467") + version("3.0.3", sha256="43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491") version("3.0.0a1", sha256="1bd4ea36f0aeb14ca335e0c9594a5aaefa1ac4e2db7d86ba38f0be96166b3102") version( "2.0.2", @@ -38,3 +40,4 @@ class PyGreenlet(PythonPackage): depends_on("python@:3.12", when="@:3.0") depends_on("py-setuptools", type="build") + depends_on("py-setuptools@40.8.0:", type="build", when="@3.0.2:") From 97406f241ceeae171d4d55e221f7447e537ae452 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Mon, 18 Nov 2024 14:15:30 -0500 Subject: [PATCH 503/615] tomlplusplus: new package (#47624) * tomlplusplus: new package * tomlplusplus: remove period --- .../builtin/packages/tomlplusplus/package.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tomlplusplus/package.py diff --git a/var/spack/repos/builtin/packages/tomlplusplus/package.py b/var/spack/repos/builtin/packages/tomlplusplus/package.py new file mode 100644 index 00000000000000..d165127d3ee126 --- /dev/null +++ b/var/spack/repos/builtin/packages/tomlplusplus/package.py @@ -0,0 +1,20 @@ +# 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) + +from spack.package import * + + +class Tomlplusplus(CMakePackage): + """Header-only TOML config file parser and serializer for C++17""" + + homepage = "https://marzer.github.io/tomlplusplus/" + url = "https://github.com/marzer/tomlplusplus/archive/refs/tags/v3.4.0.tar.gz" + + license("MIT", checked_by="pranav-sivaraman") + + version("3.4.0", sha256="8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155") + + depends_on("cxx", type="build") + depends_on("cmake@3.14:", type="build") From e3c05150769c60e0e8fdd7840adde2379ac4873c Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Mon, 18 Nov 2024 14:19:14 -0500 Subject: [PATCH 504/615] tinycbor: new package (#47623) --- .../builtin/packages/tinycbor/package.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tinycbor/package.py diff --git a/var/spack/repos/builtin/packages/tinycbor/package.py b/var/spack/repos/builtin/packages/tinycbor/package.py new file mode 100644 index 00000000000000..cd2c5a43bc95ef --- /dev/null +++ b/var/spack/repos/builtin/packages/tinycbor/package.py @@ -0,0 +1,27 @@ +# 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) + + +from spack.package import * + + +class Tinycbor(MakefilePackage): + """Concise Binary Object Representation (CBOR) Library""" + + homepage = "https://github.com/intel/tinycbor" + url = "https://github.com/intel/tinycbor/archive/refs/tags/v0.6.0.tar.gz" + + license("MIT", checked_by="pranav-sivaraman") + + version("0.6.0", sha256="512e2c9fce74f60ef9ed3af59161e905f9e19f30a52e433fc55f39f4c70d27e4") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + build_targets = ["CC=cc", "CXX=cxx"] + + @property + def install_targets(self): + return ["install", f"prefix={self.prefix}"] From b8eba1c677a7dbd77b82ef4d4fdb3f620f77ed90 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Mon, 18 Nov 2024 11:35:00 -0800 Subject: [PATCH 505/615] amrex: add new variant fft for >= 24.11 (#47611) --- var/spack/repos/builtin/packages/amrex/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 07c4d2ae66c8f5..b524b6af812cbd 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -135,6 +135,7 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): ) variant("eb", default=True, description="Build Embedded Boundary classes", when="@24.10:") variant("eb", default=False, description="Build Embedded Boundary classes", when="@:24.09") + variant("fft", default=False, description="Build FFT support", when="@24.11:") variant("fortran", default=False, description="Build Fortran API") variant("linear_solvers", default=True, description="Build linear solvers") variant("amrdata", default=False, description="Build data services") @@ -150,6 +151,9 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): # Build dependencies depends_on("mpi", when="+mpi") + with when("+fft"): + depends_on("rocfft", when="+rocm") + depends_on("fftw@3", when="~cuda ~rocm ~sycl") with when("+ascent"): depends_on("ascent") depends_on("ascent +cuda", when="+cuda") @@ -330,6 +334,9 @@ def cmake_args(self): self.define_from_variant("AMReX_PIC", "pic"), ] + if self.spec.satisfies("+fft"): + args.append("-DAMReX_FFT=ON") + if self.spec.satisfies("%fj"): args.append("-DCMAKE_Fortran_MODDIR_FLAG=-M") From d1166fd31680f32876ab5ee27afe0a13d9889f5c Mon Sep 17 00:00:00 2001 From: Jerome Soumagne Date: Mon, 18 Nov 2024 13:36:23 -0600 Subject: [PATCH 506/615] mercury: add v2.4.0 (#47606) --- var/spack/repos/builtin/packages/mercury/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mercury/package.py b/var/spack/repos/builtin/packages/mercury/package.py index bf4de22b88b359..a614623bcefc95 100644 --- a/var/spack/repos/builtin/packages/mercury/package.py +++ b/var/spack/repos/builtin/packages/mercury/package.py @@ -19,6 +19,7 @@ class Mercury(CMakePackage): license("GPL-2.0-only") version("master", branch="master", submodules=True) + version("2.4.0", sha256="8926cd177f6e3c04e8ae1683d42f7c8b27163a93d4d99a305fe497fa8ca86e79") version("2.3.1", sha256="36182d49f2db7e2b075240cab4aaa1d4ec87a7756450c87643ededd1e6f16104") version("2.3.0", sha256="e9e62ce1bb2fd482f0e85ad75fa255d9750c6fed50ba441a03de93b3b8eae742") version("2.2.0", sha256="e66490cf63907c3959bbb2932b5aaf51d96a481b17f0935f409f3a862eff97f6") From 1ffd7125a666c2d45a3706751a8c1e56ec96b714 Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Mon, 18 Nov 2024 11:48:16 -0800 Subject: [PATCH 507/615] sundials: set CUDAToolkit_ROOT (#47601) * sundials: specify CUDAToolkit_ROOT --- var/spack/repos/builtin/packages/sundials/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 3708e34d492106..8f025724306a76 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -398,6 +398,7 @@ def cmake_args(self): if "+cuda" in spec: args.append(define("CMAKE_CUDA_ARCHITECTURES", spec.variants["cuda_arch"].value)) + args.append(define("CUDAToolkit_ROOT", self.spec["cuda"].prefix)) if "+rocm" in spec: args.extend( From a6fdd7608f926e9d715cc672a0872f427510f601 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 18 Nov 2024 20:51:16 +0100 Subject: [PATCH 508/615] py-huggingface-hub: add v0.26.2, hf_transfer (#47600) --- .../packages/py-hf-transfer/package.py | 20 ++++++++ .../packages/py-huggingface-hub/package.py | 50 +++++++++++++------ 2 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-hf-transfer/package.py diff --git a/var/spack/repos/builtin/packages/py-hf-transfer/package.py b/var/spack/repos/builtin/packages/py-hf-transfer/package.py new file mode 100644 index 00000000000000..3dab2ffe994460 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hf-transfer/package.py @@ -0,0 +1,20 @@ +# 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) + +from spack.package import * + + +class PyHfTransfer(PythonPackage): + """Speed up file transfers with the Hugging Face Hub.""" + + homepage = "https://github.com/huggingface/hf_transfer" + pypi = "hf_transfer/hf_transfer-0.1.8.tar.gz" + + license("Apache-2.0") + + version("0.1.8", sha256="26d229468152e7a3ec12664cac86b8c2800695fd85f9c9a96677a775cc04f0b3") + + with default_args(type="build"): + depends_on("py-maturin@1.4:1") diff --git a/var/spack/repos/builtin/packages/py-huggingface-hub/package.py b/var/spack/repos/builtin/packages/py-huggingface-hub/package.py index 2de20bed539bba..f73029b429d437 100644 --- a/var/spack/repos/builtin/packages/py-huggingface-hub/package.py +++ b/var/spack/repos/builtin/packages/py-huggingface-hub/package.py @@ -7,15 +7,16 @@ class PyHuggingfaceHub(PythonPackage): - """This library allows anyone to work with the Hub - repositories: you can clone them, create them and upload - your models to them.""" + """Client library to download and publish models, datasets and other repos + on the huggingface.co hub.""" homepage = "https://github.com/huggingface/huggingface_hub" pypi = "huggingface_hub/huggingface_hub-0.0.10.tar.gz" license("Apache-2.0") + maintainers("adamjstewart") + version("0.26.2", sha256="b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b") version("0.24.6", sha256="cc2579e761d070713eaa9c323e3debe39d5b464ae3a7261c39a9195b27bb8000") version("0.23.4", sha256="35d99016433900e44ae7efe1c209164a5a81dbbcd53a52f99c281dcd7ce22431") version("0.19.4", sha256="176a4fc355a851c17550e7619488f383189727eab209534d7cef2114dae77b22") @@ -30,17 +31,34 @@ class PyHuggingfaceHub(PythonPackage): when="@0.10:", description="Install dependencies for CLI-specific features", ) + variant( + "hf_transfer", + default=False, + when="@0.21:", + description="Install hf_transfer to speed up downloads/uploads", + ) + + with default_args(type="build"): + depends_on("py-setuptools") + + with default_args(type=("build", "run")): + depends_on("py-filelock") + depends_on("py-fsspec@2023.5:", when="@0.18:") + depends_on("py-fsspec", when="@0.14:") + depends_on("py-packaging@20.9:", when="@0.10:") + depends_on("py-pyyaml@5.1:", when="@0.10:") + depends_on("py-requests") + depends_on("py-tqdm@4.42.1:", when="@0.12:") + depends_on("py-tqdm") + depends_on("py-typing-extensions@3.7.4.3:", when="@0.10:") + depends_on("py-typing-extensions", when="@0.0.10:") + + with when("+cli"): + depends_on("py-inquirerpy@0.3.4") + + with when("+hf_transfer"): + depends_on("py-hf-transfer@0.1.4:") - depends_on("py-setuptools", type="build") - depends_on("py-filelock", type=("build", "run")) - depends_on("py-fsspec@2023.5:", when="@0.18:", type=("build", "run")) - depends_on("py-fsspec", when="@0.14:", type=("build", "run")) - depends_on("py-packaging@20.9:", when="@0.10:", type=("build", "run")) - depends_on("py-pyyaml@5.1:", when="@0.10:", type=("build", "run")) - depends_on("py-requests", type=("build", "run")) - depends_on("py-tqdm@4.42.1:", when="@0.12:", type=("build", "run")) - depends_on("py-tqdm", type=("build", "run")) - depends_on("py-typing-extensions@3.7.4.3:", when="@0.10:", type=("build", "run")) - depends_on("py-typing-extensions", when="@0.0.10:", type=("build", "run")) - - depends_on("py-inquirerpy@0.3.4", when="@0.14:+cli", type=("build", "run")) + def setup_run_environment(self, env): + if "+hf_transfer" in self.spec: + env.set("HF_HUB_ENABLE_HF_TRANSFER", 1) From 3bcb8a92360612fa39104d91361749dad76bfff1 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:12:55 -0500 Subject: [PATCH 509/615] rocm-dbgapi: add pciutils dependency (#47605) * add pciutils dependency * add maintainer --- var/spack/repos/builtin/packages/rocm-dbgapi/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py index a1b1dfa21bc21d..2887b61fc751a2 100644 --- a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py @@ -19,7 +19,7 @@ class RocmDbgapi(CMakePackage): url = "https://github.com/ROCm/ROCdbgapi/archive/rocm-6.1.2.tar.gz" tags = ["rocm"] - maintainers("srekolam", "renjithravindrankannath") + maintainers("srekolam", "renjithravindrankannath", "afzpatel") libraries = ["librocm-dbgapi"] license("MIT") @@ -53,6 +53,7 @@ class RocmDbgapi(CMakePackage): depends_on("cxx", type="build") # generated depends_on("cmake@3:", type="build") depends_on("hwdata", when="@5.5.0:") + depends_on("pciutils", when="@5.5.0:") for ver in [ "5.3.0", @@ -123,4 +124,6 @@ def cmake_args(self): args = [] if self.spec.satisfies("@5.3.0:"): args.append(self.define("CMAKE_INSTALL_LIBDIR", "lib")) + if self.spec.satisfies("@5.5.0:"): + args.append(self.define("PCI_IDS_PATH", self.spec["pciutils"].prefix.share)) return args From 8fb2abc3cde8b5cfc7c3cc08c0f469c670ff32dd Mon Sep 17 00:00:00 2001 From: Louise Spellacy <126875132+louspe-linaro@users.noreply.github.com> Date: Mon, 18 Nov 2024 20:16:12 +0000 Subject: [PATCH 510/615] linaro-forge: added version 24.1 (#47594) --- var/spack/repos/builtin/packages/linaro-forge/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/linaro-forge/package.py b/var/spack/repos/builtin/packages/linaro-forge/package.py index d1f862a5b86a37..8480310eb6d47f 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -23,6 +23,7 @@ class LinaroForge(Package): maintainers("kenche-linaro") if platform.machine() == "aarch64": + version("24.1", sha256="e297d0c19c95d4db842187eb38882db094094ec667d854aaf396e11a81bffe0b") version( "24.0.6", sha256="a7f9f71e4352be3680854611fe433a9974fcb8a327ac65ca3bc950c956eac6e4" ) @@ -100,6 +101,7 @@ class LinaroForge(Package): "21.1.3", sha256="eecbc5686d60994c5468b2d7cd37bebe5d9ac0ba37bd1f98fbfc69b071db541e" ) elif platform.machine() == "x86_64": + version("24.1", sha256="0b96878ab73c20b39c4730ed15f24ca86dc5985637ff5d8e68f55e1e802e5fe3") version( "24.0.6", sha256="eab198b964862b4664359ccbec1edb27c2dd3b9fa82bcb4e14fc616a2b0341da" ) From 118f5d26838acb4affc1a3ddbe84c9118722ec40 Mon Sep 17 00:00:00 2001 From: Ken Raffenetti Date: Mon, 18 Nov 2024 14:20:10 -0600 Subject: [PATCH 511/615] mpich: Remove incorrect dependency (#47586) The gni libfabric provider works on some Cray systems, but not all. For example, Slingshot-based machines use a different libfabric provider (cxi). Therefore libfabric/gni should not be a dependency when using Cray PMI. --- var/spack/repos/builtin/packages/mpich/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index b93fae3ddd398f..f97ce4f545173f 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -262,7 +262,6 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage): depends_on("hwloc@2.0.0:", when="@3.3: +hwloc") depends_on("libfabric", when="netmod=ofi") - depends_on("libfabric fabrics=gni", when="netmod=ofi pmi=cray") # The ch3 ofi netmod results in crashes with libfabric 1.7 # See https://github.com/pmodels/mpich/issues/3665 depends_on("libfabric@:1.6", when="device=ch3 netmod=ofi") From f07173e5ee4dfb8e12fe21328971d9ace6c830f5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 18 Nov 2024 21:22:57 +0100 Subject: [PATCH 512/615] py-torchmetrics: add v1.6.0 (#47580) --- .../builtin/packages/py-torchmetrics/package.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-torchmetrics/package.py b/var/spack/repos/builtin/packages/py-torchmetrics/package.py index f3cf233cbfa769..5dbcabad2e039e 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -15,6 +15,7 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.6.0", sha256="aebba248708fb90def20cccba6f55bddd134a58de43fb22b0c5ca0f3a89fa984") version("1.5.2", sha256="2d0e4957af0ea76438d2779fe1a626d8cba6cda8607eadb54267598153e7ea63") version("1.5.1", sha256="9701632cf811bc460abf07bd7b971b79c1ae9c8231e03d495b53a0975e43fe07") version("1.5.0", sha256="c18e68bab4104ad7d2285af601ddc6dc04f9f3b7cafaa8ad13fa1dcc539e33b6") @@ -64,6 +65,7 @@ class PyTorchmetrics(PythonPackage): depends_on("py-numpy", when="@0.3:") depends_on("py-packaging@17.2:", when="@1.2.1:") depends_on("py-packaging", when="@0.3:1.1.0") + depends_on("py-torch@2:", when="@1.6:") depends_on("py-torch@1.10:", when="@1.3:") depends_on("py-torch@1.8.1:", when="@0.11:") depends_on("py-torch@1.3.1:") @@ -71,12 +73,15 @@ class PyTorchmetrics(PythonPackage): depends_on("py-lightning-utilities@0.8:", when="@1.1:") depends_on("py-lightning-utilities@0.7:", when="@1:") - depends_on("py-scipy@1.0.1:", when="+image") - depends_on("py-torchvision@0.8:", when="+image") - depends_on("py-torch-fidelity", when="+image") + with when("+image"): + depends_on("py-scipy@1.0.1:") + depends_on("py-torchvision@0.15.1:", when="@1.6:") + depends_on("py-torchvision@0.8:") + depends_on("py-torch-fidelity") # Historical dependencies depends_on("py-pretty-errors@1.2.25", when="@1.4.0") depends_on("py-pydeprecate@0.3", when="@0.7:0.8") - depends_on("py-lpips", when="@:1.2.0+image") + with when("+image"): + depends_on("py-lpips", when="@:1.2.0") From 8e33cc158b8378686e59c2dd6cc8c89b1818456c Mon Sep 17 00:00:00 2001 From: jmuddnv <143751186+jmuddnv@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:24:31 -0800 Subject: [PATCH 513/615] Changes for NVIDIA HPC SDK 24.11 (#47592) --- var/spack/repos/builtin/packages/nvhpc/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/nvhpc/package.py b/var/spack/repos/builtin/packages/nvhpc/package.py index ce918e96965c7c..4f03fe96af899c 100644 --- a/var/spack/repos/builtin/packages/nvhpc/package.py +++ b/var/spack/repos/builtin/packages/nvhpc/package.py @@ -21,6 +21,16 @@ # - package key must be in the form '{os}-{arch}' where 'os' is in the # format returned by platform.system() and 'arch' by platform.machine() _versions = { + "24.11": { + "Linux-aarch64": ( + "f2f64e5dec5e90dad5e12a31a992172b0aa19abf872ef1c54a1a437c7008eefb", + "https://developer.download.nvidia.com/hpc-sdk/24.11/nvhpc_2024_2411_Linux_aarch64_cuda_multi.tar.gz", + ), + "Linux-x86_64": ( + "0c27d66ed0e2d3007d30ac904922a9abf96475197dc0f4dcc6316d235a1dc0c3", + "https://developer.download.nvidia.com/hpc-sdk/24.11/nvhpc_2024_2411_Linux_x86_64_cuda_multi.tar.gz", + ), + }, "24.9": { "Linux-aarch64": ( "8d900f798ef806c64993fd4fedf2c2c812dd1ccdbac2a0d33fabcd0cd36f19cf", From c47cafd11a6dfc543265ead04ef68f8429685191 Mon Sep 17 00:00:00 2001 From: Vicente Bolea Date: Mon, 18 Nov 2024 15:26:45 -0500 Subject: [PATCH 514/615] diy: apply smoke_test patch in 3.6 only (#47572) --- var/spack/repos/builtin/packages/diy/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/diy/package.py b/var/spack/repos/builtin/packages/diy/package.py index 3c8b272c73cfa0..f0b70a90de7738 100644 --- a/var/spack/repos/builtin/packages/diy/package.py +++ b/var/spack/repos/builtin/packages/diy/package.py @@ -28,8 +28,8 @@ class Diy(CMakePackage): # https://gitlab.kitware.com/diatomic/diy/-/merge_requests/82 patch( "https://gitlab.kitware.com/diatomic/diy/-/commit/1d85dd5205b9f0035840e1840a49ea7028618d16.diff", - sha256="047bed205c905064923d7ecf1d03e38c07f3ae0baa0f4afe1b234f68315472d3", - when="@3.6:", + sha256="8d9ae569c4bf87e450a4d96b9a33c5d226011568ee83537a8cb0d46810839169", + when="@3.6", ) def cmake_args(self): From 85c5533e62659cad03c8c366b62d73b562fc638d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lacroix?= Date: Mon, 18 Nov 2024 21:31:20 +0100 Subject: [PATCH 515/615] hpctoolkit: Update the minimum version for Python dependency (#47564) New versions of HPCToolKit supports Python from version 3.8. --- var/spack/repos/builtin/packages/hpctoolkit/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 33d0768e3d96b7..34900192a0ab9e 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -199,7 +199,8 @@ class Hpctoolkit(AutotoolsPackage, MesonPackage): depends_on("mpi", when="+mpi") depends_on("hpcviewer@2022.10:", type="run", when="@2022.10: +viewer") depends_on("hpcviewer", type="run", when="+viewer") - depends_on("python@3.10:", type=("build", "run"), when="+python") + depends_on("python@3.10:", type=("build", "run"), when="@:2023.08 +python") + depends_on("python@3.8:", type=("build", "run"), when="@2024.01: +python") with when("target=x86_64:"): depends_on("intel-xed+pic") From 46e4c1fd30c1af8745e70d29fa04f6584dc31a47 Mon Sep 17 00:00:00 2001 From: Thomas-Ulrich Date: Mon, 18 Nov 2024 21:34:59 +0100 Subject: [PATCH 516/615] seissol: add versions, conflict (#47562) * add a couple of seissol version --- var/spack/repos/builtin/packages/seissol/package.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/var/spack/repos/builtin/packages/seissol/package.py b/var/spack/repos/builtin/packages/seissol/package.py index 1cd4f787fcf82a..50944306f25a14 100644 --- a/var/spack/repos/builtin/packages/seissol/package.py +++ b/var/spack/repos/builtin/packages/seissol/package.py @@ -16,6 +16,9 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/SeisSol/SeisSol.git" version("master", branch="master", submodules=True) # we cannot use the tar.gz file because it does not contains submodules + version( + "1.3.0", tag="v1.3.0", commit="91377508af4412914d707b04481f8b678b1c4044", submodules=True + ) version( "1.2.0", tag="v1.2.0", commit="2057e6e81965e0789128c6d177592800bcf956e1", submodules=True ) @@ -29,6 +32,10 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): "1.1.2", tag="v1.1.2", commit="71002c1c1498ebd6f50a954731da68fa4f9d436b", submodules=True ) + version( + "1.0.1", tag="v1.0.1", commit="9b1b0ec970af4ad79a155c63035234b660838476", submodules=True + ) + maintainers("Thomas-Ulrich", "davschneller", "vikaskurapati") variant("asagi", default=True, description="Use ASAGI for material input") @@ -145,6 +152,12 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): msg="A value for intel_gpu_arch must be specified. Add intel_gpu_arch=XX", ) + conflicts( + "%intel", + when="@1.3:", + msg="The Intel compiler is unsupported from v1.3 onward. Please use e.g.gcc or oneapi", + ) + variant( "gemm_tools_list", default="LIBXSMM,PSpaMM", From 7f76490b316cc3a486422c2e591710a2675f31cf Mon Sep 17 00:00:00 2001 From: Niclas Jansson Date: Mon, 18 Nov 2024 21:38:08 +0100 Subject: [PATCH 517/615] neko: add v0.8.1, v0.9.0 and fix package (#47558) --- .../repos/builtin/packages/neko/package.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/var/spack/repos/builtin/packages/neko/package.py b/var/spack/repos/builtin/packages/neko/package.py index 7b83d6b83dc350..d7a9caa69d6195 100644 --- a/var/spack/repos/builtin/packages/neko/package.py +++ b/var/spack/repos/builtin/packages/neko/package.py @@ -16,6 +16,8 @@ class Neko(AutotoolsPackage, CudaPackage, ROCmPackage): url = "https://github.com/ExtremeFLOW/neko/releases/download/v0.3.2/neko-0.3.2.tar.gz" maintainers("njansson") + version("0.9.0", sha256="3cffe629ada1631d8774fa51d8bb14b95dc0cea21578c0e07e70deb611a5091a") + version("0.8.1", sha256="ac8162bc18e7112fd21b49c5a9c36f45c7b84896e90738be36a182990798baec") version("0.8.0", sha256="09d0b253c8abda9f384bf8f03b17b50d774cb0a1f7b72744a8e863acac516a51") version("0.7.2", sha256="5dd17fbae83d0b26dc46fafce4e5444be679cdce9493cef4ff7d504e2f854254") version("0.7.1", sha256="c935c3d93b0975db46448045f97aced6ac2cab31a2b8803047f8086f98dcb981") @@ -37,6 +39,19 @@ class Neko(AutotoolsPackage, CudaPackage, ROCmPackage): variant("xsmm", default=False, description="Build with support for libxsmm") variant("gslib", default=False, when="@0.7.0:", description="Build with support for gslib") variant("hdf5", default=False, when="@develop", description="Build with support for HDF5") + variant("hdf5", default=False, when="@0.9.0:", description="Build with support for HDF5") + variant( + "shared", + default=False, + when="@develop", + description="Builds a shared version of the library", + ) + variant( + "shared", + default=False, + when="@0.9.0:", + description="Builds a shared version of the library", + ) # Requires cuda or rocm enabled MPI variant( @@ -60,6 +75,8 @@ class Neko(AutotoolsPackage, CudaPackage, ROCmPackage): depends_on("json-fortran", when="@0.7.0:") depends_on("gslib", when="+gslib") depends_on("hdf5+fortran+mpi", when="+hdf5") + depends_on("libtool", type="build", when="@develop") + depends_on("libtool", type="build", when="@0.9.0:") def configure_args(self): args = [] @@ -74,6 +91,7 @@ def configure_args(self): rocm_fn = lambda x: self.spec["hip"].prefix args += self.with_or_without("hip", variant="rocm", activation_value=rocm_fn) args += self.enable_or_disable("device-mpi", variant="device-mpi") + args += self.enable_or_disable("shared", variant="shared") if self.spec.satisfies("+cuda"): cuda_arch_list = self.spec.variants["cuda_arch"].value From 2c4ac02adf6d052670a9584db8673cc1094dd400 Mon Sep 17 00:00:00 2001 From: green-br Date: Mon, 18 Nov 2024 20:43:23 +0000 Subject: [PATCH 518/615] Add option to not build GUI for WxWidgets. (#47526) --- var/spack/repos/builtin/packages/wxwidgets/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/wxwidgets/package.py b/var/spack/repos/builtin/packages/wxwidgets/package.py index 6b896039b133bb..232aec767b4ab9 100644 --- a/var/spack/repos/builtin/packages/wxwidgets/package.py +++ b/var/spack/repos/builtin/packages/wxwidgets/package.py @@ -35,11 +35,12 @@ class Wxwidgets(AutotoolsPackage): depends_on("cxx", type="build") # generated variant("opengl", default=False, description="Enable OpenGL support") + variant("gui", default=True, description="Enable GUI support.") patch("math_include.patch", when="@3.0.1:3.0.2") depends_on("pkgconfig", type="build") - depends_on("gtkplus") + depends_on("gtkplus", when="+gui") depends_on("mesa-glu", when="+opengl") @when("@:3.0.2") @@ -52,6 +53,8 @@ def configure_args(self): if self.spec.satisfies("+opengl"): options.append("--with-opengl") + if not self.spec.satisfies("+gui"): + options.append("--disable-gui") # see https://trac.wxwidgets.org/ticket/17639 if spec.satisfies("@:3.1.0") and sys.platform == "darwin": From cf672ea8afe2de31896609357d16517730e3c352 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 14:50:49 -0600 Subject: [PATCH 519/615] py-waitress: add v3.0.1 (#47509) --- var/spack/repos/builtin/packages/py-waitress/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-waitress/package.py b/var/spack/repos/builtin/packages/py-waitress/package.py index 4a8f1034f48fb0..32095e1cc1d2a7 100644 --- a/var/spack/repos/builtin/packages/py-waitress/package.py +++ b/var/spack/repos/builtin/packages/py-waitress/package.py @@ -14,6 +14,11 @@ class PyWaitress(PythonPackage): license("ZPL-2.1") - version("2.1.2", sha256="780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba") + version("3.0.1", sha256="ef0c1f020d9f12a515c4ec65c07920a702613afcad1dbfdc3bcec256b6c072b3") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-49769 + version("2.1.2", sha256="780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba") + + depends_on("python@3.8:", type=("build", "run"), when="@3:") depends_on("py-setuptools@41:", type="build") From 627544191aa7f8944cd883c220beb7efeed44b51 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 14:53:32 -0600 Subject: [PATCH 520/615] py-pymongo: add v4.10.1 (fix CVE) (#47501) * py-pymongo: add v4.10.1 * py-pymongo: fix copyright header spacing * py-hatch-requirements-txt: add v0.4.1 --------- Co-authored-by: wdconinc --- .../py-hatch-requirements-txt/package.py | 1 + .../builtin/packages/py-pymongo/package.py | 29 ++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-hatch-requirements-txt/package.py b/var/spack/repos/builtin/packages/py-hatch-requirements-txt/package.py index e36bb88f623c87..46e85b25d31e17 100644 --- a/var/spack/repos/builtin/packages/py-hatch-requirements-txt/package.py +++ b/var/spack/repos/builtin/packages/py-hatch-requirements-txt/package.py @@ -14,6 +14,7 @@ class PyHatchRequirementsTxt(PythonPackage): license("MIT") + version("0.4.1", sha256="2c686e5758fd05bb55fa7d0c198fdd481f8d3aaa3c693260f5c0d74ce3547d20") version("0.4.0", sha256="800509946e85d9e56d73242fab223ec36db50372e870a04e2dd1fd9bad98455d") depends_on("python@3.6.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pymongo/package.py b/var/spack/repos/builtin/packages/py-pymongo/package.py index 234b6119672d8c..137cd968505435 100644 --- a/var/spack/repos/builtin/packages/py-pymongo/package.py +++ b/var/spack/repos/builtin/packages/py-pymongo/package.py @@ -11,22 +11,31 @@ class PyPymongo(PythonPackage): MongoDB database from Python. The bson package is an implementation of the BSON format for Python. The pymongo package is a native Python driver for MongoDB. The gridfs package is a gridfs - implementation on top of pymongo. - - PyMongo supports MongoDB 2.6, 3.0, 3.2, 3.4, 3.6, 4.0 and 4.2.""" + implementation on top of pymongo.""" pypi = "pymongo/pymongo-3.9.0.tar.gz" - license("Apache-2.0") + license("Apache-2.0", checked_by="wdconinc") - version("4.2.0", sha256="72f338f6aabd37d343bd9d1fdd3de921104d395766bcc5cdc4039e4c2dd97766") - version("3.12.1", sha256="704879b6a54c45ad76cea7c6789c1ae7185050acea7afd15b58318fa1932ed45") - version("3.9.0", sha256="4249c6ba45587b959292a727532826c5032d59171f923f7f823788f413c2a5a3") - version("3.6.0", sha256="c6de26d1e171cdc449745b82f1addbc873d105b8e7335097da991c0fc664a4a8") - version("3.3.0", sha256="3d45302fc2622fabf34356ba274c69df41285bac71bbd229f1587283b851b91e") + version("4.10.1", sha256="a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-5629 + version("4.2.0", sha256="72f338f6aabd37d343bd9d1fdd3de921104d395766bcc5cdc4039e4c2dd97766") + version( + "3.12.1", sha256="704879b6a54c45ad76cea7c6789c1ae7185050acea7afd15b58318fa1932ed45" + ) + version("3.9.0", sha256="4249c6ba45587b959292a727532826c5032d59171f923f7f823788f413c2a5a3") + version("3.6.0", sha256="c6de26d1e171cdc449745b82f1addbc873d105b8e7335097da991c0fc664a4a8") + version("3.3.0", sha256="3d45302fc2622fabf34356ba274c69df41285bac71bbd229f1587283b851b91e") depends_on("c", type="build") # generated depends_on("python@2.7:2.8,3.4:", type=("build", "run")) - depends_on("python@3.7:", when="@4.2.0:", type=("build", "run")) + depends_on("python@3.7:", when="@4.2:", type=("build", "run")) + depends_on("python@3.8:", when="@4.8:", type=("build", "run")) depends_on("py-setuptools", type="build") + depends_on("py-setuptools@63:", type="build", when="@4.5:") + depends_on("py-setuptools@65:", type="build", when="@4.8:") + depends_on("py-hatchling@1.24:", type="build", when="@4.8:") + depends_on("py-hatch-requirements-txt@0.4.1:", type="build", when="@4.8:") + depends_on("py-dnspython@1.16.0:2", type="build", when="@4.3:") From 8feb506b3a8d78d6b9f4df3f473955c10d0b5e71 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 18 Nov 2024 22:31:53 +0100 Subject: [PATCH 521/615] geomodel: Fix dependencies (#47437) * geomodel: Add dependency on `hdf5` for `+pythia`, require `hdf5+cxx` * fix visualization dependencies * geomodel: Add soqt dependency * update dependency on soqt to drop explicit qt variant --- var/spack/repos/builtin/packages/geomodel/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/geomodel/package.py b/var/spack/repos/builtin/packages/geomodel/package.py index 68d561a015a373..9dd1b99a91092a 100644 --- a/var/spack/repos/builtin/packages/geomodel/package.py +++ b/var/spack/repos/builtin/packages/geomodel/package.py @@ -73,11 +73,14 @@ class Geomodel(CMakePackage): depends_on("geant4", when="+geomodelg4") depends_on("geant4", when="+fullsimlight") + depends_on("hdf5+cxx", when="+fullsimlight") depends_on("hepmc3", when="+hepmc3") depends_on("pythia8", when="+pythia") with when("+visualization"): - depends_on("hdf5") - depends_on("qt-base +gui +opengl +sql +widgets") + depends_on("hdf5+cxx") + depends_on("qt +gui +opengl +sql") + depends_on("coin3d") + depends_on("soqt") depends_on("opengl") def cmake_args(self): From 43c1a5e0ecbe25384ac0ddbfa0812499286ea636 Mon Sep 17 00:00:00 2001 From: alvaro-sch <49589619+alvaro-sch@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:34:38 -0300 Subject: [PATCH 522/615] orca: add v6.0.1, avx2-6.0.1 (#47489) * orca: add 6.0.1 versions * orca: checksum fix for avx2-6.0.1 * orca: fix version string for avx2-6.0.1 * orca: checksum fix for 6.0.1 --- var/spack/repos/builtin/packages/orca/package.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/orca/package.py b/var/spack/repos/builtin/packages/orca/package.py index 00021a970d73b1..80e3463703a2f4 100644 --- a/var/spack/repos/builtin/packages/orca/package.py +++ b/var/spack/repos/builtin/packages/orca/package.py @@ -23,6 +23,10 @@ class Orca(Package): license("LGPL-2.1-or-later") + version( + "avx2-6.0.1", sha256="f31f98256a0c6727b6ddfe50aa3ac64c45549981138d670a57e90114b4b9c9d2" + ) + version("6.0.1", sha256="5e9b49588375e0ce5bc32767127cc725f5425917804042cdecdfd5c6b965ef61") version( "avx2-6.0.0", sha256="02c21294efe7b1b721e26cb90f98ee15ad682d02807201b7d217dfe67905a2fd" ) @@ -43,7 +47,9 @@ class Orca(Package): "5.0.3": "4.1.2", "5.0.4": "4.1.2", "6.0.0": "4.1.6", + "6.0.1": "4.1.6", "avx2-6.0.0": "4.1.6", + "avx2-6.0.1": "4.1.6", } for orca_version, openmpi_version in openmpi_versions.items(): depends_on( @@ -54,11 +60,17 @@ def url_for_version(self, version): openmpi_version = self.openmpi_versions[version.string].replace(".", "") if openmpi_version == "412": openmpi_version = "411" + ver_parts = version.string.split("-") ver_underscored = ver_parts[-1].replace(".", "_") features = ver_parts[:-1] + ["shared"] feature_text = "_".join(features) - return f"file://{os.getcwd()}/orca_{ver_underscored}_linux_x86-64_{feature_text}_openmpi{openmpi_version}.tar.xz" + + url = f"file://{os.getcwd()}/orca_{ver_underscored}_linux_x86-64_{feature_text}_openmpi{openmpi_version}.tar.xz" + if self.spec.satisfies("@=avx2-6.0.1"): + url = f"file://{os.getcwd()}/orca_{ver_underscored}_linux_x86-64_shared_openmpi{openmpi_version}_avx2.tar.xz" + + return url def install(self, spec, prefix): mkdirp(prefix.bin) From 278326b4d942ac73e74511a214df82f9cf564b40 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 18 Nov 2024 14:53:38 -0700 Subject: [PATCH 523/615] Add py-phdf@0.11.4 and add conflict for py-pyhdf@0.10.4 with numpy@1.25: (#47656) --- var/spack/repos/builtin/packages/py-pyhdf/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pyhdf/package.py b/var/spack/repos/builtin/packages/py-pyhdf/package.py index e1059e20971e20..c7631f64c8c32e 100644 --- a/var/spack/repos/builtin/packages/py-pyhdf/package.py +++ b/var/spack/repos/builtin/packages/py-pyhdf/package.py @@ -20,6 +20,7 @@ class PyPyhdf(PythonPackage): license("MIT") version("master", branch="master") + version("0.11.4", sha256="f4d48ee6f297be76e07b1a31710ef898caa31757dfdf173e5a4b94988ea76164") version("0.10.4", sha256="ea09b2bdafc9be0f7f43d72ff122d8efbde61881f4da3a659b33be5e29215f93") depends_on("c", type="build") # generated @@ -31,6 +32,8 @@ class PyPyhdf(PythonPackage): depends_on("zlib-api", type=("build", "run")) depends_on("hdf@4.2", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) + # https://github.com/fhs/pyhdf/issues/63 + depends_on("py-numpy@:1.24", when="@0.10.4", type=("build", "run")) depends_on("jpeg", type=("build", "run")) def setup_build_environment(self, env): From 89d2b9553de79f6a8a03e2730ee04d4b63ca7144 Mon Sep 17 00:00:00 2001 From: snehring <7978778+snehring@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:01:59 -0500 Subject: [PATCH 524/615] tb-lmto: new package (#47482) * tb-lmto: adding new package tb-lmto * tb-lmto: update copyright year --- .../repos/builtin/packages/tb-lmto/package.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tb-lmto/package.py diff --git a/var/spack/repos/builtin/packages/tb-lmto/package.py b/var/spack/repos/builtin/packages/tb-lmto/package.py new file mode 100644 index 00000000000000..57612427e942d3 --- /dev/null +++ b/var/spack/repos/builtin/packages/tb-lmto/package.py @@ -0,0 +1,66 @@ +# 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 + +from spack.package import * + + +class TbLmto(MakefilePackage): + """ + The STUTTGART TB-LMTO program. The linear muffin-tin orbital (LMTO) method has been described in numerous publications. + Use of this software is subject to the license at + https://www2.fkf.mpg.de/andersen/LMTODOC/node180.html#SECTION000130000000000000000 + """ + + homepage = "https://www2.fkf.mpg.de/andersen/LMTODOC/LMTODOC.html" + manual_download = True + + maintainers("snehring") + + version( + "20240601-47.1d", sha256="5b24f2917cef85fe49d3a4ff6403294a44a9cf7c003234a0fd96d626c316bda0" + ) + version( + "20240601-47c2.1d", + sha256="c80ef9b4aa725ad75ae07b0215671b3674a8f5dced9e87202dd0d486ffe1cb10", + ) + version( + "20240601-47u.1d", + sha256="bbcc1c57005f33749f8ee6d33be3490071704bce11214544cc4f9c13c28a126e", + ) + + depends_on("c", type="build") + depends_on("fortran", type="build") + depends_on("gnuplot", type="run") + + parallel = False + + @property + def build_targets(self): + # something about the spack wrapper breaks this, it's extremely weird + return [ + f"CC={self.compiler.cc}", + f"FC={self.compiler.fc} -finit-local-zero -fallow-argument-mismatch", + "all", + ] + + def url_for_version(self, version): + return f"file://{os.getcwd()}/lmto{version.string.split('-')[1]}.tar.gz" + + def edit(self, spec, prefix): + makefile = FileFilter("makefile") + makefile.filter("LMPATH = .*", "LMPATH = ./") + makefile.filter("^FFLAGS =.*", "") + makefile.filter("^CCFLAGS =.*", "") + makefile.filter("CC=.*", "") + makefile.filter("FC=.*", "") + + def install(self, spec, prefix): + mkdirp(prefix) + install_tree(".", prefix) + + def setup_run_environment(self, env): + env.prepend_path("PATH", self.prefix) From 63ea528606d0267fd4ebbd449608ee6f5e08f539 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:09:18 -0500 Subject: [PATCH 525/615] mivisionx, migraphx and rocal: add and fix tests (#47453) * fix mivisionx test, add migraphx build-time test and add rocal unit test * fix miopen-hip linking issue * remove setup_run_environment from roctracer-dev * change patch file --- .../builtin/packages/migraphx/package.py | 1 + ...cer-when-building-miopendriver-6.1.0.patch | 34 ++++++++--- ...cer-when-building-miopendriver-6.2.0.patch | 33 ++++++++--- .../builtin/packages/miopen-hip/package.py | 5 +- ...dd-half-include-path-for-tests-6.2.0.patch | 52 ++++++++++++++++ .../builtin/packages/mivisionx/package.py | 57 +++++------------- .../repos/builtin/packages/rocal/package.py | 59 +++++++++++++++++++ 7 files changed, 179 insertions(+), 62 deletions(-) create mode 100644 var/spack/repos/builtin/packages/mivisionx/0002-add-half-include-path-for-tests-6.2.0.patch diff --git a/var/spack/repos/builtin/packages/migraphx/package.py b/var/spack/repos/builtin/packages/migraphx/package.py index f282fc5293b52d..dfe5d462b9bc1c 100644 --- a/var/spack/repos/builtin/packages/migraphx/package.py +++ b/var/spack/repos/builtin/packages/migraphx/package.py @@ -159,6 +159,7 @@ def cmake_args(self): "CMAKE_CXX_FLAGS", "-fsanitize=address -shared-libasan -I{0}".format(abspath) ) ) + args.append(self.define("BUILD_TESTING", self.run_tests)) return args def test_unit_tests(self): diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch index c12450b45164bb..e72924fd566e61 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch @@ -1,26 +1,42 @@ -From bbfc08e034b80d8b8c6895cb74c38544ffa9a9b4 Mon Sep 17 00:00:00 2001 -From: sreenivasa murthy kolam -Date: Thu, 24 Oct 2024 14:01:27 +0000 +From ea1ff66e448c977da9c5cff74e201850d6b9b04c Mon Sep 17 00:00:00 2001 +From: Afzal Patel +Date: Thu, 7 Nov 2024 22:08:17 +0000 Subject: [PATCH] link with roctracer when building miopendriver for 6.1.0 --- - driver/CMakeLists.txt | 3 +++ - 1 file changed, 3 insertions(+) + driver/CMakeLists.txt | 4 ++++ + src/CMakeLists.txt | 3 ++- + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt -index 7d4fdbb..31de1ba 100644 +index 7d4fdbb..9e5ede5 100644 --- a/driver/CMakeLists.txt +++ b/driver/CMakeLists.txt -@@ -34,6 +34,9 @@ endif() +@@ -34,6 +34,10 @@ endif() add_dependencies(MIOpenDriver generate_kernels) target_include_directories(MIOpenDriver PRIVATE ../src/kernels) target_link_libraries(MIOpenDriver MIOpen Threads::Threads) +if(MIOPEN_USE_ROCTRACER) ++ target_include_directories(MIOpenDriver PRIVATE ${ROCTRACER_INCLUDE_DIR}) + target_link_libraries(MIOpenDriver ${rocTracer}) +endif() if(NOT MIOPEN_EMBED_DB STREQUAL "") target_link_libraries(MIOpenDriver $ ) endif() --- -2.39.3 +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 0741a60..47573d4 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -861,7 +861,8 @@ if(NOT WIN32 AND NOT APPLE) + endif() + + if(MIOPEN_USE_ROCTRACER) +- target_link_libraries(MIOpen PRIVATE roctx64) ++ target_include_directories(MIOpen PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(MIOpen PRIVATE ${rocTracer}) + endif() + + ############################################################ +-- +2.43.5 diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch index fd8a3bb88c4abe..2c2c7feda5397d 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch @@ -1,26 +1,41 @@ -From 5565f0bf0a8e7b8217ed1a943a4210fec303ec42 Mon Sep 17 00:00:00 2001 -From: sreenivasa murthy kolam -Date: Thu, 24 Oct 2024 13:55:01 +0000 +From 3cb81598fd66aab0fa5b0c6aac654a91ed90e872 Mon Sep 17 00:00:00 2001 +From: Afzal Patel +Date: Thu, 7 Nov 2024 21:42:15 +0000 Subject: [PATCH] link with roctracer when building miopendriver --- - driver/CMakeLists.txt | 3 +++ - 1 file changed, 3 insertions(+) + driver/CMakeLists.txt | 4 ++++ + src/CMakeLists.txt | 3 ++- + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt -index 8f19a90..6c701d6 100644 +index 8f19a90..6d32b83 100644 --- a/driver/CMakeLists.txt +++ b/driver/CMakeLists.txt -@@ -64,6 +64,9 @@ endif() +@@ -64,6 +64,10 @@ endif() add_dependencies(MIOpenDriver generate_kernels) target_include_directories(MIOpenDriver PRIVATE ../src/kernels) target_link_libraries(MIOpenDriver MIOpen Threads::Threads roc::rocrand) +if(MIOPEN_USE_ROCTRACER) ++ target_include_directories(MIOpenDriver PRIVATE ${ROCTRACER_INCLUDE_DIR}) + target_link_libraries(MIOpenDriver ${rocTracer}) +endif() if(NOT MIOPEN_EMBED_DB STREQUAL "") target_link_libraries(MIOpenDriver $ ) endif() --- -2.39.3 +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 66ac75f..69da1b9 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -917,7 +917,8 @@ if(NOT WIN32 AND NOT APPLE) + endif() + + if(MIOPEN_USE_ROCTRACER) +- target_link_libraries(MIOpen PRIVATE roctx64) ++ target_include_directories(MIOpen PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(MIOpen PRIVATE ${rocTracer}) + endif() + ############################################################ +-- +2.43.5 diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index c9544379f46dae..f58acb04ddf4d0 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -208,12 +208,13 @@ def cmake_args(self): args.append("-DROCTRACER_LIB_DIR={0}".format(self.spec["roctracer-dev"].prefix.lib)) args.append("-DSQLITE_INCLUDE_DIR={0}".format(self.spec["sqlite"].prefix.include)) if self.spec.satisfies("@6.1:"): + args.append( + "-DROCTRACER_INCLUDE_DIR={0}".format(self.spec["roctracer-dev"].prefix.include) + ) args.append(self.define("MIOPEN_USE_ROCTRACER", "ON")) args.append( self.define( "CMAKE_CXX_FLAGS", - f"-I{self.spec['roctracer-dev'].prefix.include} " - f"-L{self.spec['roctracer-dev'].prefix.roctracer.lib} " f"-I{self.spec['nlohmann-json'].prefix.include} " f"-I{self.spec['sqlite'].prefix.include} ", ) diff --git a/var/spack/repos/builtin/packages/mivisionx/0002-add-half-include-path-for-tests-6.2.0.patch b/var/spack/repos/builtin/packages/mivisionx/0002-add-half-include-path-for-tests-6.2.0.patch new file mode 100644 index 00000000000000..b45580ef0eaadd --- /dev/null +++ b/var/spack/repos/builtin/packages/mivisionx/0002-add-half-include-path-for-tests-6.2.0.patch @@ -0,0 +1,52 @@ +From 19f084566394c6556cacf1b812a9a64e1fe0610e Mon Sep 17 00:00:00 2001 +From: Renjith Ravindran +Date: Wed, 12 Jun 2024 23:33:53 +0000 +Subject: [PATCH] add half include path for tests in 6.1 + +--- + model_compiler/python/nnir_to_clib.py | 4 ++++ + samples/mv_objdetect/CMakeLists.txt | 6 +++++- + utilities/rocAL/rocAL_unittests/CMakeLists.txt | 3 ++- + utilities/rocAL/rocAL_video_unittests/CMakeLists.txt | 3 ++- + 4 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/model_compiler/python/nnir_to_clib.py b/model_compiler/python/nnir_to_clib.py +index 623bf43..544ed31 100644 +--- a/model_compiler/python/nnir_to_clib.py ++++ b/model_compiler/python/nnir_to_clib.py +@@ -160,6 +160,10 @@ if (OPENVX_BACKEND_OPENCL_FOUND) + include_directories (${OpenCL_INCLUDE_DIRS} ${OpenCL_INCLUDE_DIRS}/Headers ) + endif() + ++find_path(HALF_INCLUDE_DIR half.hpp) ++message(STATUS "HALF_INCLUDE_DIR: ${HALF_INCLUDE_DIR}") ++include_directories(${HALF_INCLUDE_DIR}) ++ + find_package(OpenCV QUIET) + include_directories (${ROCM_PATH}/include ${ROCM_PATH}/include/mivisionx) + include_directories (${PROJECT_SOURCE_DIR}/lib) +diff --git a/samples/mv_objdetect/CMakeLists.txt b/samples/mv_objdetect/CMakeLists.txt +index 54d527b..c334ae4 100644 +--- a/samples/mv_objdetect/CMakeLists.txt ++++ b/samples/mv_objdetect/CMakeLists.txt +@@ -29,6 +29,7 @@ project (mvobjdetect) + set (CMAKE_CXX_STANDARD 14) + + list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) ++find_path(HALF_INCLUDE_DIR half.hpp) + find_package(OpenCV QUIET) + + set(ROCM_PATH /opt/rocm CACHE PATH "ROCm Installation Path") +@@ -50,7 +51,10 @@ if (OPENVX_BACKEND_OPENCL_FOUND) + include_directories (${OpenCL_INCLUDE_DIRS} ${OpenCL_INCLUDE_DIRS}/Headers ) + endif() + +-include_directories (${ROCM_PATH}/include ${ROCM_PATH}/include/mivisionx ${PROJECT_SOURCE_DIR} ) ++find_path(HALF_INCLUDE_DIR half.hpp) ++message(STATUS "HALF_INCLUDE_DIR: ${HALF_INCLUDE_DIR}") ++ ++include_directories (${ROCM_PATH}/include/mivisionx ${PROJECT_SOURCE_DIR} ${HALF_INCLUDE_DIR} ) + link_directories (${ROCM_PATH}/lib ${PROJECT_SOURCE_DIR}/lib) + option (USE_POSTPROC "Use postprocessing module implementation" ON) + set(SOURCES mvobjdetect.cpp mvdeploy_api.cpp visualize.cpp) +2.27.0 diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index 332d9d4ca97d4b..a69f886f532213 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -64,7 +64,8 @@ def url_for_version(self, version): patch("0001-add-half-include-path.patch", when="@5.5") patch("0001-add-half-include-path-5.6.patch", when="@5.6:6.1") patch("0002-add-half-include-path-for-tests.patch", when="@5.5:6.0 +add_tests") - patch("0002-add-half-include-path-for-tests-6.1.0.patch", when="@6.1.0: +add_tests") + patch("0002-add-half-include-path-for-tests-6.1.0.patch", when="@6.1 +add_tests") + patch("0002-add-half-include-path-for-tests-6.2.0.patch", when="@6.2.0: +add_tests") patch( "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/commit/da24882438b91a0ae1feee23206b75c1a1256887.patch?full_index=1", @@ -95,11 +96,6 @@ def patch(self): r"${ROCM_PATH}/llvm/bin/clang++", "{0}/bin/clang++".format(self.spec["llvm-amdgpu"].prefix), "amd_openvx/openvx/hipvx/CMakeLists.txt", - string=True, - ) - filter_file( - r"${ROCM_PATH}/llvm/bin/clang++", - "{0}/bin/clang++".format(self.spec["llvm-amdgpu"].prefix), "amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt", string=True, ) @@ -137,67 +133,43 @@ def patch(self): string=True, ) - if self.spec.satisfies("+add_tests"): + if self.spec.satisfies("@:6.1 +add_tests"): filter_file( - r"${ROCM_PATH}/include/mivisionx", - "{0}/include/mivisionx".format(self.spec.prefix), - "tests/amd_migraphx_tests/mnist/CMakeLists.txt", + r"${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR}/mivisionx/rocal", + "{0}/include/mivisionx/rocal".format(self.spec.prefix), + "utilities/rocAL/rocAL_unittests/CMakeLists.txt", + "utilities/rocAL/rocAL_video_unittests/CMakeLists.txt", string=True, ) filter_file( r"${ROCM_PATH}/lib", "{0}/lib".format(self.spec.prefix), - "tests/amd_migraphx_tests/mnist/CMakeLists.txt", + "utilities/rocAL/rocAL_unittests/CMakeLists.txt", + "utilities/rocAL/rocAL_video_unittests/CMakeLists.txt", string=True, ) + if self.spec.satisfies("+add_tests"): filter_file( r"${ROCM_PATH}/include/mivisionx", "{0}/include/mivisionx".format(self.spec.prefix), + "tests/amd_migraphx_tests/mnist/CMakeLists.txt", "tests/amd_migraphx_tests/resnet50/CMakeLists.txt", + "model_compiler/python/nnir_to_clib.py", string=True, ) filter_file( r"${ROCM_PATH}/lib", "{0}/lib".format(self.spec.prefix), + "tests/amd_migraphx_tests/mnist/CMakeLists.txt", "tests/amd_migraphx_tests/resnet50/CMakeLists.txt", string=True, ) - filter_file( - r"${ROCM_PATH}/include/mivisionx", - "{0}/include/mivisionx".format(self.spec.prefix), - "model_compiler/python/nnir_to_clib.py", - string=True, - ) filter_file( r"/opt/rocm", "{0}".format(self.spec.prefix), "model_compiler/python/nnir_to_clib.py", string=True, ) - filter_file( - r"${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR}/mivisionx/rocal", - "{0}/include/mivisionx/rocal".format(self.spec.prefix), - "utilities/rocAL/rocAL_unittests/CMakeLists.txt", - string=True, - ) - filter_file( - r"${ROCM_PATH}/lib", - "{0}/lib".format(self.spec.prefix), - "utilities/rocAL/rocAL_unittests/CMakeLists.txt", - string=True, - ) - filter_file( - r"${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR}/mivisionx/rocal", - "{0}/include/mivisionx/rocal".format(self.spec.prefix), - "utilities/rocAL/rocAL_video_unittests/CMakeLists.txt", - string=True, - ) - filter_file( - r"${ROCM_PATH}/lib", - "{0}/lib".format(self.spec.prefix), - "utilities/rocAL/rocAL_video_unittests/CMakeLists.txt", - string=True, - ) depends_on("cmake@3.5:", type="build") depends_on("ffmpeg@:4", type="build", when="@:5.3") @@ -337,12 +309,13 @@ def cmake_args(self): args.append( self.define("AMDRPP_INCLUDE_DIRS", "{0}/include/rpp".format(spec["rpp"].prefix)) ) + args.append(self.define("CMAKE_INSTALL_PREFIX_PYTHON", spec.prefix)) + if self.spec.satisfies("@5.5:6.2.0"): args.append( self.define( "TurboJpeg_LIBRARIES_DIRS", "{0}/lib64".format(spec["libjpeg-turbo"].prefix) ) ) - args.append(self.define("CMAKE_INSTALL_PREFIX_PYTHON", spec.prefix)) return args @run_after("install") diff --git a/var/spack/repos/builtin/packages/rocal/package.py b/var/spack/repos/builtin/packages/rocal/package.py index c9196dd562f61c..30902117ed0747 100644 --- a/var/spack/repos/builtin/packages/rocal/package.py +++ b/var/spack/repos/builtin/packages/rocal/package.py @@ -37,6 +37,56 @@ def patch(self): "rocAL/rocAL_hip/CMakeLists.txt", string=True, ) + filter_file( + r"${ROCM_PATH}/include/rocal", + "{0}/include/rocal".format(self.spec.prefix), + "tests/cpp_api/CMakeLists.txt", + string=True, + ) + filter_file( + r"${ROCM_PATH}/${CMAKE_INSTALL_INCLUDEDIR}/rocal", + "{0}/include/rocal".format(self.spec.prefix), + "tests/cpp_api/audio_tests/CMakeLists.txt", + "tests/cpp_api/image_augmentation/CMakeLists.txt", + "tests/cpp_api/basic_test/CMakeLists.txt", + "tests/cpp_api/performance_tests/CMakeLists.txt", + "tests/cpp_api/dataloader/CMakeLists.txt", + "tests/cpp_api/performance_tests_with_depth/CMakeLists.txt", + "tests/cpp_api/dataloader_multithread/CMakeLists.txt", + "tests/cpp_api/unit_tests/CMakeLists.txt", + "tests/cpp_api/dataloader_tf/CMakeLists.txt", + "tests/cpp_api/video_tests/CMakeLists.txt", + "tests/cpp_api/external_source/CMakeLists.txt", + string=True, + ) + filter_file( + r"${ROCM_PATH}/lib", + "{0}/lib".format(self.spec.prefix), + "tests/cpp_api/audio_tests/CMakeLists.txt", + "tests/cpp_api/image_augmentation/CMakeLists.txt", + "tests/cpp_api/basic_test/CMakeLists.txt", + "tests/cpp_api/performance_tests/CMakeLists.txt", + "tests/cpp_api/dataloader/CMakeLists.txt", + "tests/cpp_api/performance_tests_with_depth/CMakeLists.txt", + "tests/cpp_api/dataloader_multithread/CMakeLists.txt", + "tests/cpp_api/unit_tests/CMakeLists.txt", + "tests/cpp_api/dataloader_tf/CMakeLists.txt", + "tests/cpp_api/video_tests/CMakeLists.txt", + "tests/cpp_api/external_source/CMakeLists.txt", + string=True, + ) + filter_file( + r"${ROCM_PATH}/lib", + "{0}/lib".format(self.spec.prefix), + "tests/cpp_api/CMakeLists.txt", + string=True, + ) + filter_file( + r"${ROCM_PATH}/share/rocal", + "{0}/share/rocal".format(self.spec.prefix), + "tests/cpp_api/CMakeLists.txt", + string=True, + ) def cmake_args(self): args = [ @@ -46,3 +96,12 @@ def cmake_args(self): self.define("CMAKE_INSTALL_PREFIX_PYTHON", self.spec.prefix), ] return args + + def check(self): + print("test will run after install") + + @run_after("install") + @on_package_attributes(run_tests=True) + def check_install(self): + with working_dir(self.build_directory, create=True): + make("test") From 10f6863d919cc1ae3fba0ad5dfc6dc7fcea7dab4 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:21:42 -0700 Subject: [PATCH 526/615] Automated deployment to update package flux-security 2024-11-05 (#47450) Co-authored-by: github-actions --- var/spack/repos/builtin/packages/flux-security/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/flux-security/package.py b/var/spack/repos/builtin/packages/flux-security/package.py index 6431578476bede..79d253cd5aa287 100644 --- a/var/spack/repos/builtin/packages/flux-security/package.py +++ b/var/spack/repos/builtin/packages/flux-security/package.py @@ -21,6 +21,7 @@ class FluxSecurity(AutotoolsPackage): license("LGPL-3.0-or-later") version("master", branch="master") + version("0.12.0", sha256="2876d1f10c4f898f2ff10d60ddb446af9c8a913dda69f0136d820ad1fdf28a93") version("0.11.0", sha256="d1ef78a871155a252f07e4f0a636eb272d6c2048d5e0e943860dd687c6cf808a") version("0.10.0", sha256="b0f39c5e32322f901454469ffd6154019b6dffafc064b55b3e593f70db6a6f68") version("0.9.0", sha256="2258120c6f32ca0b5b13b166bae56d9bd82a44c6eeaa6bc6187e4a4419bdbcc0") From 2546fb6afac3f97261ba35d9bab7ed7f5d399275 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:23:35 -0700 Subject: [PATCH 527/615] Automated deployment to update package flux-sched 2024-11-05 (#47449) Co-authored-by: github-actions --- var/spack/repos/builtin/packages/flux-sched/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/flux-sched/package.py b/var/spack/repos/builtin/packages/flux-sched/package.py index e9fa209c319894..1b7acc85084663 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -23,6 +23,7 @@ class FluxSched(CMakePackage, AutotoolsPackage): license("LGPL-3.0-only") version("master", branch="master") + version("0.39.0", sha256="7e87029f8ad17b9286096e4e2d44982b5d6634908aefde3282497bdd3f44f2f8") version("0.38.0", sha256="0cb3efbd490256b28df580bb14f8e89c02084a9126e0b1754d6334a99ecfa969") version("0.37.0", sha256="b354d451183fcb8455e6a61d31e18c7f4af13e16a86b71216738f0991a7bcd50") version("0.36.1", sha256="0ee37ed364912f3f5a48ed5b5f5f21cb86cda43ff357486695b9454c217ad8b8") From 50f43ca71dd5e97c3339490962ee956b50ad4eed Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 18 Nov 2024 16:24:20 -0600 Subject: [PATCH 528/615] py-gitpython: add v3.1.43 (fix CVEs) (#47444) * py-gitpython: add v3.1.43 --- .../builtin/packages/py-gitpython/package.py | 95 +++++++++++++------ 1 file changed, 66 insertions(+), 29 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-gitpython/package.py b/var/spack/repos/builtin/packages/py-gitpython/package.py index 6a6e41a8eacd40..7af7dd8a5677d7 100644 --- a/var/spack/repos/builtin/packages/py-gitpython/package.py +++ b/var/spack/repos/builtin/packages/py-gitpython/package.py @@ -14,35 +14,72 @@ class PyGitpython(PythonPackage): license("BSD-3-Clause") - version("3.1.40", sha256="22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4") - version("3.1.34", sha256="85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd") - version("3.1.27", sha256="1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704") - version("3.1.24", sha256="df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5") - version("3.1.23", sha256="aaae7a3bfdf0a6db30dc1f3aeae47b71cd326d86b936fe2e158aa925fdf1471c") - version("3.1.22", sha256="e1589f27c3cd1f33b22db1df194201b5abca6b4cc5450f13f9c371e099c1b24f") - version("3.1.20", sha256="df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519") - version("3.1.19", sha256="18f4039b96b5567bc4745eb851737ce456a2d499cecd71e84f5c0950e92d0e53") - version("3.1.18", sha256="b838a895977b45ab6f0cc926a9045c8d1c44e2b653c1fcc39fe91f42c6e8f05b") - version("3.1.17", sha256="ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e") - version("3.1.16", sha256="2bfcd25e6b81fe431fa3ab1f0975986cfddabf7870a323c183f3afbc9447c0c5") - version("3.1.15", sha256="05af150f47a5cca3f4b0af289b73aef8cf3c4fe2385015b06220cbcdee48bb6e") - version("3.1.14", sha256="be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61") - version("3.1.13", sha256="8621a7e777e276a5ec838b59280ba5272dd144a18169c36c903d8b38b99f750a") - version("3.1.12", sha256="42dbefd8d9e2576c496ed0059f3103dcef7125b9ce16f9d5f9c834aed44a1dac") - version("3.1.11", sha256="befa4d101f91bad1b632df4308ec64555db684c360bd7d2130b4807d49ce86b8") - version("3.1.10", sha256="f488d43600d7299567b59fe41497d313e7c1253a9f2a8ebd2df8af2a1151c71d") - version("3.1.9", sha256="a03f728b49ce9597a6655793207c6ab0da55519368ff5961e4a74ae475b9fa8e") - version("3.1.8", sha256="080bf8e2cf1a2b907634761c2eaefbe83b69930c94c66ad11b65a8252959f912") - version("3.1.7", sha256="2db287d71a284e22e5c2846042d0602465c7434d910406990d5b74df4afb0858") - version("3.1.6", sha256="b54969b3262d4647f80ace8e9dd4e3f99ac30cc0f3e766415b349208f810908f") - version("3.1.5", sha256="90400ecfa87bac36ac75dfa7b62e83a02017b51759f6eef4494e4de775b2b4be") - version("3.1.4", sha256="fa98ce1f05805d59bbc3adb16c0780e5ca43b5ea9422feecf1cd0949a61d947e") - version("3.1.3", sha256="e107af4d873daed64648b4f4beb89f89f0cfbe3ef558fc7821ed2331c2f8da1a") - version("3.1.2", sha256="864a47472548f3ba716ca202e034c1900f197c0fb3a08f641c20c3cafd15ed94") - version("3.1.1", sha256="6d4f10e2aaad1864bb0f17ec06a2c2831534140e5883c350d58b4e85189dab74") - version("3.1.0", sha256="e426c3b587bd58c482f0b7fe6145ff4ac7ae6c82673fc656f489719abca6f4cb") - version("3.0.9", sha256="7e5df21bfef38505115ad92544fb379e6fedb2753f3b709174c4358cecd0cb97") - version("0.3.6", sha256="e6599fcb939cb9b25a015a429702db39de10f2b493655ed5669c49c37707d233") + version("3.1.43", sha256="35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-22190 + version( + "3.1.40", sha256="22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4" + ) + version( + "3.1.34", sha256="85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd" + ) + version( + "3.1.27", sha256="1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704" + ) + version( + "3.1.24", sha256="df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5" + ) + version( + "3.1.23", sha256="aaae7a3bfdf0a6db30dc1f3aeae47b71cd326d86b936fe2e158aa925fdf1471c" + ) + version( + "3.1.22", sha256="e1589f27c3cd1f33b22db1df194201b5abca6b4cc5450f13f9c371e099c1b24f" + ) + version( + "3.1.20", sha256="df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519" + ) + version( + "3.1.19", sha256="18f4039b96b5567bc4745eb851737ce456a2d499cecd71e84f5c0950e92d0e53" + ) + version( + "3.1.18", sha256="b838a895977b45ab6f0cc926a9045c8d1c44e2b653c1fcc39fe91f42c6e8f05b" + ) + version( + "3.1.17", sha256="ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e" + ) + version( + "3.1.16", sha256="2bfcd25e6b81fe431fa3ab1f0975986cfddabf7870a323c183f3afbc9447c0c5" + ) + version( + "3.1.15", sha256="05af150f47a5cca3f4b0af289b73aef8cf3c4fe2385015b06220cbcdee48bb6e" + ) + version( + "3.1.14", sha256="be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" + ) + version( + "3.1.13", sha256="8621a7e777e276a5ec838b59280ba5272dd144a18169c36c903d8b38b99f750a" + ) + version( + "3.1.12", sha256="42dbefd8d9e2576c496ed0059f3103dcef7125b9ce16f9d5f9c834aed44a1dac" + ) + version( + "3.1.11", sha256="befa4d101f91bad1b632df4308ec64555db684c360bd7d2130b4807d49ce86b8" + ) + version( + "3.1.10", sha256="f488d43600d7299567b59fe41497d313e7c1253a9f2a8ebd2df8af2a1151c71d" + ) + version("3.1.9", sha256="a03f728b49ce9597a6655793207c6ab0da55519368ff5961e4a74ae475b9fa8e") + version("3.1.8", sha256="080bf8e2cf1a2b907634761c2eaefbe83b69930c94c66ad11b65a8252959f912") + version("3.1.7", sha256="2db287d71a284e22e5c2846042d0602465c7434d910406990d5b74df4afb0858") + version("3.1.6", sha256="b54969b3262d4647f80ace8e9dd4e3f99ac30cc0f3e766415b349208f810908f") + version("3.1.5", sha256="90400ecfa87bac36ac75dfa7b62e83a02017b51759f6eef4494e4de775b2b4be") + version("3.1.4", sha256="fa98ce1f05805d59bbc3adb16c0780e5ca43b5ea9422feecf1cd0949a61d947e") + version("3.1.3", sha256="e107af4d873daed64648b4f4beb89f89f0cfbe3ef558fc7821ed2331c2f8da1a") + version("3.1.2", sha256="864a47472548f3ba716ca202e034c1900f197c0fb3a08f641c20c3cafd15ed94") + version("3.1.1", sha256="6d4f10e2aaad1864bb0f17ec06a2c2831534140e5883c350d58b4e85189dab74") + version("3.1.0", sha256="e426c3b587bd58c482f0b7fe6145ff4ac7ae6c82673fc656f489719abca6f4cb") + version("3.0.9", sha256="7e5df21bfef38505115ad92544fb379e6fedb2753f3b709174c4358cecd0cb97") + version("0.3.6", sha256="e6599fcb939cb9b25a015a429702db39de10f2b493655ed5669c49c37707d233") depends_on("python@3.4:", type=("build", "run")) depends_on("python@3.5:", type=("build", "run"), when="@3.1.15:") From d0fd112006c037658069a89d80441eaa41f779de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:30:46 -0500 Subject: [PATCH 529/615] grep: add `executables` attribute and `determine_version` method (#47438) --- var/spack/repos/builtin/packages/grep/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/grep/package.py b/var/spack/repos/builtin/packages/grep/package.py index 1ff968569f99f8..a8f2927469f8d8 100644 --- a/var/spack/repos/builtin/packages/grep/package.py +++ b/var/spack/repos/builtin/packages/grep/package.py @@ -2,6 +2,8 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -14,6 +16,8 @@ class Grep(AutotoolsPackage): license("GPL-3.0-or-later") + executables = ["^grep$"] + version("3.11", sha256="1db2aedde89d0dea42b16d9528f894c8d15dae4e190b59aecc78f5a951276eab") version("3.10", sha256="24efa5b595fb5a7100879b51b8868a0bb87a71c183d02c4c602633b88af6855b") version("3.9", sha256="abcd11409ee23d4caf35feb422e53bbac867014cfeed313bb5f488aca170b599") @@ -29,6 +33,14 @@ class Grep(AutotoolsPackage): depends_on("pcre2", when="@3.8:+pcre") depends_on("pcre", when="@:3.7+pcre") + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + # Example output: + # grep (GNU grep) 3.11 + match = re.search(r"^grep \(GNU grep\) ([0-9.]+)", output) + return match.group(1) if match else None + def configure_args(self): args = [] From 8d325d3e3071319a3bbf89bfee08e07b67bb447c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lyd=C3=A9ric=20Debussch=C3=A8re?= Date: Mon, 18 Nov 2024 23:36:16 +0100 Subject: [PATCH 530/615] yambo: add v5.2.3, v5.2.4 (#47350) * packages: Update 'yambo' * add call to 'resource' method to download Ydriver and iotk during fetch instead of during build * air-gapped installation could be performed since version 5.2.1 * add versions 5.2.3 and 5.2.4 * remove some inexistant configure options for versions "@5:" * add a sanity_check on 'bin/yambo' --- .../repos/builtin/packages/yambo/package.py | 113 ++++++++++++++++-- 1 file changed, 102 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/yambo/package.py b/var/spack/repos/builtin/packages/yambo/package.py index f8a24d2d125f22..8ff7e500a57ca8 100644 --- a/var/spack/repos/builtin/packages/yambo/package.py +++ b/var/spack/repos/builtin/packages/yambo/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import shutil + from spack.package import * @@ -20,8 +22,12 @@ class Yambo(AutotoolsPackage): homepage = "https://www.yambo-code.org/index.php" url = "https://github.com/yambo-code/yambo/archive/4.2.2.tar.gz" + maintainers("LydDeb") + license("GPL-2.0-or-later") + version("5.2.4", sha256="7c3f2602389fc29a0d8570c2fe85fe3768d390cfcbb2d371e83e75c6c951d5fc") + version("5.2.3", sha256="a6168d1fa820af857ac51217bd6ad26dda4cc89c07e035bd7dc230038ae1ab9c") version("5.2.1", sha256="0ac362854313927d75bbf87be98ff58447f3805f79724c38dc79df07f03a7046") version("5.1.1", sha256="c85036ca60507e627c47b6c6aee8241830349e88110e1ce9132ef03ab2c4e9f6") version("4.2.2", sha256="86b4ebe679387233266aba49948246c85a32b1e6840d024f162962bd0112448c") @@ -37,13 +43,13 @@ class Yambo(AutotoolsPackage): values=any_combination_of("time", "memory"), description="Activate profiling of specific sections", ) - variant( "io", - values=any_combination_of("iotk", "etsf-io"), + default="iotk", + values=("iotk", "etsf-io"), + multi=True, description="Activate support for different io formats (requires network access)", ) - # MPI + OpenMP parallelism variant("mpi", default=True, description="Enable MPI support") variant("openmp", default=False, description="Enable OpenMP support") @@ -71,18 +77,57 @@ class Yambo(AutotoolsPackage): depends_on("netcdf-fortran") depends_on("libxc@2.0.3:") + depends_on("etsf-io", when="io=etsf-io") + build_targets = ["all"] parallel = False - # The configure in the package has the string 'cat config/report' - # hard-coded, which causes a failure at configure time due to the - # current working directory in Spack. Fix this by using the absolute - # path to the file. - @run_before("configure") - def filter_configure(self): - report_abspath = join_path(self.build_directory, "config", "report") - filter_file("config/report", report_abspath, "configure") + sanity_check_is_file = ["bin/yambo"] + + resource( + when="@5.2.4", + name="ydriver", + url="https://github.com/yambo-code/Ydriver/archive/refs/tags/1.4.2.tar.gz", + sha256="c242f0700a224325ff59326767614a561b02ce16ddb2ce6c13ddd2d5901cc3e4", + destination="ydriver_archive", + placement="archive", + expand=False, + ) + resource( + when="@5.2.1:5.2.3", + name="ydriver", + url="https://github.com/yambo-code/Ydriver/archive/refs/tags/1.2.0.tar.gz", + sha256="0f29a44e9c4b49d3f6be3f159a7ef415932b2ae2f2fdba163af60a0673befe6e", + destination="ydriver_archive", + placement="archive", + expand=False, + ) + # iotk archive is contained inside this git repository + resource( + when="@5.2", + name="iotk", + git="https://github.com/yambo-code/yambo-libraries.git", + destination="yambo_libraries", + expand=False, + ) + + # ydriver-1.1.0 is required by yambo 5.1.1 but the oldest release in + # https://github.com/yambo-code/Ydriver is 1.2.0 + # So, the air-gapped installation is only available since yambo@5.2.1 + @when("@5.2") + @run_before("autoreconf") + def setup_archives(self): + if self.spec.satisfies("@5.2.4"): + shutil.move("ydriver_archive/archive/1.4.2.tar.gz", "lib/archive/Ydriver-1.4.2.tar.gz") + if self.spec.satisfies("@5.2.1:5.2.3"): + shutil.move("ydriver_archive/archive/1.2.0.tar.gz", "lib/archive/Ydriver-1.2.0.tar.gz") + shutil.move( + "yambo_libraries/yambo-libraries/external/iotk-y1.2.2.tar.gz", + "lib/archive/iotk-y1.2.2.tar.gz", + ) + shutil.rmtree("ydriver_archive") + shutil.rmtree("yambo_libraries") def enable_or_disable_time(self, activated): return "--enable-time-profile" if activated else "--disable-time-profile" @@ -93,6 +138,52 @@ def enable_or_disable_memory(self, activated): def enable_or_disable_openmp(self, activated): return "--enable-open-mp" if activated else "--disable-open-mp" + @when("@5") + def configure_args(self): + spec = self.spec + args = [ + f"--with-hdf5-path={spec['hdf5'].prefix}", + f"--prefix={self.stage.source_path}", + f"--exec-prefix={self.stage.source_path}", + ] + # Double precision + args.extend(self.enable_or_disable("dp")) + + # Application profiling + args.extend(self.enable_or_disable("profile")) + + # MPI + threading + args.extend(self.enable_or_disable("mpi")) + args.extend(self.enable_or_disable("openmp")) + + if spec.satisfies("+mpi"): + args.append(f"--with-scalapack-libs={spec['scalapack'].libs}") + + args.append(f"--with-blas-libs={spec['blas'].libs}") + args.append(f"--with-lapack-libs={spec['lapack'].libs}") + args.append(f"--with-netcdf-path={spec['netcdf-c'].prefix}") + args.append(f"--with-netcdff-path={spec['netcdf-fortran'].prefix}") + args.append(f"--with-fft-path={spec['fftw'].prefix}") + args.append(f"--with-libxc-path={spec['libxc'].prefix}") + args.append("--enable-hdf5-p2y-support") + # IO + if spec.satisfies("io=etsf-io"): + args.append(f"--with-etsf-io-path={spec['etsf-io'].prefix}") + args.extend(self.enable_or_disable("io")) + + return args + + # The configure in the package has the string 'cat config/report' + # hard-coded, which causes a failure at configure time due to the + # current working directory in Spack. Fix this by using the absolute + # path to the file. + @when("@4.2.1") + @run_before("configure") + def filter_configure(self): + report_abspath = join_path(self.build_directory, "config", "report") + filter_file("config/report", report_abspath, "configure") + + @when("@4.2.1") def configure_args(self): args = [ # As of version 4.2.1 there are hard-coded paths that make From 44225caadeac9f4c9dc03236a1f50650cf5c5ea3 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Mon, 18 Nov 2024 17:39:16 -0500 Subject: [PATCH 531/615] llvm: fix sysroot and build on darwin (#47336) The default build of clang on darwin couldn't actually build anything because of a lack of a sysroot built in. Also several compilation errors finding the system libc++ cropped up, much like those in GCC, and have been fixed. --- .../repos/builtin/packages/llvm/package.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 81ee8b52c06944..ae0db241902236 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -12,6 +12,7 @@ import spack.compilers from spack.build_systems.cmake import get_cmake_prefix_path +from spack.operating_systems.mac_os import macos_sdk_path from spack.package import * from spack.package_base import PackageBase @@ -821,6 +822,10 @@ def setup_build_environment(self, env): os.symlink(bin, sym) env.prepend_path("PATH", self.stage.path) + if self.spec.satisfies("platform=darwin"): + # set the SDKROOT so the bootstrap compiler finds its C++ headers + env.set("SDKROOT", macos_sdk_path()) + def setup_run_environment(self, env): if self.spec.satisfies("+clang"): env.set("CC", join_path(self.spec.prefix.bin, "clang")) @@ -1017,7 +1022,20 @@ def cmake_args(self): # Enable building with CLT [and not require full Xcode] # https://github.com/llvm/llvm-project/issues/57037 if self.spec.satisfies("@15.0.0: platform=darwin"): - cmake_args.append(define("BUILTINS_CMAKE_ARGS", "-DCOMPILER_RT_ENABLE_IOS=OFF")) + cmake_args.append( + define( + "BUILTINS_CMAKE_ARGS", + ";".join( + [f"-DCOMPILER_RT_ENABLE_{os}=OFF" for os in ("IOS", "WATCHOS", "TVOS")] + ), + ) + ) + + if self.spec.satisfies("platform=darwin"): + cmake_args.append(define("LLVM_ENABLE_LIBCXX", True)) + cmake_args.append(define("DEFAULT_SYSROOT", macos_sdk_path())) + # without this libc++ headers are not fond during compiler-rt build + cmake_args.append(define("LLVM_BUILD_EXTERNAL_COMPILER_RT", True)) # Semicolon seperated list of projects to enable cmake_args.append(define("LLVM_ENABLE_PROJECTS", projects)) From c8e4ae08da9ec5e14af6d0d8e0dd362031354ff5 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:41:02 -0500 Subject: [PATCH 532/615] eigen: enable ROCm support and add master version (#47332) * eigen: enable ROCm support and add master version * change boost dependency to only for tests --- .../repos/builtin/packages/eigen/package.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index e1fda7e9f72936..14d0ad43a78222 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -7,17 +7,19 @@ from spack.package import * -class Eigen(CMakePackage): +class Eigen(CMakePackage, ROCmPackage): """Eigen is a C++ template library for linear algebra matrices, vectors, numerical solvers, and related algorithms. """ homepage = "https://eigen.tuxfamily.org/" + git = "https://gitlab.com/libeigen/eigen.git" url = "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz" maintainers("HaoZeke") license("MPL-2.0") + version("master", branch="master") version("3.4.0", sha256="8586084f71f9bde545ee7fa6d00288b264a2b7ac3607b974e54d13e7162c1c72") version("3.3.9", sha256="7985975b787340124786f092b3a07d594b2e9cd53bbfe5f3d9b1daee7d55f56f") version("3.3.8", sha256="146a480b8ed1fb6ac7cd33fec9eb5e8f8f62c3683b3f850094d9d5c35a92419a") @@ -36,9 +38,12 @@ class Eigen(CMakePackage): version("3.2.6", sha256="e097b8dcc5ad30d40af4ad72d7052e3f78639469baf83cffaadc045459cda21f") version("3.2.5", sha256="8068bd528a2ff3885eb55225c27237cf5cda834355599f05c2c85345db8338b4") + variant("nightly", description="run Nightly test", default=False) depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated + # Older eigen releases haven't been tested with ROCm + conflicts("+rocm @:3.4.0") # there is a bug that provokes bad parsing of nvhpc version patch( @@ -68,6 +73,7 @@ class Eigen(CMakePackage): values=("Debug", "Release", "RelWithDebInfo"), ) + depends_on("boost@1.53:", when="@master", type="test") # TODO: latex and doxygen needed to produce docs with make doc # TODO: Other dependencies might be needed to test this package @@ -80,8 +86,21 @@ def cmake_args(self): # CMake fails without this flag # https://gitlab.com/libeigen/eigen/-/issues/1656 args += [self.define("BUILD_TESTING", "ON")] + if self.spec.satisfies("+rocm"): + args.append(self.define("ROCM_PATH", self.spec["hip"].prefix)) + args.append(self.define("HIP_PATH", self.spec["hip"].prefix)) + args.append(self.define("EIGEN_TEST_HIP", "ON")) + if self.spec.satisfies("@master") and self.run_tests: + args.append(self.define("Boost_INCLUDE_DIR", self.spec["boost"].prefix.include)) return args + def check(self): + ctest_args = ["--test-dir", self.builder.build_directory, "--repeat", "until-pass:3"] + if self.spec.satisfies("+nightly"): + ctest_args.append("-D") + ctest_args.append("Nightly") + ctest(*ctest_args) + @property def headers(self): headers = find_all_headers(self.prefix.include) From 73316c3e286d548b22dc65667810e4631479c3ea Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 18 Nov 2024 15:49:56 -0700 Subject: [PATCH 533/615] cached_cmake: mpifc is not always defined (#46861) * cached_cmake: mpifc is not always defined * mpich: only depend on fortran when +fortran --- lib/spack/spack/build_systems/cached_cmake.py | 5 ++++- var/spack/repos/builtin/packages/mpich/package.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_systems/cached_cmake.py b/lib/spack/spack/build_systems/cached_cmake.py index c22068e5ca354b..273eb070b10637 100644 --- a/lib/spack/spack/build_systems/cached_cmake.py +++ b/lib/spack/spack/build_systems/cached_cmake.py @@ -192,7 +192,10 @@ def initconfig_mpi_entries(self): entries.append(cmake_cache_path("MPI_C_COMPILER", spec["mpi"].mpicc)) entries.append(cmake_cache_path("MPI_CXX_COMPILER", spec["mpi"].mpicxx)) - entries.append(cmake_cache_path("MPI_Fortran_COMPILER", spec["mpi"].mpifc)) + + # not all MPIs have Fortran wrappers + if hasattr(spec["mpi"], "mpifc"): + entries.append(cmake_cache_path("MPI_Fortran_COMPILER", spec["mpi"].mpifc)) # Check for slurm using_slurm = False diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index f97ce4f545173f..a1816d401af7d1 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -60,7 +60,7 @@ class Mpich(AutotoolsPackage, CudaPackage, ROCmPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("fortran", type="build", when="+fortran") variant("hwloc", default=True, description="Use external hwloc package") variant("hydra", default=True, description="Build the hydra process manager") From 066666b7b1b36b8c7b0624f742f0b1248fadc283 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 19 Nov 2024 12:38:33 +0100 Subject: [PATCH 534/615] py-non-regression-test-tools: add v1.1.6 & remove v1.1.2 (tag removed) (#47622) * py-non-regression-test-tools: add v1.1.6 & remove v1.1.2 (tag removed) * Update var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --------- Co-authored-by: t. chantrait Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --- .../builtin/packages/py-non-regression-test-tools/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py index e72f207275e523..2c76e2c9560151 100644 --- a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py +++ b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py @@ -18,9 +18,9 @@ class PyNonRegressionTestTools(PythonPackage): version("develop", branch="develop") version("main", branch="main") + version("1.1.6", tag="v1.1.6") version("1.1.4", tag="v1.1.4") - version("1.1.2", tag="v1.1.2") depends_on("py-numpy", type="run") depends_on("python@3.10:", type="run") - depends_on("py-setuptools@69.2.0:", type="build") + depends_on("py-setuptools@61:", type="build") From f18203233788f86aaf43b27495570268857c9c19 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Nov 2024 13:28:14 +0100 Subject: [PATCH 535/615] Restore message when concretizing in parallel (#47663) It was lost in #44843 --- lib/spack/spack/concretize.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index cccfc02bd046a3..65ad755e7eade0 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -160,6 +160,11 @@ def concretize_separately( # TODO: support parallel concretization on macOS and Windows num_procs = min(len(args), spack.config.determine_number_of_jobs(parallel=True)) + msg = "Starting concretization" + if sys.platform not in ("darwin", "win32") and num_procs > 1: + msg += f" pool with {num_procs} processes" + tty.msg(msg) + for j, (i, concrete, duration) in enumerate( spack.util.parallel.imap_unordered( _concretize_task, args, processes=num_procs, debug=tty.is_debug(), maxtaskperchild=1 From 661f3621a7fa3776c8ee2c298f7fa2d70c86964b Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 19 Nov 2024 07:28:38 -0500 Subject: [PATCH 536/615] netcdf-cxx: add a maintainer (#47665) --- var/spack/repos/builtin/packages/netcdf-cxx/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/netcdf-cxx/package.py b/var/spack/repos/builtin/packages/netcdf-cxx/package.py index 4193c5894983f8..1383e6407d811a 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx/package.py @@ -15,6 +15,8 @@ class NetcdfCxx(AutotoolsPackage): homepage = "https://www.unidata.ucar.edu/software/netcdf" url = "https://downloads.unidata.ucar.edu/netcdf-cxx/4.2/netcdf-cxx-4.2.tar.gz" + maintainers("climbfuji") + license("NetCDF") version("4.2", sha256="95ed6ab49a0ee001255eac4e44aacb5ca4ea96ba850c08337a3e4c9a0872ccd1") From 2e71bc640c1ccc273b7bc71f5791316ec1832157 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Tue, 19 Nov 2024 13:44:41 +0100 Subject: [PATCH 537/615] pika: Add 0.30.1 (#47666) --- var/spack/repos/builtin/packages/pika/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index 8a9b901a5c7fb8..3d2793568b7caa 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -19,6 +19,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): license("BSL-1.0") + version("0.30.1", sha256="b0f3689a3edd30f8d674e19b5134fc5013813f843c45797c1015163e51989ac0") version("0.30.0", sha256="1798bf7de2505bc707bf95716fda8de5630b2e2ae54a6c4ef59f9931394d31cc") version("0.29.0", sha256="2c61079f52f3e135a8d0845a993e6e4fb64031fbee9b5cef0ead57efb6175e3c") version("0.28.0", sha256="a64ebac04135c0c8d392ddcd8d683fe02e2c0782abfe130754244d58f27ae6cf") From 68aa712a3e51b2fb8596ba245dd440739be205c5 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Nov 2024 15:00:26 +0100 Subject: [PATCH 538/615] solver: add a timeout handle for users (#47661) This PR adds a configuration setting to allow setting time limits for concretization. For backward compatibility, the default is to set no time limit. --- etc/spack/defaults/concretizer.yaml | 8 ++++++++ lib/spack/spack/schema/concretizer.py | 2 ++ lib/spack/spack/solver/asp.py | 17 ++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index 8cce19ebab9317..eda51c09beefc0 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -55,3 +55,11 @@ concretizer: splice: explicit: [] automatic: false + # Maximum time, in seconds, allowed for the 'solve' phase. If set to 0, there is no time limit. + timeout: 0 + # If set to true, exceeding the timeout will always result in a concretization error. If false, + # the best (suboptimal) model computed before the timeout is used. + # + # Setting this to false yields unreproducible results, so we advise to use that value only + # for debugging purposes (e.g. check which constraints can help Spack concretize faster). + error_on_timeout: true diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index 4fba79fece55ed..a81962a926b9b0 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -88,6 +88,8 @@ "strategy": {"type": "string", "enum": ["none", "minimal", "full"]} }, }, + "timeout": {"type": "integer", "minimum": 0}, + "error_on_timeout": {"type": "boolean"}, "os_compatible": {"type": "object", "additionalProperties": {"type": "array"}}, }, } diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 5310c4e3a84c89..4b35a093b82002 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -885,7 +885,22 @@ def on_model(model): solve_kwargs["on_unsat"] = cores.append timer.start("solve") - solve_result = self.control.solve(**solve_kwargs) + time_limit = spack.config.CONFIG.get("concretizer:timeout", -1) + error_on_timeout = spack.config.CONFIG.get("concretizer:error_on_timeout", True) + # Spack uses 0 to set no time limit, clingo API uses -1 + if time_limit == 0: + time_limit = -1 + with self.control.solve(**solve_kwargs, async_=True) as handle: + finished = handle.wait(time_limit) + if not finished: + specs_str = ", ".join(llnl.util.lang.elide_list([str(s) for s in specs], 4)) + header = f"Spack is taking more than {time_limit} seconds to solve for {specs_str}" + if error_on_timeout: + raise UnsatisfiableSpecError(f"{header}, stopping concretization") + warnings.warn(f"{header}, using the best configuration found so far") + handle.cancel() + + solve_result = handle.get() timer.stop("solve") # once done, construct the solve result From 2db99e1ff6b8855075e33aecb4e502b14dbd5052 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Nov 2024 15:19:08 +0100 Subject: [PATCH 539/615] gmp: fix cxx dependency, remove dependency on fortran (#47671) --- var/spack/repos/builtin/packages/gmp/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index df7a05e381ca54..ae3618d695fd35 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -26,9 +26,8 @@ class Gmp(AutotoolsPackage, GNUMirrorPackage): # Old version needed for a binary package in ghc-bootstrap version("4.3.2", sha256="936162c0312886c21581002b79932829aa048cfaf9937c6265aeaa14f1cd1775") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build", when="+cxx") depends_on("autoconf", type="build") depends_on("automake", type="build") From 5333925dd7a4245b761c73e557e30b7eb62b88c1 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 19 Nov 2024 15:23:54 +0100 Subject: [PATCH 540/615] sensei: fix install rpath for python extension (#47670) --- .../repos/builtin/packages/sensei/package.py | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/sensei/package.py b/var/spack/repos/builtin/packages/sensei/package.py index a00e944ea8fc38..ab59e1983ad339 100644 --- a/var/spack/repos/builtin/packages/sensei/package.py +++ b/var/spack/repos/builtin/packages/sensei/package.py @@ -88,11 +88,13 @@ class Sensei(CMakePackage): # HDF5 depends_on("hdf5", when="+hdf5") - depends_on("python@3:", when="+python", type=("build", "run")) - extends("python", when="+python") - depends_on("py-numpy", when="+python", type=("build", "run")) - depends_on("py-mpi4py@:3", when="+python", type=("build", "run")) - depends_on("swig", when="+python", type="build") + with when("+python"): + extends("python") + depends_on("python@3:", type=("build", "link", "run")) + depends_on("py-numpy", type=("build", "run")) + depends_on("py-mpi4py@:3", type=("build", "run")) + depends_on("swig", type="build") + depends_on("cmake@3.6:", when="@3:", type="build") depends_on("pugixml") depends_on("mpi") @@ -161,4 +163,13 @@ def cmake_args(self): args.append(self.define("SENSEI_PYTHON_VERSION", 3)) args.append(self.define_from_variant(f"{prefix}ENABLE_CATALYST_PYTHON", "catalyst")) + # lib/libsensei.so links to lib/pythonX.Y/site-packages/sensei/_PythonAnalysis.so, so + # register the install rpath. + install_rpaths = [ + self.spec.prefix.lib, + self.spec.prefix.lib64, + join_path(python_platlib, "sensei"), + ] + args.append(self.define("CMAKE_INSTALL_RPATH", install_rpaths)) + return args From 5325cfe8654ef6e7f02a7ed1e892a4f2870d07f0 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 19 Nov 2024 15:28:49 +0100 Subject: [PATCH 541/615] systemd: symlink the internal libraries so they are found in rpath (#47667) --- var/spack/repos/builtin/packages/systemd/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/systemd/package.py b/var/spack/repos/builtin/packages/systemd/package.py index 16f07dca8314c6..cbd6596c1cbd88 100644 --- a/var/spack/repos/builtin/packages/systemd/package.py +++ b/var/spack/repos/builtin/packages/systemd/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import glob import os from spack.package import * @@ -142,3 +143,13 @@ def install(self, spec, prefix): os.environ["DESTDIR"] = prefix with working_dir(self.build_directory): ninja("install") + + @run_after("install") + def symlink_internal_libs(self): + with working_dir(self.prefix): + # Create symlinks lib/lib*.so* -> lib/systemd/lib*.so* so that executables and + # libraries from systemd can find its own libraries in rpaths. + for lib_path in glob.glob("lib*/systemd/lib*.so*"): + lib_name = os.path.basename(lib_path) + lib_dir = os.path.dirname(os.path.dirname(lib_path)) + os.symlink(os.path.relpath(lib_path, lib_dir), os.path.join(lib_dir, lib_name)) From 22690a757680f6a3464f08c854cd647e3e9e7dd5 Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Tue, 19 Nov 2024 18:12:10 +0100 Subject: [PATCH 542/615] Make oneAPI library-with-sdk specialize library class (#47632) --- lib/spack/spack/build_systems/oneapi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_systems/oneapi.py b/lib/spack/spack/build_systems/oneapi.py index 6d60a7ae4f329e..9082d4f8ab068e 100644 --- a/lib/spack/spack/build_systems/oneapi.py +++ b/lib/spack/spack/build_systems/oneapi.py @@ -255,7 +255,7 @@ def libs(self): return find_libraries("*", root=self.component_prefix.lib, recursive=not self.v2_layout) -class IntelOneApiLibraryPackageWithSdk(IntelOneApiPackage): +class IntelOneApiLibraryPackageWithSdk(IntelOneApiLibraryPackage): """Base class for Intel oneAPI library packages with SDK components. Contains some convenient default implementations for libraries From 99e2313d811cf04d24e36e189ed9e61b1d7bc88f Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 19 Nov 2024 18:13:47 +0100 Subject: [PATCH 543/615] openturns: fix deps (#47669) --- .../builtin/packages/openturns/package.py | 75 ++++++++++++------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/var/spack/repos/builtin/packages/openturns/package.py b/var/spack/repos/builtin/packages/openturns/package.py index ba002881d91559..3e2d55d93eb54c 100644 --- a/var/spack/repos/builtin/packages/openturns/package.py +++ b/var/spack/repos/builtin/packages/openturns/package.py @@ -27,44 +27,61 @@ class Openturns(CMakePackage): version("1.19", sha256="1d61cb6ce8ec1121db9f1e9fb490aaa056d2ff250db26df05d2e3e30ceb32344") version("1.18", sha256="1840d3fd8b38fd5967b1fa04e49d8f760c2c497400430e97623595ca48754ae0") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - variant("python", default=True, description="Build Python bindings") variant("libxml2", default=False, description="Use LibXML2 for XML support") - extends("python", when="+python") + depends_on("c", type="build") + depends_on("cxx", type="build") - depends_on("mpi", type=("build", "run")) - depends_on("lapack", type=("build", "run")) depends_on("cmake@2.8:", type="build") - depends_on("swig", type=("build", "run")) - depends_on("py-numpy@1.7:", type=("build", "run")) - depends_on("py-pandas", type=("build", "run")) - depends_on("py-matplotlib", type=("build", "run")) - depends_on("boost+system+serialization+thread", type=("build", "run")) - depends_on("intel-tbb", type=("build", "run")) - depends_on("py-cloudpickle", type=("build", "run")) - depends_on("py-urllib3", type=("build", "run")) - depends_on("libxml2", type=("build", "run"), when="+libxml2") + depends_on("bison", type="build") + depends_on("flex", type="build") - def cmake_args(self): - spec = self.spec + depends_on("lapack") + depends_on("boost+system+serialization+thread") + depends_on("intel-tbb") + depends_on("libxml2", when="+libxml2") + with when("+python"): + extends("python") + depends_on("swig") + depends_on("py-numpy@1.7:", type=("build", "run")) + depends_on("py-pandas", type=("build", "run")) + depends_on("py-matplotlib", type=("build", "run")) + depends_on("py-cloudpickle", type=("build", "run")) + depends_on("py-urllib3", type=("build", "run")) + + def cmake_args(self): args = [ - "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc, - "-DCMAKE_CXX_COMPILER=%s" % spec["mpi"].mpicxx, - "-DCMAKE_INSTALL_LIBDIR:STRING=%s" % self.prefix.lib, - "-DCMAKE_INSTALL_BINDIR:STRING=%s" % self.prefix.bin, - "-DLAPACK_LIBRARIES=%s" % spec["lapack"].libs.joined(";"), + self.define("USE_BISON", True), + self.define("USE_BOOST", True), + self.define("USE_FLEX", True), + self.define("USE_OPENMP", True), + self.define("USE_TBB", True), + self.define("LAPACK_LIBRARIES", list(self.spec["lapack"].libs)), + self.define_from_variant("USE_LIBXML2", "libxml2"), + # disable optional features explicitly + self.define("USE_BONMIN", False), + self.define("USE_CERES", False), + self.define("USE_CMINPACK", False), + self.define("USE_CUBA", False), + self.define("USE_DLIB", False), + self.define("USE_DOXYGEN", False), + self.define("USE_HDF5", False), + self.define("USE_HMAT", False), + self.define("USE_IPOPT", False), + self.define("USE_MPC", False), + self.define("USE_MPFR", False), + self.define("USE_MUPARSER", False), + self.define("USE_NANOFLANN", False), + self.define("USE_NLOPT", False), + self.define("USE_PAGMO", False), + self.define("USE_PRIMESIEVE", False), + self.define("USE_SPECTRA", False), + self.define("USE_SPHINX", False), ] - if "+python" in spec: - args.extend( - [ - # By default installs to the python prefix - "-DPYTHON_SITE_PACKAGES={0}".format(python_platlib) - ] - ) + if self.spec.satisfies("+python"): + args.append(self.define("PYTHON_SITE_PACKAGES", python_platlib)) return args From 1e0aac6ac35465b01688df3395fc98895d79afbf Mon Sep 17 00:00:00 2001 From: Andrey Perestoronin Date: Tue, 19 Nov 2024 18:38:42 +0000 Subject: [PATCH 544/615] Add new 2025.0.1 Oneapi patch packages (#47678) --- .../packages/intel-oneapi-compilers/package.py | 11 +++++++++++ .../builtin/packages/intel-oneapi-dnn/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-dpct/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-itac/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-mkl/package.py | 6 ++++++ .../builtin/packages/intel-oneapi-vtune/package.py | 6 ++++++ 6 files changed, 41 insertions(+) diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index d7cb974a56e185..73c1e89f14b9a9 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -10,6 +10,17 @@ from spack.package import * versions = [ + { + "version": "2025.0.1", + "cpp": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4fd7c6b0-853f-458a-a8ec-421ab50a80a6/intel-dpcpp-cpp-compiler-2025.0.1.46_offline.sh", + "sha256": "1595397566b59a5c8f81e2c235b6bedd2405dc70309b5bf00ed75827d0f12449", + }, + "ftn": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7ba31291-8a27-426f-88d5-8c2d65316655/intel-fortran-compiler-2025.0.1.41_offline.sh", + "sha256": "aa54f019ad8db79f716f880c72784dc117d64e525e4c3b62717bd9d18a6c9060", + }, + }, { "version": "2025.0.0", "cpp": { diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py index 8d682d268d40d0..9c7e5d09702d38 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py @@ -26,6 +26,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html" ) + version( + "2025.0.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6cfa324b-1591-4c0b-b8d2-97c5b3b272a7/intel-onednn-2025.0.1.12_offline.sh", + sha256="3c81880a1fc40f2e68a1dcc05f220b5e22c1e9c78723a2e57770ed3c740800f2", + expand=False, + ) version( "2025.0.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/87e117ab-039b-437d-9c80-dcd5c9e675d5/intel-onednn-2025.0.0.862_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py index 1db00291522532..2d10ad17052ed3 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py @@ -19,6 +19,12 @@ class IntelOneapiDpct(IntelOneApiPackage): homepage = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html#gs.2p8km6" + version( + "2025.0.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6d1e0867-72b4-4670-8efc-3586894ad15f/intel-dpcpp-ct-2025.0.1.19_offline.sh", + sha256="b9e3bf879938a3e50cda73f555f54dff8769d8cb4c00746dbdba363af2a54410", + expand=False, + ) version( "2025.0.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/de77e9b7-1fa2-4329-8777-2de569fee5d9/intel-dpcpp-ct-2025.0.0.912_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-itac/package.py b/var/spack/repos/builtin/packages/intel-oneapi-itac/package.py index 70125f5264d83e..7c33c0d4e875d2 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-itac/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-itac/package.py @@ -27,6 +27,12 @@ class IntelOneapiItac(IntelOneApiPackage): maintainers("rscohn2") + version( + "2022.4.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d75145c0-e3e2-4806-a2f8-8e46972ea2cb/l_itac_oneapi_p_2022.4.0.16_offline.sh", + sha256="746a51d91be17e5916ec74d6b3691bf58c2820cc9a2920f104e6e96383505bbe", + expand=False, + ) version( "2022.1.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/644eec67-83d9-4bdd-be0d-d90587ec72ed/l_itac_oneapi_p_2022.1.0.158_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py index 04b916d2112b82..305f3395475293 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py @@ -25,6 +25,12 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html" ) + version( + "2025.0.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/246ea40e-5aa7-42a4-81fa-0c029dc8650f/intel-onemkl-2025.0.1.16_offline.sh", + sha256="bd86677aa17499c89ca7a3c3c83b73f0644147e4f1d2a218b45a7349cf582f4a", + expand=False, + ) version( "2025.0.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/79153e0f-74d7-45af-b8c2-258941adf58a/intel-onemkl-2025.0.0.940_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py index 008dee29121d52..1b5d94253505de 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py @@ -25,6 +25,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html" + version( + "2025.0.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1277cea4-34b7-4221-bdbc-4f47a9a5592d/intel-vtune-2025.0.1.16_offline.sh", + sha256="e0917aab901018d2786df2fcfbaea2bf9c4ff7d5b7f9413e9f3d6860bb743f82", + expand=False, + ) version( "2025.0.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e7797b12-ce87-4df0-aa09-df4a272fc5d9/intel-vtune-2025.0.0.1130_offline.sh", From adc8e1d996a14d32f2c1f70ffea64786f785af42 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Wed, 20 Nov 2024 01:42:21 +0530 Subject: [PATCH 545/615] Restrict disable dynamic thread scaling only to 3.1 version (#47673) Co-authored-by: vijay kallesh --- var/spack/repos/builtin/packages/amdblis/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py index a25f5a3c9371f6..85264dcf35b46e 100644 --- a/var/spack/repos/builtin/packages/amdblis/package.py +++ b/var/spack/repos/builtin/packages/amdblis/package.py @@ -86,7 +86,7 @@ def configure_args(self): elif spec.satisfies("@3.0.1: %aocc"): args.append("--complex-return=intel") - if spec.satisfies("@3.1:"): + if spec.satisfies("@3.1"): args.append("--disable-aocl-dynamic") if spec.satisfies("+logging"): From 8821300985a80ecbde7a985b8dbb30e585d59dea Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 19 Nov 2024 14:14:52 -0600 Subject: [PATCH 546/615] py-gevent: add v24.2.1, v24.10.3, v24.11.1 (#47646) * py-gevent: add v24.2.1, v24.10.3 * py-gevent: add v24.11.1 --- var/spack/repos/builtin/packages/py-gevent/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-gevent/package.py b/var/spack/repos/builtin/packages/py-gevent/package.py index 9aaab6a93f2554..703bd2f751b507 100644 --- a/var/spack/repos/builtin/packages/py-gevent/package.py +++ b/var/spack/repos/builtin/packages/py-gevent/package.py @@ -15,6 +15,9 @@ class PyGevent(PythonPackage): license("MIT") + version("24.11.1", sha256="8bd1419114e9e4a3ed33a5bad766afff9a3cf765cb440a582a1b3a9bc80c1aca") + version("24.10.3", sha256="aa7ee1bd5cabb2b7ef35105f863b386c8d5e332f754b60cfc354148bd70d35d1") + version("24.2.1", sha256="432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056") version("23.7.0", sha256="d0d3630674c1b344b256a298ab1ff43220f840b12af768131b5d74e485924237") version("21.12.0", sha256="f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e") version("21.8.0", sha256="43e93e1a4738c922a2416baf33f0afb0a20b22d3dba886720bc037cd02a98575") @@ -22,15 +25,22 @@ class PyGevent(PythonPackage): depends_on("c", type="build") # generated + depends_on("python@3.9:", when="@24.10.1:", type=("build", "run")) depends_on("python@3.8:", when="@23.7.0:", type=("build", "run")) depends_on("python@:3.10", when="@:21.12", type=("build", "run")) depends_on("py-setuptools@40.8:", when="@20.5.1:", type=("build", "run")) depends_on("py-setuptools@40.8:", when="@1.5:", type="build") depends_on("py-setuptools@24.2:", when="@:1.4", type="build") + depends_on("py-cython@3.0.11:", when="@24.10.1:", type="build") + depends_on("py-cython@3.0.8:", when="@24.2.1:", type="build") + depends_on("py-cython@3.0.2:", when="@23.9.0:", type="build") depends_on("py-cython@3:", when="@20.5.1:", type="build") depends_on("py-cython@0.29.14:", when="@1.5:", type="build") + depends_on("py-cffi@1.17.1:", when="@24.10.1:", type=("build", "run")) depends_on("py-cffi@1.12.3:", type=("build", "run")) + depends_on("py-greenlet@3.1.1:", when="@24.10.1:", type=("build", "run")) # setup.py + depends_on("py-greenlet@3.0.3:", when="@24.2.1:", type=("build", "run")) depends_on("py-greenlet@3:", when="@23.7: ^python@3.12:", type=("build", "run")) depends_on("py-greenlet@2:", when="@22.10.2: ^python@:3.11", type=("build", "run")) depends_on("py-greenlet@1.1:1", when="@21.8:21.12.0", type=("build", "run")) From 50970f866e251d624983c6dd32e798a643c170ae Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Tue, 19 Nov 2024 18:03:28 -0500 Subject: [PATCH 547/615] Add llvm v19.1.4 (#47681) --- var/spack/repos/builtin/packages/llvm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index ae0db241902236..d5abd0cb6fe12b 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -57,6 +57,7 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): license("Apache-2.0") version("main", branch="main") + version("19.1.4", sha256="010e1fd3cabee8799bd2f8a6fbc68f28207494f315cf9da7057a2820f79fd531") version("19.1.3", sha256="e5106e2bef341b3f5e41340e4b6c6a58259f4021ad801acf14e88f1a84567b05") version("19.1.2", sha256="622cb6c5e95a3bb7e9876c4696a65671f235bd836cfd0c096b272f6c2ada41e7") version("19.1.1", sha256="115dfd98a353d05bffdab3f80db22f159da48aca0124e8c416f437adcd54b77f") From 853f70edc8f54016190fca1b4ea4a318b4e8da75 Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Tue, 19 Nov 2024 17:43:21 -0600 Subject: [PATCH 548/615] cgal: update depends versions for 6.0.1 (#47516) * This extends PR #47285 to properly include some of the required version constrains of cgal 6 incl C++ standard. It also adds the new no-gmp backend as a variant. * fix style * disable cgal@6 +demo variant as the demos require qt6 which is not in spack * disable the gmp variant until clarity on how its supposed to work is provided. bound shared and header_only variants to relevant versions * Fix missing msvc compiler limit, fix variant left in * Add more comments. Better describe the gmp variant. Remove testing code * fix style --- .../repos/builtin/packages/cgal/package.py | 64 +++++++++++++++++-- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index c1030d42d0aba1..a8f0e3aa9a9597 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -36,14 +36,21 @@ class Cgal(CMakePackage): depends_on("cxx", type="build") # generated - variant("shared", default=True, description="Enables the build of shared libraries") + # @5: is header only and doesn't build shared libs + variant( + "shared", default=True, description="Enables the build of shared libraries", when="@:4.14" + ) + variant( "build_type", default="Release", description="The build type to build", values=("Debug", "Release"), ) - variant("header_only", default=False, description="Install in header only mode") + + # header only is the default and only option for 5+ + # https://doc.cgal.org/latest/Manual/installation.html + variant("header_only", default=False, description="Install in header only mode", when="@:4.13") # ---- See "7 CGAL Libraries" at: # https://doc.cgal.org/latest/Manual/installation.html @@ -53,16 +60,32 @@ class Cgal(CMakePackage): # https://cs.nyu.edu/exact/core_pages/svn-core.html variant("core", default=False, description="Build the CORE library for algebraic numbers") variant("imageio", default=False, description="Build utilities to read/write image files") - variant("demos", default=False, description="Build CGAL demos") + variant("demos", default=False, description="Build CGAL demos", when="@:5") variant("eigen", default=True, description="Build with Eigen support") - depends_on("cmake@2.8.11:", type="build") + # Starting with cgal 6, GMP/MPFR are no longer mandatory and Core library + # is based on on Boost.Multiprecision. However, either GMP backend or Boost + # backend can be used. Downstream cmake users must also set -DCGAL_DISABLE_GMP=1 + # or the macro CMAKE_OVERRIDDEN_DEFAULT_ENT_BACKEND if GMP is disabled. + # This variant doesn't change how cgal is installed, but it does change spack to + # not depend on gmp & mpfr. + # More details here https://github.com/CGAL/cgal/issues/8606 + variant("gmp", default=True, description="Enable the GMP backend", when="@6:") + + # Upper bound follows CGAL's @6: CMakeLists.txt + depends_on("cmake@3.12:3.29", type="build", when="@6:") + depends_on("cmake@2.8.11:", type="build", when="@:5") # Essential Third Party Libraries depends_on("boost+exception+math+random+container", when="@5.0:") + depends_on("boost@1.72.0:+exception+math+random+container", when="@6:") depends_on("boost+thread+system", when="@:5.0") - depends_on("gmp") - depends_on("mpfr") + + depends_on("gmp", when="@:5") + depends_on("mpfr", when="@:5") + + depends_on("gmp", when="@6: +gmp") + depends_on("mpfr", when="@6: +gmp") # Required for CGAL_ImageIO # depends_on('opengl', when='+imageio') # not yet in Spack @@ -70,7 +93,10 @@ class Cgal(CMakePackage): # Optional to build CGAL_Qt5 (demos) # depends_on('opengl', when='+demos') # not yet in Spack - depends_on("qt@5:", when="+demos") + depends_on("qt@5:", when="@:5 +demos") + + # Demos are now based on qt6, but at the moment qt6 is not in spack + # depends_on("qt@6:", when="@6: +demos") # Optional Third Party Libraries depends_on("eigen", when="+eigen") @@ -84,6 +110,24 @@ class Cgal(CMakePackage): # depends_on('esbtl') # depends_on('intel-tbb') + # @6: requires C++17 or later. The table gives tested + # compilers, so use the lwoer limit of that as the bounds + # https://www.cgal.org/2024/10/22/cgal601/ + with when("@6:"): + # Gnu g++ 11.4.0 or later (on Linux or macOS) + conflicts("%gcc @:11.3.0", when="platform=darwin") + conflicts("%gcc @:11.3.0", when="platform=linux") + + # LLVM Clang version 15.0.7 or later (on Linux) + conflicts("%clang @:15.0.6", when="platform=linux") + + # Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS) + # (10+ has C++17 support) + conflicts("%apple-clang @:10.0.0", when="platform=darwin") + + # Visual C++ 15.9 or later + conflicts("%msvc @:15.8", when="platform=windows") + conflicts( "~header_only", when="@:4.9", @@ -120,7 +164,13 @@ def cmake_args(self): cmake_args.append("-DWITH_CGAL_ImageIO:BOOL=%s" % variant_bool("+imageio")) cmake_args.append("-DWITH_CGAL_Qt5:BOOL=%s" % variant_bool("+demos")) + if spec.satisfies("@6:"): + cmake_args.append("-DCXX_STANDARD=17") + if spec.satisfies("@4.9:"): cmake_args.append("-DCGAL_HEADER_ONLY:BOOL=%s" % variant_bool("+header_only")) + if spec.satisfies("~gmp"): + cmake_args.append("-DCGAL_DISABLE_GMP:BOOL=1") + return cmake_args From 792e1295773bbf24fc94383a8b4c52c831a39eee Mon Sep 17 00:00:00 2001 From: Marc Mengel Date: Tue, 19 Nov 2024 20:29:05 -0600 Subject: [PATCH 549/615] internal error, and perl-lwp dependency fix --- lib/spack/spack/solver/concretize.lp | 6 ++++-- .../builtin/packages/perl-mozilla-publicsuffix/package.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 9bb237754e1d88..6010c39d4b4088 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -429,8 +429,10 @@ imposed_nodes(ConditionID, PackageNode, node(X, A1)) :- imposed_packages(ID, A1), impose(ID, PackageNode), not condition_set(PackageNode, node(_, A1)), internal_error("Imposing constraint outside of condition set"). -:- imposed_packages(ID, A1), impose(ID, PackageNode), not imposed_nodes(ID, PackageNode, node(_, A1)), - internal_error("Imposing constraint outside of imposed_nodes"). +% not sure why, but this error keeps cropping up with --include-concrete environments, trying commenting +% it out -- mengel@fnal.gov +%:- imposed_packages(ID, A1), impose(ID, PackageNode), not imposed_nodes(ID, PackageNode, node(_, A1)), +% internal_error("Imposing constraint outside of imposed_nodes"). % Conditions that hold impose may impose constraints on other specs attr(Name, node(X, A1)) :- impose(ID, PackageNode), imposed_constraint(ID, Name, A1), imposed_nodes(ID, PackageNode, node(X, A1)). diff --git a/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py b/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py index 20d234220fbb49..cac4620cb85f7d 100644 --- a/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py +++ b/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py @@ -26,6 +26,7 @@ class PerlMozillaPublicsuffix(PerlPackage): depends_on("perl@5.8:", type=("build", "run")) # AUTO-CPAN2Spack depends_on("perl-uri", type="run") # AUTO-CPAN2Spack depends_on("perl-module-build@0.28:", type="build") # AUTO-CPAN2Spack + depends_on('perl-uri') def patch(self): """HTTP::Tiny has a bad interaction with Errno.pm for Perl <5.22""" From df208c1095e665ca8981da7a2305158d77cf11cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 20:39:45 -0600 Subject: [PATCH 550/615] build(deps): bump docker/metadata-action from 5.5.1 to 5.6.1 (#47682) Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.1 to 5.6.1. - [Release notes](https://github.com/docker/metadata-action/releases) - [Commits](https://github.com/docker/metadata-action/compare/8e5442c4ef9f78752691e2d8f8d19755c6f78e81...369eb591f429131d6889c46b94e711f089e6ca96) --- updated-dependencies: - dependency-name: docker/metadata-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-containers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index 9151898b86741f..eb7e7b07927092 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -57,7 +57,7 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 + - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 id: docker_meta with: images: | From 0ff3e863151a2c74ac202eefc0b4d3f65b39a85e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 20:40:01 -0600 Subject: [PATCH 551/615] build(deps): bump codecov/codecov-action from 5.0.2 to 5.0.3 (#47683) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.0.2 to 5.0.3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/5c47607acb93fed5485fdbf7232e8a31425f672a...05f5a9cfad807516dbbef9929c4a42df3eb78766) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 3357f4a1ba764d..600c06dc692680 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -29,6 +29,6 @@ jobs: - run: coverage xml - name: "Upload coverage report to CodeCov" - uses: codecov/codecov-action@5c47607acb93fed5485fdbf7232e8a31425f672a + uses: codecov/codecov-action@05f5a9cfad807516dbbef9929c4a42df3eb78766 with: verbose: true From e59145808d057ab7da36e9bc9d02b2b8c52ccdc3 Mon Sep 17 00:00:00 2001 From: Marc Mengel Date: Tue, 19 Nov 2024 22:18:50 -0600 Subject: [PATCH 552/615] trying to get geant4@10.7.4 cxxstd=20 to build --- .../repos/builtin/packages/geant4/cpp20.patch | 30 +++++++++++++++++++ .../repos/builtin/packages/geant4/package.py | 4 +++ 2 files changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/geant4/cpp20.patch diff --git a/var/spack/repos/builtin/packages/geant4/cpp20.patch b/var/spack/repos/builtin/packages/geant4/cpp20.patch new file mode 100644 index 00000000000000..ed0c716e3a5852 --- /dev/null +++ b/var/spack/repos/builtin/packages/geant4/cpp20.patch @@ -0,0 +1,30 @@ +--- geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITMultiNavigator.hh 2023-05-24 13:43:47.960214329 -0500 ++++ geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITMultiNavigator.hh 2023-05-24 14:13:50.595633742 -0500 +@@ -82,11 +82,11 @@ + class G4TrackState : public G4TrackState + { + public: +- ~G4TrackState() ++ ~G4TrackState() + { + } + +- G4TrackState() ++ G4TrackState() + { + G4ThreeVector Big3Vector(kInfinity, kInfinity, kInfinity); + fLastLocatedPosition = Big3Vector; +--- geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITPathFinder.hh 2023-05-24 14:42:58.550496706 -0500 ++++ geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITPathFinder.hh 2023-05-24 14:43:17.886350945 -0500 +@@ -116,9 +116,9 @@ + G4int fLastStepNo, fCurrentStepNo; + + public: +- virtual ~G4TrackState(){} ++ virtual ~G4TrackState(){} + +- G4TrackState() : ++ G4TrackState() : + G4TrackStateBase(), + fEndState( G4ThreeVector(), G4ThreeVector(), 0., 0., 0., 0., 0.), + fFieldExertedForce(false), diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index 38ebb060fb6340..07ec0c09c3857c 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -226,6 +226,8 @@ def std_when(values): patch("cxx17_geant4_10_0.patch", level=1, when="@10.4.0 cxxstd=17") patch("geant4-10.4.3-cxx17-removed-features.patch", level=1, when="@10.4.3 cxxstd=17") + patch("cpp20.patch", when="@10.7 cxxstd=20") # from Fermi buildshims + # See https://bugzilla-geant4.kek.jp/show_bug.cgi?id=2556 patch("package-cache.patch", level=1, when="@10.7.0:11.1.2^cmake@3.17:") @@ -285,6 +287,8 @@ def _add_variant(feature, variant): def flag_handler(self, name, flags): spec = self.spec if name == "cxxflags": + if spec.satisfies("%gcc"): + flags.append("-fpermissive") if spec.satisfies("%nvhpc"): # error: excessive recursion at instantiation of class # "G4Number<191>" (G4CTCounter.hh) From aa2c18e4df926611226b2d128610c2e8bb639c9e Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 20 Nov 2024 16:15:28 +0100 Subject: [PATCH 553/615] spack style: import-check -> import, fix bugs, exclude spack.pkg (#47690) --- lib/spack/spack/cmd/modules/lmod.py | 1 + lib/spack/spack/cmd/modules/tcl.py | 1 + lib/spack/spack/cmd/style.py | 29 +++++++++++++------ lib/spack/spack/directives.py | 1 - lib/spack/spack/solver/asp.py | 1 + lib/spack/spack/test/cmd/ci.py | 1 + lib/spack/spack/test/cmd/pkg.py | 1 + lib/spack/spack/test/cmd/style.py | 23 +++++++++++++-- lib/spack/spack/test/config.py | 1 + lib/spack/spack/test/modules/common.py | 1 + lib/spack/spack/test/package_class.py | 1 + lib/spack/spack/util/path.py | 1 + lib/spack/spack/util/web.py | 1 + share/spack/spack-completion.fish | 4 +-- .../packages/find-externals1/package.py | 3 +- .../packages/py-test-callback/package.py | 3 +- .../repos/builtin/packages/chapel/package.py | 3 ++ .../builtin/packages/cray-fftw/package.py | 2 ++ .../repos/builtin/packages/pythia6/package.py | 4 +-- .../repos/builtin/packages/upcxx/package.py | 2 ++ 20 files changed, 63 insertions(+), 21 deletions(-) diff --git a/lib/spack/spack/cmd/modules/lmod.py b/lib/spack/spack/cmd/modules/lmod.py index 4fd6992a47a97d..3f2f7d2ec04cca 100644 --- a/lib/spack/spack/cmd/modules/lmod.py +++ b/lib/spack/spack/cmd/modules/lmod.py @@ -8,6 +8,7 @@ import spack.cmd.common.arguments import spack.cmd.modules import spack.config +import spack.modules import spack.modules.lmod diff --git a/lib/spack/spack/cmd/modules/tcl.py b/lib/spack/spack/cmd/modules/tcl.py index 4ca8ece704479e..e31d5bcc46ff9a 100644 --- a/lib/spack/spack/cmd/modules/tcl.py +++ b/lib/spack/spack/cmd/modules/tcl.py @@ -7,6 +7,7 @@ import spack.cmd.common.arguments import spack.cmd.modules import spack.config +import spack.modules import spack.modules.tcl diff --git a/lib/spack/spack/cmd/style.py b/lib/spack/spack/cmd/style.py index 5925d1120e5764..9d164875ae2400 100644 --- a/lib/spack/spack/cmd/style.py +++ b/lib/spack/spack/cmd/style.py @@ -15,6 +15,7 @@ from llnl.util.filesystem import working_dir import spack.paths +import spack.repo import spack.util.git from spack.util.executable import Executable, which @@ -38,7 +39,7 @@ def grouper(iterable, n, fillvalue=None): #: double-check the results of other tools (if, e.g., --fix was provided) #: The list maps an executable name to a method to ensure the tool is #: bootstrapped or present in the environment. -tool_names = ["import-check", "isort", "black", "flake8", "mypy"] +tool_names = ["import", "isort", "black", "flake8", "mypy"] #: warnings to ignore in mypy mypy_ignores = [ @@ -370,10 +371,19 @@ def run_black(black_cmd, file_list, args): def _module_part(root: str, expr: str): parts = expr.split(".") + # spack.pkg is for repositories, don't try to resolve it here. + if ".".join(parts[:2]) == spack.repo.ROOT_PYTHON_NAMESPACE: + return None while parts: f1 = os.path.join(root, "lib", "spack", *parts) + ".py" f2 = os.path.join(root, "lib", "spack", *parts, "__init__.py") - if os.path.exists(f1) or os.path.exists(f2): + + if ( + os.path.exists(f1) + # ensure case sensitive match + and f"{parts[-1]}.py" in os.listdir(os.path.dirname(f1)) + or os.path.exists(f2) + ): return ".".join(parts) parts.pop() return None @@ -389,7 +399,7 @@ def _run_import_check( out=sys.stdout, ): if sys.version_info < (3, 9): - print("import-check requires Python 3.9 or later") + print("import check requires Python 3.9 or later") return 0 is_use = re.compile(r"(? Date: Wed, 20 Nov 2024 11:37:56 -0600 Subject: [PATCH 554/615] visit: add v3.4.0, v3.4.1 (#47161) * Visit: Add new versions 3.4.0 and 3.4.1 * Adios2: Restrict python, 3.11 doesn't not work for older Adios2 * VisIt: Set the VTK_VERSION for @3.4: Older versions of VTK used the VTK_{MAJOR, MINOR}_VERSION variables for VTK detection. VisIt >= 3.4 uses the full string VTK_VERSION. * CI: Don't build llvm-amdgpu for non-HIP stack * VisIt: v3.4.1 handles newer Adios2 correctly * Visit: Add missing links in HDF5, set correct VTK version configuration parameter * VisIt: Add py-pip requirement and patch visit with configuration changes * HDF5 symlinks move when inside of callback * VisIt ninja install fails with python module. Using make does not * VisIt 3.4 has a high minimum cmake requirement * HDF5: Early return when not mpi for mpi symlinks * HDF5: Use platform agnostic method for creating legacy compatible MPI symlinks * Fix VISIT_VTK_VERSION handling for 8.2.1a hack --- .../stacks/data-vis-sdk/spack.yaml | 30 ++++++---- .../repos/builtin/packages/adios2/package.py | 12 ++-- .../repos/builtin/packages/hdf5/package.py | 18 ++++++ .../19958-enable-python-and-check-pip.patch | 60 +++++++++++++++++++ .../repos/builtin/packages/visit/package.py | 37 +++++++++--- 5 files changed, 136 insertions(+), 21 deletions(-) create mode 100644 var/spack/repos/builtin/packages/visit/19958-enable-python-and-check-pip.patch diff --git a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml index 17b67bb268112e..02594f3b611e34 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml @@ -6,20 +6,31 @@ spack: cmake: variants: ~ownlibs ecp-data-vis-sdk: - require: "+ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs +veloc +vtkm +zfp" + require: + - "+ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs +veloc +vtkm +zfp" hdf5: require: - - one_of: ['@1.14', '@1.12'] + - "@1.14" mesa: - require: "+glx +osmesa +opengl ~opengles +llvm" + require: + - "+glx +osmesa +opengl ~opengles +llvm" libglx: require: "mesa +glx" ospray: - require: '@2.8.0 +denoiser +mpi' + require: + - "@2.8.0" + - "+denoiser +mpi" llvm: - require: '@14:' + require: ["@14:"] # Minimize LLVM variants: ~lldb~lld~libomptarget~polly~gold libunwind=none compiler-rt=none + libllvm: + require: ["^llvm"] + visit: + require: ["@3.4.1"] + + concretizer: + unify: when_possible definitions: - paraview_specs: @@ -30,11 +41,10 @@ spack: - ^[virtuals=gl] osmesa # OSMesa Rendering - visit_specs: - matrix: - - - visit~gui - - - ^[virtuals=gl] glx # GLX Rendering - - ^[virtuals=gl] osmesa # OSMesa Rendering - # VisIt GUI does not work with Qt 5.14.2 - # - +gui ^[virtuals=gl] glx # GUI Support w/ GLX Rendering + - - visit + - - ~gui ^[virtuals=gl] glx + - ~gui ^[virtuals=gl] osmesa + - +gui ^[virtuals=gl] glx # GUI Support w/ GLX Rendering - sdk_base_spec: - matrix: - - ecp-data-vis-sdk +ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index b3a966110c5745..8d9a0425faba61 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -192,10 +192,14 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): depends_on("mgard@2023-01-10:", when="@2.9: +mgard") extends("python", when="+python") - depends_on("python@2.7:2.8,3.5:", when="@:2.4.0 +python", type=("build", "run")) - depends_on("python@2.7:2.8,3.5:", when="@:2.4.0", type="test") - depends_on("python@3.5:", when="@2.5.0: +python", type=("build", "run")) - depends_on("python@3.5:", when="@2.5.0:", type="test") + depends_on("python", when="+python", type=("build", "run")) + depends_on("python@2.7:2.8,3.5:3.10", when="@:2.4.0 +python", type=("build", "run")) + depends_on("python@3.5:3.10", when="@2.5.0:2.7 +python", type=("build", "run")) + + depends_on("python", type="test") + depends_on("python@2.7:2.8,3.5:3.10", when="@:2.4.0", type="test") + depends_on("python@3.5:3.10", when="@2.5.0:2.7", type="test") + depends_on("py-numpy@1.6.1:", when="+python", type=("build", "run")) depends_on("py-mpi4py@2.0.0:", when="+mpi +python", type=("build", "run")) depends_on("aws-sdk-cpp", when="+aws") diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 12e99d9bf61dbd..d0132ae2bcbb64 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -674,6 +674,24 @@ def symlink_to_h5hl_wrappers(self): os.remove(old) symlink(new, old) + @run_after("install") + def symlink_mpi_libs(self): + """Compatibility layer to support projects looking for the MPI suffix""" + if not self.spec.satisfies("+mpi"): + return + + mpi_libs = ["libhdf5{mpi_suffix}", "libhdf5{mpi_suffix}_hl"] + for lib_f in mpi_libs: + src_name = lib_f.format(mpi_suffix="") + dst_name = lib_f.format(mpi_suffix="_mpi") + libs = find_libraries(src_name, root=self.prefix, recursive=True) + for lib_path in libs: + prefix = os.path.dirname(lib_path) + src_lib = os.path.basename(lib_path) + dst_lib = dst_name.join(src_lib.rsplit(src_name, 1)) + with working_dir(prefix): + symlink(src_lib, dst_lib) + @property @llnl.util.lang.memoized def _output_version(self): diff --git a/var/spack/repos/builtin/packages/visit/19958-enable-python-and-check-pip.patch b/var/spack/repos/builtin/packages/visit/19958-enable-python-and-check-pip.patch new file mode 100644 index 00000000000000..a4f0f2dd471750 --- /dev/null +++ b/var/spack/repos/builtin/packages/visit/19958-enable-python-and-check-pip.patch @@ -0,0 +1,60 @@ +diff --git a/src/CMake/FindVisItPython.cmake b/src/CMake/FindVisItPython.cmake +index f8fca9f730..76ab1f54ca 100644 +--- a/src/CMake/FindVisItPython.cmake ++++ b/src/CMake/FindVisItPython.cmake +@@ -280,6 +280,13 @@ if(PYTHONINTERP_FOUND) + endif() + endif() + ++ # Ensure pip module is avaiable ++ execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import sys; import pip; sys.stdout.write(pip.__version__)" ++ OUTPUT_VARIABLE PYTHON_PIP_VERSION ++ ERROR_VARIABLE ERROR_FINDING_PYTHON_PIP_MODULE ++ COMMAND_ERROR_IS_FATAL ANY) ++ message(STATUS "PYTHON_PIP_VERSION: ${PYTHON_PIP_VERSION}") ++ + if(NOT EXISTS ${PYTHON_LIBRARY}) + message(FATAL_ERROR "Failed to find main library using PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}") + endif() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 422bef895f..dacbaf0552 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -1226,15 +1226,17 @@ if(NOT VISIT_DBIO_ONLY) + endif() + endif() + ++# Configure python CLI extensions ++if(VISIT_PYTHON_SCRIPTING AND PYTHONLIBS_FOUND) ++ if(NOT VISIT_STATIC) ++ add_subdirectory(visitpy) ++ endif() ++endif() ++ + if(NOT VISIT_SERVER_COMPONENTS_ONLY AND NOT VISIT_ENGINE_ONLY AND NOT VISIT_DBIO_ONLY) + add_subdirectory(vtkqt) + add_subdirectory(winutil) + add_subdirectory(gui) +- if(VISIT_PYTHON_SCRIPTING AND PYTHONLIBS_FOUND) +- if(NOT VISIT_STATIC) +- add_subdirectory(visitpy) +- endif() +- endif() + # always add java subdir, so code gen targets can be active even + # if java is not enabled + add_subdirectory(java) +diff --git a/src/viewer/CMakeLists.txt b/src/viewer/CMakeLists.txt +index e47b0f271a..be9b2486ca 100644 +--- a/src/viewer/CMakeLists.txt ++++ b/src/viewer/CMakeLists.txt +@@ -11,9 +11,9 @@ + + ADD_SUBDIRECTORY(rpc) + ADD_SUBDIRECTORY(core) ++ADD_SUBDIRECTORY(proxy) + + IF(NOT VISIT_SERVER_COMPONENTS_ONLY AND NOT VISIT_ENGINE_ONLY AND NOT VISIT_DBIO_ONLY) +- ADD_SUBDIRECTORY(proxy) + ADD_SUBDIRECTORY(subjectproxy) + IF(NOT VISIT_STATIC) + # "main" is handled from the top level in the static case so it can be diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index ab24314e357bf1..a95b9943b47879 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -58,6 +58,12 @@ class Visit(CMakePackage): executables = ["^visit$"] version("develop", branch="develop") + version("3.4.1", sha256="942108cb294f4c9584a1628225b0be39c114c7e9e01805fb335d9c0b507689f5") + version( + "3.4.0", + sha256="6cfb8b190045439e39fa6014dfa797de189bd40bbb9aa6facf711ebd908229e3", + deprecated=True, + ) version("3.3.3", sha256="cc67abb7585e23b51ad576e797df4108641ae6c8c5e80e5359a279c729769187") version("3.3.2", sha256="0ae7c38287598e8d7d238cf284ea8be1096dcf13f58a7e9e444a28a32c085b56") version("3.3.1", sha256="2e969d3146b559fb833e4cdfaefa72f303d8ad368ef325f68506003f7bc317b9") @@ -76,7 +82,9 @@ class Visit(CMakePackage): depends_on("fortran", type="build") # generated root_cmakelists_dir = "src" - generator("ninja") + generator("ninja", "make") + # Temporary fix for now due to issue installing with ninja generator + conflicts("generator=ninja", when="+python") variant("gui", default=True, description="Enable VisIt's GUI") variant("adios2", default=True, description="Enable ADIOS2 file format") @@ -94,7 +102,7 @@ class Visit(CMakePackage): patch("spack-changes-3.0.1.patch", when="@3.0.1") patch("nonframework-qwt.patch", when="^qt~framework platform=darwin") patch("parallel-hdf5.patch", when="@3.0.1:3.2.2+hdf5+mpi") - patch("parallel-hdf5-3.3.patch", when="@3.3.0:+hdf5+mpi") + patch("parallel-hdf5-3.3.patch", when="@3.3.0:3.3+hdf5+mpi") patch("cmake-findvtkh-3.3.patch", when="@3.3.0:3.3.2+vtkm") patch("cmake-findjpeg.patch", when="@3.1.0:3.2.2") patch("cmake-findjpeg-3.3.patch", when="@3.3.0") @@ -108,15 +116,22 @@ class Visit(CMakePackage): # Fix const-correctness in VTK interface patch("vtk-8.2-constcorrect.patch", when="@3.3.3 ^vtk@8.2.1a") + # Add dectection for py-pip and enable python extensions with building with GUI + patch("19958-enable-python-and-check-pip.patch", when="@3.4:3.4.1 +python") + conflicts( "+gui", when="^[virtuals=gl] osmesa", msg="GUI cannot be activated with OSMesa front-end" ) depends_on("cmake@3.14.7:", type="build") + depends_on("cmake@3.24:", type="build", when="@3.4:") depends_on("mpi", when="+mpi") + conflicts("mpi", when="~mpi") # VTK flavors - depends_on("vtk@8.1:8 +opengl2") + depends_on("vtk +opengl2") + depends_on("vtk@8.1:8", when="@:3.3") + depends_on("vtk@9.2.6", when="@3.4:") depends_on("vtk +qt", when="+gui") depends_on("vtk +python", when="+python") depends_on("vtk +mpi", when="+mpi") @@ -135,12 +150,14 @@ class Visit(CMakePackage): depends_on("gl") # VisIt doesn't work with later versions of qt. - depends_on("qt+gui+opengl@5:5.14", when="+gui") + depends_on("qt+gui+opengl", when="+gui") + depends_on("qt@5:5.14", when="+gui") depends_on("qwt+opengl", when="+gui") - # python@3.8 doesn't work with VisIt. + # python@3.8 doesn't work with older VisIt. depends_on("python@3.2:3.7,3.9:", when="@:3.2 +python") depends_on("python@3.2:", when="@3.3: +python") + depends_on("py-pip", when="+python") extends("python", when="+python") # VisIt uses the hdf5 1.8 api @@ -177,13 +194,13 @@ class Visit(CMakePackage): with when("+adios2"): depends_on("adios2") # adios 2.8 removed adios2_taustubs (https://github.com/visit-dav/visit/issues/19209) - depends_on("adios2@:2.7.1") + # Fixed in 3.4.1 + depends_on("adios2@:2.7.1", when="@:3.4.0") depends_on("adios2+hdf5", when="+hdf5") depends_on("adios2~hdf5", when="~hdf5") depends_on("adios2+mpi", when="+mpi") depends_on("adios2~mpi", when="~mpi") depends_on("adios2+python", when="+python") - depends_on("adios2~python", when="~python") # For version 3.3.0 through 3.3.2, we used vtk-h to utilize vtk-m. # For version starting with 3.3.3 we use vtk-m directly. @@ -243,6 +260,12 @@ def cmake_args(self): self.define("VISIT_CONFIG_SITE", "NONE"), ] + # TODO: Remove this hack when VTK 8.2.1a is removed + if spec["vtk"].satisfies("@8.2.1a"): + args.append(self.define("VISIT_VTK_VERSION", "8.2.1")) + else: + args.append(self.define("VISIT_VTK_VERSION", str(spec["vtk"].version))) + # Provide the plugin compilation environment so as to extend VisIt args.append(self.define_from_variant("VISIT_INSTALL_THIRD_PARTY", "plugins")) From a9b3e1670b245a60b621d142baec92776dd408d0 Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:19:05 -0500 Subject: [PATCH 555/615] mpifileutils%cce: append cflags -Wno-error=implicit-function-declaration (#47700) --- var/spack/repos/builtin/packages/mpifileutils/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index ffe5e9e9e70da7..b95440848ddfd6 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -66,7 +66,7 @@ class Mpifileutils(CMakePackage): def flag_handler(self, name, flags): spec = self.spec if name == "cflags": - if spec.satisfies("%oneapi"): + if spec.satisfies("%oneapi") or spec.satisfies("%cce"): flags.append("-Wno-error=implicit-function-declaration") return (flags, None, None) From 29cf1559cc4a92051b58f43b070e7ca90e76000c Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:09:14 -0500 Subject: [PATCH 556/615] netlib-scalapack %cce: add cflags -Wno-error=implicit-function-declaration (#47701) --- var/spack/repos/builtin/packages/netlib-scalapack/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 245dcfaf0c7a70..50c1504e89b4f1 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -42,6 +42,8 @@ class ScalapackBase(CMakePackage): def flag_handler(self, name, flags): if name == "cflags": + if self.spec.satisfies("%cce"): + flags.append("-Wno-error=implicit-function-declaration") if self.spec.satisfies("%gcc@14:"): # https://bugzilla.redhat.com/show_bug.cgi?id=2178710 flags.append("-std=gnu89") From 453af4b9f7b63be3e5db4c74984e5a540b0f1c1d Mon Sep 17 00:00:00 2001 From: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:56:19 -0500 Subject: [PATCH 557/615] hdf5-vol-cache %cce: add -Wno-error=incompatible-function-pointer-types (#47698) --- var/spack/repos/builtin/packages/hdf5-vol-cache/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py b/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py index d6882f3d281c92..8a9cf389ff2c6e 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py @@ -27,7 +27,7 @@ class Hdf5VolCache(CMakePackage): def flag_handler(self, name, flags): if name == "cflags": - if self.spec.satisfies("%oneapi"): + if self.spec.satisfies("%oneapi") or self.spec.satisfies("%cce"): flags.append("-Wno-error=incompatible-function-pointer-types") return (flags, None, None) From fe746bdebb1f08962d286c4da37e88204942a813 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Thu, 21 Nov 2024 13:37:57 +0100 Subject: [PATCH 558/615] aws-ofi-nccl: Add 1.8.1 to 1.13.0 (#47717) --- .../repos/builtin/packages/aws-ofi-nccl/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py b/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py index adb7474869c4f3..ed1c0d7ed7b09e 100644 --- a/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py +++ b/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py @@ -18,6 +18,16 @@ class AwsOfiNccl(AutotoolsPackage): maintainers("bvanessen") version("master", branch="master") + version("1.13.0", sha256="50dd231a0a99cec29300df46b8e828139ced15322a3c3c41b1d22dcc9a62ec02") + version("1.12.1", sha256="821f0929c016e5448785bbc6795af5096559ecfc6c9479eb3818cafa61424576") + version("1.12.0", sha256="93029207103b75f4dc15f023b3b8692851202b52b7e2824723dd5d328f0ea65b") + version("1.11.1", sha256="a300e620e03ba3cc0915f9d466232ff0bf6c84edf4e2cd93592d53cf2a62741b") + version("1.11.0", sha256="45d935133b183c945c16b70d8428d676a554faf5bd922b7909e9f1ec55ba6168") + version("1.10.0", sha256="ed63f627b42c7b0f7312ce2916a3c4dfeb5145f78b492c0d1e0d0a6828a0474c") + version("1.9.2", sha256="f763771e511ae3bc7bb708795f9802867a4a2bc4e4df6a265c7f6a033e9a8b9a") + version("1.9.1", sha256="3ee01258674e70d6966eb6d319461f9b882afae618e217e0ae7ec03d26169b35") + version("1.9.0", sha256="8d6d0469110a89b5431836d263860fb60fde7beccb26f553de41dca1feb61b51") + version("1.8.1", sha256="beb59959be0f60b891f9549f4df51b394e97e739416c88c3436e75516fe067c8") version("1.8.1", sha256="beb59959be0f60b891f9549f4df51b394e97e739416c88c3436e75516fe067c8") version("1.8.0", sha256="a2f1750d4908924985335e513186353d0c4d9a5d27b1a759f6aa31a10e74c06d") version("1.7.4", sha256="472bbc977ce37d0cf9239b8e366f4f247226a984eb8c487aadd884af53f00e13") From 5fd12b7bea4abfe6bba08e592f6f82d93800218a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 21 Nov 2024 14:49:12 +0100 Subject: [PATCH 559/615] Add further missing C, C++ dependencies to packages (#47662) --- var/spack/repos/builtin/packages/arborx/package.py | 2 +- var/spack/repos/builtin/packages/asio/package.py | 1 + var/spack/repos/builtin/packages/cgal/package.py | 3 ++- .../repos/builtin/packages/dla-future-fortran/package.py | 4 +++- var/spack/repos/builtin/packages/er/package.py | 3 ++- var/spack/repos/builtin/packages/fides/package.py | 3 ++- var/spack/repos/builtin/packages/gcc/package.py | 5 ++--- var/spack/repos/builtin/packages/gmake/package.py | 2 +- var/spack/repos/builtin/packages/hdf5/package.py | 5 +---- var/spack/repos/builtin/packages/libgff/package.py | 3 ++- var/spack/repos/builtin/packages/libxml2/package.py | 2 +- var/spack/repos/builtin/packages/mgard/package.py | 3 ++- var/spack/repos/builtin/packages/mpifileutils/package.py | 3 ++- var/spack/repos/builtin/packages/nccmp/package.py | 3 ++- var/spack/repos/builtin/packages/netcdf-cxx/package.py | 3 ++- var/spack/repos/builtin/packages/netcdf-cxx4/package.py | 3 +++ var/spack/repos/builtin/packages/openpmd-api/package.py | 3 ++- var/spack/repos/builtin/packages/papyrus/package.py | 3 +++ var/spack/repos/builtin/packages/py-amrex/package.py | 1 + var/spack/repos/builtin/packages/rocminfo/package.py | 3 ++- var/spack/repos/builtin/packages/scotch/package.py | 5 +++-- var/spack/repos/builtin/packages/spiral-software/package.py | 3 ++- var/spack/repos/builtin/packages/sz/package.py | 1 + var/spack/repos/builtin/packages/xyce/package.py | 5 +++-- var/spack/repos/builtin/packages/yaml-cpp/package.py | 3 ++- 25 files changed, 48 insertions(+), 27 deletions(-) diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index da7b9e857c6b9a..c3f2864ded4e74 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -38,7 +38,7 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): deprecated=True, ) - depends_on("cxx", type="build") # generated + depends_on("cxx", type="build") # Allowed C++ standard variant( diff --git a/var/spack/repos/builtin/packages/asio/package.py b/var/spack/repos/builtin/packages/asio/package.py index 27d1acb3e79a4c..c5e89f5b031a1d 100644 --- a/var/spack/repos/builtin/packages/asio/package.py +++ b/var/spack/repos/builtin/packages/asio/package.py @@ -62,6 +62,7 @@ class Asio(AutotoolsPackage): version("1.16.1", sha256="e40bbd531530f08318b7c7d7e84e457176d8eae6f5ad2e3714dc27b9131ecd35") version("1.16.0", sha256="c87410ea62de6245aa239b9ed2057edf01d7f66acc3f5e50add9a29343c87512") + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("autoconf", type="build") diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index a8f0e3aa9a9597..1e1f61afa3d603 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -34,7 +34,8 @@ class Cgal(CMakePackage): version("4.7", sha256="50bd0a1cad7a8957b09012f831eebaf7d670e2a3467e8f365ec0c71fa5436369") version("4.6.3", sha256="e338027b8767c0a7a6e4fd8679182d1b83b5b1a0da0a1fe4546e7c0ca094fc21") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # @5: is header only and doesn't build shared libs variant( diff --git a/var/spack/repos/builtin/packages/dla-future-fortran/package.py b/var/spack/repos/builtin/packages/dla-future-fortran/package.py index 0d50d05e002b28..0937a13782ea62 100644 --- a/var/spack/repos/builtin/packages/dla-future-fortran/package.py +++ b/var/spack/repos/builtin/packages/dla-future-fortran/package.py @@ -24,7 +24,9 @@ class DlaFutureFortran(CMakePackage): version("0.2.0", sha256="7fd3e1779c111b35f0d2701a024398b4f6e8dea4af523b6c8617d28c0b7ae61a") version("0.1.0", sha256="9fd8a105cbb2f3e1daf8a49910f98fce68ca0b954773dba98a91464cf2e7c1da") - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") variant("shared", default=True, description="Build shared libraries.") variant("test", default=False, description="Build tests.") diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py index 8dc7622d981370..bb2dd375014fa1 100644 --- a/var/spack/repos/builtin/packages/er/package.py +++ b/var/spack/repos/builtin/packages/er/package.py @@ -27,7 +27,8 @@ class Er(CMakePackage): version("0.0.4", sha256="c456d34719bb57774adf6d7bc2fa9917ecb4a9de442091023c931a2cb83dfd37") version("0.0.3", sha256="243b2b46ea274e17417ef5873c3ed7ba16dacdfdaf7053d1de5434e300de796b") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("mpi") depends_on("kvtree+mpi") diff --git a/var/spack/repos/builtin/packages/fides/package.py b/var/spack/repos/builtin/packages/fides/package.py index c7463005f75321..ca13b067108987 100644 --- a/var/spack/repos/builtin/packages/fides/package.py +++ b/var/spack/repos/builtin/packages/fides/package.py @@ -20,7 +20,8 @@ class Fides(CMakePackage): version("1.1.0", sha256="40d2e08b8d5cfdfc809eae6ed2ae0731108ce3b1383485f4934a5ec8aaa9425e") version("1.0.0", sha256="c355fdb4ca3790c1fa9a4491a0d294b8f883b6946c540ad9e5633c9fd8c8c3aa") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("mpi", default=True, description="build mpi support") # Certain CMake versions have been found to break for our use cases diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index abf152915990b6..04b37259b1577b 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -103,9 +103,8 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): version("4.6.4", sha256="35af16afa0b67af9b8eb15cafb76d2bc5f568540552522f5dc2c88dd45d977e8") version("4.5.4", sha256="eef3f0456db8c3d992cbb51d5d32558190bc14f3bc19383dd93acc27acc6befc") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # We specifically do not add 'all' variant here because: # (i) Ada, D, Go, Jit, and Objective-C++ are not default languages. diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index 2e52b7e5ea9746..092d131493e867 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -31,7 +31,7 @@ class Gmake(Package, GNUMirrorPackage): sha256="fc42139fb0d4b4291929788ebaf77e2a4de7eaca95e31f3634ef7d4932051f69", ) - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("guile", default=False, description="Support GNU Guile for embedded scripting") diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index d0132ae2bcbb64..ecd36f1c445f47 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -33,6 +33,7 @@ class Hdf5(CMakePackage): license("custom") + depends_on("c", type="build") depends_on("cxx", type="build", when="+cxx") depends_on("fortran", type="build", when="+fortran") @@ -109,10 +110,6 @@ class Hdf5(CMakePackage): version("1.8.12", sha256="b5cccea850096962b5fd9e96f22c4f47d2379224bb41130d9bc038bb6c37dfcb") version("1.8.10", sha256="4813b79c5fb8701a625b9924b8203bc7154a77f9b826ad4e034144b4056a160a") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated - variant("shared", default=True, description="Builds a shared version of the library") variant("hl", default=False, description="Enable the high-level library") diff --git a/var/spack/repos/builtin/packages/libgff/package.py b/var/spack/repos/builtin/packages/libgff/package.py index 074a58c675e8c3..b682e4af006a15 100644 --- a/var/spack/repos/builtin/packages/libgff/package.py +++ b/var/spack/repos/builtin/packages/libgff/package.py @@ -18,4 +18,5 @@ class Libgff(CMakePackage): version("2.0.0", sha256="7656b19459a7ca7d2fd0fcec4f2e0fd0deec1b4f39c703a114e8f4c22d82a99c") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 8bd6a23b31c1d3..a07f0c1b6a7b14 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -64,7 +64,7 @@ def url_for_version(self, version): version("2.9.2", sha256="5178c30b151d044aefb1b08bf54c3003a0ac55c59c866763997529d60770d5bc") version("2.7.8", sha256="cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec") - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("python", default=False, description="Enable Python support") variant("shared", default=True, description="Build shared library") diff --git a/var/spack/repos/builtin/packages/mgard/package.py b/var/spack/repos/builtin/packages/mgard/package.py index f397ffe08c40cb..12ee2e071ce45a 100644 --- a/var/spack/repos/builtin/packages/mgard/package.py +++ b/var/spack/repos/builtin/packages/mgard/package.py @@ -29,7 +29,8 @@ class Mgard(CMakePackage, CudaPackage): version("2021-11-12", commit="3c05c80a45a51bb6cc5fb5fffe7b1b16787d3366") version("2020-10-01", commit="b67a0ac963587f190e106cc3c0b30773a9455f7a") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant( "serial", diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index b95440848ddfd6..faa2a78b292cc7 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -32,7 +32,8 @@ class Mpifileutils(CMakePackage): version("0.9.1", sha256="15a22450f86b15e7dc4730950b880fda3ef6f59ac82af0b268674d272aa61c69") version("0.9", sha256="1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("xattr", default=True, description="Enable code for extended attributes") variant("lustre", default=False, description="Enable optimizations and features for Lustre") diff --git a/var/spack/repos/builtin/packages/nccmp/package.py b/var/spack/repos/builtin/packages/nccmp/package.py index 4e6d234ecb9f7f..2401623cc13831 100644 --- a/var/spack/repos/builtin/packages/nccmp/package.py +++ b/var/spack/repos/builtin/packages/nccmp/package.py @@ -21,7 +21,8 @@ class Nccmp(CMakePackage): version("1.8.9.0", sha256="da5d2b4dcd52aec96e7d96ba4d0e97efebbd40fe9e640535e5ee3d5cd082ae50") version("1.8.2.0", sha256="7f5dad4e8670568a71f79d2bcebb08d95b875506d3d5faefafe1a8b3afa14f18") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3.12:", type="build") depends_on("netcdf-c", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/netcdf-cxx/package.py b/var/spack/repos/builtin/packages/netcdf-cxx/package.py index 1383e6407d811a..87652b559f4c69 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx/package.py @@ -21,7 +21,8 @@ class NetcdfCxx(AutotoolsPackage): version("4.2", sha256="95ed6ab49a0ee001255eac4e44aacb5ca4ea96ba850c08337a3e4c9a0872ccd1") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("netcdf-c") diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index e5e3d0dc057184..8e9f29584e8cee 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -39,6 +39,9 @@ class NetcdfCxx4(CMakePackage): filter_compiler_wrappers("ncxx4-config", relative_root="bin") + depends_on("c", type="build") + depends_on("cxx", type="build") + def flag_handler(self, name, flags): if name == "cflags" and "+pic" in self.spec: flags.append(self.compiler.cc_pic_flag) diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py index d05af6a7338f8c..54a1cabe2841eb 100644 --- a/var/spack/repos/builtin/packages/openpmd-api/package.py +++ b/var/spack/repos/builtin/packages/openpmd-api/package.py @@ -41,7 +41,8 @@ class OpenpmdApi(CMakePackage): version("0.12.0", tag="0.12.0-alpha", commit="23be484dd2570b5277779eafcc5f1eb70c6d98f2") version("0.11.1", tag="0.11.1-alpha", commit="c40292aafbf564807710424d106304f9670a8304") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Build a shared version of the library") variant("mpi", default=True, description="Enable parallel I/O") diff --git a/var/spack/repos/builtin/packages/papyrus/package.py b/var/spack/repos/builtin/packages/papyrus/package.py index 166dbee53f916e..4540559362b632 100644 --- a/var/spack/repos/builtin/packages/papyrus/package.py +++ b/var/spack/repos/builtin/packages/papyrus/package.py @@ -26,6 +26,9 @@ class Papyrus(CMakePackage): depends_on("mpi") + depends_on("c", type="build") + depends_on("cxx", type="build") + test_requires_compiler = True def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/py-amrex/package.py b/var/spack/repos/builtin/packages/py-amrex/package.py index 60f8687445d9b6..b3ea902a4dda54 100644 --- a/var/spack/repos/builtin/packages/py-amrex/package.py +++ b/var/spack/repos/builtin/packages/py-amrex/package.py @@ -63,6 +63,7 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage): extends("python") + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("cmake@3.20:3", type="build", when="@:24.08") diff --git a/var/spack/repos/builtin/packages/rocminfo/package.py b/var/spack/repos/builtin/packages/rocminfo/package.py index e8d09f88121d1c..96c9e6c603a998 100644 --- a/var/spack/repos/builtin/packages/rocminfo/package.py +++ b/var/spack/repos/builtin/packages/rocminfo/package.py @@ -37,7 +37,8 @@ class Rocminfo(CMakePackage): version("5.3.3", sha256="77e6adc81da6c1d153517e1d28db774205531a2ec188e6518f998328ef7897c6") version("5.3.0", sha256="c279da1d946771d120611b64974fde751534e787a394ceb6b8e0b743c143d782") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3:", type="build") diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index e470491d84759c..ad603de5c7bbea 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -37,8 +37,9 @@ class Scotch(CMakePackage, MakefilePackage): version("6.0.0", sha256="8206127d038bda868dda5c5a7f60ef8224f2e368298fbb01bf13fa250e378dd4") version("5.1.10b", sha256="54c9e7fafefd49d8b2017d179d4f11a655abe10365961583baaddc4eeb6a9add") - depends_on("c", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") build_system(conditional("cmake", when="@7:"), "makefile", default="cmake") variant("threads", default=True, description="use POSIX Pthreads within Scotch and PT-Scotch") diff --git a/var/spack/repos/builtin/packages/spiral-software/package.py b/var/spack/repos/builtin/packages/spiral-software/package.py index 7bcaa1a69f6837..169c0ded1e5dc7 100644 --- a/var/spack/repos/builtin/packages/spiral-software/package.py +++ b/var/spack/repos/builtin/packages/spiral-software/package.py @@ -26,7 +26,8 @@ class SpiralSoftware(CMakePackage): version("8.4.0", sha256="d0c58de65c678130eeee6b8b8b48061bbe463468990f66d9b452225ce46dee19") version("8.3.0", sha256="41cf0e7f14f9497e98353baa1ef4ca6204ce5ca525db8093f5bb44e89992abdf") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") extendable = True diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index 092768669e9315..72fab24143d59d 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -48,6 +48,7 @@ class Sz(CMakePackage, AutotoolsPackage): depends_on("c", type="build") depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") build_system( conditional("autotools", when="@:2.1.8.0"), diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py index 94b6fbeffcb696..de0a94f836cfee 100644 --- a/var/spack/repos/builtin/packages/xyce/package.py +++ b/var/spack/repos/builtin/packages/xyce/package.py @@ -60,8 +60,9 @@ class Xyce(CMakePackage): deprecated=True, ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("cmake@3.22:", type="build") depends_on("flex") diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index f44cce75d8b07b..1a3b8afa72673e 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -28,7 +28,8 @@ class YamlCpp(CMakePackage): version("0.5.3", sha256="decc5beabb86e8ed9ebeb04358d5363a5c4f72d458b2c788cb2f3ac9c19467b2") version("0.3.0", sha256="ab8d0e07aa14f10224ed6682065569761f363ec44bc36fcdb2946f6d38fe5a89") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Build shared instead of static libraries") variant("pic", default=True, description="Build with position independent code") From f41b38e93d4b282776a7a6e0eafc29a094e09246 Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Thu, 21 Nov 2024 08:08:27 -0600 Subject: [PATCH 560/615] xsdk: add v1.1.0 (#47635) xsdk: exclude pflotran, alquimia, exago heffte: ~fftw when=+hip dealii: ~sundials ~opencascade ~vtk ~taskflow --- .../repos/builtin/packages/xsdk/package.py | 76 +++++++++++++++++-- 1 file changed, 71 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 8048808a65bf1a..832d9537c62e30 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -84,6 +84,7 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): homepage = "https://xsdk.info" maintainers("balay", "luszczek", "balos1", "shuds13", "v-dobrev") + version("1.1.0") version("1.0.0") version("0.8.0", deprecated=True) @@ -94,7 +95,7 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): variant("omega-h", default=True, description="Enable omega-h package build") variant("strumpack", default=True, description="Enable strumpack package build") variant("dealii", default=True, description="Enable dealii package build") - variant("alquimia", default=True, description="Enable alquimia package build") + variant("alquimia", default=True, when="@:1.0.0", description="Enable alquimia package build") variant("phist", default=True, description="Enable phist package build") variant("ginkgo", default=True, description="Enable ginkgo package build") variant("libensemble", default=True, description="Enable py-libensemble package build") @@ -105,16 +106,25 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): variant("heffte", default=True, description="Enable heffte package build") variant("slate", default=(sys.platform != "darwin"), description="Enable slate package build") variant("arborx", default=True, description="Enable ArborX build") - variant("exago", default=True, description="Enable exago build") + variant("exago", default=True, when="@:1.0.0", description="Enable exago build") variant("hiop", default=True, description="Enable hiop build") variant("raja", default=(sys.platform != "darwin"), description="Enable raja for hiop, exago") - variant("pflotran", default=True, description="Enable pflotran package build") + variant("pflotran", default=True, when="@:1.0.0", description="Enable pflotran package build") + xsdk_depends_on( + "hypre@2.32.0+superlu-dist+shared", when="@1.1.0", cuda_var="cuda", rocm_var="rocm" + ) xsdk_depends_on( "hypre@2.30.0+superlu-dist+shared", when="@1.0.0", cuda_var="cuda", rocm_var="rocm" ) xsdk_depends_on("hypre@2.26.0+superlu-dist+shared", when="@0.8.0", cuda_var="cuda") + xsdk_depends_on( + "mfem@4.7.0+shared+mpi+superlu-dist+petsc+sundials+examples+miniapps", + when="@1.1.0", + cuda_var="cuda", + rocm_var="rocm", + ) xsdk_depends_on( "mfem@4.6.0+shared+mpi+superlu-dist+petsc+sundials+examples+miniapps", when="@1.0.0", @@ -128,10 +138,18 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): rocm_var="rocm", ) + xsdk_depends_on("superlu-dist@9.1.0", when="@1.1.0", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("superlu-dist@8.2.1", when="@1.0.0", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("superlu-dist@8.1.2", when="@0.8.0") xsdk_depends_on("trilinos +superlu-dist", when="@1.0.0: +trilinos ~cuda ~rocm") + xsdk_depends_on( + "trilinos@16.0.0+hypre+hdf5~mumps+boost" + + "~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2" + + "~exodus~dtk+intrepid2+shards+stratimikos gotype=int" + + " cxxstd=17", + when="@1.1.0 +trilinos", + ) xsdk_depends_on( "trilinos@14.4.0+hypre+hdf5~mumps+boost" + "~suite-sparse+tpetra+nox+ifpack2+zoltan+zoltan2+amesos2" @@ -147,12 +165,19 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): when="@0.8.0 +trilinos", ) + xsdk_depends_on("datatransferkit@3.1.1", when="@1.1.0 +trilinos +datatransferkit") xsdk_depends_on("datatransferkit@3.1.1", when="@1.0.0 +trilinos +datatransferkit") dtk7ver = "3.1-rc2" if sys.platform == "darwin" else "3.1-rc3" xsdk_depends_on("datatransferkit@" + dtk7ver, when="@0.8.0 +trilinos +datatransferkit") xsdk_depends_on("petsc +batch", when="^cray-mpich") xsdk_depends_on("petsc +sycl +kokkos", when="@1.0.0: +sycl") + xsdk_depends_on( + "petsc@3.22.1+mpi+hypre+superlu-dist+metis+hdf5~mumps+double~int64", + when="@1.1.0", + cuda_var="cuda", + rocm_var="rocm", + ) xsdk_depends_on( "petsc@3.20.1+mpi+hypre+superlu-dist+metis+hdf5~mumps+double~int64", when="@1.0.0", @@ -168,6 +193,12 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("dealii +trilinos~adol-c", when="+trilinos +dealii") xsdk_depends_on("dealii ~trilinos", when="~trilinos +dealii") + xsdk_depends_on( + "dealii@9.6.0~assimp~python~doc~gmsh+petsc+slepc+mpi~int64" + + "~netcdf+metis~sundials~ginkgo~symengine~simplex~arborx~cgal~oce" + + "~opencascade~vtk~taskflow", + when="@1.1.0 +dealii", + ) xsdk_depends_on( "dealii@9.5.1~assimp~python~doc~gmsh+petsc+slepc+mpi~int64" + "~netcdf+metis+sundials~ginkgo~symengine~simplex~arborx~cgal~oce" @@ -190,6 +221,12 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("sundials +trilinos", when="+trilinos") xsdk_depends_on("sundials +ginkgo", when="+ginkgo @0.8.0:") xsdk_depends_on("sundials +sycl cxxstd=17", when="@1.0.0: +sycl") + xsdk_depends_on( + "sundials@7.1.1~int64+hypre+petsc+superlu-dist", + when="@1.1.0", + cuda_var=["cuda", "?magma"], + rocm_var=["rocm", "?magma"], + ) xsdk_depends_on( "sundials@6.6.2~int64+hypre+petsc+superlu-dist", when="@1.0.0", @@ -203,33 +240,43 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): rocm_var=["rocm", "?magma"], ) + xsdk_depends_on("plasma@24.8.7", when="@1.1.0 %gcc@6.0:") xsdk_depends_on("plasma@23.8.2:", when="@1.0.0 %gcc@6.0:") xsdk_depends_on("plasma@22.9.29:", when="@0.8.0 %gcc@6.0:") + xsdk_depends_on("magma@2.8.0", when="@1.1.0", cuda_var="?cuda", rocm_var="?rocm") xsdk_depends_on("magma@2.7.1", when="@1.0.0", cuda_var="?cuda", rocm_var="?rocm") xsdk_depends_on("magma@2.7.0", when="@0.8.0", cuda_var="?cuda", rocm_var="?rocm") xsdk_depends_on("amrex +sycl", when="@1.0.0: +sycl") + xsdk_depends_on("amrex@24.10+sundials", when="@1.1.0 +amrex", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("amrex@23.08+sundials", when="@1.0.0 +amrex", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("amrex@22.09+sundials", when="@0.8.0 +amrex", cuda_var="cuda", rocm_var="rocm") + xsdk_depends_on("slepc@3.22.1", when="@1.1.0", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("slepc@3.20.0", when="@1.0.0", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("slepc@3.18.1", when="@0.8.0", cuda_var="cuda", rocm_var="rocm") xsdk_depends_on("omega-h +trilinos", when="+trilinos +omega-h") xsdk_depends_on("omega-h ~trilinos", when="~trilinos +omega-h") + xsdk_depends_on("omega-h@10.8.6", when="@1.1.0 +omega-h") xsdk_depends_on("omega-h@10.6.0", when="@1.0.0 +omega-h") xsdk_depends_on("omega-h@9.34.13", when="@0.8.0 +omega-h") xsdk_depends_on("strumpack ~cuda", when="~cuda +strumpack") xsdk_depends_on("strumpack ~slate~openmp", when="~slate @0.8.0: +strumpack") + xsdk_depends_on("strumpack@8.0.0", when="@1.1.0 +strumpack", cuda_var=["cuda"]) xsdk_depends_on("strumpack@7.2.0", when="@1.0.0 +strumpack", cuda_var=["cuda"]) xsdk_depends_on("strumpack@7.0.1", when="@0.8.0 +strumpack", cuda_var=["cuda"]) + xsdk_depends_on("pumi@2.2.9+shared", when="@1.1.0") xsdk_depends_on("pumi@2.2.8+shared", when="@1.0.0") xsdk_depends_on("pumi@2.2.7+shared", when="@0.8.0") tasmanian_openmp = "~openmp" if sys.platform == "darwin" else "+openmp" + xsdk_depends_on( + "tasmanian@8.1+mpi+blas" + tasmanian_openmp, when="@1.1.0", cuda_var=["cuda", "?magma"] + ) xsdk_depends_on( "tasmanian@8.0+mpi+blas" + tasmanian_openmp, when="@1.0.0", cuda_var=["cuda", "?magma"] ) @@ -240,6 +287,7 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): ) xsdk_depends_on("arborx+sycl", when="@1.0.0: +arborx +sycl") + xsdk_depends_on("arborx@1.7", when="@1.1.0 +arborx") xsdk_depends_on("arborx@1.4.1", when="@1.0.0 +arborx") xsdk_depends_on("arborx@1.2", when="@0.8.0 +arborx") @@ -251,10 +299,14 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("phist kernel_lib=tpetra", when="+trilinos +phist") xsdk_depends_on("phist kernel_lib=petsc", when="~trilinos +phist") + xsdk_depends_on("phist@1.12.1 ~fortran ~scamac ~openmp ~host ~int64", when="@1.1.0 +phist") xsdk_depends_on("phist@1.12.0 ~fortran ~scamac ~openmp ~host ~int64", when="@1.0.0 +phist") xsdk_depends_on("phist@1.11.2 ~fortran ~scamac ~openmp ~host ~int64", when="@0.8.0 +phist") xsdk_depends_on("ginkgo+sycl", when="@1.0.0: +ginkgo +sycl") + xsdk_depends_on( + "ginkgo@1.8.0 +mpi ~openmp", when="@1.1.0 +ginkgo", cuda_var="cuda", rocm_var="rocm" + ) xsdk_depends_on( "ginkgo@1.7.0 +mpi ~openmp", when="@1.0.0 +ginkgo", cuda_var="cuda", rocm_var="rocm" ) @@ -262,32 +314,44 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): "ginkgo@1.5.0 +mpi ~openmp", when="@0.8.0 +ginkgo", cuda_var="cuda", rocm_var="rocm" ) + xsdk_depends_on("py-libensemble@1.4.2+petsc4py", when="@1.1.0 +libensemble") + xsdk_depends_on("py-petsc4py@3.22.1", when="@1.1.0 +libensemble") xsdk_depends_on("py-libensemble@1.0.0+petsc4py", when="@1.0.0 +libensemble") xsdk_depends_on("py-petsc4py@3.20.1", when="@1.0.0 +libensemble") xsdk_depends_on("py-libensemble@0.9.3+petsc4py", when="@0.8.0 +libensemble") xsdk_depends_on("py-petsc4py@3.18.1", when="@0.8.0 +libensemble") xsdk_depends_on("precice ~petsc", when="+precice ^cray-mpich") + xsdk_depends_on("precice@3.1.2", when="@1.1.0 +precice") xsdk_depends_on("precice@2.5.0", when="@1.0.0 +precice") xsdk_depends_on("precice@2.5.0", when="@0.8.0 +precice") bfpk_openmp = "~openmp" if sys.platform == "darwin" else "+openmp" + xsdk_depends_on("butterflypack@3.2.0" + bfpk_openmp, when="@1.1.0 +butterflypack") xsdk_depends_on("butterflypack@2.4.0" + bfpk_openmp, when="@1.0.0 +butterflypack") xsdk_depends_on("butterflypack@2.2.2" + bfpk_openmp, when="@0.8.0 +butterflypack") + xsdk_depends_on("heffte+fftw", when="+heffte ~rocm") + xsdk_depends_on( + "heffte@2.4.1", + when="@1.1.0 +heffte", + cuda_var=["cuda", "?magma"], + rocm_var=["rocm", "?magma"], + ) xsdk_depends_on( - "heffte@2.4.0+fftw", + "heffte@2.4.0", when="@1.0.0 +heffte", cuda_var=["cuda", "?magma"], rocm_var=["rocm", "?magma"], ) xsdk_depends_on( - "heffte@2.3.0+fftw", + "heffte@2.3.0", when="@0.8.0 +heffte", cuda_var=["cuda", "?magma"], rocm_var=["rocm", "?magma"], ) + xsdk_depends_on("slate@2024.10.29", when="@1.1.0 +slate", cuda_var="cuda") xsdk_depends_on("slate@2023.08.25", when="@1.0.0 +slate", cuda_var="cuda") xsdk_depends_on("slate@2022.07.00", when="@0.8.0 +slate", cuda_var="cuda") @@ -296,6 +360,8 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("exago@1.5.0~ipopt~hiop~python", when="@0.8.0 +exago ~raja") xsdk_depends_on("exago@1.5.0~ipopt+hiop+raja", when="@0.8.0 +exago +raja", cuda_var="cuda") + xsdk_depends_on("hiop@1.1.0", when="@1.1.0 +hiop ~raja") + xsdk_depends_on("hiop@1.1.0+raja", when="@1.1.0 +hiop +raja", cuda_var="cuda") xsdk_depends_on("hiop@1.0.0", when="@1.0.0 +hiop ~raja") xsdk_depends_on("hiop@1.0.0+raja", when="@1.0.0 +hiop +raja", cuda_var="cuda") xsdk_depends_on("hiop@0.7.1", when="@0.8.0 +hiop ~raja") From 7f0bb7147de3c7dc8fc33ec624c42915df5f43bd Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 21 Nov 2024 16:46:46 +0100 Subject: [PATCH 561/615] README.md update old tutorial URL (#47718) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af2ee583de74e7..feff4b31053809 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Tutorial ---------------- We maintain a -[**hands-on tutorial**](https://spack.readthedocs.io/en/latest/tutorial.html). +[**hands-on tutorial**](https://spack-tutorial.readthedocs.io/). It covers basic to advanced usage, packaging, developer features, and large HPC deployments. You can do all of the exercises on your own laptop using a Docker container. From 6ebafe46313ebb9dcb23a5cb08012e5ea20aa5e1 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Thu, 21 Nov 2024 19:03:09 -0500 Subject: [PATCH 562/615] vecgeom: add v1.2.10 and delete unused, deprecated versions (#47725) * vecgeom: add v1.2.10 * Remove unused+deprecated versions of vecgeom * Deprecate older v1.2.x versions * [@spackbot] updating style on behalf of sethrj --- .../repos/builtin/packages/vecgeom/package.py | 104 ++---------------- 1 file changed, 10 insertions(+), 94 deletions(-) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index ff0fdd145dc7da..3483d11576554e 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -21,136 +21,52 @@ class Vecgeom(CMakePackage, CudaPackage): maintainers("drbenmorgan", "sethrj") version("master", branch="master") + version( + "1.2.10", + url="https://gitlab.cern.ch/-/project/981/uploads/8e0a94013efdd1b2d4f44c3fbb10bcdf/VecGeom-v1.2.10.tar.gz", + sha256="3e0934842694452e4cb4a265428cb99af1ecc45f0e2d28a32dfeaa0634c21e2a", + ) version( "1.2.9", url="https://gitlab.cern.ch/-/project/981/uploads/55a89cafbf48a418bec68be42867d4bf/VecGeom-v1.2.9.tar.gz", sha256="93ee9ce6f7b2d704e9b9db22fad68f81b8eaf17453452969fc47e93dba4bfaf4", + deprecated=True, ) version( "1.2.8", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/db11697eb81d6f369e9ded1078de946b/VecGeom-v1.2.8.tar.gz", sha256="769f59e8377f8268e253a9b2a3eee86868a9ebc1fa66c968b96e19c31440c12b", + deprecated=True, ) version( "1.2.7", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/e4172cca4f6f731ef15e2780ecbb1645/VecGeom-v1.2.7.tar.gz", sha256="d264c69b78bf431b9542be1f1af087517eac629da03cf2da62eb1e433fe06021", + deprecated=True, ) version( "1.2.6", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/0b16aed9907cea62aa5f5914bec99a90/VecGeom-v1.2.6.tar.gz", sha256="337f8846491930f3d8bfa4b45a1589d46e5d1d87f2d38c8f7006645c3aa90df8", + deprecated=True, ) version( "1.2.5", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/33b93e656c5bc49d81cfcba291f5be51/VecGeom-v1.2.5.tar.gz", sha256="d79ea05125e4d03c5605e5ea232994c500841d207b4543ac3d84758adddc15a9", - ) - version( - "1.2.4", - sha256="4f5d43a9cd34a5e0200c41547a438cbb1ed4439f5bb757857c5a225d708590ce", - deprecated=True, - ) - version( - "1.2.3", - sha256="703e52d78b5b78e9f595bc76771659ab0cb09898ea32c50cfbde07d6d09ef1e1", - deprecated=True, - ) - version( - "1.2.2", - sha256="887134d40fc9731138189299f0bd5e73485fbb95a96eb4124ce0854e4672291f", - deprecated=True, - ) - version( - "1.2.1", - sha256="2b47f0d23f6d25ca4fc0601b93a98167bbfb4b8aa6a1bba16d0391569e99e6f0", - deprecated=True, - ) - version( - "1.2.0", - sha256="3448606fceb98ceb72d687d2d3b7ad44c67793d799def4ece9601b8e39c2868a", - deprecated=True, - ) - version( - "1.1.20", - sha256="e1c75e480fc72bca8f8072ea00320878a9ae375eed7401628b15cddd097ed7fd", - deprecated=True, - ) - version( - "1.1.19", - sha256="4c586b57fd4e30be044366c9be983249c7fa8bec629624523f5f69fd9caaa05b", - deprecated=True, - ) - version( - "1.1.18", - sha256="2780640233a36e0d3c767140417015be1893c1ad695ccc0bd3ee0767bc9fbed8", - deprecated=True, - ) - version( - "1.1.17", - sha256="2e95429b795311a6986320d785bedcd9dace9f8e7b7f6bd778d23a4ff23e0424", - deprecated=True, - ) - version( - "1.1.16", - sha256="2fa636993156d9d06750586e8a1ac1701ae2be62dea07964e2369698ae521d02", - deprecated=True, - ) - version( - "1.1.15", - sha256="0ee9897eb12d8d560dc0c9e56e8fdb78d0111f651a984df24e983da035bd1c70", - deprecated=True, - ) - version( - "1.1.13", - sha256="6bb364cc74bdab2e64e2fe132debd7f1e192da0a103f5149df7ab25b7c19a205", - deprecated=True, - ) - version( - "1.1.12", - sha256="fec4495aac4a9d583f076551da61a68b956bba1dd1ebe1cd48c00ef95c962049", - deprecated=True, - ) - version( - "1.1.9", - sha256="a90e11bf83724300d1d7206e5fe89a7915c4ec6aae881587f18e282ac0f6ee8e", - deprecated=True, - ) - version( - "1.1.8", - sha256="9c42206d788ec4b791571882f5ea8d2c591c938abe61c21cc5ec37bfea6bf768", - deprecated=True, - ) - version( - "1.1.7", - sha256="cc79a0baa783b21ecc399c4e7cca925ca340e6aeb96e3b2cad45c141557519bf", - deprecated=True, - ) - version( - "1.1.6", - sha256="c4806a6b67d01b40074b8cc6865d78574a6a1c573be51696f2ecdf98b9cb954a", deprecated=True, ) + version("1.1.20", sha256="e1c75e480fc72bca8f8072ea00320878a9ae375eed7401628b15cddd097ed7fd") version( "1.1.5", sha256="da674f3bbc75c30f56c1a2d251fa8930c899f27fa64b03a36569924030d87b95", deprecated=True, ) - version( - "1.1.3", - sha256="ada09e8b6b2fa6c058290302b2cb5a6c2e644192aab1623c31d18c6a2f4c01c8", - deprecated=True, - ) version( "1.1.0", sha256="e9d1ef83ff591fe4f9ef744a4d3155a3dc7e90ddb6735b24f3afe4c2dc3f7064", deprecated=True, ) - version( - "1.0.1", - sha256="1eae7ac9014c608e8d8db5568058b8c0fea1a1dc7a8f54157a3a1c997b6fd9eb", - deprecated=True, - ) version( "0.5.2", tag="v00.05.02", From ed1dbea77b442cd55848b11e633f6626e83a999d Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 22 Nov 2024 07:20:38 +0100 Subject: [PATCH 563/615] eigen: self.builder.build_directory -> self.build_directory (#47728) --- var/spack/repos/builtin/packages/eigen/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 14d0ad43a78222..1909cdd96e8e72 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -95,7 +95,7 @@ def cmake_args(self): return args def check(self): - ctest_args = ["--test-dir", self.builder.build_directory, "--repeat", "until-pass:3"] + ctest_args = ["--test-dir", self.build_directory, "--repeat", "until-pass:3"] if self.spec.satisfies("+nightly"): ctest_args.append("-D") ctest_args.append("Nightly") From 559c2f1eb9ea7fdaeecf7d4fdf556c544d9de45e Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Fri, 22 Nov 2024 14:33:30 +0100 Subject: [PATCH 564/615] gromacs: oneapi does not always require gcc (#47679) * gromacs: oneapi does not always require gcc * Support intel_provided_gcc only with %intel classic compiler Require gcc only when needed with %intel * New approach depending on gcc-runtime directly * Update var/spack/repos/builtin/packages/gromacs/package.py Co-authored-by: Christoph Junghans --------- Co-authored-by: Christoph Junghans --- var/spack/repos/builtin/packages/gromacs/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 055cbebe14304f..90d17661182672 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -310,8 +310,14 @@ class Gromacs(CMakePackage, CudaPackage): depends_on("sycl", when="+sycl") depends_on("lapack") depends_on("blas") - depends_on("gcc", when="%oneapi ~intel_provided_gcc") depends_on("gcc", when="%intel ~intel_provided_gcc") + # TODO this can be expanded to all clang-based compilers once + # the principle is demonstrated to work + with when("%oneapi ~intel_provided_gcc"): + depends_on("gcc-runtime@5:", when="@2020") + depends_on("gcc-runtime@7:", when="@2021:2022") + depends_on("gcc-runtime@9:", when="@2023:2024") + depends_on("gcc-runtime@11:", when="@2025:") depends_on("hwloc@1.0:1", when="+hwloc@2016:2018") depends_on("hwloc", when="+hwloc@2019:") @@ -540,7 +546,7 @@ def cmake_args(self): ): with open(".".join([os.environ["SPACK_CXX"], "cfg"]), "r") as f: options.append("-DCMAKE_CXX_FLAGS={}".format(f.read())) - else: + elif self.spec.satisfies("^gcc"): options.append("-DGMX_GPLUSPLUS_PATH=%s/g++" % self.spec["gcc"].prefix.bin) if self.spec.satisfies("+double"): From cb3d6549c988cb914583e4d220a2d1c0b0aa6ae2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 22 Nov 2024 15:04:19 +0100 Subject: [PATCH 565/615] traverse.py: ensure topo order is bfs for trees (#47720) --- lib/spack/spack/build_environment.py | 13 ++- lib/spack/spack/graph.py | 7 +- lib/spack/spack/test/graph.py | 13 +++ lib/spack/spack/test/traverse.py | 23 +++++ lib/spack/spack/traverse.py | 149 +++++++++------------------ 5 files changed, 96 insertions(+), 109 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 3a4f8b3fa941bf..c46db63c83b3f6 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -882,6 +882,9 @@ def __init__(self, *roots: spack.spec.Spec, context: Context): elif context == Context.RUN: self.root_depflag = dt.RUN | dt.LINK + def accept(self, item): + return True + def neighbors(self, item): spec = item.edge.spec if spec.dag_hash() in self.root_hashes: @@ -919,19 +922,19 @@ def effective_deptypes( a flag specifying in what way they do so. The list is ordered topologically from root to leaf, meaning that environment modifications should be applied in reverse so that dependents override dependencies, not the other way around.""" - visitor = traverse.TopoVisitor( - EnvironmentVisitor(*specs, context=context), - key=lambda x: x.dag_hash(), + topo_sorted_edges = traverse.traverse_topo_edges_generator( + traverse.with_artificial_edges(specs), + visitor=EnvironmentVisitor(*specs, context=context), + key=traverse.by_dag_hash, root=True, all_edges=True, ) - traverse.traverse_depth_first_with_visitor(traverse.with_artificial_edges(specs), visitor) # Dictionary with "no mode" as default value, so it's easy to write modes[x] |= flag. use_modes = defaultdict(lambda: UseMode(0)) nodes_with_type = [] - for edge in visitor.edges: + for edge in topo_sorted_edges: parent, child, depflag = edge.parent, edge.spec, edge.depflag # Mark the starting point diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index f4ac437df92b38..2d0fc9c3a86fcd 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -325,12 +325,7 @@ def write(self, spec, color=None, out=None): self._out = llnl.util.tty.color.ColorStream(out, color=color) # We'll traverse the spec in topological order as we graph it. - nodes_in_topological_order = [ - edge.spec - for edge in spack.traverse.traverse_edges_topo( - [spec], direction="children", deptype=self.depflag - ) - ] + nodes_in_topological_order = list(spec.traverse(order="topo", deptype=self.depflag)) nodes_in_topological_order.reverse() # Work on a copy to be nondestructive diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index c26363bb46d993..a622e855e55f16 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -73,5 +73,18 @@ def test_ascii_graph_mpileaks(config, mock_packages, monkeypatch): o | libdwarf |/ o libelf +""" + or graph_str + == r"""o mpileaks +|\ +| o callpath +|/| +| o dyninst +| |\ +o | | mpich + / / +| o libdwarf +|/ +o libelf """ ) diff --git a/lib/spack/spack/test/traverse.py b/lib/spack/spack/test/traverse.py index 79e05c0b2c369c..62ce24d366ee1b 100644 --- a/lib/spack/spack/test/traverse.py +++ b/lib/spack/spack/test/traverse.py @@ -431,3 +431,26 @@ def test_traverse_nodes_no_deps(abstract_specs_dtuse): ] outputs = [x for x in traverse.traverse_nodes(inputs, deptype=dt.NONE)] assert outputs == [abstract_specs_dtuse["dtuse"], abstract_specs_dtuse["dtlink5"]] + + +@pytest.mark.parametrize("cover", ["nodes", "edges"]) +def test_topo_is_bfs_for_trees(cover): + """For trees, both DFS and BFS produce a topological order, but BFS is the most sensible for + our applications, where we typically want to avoid that transitive dependencies shadow direct + depenencies in global search paths, etc. This test ensures that for trees, the default topo + order coincides with BFS.""" + binary_tree = create_dag( + nodes=["A", "B", "C", "D", "E", "F", "G"], + edges=( + ("A", "B", "all"), + ("A", "C", "all"), + ("B", "D", "all"), + ("B", "E", "all"), + ("C", "F", "all"), + ("C", "G", "all"), + ), + ) + + assert list(traverse.traverse_nodes([binary_tree["A"]], order="topo", cover=cover)) == list( + traverse.traverse_nodes([binary_tree["A"]], order="breadth", cover=cover) + ) diff --git a/lib/spack/spack/traverse.py b/lib/spack/spack/traverse.py index f6c5589b2aeaf7..158f4d892e3017 100644 --- a/lib/spack/spack/traverse.py +++ b/lib/spack/spack/traverse.py @@ -115,70 +115,6 @@ def neighbors(self, item): return self.visitor.neighbors(item) -class TopoVisitor: - """Visitor that can be used in :py:func:`depth-first traversal - ` to generate - a topologically ordered list of specs. - - Algorithm based on "Section 22.4: Topological sort", Introduction to Algorithms - (2001, 2nd edition) by Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; - Stein, Clifford. - - Summary of the algorithm: prepend each vertex to a list in depth-first post-order, - not following edges to nodes already seen. This ensures all descendants occur after - their parent, yielding a topological order. - - Note: in this particular implementation we collect the *edges* through which the - vertices are discovered, meaning that a topological order of *vertices* is obtained - by taking the specs pointed to: ``map(lambda edge: edge.spec, visitor.edges)``. - Lastly, ``all_edges=True`` can be used to retrieve a list of all reachable - edges, with the property that for each vertex all in-edges precede all out-edges. - """ - - def __init__(self, visitor, key=id, root=True, all_edges=False): - """ - Arguments: - visitor: visitor that implements accept(), pre(), post() and neighbors() - key: uniqueness key for nodes - root (bool): Whether to include the root node. - all_edges (bool): when ``False`` (default): Each node is reached once, - and ``map(lambda edge: edge.spec, visitor.edges)`` is topologically - ordered. When ``True``, every edge is listed, ordered such that for - each node all in-edges precede all out-edges. - """ - self.visited = set() - self.visitor = visitor - self.key = key - self.root = root - self.reverse_order = [] - self.all_edges = all_edges - - def accept(self, item): - if self.key(item.edge.spec) not in self.visited: - return True - if self.all_edges and (self.root or item.depth > 0): - self.reverse_order.append(item.edge) - return False - - def pre(self, item): - # You could add a temporary marker for cycle detection - # that's cleared in `post`, but we assume no cycles. - pass - - def post(self, item): - self.visited.add(self.key(item.edge.spec)) - if self.root or item.depth > 0: - self.reverse_order.append(item.edge) - - def neighbors(self, item): - return self.visitor.neighbors(item) - - @property - def edges(self): - """Return edges in topological order (in-edges precede out-edges).""" - return list(reversed(self.reverse_order)) - - def get_visitor_from_args( cover, direction, depflag: Union[dt.DepFlag, dt.DepTypes], key=id, visited=None, visitor=None ): @@ -381,39 +317,54 @@ def traverse_breadth_first_tree_nodes(parent_id, edges, key=id, depth=0): yield item -# Topologic order -def traverse_edges_topo( - specs, - direction="children", - deptype: Union[dt.DepFlag, dt.DepTypes] = "all", - key=id, - root=True, - all_edges=False, -): +def traverse_topo_edges_generator(edges, visitor, key=id, root=True, all_edges=False): """ - Returns a list of edges in topological order, in the sense that all in-edges of a - vertex appear before all out-edges. By default with direction=children edges are - directed from dependent to dependency. With directions=parents, the edges are - directed from dependency to dependent. + Returns a list of edges in topological order, in the sense that all in-edges of a vertex appear + before all out-edges. Arguments: - specs (list): List of root specs (considered to be depth 0) - direction (str): ``children`` (edges are directed from dependent to dependency) - or ``parents`` (edges are flipped / directed from dependency to dependent) - deptype: allowed dependency types + edges (list): List of EdgeAndDepth instances + visitor: visitor instance that defines the sub-DAG to traverse key: function that takes a spec and outputs a key for uniqueness test. root (bool): Yield the root nodes themselves all_edges (bool): When ``False`` only one in-edge per node is returned, when ``True`` all reachable edges are returned. """ - if not isinstance(deptype, dt.DepFlag): - deptype = dt.canonicalize(deptype) - visitor: Union[BaseVisitor, ReverseVisitor, TopoVisitor] = BaseVisitor(deptype) - if direction == "parents": - visitor = ReverseVisitor(visitor, deptype) - visitor = TopoVisitor(visitor, key=key, root=root, all_edges=all_edges) - traverse_depth_first_with_visitor(with_artificial_edges(specs), visitor) - return visitor.edges + # Topo order used to be implemented using a DFS visitor, which was relatively efficient in that + # it would visit nodes only once, and it was composable. In practice however it would yield a + # DFS order on DAGs that are trees, which is undesirable in many cases. For example, a list of + # search paths for trees is better in BFS order, so that direct dependencies are listed first. + # That way a transitive dependency cannot shadow a direct one. So, here we collect the sub-DAG + # of interest and then compute a topological order that is the most breadth-first possible. + + # maps node identifier to the number of remaining in-edges + in_edge_count = defaultdict(int) + # maps parent identifier to a list of edges, where None is a special identifier + # for the artificial root/source. + node_to_edges = defaultdict(list) + for edge in traverse_breadth_first_edges_generator( + edges, CoverEdgesVisitor(visitor, key=key), root=True, depth=False + ): + in_edge_count[key(edge.spec)] += 1 + parent_id = key(edge.parent) if edge.parent is not None else None + node_to_edges[parent_id].append(edge) + + queue = [None] + + while queue: + for edge in node_to_edges[queue.pop(0)]: + child_id = key(edge.spec) + in_edge_count[child_id] -= 1 + + should_yield = root or edge.parent is not None + + if all_edges and should_yield: + yield edge + + if in_edge_count[child_id] == 0: + if not all_edges and should_yield: + yield edge + queue.append(key(edge.spec)) # High-level API: traverse_edges, traverse_nodes, traverse_tree. @@ -462,20 +413,20 @@ def traverse_edges( A generator that yields ``DependencySpec`` if depth is ``False`` or a tuple of ``(depth, DependencySpec)`` if depth is ``True``. """ - + # validate input if order == "topo": if cover == "paths": raise ValueError("cover=paths not supported for order=topo") - # TODO: There is no known need for topological ordering of traversals (edge or node) - # with an initialized "visited" set. Revisit if needed. if visited is not None: raise ValueError("visited set not implemented for order=topo") - return traverse_edges_topo( - specs, direction, deptype, key, root, all_edges=cover == "edges" - ) + elif order not in ("post", "pre", "breadth"): + raise ValueError(f"Unknown order {order}") + # In topo traversal we need to construct a sub-DAG including all edges even if we are yielding + # a subset of them, hence "paths". + _cover = "paths" if order == "topo" else cover + visitor = get_visitor_from_args(_cover, direction, deptype, key, visited) root_edges = with_artificial_edges(specs) - visitor = get_visitor_from_args(cover, direction, deptype, key, visited) # Depth-first if order in ("pre", "post"): @@ -484,8 +435,10 @@ def traverse_edges( ) elif order == "breadth": return traverse_breadth_first_edges_generator(root_edges, visitor, root, depth) - - raise ValueError("Unknown order {}".format(order)) + elif order == "topo": + return traverse_topo_edges_generator( + root_edges, visitor, key, root, all_edges=cover == "edges" + ) def traverse_nodes( From 5dacb774f6f489d7f521fd11eb4a3391ac45e6c3 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 22 Nov 2024 18:41:23 +0100 Subject: [PATCH 566/615] itk: use vendored googletest (#47687) external googletest breaks dependents because they end up with ITK_LIBRARIES set to `GTest::GTest;GTest::Main`, which then end up literally in a nonsensical link line `-lGTest::GtTest`. the vendored googletest produces a cmake config file where `ITKGoogleTest_LIBRARIES` is empty. --- var/spack/repos/builtin/packages/itk/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/itk/package.py b/var/spack/repos/builtin/packages/itk/package.py index dd3ac52049ef96..f5155a7cc549cb 100644 --- a/var/spack/repos/builtin/packages/itk/package.py +++ b/var/spack/repos/builtin/packages/itk/package.py @@ -63,7 +63,6 @@ class Itk(CMakePackage): depends_on("eigen") depends_on("expat") depends_on("fftw-api") - depends_on("googletest") depends_on("hdf5+cxx+hl") depends_on("jpeg") depends_on("libpng") @@ -79,8 +78,11 @@ class Itk(CMakePackage): def cmake_args(self): use_mkl = self.spec["fftw-api"].name in INTEL_MATH_LIBRARIES args = [ + self.define("BUILD_TESTING", False), self.define("BUILD_SHARED_LIBS", True), self.define("ITK_USE_SYSTEM_LIBRARIES", True), + # https://github.com/InsightSoftwareConsortium/ITK/issues/303 + self.define("ITK_USE_SYSTEM_GOOGLETEST", False), self.define("ITK_USE_MKL", use_mkl), self.define_from_variant("Module_ITKReview", "review"), self.define_from_variant("Module_RTK", "rtk"), From 3dcbd118df52e1bb93aba59c1751e448ee6a9358 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 22 Nov 2024 22:20:41 +0100 Subject: [PATCH 567/615] py-cython: support Python 3.12+ (#47714) and add various other compat bounds on dependents --- .../builtin/packages/py-cython/package.py | 109 ++++++++++++------ .../builtin/packages/py-expandvars/package.py | 19 +++ .../builtin/packages/py-frozenlist/package.py | 27 +++-- .../builtin/packages/py-multidict/package.py | 16 ++- 4 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-expandvars/package.py diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index 96d60cb7681905..a410fdb4fb2c86 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -10,16 +10,12 @@ class PyCython(PythonPackage): """The Cython compiler for writing C extensions for the Python language.""" homepage = "https://github.com/cython/cython" - pypi = "cython/Cython-0.29.21.tar.gz" + pypi = "cython/cython-3.0.11.tar.gz" tags = ["build-tools"] license("Apache-2.0") - version( - "3.0.11", - sha256="7146dd2af8682b4ca61331851e6aebce9fe5158e75300343f80c07ca80b1faff", - url="https://files.pythonhosted.org/packages/source/cython/cython-3.0.11.tar.gz", - ) + version("3.0.11", sha256="7146dd2af8682b4ca61331851e6aebce9fe5158e75300343f80c07ca80b1faff") version("3.0.10", sha256="dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99") version("3.0.8", sha256="8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6") version("3.0.7", sha256="fb299acf3a578573c190c858d49e0cf9d75f4bc49c3f24c5a63804997ef09213") @@ -37,42 +33,83 @@ class PyCython(PythonPackage): version("0.29.23", sha256="6a0d31452f0245daacb14c979c77e093eb1a546c760816b5eed0047686baad8e") version("0.29.22", sha256="df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406") version("0.29.21", sha256="e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad") - version("0.29.20", sha256="22d91af5fc2253f717a1b80b8bb45acb655f643611983fd6f782b9423f8171c7") - version("0.29.16", sha256="232755284f942cbb3b43a06cd85974ef3c970a021aef19b5243c03ee2b08fa05") - version("0.29.15", sha256="60d859e1efa5cc80436d58aecd3718ff2e74b987db0518376046adedba97ac30") - version("0.29.14", sha256="e4d6bb8703d0319eb04b7319b12ea41580df44fd84d83ccda13ea463c6801414") - version("0.29.13", sha256="c29d069a4a30f472482343c866f7486731ad638ef9af92bfe5fca9c7323d638e") - version("0.29.10", sha256="26229570d6787ff3caa932fe9d802960f51a89239b990d275ae845405ce43857") - version("0.29.7", sha256="55d081162191b7c11c7bfcb7c68e913827dfd5de6ecdbab1b99dab190586c1e8") - version("0.29.5", sha256="9d5290d749099a8e446422adfb0aa2142c711284800fb1eb70f595101e32cbf1") - version("0.29", sha256="94916d1ede67682638d3cc0feb10648ff14dc51fb7a7f147f4fedce78eaaea97") - version("0.28.6", sha256="68aa3c00ef1deccf4dd50f0201d47c268462978c12c42943bc33dc9dc816ac1b") - version("0.28.3", sha256="1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526") - version("0.28.1", sha256="152ee5f345012ca3bb7cc71da2d3736ee20f52cd8476e4d49e5e25c5a4102b12") - version("0.25.2", sha256="f141d1f9c27a07b5a93f7dc5339472067e2d7140d1c5a9e20112a5665ca60306") - version("0.23.5", sha256="0ae5a5451a190e03ee36922c4189ca2c88d1df40a89b4f224bc842d388a0d1b6") - version("0.23.4", sha256="fec42fecee35d6cc02887f1eef4e4952c97402ed2800bfe41bbd9ed1a0730d8e") - - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - - # https://github.com/cython/cython/issues/5751 (distutils not yet dropped) - depends_on("python@:3.11", type=("build", "link", "run")) - - # https://github.com/cython/cython/commit/1cd24026e9cf6d63d539b359f8ba5155fd48ae21 - # collections.Iterable was removed in Python 3.10 - depends_on("python@:3.9", when="@:0.29.14", type=("build", "link", "run")) - - # https://github.com/cython/cython/commit/430e2ca220c8fed49604daf578df98aadb33a87d - depends_on("python@:3.8", when="@:0.29.13", type=("build", "link", "run")) - - depends_on("py-setuptools", type=("build", "run")) + with default_args(deprecated=True): + version( + "0.29.20", sha256="22d91af5fc2253f717a1b80b8bb45acb655f643611983fd6f782b9423f8171c7" + ) + version( + "0.29.16", sha256="232755284f942cbb3b43a06cd85974ef3c970a021aef19b5243c03ee2b08fa05" + ) + version( + "0.29.15", sha256="60d859e1efa5cc80436d58aecd3718ff2e74b987db0518376046adedba97ac30" + ) + version( + "0.29.14", sha256="e4d6bb8703d0319eb04b7319b12ea41580df44fd84d83ccda13ea463c6801414" + ) + version( + "0.29.13", sha256="c29d069a4a30f472482343c866f7486731ad638ef9af92bfe5fca9c7323d638e" + ) + version( + "0.29.10", sha256="26229570d6787ff3caa932fe9d802960f51a89239b990d275ae845405ce43857" + ) + version( + "0.29.7", sha256="55d081162191b7c11c7bfcb7c68e913827dfd5de6ecdbab1b99dab190586c1e8" + ) + version( + "0.29.5", sha256="9d5290d749099a8e446422adfb0aa2142c711284800fb1eb70f595101e32cbf1" + ) + version("0.29", sha256="94916d1ede67682638d3cc0feb10648ff14dc51fb7a7f147f4fedce78eaaea97") + version( + "0.28.6", sha256="68aa3c00ef1deccf4dd50f0201d47c268462978c12c42943bc33dc9dc816ac1b" + ) + version( + "0.28.3", sha256="1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526" + ) + version( + "0.28.1", sha256="152ee5f345012ca3bb7cc71da2d3736ee20f52cd8476e4d49e5e25c5a4102b12" + ) + version( + "0.25.2", sha256="f141d1f9c27a07b5a93f7dc5339472067e2d7140d1c5a9e20112a5665ca60306" + ) + version( + "0.23.5", sha256="0ae5a5451a190e03ee36922c4189ca2c88d1df40a89b4f224bc842d388a0d1b6" + ) + version( + "0.23.4", sha256="fec42fecee35d6cc02887f1eef4e4952c97402ed2800bfe41bbd9ed1a0730d8e" + ) + + depends_on("c", type="build") + depends_on("cxx", type="build") + + # Based on PyPI wheel availability + with default_args(type=("build", "link", "run")): + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:3.0.10") + depends_on("python@:3.11", when="@:3.0.3") # Cythonize still used distutils + depends_on("python@:3.10", when="@:0.29.28") + depends_on("python@:3.9", when="@:0.29.24") + depends_on("python@:3.8", when="@:0.29.20") + depends_on("python@:3.7", when="@:0.29.13") + + # https://github.com/cython/cython/issues/5751 + # https://github.com/cython/cython/commit/0000fb4c319ef8f7e8eabcc99677f99a8c503cc3 + depends_on("py-setuptools@66:", when="^python@3.12:", type="run") + + depends_on("py-setuptools", type="build") depends_on("gdb@7.2:", type="test") # Backports CYTHON_FORCE_REGEN environment variable patch("5307.patch", when="@0.29:0.29.33") patch("5712.patch", when="@0.29") + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/source/c/cython/{}-{}.tar.gz" + if version >= Version("3.0.11"): + name = "cython" + else: + name = "Cython" + return url.format(name, version) + @property def command(self): """Returns the Cython command""" diff --git a/var/spack/repos/builtin/packages/py-expandvars/package.py b/var/spack/repos/builtin/packages/py-expandvars/package.py new file mode 100644 index 00000000000000..7d88ca2a93cbd8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-expandvars/package.py @@ -0,0 +1,19 @@ +# 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) + +from spack.package import * + + +class PyExpandvars(PythonPackage): + """Expand system variables Unix style.""" + + homepage = "https://github.com/sayanarijit/expandvars" + pypi = "expandvars/expandvars-0.12.0.tar.gz" + + license("MIT") + + version("0.12.0", sha256="7d1adfa55728cf4b5d812ece3d087703faea953e0c0a1a78415de9df5024d844") + + depends_on("py-hatchling", type="build") diff --git a/var/spack/repos/builtin/packages/py-frozenlist/package.py b/var/spack/repos/builtin/packages/py-frozenlist/package.py index b98a509c7043ed..89382f32b29897 100644 --- a/var/spack/repos/builtin/packages/py-frozenlist/package.py +++ b/var/spack/repos/builtin/packages/py-frozenlist/package.py @@ -15,14 +15,27 @@ class PyFrozenlist(PythonPackage): license("Apache-2.0") + version("1.5.0", sha256="81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817") version("1.3.1", sha256="3a735e4211a04ccfa3f4833547acdf5d2f863bfeb01cfd3edaffbc251f15cec8") version("1.3.0", sha256="ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b") version("1.2.0", sha256="68201be60ac56aff972dc18085800b6ee07973c49103a8aba669dee3d71079de") - depends_on("c", type="build") # generated - - depends_on("python@3.6:", type=("build", "run")) - depends_on("python@3.7:", when="@1.3.1:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-setuptools@46.4.0:", when="@1.3.1:", type="build") - depends_on("py-wheel@0.37.0:", when="@1.3.1:", type="build") + depends_on("c", type="build") + + # Based on PyPI wheel availability + with default_args(type=("build", "run")): + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:1.4.1") + depends_on("python@:3.11", when="@:1.4.0") + depends_on("python@:3.10", when="@:1.3.1") + + with default_args(type="build"): + depends_on("py-expandvars", when="@1.4.1:") + depends_on("py-setuptools@47:", when="@1.4.1:") + depends_on("py-setuptools@46.4:", when="@1.3.1:") + depends_on("py-setuptools") + depends_on("py-tomli", when="@1.4.1: ^python@:3.10") + depends_on("py-wheel@0.37:", when="@1.3:1.4.0") + + # Not documented but still needed to cythonize files + depends_on("py-cython", when="@1.4.1:") diff --git a/var/spack/repos/builtin/packages/py-multidict/package.py b/var/spack/repos/builtin/packages/py-multidict/package.py index 152becac958447..ff6677668cd499 100644 --- a/var/spack/repos/builtin/packages/py-multidict/package.py +++ b/var/spack/repos/builtin/packages/py-multidict/package.py @@ -15,15 +15,27 @@ class PyMultidict(PythonPackage): license("Apache-2.0") + version("6.1.0", sha256="22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a") version("6.0.4", sha256="3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49") version("6.0.2", sha256="5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013") version("5.2.0", sha256="0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce") version("5.1.0", sha256="25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5") - version("4.7.6", sha256="fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430") + with default_args(deprecated=True): + version("4.7.6", sha256="fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430") - depends_on("c", type="build") # generated + depends_on("c", type="build") + + # Based on PyPI wheel availability + with default_args(type=("build", "link", "run")): + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:6.0") + depends_on("python@:3.11", when="@:6.0.4") + depends_on("python@:3.10", when="@:6.0.2") + depends_on("python@:3.9", when="@:5.1") + depends_on("python@:3.8", when="@:4") depends_on("py-setuptools@40:", type="build") + depends_on("py-typing-extensions@4.1:", when="@6.1: ^python@:3.10", type=("build", "run")) # Historical dependencies depends_on("py-pip@18:", when="@:4", type="build") From 71b65bb424c6294badc4825ac4714ec7f89ad0b7 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sat, 23 Nov 2024 10:48:07 +0100 Subject: [PATCH 568/615] py-opt-einsum: missing forward compat bound for python (#47757) --- var/spack/repos/builtin/packages/py-opt-einsum/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-opt-einsum/package.py b/var/spack/repos/builtin/packages/py-opt-einsum/package.py index e33397342696f1..90246f40a35054 100644 --- a/var/spack/repos/builtin/packages/py-opt-einsum/package.py +++ b/var/spack/repos/builtin/packages/py-opt-einsum/package.py @@ -19,6 +19,7 @@ class PyOptEinsum(PythonPackage): version("3.2.0", sha256="738b0a1db1d3084d360081bb64d826f9db06d2df7cc0bf8e2c9356028da1fa31") version("3.1.0", sha256="edfada4b1d0b3b782ace8bc14e80618ff629abf53143e1e6bbf9bd00b11ece77") - depends_on("python@3.5:", type=("build", "run")) + # https://github.com/dgasmith/opt_einsum/commit/7c8f193f90b6771a6b3065bb5cf6ec2747af8209 + depends_on("python@:3.11", when="@:3.3", type=("build", "run")) depends_on("py-setuptools", type="build") depends_on("py-numpy@1.7:", type=("build", "run")) From 39a081d7fd3935aad8891446508fa773f6e2408c Mon Sep 17 00:00:00 2001 From: finkandreas Date: Sat, 23 Nov 2024 15:45:22 +0100 Subject: [PATCH 569/615] Kokkos complex_align variant, Trilinos+PETSc enforcement for Kokkos~complex_align (#47686) --- .../repos/builtin/packages/kokkos/package.py | 1 + .../repos/builtin/packages/petsc/package.py | 1 + .../builtin/packages/trilinos/package.py | 39 ++++++++++--------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 9b9b78e11728fd..6492906ad76aa2 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -179,6 +179,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): options_variants = { "aggressive_vectorization": [False, "Aggressively vectorize loops"], "compiler_warnings": [False, "Print all compiler warnings"], + "complex_align": [True, "Align complex numbers"], "cuda_constexpr": [False, "Activate experimental constexpr features"], "cuda_lambda": [False, "Activate experimental lambda features"], "cuda_ldg_intrinsic": [False, "Use CUDA LDG intrinsics"], diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 918b2e83679969..9d983d254f34d4 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -374,6 +374,7 @@ def check_fortran_compiler(self): depends_on("libyaml", when="+libyaml") depends_on("hwloc", when="+hwloc") depends_on("kokkos", when="+kokkos") + depends_on("kokkos~complex_align", when="+kokkos+complex") depends_on("kokkos-kernels", when="+kokkos") for cuda_arch in CudaPackage.cuda_arch_values: depends_on( diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index bb12c6caa3a81e..7966cb3e6790c2 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -407,23 +407,25 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # ###################### Dependencies ########################## # External Kokkos - depends_on("kokkos@4.4.01", when="@master: +kokkos") - depends_on("kokkos@4.3.01", when="@16.0.0 +kokkos") - depends_on("kokkos@4.2.01", when="@15.1.0:15.1.1 +kokkos") - depends_on("kokkos@4.1.00", when="@14.4.0:15.0.0 +kokkos") - - depends_on("kokkos +wrapper", when="trilinos@14.4.0: +kokkos +wrapper") - depends_on("kokkos ~wrapper", when="trilinos@14.4.0: +kokkos ~wrapper") - - for a in CudaPackage.cuda_arch_values: - arch_str = "+cuda cuda_arch={0}".format(a) - kokkos_spec = "kokkos {0}".format(arch_str) - depends_on(kokkos_spec, when="@14.4.0: +kokkos {0}".format(arch_str)) - - for a in ROCmPackage.amdgpu_targets: - arch_str = "+rocm amdgpu_target={0}".format(a) - kokkos_spec = "kokkos {0}".format(arch_str) - depends_on(kokkos_spec, when="@14.4.0: +kokkos {0}".format(arch_str)) + with when("@14.4: +kokkos"): + depends_on("kokkos+wrapper", when="+wrapper") + depends_on("kokkos~wrapper", when="~wrapper") + depends_on("kokkos~complex_align") + depends_on("kokkos@4.4.01", when="@master:") + depends_on("kokkos@4.3.01", when="@16") + depends_on("kokkos@4.2.01", when="@15.1:15") + depends_on("kokkos@4.1.00", when="@14.4:15.0") + depends_on("kokkos-kernels@4.4.01", when="@master:") + depends_on("kokkos-kernels@4.3.01", when="@16") + depends_on("kokkos-kernels@4.2.01", when="@15.1:15") + depends_on("kokkos-kernels@4.1.00", when="@14.4:15.0") + + for a in CudaPackage.cuda_arch_values: + arch_str = f"+cuda cuda_arch={a}" + depends_on(f"kokkos{arch_str}", when=arch_str) + for a in ROCmPackage.amdgpu_targets: + arch_str = f"+rocm amdgpu_target={a}" + depends_on(f"kokkos{arch_str}", when=arch_str) depends_on("adios2", when="+adios2") depends_on("binder@1.3:", when="@15: +python", type="build") @@ -899,8 +901,9 @@ def define_tpl(trilinos_name, spack_name, have_dep): define_tpl(tpl_name, dep_name, dep_name in spec) # External Kokkos - if spec.satisfies("@14.4.0 +kokkos"): + if spec.satisfies("@14.4.0: +kokkos"): options.append(define_tpl_enable("Kokkos")) + options.append(define_tpl_enable("KokkosKernels", True)) # MPI settings options.append(define_tpl_enable("MPI")) From 85d83f9c26cea76051cf95bc7194c43bfa0a0b5a Mon Sep 17 00:00:00 2001 From: Teague Sterling Date: Sat, 23 Nov 2024 12:13:40 -0800 Subject: [PATCH 570/615] duckdb: add v1.1.3, deprecate * Fixing styles Signed-off-by: Teague Sterling * duckdb: add v1.1.1 Signed-off-by: Teague Sterling * duckdb: Fix missing depends_on(unixodbc, when=+odbc) * Adding duckdb variants, removing old variants, removing deprecated versions Signed-off-by: Teague Sterling * duckdb+static_openssl: Add pkgconfig and zlib-api to link zlib when needed * duckdb: add v1.1.3 Signed-off-by: Teague Sterling * Update package.py for CVE-2024-41672 as suggested * [@spackbot] updating style on behalf of teaguesterling * duckdb: add CVE comment before deprecated versions --------- Signed-off-by: Teague Sterling Co-authored-by: Bernhard Kaindl Co-authored-by: Wouter Deconinck --- .../repos/builtin/packages/duckdb/package.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/duckdb/package.py b/var/spack/repos/builtin/packages/duckdb/package.py index 6bac330a3af831..79f88acc414948 100644 --- a/var/spack/repos/builtin/packages/duckdb/package.py +++ b/var/spack/repos/builtin/packages/duckdb/package.py @@ -18,12 +18,26 @@ class Duckdb(MakefilePackage): maintainers("glentner", "teaguesterling") version("master", branch="master") + version("1.1.3", sha256="2aea0af898ad753fee82b776fea1bf78ccbc9648986e7f7a87372df5e74cdb98") version("1.1.2", sha256="a3319a64c390ed0454c869b2e4fc0af2413cd49f55cd0f1400aaed9069cdbc4c") version("1.1.1", sha256="a764cef80287ccfd8555884d8facbe962154e7c747043c0842cd07873b4d6752") version("1.1.0", sha256="d9be2c6d3a5ebe2b3d33044fb2cb535bb0bd972a27ae38c4de5e1b4caa4bf68d") - version("1.0.0", sha256="04e472e646f5cadd0a3f877a143610674b0d2bcf9f4102203ac3c3d02f1c5f26") - version("0.10.3", sha256="7855587b3491dd488993287caee28720bee43ae28e92e8f41ea4631e9afcbf88") - version("0.10.2", sha256="662a0ba5c35d678ab6870db8f65ffa1c72e6096ad525a35b41b275139684cea6") + # CVE-2024-41672 + version( + "1.0.0", + sha256="04e472e646f5cadd0a3f877a143610674b0d2bcf9f4102203ac3c3d02f1c5f26", + deprecated=True, + ) + version( + "0.10.3", + sha256="7855587b3491dd488993287caee28720bee43ae28e92e8f41ea4631e9afcbf88", + deprecated=True, + ) + version( + "0.10.2", + sha256="662a0ba5c35d678ab6870db8f65ffa1c72e6096ad525a35b41b275139684cea6", + deprecated=True, + ) version( "0.10.0", sha256="5a925b8607d00a97c1a3ffe6df05c0a62a4df063abd022ada82ac1e917792013", From a7e57c9a14ce36d6a3b03d7cd3b3357754b89019 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 24 Nov 2024 08:40:29 +0100 Subject: [PATCH 571/615] py-opt-einsum: add v3.4.0 (#47759) --- .../repos/builtin/packages/py-jaxlib/package.py | 10 ++++++---- .../builtin/packages/py-opt-einsum/package.py | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index 3ba330388e2a02..8d894c6c5ef595 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -99,11 +99,13 @@ class PyJaxlib(PythonPackage, CudaPackage, ROCmPackage): depends_on("py-build", when="@0.4.14:") with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@0.4.31:") + depends_on("python@3.9:", when="@0.4.14:") + depends_on("python@3.8:", when="@0.4.6:") # Based on PyPI wheels - depends_on("python@3.10:3.12", when="@0.4.31:") - depends_on("python@3.9:3.12", when="@0.4.17:0.4.30") - depends_on("python@3.9:3.11", when="@0.4.14:0.4.16") - depends_on("python@3.8:3.11", when="@0.4.6:0.4.13") + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:0.4.33") + depends_on("python@:3.11", when="@:0.4.16") # jaxlib/setup.py depends_on("py-scipy@1.10:", when="@0.4.31:") diff --git a/var/spack/repos/builtin/packages/py-opt-einsum/package.py b/var/spack/repos/builtin/packages/py-opt-einsum/package.py index 90246f40a35054..ff6107657013c6 100644 --- a/var/spack/repos/builtin/packages/py-opt-einsum/package.py +++ b/var/spack/repos/builtin/packages/py-opt-einsum/package.py @@ -14,12 +14,21 @@ class PyOptEinsum(PythonPackage): license("MIT") + version("3.4.0", sha256="96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac") version("3.3.0", sha256="59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549") version("3.2.1", sha256="83b76a98d18ae6a5cc7a0d88955a7f74881f0e567a0f4c949d24c942753eb998") version("3.2.0", sha256="738b0a1db1d3084d360081bb64d826f9db06d2df7cc0bf8e2c9356028da1fa31") version("3.1.0", sha256="edfada4b1d0b3b782ace8bc14e80618ff629abf53143e1e6bbf9bd00b11ece77") - # https://github.com/dgasmith/opt_einsum/commit/7c8f193f90b6771a6b3065bb5cf6ec2747af8209 - depends_on("python@:3.11", when="@:3.3", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-numpy@1.7:", type=("build", "run")) + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@3.4:") + # https://github.com/dgasmith/opt_einsum/commit/7c8f193f90b6771a6b3065bb5cf6ec2747af8209 + depends_on("python@:3.11", when="@:3.3") + + depends_on("py-numpy@1.7:", when="@:3.3") + + depends_on("py-setuptools", when="@:3.3", type="build") + + depends_on("py-hatchling", when="@3.4:", type="build") + depends_on("py-hatch-fancy-pypi-readme@22.5:", when="@3.4:", type="build") + depends_on("py-hatch-vcs", when="@3.4:", type="build") From c57452dd08f9f4da6db1f4591053ea496893140a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 08:41:29 +0100 Subject: [PATCH 572/615] py-cffi: support Python 3.12+ (#47713) --- .../builtin/packages/flux-core/package.py | 3 +- .../repos/builtin/packages/py-cffi/package.py | 43 +++++++++++-------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py index 71d21097897d1c..0e269925379198 100644 --- a/var/spack/repos/builtin/packages/flux-core/package.py +++ b/var/spack/repos/builtin/packages/flux-core/package.py @@ -91,7 +91,8 @@ class FluxCore(AutotoolsPackage): # `link` dependency on python due to Flux's `pymod` module depends_on("python@3.6:", type=("build", "link", "run")) # Use of distutils in configure script dropped in v0.55 - depends_on("python@:3.11", when="@:0.54", type=("build", "link", "run")) + # Detection of cffi version fixed in v0.68 + depends_on("python@:3.11", when="@:0.67", type=("build", "link", "run")) depends_on("py-cffi@1.1:", type=("build", "run")) depends_on("py-pyyaml@3.10:", type=("build", "run")) depends_on("py-jsonschema@2.3:", type=("build", "run"), when="@:0.58.0") diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index 6f312fd942fdf1..c32e5ccd7c4977 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -22,29 +22,38 @@ class PyCffi(PythonPackage): version("1.15.0", sha256="920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954") version("1.14.6", sha256="c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd") version("1.14.3", sha256="f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591") - version("1.13.0", sha256="8fe230f612c18af1df6f348d02d682fe2c28ca0a6c3856c99599cdacae7cf226") - version("1.12.2", sha256="e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7") - version("1.11.5", sha256="e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4") - version("1.10.0", sha256="b3b02911eb1f6ada203b0763ba924234629b51586f72a21faacc638269f4ced5") - version("1.1.2", sha256="390970b602708c91ddc73953bb6929e56291c18a4d80f360afa00fad8b6f3339") + with default_args(deprecated=True): + version( + "1.13.0", sha256="8fe230f612c18af1df6f348d02d682fe2c28ca0a6c3856c99599cdacae7cf226" + ) + version( + "1.12.2", sha256="e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7" + ) + version( + "1.11.5", sha256="e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4" + ) + version( + "1.10.0", sha256="b3b02911eb1f6ada203b0763ba924234629b51586f72a21faacc638269f4ced5" + ) + version("1.1.2", sha256="390970b602708c91ddc73953bb6929e56291c18a4d80f360afa00fad8b6f3339") - depends_on("c", type="build") # generated + depends_on("c", type="build") - # ./spack-src/cffi/ffiplatform.py has _hack_at_distutils which imports - # setuptools before distutils, but only on Windows. This could be made - # unconditional to support Python 3.12 - depends_on("python@:3.11", type=("build", "run")) + # Based on PyPI wheel availability + with default_args(type=("build", "link", "run")): + depends_on("python@3.8:", when="@1.16:") - # python 3.12 support was released in @1.16:, however the removal - # in python3.12 of distutils has resulted in an imperfect fix for prefix-based - # tools like spack, see: - # https://github.com/spack/spack/pull/46224 - # https://github.com/cython/cython/pull/5754#issuecomment-1752102480 - # until this is correctly fixed, do not enable 3.12 support - # depends_on("python@:3.12", type=("build", "run"), when="@1.16:") + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:1.16") + depends_on("python@:3.11", when="@:1.15") + depends_on("python@:3.10", when="@:1.15.0") + depends_on("python@:3.9", when="@:1.14") + depends_on("python@:3.8", when="@:1.14.2") + depends_on("python@:3.7", when="@:1.12") depends_on("pkgconfig", type="build") depends_on("py-setuptools", type="build") + depends_on("py-setuptools", type="run", when="^python@3.12:") depends_on("py-setuptools@66.1:", type="build", when="@1.16:") depends_on("py-pycparser", type=("build", "run")) depends_on("libffi") From 1148c8f195d812e5bd586f404edd403579ed5df2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 11:53:32 +0100 Subject: [PATCH 573/615] gobject-introspection: Python 3.12 still not supported (#47767) --- .../repos/builtin/packages/gobject-introspection/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 3e6e32de13a40b..fd0d5881bec46b 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -92,6 +92,12 @@ class GobjectIntrospection(MesonPackage, AutotoolsPackage): when="@:1.63.1", ) + # https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/361 + # https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/395 + conflicts( + "^python@3.12:", + msg="gobject-introspection still uses distutils which was removed in Python 3.12", + ) conflicts( "^python@3.11:", when="@:1.60", From 124b616b2773af70c0188f910a17e9ce093caf51 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 24 Nov 2024 15:23:11 +0100 Subject: [PATCH 574/615] add a few forward compat bounds with python (#47761) --- var/spack/repos/builtin/packages/py-ipykernel/package.py | 2 ++ var/spack/repos/builtin/packages/py-nodeenv/package.py | 8 ++++++-- var/spack/repos/builtin/packages/py-notebook/package.py | 8 ++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 02f2c943b4d58a..047cfdc73d782f 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -54,6 +54,8 @@ class PyIpykernel(PythonPackage): with default_args(type=("build", "run")): depends_on("python@3.8:", when="@6.22:") + # use of `imp` module + depends_on("python@:3.11", when="@:6.10") depends_on("py-debugpy@1.6.5:", when="@6.22:") depends_on("py-debugpy@1:", when="@6.11:") depends_on("py-debugpy@1.0:1", when="@6:6.10") diff --git a/var/spack/repos/builtin/packages/py-nodeenv/package.py b/var/spack/repos/builtin/packages/py-nodeenv/package.py index 6fddf220e42358..c52dfce401ad7a 100644 --- a/var/spack/repos/builtin/packages/py-nodeenv/package.py +++ b/var/spack/repos/builtin/packages/py-nodeenv/package.py @@ -16,6 +16,10 @@ class PyNodeenv(PythonPackage): version("1.7.0", sha256="e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b") version("1.3.3", sha256="ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a") - depends_on("python +ssl", when="@1.5:", type=("build", "run")) - depends_on("py-setuptools", when="@1.7:", type=("build", "run")) + with default_args(type=("build", "run")): + # https://github.com/ekalinin/nodeenv/commit/c1dffc5c64377cfcda9f2befd357e4791903bf39 + depends_on("python@:3.12", when="@:1.8") + depends_on("python +ssl", when="@1.5:") + depends_on("py-setuptools", when="@1.7:") + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-notebook/package.py b/var/spack/repos/builtin/packages/py-notebook/package.py index 1f62831bfc44c9..3c029772d68972 100644 --- a/var/spack/repos/builtin/packages/py-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-notebook/package.py @@ -38,8 +38,12 @@ class PyNotebook(PythonPackage): version("4.0.4", sha256="a57852514bce1b1cf41fa0311f6cf894960cf68b083b55e6c408316b598d5648") version("4.0.2", sha256="8478d7e2ab474855b0ff841f693983388af8662d3af1adcb861acb900274f22a") - depends_on("python@3.7:", type=("build", "run"), when="@6.4:") - depends_on("python@3.6:", type=("build", "run"), when="@6.3:") + with default_args(type=("build", "run")): + depends_on("python@3.7:", when="@6.4:") + depends_on("python@3.6:", when="@6.3:") + # import pipes in setupbase.py + depends_on("python@:3.12", when="@:6") + depends_on("py-jupyter-packaging@0.9:0", when="@6.4.1:", type="build") depends_on("py-setuptools", when="@5:", type="build") From c76098038ce1e149f8207f98ebd4d7dc0381a629 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 24 Nov 2024 15:26:15 +0100 Subject: [PATCH 575/615] py-ipykernel: split forward and backward compat bounds (#47763) --- .../builtin/packages/py-ipykernel/package.py | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 047cfdc73d782f..baeefe19d785d8 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -56,32 +56,42 @@ class PyIpykernel(PythonPackage): depends_on("python@3.8:", when="@6.22:") # use of `imp` module depends_on("python@:3.11", when="@:6.10") - depends_on("py-debugpy@1.6.5:", when="@6.22:") - depends_on("py-debugpy@1:", when="@6.11:") - depends_on("py-debugpy@1.0:1", when="@6:6.10") - depends_on("py-ipython@7.23.1:", when="@6.5.1:") - depends_on("py-ipython@7.23.1:7", when="@6.0.0:6.5.0") - depends_on("py-ipython@5.0:", when="@5") - depends_on("py-ipython@4.0:", when="@:4") + + with when("@6:"): + depends_on("py-debugpy@1.6.5:", when="@6.22:") + depends_on("py-debugpy@1:") + depends_on("py-debugpy@:1", when="@:6.10") + + depends_on("py-matplotlib-inline@0.1:") + depends_on("py-matplotlib-inline@:0.1", when="@:6.10") + + depends_on("py-ipython@7.23.1:", when="@6:") + depends_on("py-ipython@5:", when="@5:") + depends_on("py-ipython@4:") + depends_on("py-ipython@:7", when="@:6.5") + depends_on("py-comm@0.1.1:", when="@6.22:") + depends_on("py-traitlets@5.4:", when="@6.22:") - depends_on("py-traitlets@5.1:", when="@6.11:") - depends_on("py-traitlets@5.1.0:5", when="@6.5:6.10") - depends_on("py-traitlets@4.1.0:5", when="@6.0:6.4") + depends_on("py-traitlets@5.1:", when="@6.5:") depends_on("py-traitlets@4.1.0:") + depends_on("py-traitlets@:5", when="@:6.10") + depends_on("py-jupyter-client@6.1.12:", when="@6.11:") - depends_on("py-jupyter-client@:7", when="@6.2:6.10") - depends_on("py-jupyter-client@:6", when="@6.0.2:6.1") depends_on("py-jupyter-client") + depends_on("py-jupyter-client@:7", when="@:6.10") + depends_on("py-jupyter-client@:6", when="@:6.1") + depends_on("py-jupyter-core@4.12:", when="@6.22:") + depends_on("py-nest-asyncio", when="@6.6.1:") + depends_on("py-tornado@6.1:", when="@6.11:") - depends_on("py-tornado@5:6", when="@6.10") - depends_on("py-tornado@4.2:6", when="@6:6.9") - depends_on("py-tornado@4.2:", when="@5") - depends_on("py-tornado@4:", when="@:4") - depends_on("py-matplotlib-inline@0.1:", when="@6.11:") - depends_on("py-matplotlib-inline@0.1.0:0.1", when="@6:6.10") + depends_on("py-tornado@5:", when="@6.10:") + depends_on("py-tornado@4.2:", when="@5:") + depends_on("py-tornado@4:") + depends_on("py-tornado@:6", when="@:6.10") + depends_on("py-appnope", when="@5.1.3: platform=darwin") depends_on("py-pyzmq@24:", when="@6.28:") depends_on("py-pyzmq@20:", when="@6.22:") From 6501880fbf8018b7876a0a060a478c4d9b679dde Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Sun, 24 Nov 2024 15:27:16 +0100 Subject: [PATCH 576/615] py-node-env: add v1.9.1 (#47762) --- var/spack/repos/builtin/packages/py-nodeenv/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-nodeenv/package.py b/var/spack/repos/builtin/packages/py-nodeenv/package.py index c52dfce401ad7a..d5dbadfa0a69e7 100644 --- a/var/spack/repos/builtin/packages/py-nodeenv/package.py +++ b/var/spack/repos/builtin/packages/py-nodeenv/package.py @@ -12,6 +12,7 @@ class PyNodeenv(PythonPackage): homepage = "https://github.com/ekalinin/nodeenv" pypi = "nodeenv/nodeenv-1.3.3.tar.gz" + version("1.9.1", sha256="6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f") version("1.8.0", sha256="d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2") version("1.7.0", sha256="e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b") version("1.3.3", sha256="ad8259494cf1c9034539f6cced78a1da4840a4b157e23640bc4a0c0546b0cb7a") From 7586303fba9aac03afdad25a408cdf8f68f8e7b5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:28:45 +0100 Subject: [PATCH 577/615] py-ruamel-yaml-clib: add Python compatibility bounds (#47773) --- .../packages/py-ruamel-yaml-clib/package.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ruamel-yaml-clib/package.py b/var/spack/repos/builtin/packages/py-ruamel-yaml-clib/package.py index 82bbd8db2e99e5..9f1ec1844ae026 100644 --- a/var/spack/repos/builtin/packages/py-ruamel-yaml-clib/package.py +++ b/var/spack/repos/builtin/packages/py-ruamel-yaml-clib/package.py @@ -8,26 +8,32 @@ class PyRuamelYamlClib(PythonPackage): - """C version of reader, parser and emitter for ruamel.yaml derived from - libyaml.""" + """C version of reader, parser and emitter for ruamel.yaml derived from libyaml.""" homepage = "https://sourceforge.net/p/ruamel-yaml-clib/code/ci/default/tree/" pypi = "ruamel.yaml.clib/ruamel.yaml.clib-0.2.0.tar.gz" license("MIT") + version("0.2.12", sha256="6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f") version("0.2.7", sha256="1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497") version("0.2.0", sha256="b66832ea8077d9b3f6e311c4a53d06273db5dc2db6e8a908550f3c14d67e718c") - depends_on("c", type="build") # generated + depends_on("c", type="build") - depends_on("python", type=("build", "link", "run")) - # to prevent legacy-install-failure - depends_on("python@:3.9", when="@0.2.0", type=("build", "link", "run")) - depends_on("py-setuptools@28.7.0:", type="build") + # Based on PyPI wheel availability + with default_args(type=("build", "link", "run")): + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:0.2.8") + depends_on("python@:3.11", when="@:0.2.7") + depends_on("python@:3.10", when="@:0.2.6") + depends_on("python@:3.9", when="@:0.2.4") + depends_on("python@:3.8", when="@:0.2.0") + + depends_on("py-setuptools", type="build") def flag_handler(self, name, flags): if name == "cflags": - if self.spec.satisfies("%oneapi") or self.spec.satisfies(" %apple-clang@15:"): + if self.spec.satisfies("%oneapi") or self.spec.satisfies("%apple-clang@15:"): flags.append("-Wno-error=incompatible-function-pointer-types") return (flags, None, None) From 16e130ece113c432861e32c8f791d2a855b42f72 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:31:08 +0100 Subject: [PATCH 578/615] py-cryptography: mark Python 3.13 support (#47768) --- var/spack/repos/builtin/packages/py-cryptography/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index 214deae9b1d7ed..5049fbf3e1c54e 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -16,6 +16,7 @@ class PyCryptography(PythonPackage): license("Apache-2.0") version("43.0.3", sha256="315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805") + version("43.0.1", sha256="203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d") version("42.0.8", sha256="8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2") version("41.0.7", sha256="13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc") version("41.0.3", sha256="6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34") @@ -35,6 +36,8 @@ class PyCryptography(PythonPackage): variant("idna", default=False, when="@2.5:3.0", description="Deprecated U-label support") + # pyo3 <= 0.22 required in version <= 42 + depends_on("python@:3.12", when="@:42", type=("build", "run")) # distutils required in version <= 40 depends_on("python@:3.11", when="@:40", type=("build", "run")) depends_on("py-setuptools@61.0:", when="@41:", type="build") From 281c274e0b8388cb8b69b156af658f2be6c8e8fb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:31:31 +0100 Subject: [PATCH 579/615] py-jupyter-packaging: add Python 3.13 support (#47769) --- .../repos/builtin/packages/py-jupyter-packaging/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-jupyter-packaging/package.py b/var/spack/repos/builtin/packages/py-jupyter-packaging/package.py index c45a7b86dc3841..7c9df4e9acf403 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-packaging/package.py @@ -16,6 +16,7 @@ class PyJupyterPackaging(PythonPackage): license("BSD-3-Clause") + version("0.12.3", sha256="9d9b2b63b97ffd67a8bc5391c32a421bc415b264a32c99e4d8d8dd31daae9cf4") version("0.12.0", sha256="b27455d60adc93a7baa2e0b8f386be81b932bb4e3c0116046df9ed230cd3faac") version("0.11.1", sha256="6f5c7eeea98f7f3c8fb41d565a94bf59791768a93f93148b3c2dfb7ebade8eec") version("0.10.6", sha256="a8a2c90bf2e0cae83be63ccb0b7035032a1589f268cc08b1d479e37ce50fc940") @@ -27,8 +28,9 @@ class PyJupyterPackaging(PythonPackage): url="https://files.pythonhosted.org/packages/source/j/jupyter_packaging/jupyter-packaging-0.7.12.tar.gz", ) - depends_on("python@3.7:", when="@0.11:", type=("build", "run")) - depends_on("python@3.6:", type=("build", "run")) + # https://github.com/jupyter/jupyter-packaging/pull/153 + depends_on("python@:3.12", when="@:0.12.1", type=("build", "run")) + depends_on("py-hatchling@0.25:", when="@0.12.1:", type="build") depends_on("py-packaging", type=("build", "run")) depends_on("py-tomlkit", when="@0.8:", type=("build", "run")) depends_on("py-setuptools@60.2:", when="@0.12:", type=("build", "run")) From 150416919e3337d0d61b4a637936b9f9f2fda795 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:37:06 +0100 Subject: [PATCH 580/615] py-pydantic-core: add v2.27.1 (#47771) --- .../repos/builtin/packages/py-pydantic-core/package.py | 4 ++++ var/spack/repos/builtin/packages/py-pydantic/package.py | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pydantic-core/package.py b/var/spack/repos/builtin/packages/py-pydantic-core/package.py index ec7dd02dfa9d1e..5bc50895c9986b 100644 --- a/var/spack/repos/builtin/packages/py-pydantic-core/package.py +++ b/var/spack/repos/builtin/packages/py-pydantic-core/package.py @@ -15,8 +15,12 @@ class PyPydanticCore(PythonPackage): license("MIT", checked_by="qwertos") + version("2.27.1", sha256="62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235") version("2.18.4", sha256="ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864") + # Based on PyPI wheel availability + depends_on("python@:3.13", type=("build", "run")) + depends_on("python@:3.12", when="@:2.19", type=("build", "run")) depends_on("rust@1.76:", type="build") depends_on("py-maturin@1", type="build") depends_on("py-typing-extensions@4.6,4.7.1:", type="build") diff --git a/var/spack/repos/builtin/packages/py-pydantic/package.py b/var/spack/repos/builtin/packages/py-pydantic/package.py index bfc6aa639bbc0e..a5fe38e4f7cffb 100644 --- a/var/spack/repos/builtin/packages/py-pydantic/package.py +++ b/var/spack/repos/builtin/packages/py-pydantic/package.py @@ -14,6 +14,7 @@ class PyPydantic(PythonPackage): license("MIT") + version("2.10.1", sha256="a4daca2dc0aa429555e0656d6bf94873a7dc5f54ee42b1f5873d666fb3f35560") version("2.7.4", sha256="0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52") version("1.10.9", sha256="95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be") version("1.10.2", sha256="91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410") @@ -25,12 +26,13 @@ class PyPydantic(PythonPackage): depends_on("py-setuptools", type="build", when="@1") depends_on("py-hatchling", type="build", when="@2") depends_on("py-hatch-fancy-pypi-readme@22.5.0:", type="build", when="@2") + depends_on("py-typing-extensions@4.12.2:", when="@2.10:", type=("build", "run")) depends_on("py-typing-extensions@4.6.1:", when="@2.7.1:", type=("build", "run")) depends_on("py-typing-extensions@4.2:", when="@1.10.9:", type=("build", "run")) depends_on("py-typing-extensions@4.1:", when="@1.10:", type=("build", "run")) depends_on("py-typing-extensions@3.7.4.3:", type=("build", "run")) - + depends_on("py-annotated-types@0.6:", type=("build", "run"), when="@2.10:") depends_on("py-annotated-types@0.4.0:", type=("build", "run"), when="@2.7.4:") + depends_on("py-pydantic-core@2.27.1", type=("build", "run"), when="@2.10.1") depends_on("py-pydantic-core@2.18.4", type=("build", "run"), when="@2.7.4") - depends_on("py-python-dotenv@0.10.4:", when="@1 +dotenv", type=("build", "run")) From a35aa038b0441cb5b790f1d9c9445e6efb077119 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:37:43 +0100 Subject: [PATCH 581/615] py-pystac: add support for Python 3.12+ (#47772) --- .../packages/py-pystac-client/package.py | 29 +++++++++++++++---- .../builtin/packages/py-pystac/package.py | 16 +++++++--- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pystac-client/package.py b/var/spack/repos/builtin/packages/py-pystac-client/package.py index 7d657fd2217c10..7d3eb546c673b0 100644 --- a/var/spack/repos/builtin/packages/py-pystac-client/package.py +++ b/var/spack/repos/builtin/packages/py-pystac-client/package.py @@ -10,13 +10,30 @@ class PyPystacClient(PythonPackage): """Python library for working with Spatiotemporal Asset Catalog (STAC).""" homepage = "https://github.com/stac-utils/pystac-client.git" - pypi = "pystac-client/pystac-client-0.5.1.tar.gz" + pypi = "pystac-client/pystac_client-0.8.5.tar.gz" license("Apache-2.0") - version("0.5.1", sha256="f585bd9bcd52ee399c8a292dbb7e0405c0da359a73bc07c1ef82a65c17124d94") + version("0.8.5", sha256="7fba8d4f3c641ff7e840084fc3a53c96443a227f8a5889ae500fc38183ccd994") + version( + "0.5.1", + sha256="f585bd9bcd52ee399c8a292dbb7e0405c0da359a73bc07c1ef82a65c17124d94", + url="https://files.pythonhosted.org/packages/source/p/pystac-client/pystac-client-0.5.1.tar.gz", + deprecated=True, + ) - depends_on("py-setuptools", type="build") - depends_on("py-requests@2.27.1:", type=("build", "run")) - depends_on("py-pystac@1.4:", type=("build", "run")) - depends_on("py-python-dateutil@2.7:", type=("build", "run")) + with default_args(type="build"): + depends_on("py-setuptools@61:", when="@0.8:") + depends_on("py-setuptools") + + with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@0.8:") + # setup.py imports 'imp', removed in Python 3.12 + depends_on("python@:3.11", when="@:0.6") + + depends_on("py-requests@2.28.2:", when="@0.8:") + depends_on("py-requests@2.27.1:") + depends_on("py-pystac@1.10:+validation", when="@0.8:") + depends_on("py-pystac@1.4:") + depends_on("py-python-dateutil@2.8.2:", when="@0.8:") + depends_on("py-python-dateutil@2.7:") diff --git a/var/spack/repos/builtin/packages/py-pystac/package.py b/var/spack/repos/builtin/packages/py-pystac/package.py index 6ddba4bca1cc4a..24994341cad971 100644 --- a/var/spack/repos/builtin/packages/py-pystac/package.py +++ b/var/spack/repos/builtin/packages/py-pystac/package.py @@ -14,6 +14,7 @@ class PyPystac(PythonPackage): license("Apache-2.0") + version("1.11.0", sha256="acb1e04be398a0cda2d8870ab5e90457783a8014a206590233171d8b2ae0d9e7") version("1.4.0", sha256="6ec43e1c6bec50fbfbdede49c3ccb83ecd112072a938001b5c9c581fc2945e83") version("1.3.0", sha256="b0244641ef2a29a7b7929266b0d1eda2b0a0ef826dadb1aed93404a14e6e313b") version("1.2.0", sha256="8a60be2a30e1e28f8617a88f9f8fddc00c519be494a02ec111dc8fba62bf26e7") @@ -21,7 +22,14 @@ class PyPystac(PythonPackage): version("1.0.1", sha256="3927f2104cd2077638e046b9c258d5e6b442bfabf2d179cbefbf10f509efae85") version("0.5.4", sha256="9fc3359364685adf54e3bc78c87550a8bc8b0a927405419bd8e4bbd42a8efc79") - depends_on("python@3.7:", when="@1:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-python-dateutil@2.7:", type=("build", "run")) - depends_on("py-typing-extensions@3.7:", when="@1: ^python@:3.7", type=("build", "run")) + variant("validation", default=False, description="Install an additional jsonschema dependency") + + with default_args(type="build"): + depends_on("py-setuptools@61:", when="@1.11:") + depends_on("py-setuptools") + + with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@1.11:") + depends_on("py-python-dateutil@2.7:") + + depends_on("py-jsonschema@4.18:4", when="+validation") From cde2620f41ecd364e3cbd09ea1abb47041fce239 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:38:05 +0100 Subject: [PATCH 582/615] py-safetensors: add v0.4.5 (#47774) --- .../repos/builtin/packages/py-safetensors/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-safetensors/package.py b/var/spack/repos/builtin/packages/py-safetensors/package.py index f0f11247c55c2a..741a8d8ba43ad1 100644 --- a/var/spack/repos/builtin/packages/py-safetensors/package.py +++ b/var/spack/repos/builtin/packages/py-safetensors/package.py @@ -12,9 +12,12 @@ class PySafetensors(PythonPackage): homepage = "https://github.com/huggingface/safetensors" pypi = "safetensors/safetensors-0.3.1.tar.gz" + version("0.4.5", sha256="d73de19682deabb02524b3d5d1f8b3aaba94c72f1bbfc7911b9b9d5d391c0310") version("0.4.3", sha256="2f85fc50c4e07a21e95c24e07460fe6f7e2859d0ce88092838352b798ce711c2") version("0.3.1", sha256="571da56ff8d0bec8ae54923b621cda98d36dcef10feb36fd492c4d0c2cd0e869") - depends_on("py-setuptools", type="build") - depends_on("py-setuptools-rust", type="build") - depends_on("py-maturin", type="build", when="@0.4.3") + # Based on PyPI wheel availability + depends_on("python@:3.12", when="@:0.4.3", type=("build", "run")) + depends_on("py-maturin@1", type="build", when="@0.4.3:") + depends_on("py-setuptools", when="@0.3.1", type="build") + depends_on("py-setuptools-rust", when="@0.3.1", type="build") From 0bad754e2363fbe85da07adabacf63315a28f65b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:39:36 +0100 Subject: [PATCH 583/615] py-scikit-learn: add Python 3.13 support (#47775) --- var/spack/repos/builtin/packages/py-scikit-learn/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index 4fb94f843f70a0..372c50624ad994 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -54,7 +54,8 @@ class PyScikitLearn(PythonPackage): # Based on PyPI wheel availability with default_args(type=("build", "link", "run")): - depends_on("python@3.9:3.12", when="@1.4:") + depends_on("python@3.9:3.13", when="@1.5.2:") + depends_on("python@3.9:3.12", when="@1.4:1.5.1") depends_on("python@3.8:3.12", when="@1.3.1:1.3") depends_on("python@3.8:3.11", when="@1.1.3:1.3.0") depends_on("python@3.8:3.10", when="@1.1.0:1.1.2") From 4208aa6291b04c9a59481772ff27413ca93b34ba Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:40:11 +0100 Subject: [PATCH 584/615] py-torchvision: add Python 3.13 support (#47776) --- var/spack/repos/builtin/packages/py-torchvision/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 4fe32d63cce910..baa08a80375c38 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -73,7 +73,7 @@ class PyTorchvision(PythonPackage): with default_args(type=("build", "link", "run")): # Based on PyPI wheel availability - depends_on("python@3.9:3.12", when="@0.20:") + depends_on("python@3.9:3.13", when="@0.20:") depends_on("python@3.8:3.12", when="@0.17:0.19") depends_on("python@3.8:3.11", when="@0.15:0.16") depends_on("python@:3.10", when="@0.12:0.14") From 12d3abc7360da0a29338d6f9016a0a668bc998cb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:40:45 +0100 Subject: [PATCH 585/615] py-pytz: add v2024.2 (#47777) --- var/spack/repos/builtin/packages/py-pytz/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 952e8347f00475..66128890a9eda8 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -15,6 +15,7 @@ class PyPytz(PythonPackage): license("MIT") + version("2024.2", sha256="2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a") version("2023.3", sha256="1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588") version("2022.2.1", sha256="cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5") version("2021.3", sha256="acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326") From 9156e4be0458d907ba289661bd64b3dbd8a4c058 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:42:06 +0100 Subject: [PATCH 586/615] awscli-v2: add v2.22.4 (#47765) --- .../builtin/packages/awscli-v2/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/awscli-v2/package.py b/var/spack/repos/builtin/packages/awscli-v2/package.py index ea9973c1257db5..51b80388946b0a 100644 --- a/var/spack/repos/builtin/packages/awscli-v2/package.py +++ b/var/spack/repos/builtin/packages/awscli-v2/package.py @@ -15,24 +15,31 @@ class AwscliV2(PythonPackage): maintainers("climbfuji", "teaguesterling") + version("2.22.4", sha256="56c6170f3be830afef2dea60fc3fd7ed14cf2ca2efba055c085fe6a7c4de358e") version("2.15.53", sha256="a4f5fd4e09b8f2fb3d2049d0610c7b0993f9aafaf427f299439f05643b25eb4b") version("2.13.22", sha256="dd731a2ba5973f3219f24c8b332a223a29d959493c8a8e93746d65877d02afc1") + with default_args(type="build"): + depends_on("py-flit-core@3.7.1:3.9.0", when="@2.22:") + depends_on("py-flit-core@3.7.1:3.8.0", when="@:2.15") + with default_args(type=("build", "run")): - depends_on("python@3.8:") - depends_on("py-flit-core@3.7.1:3.8.0") depends_on("py-colorama@0.2.5:0.4.6") depends_on("py-docutils@0.10:0.19") - # Remove upper bound to enable Python 3.12 support - # depends_on("py-cryptography@3.3.2:40.0.1") - depends_on("py-cryptography@3.3.2:") + depends_on("py-cryptography@40:43.0.1", when="@2.22:") + depends_on("py-cryptography@3.3.2:40.0.1", when="@:2.15") depends_on("py-ruamel-yaml@0.15:0.17.21") - depends_on("py-ruamel-yaml-clib@0.2:0.2.7", when="^python@:3.9") + depends_on("py-ruamel-yaml-clib@0.2:", when="@2.22:") + # Upper bound relaxed for Python 3.13 support + # depends_on("py-ruamel-yaml-clib@0.2:0.2.8", when="@2.22:") + depends_on("py-ruamel-yaml-clib@0.2:0.2.7", when="@:2.15") depends_on("py-prompt-toolkit@3.0.24:3.0.38") depends_on("py-distro@1.5:1.8") - depends_on("py-awscrt@0.16.4:0.16.16", when="@2.13") + depends_on("py-awscrt@0.19.18:0.22.0", when="@2.22:") depends_on("py-awscrt@0.19.18:0.19.19", when="@2.15") - depends_on("py-python-dateutil@2.1:2.8.2") + depends_on("py-awscrt@0.16.4:0.16.16", when="@2.13") + depends_on("py-python-dateutil@2.1:2.9.0", when="@2.22:") + depends_on("py-python-dateutil@2.1:2.8.2", when="@:2.15") depends_on("py-jmespath@0.7.1:1.0") depends_on("py-urllib3@1.25.4:1.26") From 325873a4c787f887ce7f033a689f7e7c1a0653bd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 15:42:30 +0100 Subject: [PATCH 587/615] py-fsspec: add v2024.10.0 (#47778) --- var/spack/repos/builtin/packages/py-fsspec/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-fsspec/package.py b/var/spack/repos/builtin/packages/py-fsspec/package.py index 1e5bc5bad39821..d24069a32b4622 100644 --- a/var/spack/repos/builtin/packages/py-fsspec/package.py +++ b/var/spack/repos/builtin/packages/py-fsspec/package.py @@ -17,6 +17,7 @@ class PyFsspec(PythonPackage): # Requires pytest skip_modules = ["fsspec.tests"] + version("2024.10.0", sha256="eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493") version("2024.5.0", sha256="1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a") version("2024.3.1", sha256="f39780e282d7d117ffb42bb96992f8a90795e4d0fb0f661a70ca39fe9c43ded9") version("2024.2.0", sha256="b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84") From 58511a33523c200fd0400ca25ffc844a9ecc7fd1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 17:48:16 +0100 Subject: [PATCH 588/615] py-pandas: correct Python version constraint (#47770) --- .../builtin/packages/py-pandas/package.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 63c6597b51c173..4ded508d748b9a 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -95,15 +95,16 @@ class PyPandas(PythonPackage): depends_on("py-setuptools@24.2:", when="@:1.2") with default_args(type=("build", "run")): - # Based on PyPI wheel versions - depends_on("python@3.9:3.13", when="@2.2.3:") - depends_on("python@3.9:3.12", when="@2.1.1:") - depends_on("python@3.9:3.11", when="@2.1.0") - depends_on("python@3.8:3.11", when="@1.5:2.0") - depends_on("python@3.8:3.10", when="@1.4") - depends_on("python@:3.10", when="@1.3.3:1.3") - depends_on("python@:3.9", when="@1.1.3:1.3.2") - depends_on("python@:3.8", when="@0.25.2:1.1.2") + # Based on PyPI wheel availability + depends_on("python@3.9:", when="@2.1:") + depends_on("python@3.8:", when="@1.4:") + + depends_on("python@:3.13") + depends_on("python@:3.12", when="@:2.2.2") + depends_on("python@:3.11", when="@:2.1.0") + depends_on("python@:3.10", when="@:1.4") + depends_on("python@:3.9", when="@:1.3.2") + depends_on("python@:3.8", when="@:1.1.2") depends_on("py-numpy@1.22.4:", when="@2.1:") depends_on("py-numpy@1.20.3:", when="@1.5:") From 75b03bc12ffbabdfac0775ead5442c3f102f94c7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 24 Nov 2024 20:55:18 +0100 Subject: [PATCH 589/615] glib: add v2.82.2 (#47766) --- var/spack/repos/builtin/packages/glib/package.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 982ea5449e16f9..5a32596e381225 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -30,7 +30,14 @@ class Glib(MesonPackage, AutotoolsPackage): license("LGPL-2.1-or-later") - version("2.78.3", sha256="609801dd373796e515972bf95fc0b2daa44545481ee2f465c4f204d224b2bc21") + # Even minor versions are stable, odd minor versions are development, only add even numbers + version("2.82.2", sha256="ab45f5a323048b1659ee0fbda5cecd94b099ab3e4b9abf26ae06aeb3e781fd63") + # No real reason to prefer older versions, `preferred` should be removed after testing + version( + "2.78.3", + sha256="609801dd373796e515972bf95fc0b2daa44545481ee2f465c4f204d224b2bc21", + preferred=True, + ) version("2.78.0", sha256="44eaab8b720877ce303c5540b657b126f12dc94972d9880b52959f43fb537b30") version("2.76.6", sha256="1136ae6987dcbb64e0be3197a80190520f7acab81e2bfb937dc85c11c8aa9f04") version("2.76.4", sha256="5a5a191c96836e166a7771f7ea6ca2b0069c603c7da3cba1cd38d1694a395dda") @@ -139,6 +146,8 @@ class Glib(MesonPackage, AutotoolsPackage): ) with when("build_system=meson"): + depends_on("meson@1.4:", when="@2.83:", type="build") + depends_on("meson@1.2:", when="@2.79:", type="build") depends_on("meson@0.60.0:", when="@2.73:", type="build") depends_on("meson@0.52.0:", when="@2.71:2.72", type="build") depends_on("meson@0.49.2:", when="@2.61.2:2.70", type="build") @@ -149,8 +158,9 @@ class Glib(MesonPackage, AutotoolsPackage): depends_on("zlib-api") depends_on("gettext") depends_on("perl", type=("build", "run")) + depends_on("python", type=("build", "run"), when="@2.53.4:") # Uses distutils in gio/gdbus-2.0/codegen/utils.py - depends_on("python@:3.11", type=("build", "run"), when="@2.53.4:") + depends_on("python@:3.11", type=("build", "run"), when="@2.53.4:2.78") depends_on("pcre2", when="@2.73.2:") depends_on("pcre2@10.34:", when="@2.74:") depends_on("pcre+utf", when="@2.48:2.73.1") From cd8c46e54e21d0317e0538481e54dac01a55bc8e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 25 Nov 2024 10:02:31 +0100 Subject: [PATCH 590/615] py-ruff: add v0.8.0 (#47758) --- var/spack/repos/builtin/packages/py-ruff/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ruff/package.py b/var/spack/repos/builtin/packages/py-ruff/package.py index f38b08a4d772a8..81781a04b5ecfa 100644 --- a/var/spack/repos/builtin/packages/py-ruff/package.py +++ b/var/spack/repos/builtin/packages/py-ruff/package.py @@ -7,15 +7,16 @@ class PyRuff(PythonPackage): - """An extremely fast Python linter, written in Rust.""" + """An extremely fast Python linter and code formatter, written in Rust.""" - homepage = "https://beta.ruff.rs/docs" + homepage = "https://docs.astral.sh/ruff" pypi = "ruff/ruff-0.0.276.tar.gz" git = "https://github.com/astral-sh/ruff.git" license("MIT") maintainers("adamjstewart") + version("0.8.0", sha256="a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44") version("0.6.5", sha256="4d32d87fab433c0cf285c3683dd4dae63be05fd7a1d65b3f5bf7cdd05a6b96fb") version("0.5.7", sha256="8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5") version("0.4.5", sha256="286eabd47e7d4d521d199cab84deca135557e6d1e0f0d01c29e757c3cb151b54") @@ -28,5 +29,6 @@ class PyRuff(PythonPackage): depends_on("py-maturin@1") # Found in Cargo.toml + depends_on("rust@1.80:", when="@0.7.1:") depends_on("rust@1.76:", when="@0.5.6:") depends_on("rust@1.71:") From 347ec87fc522b93de2549d14bd937b36fda15f0c Mon Sep 17 00:00:00 2001 From: Veselin Dobrev Date: Mon, 25 Nov 2024 01:13:22 -0800 Subject: [PATCH 591/615] mfem: add logic for the C++ standard level when using rocPRIM (#47751) --- var/spack/repos/builtin/packages/mfem/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 2b5d75706cd014..f5d564854f81c5 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -361,6 +361,8 @@ class Mfem(Package, CudaPackage, ROCmPackage): # MUMPS (and SuiteSparse in older versions). On the other hand, PETSc built # with MUMPS is not strictly required, so we do not require it here. depends_on("petsc@3.8:+mpi+hypre", when="+petsc") + # rocPRIM is a dependency when using petsc+rocm and requires C++14 or newer: + conflicts("cxxstd=11", when="^rocprim@5.5.0:") depends_on("slepc@3.8.0:", when="+slepc") # If petsc is built with +cuda, propagate cuda_arch to petsc and slepc for sm_ in CudaPackage.cuda_arch_values: @@ -635,6 +637,9 @@ def find_optional_library(name, prefix): cxxstd = "14" if self.spec.satisfies("^ginkgo"): cxxstd = "14" + # When rocPRIM is used (e.g. by PETSc + ROCm) we need C++14: + if self.spec.satisfies("^rocprim@5.5.0:"): + cxxstd = "14" cxxstd_req = spec.variants["cxxstd"].value if cxxstd_req != "auto": # Constraints for valid standard level should be imposed during From 8957ef0df54683c956b476b1d54b4dc517b7be96 Mon Sep 17 00:00:00 2001 From: Stephen Herbener <32968781+srherbener@users.noreply.github.com> Date: Mon, 25 Nov 2024 02:14:16 -0700 Subject: [PATCH 592/615] Updated version specs for bufr-query package. (#47752) --- var/spack/repos/builtin/packages/bufr-query/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bufr-query/package.py b/var/spack/repos/builtin/packages/bufr-query/package.py index bf79f5f581bd82..f6557eb9b40f87 100644 --- a/var/spack/repos/builtin/packages/bufr-query/package.py +++ b/var/spack/repos/builtin/packages/bufr-query/package.py @@ -18,6 +18,7 @@ class BufrQuery(CMakePackage, PythonExtension): license("Apache-2.0", checked_by="srherbener") + version("0.0.4", sha256="cc21a298c03ee3a8938823301606e91c7b321005da284ebf2c9b25044bfcbad8") version("0.0.3", sha256="f2952a190cc1d7714a3bfe481fb1545459639ba304fc31b941062b471dea1d41") version("0.0.2", sha256="b87a128246e79e3c76e3158d89823e2ae38e9ee1a5a81b6f7b423837bdb93a1f") version("0.0.1", sha256="001990d864533c101b93d1c351edf50cf8b5ccc575e442d174735f6c332d3d03") From f1faf31735a7540188f34b6d374f5c6ed926dcb5 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 03:20:58 -0600 Subject: [PATCH 593/615] build-containers: determine latest release tag and push that as latest (#47742) --- .github/workflows/build-containers.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index eb7e7b07927092..e49c98029d36f8 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -57,6 +57,12 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - name: Determine latest release tag + id: latest + run: | + git fetch --quiet --tags + echo "tag=$(git tag --list --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)" | tee -a $GITHUB_OUTPUT + - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 id: docker_meta with: @@ -71,6 +77,7 @@ jobs: type=semver,pattern={{major}} type=ref,event=branch type=ref,event=pr + type=raw,value=latest,enable=${{ github.ref == format('refs/tags/{0}', steps.latest.outputs.tag) }} - name: Generate the Dockerfile env: From c93f223a7372eb960041cb5c5ffef833e80c4801 Mon Sep 17 00:00:00 2001 From: jflrichard <119768404+jflrichard@users.noreply.github.com> Date: Mon, 25 Nov 2024 04:24:03 -0500 Subject: [PATCH 594/615] postgis: add version 3.1.2 (#47743) --- var/spack/repos/builtin/packages/postgis/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/postgis/package.py b/var/spack/repos/builtin/packages/postgis/package.py index 5bc68169291e5b..1fdc91b9d32e6e 100644 --- a/var/spack/repos/builtin/packages/postgis/package.py +++ b/var/spack/repos/builtin/packages/postgis/package.py @@ -18,6 +18,7 @@ class Postgis(AutotoolsPackage): license("GPL-2.0-or-later") + version("3.1.2", sha256="2cdd3760176926704b4eb25ff3357543c9637dee74425a49082906857c7e0732") version("3.0.1", sha256="5a5432f95150d9bae9215c6d1c7bb354e060482a7c379daa9b8384e1d03e6353") version("3.0.0", sha256="c06fd2cd5cea0119106ffe17a7235d893c2bbe6f4b63c8617c767630973ba594") version("2.5.3", sha256="72e8269d40f981e22fb2b78d3ff292338e69a4f5166e481a77b015e1d34e559a") From 9da8dcae973b07a5701248c8854939b5cdf4ff51 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:30:48 +0000 Subject: [PATCH 595/615] verible: add v0.0.3841 (#47729) --- var/spack/repos/builtin/packages/verible/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/verible/package.py b/var/spack/repos/builtin/packages/verible/package.py index e7109855f27c1f..e16c84f56afd90 100644 --- a/var/spack/repos/builtin/packages/verible/package.py +++ b/var/spack/repos/builtin/packages/verible/package.py @@ -34,6 +34,11 @@ class Verible(Package): version("master", branch="master") + version( + "0.0.3841", + sha256="fbc9cb32aa8a64ba60f24dc89e8573c8ea62c45d76113a0f2ab5b73babed5990", + url="https://github.com/chipsalliance/verible/archive/refs/tags/v0.0-3841-g5eb8aa34.tar.gz", + ) version( "0.0.3836", sha256="946625a1527d0a97772ea031ab7358af29e61258c189a2ab0d9533b43e71f35b", From a1c57d86c3a201e43316169bb3fc832319e8932c Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:33:08 +0000 Subject: [PATCH 596/615] libusb: add v1.0.23:1.0.27 (#47727) --- var/spack/repos/builtin/packages/libusb/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libusb/package.py b/var/spack/repos/builtin/packages/libusb/package.py index 36fb87fcc8aad7..9fdc454afc697d 100644 --- a/var/spack/repos/builtin/packages/libusb/package.py +++ b/var/spack/repos/builtin/packages/libusb/package.py @@ -11,12 +11,17 @@ class Libusb(AutotoolsPackage): """Library for USB device access.""" homepage = "https://libusb.info/" - url = "https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2" + url = "https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.tar.bz2" git = "https://github.com/libusb/libusb" license("LGPL-2.1-or-later") version("master", branch="master") + version("1.0.27", sha256="ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575") + version("1.0.26", sha256="12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5") + version("1.0.25", sha256="8a28ef197a797ebac2702f095e81975e2b02b2eeff2774fa909c78a74ef50849") + version("1.0.24", sha256="7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a") + version("1.0.23", sha256="db11c06e958a82dac52cf3c65cb4dd2c3f339c8a988665110e0d24d19312ad8d") version("1.0.22", sha256="75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157") version("1.0.21", sha256="7dce9cce9a81194b7065ee912bcd55eeffebab694ea403ffb91b67db66b1824b") version("1.0.20", sha256="cb057190ba0a961768224e4dc6883104c6f945b2bf2ef90d7da39e7c1834f7ff") From 66055f903c96576b5c9d0e912a2b1cd3871eaefd Mon Sep 17 00:00:00 2001 From: pauleonix Date: Mon, 25 Nov 2024 10:36:11 +0100 Subject: [PATCH 597/615] cuda: Add v12.6.3 (#47721) --- var/spack/repos/builtin/packages/cuda/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index bd1ff959f2ac26..ea7b314418d9e2 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -24,6 +24,16 @@ # format returned by platform.system() and 'arch' by platform.machine() _versions = { + "12.6.3": { + "Linux-aarch64": ( + "213ea63a6357020978a8b0a79a8c9d12a2a5941afa1cdc69d5a3f933fa8bed04", + "https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda_12.6.3_560.35.05_linux_sbsa.run", + ), + "Linux-x86_64": ( + "81d60e48044796d7883aa8a049afe6501b843f2c45639b3703b2378de30d55d3", + "https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda_12.6.3_560.35.05_linux.run", + ), + }, "12.6.2": { "Linux-aarch64": ( "2249408848b705c18b9eadfb5161b52e4e36fcc5753647329cce93db141e5466", From eda0c6888ee834697b1fa65f7c7efeb9b5d233e9 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Mon, 25 Nov 2024 01:38:08 -0800 Subject: [PATCH 598/615] ip: add cmake version requirement for @5.1: (#47754) --- var/spack/repos/builtin/packages/ip/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ip/package.py b/var/spack/repos/builtin/packages/ip/package.py index e87a5fb6f7f101..d8e2371fb0c6b1 100644 --- a/var/spack/repos/builtin/packages/ip/package.py +++ b/var/spack/repos/builtin/packages/ip/package.py @@ -70,6 +70,7 @@ class Ip(CMakePackage): depends_on("sp precision=d", when="@4.1:4 precision=d") depends_on("sp precision=8", when="@4.1:4 precision=8") depends_on("lapack", when="@5.1:") + depends_on("cmake@3.18:", when="@5.1:") def cmake_args(self): args = [ From ed39967848bbbbb5ef6c5a213494e912862d2991 Mon Sep 17 00:00:00 2001 From: afzpatel <122491982+afzpatel@users.noreply.github.com> Date: Mon, 25 Nov 2024 04:40:21 -0500 Subject: [PATCH 599/615] rocm-tensile: add 6.2.1 (#47702) --- var/spack/repos/builtin/packages/rocm-tensile/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/rocm-tensile/package.py b/var/spack/repos/builtin/packages/rocm-tensile/package.py index de9da28b89764f..8cd72abd51532e 100644 --- a/var/spack/repos/builtin/packages/rocm-tensile/package.py +++ b/var/spack/repos/builtin/packages/rocm-tensile/package.py @@ -19,6 +19,7 @@ class RocmTensile(CMakePackage): license("MIT") maintainers("srekolam", "renjithravindrankannath", "haampie") + version("6.2.1", sha256="29802dc65a7cea29f0e2608782c75db87e9c71eea8aeb485e856cf2861d83098") version("6.2.0", sha256="6f7d679bfffd1f723f2788b00fdcb1b4673b597f9f85c2cdaab3c2aa17afb33d") version("6.1.2", sha256="6a08190f6d9c8cc76764a68e2dd3e7af4759d4146ddc1c4b3370c7762a6f6d83") version("6.1.1", sha256="04fd76e6a0e9b7528e61df0721b03c0e977c145a2a1ea331d515c9167d7ac35f") @@ -80,6 +81,7 @@ class RocmTensile(CMakePackage): "6.1.1", "6.1.2", "6.2.0", + "6.2.1", ]: depends_on(f"rocm-cmake@{ver}", type="build", when=f"@{ver}") depends_on(f"hip@{ver}", when=f"@{ver}") From 21e10d6d989afcabdd340e4e4a8d2c5c0ba003d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szabolcs=20Horv=C3=A1t?= Date: Mon, 25 Nov 2024 09:51:24 +0000 Subject: [PATCH 600/615] igraph: add v0.10.15 (#47692) --- var/spack/repos/builtin/packages/igraph/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/igraph/package.py b/var/spack/repos/builtin/packages/igraph/package.py index c741f316f1c00e..948b325322b6e1 100644 --- a/var/spack/repos/builtin/packages/igraph/package.py +++ b/var/spack/repos/builtin/packages/igraph/package.py @@ -14,6 +14,7 @@ class Igraph(CMakePackage, AutotoolsPackage): license("GPL-2.0-or-later") + version("0.10.15", sha256="03ba01db0544c4e32e51ab66f2356a034394533f61b4e14d769b9bbf5ad5e52c") version("0.10.13", sha256="c6dc44324f61f52c098bedb81f6a602365d39d692d5068ca4fc3734b2a15e64c") version("0.10.6", sha256="99bf91ee90febeeb9a201f3e0c1d323c09214f0b5f37a4290dc3b63f52839d6d") version("0.7.1", sha256="d978030e27369bf698f3816ab70aa9141e9baf81c56cc4f55efbe5489b46b0df") From b256a7c50d2ba4c2aae1be9e4497cf671a1da2f8 Mon Sep 17 00:00:00 2001 From: david-edwards-linaro <147443134+david-edwards-linaro@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:53:27 +0000 Subject: [PATCH 601/615] linaro-forge: remove v21.1.3 (#47688) --- var/spack/repos/builtin/packages/linaro-forge/package.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/linaro-forge/package.py b/var/spack/repos/builtin/packages/linaro-forge/package.py index 8480310eb6d47f..13f0a17269103a 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -66,9 +66,6 @@ class LinaroForge(Package): version( "22.1.4", sha256="4e2af481a37b4c99dba0de6fac75ac945316955fc4170d06e321530adea7ac9f" ) - version( - "21.1.3", sha256="4a4ff7372aad5a31fc9e18b7b6c493691ab37d8d44a3158584e62d1ab82b0eeb" - ) elif platform.machine() == "ppc64le": # N.B. support for ppc64le was dropped in 24.0 version( @@ -97,9 +94,6 @@ class LinaroForge(Package): version( "22.0.4", sha256="f4cb5bcbaa67f9209299fe4653186a2829760b8b16a2883913aa43766375b04c" ) - version( - "21.1.3", sha256="eecbc5686d60994c5468b2d7cd37bebe5d9ac0ba37bd1f98fbfc69b071db541e" - ) elif platform.machine() == "x86_64": version("24.1", sha256="0b96878ab73c20b39c4730ed15f24ca86dc5985637ff5d8e68f55e1e802e5fe3") version( @@ -147,9 +141,6 @@ class LinaroForge(Package): version( "22.0.4", sha256="a2c8c1da38b9684d7c4656a98b3fc42777b03fd474cd0bf969324804f47587e5" ) - version( - "21.1.3", sha256="03dc82f1d075deb6f08d1e3e6592dc9b630d406c08a1316d89c436b5874f3407" - ) variant( "probe", From ac2ede8d2faae758555c941073ae99fdf8889206 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:00:00 -0600 Subject: [PATCH 602/615] py-pyzmq: add v25.1.2, v26.0.3, v26.1.1, v26.2.0 (switch to py-scikit-build-core) (#44493) --- .../builtin/packages/py-pyzmq/package.py | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyzmq/package.py b/var/spack/repos/builtin/packages/py-pyzmq/package.py index 660c658e9039d6..bac8d3be16c4c7 100644 --- a/var/spack/repos/builtin/packages/py-pyzmq/package.py +++ b/var/spack/repos/builtin/packages/py-pyzmq/package.py @@ -24,6 +24,10 @@ class PyPyzmq(PythonPackage): license("BSD-3-Clause") + version("26.2.0", sha256="070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f") + version("26.1.1", sha256="a7db05d8b7cd1a8c6610e9e9aa55d525baae7a44a43e18bc3260eb3f92de96c6") + version("26.0.3", sha256="dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a") + version("25.1.2", sha256="93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226") version("25.0.2", sha256="6b8c1bbb70e868dc88801aa532cae6bd4e3b5233784692b786f17ad2962e5149") version("24.0.1", sha256="216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77") version("22.3.0", sha256="8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c") @@ -39,13 +43,17 @@ class PyPyzmq(PythonPackage): depends_on("python@2.6:2.7,3.2:3.8", type=("build", "run"), when="@:14") # pyproject.toml - depends_on("py-setuptools", type="build") - # https://github.com/zeromq/pyzmq/issues/1278 - # https://github.com/zeromq/pyzmq/pull/1317 - depends_on("py-setuptools@:59", when="@17:18.0", type="build") - depends_on("py-packaging", type="build") + with when("@26:"): + depends_on("py-scikit-build-core +pyproject", type="build") + with when("@:25"): + depends_on("py-setuptools", type="build") + # https://github.com/zeromq/pyzmq/issues/1278 + # https://github.com/zeromq/pyzmq/pull/1317 + depends_on("py-setuptools@:59", when="@17:18.0", type="build") - # setup.py + depends_on("py-packaging", type="build") + depends_on("py-cython@3:", type="build", when="@26:") + depends_on("py-cython@0.29.35:", type="build", when="@25.1.1: ^python@3.12:") depends_on("py-cython@0.29:", type="build", when="@22.3.0:") depends_on("py-cython@0.20:", type="build", when="@18:") depends_on("py-cython@0.16:", type="build") @@ -66,7 +74,7 @@ def remove_cythonized_files(self): for f in find(".", "*.pyx"): touch(f) - @run_before("install") + @run_before("install", when="@:25") def setup(self): """Create config file listing dependency information.""" From a15563f8906ca6439599ef1e58691a438a7266e2 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:28:01 -0600 Subject: [PATCH 603/615] py-werkzeug: add v3.1.3 (and deprecate older versions) (#47507) Co-authored-by: wdconinc --- .../builtin/packages/py-werkzeug/package.py | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py index 475db93c4f01e2..f7d4b8e9d98209 100644 --- a/var/spack/repos/builtin/packages/py-werkzeug/package.py +++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py @@ -15,24 +15,50 @@ class PyWerkzeug(PythonPackage): license("BSD-3-Clause", checked_by="wdconinc") + version("3.1.3", sha256="60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746") version("3.0.4", sha256="34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306") version("3.0.0", sha256="3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0") - version("2.3.7", sha256="2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8") - version("2.3.4", sha256="1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76") - version("2.2.2", sha256="7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f") - version("2.0.2", sha256="aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a") - version("0.16.0", sha256="7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7") - version("0.15.6", sha256="0a24d43be6a7dce81bae05292356176d6c46d63e42a0dd3f9504b210a9cfaa43") - version("0.15.5", sha256="a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6") - version("0.15.4", sha256="a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6") - version("0.15.3", sha256="cfd1281b1748288e59762c0e174d64d8bcb2b70e7c57bc4a1203c8825af24ac3") - version("0.15.2", sha256="0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a") - version("0.15.1", sha256="ca5c2dcd367d6c0df87185b9082929d255358f5391923269335782b213d52655") - version("0.15.0", sha256="590abe38f8be026d78457fe3b5200895b3543e58ac3fc1dd792c6333ea11af64") - version("0.12.2", sha256="903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26") - version("0.11.15", sha256="455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0") - version("0.11.11", sha256="e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-46136 + version("2.3.7", sha256="2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8") + version("2.3.4", sha256="1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76") + version("2.2.2", sha256="7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f") + version("2.0.2", sha256="aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a") + version( + "0.16.0", sha256="7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7" + ) + version( + "0.15.6", sha256="0a24d43be6a7dce81bae05292356176d6c46d63e42a0dd3f9504b210a9cfaa43" + ) + version( + "0.15.5", sha256="a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6" + ) + version( + "0.15.4", sha256="a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6" + ) + version( + "0.15.3", sha256="cfd1281b1748288e59762c0e174d64d8bcb2b70e7c57bc4a1203c8825af24ac3" + ) + version( + "0.15.2", sha256="0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a" + ) + version( + "0.15.1", sha256="ca5c2dcd367d6c0df87185b9082929d255358f5391923269335782b213d52655" + ) + version( + "0.15.0", sha256="590abe38f8be026d78457fe3b5200895b3543e58ac3fc1dd792c6333ea11af64" + ) + version( + "0.12.2", sha256="903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26" + ) + version( + "0.11.15", sha256="455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0" + ) + version( + "0.11.11", sha256="e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5" + ) + depends_on("python@3.9:", when="@3.1:", type=("build", "run")) depends_on("python@3.8:", when="@2.3:", type=("build", "run")) depends_on("python@:3.9", when="@:0.12", type=("build", "run")) depends_on("py-flit-core@:3", when="@2.3.7:", type="build") From 94815d22277ad1a111e4f51828acb9a814bbeb81 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:37:41 -0600 Subject: [PATCH 604/615] py-netifaces: add v0.10.9, v0.11.0 (#47451) --- .../repos/builtin/packages/py-netifaces/package.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-netifaces/package.py b/var/spack/repos/builtin/packages/py-netifaces/package.py index fb8096d1e2afb2..e4f193b78a728d 100644 --- a/var/spack/repos/builtin/packages/py-netifaces/package.py +++ b/var/spack/repos/builtin/packages/py-netifaces/package.py @@ -9,15 +9,15 @@ class PyNetifaces(PythonPackage): """Portable network interface information""" - homepage = ( - "https://0xbharath.github.io/python-network-programming/libraries/netifaces/index.html" - ) + homepage = "https://github.com/al45tair/netifaces" pypi = "netifaces/netifaces-0.10.5.tar.gz" - license("Unlicense") + license("MIT", checked_by="wdconinc") + version("0.11.0", sha256="043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32") + version("0.10.9", sha256="2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3") version("0.10.5", sha256="59d8ad52dd3116fcb6635e175751b250dc783fb011adba539558bd764e5d628b") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("py-setuptools", type="build") From 9883a2144dbec2e67e1c26305f091632c6edc7b6 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:38:22 -0600 Subject: [PATCH 605/615] py-quart: add v0.19.8 (#47508) Co-authored-by: wdconinc --- .../builtin/packages/py-flask/package.py | 41 ++++++++++++++----- .../builtin/packages/py-quart/package.py | 23 ++++++++++- 2 files changed, 52 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-flask/package.py b/var/spack/repos/builtin/packages/py-flask/package.py index 091ebed06bb981..6c7786f2d1bb52 100644 --- a/var/spack/repos/builtin/packages/py-flask/package.py +++ b/var/spack/repos/builtin/packages/py-flask/package.py @@ -10,24 +10,37 @@ class PyFlask(PythonPackage): """A simple framework for building complex web applications.""" homepage = "https://palletsprojects.com/p/flask/" - pypi = "Flask/Flask-1.1.1.tar.gz" + pypi = "flask/flask-3.0.3.tar.gz" git = "https://github.com/pallets/flask.git" license("BSD-3-Clause") + version("3.0.3", sha256="ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842") version("2.3.2", sha256="8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef") - version("2.2.2", sha256="642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b") - version("2.0.2", sha256="7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2") - version("1.1.2", sha256="4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060") - version("1.1.1", sha256="13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52") - version("0.12.4", sha256="2ea22336f6d388b4b242bc3abf8a01244a8aa3e236e7407469ef78c16ba355dd") - version("0.12.2", sha256="49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1") - version("0.12.1", sha256="9dce4b6bfbb5b062181d3f7da8f727ff70c1156cbb4024351eafd426deb5fb88") - version("0.11.1", sha256="b4713f2bfb9ebc2966b8a49903ae0d3984781d5c878591cf2f7b484d28756b0e") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-30861 + version("2.2.2", sha256="642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b") + version("2.0.2", sha256="7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2") + version("1.1.2", sha256="4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060") + version("1.1.1", sha256="13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52") + version( + "0.12.4", sha256="2ea22336f6d388b4b242bc3abf8a01244a8aa3e236e7407469ef78c16ba355dd" + ) + version( + "0.12.2", sha256="49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1" + ) + version( + "0.12.1", sha256="9dce4b6bfbb5b062181d3f7da8f727ff70c1156cbb4024351eafd426deb5fb88" + ) + version( + "0.11.1", sha256="b4713f2bfb9ebc2966b8a49903ae0d3984781d5c878591cf2f7b484d28756b0e" + ) depends_on("python@3.8:", when="@2.3:", type=("build", "run")) - depends_on("py-setuptools", type=("build", "run")) + depends_on("py-setuptools", type=("build", "run"), when="@:2") + depends_on("py-flit-core@:3", type=("build", "run"), when="@3:") + depends_on("py-werkzeug@3:", when="@3:", type=("build", "run")) depends_on("py-werkzeug@2.3.3:", when="@2.3.2:", type=("build", "run")) depends_on("py-werkzeug@2.2.2:", when="@2.2.2:", type=("build", "run")) depends_on("py-werkzeug@2:", when="@2:", type=("build", "run")) @@ -44,3 +57,11 @@ class PyFlask(PythonPackage): depends_on("py-click@5.1:", type=("build", "run")) depends_on("py-blinker@1.6.2:", when="@2.3:", type=("build", "run")) depends_on("py-importlib-metadata@3.6:", when="@2.1: ^python@:3.9", type=("build", "run")) + + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/source/f/flask/{}-{}.tar.gz" + if self.spec.satisfies("@:0.18.3"): + name = "Flask" + else: + name = "flask" + return url.format(name, version) diff --git a/var/spack/repos/builtin/packages/py-quart/package.py b/var/spack/repos/builtin/packages/py-quart/package.py index 60ac08264cd1c9..a3d49bac24b6c1 100644 --- a/var/spack/repos/builtin/packages/py-quart/package.py +++ b/var/spack/repos/builtin/packages/py-quart/package.py @@ -11,21 +11,40 @@ class PyQuart(PythonPackage): Flask.""" homepage = "https://gitlab.com/pgjones/quart/" - pypi = "Quart/Quart-0.16.3.tar.gz" + pypi = "quart/quart-0.16.3.tar.gz" license("MIT") + version("0.19.8", sha256="ef567d0be7677c99890d5c6ff30e679699fe7e5fca1a90fa3b6974edd8421794") version("0.16.3", sha256="16521d8cf062461b158433d820fff509f98fb997ae6c28740eda061d9cba7d5e") + depends_on("python@3.8:", type=("build", "run"), when="@0.19:") depends_on("python@3.7:", type=("build", "run")) depends_on("py-poetry-core@1:", type="build") depends_on("py-aiofiles", type=("build", "run")) + depends_on("py-blinker@1.6:", type=("build", "run"), when="@0.19:") depends_on("py-blinker", type=("build", "run")) + depends_on("py-click@8.0.0:", type=("build", "run"), when="@0.18.1:") depends_on("py-click", type=("build", "run")) + depends_on("py-flask@3.0.0:", type=("build", "run"), when="@0.19:") depends_on("py-hypercorn@0.11.2:", type=("build", "run")) depends_on("py-itsdangerous", type=("build", "run")) depends_on("py-jinja2", type=("build", "run")) - depends_on("py-toml", type=("build", "run")) + depends_on("py-markupsafe", type=("build", "run"), when="@0.17:") + depends_on("py-werkzeug@3:", type=("build", "run"), when="@0.19:") depends_on("py-werkzeug@2:", type=("build", "run")) + depends_on("py-importlib-metadata", type=("build", "run"), when="@0.18: ^python@:3.9") depends_on("py-importlib-metadata", type=("build", "run"), when="^python@:3.7") + depends_on("py-typing-extensions", type=("build", "run"), when="@0.19: ^python@:3.9") depends_on("py-typing-extensions", type=("build", "run"), when="^python@:3.7") + + # Historical dependencies + depends_on("py-toml", type=("build", "run"), when="@:0.17") + + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/source/q/quart/{}-{}.tar.gz" + if self.spec.satisfies("@:0.18.3"): + name = "Quart" + else: + name = "quart" + return url.format(name, version) From 3f50ccfcdd3e11a5deca9eeda594cb5d8094e062 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:38:49 -0600 Subject: [PATCH 606/615] py-azure-*: updated versions (#47525) --- .../packages/py-azure-batch/package.py | 13 ++++++++-- .../builtin/packages/py-azure-core/package.py | 4 ++- .../packages/py-azure-identity/package.py | 25 ++++++++++++------- .../packages/py-azure-storage-blob/package.py | 18 +++++++------ 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-azure-batch/package.py b/var/spack/repos/builtin/packages/py-azure-batch/package.py index 680a0d69b79298..467bfcb8061b65 100644 --- a/var/spack/repos/builtin/packages/py-azure-batch/package.py +++ b/var/spack/repos/builtin/packages/py-azure-batch/package.py @@ -11,8 +11,9 @@ class PyAzureBatch(PythonPackage): """Microsoft Azure Batch Client Library for Python.""" homepage = "https://github.com/Azure/azure-sdk-for-python" - pypi = "azure-batch/azure-batch-9.0.0.zip" + pypi = "azure-batch/azure-batch-14.2.0.tar.gz" + version("14.2.0", sha256="c79267d6c3d3fe14a16a422ab5bbfabcbd68ed0b58b6bbcdfa0c8345c4c78532") version("14.0.0", sha256="165b1e99b86f821024c4fae85fb34869d407aa0ebb0ca4b96fb26d859c26c934") version("13.0.0", sha256="e9295de70404d276eda0dd2253d76397439abe5d8f18c1fca199c49b8d6ae30a") version("12.0.0", sha256="1a9b1e178984a7bf495af67bcce51f0db1e4a8a957afb29e33554a14a9674deb") @@ -20,7 +21,7 @@ class PyAzureBatch(PythonPackage): version("10.0.0", sha256="83d7a2b0be42ca456ac2b56fa3dc6ce704c130e888d37d924072c1d3718f32d0") version("9.0.0", sha256="47ca6f50a640915e1cdc5ce3c1307abe5fa3a636236e561119cf62d9df384d84") - # https://github.com/Azure/azure-sdk-for-python/blob/azure-batch_14.0.0/sdk/batch/azure-batch/setup.py + # https://github.com/Azure/azure-sdk-for-python/blob/azure-batch_14.2.0/sdk/batch/azure-batch/setup.py depends_on("py-setuptools", type="build") @@ -30,3 +31,11 @@ class PyAzureBatch(PythonPackage): with when("@:12"): depends_on("py-msrest@0.6.21:", when="@11:", type=("build", "run")) depends_on("py-msrest@0.5.0:", type=("build", "run")) + + def url_for_version(self, version): + if version < Version("14.1.0"): + return "https://pypi.io/packages/source/a/azure-batch/azure-batch-{0}.zip".format( + version + ) + + return super().url_for_version(version) diff --git a/var/spack/repos/builtin/packages/py-azure-core/package.py b/var/spack/repos/builtin/packages/py-azure-core/package.py index a411e14e1ea286..19db3d0f1cdce0 100644 --- a/var/spack/repos/builtin/packages/py-azure-core/package.py +++ b/var/spack/repos/builtin/packages/py-azure-core/package.py @@ -15,6 +15,7 @@ class PyAzureCore(PythonPackage): license("MIT") + version("1.30.2", sha256="a14dc210efcd608821aa472d9fb8e8d035d29b68993819147bc290a8ac224472") version("1.30.0", sha256="6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35") version("1.29.7", sha256="2944faf1a7ff1558b1f457cabf60f279869cabaeef86b353bed8eb032c7d8c5e") version("1.29.2", sha256="beb0fe88d1043d8457318e8fb841d9caa648211092eda213c16b376401f3710d") @@ -26,8 +27,9 @@ class PyAzureCore(PythonPackage): version("1.7.0", sha256="a66da240a287f447f9867f54ba09ea235895cec13ea38c5f490ce4eedefdd75c") version("1.6.0", sha256="d10b74e783cff90d56360e61162afdd22276d62dc9467e657ae866449eae7648") - # https://github.com/Azure/azure-sdk-for-python/blob/azure-core_1.30.0/sdk/core/azure-core/setup.py + # https://github.com/Azure/azure-sdk-for-python/blob/azure-core_1.30.2/sdk/core/azure-core/setup.py + depends_on("python@3.8:", type=("build", "run"), when="@1.30.2:") depends_on("py-setuptools", type="build") depends_on("py-anyio@3:4", when="@1.29.6", type=("build", "run")) depends_on("py-requests@2.21:", when="@1.29.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-azure-identity/package.py b/var/spack/repos/builtin/packages/py-azure-identity/package.py index b3d743a80792d9..00c18e24d6c39e 100644 --- a/var/spack/repos/builtin/packages/py-azure-identity/package.py +++ b/var/spack/repos/builtin/packages/py-azure-identity/package.py @@ -21,6 +21,7 @@ class PyAzureIdentity(PythonPackage): license("MIT") + version("1.17.1", sha256="32ecc67cc73f4bd0595e4f64b1ca65cd05186f4fe6f98ed2ae9f1aa32646efea") version("1.15.0", sha256="4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8") version("1.14.1", sha256="48e2a9dbdc59b4f095f841d867d9a8cbe4c1cdbbad8251e055561afd47b4a9b8") version("1.13.0", sha256="c931c27301ffa86b07b4dcf574e29da73e3deba9ab5d1fe4f445bb6a3117e260") @@ -28,20 +29,26 @@ class PyAzureIdentity(PythonPackage): version("1.3.1", sha256="5a59c36b4b05bdaec455c390feda71b6495fc828246593404351b9a41c2e877a") version("1.2.0", sha256="b32acd1cdb6202bfe10d9a0858dc463d8960295da70ae18097eb3b85ab12cb91") - # https://github.com/Azure/azure-sdk-for-python/blob/azure-identity_1.15.0/sdk/identity/azure-identity/setup.py + # https://github.com/Azure/azure-sdk-for-python/blob/azure-identity_1.17.1/sdk/identity/azure-identity/setup.py + depends_on("python@3.8:", type=("build", "run"), when="@1.16:") depends_on("py-setuptools", type="build") - depends_on("py-azure-core@1.23:1", type=("build", "run"), when="@1.15:") - depends_on("py-azure-core@1.11:1", type=("build", "run"), when="@1.12:") - depends_on("py-azure-core@1", type=("build", "run")) + depends_on("py-azure-core@1.23:", type=("build", "run"), when="@1.16:") + depends_on("py-azure-core@1.23:1", type=("build", "run"), when="@1.15") + depends_on("py-azure-core@1.11:1", type=("build", "run"), when="@1.12:1.14") + depends_on("py-azure-core@1", type=("build", "run"), when="@:1.15") depends_on("py-cryptography@2.5:", type=("build", "run"), when="@1.12:") depends_on("py-cryptography@2.1.4:", type=("build", "run")) - depends_on("py-msal@1.24:1", type=("build", "run"), when="@1.15:") - depends_on("py-msal@1.20:1", type=("build", "run"), when="@1.13:") - depends_on("py-msal@1.12:1", type=("build", "run"), when="@1.12:") - depends_on("py-msal@1", type=("build", "run")) - depends_on("py-msal-extensions@0.3:1", type=("build", "run"), when="@1.12:") + depends_on("py-msal@1.24:", type=("build", "run"), when="@1.16:") + depends_on("py-msal@1.24:1", type=("build", "run"), when="@1.15") + depends_on("py-msal@1.20:1", type=("build", "run"), when="@1.13:1.14") + depends_on("py-msal@1.12:1", type=("build", "run"), when="@1.12") + depends_on("py-msal@1", type=("build", "run"), when="@:1.15") + depends_on("py-msal-extensions@0.3:", type=("build", "run"), when="@1.16:") + depends_on("py-msal-extensions@0.3:1", type=("build", "run"), when="@1.12:1.15") depends_on("py-msal-extensions@0.1.3:0.1", type=("build", "run"), when="@:1.11") + depends_on("py-typing-extensions@4:", type=("build", "run"), when="@1.17:") + depends_on("py-six@1.12:", type=("build", "run"), when="@1.12") depends_on("py-six@1.6:", type=("build", "run"), when="@:1.11") diff --git a/var/spack/repos/builtin/packages/py-azure-storage-blob/package.py b/var/spack/repos/builtin/packages/py-azure-storage-blob/package.py index 134df401e56b01..30307250ec70b9 100644 --- a/var/spack/repos/builtin/packages/py-azure-storage-blob/package.py +++ b/var/spack/repos/builtin/packages/py-azure-storage-blob/package.py @@ -16,6 +16,7 @@ class PyAzureStorageBlob(PythonPackage): license("MIT") + version("12.22.0", sha256="b3804bb4fe8ab1c32771fa464053da772a682c2737b19da438a3f4e5e3b3736e") version("12.19.0", sha256="26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897") version("12.18.3", sha256="d8ced0deee3367fa3d4f3d1a03cd9edadf4440c0a371f503d623fa6c807554ee") version("12.17.0", sha256="c14b785a17050b30fc326a315bdae6bc4a078855f4f94a4c303ad74a48dc8c63") @@ -28,16 +29,19 @@ class PyAzureStorageBlob(PythonPackage): version("12.10.0", sha256="3c7dc2c93e7ff2a731acd66a36a1f0a6266072b4154deba4894dab891285ea3a") version("12.9.0", sha256="cff66a115c73c90e496c8c8b3026898a3ce64100840276e9245434e28a864225") - # https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-blob_12.19.0/sdk/storage/azure-storage-blob/setup.py + # https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-blob_12.22.0/sdk/storage/azure-storage-blob/setup.py + depends_on("python@3.8:", type=("build", "run"), when="@12.20:") depends_on("py-setuptools", type="build") - depends_on("py-azure-core@1.28:1", type=("build", "run"), when="@12.17:") - depends_on("py-azure-core@1.26:1", type=("build", "run"), when="@12.15:") - depends_on("py-azure-core@1.24.2:1", type=("build", "run"), when="@12.14:") - depends_on("py-azure-core@1.23.1:1", type=("build", "run"), when="@12.12:") - depends_on("py-azure-core@1.15:1", type=("build", "run"), when="@12.10:") - depends_on("py-azure-core@1.10:1", type=("build", "run")) + depends_on("py-azure-core@1.28:", type=("build", "run"), when="@12.20:") + depends_on("py-azure-core@1.28:1", type=("build", "run"), when="@12.17:12.19") + depends_on("py-azure-core@1.26:1", type=("build", "run"), when="@12.15:12.16") + depends_on("py-azure-core@1.24.2:1", type=("build", "run"), when="@12.14") + depends_on("py-azure-core@1.23.1:1", type=("build", "run"), when="@12.12:12.13") + depends_on("py-azure-core@1.15:1", type=("build", "run"), when="@12.10:12.11") + depends_on("py-azure-core@1.10:1", type=("build", "run"), when="@:12.19") depends_on("py-cryptography@2.1.4:", type=("build", "run")) + depends_on("py-typing-extensions@4.6:", type=("build", "run"), when="@12.20:") depends_on("py-typing-extensions@4.3:", type=("build", "run"), when="@12.17:") depends_on("py-typing-extensions@4.0.1:", type=("build", "run"), when="@12.15:") depends_on("py-isodate@0.6.1:", type=("build", "run"), when="@12.15:") From 406c73ae1152b0f66b299fab2973d3b25dee8118 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 04:39:09 -0600 Subject: [PATCH 607/615] py-boto*: add v1.34.162 (#47528) Co-authored-by: wdconinc --- var/spack/repos/builtin/packages/py-boto3/package.py | 4 +++- var/spack/repos/builtin/packages/py-botocore/package.py | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-boto3/package.py b/var/spack/repos/builtin/packages/py-boto3/package.py index f38952d305e863..8aadc297a16ea8 100644 --- a/var/spack/repos/builtin/packages/py-boto3/package.py +++ b/var/spack/repos/builtin/packages/py-boto3/package.py @@ -12,6 +12,7 @@ class PyBoto3(PythonPackage): homepage = "https://github.com/boto/boto3" pypi = "boto3/boto3-1.10.44.tar.gz" + version("1.34.162", sha256="873f8f5d2f6f85f1018cbb0535b03cceddc7b655b61f66a0a56995238804f41f") version("1.34.44", sha256="86bcf79a56631609a9f8023fe8f53e2869702bdd4c9047c6d9f091eb39c9b0fa") version("1.26.26", sha256="a2349d436db6f6aa1e0def5501e4884572eb6f008f35063a359a6fa8ba3539b7") version("1.25.5", sha256="aec7db139429fe0f3fbe723170461192b0483b0070114a4b56351e374e0f294d") @@ -37,7 +38,8 @@ class PyBoto3(PythonPackage): depends_on("python@2.6:", when="@1.9:", type=("build", "run")) depends_on("py-setuptools", type="build") - depends_on("py-botocore@1.34.44:1.34", when="@1.34", type=("build", "run")) + depends_on("py-botocore@1.34.162:1.34", when="@1.34.162", type=("build", "run")) + depends_on("py-botocore@1.34.44:1.34", when="@1.34.44", type=("build", "run")) depends_on("py-botocore@1.29.26:1.29", when="@1.26", type=("build", "run")) depends_on("py-botocore@1.28.5:1.28", when="@1.25", type=("build", "run")) depends_on("py-botocore@1.27.96:1.27", when="@1.24", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-botocore/package.py b/var/spack/repos/builtin/packages/py-botocore/package.py index d362b3730238b5..016692c0111fd1 100644 --- a/var/spack/repos/builtin/packages/py-botocore/package.py +++ b/var/spack/repos/builtin/packages/py-botocore/package.py @@ -12,6 +12,7 @@ class PyBotocore(PythonPackage): homepage = "https://github.com/boto/botocore" pypi = "botocore/botocore-1.13.44.tar.gz" + version("1.34.162", sha256="adc23be4fb99ad31961236342b7cbf3c0bfc62532cd02852196032e8c0d682f3") version("1.34.44", sha256="b0f40c54477e8e0a5c43377a927b8959a86bb8824aaef2d28db7c9c367cdefaa") version("1.31.41", sha256="4dad7c5a5e70940de54ebf8de3955450c1f092f43cacff8103819d1e7d5374fa") version("1.29.84", sha256="a36f7f6f8eae5dbd4a1cc8cb6fc747f6315500541181eff2093ee0529fc8e4bc") @@ -48,4 +49,9 @@ class PyBotocore(PythonPackage): depends_on("py-urllib3@1.25.4:1.25", type=("build", "run"), when="@1.19.0:1.19.15") depends_on("py-urllib3@1.25.4:1.26", type=("build", "run"), when="@1.19.16:1.31.61") depends_on("py-urllib3@1.25.4:1.26", type=("build", "run"), when="@1.31.62: ^python@:3.9") - depends_on("py-urllib3@1.25.4:2.0", type=("build", "run"), when="@1.31.62: ^python@3.10:") + depends_on( + "py-urllib3@1.25.4:2.0", type=("build", "run"), when="@1.31.62:1.34.62 ^python@3.10:" + ) + depends_on( + "py-urllib3@1.25.4:2.1,2.2.1:2", type=("build", "run"), when="@1.34.63: ^python@3.10:" + ) From bf12bb57e7277e1eff9315bcf9e2c7cc9c4825dc Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 25 Nov 2024 11:53:28 +0100 Subject: [PATCH 608/615] install_test: first look at builder, then package (#47735) --- lib/spack/spack/install_test.py | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/install_test.py b/lib/spack/spack/install_test.py index a4401fc87870c4..d639548ecfd3e9 100644 --- a/lib/spack/spack/install_test.py +++ b/lib/spack/spack/install_test.py @@ -375,23 +375,16 @@ def phase_tests(self, builder, phase_name: str, method_names: List[str]): for name in method_names: try: - # Prefer the method in the package over the builder's. - # We need this primarily to pick up arbitrarily named test - # methods but also some build-time checks. - fn = getattr(builder.pkg, name, getattr(builder, name)) - - msg = f"RUN-TESTS: {phase_name}-time tests [{name}]" - print_message(logger, msg, verbose) - - fn() - + fn = getattr(builder, name, None) or getattr(builder.pkg, name) except AttributeError as e: - msg = f"RUN-TESTS: method not implemented [{name}]" - print_message(logger, msg, verbose) - - self.add_failure(e, msg) + print_message(logger, f"RUN-TESTS: method not implemented [{name}]", verbose) + self.add_failure(e, f"RUN-TESTS: method not implemented [{name}]") if fail_fast: break + continue + + print_message(logger, f"RUN-TESTS: {phase_name}-time tests [{name}]", verbose) + fn() if have_tests: print_message(logger, "Completed testing", verbose) From c01fb9a6d28f82073426c7bbd0ec2fec14341d0a Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Mon, 25 Nov 2024 06:32:57 -0500 Subject: [PATCH 609/615] Add CMake 3.31 minor release (#47676) --- var/spack/repos/builtin/packages/cmake/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index a4baa66ca4ccff..ba0b028bc138e4 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -31,6 +31,7 @@ class Cmake(Package): license("BSD-3-Clause") version("master", branch="master") + version("3.31.0", sha256="300b71db6d69dcc1ab7c5aae61cbc1aa2778a3e00cbd918bc720203e311468c3") version("3.30.5", sha256="9f55e1a40508f2f29b7e065fa08c29f82c402fa0402da839fffe64a25755a86d") version("3.30.4", sha256="c759c97274f1e7aaaafcb1f0d261f9de9bf3a5d6ecb7e2df616324a46fe704b2") version("3.30.3", sha256="6d5de15b6715091df7f5441007425264bdd477809f80333fdf95f846aaff88e4") From 5c67051980007eea3b445b814c2429a3b8d0c5fc Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 25 Nov 2024 12:56:39 +0100 Subject: [PATCH 610/615] Add missing C/C++ dependencies (#47782) --- .../builtin/packages/bitgroomingz/package.py | 10 +++------- .../repos/builtin/packages/fftx/package.py | 3 ++- .../repos/builtin/packages/julia/package.py | 5 +++-- .../repos/builtin/packages/lua-sol2/package.py | 3 ++- .../builtin/packages/opencl-clhpp/package.py | 3 ++- .../repos/builtin/packages/pagmo2/package.py | 3 ++- var/spack/repos/builtin/packages/pdt/package.py | 17 +++++++++-------- .../repos/builtin/packages/py-blosc2/package.py | 1 + .../repos/builtin/packages/pygmo/package.py | 3 ++- .../packages/rocprofiler-register/package.py | 1 + .../repos/builtin/packages/voropp/package.py | 3 ++- .../repos/builtin/packages/warpx/package.py | 1 + 12 files changed, 30 insertions(+), 23 deletions(-) diff --git a/var/spack/repos/builtin/packages/bitgroomingz/package.py b/var/spack/repos/builtin/packages/bitgroomingz/package.py index 85430a1579bf19..f618da822b292f 100644 --- a/var/spack/repos/builtin/packages/bitgroomingz/package.py +++ b/var/spack/repos/builtin/packages/bitgroomingz/package.py @@ -17,16 +17,12 @@ class Bitgroomingz(CMakePackage): version("master", branch="master") version("2022-10-14", commit="a018b20cca9f7d6a5396ab36230e4be6ae1cb25b") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="build shared libs") depends_on("zlib-api") def cmake_args(self): - args = [] - if self.spec.satisfies("+shared"): - args.append("-DBUILD_SHARED_LIBS=ON") - else: - args.append("-DBUILD_SHARED_LIBS=OFF") - return args + return [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] diff --git a/var/spack/repos/builtin/packages/fftx/package.py b/var/spack/repos/builtin/packages/fftx/package.py index 96ed533315bf18..b132231d149e50 100644 --- a/var/spack/repos/builtin/packages/fftx/package.py +++ b/var/spack/repos/builtin/packages/fftx/package.py @@ -30,7 +30,8 @@ class Fftx(CMakePackage, CudaPackage, ROCmPackage): version("1.1.0", sha256="a6f95605abc11460bbf51839727a456a31488e27e12a970fc29a1b8c42f4e3b5") version("1.0.3", sha256="b5ff275facce4a2fbabd0aecc65dd55b744794f2e07cd8cfa91363001c664896") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("spiral-software+fftx+simt+jit+mpi") # depend only on spiral-software, but spiral-software must be installed with variants: diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 0508410e896f9f..2e489bd3a211ac 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -53,8 +53,9 @@ class Julia(MakefilePackage): version("1.6.5", sha256="b70ae299ff6b63a9e9cbf697147a48a31b4639476d1947cb52e4201e444f23cb") version("1.6.4", sha256="a4aa921030250f58015201e28204bff604a007defc5a379a608723e6bb1808d4") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") variant("precompile", default=True, description="Improve julia startup time") variant("openlibm", default=True, description="Use openlibm instead of libm") diff --git a/var/spack/repos/builtin/packages/lua-sol2/package.py b/var/spack/repos/builtin/packages/lua-sol2/package.py index 31d0367ffab513..cf7aa3ee91fa6e 100644 --- a/var/spack/repos/builtin/packages/lua-sol2/package.py +++ b/var/spack/repos/builtin/packages/lua-sol2/package.py @@ -26,7 +26,8 @@ class LuaSol2(CMakePackage): version("3.0.3", sha256="bf089e50387edfc70063e24fd7fbb693cceba4a50147d864fabedd1b33483582") version("3.0.2", sha256="3f5f369eae6732ae9a315fe4370bbdc9900d2f2f4f291206aeb5b2d5533f0c99") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") # Lua is not needed when building, since sol2 is headers-only depends_on("lua", type=("link", "run")) diff --git a/var/spack/repos/builtin/packages/opencl-clhpp/package.py b/var/spack/repos/builtin/packages/opencl-clhpp/package.py index c580b966775af4..4ecdb1215786cd 100644 --- a/var/spack/repos/builtin/packages/opencl-clhpp/package.py +++ b/var/spack/repos/builtin/packages/opencl-clhpp/package.py @@ -27,7 +27,8 @@ class OpenclClhpp(CMakePackage): version("2.0.10", sha256="fa27456295c3fa534ce824eb0314190a8b3ebd3ba4d93a0b1270fc65bf378f2b") version("2.0.9", sha256="ba8ac4977650d833804f208a1b0c198006c65c5eac7c83b25dc32cea6199f58c") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") root_cmakelists_dir = "include" diff --git a/var/spack/repos/builtin/packages/pagmo2/package.py b/var/spack/repos/builtin/packages/pagmo2/package.py index 527314c70055b0..d8569ac8119419 100644 --- a/var/spack/repos/builtin/packages/pagmo2/package.py +++ b/var/spack/repos/builtin/packages/pagmo2/package.py @@ -22,7 +22,8 @@ class Pagmo2(CMakePackage): version("master", branch="master") version("2.18.0", sha256="5ad40bf3aa91857a808d6b632d9e1020341a33f1a4115d7a2b78b78fd063ae31") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("boost+system+serialization+thread") depends_on("intel-tbb") diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index d4784cb6ed1381..30d2fadfaf9e1b 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -38,7 +38,8 @@ class Pdt(AutotoolsPackage): version("3.19", sha256="d57234077e2e999f2acf9860ea84369a4694b50cc17fa6728e5255dc5f4a2160") version("3.18.1", sha256="d06c2d1793fadebf169752511e5046d7e02cf3fead6135a35c34b1fee6d6d3b2") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("pic", default=False, description="Builds with pic") @@ -50,21 +51,21 @@ def patch(self): filter_file(r"PDT_GXX=g\+\+ ", r"PDT_GXX=clang++ ", "ductape/Makefile") def configure(self, spec, prefix): - options = ["-prefix=%s" % prefix] - if self.compiler.name == "xl": + options = [f"-prefix={prefix}"] + if spec.satisfies("%xl"): options.append("-XLC") - elif self.compiler.name == "intel": + elif spec.satisfies("%intel"): options.append("-icpc") - elif self.compiler.name == "oneapi": + elif spec.satisfies("%oneapi"): if spec.satisfies("@3.25.2:"): options.append("-icpx") else: options.append("-icpc") - elif self.compiler.name == "gcc": + elif spec.satisfies("%gcc"): options.append("-GNU") - elif self.compiler.name in ["clang", "apple-clang", "aocc"]: + elif spec.satisfies("%clang") or spec.satisfies("%apple-clang") or spec.satisfies("%aocc"): options.append("-clang") - elif self.compiler.name == "cce": + elif spec.satisfies("%cce"): options.append("-CC") else: raise InstallError("Unknown/unsupported compiler family: " + self.compiler.name) diff --git a/var/spack/repos/builtin/packages/py-blosc2/package.py b/var/spack/repos/builtin/packages/py-blosc2/package.py index d852742cc42ea3..d8b08dd8684584 100644 --- a/var/spack/repos/builtin/packages/py-blosc2/package.py +++ b/var/spack/repos/builtin/packages/py-blosc2/package.py @@ -22,6 +22,7 @@ class PyBlosc2(PythonPackage): version("2.0.0", sha256="f19b0b3674f6c825b490f00d8264b0c540c2cdc11ec7e81178d38b83c57790a1") depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("python@3.9:3", when="@2.2:", type=("build", "link", "run")) depends_on("python@3.8:3", when="@2.0", type=("build", "link", "run")) diff --git a/var/spack/repos/builtin/packages/pygmo/package.py b/var/spack/repos/builtin/packages/pygmo/package.py index bd04f292aae63d..9f26a46160084f 100644 --- a/var/spack/repos/builtin/packages/pygmo/package.py +++ b/var/spack/repos/builtin/packages/pygmo/package.py @@ -21,7 +21,8 @@ class Pygmo(CMakePackage): version("master", branch="master") version("2.18.0", sha256="9f081cc973297894af09f713f889870ac452bfb32b471f9f7ba08a5e0bb9a125") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Build shared libraries") diff --git a/var/spack/repos/builtin/packages/rocprofiler-register/package.py b/var/spack/repos/builtin/packages/rocprofiler-register/package.py index 38471a1605f515..2dab5a0d0a4f63 100644 --- a/var/spack/repos/builtin/packages/rocprofiler-register/package.py +++ b/var/spack/repos/builtin/packages/rocprofiler-register/package.py @@ -26,6 +26,7 @@ class RocprofilerRegister(CMakePackage): version("6.1.1", sha256="38242443d9147a04d61374de4cecee686578a3140fed17e88480f564a1f67cc7") version("6.1.0", sha256="c6e60447ea2ccca8d6acd8758ac00037347892b16b450e1f99ddd04cc4b6cac1") + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("fmt") depends_on("glog") diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index 49a1aa078ed249..e9c358b5138f8e 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -22,7 +22,8 @@ class Voropp(CMakePackage): version("master", branch="master") version("0.4.6", sha256="ef7970071ee2ce3800daa8723649ca069dc4c71cc25f0f7d22552387f3ea437e") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") patch("voro++-0.4.6-cmake.patch", when="@0.4.6") diff --git a/var/spack/repos/builtin/packages/warpx/package.py b/var/spack/repos/builtin/packages/warpx/package.py index 82a8610c4f420d..906c495d3aac9e 100644 --- a/var/spack/repos/builtin/packages/warpx/package.py +++ b/var/spack/repos/builtin/packages/warpx/package.py @@ -243,6 +243,7 @@ class Warpx(CMakePackage, PythonExtension): variant("shared", default=True, description="Build a shared version of the library") variant("tprof", default=True, description="Enable tiny profiling features") + depends_on("c", type="build") depends_on("cxx", type="build") for v in ["24.10", "24.08", "develop"]: From 8094fa1e2fc793280653b0da312582fd894da2ab Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 25 Nov 2024 06:07:56 -0600 Subject: [PATCH 611/615] py-gradio: add v5.1.0 (and add/update dependencies) (fix CVEs) (#47504) * py-pdm-backend: add v2.4.3 * py-starlette: add v0.28.0, v0.32.0, v0.35.1, v0.36.3, v0.37.2, v0.41.2 * py-fastapi: add v0.110.2, v0.115.4 * py-pydantic-extra-types: add v2.10.0 * py-pydantic-settings: add v2.6.1 * py-python-multipart: add v0.0.17 * py-email-validator: add v2.2.0 --- .../packages/py-email-validator/package.py | 5 ++- .../builtin/packages/py-fastapi/package.py | 40 +++++++++++++++---- .../builtin/packages/py-gradio/package.py | 13 +++++- .../packages/py-pdm-backend/package.py | 1 + .../py-pydantic-extra-types/package.py | 23 +++++++++++ .../packages/py-pydantic-settings/package.py | 22 ++++++++++ .../packages/py-python-multipart/package.py | 12 +++++- .../builtin/packages/py-starlette/package.py | 6 +++ 8 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-pydantic-extra-types/package.py create mode 100644 var/spack/repos/builtin/packages/py-pydantic-settings/package.py diff --git a/var/spack/repos/builtin/packages/py-email-validator/package.py b/var/spack/repos/builtin/packages/py-email-validator/package.py index 130824d5c3fcd6..151f65c7ec91ef 100644 --- a/var/spack/repos/builtin/packages/py-email-validator/package.py +++ b/var/spack/repos/builtin/packages/py-email-validator/package.py @@ -12,10 +12,13 @@ class PyEmailValidator(PythonPackage): homepage = "https://github.com/JoshData/python-email-validator" pypi = "email_validator/email_validator-1.3.1.tar.gz" - license("CC0-1.0") + license("Unlicense", when="@2.1.1:", checked_by="wdconinc") + license("CC0-1.0", when="@:2.1.0", checked_by="wdconinc") + version("2.2.0", sha256="cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7") version("1.3.1", sha256="d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2") depends_on("py-setuptools", type="build") + depends_on("py-dnspython@2:", type=("build", "run"), when="@2:") depends_on("py-dnspython@1.15:", type=("build", "run")) depends_on("py-idna@2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-fastapi/package.py b/var/spack/repos/builtin/packages/py-fastapi/package.py index 36e48025b34efa..359a0f81533503 100644 --- a/var/spack/repos/builtin/packages/py-fastapi/package.py +++ b/var/spack/repos/builtin/packages/py-fastapi/package.py @@ -10,34 +10,60 @@ class PyFastapi(PythonPackage): """FastAPI framework, high performance, easy to learn, fast to code, ready for production""" - homepage = "https://github.com/tiangolo/fastapi" + homepage = "https://github.com/fastapi/fastapi" pypi = "fastapi/fastapi-0.88.0.tar.gz" license("MIT") - version("0.98.0", sha256="0d3c18886f652038262b5898fec6b09f4ca92ee23e9d9b1d1d24e429f84bf27b") - version("0.88.0", sha256="915bf304180a0e7c5605ec81097b7d4cd8826ff87a02bb198e336fb9f3b5ff02") + version("0.115.4", sha256="db653475586b091cb8b2fec2ac54a680ac6a158e07406e1abae31679e8826349") + version("0.110.2", sha256="b53d673652da3b65e8cd787ad214ec0fe303cad00d2b529b86ce7db13f17518d") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-24762 + version( + "0.98.0", sha256="0d3c18886f652038262b5898fec6b09f4ca92ee23e9d9b1d1d24e429f84bf27b" + ) + version( + "0.88.0", sha256="915bf304180a0e7c5605ec81097b7d4cd8826ff87a02bb198e336fb9f3b5ff02" + ) variant("all", default=False, description="Build all optional dependencies") - depends_on("py-hatchling@1.13:", when="@0.98:", type="build") - depends_on("py-hatchling", type="build") - depends_on("py-starlette@0.27", when="@0.95.2:", type=("build", "run")) + depends_on("python@3.8:", when="@0.104:", type=("build", "run")) + + depends_on("py-pdm-backend", when="@0.110.3:", type="build") + depends_on("py-hatchling@1.13:", when="@0.98:0.110.2", type="build") + depends_on("py-hatchling", when="@:0.110.2", type="build") + + depends_on("py-starlette@0.40:0.41", when="@0.115.3:", type=("build", "run")) + depends_on("py-starlette@0.37.2:0.40", when="@0.115.2", type=("build", "run")) + depends_on("py-starlette@0.37.2:0.38", when="@0.112.1:0.115.1", type=("build", "run")) + depends_on("py-starlette@0.37.2:0.37", when="@0.110.1:0.112.0", type=("build", "run")) + depends_on("py-starlette@0.36.3:0.36", when="@0.109.2:0.110.0", type=("build", "run")) + depends_on("py-starlette@0.35:0.35", when="@0.109.0:0.109.1", type=("build", "run")) + depends_on("py-starlette@0.29:0.32", when="@0.108.0:0.108", type=("build", "run")) + depends_on("py-starlette@0.28", when="@0.107.0:0.107", type=("build", "run")) + depends_on("py-starlette@0.27", when="@0.95.2:0.106", type=("build", "run")) depends_on("py-starlette@0.22.0", when="@:0.89.1", type=("build", "run")) + depends_on("py-pydantic@1.7.4:1,2.1.1:2", when="@0.101:", type=("build", "run")) depends_on("py-pydantic@1.7.4:1", when="@0.96.1:", type=("build", "run")) depends_on("py-pydantic@1.6.2:1", when="@:0.96.0", type=("build", "run")) + depends_on("py-typing-extensions@4.8.0:", when="@0.104:", type=("build", "run")) - conflicts("^py-pydantic@1.7.0:1.7.3,1.8.0:1.8.1") + conflicts("^py-pydantic@1.7.0:1.7.3,1.8.0:1.8.1,2.0,2.1.0") with when("+all"): depends_on("py-httpx@0.23:", type=("build", "run")) depends_on("py-jinja2@2.11.2:", type=("build", "run")) + depends_on("py-python-multipart@0.0.7:", when="@0.109.1:", type=("build", "run")) depends_on("py-python-multipart@0.0.5:", type=("build", "run")) depends_on("py-itsdangerous@1.1:", type=("build", "run")) depends_on("py-pyyaml@5.3.1:", type=("build", "run")) depends_on("py-ujson@4.0.1:", type=("build", "run")) depends_on("py-orjson@3.2.1:", type=("build", "run")) + depends_on("py-email-validator@2.0.0:", when="@0.100:", type=("build", "run")) depends_on("py-email-validator@1.1.1:", type=("build", "run")) depends_on("py-uvicorn@0.12:+standard", type=("build", "run")) + depends_on("py-pydantic-settings@2.0.0:", when="@0.100:", type=("build", "run")) + depends_on("py-pydantic-extra-types@2.0.0:", when="@0.100:", type=("build", "run")) conflicts("^py-ujson@4.0.2,4.1.0,4.2.0,4.3.0,5.0.0,5.1.0") diff --git a/var/spack/repos/builtin/packages/py-gradio/package.py b/var/spack/repos/builtin/packages/py-gradio/package.py index 3070071ab7ca04..720e47dbeb15d6 100644 --- a/var/spack/repos/builtin/packages/py-gradio/package.py +++ b/var/spack/repos/builtin/packages/py-gradio/package.py @@ -14,7 +14,18 @@ class PyGradio(PythonPackage): license("Apache-2.0") - version("3.36.1", sha256="1d821cee15da066c24c197248ba9aaed5f5e59505d17754561c2f96f90e73a89") + version("5.1.0", sha256="d2153668e6de2df7a01bb33f01a074fc7716ec863c40f472d8e439439ef1e153") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-47871 + version( + "4.44.1", sha256="a68a52498ac6b63f8864ef84bf7866a70e7d07ebe913edf921e1d2a3708ad5ae" + ) + version( + "3.50.2", sha256="c6c81320566ba3e5688a1a58201d0729565a97b828b2bf6895e54f7bf25c01de" + ) + version( + "3.36.1", sha256="1d821cee15da066c24c197248ba9aaed5f5e59505d17754561c2f96f90e73a89" + ) depends_on("python@3.8:", type=("build", "run")) depends_on("py-hatchling", type="build") diff --git a/var/spack/repos/builtin/packages/py-pdm-backend/package.py b/var/spack/repos/builtin/packages/py-pdm-backend/package.py index c3aebb38b76f76..220e1b5a37844d 100644 --- a/var/spack/repos/builtin/packages/py-pdm-backend/package.py +++ b/var/spack/repos/builtin/packages/py-pdm-backend/package.py @@ -13,6 +13,7 @@ class PyPdmBackend(PythonPackage): license("MIT", checked_by="matz-e") + version("2.4.3", sha256="dbd9047a7ac10d11a5227e97163b617ad5d665050476ff63867d971758200728") version("2.3.0", sha256="e39ed2da206d90d4a6e9eb62f6dce54ed4fa65ddf172a7d5700960d0f8a09e09") depends_on("python@3.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pydantic-extra-types/package.py b/var/spack/repos/builtin/packages/py-pydantic-extra-types/package.py new file mode 100644 index 00000000000000..03636a1bd60b3d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pydantic-extra-types/package.py @@ -0,0 +1,23 @@ +# 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) + +from spack.package import * + + +class PyPydanticExtraTypes(PythonPackage): + """A place for pydantic types that probably shouldn't + exist in the main pydantic lib.""" + + homepage = "https://github.com/pydantic/pydantic-extra-types" + pypi = "pydantic_extra_types/pydantic_extra_types-2.10.0.tar.gz" + + license("MIT", checked_by="wdconinc") + + version("2.10.0", sha256="552c47dd18fe1d00cfed75d9981162a2f3203cf7e77e55a3d3e70936f59587b9") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-hatchling", type="build") + depends_on("py-pydantic@2.5.2:", type=("build", "run")) + depends_on("py-typing-extensions", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pydantic-settings/package.py b/var/spack/repos/builtin/packages/py-pydantic-settings/package.py new file mode 100644 index 00000000000000..5881eb5dc75fbf --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pydantic-settings/package.py @@ -0,0 +1,22 @@ +# 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) + +from spack.package import * + + +class PyPydanticSettings(PythonPackage): + """Settings management using Pydantic.""" + + homepage = "https://github.com/pydantic/pydantic-settings" + pypi = "pydantic_settings/pydantic_settings-2.6.1.tar.gz" + + license("MIT", checked_by="wdconinc") + + version("2.6.1", sha256="e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-hatchling", type="build") + depends_on("py-pydantic@2.7.0:", type=("build", "run")) + depends_on("py-python-dotenv@0.21:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-python-multipart/package.py b/var/spack/repos/builtin/packages/py-python-multipart/package.py index 0af95b14b7f1af..5dd5780011f462 100644 --- a/var/spack/repos/builtin/packages/py-python-multipart/package.py +++ b/var/spack/repos/builtin/packages/py-python-multipart/package.py @@ -15,8 +15,18 @@ class PyPythonMultipart(PythonPackage): license("Apache-2.0") + version("0.0.17", sha256="41330d831cae6e2f22902704ead2826ea038d0419530eadff3ea80175aec5538") version("0.0.5", sha256="f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43") - depends_on("py-setuptools", type="build") + depends_on("py-setuptools", type="build", when="@:0.0.5") + depends_on("py-hatchling", type="build", when="@0.0.6:") depends_on("py-six@1.4.0:", type=("build", "run")) + + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/source/p/python-multipart/{}-{}.tar.gz" + if self.spec.satisfies("@:0.0.5"): + name = "python-multipart" + else: + name = "python_multipart" + return url.format(name, version) diff --git a/var/spack/repos/builtin/packages/py-starlette/package.py b/var/spack/repos/builtin/packages/py-starlette/package.py index 7f51b279732eeb..ea2e1d260164d3 100644 --- a/var/spack/repos/builtin/packages/py-starlette/package.py +++ b/var/spack/repos/builtin/packages/py-starlette/package.py @@ -15,6 +15,12 @@ class PyStarlette(PythonPackage): license("BSD-3-Clause") + version("0.41.2", sha256="9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62") + version("0.37.2", sha256="9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823") + version("0.36.3", sha256="90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080") + version("0.35.1", sha256="3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc") + version("0.32.0", sha256="87c899fe3aee6a42f711380b03e1d244a21079529cb3dbe1a5109e60915e0bbb") + version("0.28.0", sha256="7bf3da5e997e796cc202cef2bd3f96a7d9b1e1943203c2fe2b42e020bc658482") version("0.27.0", sha256="6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75") version("0.23.1", sha256="8510e5b3d670326326c5c1d4cb657cc66832193fe5d5b7015a51c7b1e1b1bf42") version("0.22.0", sha256="b092cbc365bea34dd6840b42861bdabb2f507f8671e642e8272d2442e08ea4ff") From 3c220d098954af581a0ff0dfa2024b9142f64340 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 25 Nov 2024 13:22:16 +0100 Subject: [PATCH 612/615] apex: add 2.7.0 (#47736) --- var/spack/repos/builtin/packages/apex/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 24aa59a10f3ace..0fec0eead5e2d3 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -18,6 +18,7 @@ class Apex(CMakePackage): version("develop", branch="develop") version("master", branch="master") + version("2.7.0", sha256="81cd7e8dbea35cec2360d6404e20f7527f66410614f06a73c8c782ac2cfdb0b0") version("2.6.5", sha256="2ba29a1198c904ac209fc6bc02962304a1416443b249f34ef96889aff39644ce") version("2.6.4", sha256="281a673f447762a488577beaa60e48d88cb6354f220457cf8f05c1de2e1fce70") version("2.6.3", sha256="7fef12937d3bd1271a01abe44cb931b1d63823fb5c74287a332f3012ed7297d5") From 8e914308f056e876a98aff55988cde3d477dd0e9 Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Mon, 25 Nov 2024 16:12:55 +0100 Subject: [PATCH 613/615] gromacs: add itt variant (#47764) Permit configuring GROMACS with support for mdrun to trace its timing regions by calling the ITT API. This permits tools like VTune and unitrace to augment their analysis with GROMACS-specific annotation. --- .../repos/builtin/packages/gromacs/package.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 90d17661182672..486c36af8e66f9 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -296,6 +296,15 @@ class Gromacs(CMakePackage, CudaPackage): + "The g++ location is written to icp{c,x}.cfg", ) + variant( + "itt", + default=False, + when="@2024:", + description="Enable Instrumentation and Tracing Technology (ITT)" + + " profiling API (from Intel)", + ) + depends_on("intel-oneapi-vtune", "+itt") + depends_on("fftw-api@3") depends_on("cmake@2.8.8:3", type="build") depends_on("cmake@3.4.3:3", type="build", when="@2018:") @@ -614,6 +623,13 @@ def cmake_args(self): options.append("-DGMX_GPU_NB_CLUSTER_SIZE=8") options.append("-DGMX_GPU_NB_NUM_CLUSTER_PER_CELL_X=1") + if "+itt" in self.spec: + options.append("-DGMX_USE_ITT=on") + options.append( + "-DITTNOTIFY_INCLUDE_DIR=%s" + % join_path(self.spec["intel-oneapi-vtune"].package.headers) + ) + if self.spec.satisfies("~nblib"): options.append("-DGMX_INSTALL_NBLIB_API=OFF") if self.spec.satisfies("~gmxapi"): From 741652caa105edcc0414d6a8f0d94bd4ba20a736 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" <50467563+victorapm@users.noreply.github.com> Date: Mon, 25 Nov 2024 12:26:53 -0500 Subject: [PATCH 614/615] caliper: add "tools" variant (#47779) --- var/spack/repos/builtin/packages/caliper/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index ad06a5e242b71d..5cf3376f0d5e12 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -101,6 +101,8 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): variant("vtune", default=False, description="Enable Intel Vtune support") variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support") variant("tests", default=False, description="Enable tests") + variant("tools", default=True, description="Enable tools") + # TODO change the 'when' argument for the next release of Caliper variant("python", default=False, when="@master", description="Build Python bindings") @@ -156,6 +158,7 @@ def initconfig_compiler_entries(self): entries.append(cmake_cache_option("BUILD_SHARED_LIBS", spec.satisfies("+shared"))) entries.append(cmake_cache_option("BUILD_TESTING", spec.satisfies("+tests"))) + entries.append(cmake_cache_option("WITH_TOOLS", spec.satisfies("+tools"))) entries.append(cmake_cache_option("BUILD_DOCS", False)) entries.append(cmake_cache_path("PYTHON_EXECUTABLE", spec["python"].command.path)) From 83624551e0889cd67edbd7e7a9e2c3d0295956b4 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 25 Nov 2024 15:27:38 -0500 Subject: [PATCH 615/615] ROOT: default to +aqua~x on macOS (#47792) --- .../repos/builtin/packages/root/package.py | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 8aa95df8a27421..73b016a271403e 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -12,6 +12,8 @@ from spack.package import * from spack.util.environment import is_system_path +_is_macos = sys.platform == "darwin" + class Root(CMakePackage): """ROOT is a data analysis framework.""" @@ -156,7 +158,7 @@ class Root(CMakePackage): when="@6.32.0:6.32.02", ) - if sys.platform == "darwin": + if _is_macos: # Resolve non-standard use of uint, _cf_ # https://sft.its.cern.ch/jira/browse/ROOT-7886. patch("math_uint.patch", when="@6.06.02") @@ -186,7 +188,7 @@ class Root(CMakePackage): # See README.md for specific notes about what ROOT configuration # options are or are not supported, and why. - variant("aqua", default=False, description="Enable Aqua interface") + variant("aqua", default=_is_macos, description="Enable native macOS (Cocoa) interface") variant("arrow", default=False, description="Enable Arrow interface") variant("cuda", when="@6.08.00:", default=False, description="Enable CUDA support") variant("cudnn", when="@6.20.02:", default=False, description="Enable cuDNN support") @@ -288,7 +290,7 @@ class Root(CMakePackage): variant( "webgui", default=True, description="Enable web-based UI components of ROOT", when="+root7" ) - variant("x", default=True, description="Enable set of graphical options") + variant("x", default=(not _is_macos), description="Enable set of graphical options") variant("xml", default=True, description="Enable XML parser interface") variant("xrootd", default=False, description="Build xrootd file server and its client") @@ -429,7 +431,7 @@ class Root(CMakePackage): conflicts("target=ppc64le:", when="@:6.24") # Incompatible variants - if sys.platform == "darwin": + if _is_macos: conflicts("+opengl", when="~x ~aqua", msg="root+opengl requires X or Aqua") # https://github.com/root-project/root/issues/7160 conflicts("+aqua", when="~opengl", msg="+aqua requires OpenGL to be enabled") @@ -455,15 +457,15 @@ class Root(CMakePackage): conflicts("%clang@16:", when="@:6.26.07", msg="clang 16+ support was added in root 6.26.08") # See https://github.com/spack/spack/pull/44826 - if sys.platform == "darwin" and macos_version() == Version("12"): + if _is_macos and macos_version() == Version("12"): conflicts("@:6.27", when="+python", msg="macOS 12 python support for 6.28: only") # See https://github.com/root-project/root/issues/11714 - if sys.platform == "darwin" and macos_version() >= Version("13"): + if _is_macos and macos_version() >= Version("13"): conflicts("@:6.26.09", msg="macOS 13 support was added in root 6.26.10") # See https://github.com/root-project/root/issues/16219 - if sys.platform == "darwin" and macos_version() >= Version("15"): + if _is_macos and macos_version() >= Version("15"): conflicts("@:6.32.05", msg="macOS 15 support was added in root 6.32.06") # ROOT <6.14 is incompatible with Python >=3.7, which is the minimum supported by spack @@ -627,8 +629,6 @@ def cmake_args(self): # Options related to ROOT's ability to download and build its own # dependencies. Per Spack convention, this should generally be avoided. - afterimage_enabled = ("+x" in self.spec) if "platform=darwin" not in self.spec else True - options += [ define("builtin_cfitsio", False), define("builtin_davix", False), @@ -655,7 +655,12 @@ def cmake_args(self): ] if self.spec.satisfies("@:6.32"): - options.append(define("builtin_afterimage", afterimage_enabled)) + options.append( + define( + "builtin_afterimage", + ("+x" in self.spec) if "platform=darwin" not in self.spec else True, + ) + ) # Features options += [ @@ -764,7 +769,7 @@ def cmake_args(self): # #################### Compiler options #################### - if sys.platform == "darwin" and self.compiler.cc == "gcc": + if _is_macos and self.compiler.cc == "gcc": cflags = "-D__builtin_unreachable=__builtin_trap" options.extend([define("CMAKE_C_FLAGS", cflags), define("CMAKE_CXX_FLAGS", cflags)])