From d37e2c600cc1b40213737a6243349cd48823a8ae Mon Sep 17 00:00:00 2001 From: suzannepaterno <129112900+suzannepaterno@users.noreply.github.com> Date: Fri, 4 Apr 2025 00:37:43 -0400 Subject: [PATCH 001/317] Add TotalView 2024.4 & 2025.1 (#49858) Update to include the latest versions of Totalview and remove retired and interim maintainers. --- .../builtin/packages/totalview/package.py | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/totalview/package.py b/var/spack/repos/builtin/packages/totalview/package.py index 9d15517da48..c467b2bb342 100644 --- a/var/spack/repos/builtin/packages/totalview/package.py +++ b/var/spack/repos/builtin/packages/totalview/package.py @@ -12,7 +12,7 @@ class Totalview(Package): '.""" homepage = "https://totalview.io" - maintainers("dshrader", "petertea", "suzannepaterno", "elliebinkley") + maintainers("dshrader", "suzannepaterno") license_required = True license_comment = "#" license_files = ["tv_license/license.lic"] @@ -22,6 +22,42 @@ class Totalview(Package): # will be the documentation. The architecture-specific tarballs are added # as resources dependent on the specific architecture used. + version( + "2025.1-x86-64", + sha256="d38952c87c155482ef9cdda08bfc648b127b72eedce085c86375e3cf6e2535ed", + url="https://dslwuu69twiif.cloudfront.net/totalview/2025.1/totalview_2025.1.13_linux_x86-64.tar", + ) + + version( + "2025.1-powerle", + sha256="934f95e9d792b146798ab7533c45518c4a1e6e93033ae6ec86867fd5c8315efa", + url="https://dslwuu69twiif.cloudfront.net/totalview/2025.1/totalview_2025.1.13_linux_powerle.tar", + ) + + version( + "2025.1-linux-arm64", + sha256="843ab88ba43d2078cea65b36a5316d5fef69f33c3a8c19fe8df66563ab72bfb7", + url="https://dslwuu69twiif.cloudfront.net/totalview/2025.1/totalview_2025.1.13_linux_arm64.tar", + ) + + version( + "2024.4-x86-64", + sha256="9735ab672c53397370f41212bc9f5d0e2a5cf63335d812406137b954ba3c4672", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.4/totalview_2024.4.2_linux_x86-64.tar", + ) + + version( + "2024.4-powerle", + sha256="02741b35a774331f007b590368d776bd76e5ecc2cdd693b8518975cfc0d1db57", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.4/totalview_2024.4.2_linux_powerle.tar", + ) + + version( + "2024.4-linux-arm64", + sha256="0eb74718d86923d9fefed006b21cecad678355554b3295e0899b7ed9aafd388d", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.4/totalview_2024.4.2_linux_arm64.tar", + ) + version( "2024.3-x86-64", sha256="fb47c5a5abc6ad0e3e7cff1a346037387fa471c3a5cb46b6cdbe7f8a10aff2a7", From 6bfe83106ddf2be3c3f554452d587ed5828c83c3 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 4 Apr 2025 06:47:43 +0200 Subject: [PATCH 002/317] Concrete multi-valued variants (#49756) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to the range-or-specific-version ambiguity of `@1.2` in the past, which was solved with `@1.2` vs `@=1.2` we still have the ambiguity of `name=a,b,c` in multi-valued variants. Do they mean "at least a,b,c" or "exactly a,b,c"? This issue comes up in for example `gcc languages=c,cxx`; there's no way to exclude `fortran`. The ambiguity is resolved with syntax `:=` to distinguish concrete from abstract. The following strings parse as **concrete** variants: * `name:=a,b,c` => values exactly {a, b, c} * `name:=a` => values exactly {a} * `+name` => values exactly {True} * `~name` => values exactly {False} The following strings parse as **abstract** variants: * `name=a,b,c` values at least {a, b, c} * `name=*` special case for testing existence of a variant; values are at least the empty set {} As a reminder * `satisfies(lhs, rhs)` means `concretizations(lhs)` ⊆ `concretizations(rhs)` * `intersects(lhs, rhs)` means `concretizations(lhs)` ∩ `concretizations(rhs)` ≠ ∅ where `concretizations(...)` is the set of sets of variant values in this case. The satisfies semantics are: * rhs abstract: rhs values is a subset of lhs values (whether lhs is abstract or concrete) * lhs concrete, rhs concrete: set equality * lhs abstract, rhs concrete: false and intersects should mean * lhs and rhs abstract: true (the union is a valid concretization under both) * lhs or rhs abstract: true iff the abstract variant's values are a subset of the concrete one * lhs concrete, rhs concrete: set equality Concrete specs with single-valued variants are printed `+foo`, `~foo` and `foo=bar`; only multi-valued variants are printed with `foo:=bar,baz` to reduce the visual noise. --- lib/spack/docs/basic_usage.rst | 80 ++-- lib/spack/spack/solver/asp.py | 2 +- lib/spack/spack/spec.py | 25 +- lib/spack/spack/spec_parser.py | 41 +- lib/spack/spack/test/spec_semantics.py | 2 +- lib/spack/spack/test/spec_syntax.py | 17 + lib/spack/spack/test/variant.py | 494 ++++++++++++------------- lib/spack/spack/variant.py | 276 +++++--------- 8 files changed, 431 insertions(+), 506 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index bf038478964..defafad5d82 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1291,55 +1291,61 @@ based on site policies. Variants ^^^^^^^^ -Variants are named options associated with a particular package. They are -optional, as each package must provide default values for each variant it -makes available. Variants can be specified using -a flexible parameter syntax ``name=``. For example, -``spack install mercury debug=True`` will install mercury built with debug -flags. The names of particular variants available for a package depend on +Variants are named options associated with a particular package and are +typically used to enable or disable certain features at build time. They +are optional, as each package must provide default values for each variant +it makes available. + +The names of variants available for a particular package depend on what was provided by the package author. ``spack info `` will provide information on what build variants are available. -For compatibility with earlier versions, variants which happen to be -boolean in nature can be specified by a syntax that represents turning -options on and off. For example, in the previous spec we could have -supplied ``mercury +debug`` with the same effect of enabling the debug -compile time option for the libelf package. +There are different types of variants: -Depending on the package a variant may have any default value. For -``mercury`` here, ``debug`` is ``False`` by default, and we turned it on -with ``debug=True`` or ``+debug``. If a variant is ``True`` by default -you can turn it off by either adding ``-name`` or ``~name`` to the spec. +1. Boolean variants. Typically used to enable or disable a feature at + compile time. For example, a package might have a ``debug`` variant that + can be explicitly enabled with ``+debug`` and disabled with ``~debug``. +2. Single-valued variants. Often used to set defaults. For example, a package + might have a ``compression`` variant that determines the default + compression algorithm, which users could set to ``compression=gzip`` or + ``compression=zstd``. +3. Multi-valued variants. A package might have a ``fabrics`` variant that + determines which network fabrics to support. Users could set this to + ``fabrics=verbs,ofi`` to enable both InfiniBand verbs and OpenFabrics + interfaces. The values are separated by commas. -There are two syntaxes here because, depending on context, ``~`` and -``-`` may mean different things. In most shells, the following will -result in the shell performing home directory substitution: + The meaning of ``fabrics=verbs,ofi`` is to enable *at least* the specified + fabrics, but other fabrics may be enabled as well. If the intent is to + enable *only* the specified fabrics, then the ``fabrics:=verbs,ofi`` + syntax should be used with the ``:=`` operator. -.. code-block:: sh +.. note:: - mpileaks ~debug # shell may try to substitute this! - mpileaks~debug # use this instead + In certain shells, the the ``~`` character is expanded to the home + directory. To avoid these issues, avoid whitespace between the package + name and the variant: -If there is a user called ``debug``, the ``~`` will be incorrectly -expanded. In this situation, you would want to write ``libelf --debug``. However, ``-`` can be ambiguous when included after a -package name without spaces: + .. code-block:: sh -.. code-block:: sh + mpileaks ~debug # shell may try to substitute this! + mpileaks~debug # use this instead - mpileaks-debug # wrong! - mpileaks -debug # right + Alternatively, you can use the ``-`` character to disable a variant, + but be aware that this requires a space between the package name and + the variant: -Spack allows the ``-`` character to be part of package names, so the -above will be interpreted as a request for the ``mpileaks-debug`` -package, not a request for ``mpileaks`` built without ``debug`` -options. In this scenario, you should write ``mpileaks~debug`` to -avoid ambiguity. + .. code-block:: sh -When spack normalizes specs, it prints them out with no spaces boolean -variants using the backwards compatibility syntax and uses only ``~`` -for disabled boolean variants. The ``-`` and spaces on the command -line are provided for convenience and legibility. + mpileaks-debug # wrong: refers to a package named "mpileaks-debug" + mpileaks -debug # right: refers to a package named mpileaks with debug disabled + + As a last resort, ``debug=False`` can also be used to disable a boolean variant. + + + +""""""""""""""""""""""""""""""""""" +Variant propagation to dependencies +""""""""""""""""""""""""""""""""""" Spack allows variants to propagate their value to the package's dependency by using ``++``, ``--``, and ``~~`` for boolean variants. diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index ec45dc47e2c..26440475ef9 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -1771,7 +1771,7 @@ def define_variant( # 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) + variant_has_value.variants[name] = vt.VariantBase(name, value.value) if value.when: # the conditional value is always "possible", but it imposes its when condition as diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 17fa574e07e..2581ea053a4 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1706,10 +1706,8 @@ def _dependencies_dict(self, depflag: dt.DepFlag = dt.ALL): result[key] = list(group) return result - def _add_flag(self, name, value, propagate): - """Called by the parser to add a known flag. - Known flags currently include "arch" - """ + def _add_flag(self, name: str, value: str, propagate: bool, concrete: bool) -> None: + """Called by the parser to add a known flag""" if propagate and name in vt.RESERVED_NAMES: raise UnsupportedPropagationError( @@ -1736,14 +1734,12 @@ def _add_flag(self, name, value, propagate): for flag, propagation in flags_and_propagation: self.compiler_flags.add_flag(name, flag, propagation, flag_group) else: - # FIXME: - # All other flags represent variants. 'foo=true' and 'foo=false' - # map to '+foo' and '~foo' respectively. As such they need a - # BoolValuedVariant instance. if str(value).upper() == "TRUE" or str(value).upper() == "FALSE": self.variants[name] = vt.BoolValuedVariant(name, value, propagate) + elif concrete: + self.variants[name] = vt.MultiValuedVariant(name, value, propagate) else: - self.variants[name] = vt.AbstractVariant(name, value, propagate) + self.variants[name] = vt.VariantBase(name, value, propagate) def _set_architecture(self, **kwargs): """Called by the parser to set the architecture.""" @@ -2351,6 +2347,7 @@ def to_node_dict(self, hash=ht.dag_hash): [v.name for v in self.variants.values() if v.propagate], flag_names ) ) + d["abstract"] = sorted(v.name for v in self.variants.values() if not v.concrete) if self.external: d["external"] = { @@ -3077,7 +3074,7 @@ def constrain(self, other, deps=True): raise UnsatisfiableVersionSpecError(self.versions, other.versions) for v in [x for x in other.variants if x in self.variants]: - if not self.variants[v].compatible(other.variants[v]): + if not self.variants[v].intersects(other.variants[v]): raise vt.UnsatisfiableVariantSpecError(self.variants[v], other.variants[v]) sarch, oarch = self.architecture, other.architecture @@ -4492,7 +4489,7 @@ def __init__(self, spec: Spec): def __setitem__(self, name, vspec): # Raise a TypeError if vspec is not of the right type - if not isinstance(vspec, vt.AbstractVariant): + if not isinstance(vspec, vt.VariantBase): raise TypeError( "VariantMap accepts only values of variant types " f"[got {type(vspec).__name__} instead]" @@ -4602,8 +4599,7 @@ def constrain(self, other: "VariantMap") -> bool: changed = False for k in other: if k in self: - # If they are not compatible raise an error - if not self[k].compatible(other[k]): + if not self[k].intersects(other[k]): raise vt.UnsatisfiableVariantSpecError(self[k], other[k]) # If they are compatible merge them changed |= self[k].constrain(other[k]) @@ -4807,6 +4803,7 @@ def from_node_dict(cls, node): spec.architecture = ArchSpec.from_dict(node) propagated_names = node.get("propagate", []) + abstract_variants = set(node.get("abstract", ())) for name, values in node.get("parameters", {}).items(): propagate = name in propagated_names if name in _valid_compiler_flags: @@ -4815,7 +4812,7 @@ def from_node_dict(cls, node): spec.compiler_flags.add_flag(name, val, propagate) else: spec.variants[name] = vt.MultiValuedVariant.from_node_dict( - name, values, propagate=propagate + name, values, propagate=propagate, abstract=name in abstract_variants ) spec.external_path = None diff --git a/lib/spack/spack/spec_parser.py b/lib/spack/spack/spec_parser.py index 6739dc9aef1..1d89cd93888 100644 --- a/lib/spack/spack/spec_parser.py +++ b/lib/spack/spack/spec_parser.py @@ -99,8 +99,7 @@ VERSION_RANGE = rf"(?:(?:{VERSION})?:(?:{VERSION}(?!\s*=))?)" VERSION_LIST = rf"(?:{VERSION_RANGE}|{VERSION})(?:\s*,\s*(?:{VERSION_RANGE}|{VERSION}))*" -#: Regex with groups to use for splitting (optionally propagated) key-value pairs -SPLIT_KVP = re.compile(rf"^({NAME})(==?)(.*)$") +SPLIT_KVP = re.compile(rf"^({NAME})(:?==?)(.*)$") #: Regex with groups to use for splitting %[virtuals=...] tokens SPLIT_COMPILER_TOKEN = re.compile(rf"^%\[virtuals=({VALUE}|{QUOTED_VALUE})]\s*(.*)$") @@ -135,8 +134,8 @@ class SpecTokens(TokenBase): # Variants PROPAGATED_BOOL_VARIANT = rf"(?:(?:\+\+|~~|--)\s*{NAME})" BOOL_VARIANT = rf"(?:[~+-]\s*{NAME})" - PROPAGATED_KEY_VALUE_PAIR = rf"(?:{NAME}==(?:{VALUE}|{QUOTED_VALUE}))" - KEY_VALUE_PAIR = rf"(?:{NAME}=(?:{VALUE}|{QUOTED_VALUE}))" + PROPAGATED_KEY_VALUE_PAIR = rf"(?:{NAME}:?==(?:{VALUE}|{QUOTED_VALUE}))" + KEY_VALUE_PAIR = rf"(?:{NAME}:?=(?:{VALUE}|{QUOTED_VALUE}))" # Compilers COMPILER_AND_VERSION = rf"(?:%\s*(?:{NAME})(?:[\s]*)@\s*(?:{VERSION_LIST}))" COMPILER = rf"(?:%\s*(?:{NAME}))" @@ -370,10 +369,10 @@ def raise_parsing_error(string: str, cause: Optional[Exception] = None): """Raise a spec parsing error with token context.""" raise SpecParsingError(string, self.ctx.current_token, self.literal_str) from cause - def add_flag(name: str, value: str, propagate: bool): + def add_flag(name: str, value: str, propagate: bool, concrete: bool): """Wrapper around ``Spec._add_flag()`` that adds parser context to errors raised.""" try: - initial_spec._add_flag(name, value, propagate) + initial_spec._add_flag(name, value, propagate, concrete) except Exception as e: raise_parsing_error(str(e), e) @@ -428,29 +427,34 @@ def warn_if_after_compiler(token: str): warn_if_after_compiler(self.ctx.current_token.value) elif self.ctx.accept(SpecTokens.BOOL_VARIANT): + name = self.ctx.current_token.value[1:].strip() variant_value = self.ctx.current_token.value[0] == "+" - add_flag(self.ctx.current_token.value[1:].strip(), variant_value, propagate=False) + add_flag(name, variant_value, propagate=False, concrete=True) warn_if_after_compiler(self.ctx.current_token.value) elif self.ctx.accept(SpecTokens.PROPAGATED_BOOL_VARIANT): + name = self.ctx.current_token.value[2:].strip() variant_value = self.ctx.current_token.value[0:2] == "++" - add_flag(self.ctx.current_token.value[2:].strip(), variant_value, propagate=True) + add_flag(name, variant_value, propagate=True, concrete=True) warn_if_after_compiler(self.ctx.current_token.value) elif self.ctx.accept(SpecTokens.KEY_VALUE_PAIR): - match = SPLIT_KVP.match(self.ctx.current_token.value) - assert match, "SPLIT_KVP and KEY_VALUE_PAIR do not agree." + name, value = self.ctx.current_token.value.split("=", maxsplit=1) + concrete = name.endswith(":") + if concrete: + name = name[:-1] - name, _, value = match.groups() - add_flag(name, strip_quotes_and_unescape(value), propagate=False) + add_flag( + name, strip_quotes_and_unescape(value), propagate=False, concrete=concrete + ) warn_if_after_compiler(self.ctx.current_token.value) elif self.ctx.accept(SpecTokens.PROPAGATED_KEY_VALUE_PAIR): - match = SPLIT_KVP.match(self.ctx.current_token.value) - assert match, "SPLIT_KVP and PROPAGATED_KEY_VALUE_PAIR do not agree." - - name, _, value = match.groups() - add_flag(name, strip_quotes_and_unescape(value), propagate=True) + name, value = self.ctx.current_token.value.split("==", maxsplit=1) + concrete = name.endswith(":") + if concrete: + name = name[:-1] + add_flag(name, strip_quotes_and_unescape(value), propagate=True, concrete=concrete) warn_if_after_compiler(self.ctx.current_token.value) elif self.ctx.expect(SpecTokens.DAG_HASH): @@ -509,7 +513,8 @@ def parse(self): while True: if self.ctx.accept(SpecTokens.KEY_VALUE_PAIR): name, value = self.ctx.current_token.value.split("=", maxsplit=1) - name = name.strip("'\" ") + if name.endswith(":"): + name = name[:-1] value = value.strip("'\" ").split(",") attributes[name] = value if name not in ("deptypes", "virtuals"): diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index eee7791baa4..9232fcb0292 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -638,7 +638,7 @@ def test_multivalued_variant_2(self): a = Spec("multivalue-variant foo=bar") b = Spec("multivalue-variant foo=bar,baz") # The specs are abstract and they **could** be constrained - assert a.satisfies(b) + assert b.satisfies(a) and not a.satisfies(b) # An abstract spec can instead be constrained assert a.constrain(b) diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 1a80540c042..d3ac7344cce 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -633,6 +633,23 @@ def _specfile_for(spec_str, filename): ], "zlib %[virtuals=fortran] gcc@14.1 %[virtuals=c,cxx] clang", ), + # test := and :== syntax for key value pairs + ( + "gcc languages:=c,c++", + [ + Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, "gcc"), + Token(SpecTokens.KEY_VALUE_PAIR, "languages:=c,c++"), + ], + "gcc languages:='c,c++'", + ), + ( + "gcc languages:==c,c++", + [ + Token(SpecTokens.UNQUALIFIED_PACKAGE_NAME, "gcc"), + Token(SpecTokens.PROPAGATED_KEY_VALUE_PAIR, "languages:==c,c++"), + ], + "gcc languages:=='c,c++'", + ), ], ) def test_parse_single_spec(spec_str, tokens, expected_roundtrip, mock_git_test_package): diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index 1fb6a6ef973..0af893b35e7 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -12,7 +12,6 @@ import spack.variant from spack.spec import Spec, VariantMap from spack.variant import ( - AbstractVariant, BoolValuedVariant, DuplicateVariantError, InconsistentValidationError, @@ -22,6 +21,7 @@ SingleValuedVariant, UnsatisfiableVariantSpecError, Variant, + VariantBase, disjoint_sets, ) @@ -31,7 +31,7 @@ def test_initialization(self): # Basic properties a = MultiValuedVariant("foo", "bar,baz") assert repr(a) == "MultiValuedVariant('foo', 'bar,baz')" - assert str(a) == "foo=bar,baz" + assert str(a) == "foo:=bar,baz" assert a.value == ("bar", "baz") assert "bar" in a assert "baz" in a @@ -40,7 +40,7 @@ def test_initialization(self): # Spaces are trimmed b = MultiValuedVariant("foo", "bar, baz") assert repr(b) == "MultiValuedVariant('foo', 'bar, baz')" - assert str(b) == "foo=bar,baz" + assert str(b) == "foo:=bar,baz" assert b.value == ("bar", "baz") assert "bar" in b assert "baz" in b @@ -51,7 +51,7 @@ def test_initialization(self): # Order is not important c = MultiValuedVariant("foo", "baz, bar") assert repr(c) == "MultiValuedVariant('foo', 'baz, bar')" - assert str(c) == "foo=bar,baz" + assert str(c) == "foo:=bar,baz" assert c.value == ("bar", "baz") assert "bar" in c assert "baz" in c @@ -77,116 +77,71 @@ def test_satisfies(self): c = MultiValuedVariant("fee", "bar,baz") d = MultiValuedVariant("foo", "True") - # 'foo=bar,baz' satisfies 'foo=bar' - assert a.satisfies(b) - - # 'foo=bar' does not satisfy 'foo=bar,baz' - assert not b.satisfies(a) - - # 'foo=bar,baz' does not satisfy 'foo=bar,baz' and vice-versa - assert not a.satisfies(c) - assert not c.satisfies(a) - - # Implicit type conversion for variants of other types + # concrete, different values do not satisfy each other + assert not a.satisfies(b) and not b.satisfies(a) + assert not a.satisfies(c) and not c.satisfies(a) + # SingleValuedVariant and MultiValuedVariant with the same single concrete value do satisfy + # eachother b_sv = SingleValuedVariant("foo", "bar") - assert b.satisfies(b_sv) + assert b.satisfies(b_sv) and b_sv.satisfies(b) d_sv = SingleValuedVariant("foo", "True") - assert d.satisfies(d_sv) + assert d.satisfies(d_sv) and d_sv.satisfies(d) almost_d_bv = SingleValuedVariant("foo", "true") assert not d.satisfies(almost_d_bv) + # BoolValuedVariant actually stores the value as a boolean, whereas with MV and SV the + # value is string "True". d_bv = BoolValuedVariant("foo", "True") - assert d.satisfies(d_bv) - # This case is 'peculiar': the two BV instances are - # equivalent, but if converted to MV they are not - # as MV is case sensitive with respect to 'True' and 'False' - almost_d_bv = BoolValuedVariant("foo", "true") - assert not d.satisfies(almost_d_bv) + assert not d.satisfies(d_bv) and not d_bv.satisfies(d) - def test_compatible(self): + def test_intersects(self): a = MultiValuedVariant("foo", "bar,baz") b = MultiValuedVariant("foo", "True") c = MultiValuedVariant("fee", "bar,baz") d = MultiValuedVariant("foo", "bar,barbaz") - # If the name of two multi-valued variants is the same, - # they are compatible - assert a.compatible(b) - assert not a.compatible(c) - assert a.compatible(d) - - assert b.compatible(a) - assert not b.compatible(c) - assert b.compatible(d) - - assert not c.compatible(a) - assert not c.compatible(b) - assert not c.compatible(d) - - assert d.compatible(a) - assert d.compatible(b) - assert not d.compatible(c) - - # Implicit type conversion for other types + # concrete, different values do not intersect. + assert not a.intersects(b) and not b.intersects(a) + assert not a.intersects(c) and not c.intersects(a) + assert not a.intersects(d) and not d.intersects(a) + assert not b.intersects(c) and not c.intersects(b) + assert not b.intersects(d) and not d.intersects(b) + assert not c.intersects(d) and not d.intersects(c) + # SV and MV intersect if they have the same concrete value. b_sv = SingleValuedVariant("foo", "True") - assert b.compatible(b_sv) - assert not c.compatible(b_sv) + assert b.intersects(b_sv) + assert not c.intersects(b_sv) + # BoolValuedVariant stores a bool, which is not the same as the string "True" in MV. b_bv = BoolValuedVariant("foo", "True") - assert b.compatible(b_bv) - assert not c.compatible(b_bv) + assert not b.intersects(b_bv) + assert not c.intersects(b_bv) def test_constrain(self): - # Try to constrain on a value with less constraints than self + # Concrete values cannot be constrained a = MultiValuedVariant("foo", "bar,baz") b = MultiValuedVariant("foo", "bar") - - changed = a.constrain(b) - assert not changed - t = MultiValuedVariant("foo", "bar,baz") - assert a == t - - # Try to constrain on a value with more constraints than self - a = MultiValuedVariant("foo", "bar,baz") - b = MultiValuedVariant("foo", "bar") - - changed = b.constrain(a) - assert changed - t = MultiValuedVariant("foo", "bar,baz") - assert a == t + with pytest.raises(UnsatisfiableVariantSpecError): + a.constrain(b) + with pytest.raises(UnsatisfiableVariantSpecError): + b.constrain(a) # Try to constrain on the same value a = MultiValuedVariant("foo", "bar,baz") b = a.copy() - changed = a.constrain(b) - assert not changed - t = MultiValuedVariant("foo", "bar,baz") - assert a == t + assert not a.constrain(b) + assert a == b == MultiValuedVariant("foo", "bar,baz") # Try to constrain on a different name a = MultiValuedVariant("foo", "bar,baz") b = MultiValuedVariant("fee", "bar") - with pytest.raises(ValueError): + with pytest.raises(UnsatisfiableVariantSpecError): a.constrain(b) - # Implicit type conversion for variants of other types - - a = MultiValuedVariant("foo", "bar,baz") - b_sv = SingleValuedVariant("foo", "bar") - c_sv = SingleValuedVariant("foo", "barbaz") - - assert not a.constrain(b_sv) - assert a.constrain(c_sv) - - d_bv = BoolValuedVariant("foo", "True") - - assert a.constrain(d_bv) - assert not a.constrain(d_bv) - def test_yaml_entry(self): a = MultiValuedVariant("foo", "bar,baz,barbaz") b = MultiValuedVariant("foo", "bar, baz, barbaz") @@ -231,126 +186,56 @@ def test_satisfies(self): b = SingleValuedVariant("foo", "bar") c = SingleValuedVariant("foo", "baz") d = SingleValuedVariant("fee", "bar") - e = SingleValuedVariant("foo", "True") - # 'foo=bar' can only satisfy 'foo=bar' - assert a.satisfies(b) - assert not a.satisfies(c) - assert not a.satisfies(d) + # concrete, different values do not satisfy each other + assert not a.satisfies(c) and not c.satisfies(a) + assert not a.satisfies(d) and not d.satisfies(a) + assert not b.satisfies(c) and not c.satisfies(b) + assert not b.satisfies(d) and not d.satisfies(b) + assert not c.satisfies(d) and not d.satisfies(c) - assert b.satisfies(a) - assert not b.satisfies(c) - assert not b.satisfies(d) + assert a.satisfies(b) and b.satisfies(a) - assert not c.satisfies(a) - assert not c.satisfies(b) - assert not c.satisfies(d) - - # Implicit type conversion for variants of other types - - a_mv = MultiValuedVariant("foo", "bar") - assert a.satisfies(a_mv) - multiple_values = MultiValuedVariant("foo", "bar,baz") - assert not a.satisfies(multiple_values) - - e_bv = BoolValuedVariant("foo", "True") - assert e.satisfies(e_bv) - almost_e_bv = BoolValuedVariant("foo", "true") - assert not e.satisfies(almost_e_bv) - - def test_compatible(self): + def test_intersects(self): a = SingleValuedVariant("foo", "bar") b = SingleValuedVariant("fee", "bar") c = SingleValuedVariant("foo", "baz") d = SingleValuedVariant("foo", "bar") - # If the name of two multi-valued variants is the same, - # they are compatible - assert not a.compatible(b) - assert not a.compatible(c) - assert a.compatible(d) + # concrete, different values do not intersect + assert not a.intersects(b) and not b.intersects(a) + assert not a.intersects(c) and not c.intersects(a) + assert not b.intersects(c) and not c.intersects(b) + assert not b.intersects(d) and not d.intersects(b) + assert not c.intersects(d) and not d.intersects(c) - assert not b.compatible(a) - assert not b.compatible(c) - assert not b.compatible(d) - - assert not c.compatible(a) - assert not c.compatible(b) - assert not c.compatible(d) - - assert d.compatible(a) - assert not d.compatible(b) - assert not d.compatible(c) - - # Implicit type conversion for variants of other types - - a_mv = MultiValuedVariant("foo", "bar") - b_mv = MultiValuedVariant("fee", "bar") - c_mv = MultiValuedVariant("foo", "baz") - d_mv = MultiValuedVariant("foo", "bar") - - assert not a.compatible(b_mv) - assert not a.compatible(c_mv) - assert a.compatible(d_mv) - - assert not b.compatible(a_mv) - assert not b.compatible(c_mv) - assert not b.compatible(d_mv) - - assert not c.compatible(a_mv) - assert not c.compatible(b_mv) - assert not c.compatible(d_mv) - - assert d.compatible(a_mv) - assert not d.compatible(b_mv) - assert not d.compatible(c_mv) - - e = SingleValuedVariant("foo", "True") - e_bv = BoolValuedVariant("foo", "True") - almost_e_bv = BoolValuedVariant("foo", "true") - - assert e.compatible(e_bv) - assert not e.compatible(almost_e_bv) + assert a.intersects(d) and d.intersects(a) def test_constrain(self): # Try to constrain on a value equal to self a = SingleValuedVariant("foo", "bar") b = SingleValuedVariant("foo", "bar") - changed = a.constrain(b) - assert not changed - t = SingleValuedVariant("foo", "bar") - assert a == t + assert not a.constrain(b) + assert a == SingleValuedVariant("foo", "bar") # Try to constrain on a value with a different value a = SingleValuedVariant("foo", "bar") b = SingleValuedVariant("foo", "baz") - with pytest.raises(UnsatisfiableVariantSpecError): - b.constrain(a) - # Try to constrain on a value with a different value a = SingleValuedVariant("foo", "bar") b = SingleValuedVariant("fee", "bar") - with pytest.raises(ValueError): + with pytest.raises(UnsatisfiableVariantSpecError): b.constrain(a) # Try to constrain on the same value a = SingleValuedVariant("foo", "bar") b = a.copy() - changed = a.constrain(b) - assert not changed - t = SingleValuedVariant("foo", "bar") - assert a == t - - # Implicit type conversion for variants of other types - a = SingleValuedVariant("foo", "True") - mv = MultiValuedVariant("foo", "True") - bv = BoolValuedVariant("foo", "True") - for v in (mv, bv): - assert not a.constrain(v) + assert not a.constrain(b) + assert a == SingleValuedVariant("foo", "bar") def test_yaml_entry(self): a = SingleValuedVariant("foo", "bar") @@ -411,80 +296,62 @@ def test_satisfies(self): c = BoolValuedVariant("fee", False) d = BoolValuedVariant("foo", "True") - assert not a.satisfies(b) - assert not a.satisfies(c) - assert a.satisfies(d) + # concrete, different values do not satisfy each other + assert not a.satisfies(b) and not b.satisfies(a) + assert not a.satisfies(c) and not c.satisfies(a) + assert not b.satisfies(c) and not c.satisfies(b) + assert not b.satisfies(d) and not d.satisfies(b) + assert not c.satisfies(d) and not d.satisfies(c) - assert not b.satisfies(a) - assert not b.satisfies(c) - assert not b.satisfies(d) + assert a.satisfies(d) and d.satisfies(a) - assert not c.satisfies(a) - assert not c.satisfies(b) - assert not c.satisfies(d) + # # BV variants are case insensitive to 'True' or 'False' + # d_mv = MultiValuedVariant("foo", "True") + # assert d.satisfies(d_mv) + # assert not b.satisfies(d_mv) - assert d.satisfies(a) - assert not d.satisfies(b) - assert not d.satisfies(c) + # d_mv = MultiValuedVariant("foo", "FaLsE") + # assert not d.satisfies(d_mv) + # assert b.satisfies(d_mv) - # BV variants are case insensitive to 'True' or 'False' - d_mv = MultiValuedVariant("foo", "True") - assert d.satisfies(d_mv) - assert not b.satisfies(d_mv) + # d_mv = MultiValuedVariant("foo", "bar") + # assert not d.satisfies(d_mv) + # assert not b.satisfies(d_mv) - d_mv = MultiValuedVariant("foo", "FaLsE") - assert not d.satisfies(d_mv) - assert b.satisfies(d_mv) + # d_sv = SingleValuedVariant("foo", "True") + # assert d.satisfies(d_sv) - d_mv = MultiValuedVariant("foo", "bar") - assert not d.satisfies(d_mv) - assert not b.satisfies(d_mv) - - d_sv = SingleValuedVariant("foo", "True") - assert d.satisfies(d_sv) - - def test_compatible(self): + def test_intersects(self): a = BoolValuedVariant("foo", True) b = BoolValuedVariant("fee", True) c = BoolValuedVariant("foo", False) d = BoolValuedVariant("foo", "True") - # If the name of two multi-valued variants is the same, - # they are compatible - assert not a.compatible(b) - assert not a.compatible(c) - assert a.compatible(d) + # concrete, different values do not intersect each other + assert not a.intersects(b) and not b.intersects(a) + assert not a.intersects(c) and not c.intersects(a) + assert not b.intersects(c) and not c.intersects(b) + assert not b.intersects(d) and not d.intersects(b) + assert not c.intersects(d) and not d.intersects(c) - assert not b.compatible(a) - assert not b.compatible(c) - assert not b.compatible(d) + assert a.intersects(d) and d.intersects(a) - assert not c.compatible(a) - assert not c.compatible(b) - assert not c.compatible(d) + # for value in ("True", "TrUe", "TRUE"): + # d_mv = MultiValuedVariant("foo", value) + # assert d.intersects(d_mv) + # assert not c.intersects(d_mv) - assert d.compatible(a) - assert not d.compatible(b) - assert not d.compatible(c) - - for value in ("True", "TrUe", "TRUE"): - d_mv = MultiValuedVariant("foo", value) - assert d.compatible(d_mv) - assert not c.compatible(d_mv) - - d_sv = SingleValuedVariant("foo", value) - assert d.compatible(d_sv) - assert not c.compatible(d_sv) + # d_sv = SingleValuedVariant("foo", value) + # assert d.intersects(d_sv) + # assert not c.intersects(d_sv) def test_constrain(self): # Try to constrain on a value equal to self a = BoolValuedVariant("foo", "True") b = BoolValuedVariant("foo", True) - changed = a.constrain(b) - assert not changed - t = BoolValuedVariant("foo", True) - assert a == t + assert not a.constrain(b) + assert a == BoolValuedVariant("foo", True) # Try to constrain on a value with a different value a = BoolValuedVariant("foo", True) @@ -497,24 +364,15 @@ def test_constrain(self): a = BoolValuedVariant("foo", True) b = BoolValuedVariant("fee", True) - with pytest.raises(ValueError): + with pytest.raises(UnsatisfiableVariantSpecError): b.constrain(a) # Try to constrain on the same value a = BoolValuedVariant("foo", True) b = a.copy() - changed = a.constrain(b) - assert not changed - t = BoolValuedVariant("foo", True) - assert a == t - - # Try to constrain on other values - a = BoolValuedVariant("foo", "True") - sv = SingleValuedVariant("foo", "True") - mv = MultiValuedVariant("foo", "True") - for v in (sv, mv): - assert not a.constrain(v) + assert not a.constrain(b) + assert a == BoolValuedVariant("foo", True) def test_yaml_entry(self): a = BoolValuedVariant("foo", "True") @@ -652,11 +510,9 @@ def test_satisfies_and_constrain(self) -> None: b["foobar"] = SingleValuedVariant("foobar", "fee") b["shared"] = BoolValuedVariant("shared", True) - assert a.intersects(b) - assert b.intersects(a) - - assert not a.satisfies(b) - assert not b.satisfies(a) + # concrete, different values do not intersect / satisfy each other + assert not a.intersects(b) and not b.intersects(a) + assert not a.satisfies(b) and not b.satisfies(a) # foo=bar,baz foobar=fee feebar=foo shared=True c = VariantMap(Spec()) @@ -665,8 +521,9 @@ def test_satisfies_and_constrain(self) -> None: c["feebar"] = SingleValuedVariant("feebar", "foo") c["shared"] = BoolValuedVariant("shared", True) - assert a.constrain(b) - assert a == c + # concrete values cannot be constrained + with pytest.raises(spack.variant.UnsatisfiableVariantSpecError): + a.constrain(b) def test_copy(self) -> None: a = VariantMap(Spec()) @@ -683,7 +540,7 @@ def test_str(self) -> None: c["foobar"] = SingleValuedVariant("foobar", "fee") c["feebar"] = SingleValuedVariant("feebar", "foo") c["shared"] = BoolValuedVariant("shared", True) - assert str(c) == "+shared feebar=foo foo=bar,baz foobar=fee" + assert str(c) == "+shared feebar=foo foo:=bar,baz foobar=fee" def test_disjoint_set_initialization_errors(): @@ -905,7 +762,7 @@ def test_concretize_variant_default_with_multiple_defs( # dev_path is a special case ("foo dev_path=/path/to/source", "dev_path", SingleValuedVariant), # reserved name: won't be touched - ("foo patches=2349dc44", "patches", AbstractVariant), + ("foo patches=2349dc44", "patches", VariantBase), # simple case -- one definition applies ("variant-values@1.0 v=foo", "v", SingleValuedVariant), # simple, but with bool valued variant @@ -913,14 +770,14 @@ def test_concretize_variant_default_with_multiple_defs( # variant doesn't exist at version ("variant-values@4.0 v=bar", "v", spack.spec.InvalidVariantForSpecError), # multiple definitions, so not yet knowable - ("variant-values@2.0 v=bar", "v", AbstractVariant), + ("variant-values@2.0 v=bar", "v", VariantBase), ], ) def test_substitute_abstract_variants(mock_packages, spec, variant_name, after): spec = Spec(spec) - # all variants start out as AbstractVariant - assert isinstance(spec.variants[variant_name], AbstractVariant) + # all variants start out as VariantBase + assert isinstance(spec.variants[variant_name], VariantBase) if issubclass(after, Exception): # if we're checking for an error, use pytest.raises @@ -930,3 +787,142 @@ def test_substitute_abstract_variants(mock_packages, spec, variant_name, after): # ensure that the type of the variant on the spec has been narrowed (or not) spack.spec.substitute_abstract_variants(spec) assert isinstance(spec.variants[variant_name], after) + + +def test_abstract_variant_satisfies_abstract_abstract(): + # rhs should be a subset of lhs + assert Spec("foo=bar").satisfies("foo=bar") + assert Spec("foo=bar,baz").satisfies("foo=bar") + assert Spec("foo=bar,baz").satisfies("foo=bar,baz") + assert not Spec("foo=bar").satisfies("foo=baz") + assert not Spec("foo=bar").satisfies("foo=bar,baz") + assert Spec("foo=bar").satisfies("foo=*") # rhs empty set + assert Spec("foo=*").satisfies("foo=*") # lhs and rhs empty set + assert not Spec("foo=*").satisfies("foo=bar") # lhs empty set, rhs not + + +def test_abstract_variant_satisfies_concrete_abstract(): + # rhs should be a subset of lhs + assert Spec("foo:=bar").satisfies("foo=bar") + assert Spec("foo:=bar,baz").satisfies("foo=bar") + assert Spec("foo:=bar,baz").satisfies("foo=bar,baz") + assert not Spec("foo:=bar").satisfies("foo=baz") + assert not Spec("foo:=bar").satisfies("foo=bar,baz") + assert Spec("foo:=bar").satisfies("foo=*") # rhs empty set + + +def test_abstract_variant_satisfies_abstract_concrete(): + # always false since values can be added to the lhs + assert not Spec("foo=bar").satisfies("foo:=bar") + assert not Spec("foo=bar,baz").satisfies("foo:=bar") + assert not Spec("foo=bar,baz").satisfies("foo:=bar,baz") + assert not Spec("foo=bar").satisfies("foo:=baz") + assert not Spec("foo=bar").satisfies("foo:=bar,baz") + assert not Spec("foo=*").satisfies("foo:=bar") # lhs empty set + + +def test_abstract_variant_satisfies_concrete_concrete(): + # concrete values only satisfy each other when equal + assert Spec("foo:=bar").satisfies("foo:=bar") + assert not Spec("foo:=bar,baz").satisfies("foo:=bar") + assert not Spec("foo:=bar").satisfies("foo:=bar,baz") + assert Spec("foo:=bar,baz").satisfies("foo:=bar,baz") + + +def test_abstract_variant_intersects_abstract_abstract(): + # always true since the union of values satisfies both + assert Spec("foo=bar").intersects("foo=bar") + assert Spec("foo=bar,baz").intersects("foo=bar") + assert Spec("foo=bar,baz").intersects("foo=bar,baz") + assert Spec("foo=bar").intersects("foo=baz") + assert Spec("foo=bar").intersects("foo=bar,baz") + assert Spec("foo=bar").intersects("foo=*") # rhs empty set + assert Spec("foo=*").intersects("foo=*") # lhs and rhs empty set + assert Spec("foo=*").intersects("foo=bar") # lhs empty set, rhs not + + +def test_abstract_variant_intersects_concrete_abstract(): + assert Spec("foo:=bar").intersects("foo=bar") + assert Spec("foo:=bar,baz").intersects("foo=bar") + assert Spec("foo:=bar,baz").intersects("foo=bar,baz") + assert not Spec("foo:=bar").intersects("foo=baz") # rhs has at least baz, lhs has not + assert not Spec("foo:=bar").intersects("foo=bar,baz") # rhs has at least baz, lhs has not + assert Spec("foo:=bar").intersects("foo=*") # rhs empty set + + +def test_abstract_variant_intersects_abstract_concrete(): + assert Spec("foo=bar").intersects("foo:=bar") + assert not Spec("foo=bar,baz").intersects("foo:=bar") # lhs has at least baz, rhs has not + assert Spec("foo=bar,baz").intersects("foo:=bar,baz") + assert not Spec("foo=bar").intersects("foo:=baz") # lhs has at least bar, rhs has not + assert Spec("foo=bar").intersects("foo:=bar,baz") + assert Spec("foo=*").intersects("foo:=bar") # lhs empty set + + +def test_abstract_variant_intersects_concrete_concrete(): + # concrete values only intersect each other when equal + assert Spec("foo:=bar").intersects("foo:=bar") + assert not Spec("foo:=bar,baz").intersects("foo:=bar") + assert not Spec("foo:=bar").intersects("foo:=bar,baz") + assert Spec("foo:=bar,baz").intersects("foo:=bar,baz") + + +def test_abstract_variant_constrain_abstract_abstract(): + s1 = Spec("foo=bar") + s2 = Spec("foo=*") + assert s1.constrain("foo=baz") + assert s1 == Spec("foo=bar,baz") + assert s2.constrain("foo=baz") + assert s2 == Spec("foo=baz") + + +def test_abstract_variant_constrain_abstract_concrete_fail(): + with pytest.raises(UnsatisfiableVariantSpecError): + Spec("foo=bar").constrain("foo:=baz") + + +def test_abstract_variant_constrain_abstract_concrete_ok(): + s1 = Spec("foo=bar") + s2 = Spec("foo=*") + assert s1.constrain("foo:=bar") # the change is concreteness + assert s1 == Spec("foo:=bar") + assert s2.constrain("foo:=bar") + assert s2 == Spec("foo:=bar") + + +def test_abstract_variant_constrain_concrete_concrete_fail(): + with pytest.raises(UnsatisfiableVariantSpecError): + Spec("foo:=bar").constrain("foo:=bar,baz") + + +def test_abstract_variant_constrain_concrete_concrete_ok(): + s = Spec("foo:=bar") + assert not s.constrain("foo:=bar") # no change + + +def test_abstract_variant_constrain_concrete_abstract_fail(): + s = Spec("foo:=bar") + with pytest.raises(UnsatisfiableVariantSpecError): + s.constrain("foo=baz") + + +def test_abstract_variant_constrain_concrete_abstract_ok(): + s = Spec("foo:=bar,baz") + assert not s.constrain("foo=bar") # no change in value or concreteness + assert not s.constrain("foo=*") + + +def test_patches_variant(): + """patches=x,y,z is a variant with special satisfies behavior when the rhs is abstract; it + allows string prefix matching of the lhs.""" + assert Spec("patches:=abcdef").satisfies("patches=ab") + assert Spec("patches:=abcdef").satisfies("patches=abcdef") + assert not Spec("patches:=abcdef").satisfies("patches=xyz") + assert Spec("patches:=abcdef,xyz").satisfies("patches=xyz") + assert not Spec("patches:=abcdef").satisfies("patches=abcdefghi") + + # but when the rhs is concrete, it must match exactly + assert Spec("patches:=abcdef").satisfies("patches:=abcdef") + assert not Spec("patches:=abcdef").satisfies("patches:=ab") + assert not Spec("patches:=abcdef,xyz").satisfies("patches:=abc,xyz") + assert not Spec("patches:=abcdef").satisfies("patches:=abcdefghi") diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 5fa2251f127..e9700ed9466 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -134,7 +134,7 @@ def isa_type(v): self.sticky = sticky self.precedence = precedence - def validate_or_raise(self, vspec: "AbstractVariant", pkg_name: str): + def validate_or_raise(self, vspec: "VariantBase", pkg_name: str): """Validate a variant spec against this package variant. Raises an exception if any error is found. @@ -200,7 +200,7 @@ def make_default(self): """ return self.make_variant(self.default) - def make_variant(self, value: Union[str, bool]) -> "AbstractVariant": + def make_variant(self, value: Union[str, bool]) -> "VariantBase": """Factory that creates a variant holding the value passed as a parameter. @@ -237,27 +237,6 @@ def __str__(self): ) -def implicit_variant_conversion(method): - """Converts other to type(self) and calls method(self, other) - - Args: - method: any predicate method that takes another variant as an argument - - Returns: decorated method - """ - - @functools.wraps(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, propagate=other.propagate) - except (spack.error.SpecError, ValueError): - return False - return method(self, other) - - return convert - - def _flatten(values) -> Collection: """Flatten instances of _ConditionalVariantValues for internal representation""" if isinstance(values, DisjointSetsOfValues): @@ -282,16 +261,10 @@ def _flatten(values) -> Collection: @lang.lazy_lexicographic_ordering -class AbstractVariant: - """A variant that has not yet decided who it wants to be. It behaves like - a multi valued variant which **could** do things. - - This kind of variant is generated during parsing of expressions like - ``foo=bar`` and differs from multi valued variants because it will - satisfy any other variant with the same name. This is because it **could** - do it if it grows up to be a multi valued variant with the right set of - values. - """ +class VariantBase: + """A BaseVariant corresponds to a spec string of the form ``foo=bar`` or ``foo=bar,baz``. + It is a constraint on the spec and abstract in the sense that it must have **at least** these + values -- concretization may add more values.""" name: str propagate: bool @@ -301,18 +274,19 @@ class AbstractVariant: def __init__(self, name: str, value: ValueType, propagate: bool = False) -> None: self.name = name self.propagate = propagate + self.concrete = False # Invokes property setter self.value = value @staticmethod def from_node_dict( - name: str, value: Union[str, List[str]], *, propagate: bool = False - ) -> "AbstractVariant": + name: str, value: Union[str, List[str]], *, propagate: bool = False, abstract: bool = False + ) -> "VariantBase": """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, (), propagate=propagate) + constructor = VariantBase if abstract else MultiValuedVariant + mvar = constructor(name, (), propagate=propagate) mvar._value = tuple(value) mvar._original_value = mvar._value return mvar @@ -358,6 +332,10 @@ def _value_setter(self, value: ValueType) -> None: # Store the original value self._original_value = value + if value == "*": + self._value = () + return + if not isinstance(value, (tuple, list)): # Store a tuple of CSV string representations # Tuple is necessary here instead of list because the @@ -380,81 +358,61 @@ def _cmp_iter(self) -> Iterable: 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 + def copy(self) -> "VariantBase": + variant = type(self)(self.name, self._original_value, self.propagate) + variant.concrete = self.concrete + return variant - Returns: - AbstractVariant: a copy of self - - >>> a = MultiValuedVariant('foo', True) - >>> b = a.copy() - >>> assert a == b - >>> assert a is not b - """ - return type(self)(self.name, self._original_value, self.propagate) - - @implicit_variant_conversion - def satisfies(self, other: "AbstractVariant") -> bool: - """Returns true if ``other.name == self.name``, because any value that - other holds and is not in self yet **could** be added. - - Args: - other: constraint to be met for the method to return True - - Returns: - bool: True or False - """ - # If names are different then `self` does not satisfy `other` - # (`foo=bar` will never satisfy `baz=bar`) - return other.name == self.name - - def intersects(self, other: "AbstractVariant") -> bool: - """Returns True if there are variant matching both self and other, False otherwise.""" - if isinstance(other, (SingleValuedVariant, BoolValuedVariant)): - return other.intersects(self) - return other.name == self.name - - def compatible(self, other: "AbstractVariant") -> bool: - """Returns True if self and other are compatible, False otherwise. - - As there is no semantic check, two VariantSpec are compatible if - either they contain the same value or they are both multi-valued. - - Args: - other: instance against which we test compatibility - - Returns: - bool: True or False - """ - # If names are different then `self` is not compatible with `other` - # (`foo=bar` is incompatible with `baz=bar`) - return self.intersects(other) - - @implicit_variant_conversion - def constrain(self, other: "AbstractVariant") -> bool: - """Modify self to match all the constraints for other if both - instances are multi-valued. Returns True if self changed, - False otherwise. - - Args: - other: instance against which we constrain self - - Returns: - bool: True or False - """ + def satisfies(self, other: "VariantBase") -> bool: + """The lhs satisfies the rhs if all possible concretizations of lhs are also + possible concretizations of rhs.""" if self.name != other.name: - raise ValueError("variants must have the same name") + return False + if not other.concrete: + # rhs abstract means the lhs must at least contain its values. + # special-case patches with rhs abstract: their values may be prefixes of the lhs + # values. + if self.name == "patches": + return all( + isinstance(v, str) + and any(isinstance(w, str) and w.startswith(v) for w in self.value_as_tuple) + for v in other.value_as_tuple + ) + return all(v in self for v in other.value_as_tuple) + if self.concrete: + # both concrete: they must be equal + return self.value_as_tuple == other.value_as_tuple + return False + + def intersects(self, other: "VariantBase") -> bool: + """True iff there exists a concretization that satisfies both lhs and rhs.""" + if self.name != other.name: + return False + if self.concrete: + if other.concrete: + return self.value_as_tuple == other.value_as_tuple + return all(v in self for v in other.value_as_tuple) + if other.concrete: + return all(v in other for v in self.value_as_tuple) + # both abstract: the union is a valid concretization of both + return True + + def constrain(self, other: "VariantBase") -> bool: + """Constrain self with other if they intersect. Returns true iff self was changed.""" + if not self.intersects(other): + raise UnsatisfiableVariantSpecError(self, other) old_value = self.value - - values = list(sorted(set(self.value_as_tuple + other.value_as_tuple))) - # If we constraint wildcard by another value, just take value - if "*" in values and len(values) > 1: - values.remove("*") - + values = list(sorted({*self.value_as_tuple, *other.value_as_tuple})) self._value_setter(",".join(str(v) for v in values)) - self.propagate = self.propagate and other.propagate - return old_value != self.value + changed = old_value != self.value + if self.propagate and not other.propagate: + self.propagate = False + changed = True + if not self.concrete and other.concrete: + self.concrete = True + changed = True + return changed def __contains__(self, item: Union[str, bool]) -> bool: return item in self.value_as_tuple @@ -463,42 +421,20 @@ def __repr__(self) -> str: return f"{type(self).__name__}({repr(self.name)}, {repr(self._original_value)})" def __str__(self) -> str: + concrete = ":" if self.concrete else "" delim = "==" if self.propagate else "=" - values = spack.spec_parser.quote_if_needed(",".join(str(v) for v in self.value_as_tuple)) - return f"{self.name}{delim}{values}" + values_tuple = self.value_as_tuple + if values_tuple: + value_str = ",".join(str(v) for v in values_tuple) + else: + value_str = "*" + return f"{self.name}{concrete}{delim}{spack.spec_parser.quote_if_needed(value_str)}" -class MultiValuedVariant(AbstractVariant): - """A variant that can hold multiple values at once.""" - - @implicit_variant_conversion - def satisfies(self, other: AbstractVariant) -> bool: - """Returns true if ``other.name == self.name`` and ``other.value`` is - a strict subset of self. Does not try to validate. - - Args: - other: constraint to be met for the method to return True - - Returns: - bool: True or False - """ - super_sat = super().satisfies(other) - - if not super_sat: - return False - - if "*" in other or "*" in self: - return True - - # allow prefix find on patches - if self.name == "patches": - return all( - any(str(w).startswith(str(v)) for w in self.value_as_tuple) - for v in other.value_as_tuple - ) - - # Otherwise we want all the values in `other` to be also in `self` - return all(v in self for v in other.value_as_tuple) +class MultiValuedVariant(VariantBase): + def __init__(self, name, value, propagate=False): + super().__init__(name, value, propagate) + self.concrete = True def append(self, value: Union[str, bool]) -> None: """Add another value to this multi-valued variant.""" @@ -513,11 +449,13 @@ def __str__(self) -> str: values_str = ",".join(str(x) for x in self.value_as_tuple) delim = "==" if self.propagate else "=" - return f"{self.name}{delim}{spack.spec_parser.quote_if_needed(values_str)}" + return f"{self.name}:{delim}{spack.spec_parser.quote_if_needed(values_str)}" -class SingleValuedVariant(AbstractVariant): - """A variant that can hold multiple values, but one at a time.""" +class SingleValuedVariant(VariantBase): + def __init__(self, name, value, propagate=False): + super().__init__(name, value, propagate) + self.concrete = True def _value_setter(self, value: ValueType) -> None: # Treat the value as a multi-valued variant @@ -530,37 +468,6 @@ def _value_setter(self, value: ValueType) -> None: self._value = values[0] - @implicit_variant_conversion - def satisfies(self, other: "AbstractVariant") -> bool: - abstract_sat = super().satisfies(other) - - return abstract_sat and ( - self.value == other.value or other.value == "*" or self.value == "*" - ) - - def intersects(self, other: "AbstractVariant") -> bool: - return self.satisfies(other) - - def compatible(self, other: "AbstractVariant") -> bool: - return self.satisfies(other) - - @implicit_variant_conversion - def constrain(self, other: "AbstractVariant") -> bool: - if self.name != other.name: - raise ValueError("variants must have the same name") - - if other.value == "*": - return False - - if self.value == "*": - self.value = other.value - return True - - 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: return item == self.value @@ -574,10 +481,9 @@ def __str__(self) -> str: class BoolValuedVariant(SingleValuedVariant): - """A variant that can hold either True or False. - - BoolValuedVariant can also hold the value '*', for coerced - comparisons between ``foo=*`` and ``+foo`` or ``~foo``.""" + def __init__(self, name, value, propagate=False): + super().__init__(name, value, propagate) + self.concrete = True def _value_setter(self, value: ValueType) -> None: # Check the string representation of the value and turn @@ -588,13 +494,11 @@ def _value_setter(self, value: ValueType) -> None: elif str(value).upper() == "FALSE": self._original_value = value self._value = False - elif str(value) == "*": - self._original_value = value - self._value = "*" else: - msg = 'cannot construct a BoolValuedVariant for "{0}" from ' - msg += "a value that does not represent a bool" - raise ValueError(msg.format(self.name)) + raise ValueError( + f'cannot construct a BoolValuedVariant for "{self.name}" from ' + "a value that does not represent a bool" + ) def __contains__(self, item: ValueType) -> bool: return item is self.value @@ -810,7 +714,7 @@ def __lt__(self, other): def prevalidate_variant_value( pkg_cls: "Type[spack.package_base.PackageBase]", - variant: AbstractVariant, + variant: VariantBase, spec: Optional["spack.spec.Spec"] = None, strict: bool = False, ) -> List[Variant]: @@ -915,7 +819,7 @@ class MultipleValuesInExclusiveVariantError(spack.error.SpecError, ValueError): only one. """ - def __init__(self, variant: AbstractVariant, pkg_name: Optional[str] = None): + def __init__(self, variant: VariantBase, pkg_name: Optional[str] = None): pkg_info = "" if pkg_name is None else f" in package '{pkg_name}'" msg = f"multiple values are not allowed for variant '{variant.name}'{pkg_info}" From 72c1d0033f1d75357acfe46752e805375edb5d29 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 3 Apr 2025 23:32:45 -0600 Subject: [PATCH 003/317] Add p4est@2.8.7 (#49859) --- var/spack/repos/builtin/packages/p4est/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index 6af937d015a..163efe3d3c8 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -20,6 +20,7 @@ class P4est(AutotoolsPackage): license("GPL-2.0-only") + version("2.8.7", sha256="0a1e912f3529999ca6d62fee335d51f24b5650b586e95a03ef39ebf73936d7f4") version("2.8", sha256="6a0586e3abac06c20e31b1018f3a82a564a6a0d9ff6b7f6c772a9e6b0f0cc5e4") version("2.3.2", sha256="076df9e5578e0e7fcfbe12e1a0b080104001f8c986ab1d5a69ec2220050df8e6") version("2.3.1", sha256="be66893b039fb3f27aca3d5d00acff42c67bfad5aa09cea9253cdd628b2bdc9a") From 65ec330af541715e720150355312c5904a3da095 Mon Sep 17 00:00:00 2001 From: Caetano Melone Date: Thu, 3 Apr 2025 23:51:48 -0700 Subject: [PATCH 004/317] fix: intel compiler alias intel-typo (#49870) This typo was causing issues when concretizing specs with "%intel" --- lib/spack/spack/aliases.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/aliases.py b/lib/spack/spack/aliases.py index c1bb644b303..ad6f6f579ff 100644 --- a/lib/spack/spack/aliases.py +++ b/lib/spack/spack/aliases.py @@ -7,7 +7,7 @@ "llvm": "clang", "intel-oneapi-compilers": "oneapi", "llvm-amdgpu": "rocmcc", - "intel-oneapi-compiler-classic": "intel", + "intel-oneapi-compilers-classic": "intel", "acfl": "arm", } @@ -15,6 +15,6 @@ "clang": "llvm", "oneapi": "intel-oneapi-compilers", "rocmcc": "llvm-amdgpu", - "intel": "intel-oneapi-compiler-classic", + "intel": "intel-oneapi-compilers-classic", "arm": "acfl", } From 522fa9dc6259a72a1822d367df5b92f3afb1e020 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 4 Apr 2025 11:13:50 +0200 Subject: [PATCH 005/317] test/variant.py: fix broken test (#49879) --- lib/spack/spack/test/variant.py | 26 +++++++------------ .../packages/variant-values/package.py | 6 ++--- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index 0af893b35e7..edf9af681fb 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -757,7 +757,7 @@ def test_concretize_variant_default_with_multiple_defs( @pytest.mark.parametrize( - "spec,variant_name,after", + "spec,variant_name,narrowed_type", [ # dev_path is a special case ("foo dev_path=/path/to/source", "dev_path", SingleValuedVariant), @@ -767,26 +767,20 @@ def test_concretize_variant_default_with_multiple_defs( ("variant-values@1.0 v=foo", "v", SingleValuedVariant), # simple, but with bool valued variant ("pkg-a bvv=true", "bvv", BoolValuedVariant), - # variant doesn't exist at version - ("variant-values@4.0 v=bar", "v", spack.spec.InvalidVariantForSpecError), - # multiple definitions, so not yet knowable - ("variant-values@2.0 v=bar", "v", VariantBase), + # takes the second definition, which overrides the single-valued one + ("variant-values@2.0 v=bar", "v", MultiValuedVariant), ], ) -def test_substitute_abstract_variants(mock_packages, spec, variant_name, after): +def test_substitute_abstract_variants_narrowing(mock_packages, spec, variant_name, narrowed_type): spec = Spec(spec) + spack.spec.substitute_abstract_variants(spec) + assert type(spec.variants[variant_name]) is narrowed_type - # all variants start out as VariantBase - assert isinstance(spec.variants[variant_name], VariantBase) - if issubclass(after, Exception): - # if we're checking for an error, use pytest.raises - with pytest.raises(after): - spack.spec.substitute_abstract_variants(spec) - else: - # ensure that the type of the variant on the spec has been narrowed (or not) - spack.spec.substitute_abstract_variants(spec) - assert isinstance(spec.variants[variant_name], after) +def test_substitute_abstract_variants_failure(mock_packages): + with pytest.raises(spack.spec.InvalidVariantForSpecError): + # variant doesn't exist at version + spack.spec.substitute_abstract_variants(Spec("variant-values@4.0 v=bar")) def test_abstract_variant_satisfies_abstract_abstract(): diff --git a/var/spack/repos/builtin.mock/packages/variant-values/package.py b/var/spack/repos/builtin.mock/packages/variant-values/package.py index f93f261d3a2..a8f0926dee0 100644 --- a/var/spack/repos/builtin.mock/packages/variant-values/package.py +++ b/var/spack/repos/builtin.mock/packages/variant-values/package.py @@ -14,9 +14,9 @@ class VariantValues(Package): version("2.0", md5="b2472aae70f542116d616e634cb3ff35") version("3.0", md5="d616e634cb3ff35b2472aae70f542116") - variant("v", default="foo", values=["foo"], when="@1.0") + variant("v", default="foo", values=["foo"], multi=False, when="@1.0") - variant("v", default="foo", values=["foo", "bar"], when="@2.0") + variant("v", default="foo", values=["foo", "bar"], multi=False, when="@2.0") # this overrides the prior definition entirely - variant("v", default="bar", values=["foo", "bar"], when="@2.0:3.0") + variant("v", default="bar", values=["foo", "bar"], multi=True, when="@2.0:3.0") From 3ea92b1983536ce86331d0b8f953a5fd4c691ae0 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 4 Apr 2025 15:31:44 +0200 Subject: [PATCH 006/317] conditional: fix value type (#49882) --- lib/spack/spack/directives.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 2cff2678a04..3036d433d9e 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -610,7 +610,7 @@ def _execute_patch( return _execute_patch -def conditional(*values: List[Any], when: Optional[WhenType] = None): +def conditional(*values: Union[str, bool], 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) From 5fda19194b33a27158c019d4ef8881ad81b06e41 Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Fri, 4 Apr 2025 09:04:47 -0600 Subject: [PATCH 007/317] vtk: fix PYTHONPATH (#49773) * Ensure PYTHONPATH is set for vtk+python * style * switch to extends --- var/spack/repos/builtin/packages/vtk/package.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index e502540ac10..c10e49b0d00 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -93,13 +93,13 @@ class Vtk(CMakePackage): # Based on PyPI wheel availability with when("+python"), default_args(type=("build", "link", "run")): - depends_on("python@:3.13") - depends_on("python@:3.12", when="@:9.3") - depends_on("python@:3.11", when="@:9.2") - depends_on("python@:3.10", when="@:9.2.2") - depends_on("python@:3.9", when="@:9.1") - depends_on("python@:3.8", when="@:9.0.1") - depends_on("python@:3.7", when="@:8.2.0") + extends("python@:3.13") + extends("python@:3.12", when="@:9.3") + extends("python@:3.11", when="@:9.2") + extends("python@:3.10", when="@:9.2.2") + extends("python@:3.9", when="@:9.1") + extends("python@:3.8", when="@:9.0.1") + extends("python@:3.7", when="@:8.2.0") # We need mpi4py if buidling python wrappers and using MPI depends_on("py-mpi4py", when="+python+mpi", type="run") From 5d913d07086853ffad851ef37a582f4f5d6db5be Mon Sep 17 00:00:00 2001 From: Thomas-Ulrich Date: Fri, 4 Apr 2025 18:41:04 +0200 Subject: [PATCH 008/317] easi: add c compiler dependence (#49877) --- var/spack/repos/builtin/packages/easi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/easi/package.py b/var/spack/repos/builtin/packages/easi/package.py index 993f5ba5bbc..34585b90d5e 100644 --- a/var/spack/repos/builtin/packages/easi/package.py +++ b/var/spack/repos/builtin/packages/easi/package.py @@ -29,6 +29,7 @@ class Easi(CMakePackage): version("1.1.2", tag="v1.1.2", commit="4c87ef3b3dca9415d116ef102cb8de750ef7e1a0") depends_on("cxx", type="build") # generated + depends_on("c", type="build", when="@1.5.0: jit=lua") depends_on("fortran", type="build") # generated variant("python", default=True, description="Install python bindings") From 5255af3981cd6d18dfd0c92f9b139eb577cc8ded Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 4 Apr 2025 13:33:09 -0400 Subject: [PATCH 009/317] go: add v1.24.2 (#49886) --- 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 6433e57d063..4eef8c697d4 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -38,6 +38,7 @@ class Go(Package): license("BSD-3-Clause") + version("1.24.2", sha256="9dc77ffadc16d837a1bf32d99c624cb4df0647cee7b119edd9e7b1bcc05f2e00") version("1.24.1", sha256="8244ebf46c65607db10222b5806aeb31c1fcf8979c1b6b12f60c677e9a3c0656") version("1.24.0", sha256="d14120614acb29d12bcab72bd689f257eb4be9e0b6f88a8fb7e41ac65f8556e5") version("1.23.7", sha256="7cfabd46b73eb4c26b19d69515dd043d7183a6559acccd5cfdb25eb6b266a458") From e6e58423aa3c41cb612b9597df3d4cfc46c1be4e Mon Sep 17 00:00:00 2001 From: Thomas-Ulrich Date: Fri, 4 Apr 2025 19:36:49 +0200 Subject: [PATCH 010/317] seissol: add v1.3.1 (#49878) * seissol: new version * split the long line * also add netcdf max version --- var/spack/repos/builtin/packages/seissol/package.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/seissol/package.py b/var/spack/repos/builtin/packages/seissol/package.py index f900ddffa2b..fcd722c86e4 100644 --- a/var/spack/repos/builtin/packages/seissol/package.py +++ b/var/spack/repos/builtin/packages/seissol/package.py @@ -13,8 +13,12 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): 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.3.1", tag="v1.3.1", commit="9d35b989749d031132c8820b45b003ecc00e985a", submodules=True + ) version( "1.3.0", tag="v1.3.0", commit="91377508af4412914d707b04481f8b678b1c4044", submodules=True ) @@ -153,8 +157,11 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): conflicts( "%intel", - when="@1.3:", - msg="The Intel compiler is unsupported from v1.3 onward. Please use e.g.gcc or oneapi", + when="@1.3.0", + msg=( + "The Intel compiler is not supported in v1.3.0. " + "Please use e.g. gcc, oneapi, or a newer SeisSol." + ), ) variant( @@ -195,7 +202,7 @@ class Seissol(CMakePackage, CudaPackage, ROCmPackage): depends_on("hdf5 +shared +threadsafe +hl +mpi") - depends_on("netcdf-c@4.6: +shared +mpi", when="+netcdf") + depends_on("netcdf-c@4.6:4.8.1 +shared +mpi", when="+netcdf") depends_on("asagi +mpi +mpi3", when="+asagi") From b2f8cd22c3dbbd459bcf82db6a582f66631c9721 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 4 Apr 2025 19:38:38 +0200 Subject: [PATCH 011/317] Update the "missing attribute in recipe" message (#49874) Multiple build systems have been part of Spack for a long time now, and they are rarely the cause of a missing attribute. Signed-off-by: Massimiliano Culpo --- lib/spack/spack/build_environment.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index fe142a213dc..bd1898ccb42 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -1189,11 +1189,9 @@ def _setup_pkg_and_run( if isinstance(e, (spack.multimethod.NoSuchMethodError, AttributeError)): process = "test the installation" if context == "test" else "build from sources" error_msg = ( - "The '{}' package cannot find an attribute while trying to {}. " - "This might be due to a change in Spack's package format " - "to support multiple build-systems for a single package. You can fix this " - "by updating the {} recipe, and you can also report the issue as a bug. " - "More information at https://spack.readthedocs.io/en/latest/packaging_guide.html#installation-procedure" + "The '{}' package cannot find an attribute while trying to {}. You can fix this " + "by updating the {} recipe, and you can also report the issue as a build-error or " + "a bug at https://github.com/spack/spack/issues" ).format(pkg.name, process, context) error_msg = colorize("@*R{{{}}}".format(error_msg)) error_msg = "{}\n\n{}".format(str(e), error_msg) From 8ab1011192c5ad45343e7fe4b9744857c539dcb7 Mon Sep 17 00:00:00 2001 From: Thomas Padioleau Date: Fri, 4 Apr 2025 20:42:56 +0200 Subject: [PATCH 012/317] kokkos-tools: add cxx language dependency (#49885) --- var/spack/repos/builtin/packages/kokkos-tools/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/kokkos-tools/package.py b/var/spack/repos/builtin/packages/kokkos-tools/package.py index f190954bbe7..c27751b3df5 100644 --- a/var/spack/repos/builtin/packages/kokkos-tools/package.py +++ b/var/spack/repos/builtin/packages/kokkos-tools/package.py @@ -18,6 +18,8 @@ class KokkosTools(CMakePackage): variant("mpi", default=False, description="Enable MPI support") variant("papi", default=False, description="Enable PAPI support") + depends_on("cxx", type="build") + depends_on("kokkos") depends_on("mpi", when="+mpi") depends_on("papi", when="+papi") From 87bbcefba9f09dfa3cc50f500ec21d7b42ffad23 Mon Sep 17 00:00:00 2001 From: Francesco Rizzi Date: Fri, 4 Apr 2025 14:56:47 -0600 Subject: [PATCH 013/317] pressio: new package (#49592) * pressio: add packages for pressio, pressio-ops, and pressio-log * pressio: use symlinks for pressio-ops/log; specify compatible versions * pressio: refactor supported versions, update pressio-ops to use main branch * pressio: update package after renaming repository to pressio-rom * pressio: remove unneeded if statement --------- Co-authored-by: Caleb Schilly --- .../builtin/packages/pressio-log/package.py | 25 ++++++++++ .../builtin/packages/pressio-ops/package.py | 25 ++++++++++ .../builtin/packages/pressio-rom/package.py | 49 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pressio-log/package.py create mode 100644 var/spack/repos/builtin/packages/pressio-ops/package.py create mode 100644 var/spack/repos/builtin/packages/pressio-rom/package.py diff --git a/var/spack/repos/builtin/packages/pressio-log/package.py b/var/spack/repos/builtin/packages/pressio-log/package.py new file mode 100644 index 00000000000..a2e3f233c64 --- /dev/null +++ b/var/spack/repos/builtin/packages/pressio-log/package.py @@ -0,0 +1,25 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PressioLog(Package): + """ + pressio-log is a header-only logging library designed + for use with Pressio repositories. + """ + + homepage = "https://github.com/Pressio/pressio-log/blob/main/README.md" + git = "https://github.com/pressio/pressio-log.git" + + license("BSD-3-Clause") + + maintainers("fnrizzi", "cwschilly") + + version("main", branch="main") + version("0.15.0", branch="0.15.0") + + def install(self, spec, prefix): + install_tree("include", prefix.include) diff --git a/var/spack/repos/builtin/packages/pressio-ops/package.py b/var/spack/repos/builtin/packages/pressio-ops/package.py new file mode 100644 index 00000000000..e662ffd1817 --- /dev/null +++ b/var/spack/repos/builtin/packages/pressio-ops/package.py @@ -0,0 +1,25 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PressioOps(Package): + """ + pressio-ops is a header-only library containing + essential operations for the Pressio ecosystem. + """ + + homepage = "https://pressio.github.io/pressio-ops" + git = "https://github.com/pressio/pressio-ops.git" + + license("BSD-3-Clause") + + maintainers("fnrizzi", "cwschilly") + + version("main", branch="main") + version("0.15.0", branch="0.15.0") + + def install(self, spec, prefix): + install_tree("include", prefix.include) diff --git a/var/spack/repos/builtin/packages/pressio-rom/package.py b/var/spack/repos/builtin/packages/pressio-rom/package.py new file mode 100644 index 00000000000..de0ce0c739f --- /dev/null +++ b/var/spack/repos/builtin/packages/pressio-rom/package.py @@ -0,0 +1,49 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os +from os.path import join as pjoin + +from spack.package import * + + +class PressioRom(Package): + """ + Pressio is an ecosystem for developing, applying and + using projection-based model reduction (pROM) methods. + A key goal is to mitigate the intrusive nature of pROMs + for large-scale codes, and providing a framework to + foster research of new ideas as well as incentivize broader + adoption and usability. + """ + + homepage = "https://pressio.github.io/pressio-rom/" + git = "https://github.com/pressio/pressio-rom.git" + + license("BSD-3-Clause") + maintainers("fnrizzi", "cwschilly") + + supported_versions = ["main", "0.15.0"] + + # For now, assume each repo is compatible only with the same version of the other repos + for supported_version in supported_versions: + version(supported_version, branch=supported_version) + depends_on(f"pressio-ops@{supported_version}", type="build", when=f"@{supported_version}") + depends_on(f"pressio-log@{supported_version}", type="build", when=f"@{supported_version}") + + def install(self, spec, prefix): + include_dir = prefix.include + install_tree("include", include_dir) + + # Add symlinks to pressio-ops headers inside main include/pressio directory + pressio_includes = pjoin(include_dir, "pressio") + ops_include = pjoin(self.spec["pressio-ops"].prefix.include, "pressio") + for item in os.listdir(ops_include): + src_item = pjoin(ops_include, item) + dest_item = pjoin(pressio_includes, item) + symlink(src_item, dest_item, target_is_directory=os.path.isdir(src_item)) + + # Add symlink to pressio-log headers in include/pressio-log + log_include = pjoin(self.spec["pressio-log"].prefix.include, "pressio-log") + symlink(log_include, pjoin(include_dir, "pressio-log"), target_is_directory=True) From 7e6a216d33b6d1c59943a41fa89ab42ddf53bd2d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 5 Apr 2025 00:48:48 +0200 Subject: [PATCH 014/317] `spack test run`: add a `--timeout` argument (#49839) * TestSuite: add type hints * spack test run: add a --timeout argument * pipelines: allow 2 minutes to run tests * Fix docstrings, increase maximum pipelines time for tests to 5 mins. * Use SIGTERM first, SIGKILL shortly after * Add unit-tests for "start_build_process" --------- Signed-off-by: Massimiliano Culpo --- lib/spack/spack/build_environment.py | 53 ++++++-- lib/spack/spack/ci/__init__.py | 38 +++--- lib/spack/spack/cmd/ci.py | 7 + lib/spack/spack/cmd/test.py | 11 +- lib/spack/spack/install_test.py | 126 +++++++----------- lib/spack/spack/package_base.py | 4 +- lib/spack/spack/test/build_environment.py | 88 ++++++++++++ .../gitlab/cloud_pipelines/configs/ci.yaml | 2 +- share/spack/spack-completion.bash | 4 +- share/spack/spack-completion.fish | 8 +- 10 files changed, 228 insertions(+), 113 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index bd1898ccb42..a8857aecea9 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -36,9 +36,11 @@ import multiprocessing import os import re +import signal import sys import traceback import types +import warnings from collections import defaultdict from enum import Flag, auto from itertools import chain @@ -1216,15 +1218,45 @@ def _setup_pkg_and_run( input_pipe.close() -def start_build_process(pkg, function, kwargs): +class BuildProcess: + def __init__(self, *, target, args) -> None: + self.p = multiprocessing.Process(target=target, args=args) + + def start(self) -> None: + self.p.start() + + def is_alive(self) -> bool: + return self.p.is_alive() + + def join(self, *, timeout: Optional[int] = None): + self.p.join(timeout=timeout) + + def terminate(self): + # Opportunity for graceful termination + self.p.terminate() + self.p.join(timeout=1) + + # If the process didn't gracefully terminate, forcefully kill + if self.p.is_alive(): + # TODO (python 3.6 removal): use self.p.kill() instead, consider removing this class + assert isinstance(self.p.pid, int), f"unexpected value for PID: {self.p.pid}" + os.kill(self.p.pid, signal.SIGKILL) + self.p.join() + + @property + def exitcode(self): + return self.p.exitcode + + +def start_build_process(pkg, function, kwargs, *, timeout: Optional[int] = None): """Create a child process to do part of a spack build. Args: pkg (spack.package_base.PackageBase): package whose environment we should set up the child process for. - function (typing.Callable): argless function to run in the child - process. + function (typing.Callable): argless function to run in the child process. + timeout: maximum time allowed to finish the execution of function Usage:: @@ -1252,14 +1284,14 @@ def child_fun(): # Forward sys.stdin when appropriate, to allow toggling verbosity if sys.platform != "win32" and sys.stdin.isatty() and hasattr(sys.stdin, "fileno"): input_fd = Connection(os.dup(sys.stdin.fileno())) - mflags = os.environ.get("MAKEFLAGS", False) - if mflags: + mflags = os.environ.get("MAKEFLAGS") + if mflags is not None: m = re.search(r"--jobserver-[^=]*=(\d),(\d)", mflags) if m: jobserver_fd1 = Connection(int(m.group(1))) jobserver_fd2 = Connection(int(m.group(2))) - p = multiprocessing.Process( + p = BuildProcess( target=_setup_pkg_and_run, args=( serialized_pkg, @@ -1293,14 +1325,17 @@ def exitcode_msg(p): typ = "exit" if p.exitcode >= 0 else "signal" return f"{typ} {abs(p.exitcode)}" + p.join(timeout=timeout) + if p.is_alive(): + warnings.warn(f"Terminating process, since the timeout of {timeout}s was exceeded") + p.terminate() + p.join() + try: child_result = read_pipe.recv() except EOFError: - p.join() raise InstallError(f"The process has stopped unexpectedly ({exitcode_msg(p)})") - p.join() - # If returns a StopPhase, raise it if isinstance(child_result, spack.error.StopPhase): # do not print diff --git a/lib/spack/spack/ci/__init__.py b/lib/spack/spack/ci/__init__.py index 244b3a527f5..a4cec793862 100644 --- a/lib/spack/spack/ci/__init__.py +++ b/lib/spack/spack/ci/__init__.py @@ -14,7 +14,7 @@ import tempfile import zipfile from collections import namedtuple -from typing import Callable, Dict, List, Set, Union +from typing import Callable, Dict, List, Optional, Set, Union from urllib.request import Request import llnl.path @@ -1294,35 +1294,34 @@ def display_broken_spec_messages(base_url, hashes): tty.msg(msg) -def run_standalone_tests(**kwargs): +def run_standalone_tests( + *, + cdash: Optional[CDashHandler] = None, + fail_fast: bool = False, + log_file: Optional[str] = None, + job_spec: Optional[spack.spec.Spec] = None, + repro_dir: Optional[str] = None, + timeout: Optional[int] = None, +): """Run stand-alone tests on the current spec. - Arguments: - kwargs (dict): dictionary of arguments used to run the tests - - List of recognized keys: - - * "cdash" (CDashHandler): (optional) cdash handler instance - * "fail_fast" (bool): (optional) terminate tests after the first failure - * "log_file" (str): (optional) test log file name if NOT CDash reporting - * "job_spec" (Spec): spec that was built - * "repro_dir" (str): reproduction directory + Args: + cdash: cdash handler instance + fail_fast: terminate tests after the first failure + log_file: test log file name if NOT CDash reporting + job_spec: spec that was built + repro_dir: reproduction directory + timeout: maximum time (in seconds) that tests are allowed to run """ - cdash = kwargs.get("cdash") - fail_fast = kwargs.get("fail_fast") - log_file = kwargs.get("log_file") - if cdash and log_file: tty.msg(f"The test log file {log_file} option is ignored with CDash reporting") log_file = None # Error out but do NOT terminate if there are missing required arguments. - job_spec = kwargs.get("job_spec") if not job_spec: tty.error("Job spec is required to run stand-alone tests") return - repro_dir = kwargs.get("repro_dir") if not repro_dir: tty.error("Reproduction directory is required for stand-alone tests") return @@ -1331,6 +1330,9 @@ def run_standalone_tests(**kwargs): if fail_fast: test_args.append("--fail-fast") + if timeout is not None: + test_args.extend(["--timeout", str(timeout)]) + if cdash: test_args.extend(cdash.args()) else: diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index 99b4c742026..e18439a97ea 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -160,6 +160,12 @@ def setup_parser(subparser): default=False, help="stop stand-alone tests after the first failure", ) + rebuild.add_argument( + "--timeout", + type=int, + default=None, + help="maximum time (in seconds) that tests are allowed to run", + ) rebuild.set_defaults(func=ci_rebuild) spack.cmd.common.arguments.add_common_arguments(rebuild, ["jobs"]) @@ -521,6 +527,7 @@ def ci_rebuild(args): fail_fast=args.fail_fast, log_file=log_file, repro_dir=repro_dir, + timeout=args.timeout, ) except Exception as err: diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index a1425bb92cb..feb3aa313ac 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -65,6 +65,12 @@ def setup_parser(subparser): run_parser.add_argument( "--help-cdash", action="store_true", help="show usage instructions for CDash reporting" ) + run_parser.add_argument( + "--timeout", + type=int, + default=None, + help="maximum time (in seconds) that tests are allowed to run", + ) cd_group = run_parser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ["clean", "dirty"]) @@ -176,7 +182,7 @@ def test_run(args): for spec in specs: matching = spack.store.STORE.db.query_local(spec, hashes=hashes, explicit=explicit) if spec and not matching: - tty.warn("No {0}installed packages match spec {1}".format(explicit_str, spec)) + tty.warn(f"No {explicit_str}installed packages match spec {spec}") # TODO: Need to write out a log message and/or CDASH Testing # output that package not installed IF continue to process @@ -192,7 +198,7 @@ def test_run(args): # test_stage_dir test_suite = spack.install_test.TestSuite(specs_to_test, args.alias) test_suite.ensure_stage() - tty.msg("Spack test %s" % test_suite.name) + tty.msg(f"Spack test {test_suite.name}") # Set up reporter setattr(args, "package", [s.format() for s in test_suite.specs]) @@ -204,6 +210,7 @@ def test_run(args): dirty=args.dirty, fail_first=args.fail_first, externals=args.externals, + timeout=args.timeout, ) diff --git a/lib/spack/spack/install_test.py b/lib/spack/spack/install_test.py index de69f75e929..d0b3b5c4b11 100644 --- a/lib/spack/spack/install_test.py +++ b/lib/spack/spack/install_test.py @@ -12,7 +12,7 @@ import shutil import sys from collections import Counter, OrderedDict -from typing import Callable, List, Optional, Tuple, Type, TypeVar, Union +from typing import Callable, Iterable, List, Optional, Tuple, Type, TypeVar, Union import llnl.util.filesystem as fs import llnl.util.tty as tty @@ -391,7 +391,7 @@ def phase_tests(self, builder, phase_name: str, method_names: List[str]): if self.test_failures: raise TestFailure(self.test_failures) - def stand_alone_tests(self, kwargs): + def stand_alone_tests(self, kwargs, timeout: Optional[int] = None) -> None: """Run the package's stand-alone tests. Args: @@ -399,7 +399,9 @@ def stand_alone_tests(self, kwargs): """ import spack.build_environment # avoid circular dependency - spack.build_environment.start_build_process(self.pkg, test_process, kwargs) + spack.build_environment.start_build_process( + self.pkg, test_process, kwargs, timeout=timeout + ) def parts(self) -> int: """The total number of (checked) test parts.""" @@ -847,7 +849,7 @@ def write_test_summary(counts: "Counter"): class TestSuite: """The class that manages specs for ``spack test run`` execution.""" - def __init__(self, specs, alias=None): + def __init__(self, specs: Iterable[Spec], alias: Optional[str] = None) -> None: # copy so that different test suites have different package objects # even if they contain the same spec self.specs = [spec.copy() for spec in specs] @@ -855,42 +857,43 @@ def __init__(self, specs, alias=None): self.current_base_spec = None # spec currently running do_test self.alias = alias - self._hash = None - self._stage = None + self._hash: Optional[str] = None + self._stage: Optional[Prefix] = None self.counts: "Counter" = Counter() @property - def name(self): + def name(self) -> str: """The name (alias or, if none, hash) of the test suite.""" return self.alias if self.alias else self.content_hash @property - def content_hash(self): + def content_hash(self) -> str: """The hash used to uniquely identify the test suite.""" if not self._hash: json_text = sjson.dump(self.to_dict()) + assert json_text is not None, f"{__name__} unexpected value for 'json_text'" sha = hashlib.sha1(json_text.encode("utf-8")) b32_hash = base64.b32encode(sha.digest()).lower() b32_hash = b32_hash.decode("utf-8") self._hash = b32_hash return self._hash - def __call__(self, *args, **kwargs): + def __call__( + self, + *, + remove_directory: bool = True, + dirty: bool = False, + fail_first: bool = False, + externals: bool = False, + timeout: Optional[int] = None, + ): self.write_reproducibility_data() - - remove_directory = kwargs.get("remove_directory", True) - dirty = kwargs.get("dirty", False) - fail_first = kwargs.get("fail_first", False) - externals = kwargs.get("externals", False) - for spec in self.specs: try: if spec.package.test_suite: raise TestSuiteSpecError( - "Package {} cannot be run in two test suites at once".format( - spec.package.name - ) + f"Package {spec.package.name} cannot be run in two test suites at once" ) # Set up the test suite to know which test is running @@ -905,7 +908,7 @@ def __call__(self, *args, **kwargs): fs.mkdirp(test_dir) # run the package tests - spec.package.do_test(dirty=dirty, externals=externals) + spec.package.do_test(dirty=dirty, externals=externals, timeout=timeout) # Clean up on success if remove_directory: @@ -956,15 +959,12 @@ def __call__(self, *args, **kwargs): if failures: raise TestSuiteFailure(failures) - def test_status(self, spec: spack.spec.Spec, externals: bool) -> Optional[TestStatus]: - """Determine the overall test results status for the spec. + def test_status(self, spec: spack.spec.Spec, externals: bool) -> TestStatus: + """Returns the overall test results status for the spec. Args: spec: instance of the spec under test externals: ``True`` if externals are to be tested, else ``False`` - - Returns: - the spec's test status if available or ``None`` """ tests_status_file = self.tested_file_for_spec(spec) if not os.path.exists(tests_status_file): @@ -981,109 +981,84 @@ def test_status(self, spec: spack.spec.Spec, externals: bool) -> Optional[TestSt value = (f.read()).strip("\n") return TestStatus(int(value)) if value else TestStatus.NO_TESTS - def ensure_stage(self): + def ensure_stage(self) -> None: """Ensure the test suite stage directory exists.""" if not os.path.exists(self.stage): fs.mkdirp(self.stage) @property - def stage(self): - """The root test suite stage directory. - - Returns: - str: the spec's test stage directory path - """ + def stage(self) -> Prefix: + """The root test suite stage directory""" if not self._stage: self._stage = Prefix(fs.join_path(get_test_stage_dir(), self.content_hash)) return self._stage @stage.setter - def stage(self, value): + def stage(self, value: Union[Prefix, str]) -> None: """Set the value of a non-default stage directory.""" self._stage = value if isinstance(value, Prefix) else Prefix(value) @property - def results_file(self): + def results_file(self) -> Prefix: """The path to the results summary file.""" return self.stage.join(results_filename) @classmethod - def test_pkg_id(cls, spec): + def test_pkg_id(cls, spec: Spec) -> str: """The standard install test package identifier. Args: spec: instance of the spec under test - - Returns: - str: the install test package identifier """ return spec.format_path("{name}-{version}-{hash:7}") @classmethod - def test_log_name(cls, spec): + def test_log_name(cls, spec: Spec) -> str: """The standard log filename for a spec. Args: - spec (spack.spec.Spec): instance of the spec under test - - Returns: - str: the spec's log filename + spec: instance of the spec under test """ - return "%s-test-out.txt" % cls.test_pkg_id(spec) + return f"{cls.test_pkg_id(spec)}-test-out.txt" - def log_file_for_spec(self, spec): + def log_file_for_spec(self, spec: Spec) -> Prefix: """The test log file path for the provided spec. Args: - spec (spack.spec.Spec): instance of the spec under test - - Returns: - str: the path to the spec's log file + spec: instance of the spec under test """ return self.stage.join(self.test_log_name(spec)) - def test_dir_for_spec(self, spec): + def test_dir_for_spec(self, spec: Spec) -> Prefix: """The path to the test stage directory for the provided spec. Args: - spec (spack.spec.Spec): instance of the spec under test - - Returns: - str: the spec's test stage directory path + spec: instance of the spec under test """ return Prefix(self.stage.join(self.test_pkg_id(spec))) @classmethod - def tested_file_name(cls, spec): + def tested_file_name(cls, spec: Spec) -> str: """The standard test status filename for the spec. Args: - spec (spack.spec.Spec): instance of the spec under test - - Returns: - str: the spec's test status filename + spec: instance of the spec under test """ return "%s-tested.txt" % cls.test_pkg_id(spec) - def tested_file_for_spec(self, spec): + def tested_file_for_spec(self, spec: Spec) -> str: """The test status file path for the spec. Args: - spec (spack.spec.Spec): instance of the spec under test - - Returns: - str: the spec's test status file path + spec: instance of the spec under test """ return fs.join_path(self.stage, self.tested_file_name(spec)) @property - def current_test_cache_dir(self): + def current_test_cache_dir(self) -> str: """Path to the test stage directory where the current spec's cached build-time files were automatically copied. - Returns: - str: path to the current spec's staged, cached build-time files. - Raises: TestSuiteSpecError: If there is no spec being tested """ @@ -1095,13 +1070,10 @@ def current_test_cache_dir(self): return self.test_dir_for_spec(base_spec).cache.join(test_spec.name) @property - def current_test_data_dir(self): + def current_test_data_dir(self) -> str: """Path to the test stage directory where the current spec's custom package (data) files were automatically copied. - Returns: - str: path to the current spec's staged, custom package (data) files - Raises: TestSuiteSpecError: If there is no spec being tested """ @@ -1112,17 +1084,17 @@ def current_test_data_dir(self): base_spec = self.current_base_spec return self.test_dir_for_spec(base_spec).data.join(test_spec.name) - def write_test_result(self, spec, result): + def write_test_result(self, spec: Spec, result: TestStatus) -> None: """Write the spec's test result to the test suite results file. Args: - spec (spack.spec.Spec): instance of the spec under test - result (str): result from the spec's test execution (e.g, PASSED) + spec: instance of the spec under test + result: result from the spec's test execution (e.g, PASSED) """ msg = f"{self.test_pkg_id(spec)} {result}" _add_msg_to_file(self.results_file, msg) - def write_reproducibility_data(self): + def write_reproducibility_data(self) -> None: for spec in self.specs: repo_cache_path = self.stage.repo.join(spec.name) spack.repo.PATH.dump_provenance(spec, repo_cache_path) @@ -1167,12 +1139,12 @@ def from_dict(d): return TestSuite(specs, alias) @staticmethod - def from_file(filename): + def from_file(filename: str) -> "TestSuite": """Instantiate a TestSuite using the specs and optional alias provided in the given file. Args: - filename (str): The path to the JSON file containing the test + filename: The path to the JSON file containing the test suite specs and optional alias. Raises: diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 4fa398e582b..d5b803b903f 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -1821,7 +1821,7 @@ def _resource_stage(self, resource): resource_stage_folder = "-".join(pieces) return resource_stage_folder - def do_test(self, dirty=False, externals=False): + def do_test(self, *, dirty=False, externals=False, timeout: Optional[int] = None): if self.test_requires_compiler and not any( lang in self.spec for lang in ("c", "cxx", "fortran") ): @@ -1839,7 +1839,7 @@ def do_test(self, dirty=False, externals=False): "verbose": tty.is_verbose(), } - self.tester.stand_alone_tests(kwargs) + self.tester.stand_alone_tests(kwargs, timeout=timeout) def unit_test_check(self): """Hook for unit tests to assert things about package internals. diff --git a/lib/spack/spack/test/build_environment.py b/lib/spack/spack/test/build_environment.py index db76cd0cabd..9da886cb0bb 100644 --- a/lib/spack/spack/test/build_environment.py +++ b/lib/spack/spack/test/build_environment.py @@ -1,9 +1,12 @@ # Copyright Spack Project Developers. See COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import collections +import multiprocessing import os import posixpath import sys +from typing import Dict, Optional, Tuple import pytest @@ -828,3 +831,88 @@ def test_extra_rpaths_is_set( assert os.environ["SPACK_COMPILER_EXTRA_RPATHS"] == expected_rpaths else: assert "SPACK_COMPILER_EXTRA_RPATHS" not in os.environ + + +class _TestProcess: + calls: Dict[str, int] = collections.defaultdict(int) + terminated = False + runtime = 0 + + def __init__(self, *, target, args): + self.alive = None + self.exitcode = 0 + self._reset() + + def start(self): + self.calls["start"] += 1 + self.alive = True + + def is_alive(self): + self.calls["is_alive"] += 1 + return self.alive + + def join(self, timeout: Optional[int] = None): + self.calls["join"] += 1 + if timeout is not None and timeout > self.runtime: + self.alive = False + + def terminate(self): + self.calls["terminate"] += 1 + self._set_terminated() + self.alive = False + + @classmethod + def _set_terminated(cls): + cls.terminated = True + + @classmethod + def _reset(cls): + cls.calls.clear() + cls.terminated = False + + +class _TestPipe: + def close(self): + pass + + def recv(self): + if _TestProcess.terminated is True: + return 1 + return 0 + + +def _pipe_fn(*, duplex: bool = False) -> Tuple[_TestPipe, _TestPipe]: + return _TestPipe(), _TestPipe() + + +@pytest.fixture() +def mock_build_process(monkeypatch): + monkeypatch.setattr(spack.build_environment, "BuildProcess", _TestProcess) + monkeypatch.setattr(multiprocessing, "Pipe", _pipe_fn) + + def _factory(*, runtime: int): + _TestProcess.runtime = runtime + + return _factory + + +@pytest.mark.parametrize( + "runtime,timeout,expected_result,expected_calls", + [ + # execution time < timeout + (2, 5, 0, {"start": 1, "join": 1, "is_alive": 1}), + # execution time > timeout + (5, 2, 1, {"start": 1, "join": 2, "is_alive": 1, "terminate": 1}), + ], +) +def test_build_process_timeout( + mock_build_process, runtime, timeout, expected_result, expected_calls +): + """Tests that we make the correct function calls in different timeout scenarios.""" + mock_build_process(runtime=runtime) + result = spack.build_environment.start_build_process( + pkg=None, function=None, kwargs={}, timeout=timeout + ) + + assert result == expected_result + assert _TestProcess.calls == expected_calls diff --git a/share/spack/gitlab/cloud_pipelines/configs/ci.yaml b/share/spack/gitlab/cloud_pipelines/configs/ci.yaml index 3e81461e48d..e67ffdcda89 100644 --- a/share/spack/gitlab/cloud_pipelines/configs/ci.yaml +++ b/share/spack/gitlab/cloud_pipelines/configs/ci.yaml @@ -22,7 +22,7 @@ ci: script:: - - if [ -n "$SPACK_EXTRA_MIRROR" ]; then spack mirror add local "${SPACK_EXTRA_MIRROR}/${SPACK_CI_STACK_NAME}"; fi - spack config blame mirrors - - - spack --color=always --backtrace ci rebuild -j ${SPACK_BUILD_JOBS} --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) + - - spack --color=always --backtrace ci rebuild -j ${SPACK_BUILD_JOBS} --tests --timeout 300 > >(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 diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index f2a3c7be1dc..65d276b9743 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -700,7 +700,7 @@ _spack_ci_rebuild_index() { } _spack_ci_rebuild() { - SPACK_COMPREPLY="-h --help -t --tests --fail-fast -j --jobs" + SPACK_COMPREPLY="-h --help -t --tests --fail-fast --timeout -j --jobs" } _spack_ci_reproduce_build() { @@ -1903,7 +1903,7 @@ _spack_test() { _spack_test_run() { if $list_options then - SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --externals -x --explicit --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --clean --dirty" + SPACK_COMPREPLY="-h --help --alias --fail-fast --fail-first --externals -x --explicit --keep-stage --log-format --log-file --cdash-upload-url --cdash-build --cdash-site --cdash-track --cdash-buildstamp --help-cdash --timeout --clean --dirty" else _installed_packages fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index b4d4f7932b7..0a6c986757f 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -989,13 +989,15 @@ complete -c spack -n '__fish_spack_using_command ci rebuild-index' -s h -l help complete -c spack -n '__fish_spack_using_command ci rebuild-index' -s h -l help -d 'show this help message and exit' # spack ci rebuild -set -g __fish_spack_optspecs_spack_ci_rebuild h/help t/tests fail-fast j/jobs= +set -g __fish_spack_optspecs_spack_ci_rebuild h/help t/tests fail-fast timeout= j/jobs= complete -c spack -n '__fish_spack_using_command ci rebuild' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command ci rebuild' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command ci rebuild' -s t -l tests -f -a tests complete -c spack -n '__fish_spack_using_command ci rebuild' -s t -l tests -d 'run stand-alone tests after the build' complete -c spack -n '__fish_spack_using_command ci rebuild' -l fail-fast -f -a fail_fast complete -c spack -n '__fish_spack_using_command ci rebuild' -l fail-fast -d 'stop stand-alone tests after the first failure' +complete -c spack -n '__fish_spack_using_command ci rebuild' -l timeout -r -f -a timeout +complete -c spack -n '__fish_spack_using_command ci rebuild' -l timeout -r -d 'maximum time (in seconds) that tests are allowed to run' complete -c spack -n '__fish_spack_using_command ci rebuild' -s j -l jobs -r -f -a jobs complete -c spack -n '__fish_spack_using_command ci rebuild' -s j -l jobs -r -d 'explicitly set number of parallel jobs' @@ -2950,7 +2952,7 @@ complete -c spack -n '__fish_spack_using_command test' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command test' -s h -l help -d 'show this help message and exit' # spack test run -set -g __fish_spack_optspecs_spack_test_run h/help alias= fail-fast fail-first externals x/explicit keep-stage log-format= log-file= cdash-upload-url= cdash-build= cdash-site= cdash-track= cdash-buildstamp= help-cdash clean dirty +set -g __fish_spack_optspecs_spack_test_run h/help alias= fail-fast fail-first externals x/explicit keep-stage log-format= log-file= cdash-upload-url= cdash-build= cdash-site= cdash-track= cdash-buildstamp= help-cdash timeout= clean dirty complete -c spack -n '__fish_spack_using_command_pos_remainder 0 test run' -f -a '(__fish_spack_installed_specs)' complete -c spack -n '__fish_spack_using_command test run' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command test run' -s h -l help -d 'show this help message and exit' @@ -2977,6 +2979,8 @@ complete -c spack -n '__fish_spack_using_command test run' -l cdash-track -r -f complete -c spack -n '__fish_spack_using_command test run' -l cdash-buildstamp -r -f -a cdash_buildstamp complete -c spack -n '__fish_spack_using_command test run' -l help-cdash -f -a help_cdash complete -c spack -n '__fish_spack_using_command test run' -l help-cdash -d 'show usage instructions for CDash reporting' +complete -c spack -n '__fish_spack_using_command test run' -l timeout -r -f -a timeout +complete -c spack -n '__fish_spack_using_command test run' -l timeout -r -d 'maximum time (in seconds) that tests are allowed to run' complete -c spack -n '__fish_spack_using_command test run' -l clean -f -a dirty complete -c spack -n '__fish_spack_using_command test run' -l clean -d 'unset harmful variables in the build environment (default)' complete -c spack -n '__fish_spack_using_command test run' -l dirty -f -a dirty From 2f4c5f2aa29c381337236289c3e2f8a1a6742155 Mon Sep 17 00:00:00 2001 From: Peter Brady Date: Fri, 4 Apr 2025 16:58:00 -0600 Subject: [PATCH 015/317] libffi: add v3.4.7 (#49887) * update libffi to 3.4.7 * Add conflict for libffi/apple-clang --------- Co-authored-by: pbrady --- var/spack/repos/builtin/packages/libffi/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index a4db1aa30db..e92f441274e 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -16,6 +16,7 @@ class Libffi(AutotoolsPackage): license("MIT") + version("3.4.7", sha256="138607dee268bdecf374adf9144c00e839e38541f75f24a1fcf18b78fda48b2d") version("3.4.6", sha256="b0dea9df23c863a7a50e825440f3ebffabd65df1497108e5d437747843895a4e") version("3.4.5", sha256="96fff4e589e3b239d888d9aa44b3ff30693c2ba1617f953925a70ddebcc102b2") version("3.4.4", sha256="d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676") @@ -44,6 +45,10 @@ class Libffi(AutotoolsPackage): when="@3.4.3:3.4.4", ) + conflicts( + "%apple-clang@17.0.0", when="@:3.4.6", msg="Newer libffi required for Apple Clang 17.0.0" + ) + @property def headers(self): # The headers are probably in self.prefix.lib but we search everywhere From 924204828edac45fb58d8956ef3d76de9d43307f Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Fri, 4 Apr 2025 20:43:01 -0400 Subject: [PATCH 016/317] libxml2 package: add CMake builder; add version 2.13.5 (#47878) --- .../repos/builtin/packages/libxml2/package.py | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 898eb946c4d..7d0717867a3 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -5,11 +5,11 @@ import llnl.util.filesystem as fs -from spack.build_systems import autotools, nmake +from spack.build_systems import autotools, cmake, nmake from spack.package import * -class Libxml2(AutotoolsPackage, NMakePackage): +class Libxml2(AutotoolsPackage, CMakePackage, NMakePackage): """Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), it is free software available under the MIT License.""" @@ -106,7 +106,12 @@ def url_for_version(self, version): sha256="5dc43fed02b443d2563a502a52caafe39477c06fc30b70f786d5ed3eb5aea88d", when="@2.9.11:2.9.14", ) - build_system(conditional("nmake", when="platform=windows"), "autotools", default="autotools") + build_system( + conditional("nmake", when="platform=windows"), + conditional("cmake", when="@2.11:"), + "autotools", + default="autotools", + ) def flag_handler(self, name, flags): if name == "cflags" and self.spec.satisfies("+pic"): @@ -262,6 +267,18 @@ def configure_args(self): return args +class CMakeBuilder(AnyBuilder, cmake.CMakeBuilder): + def cmake_args(self): + args = [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("LIBXML2_WITH_PYTHON", "python"), + self.define("LIBXML2_WITH_LZMA", True), + self.define("LIBXML2_WITH_ZLIB", True), + self.define("LIBXML2_WITH_TESTS", True), + ] + return args + + class NMakeBuilder(AnyBuilder, nmake.NMakeBuilder): phases = ("configure", "build", "install") From f8524f9d5ed10bc906517872acf9a767ec406b8a Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Fri, 4 Apr 2025 20:58:05 -0400 Subject: [PATCH 017/317] libpng package: find correct zlib library on Windows (#49034) This explicitly specifies the correct library for zlib to CMake: CMake's find zlib looks for zlib before zdll. On Windows, zlib is the static lib, and zdll the import library. LibPNG only links to shared zlib, but was getting zlib from CMake on Windows, which was resulting in a linker failure. --- var/spack/repos/builtin/packages/libpng/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index 04b07110d34..a8d2137694e 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -62,6 +62,9 @@ def cmake_args(self): self.define("PNG_STATIC", "static" in self.spec.variants["libs"].value), self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), ] + zlib_lib = self.spec["zlib-api"].libs + if zlib_lib: + args.append(self.define("ZLIB_LIBRARY", zlib_lib[0])) if self.spec.satisfies("platform=darwin target=aarch64:"): args.append("-DPNG_ARM_NEON=off") return args From d00b05b71e0ab55304f1cc1c46ff4c338861a690 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 4 Apr 2025 21:08:40 -0400 Subject: [PATCH 018/317] ci: decrease style checks setup time (#49888) * ci: test speeding up style * Combine pylint check with existing style checks to reduce overhead --- .github/workflows/prechecks.yml | 39 +++++-------------- .../requirements/style/requirements.txt | 1 + 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/.github/workflows/prechecks.yml b/.github/workflows/prechecks.yml index 7da6a97fd3d..958f66e2fea 100644 --- a/.github/workflows/prechecks.yml +++ b/.github/workflows/prechecks.yml @@ -25,14 +25,16 @@ jobs: with: python-version: '3.13' cache: 'pip' + cache-dependency-path: '.github/workflows/requirements/style/requirements.txt' - name: Install Python Packages run: | - pip install --upgrade pip setuptools pip install -r .github/workflows/requirements/style/requirements.txt - name: vermin (Spack's Core) - run: vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv lib/spack/spack/ lib/spack/llnl/ bin/ + run: | + vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv lib/spack/spack/ lib/spack/llnl/ bin/ - name: vermin (Repositories) - run: vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv var/spack/repos + run: | + vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv var/spack/repos # Run style checks on the files that have been changed style: @@ -40,23 +42,20 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: - fetch-depth: 0 + fetch-depth: 2 - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.13' cache: 'pip' + cache-dependency-path: '.github/workflows/requirements/style/requirements.txt' - name: Install Python packages run: | - pip install --upgrade pip setuptools pip install -r .github/workflows/requirements/style/requirements.txt - - name: Setup git configuration - run: | - # Need this for the git tests to succeed. - git --version - . .github/workflows/bin/setup_git.sh - name: Run style tests run: | - share/spack/qa/run-style-tests + bin/spack style --base HEAD^1 + bin/spack license verify + pylint -j $(nproc) --disable=all --enable=unspecified-encoding --ignore-paths=lib/spack/external lib audit: uses: ./.github/workflows/audit.yaml @@ -103,21 +102,3 @@ jobs: spack -d bootstrap now --dev spack -d style -t black spack unit-test -V - - # Further style checks from pylint - pylint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.13' - cache: 'pip' - - name: Install Python packages - run: | - pip install --upgrade pip setuptools pylint - - name: Pylint (Spack Core) - run: | - pylint -j 4 --disable=all --enable=unspecified-encoding --ignore-paths=lib/spack/external lib diff --git a/.github/workflows/requirements/style/requirements.txt b/.github/workflows/requirements/style/requirements.txt index 0b85db9a4b9..fdbb0046637 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -5,3 +5,4 @@ isort==6.0.1 mypy==1.15.0 types-six==1.17.0.20250304 vermin==1.6.0 +pylint==3.3.6 From ff82ba24e91177092fa5263ed6be85b423ea4925 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 4 Apr 2025 23:29:29 -0600 Subject: [PATCH 019/317] kokkos: allow using new gfx942_apu arch (#48609) Add an apu variant that promotes GPU architectures to their APU equivalent. Right now this is just gfx942 -> gfx942_apu. --- .../repos/builtin/packages/kokkos/package.py | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 534422a97bf..b27408413b4 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -271,16 +271,26 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): "gfx1030": "navi1030", "gfx1100": "navi1100", } + amdgpu_apu_arch_map = {"gfx942": "amd_gfx942_apu"} amd_support_conflict_msg = ( "{0} is not supported; " "Kokkos supports the following AMD GPU targets: " + ", ".join(amdgpu_arch_map.keys()) ) + amd_apu_support_conflict_msg = ( + "{0} is not supported; " + "Kokkos supports the following AMD GPU targets with unified memory: " + + ", ".join(amdgpu_apu_arch_map.keys()) + ) for arch in ROCmPackage.amdgpu_targets: if arch not in amdgpu_arch_map: conflicts( - "+rocm", - when="amdgpu_target={0}".format(arch), - msg=amd_support_conflict_msg.format(arch), + "+rocm", when=f"amdgpu_target={arch}", msg=amd_support_conflict_msg.format(arch) + ) + if arch not in amdgpu_apu_arch_map: + conflicts( + "+rocm+apu", + when=f"amdgpu_target={arch}", + msg=amd_apu_support_conflict_msg.format(arch), ) intel_gpu_arches = ( @@ -298,6 +308,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): values=("none",) + intel_gpu_arches, description="Intel GPU architecture", ) + variant("apu", default=False, description="Enable APU support", when="@4.5: +rocm") for dev, (dflt, desc) in devices_variants.items(): variant(dev, default=dflt, description=desc) @@ -456,7 +467,10 @@ def cmake_args(self): for amdgpu_target in spec.variants["amdgpu_target"].value: if amdgpu_target != "none": if amdgpu_target in self.amdgpu_arch_map: - spack_microarches.append(self.amdgpu_arch_map[amdgpu_target]) + if spec.satisfies("+apu") and amdgpu_target in self.amdgpu_apu_arch_map: + spack_microarches.append(self.amdgpu_apu_arch_map[amdgpu_target]) + else: + spack_microarches.append(self.amdgpu_arch_map[amdgpu_target]) else: # Note that conflict declarations should prevent # choosing an unsupported AMD GPU target From 320c758fea1318a2e50549c32c5f1cc32ce9e371 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Sat, 5 Apr 2025 10:42:19 -0600 Subject: [PATCH 020/317] legion: extend slingshot11 support (#49713) - allow conduit=ofi-slingshot11 to work with regular OpenMPI and MPICH when they are built with ^libfabric fabrics=cxi. - add missing libfabric dependency for conduit=ofi-slingshot11. Embedded GASNet build uses PATH to detect libfabric installation. --- var/spack/repos/builtin/packages/legion/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 174a5e35c42..41917ecc92d 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -129,6 +129,7 @@ class Legion(CMakePackage, ROCmPackage): depends_on("hip@5.1:", when="+rocm") depends_on("hdf5", when="+hdf5") depends_on("hwloc", when="+hwloc") + depends_on("libfabric", when="network=gasnet conduit=ofi-slingshot11") # cuda-centric cuda_arch_list = CudaPackage.cuda_arch_values @@ -150,8 +151,10 @@ class Legion(CMakePackage, ROCmPackage): patch("hip-offload-arch.patch", when="@23.03.0 +rocm") def patch(self): - if self.spec.satisfies( - "network=gasnet conduit=ofi-slingshot11 ^[virtuals=mpi] cray-mpich+wrappers" + if self.spec.satisfies("network=gasnet conduit=ofi-slingshot11") and ( + self.spec.satisfies("^[virtuals=mpi] cray-mpich+wrappers") + or self.spec.satisfies("^[virtuals=mpi] mpich netmod=ofi ^libfabric fabrics=cxi") + or self.spec.satisfies("^[virtuals=mpi] openmpi fabrics=ofi ^libfabric fabrics=cxi") ): filter_file( r"--with-mpi-cc=cc", From dd55635fae070a163f2010ffb7842de566021f86 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 6 Apr 2025 00:14:31 -0500 Subject: [PATCH 021/317] py-mplhep: add thru v0.3.59 (#49909) --- var/spack/repos/builtin/packages/py-mplhep/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-mplhep/package.py b/var/spack/repos/builtin/packages/py-mplhep/package.py index af2b4139d31..9b41a686d38 100644 --- a/var/spack/repos/builtin/packages/py-mplhep/package.py +++ b/var/spack/repos/builtin/packages/py-mplhep/package.py @@ -13,6 +13,10 @@ class PyMplhep(PythonPackage): license("MIT", checked_by="wdconinc") + version("0.3.59", sha256="06f4b3a799e92fe6982ed3939dd648d0f972781aca3dc814a83e5bbd970649fe") + version("0.3.58", sha256="fed8b5d5fee92c7aa40cfe70e5b8d2b2bb8ed7aeb7a2c272d73b241279e1adba") + version("0.3.57", sha256="3b04a91f75889e31c0d7a5e520dd092f2fd29fb6000418c26cf4e497cc977541") + version("0.3.56", sha256="2e773a65a233d186071b81d5faeadd340b768e9bd8825b40bd20c81a419d25f2") version("0.3.55", sha256="0fb87cd4b025225ba8fd5d82d58324cfb094fbcdd7929e5a9ea1ea7e22108814") version("0.3.26", sha256="d707a95ce59b0bac2fe4fe1c57fede14e15da639f3a7c732e7513a753fd9e9ac") version("0.3.15", sha256="595f796ea65930094e86a805214e0d44537ead267a7487ae16eda02d1670653e") From da760a898e2b830119af594b95ba176be13c2323 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 6 Apr 2025 00:17:05 -0500 Subject: [PATCH 022/317] py-paramiko: add v3.5.1 (#49908) --- var/spack/repos/builtin/packages/py-paramiko/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-paramiko/package.py b/var/spack/repos/builtin/packages/py-paramiko/package.py index 7a3474127ea..a6743de82a5 100644 --- a/var/spack/repos/builtin/packages/py-paramiko/package.py +++ b/var/spack/repos/builtin/packages/py-paramiko/package.py @@ -13,6 +13,7 @@ class PyParamiko(PythonPackage): license("LGPL-2.1-or-later") + version("3.5.1", sha256="b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822") version("3.5.0", sha256="ad11e540da4f55cedda52931f1a3f812a8238a7af7f62a60de538cd80bb28124") version("3.4.1", sha256="8b15302870af7f6652f2e038975c1d2973f06046cb5d7d65355668b3ecbece0c") version("3.4.0", sha256="aac08f26a31dc4dffd92821527d1682d99d52f9ef6851968114a8728f3c274d3") From 5cd5fcdd7f3d2330b0da1099c6cb32bbe877831f Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 6 Apr 2025 00:18:12 -0500 Subject: [PATCH 023/317] xtrans: add v1.6.0 (#49906) --- 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 68fc5ac6e93..9c687d7a3a4 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -18,6 +18,7 @@ class Xtrans(AutotoolsPackage, XorgPackage): maintainers("wdconinc") + version("1.6.0", sha256="936b74c60b19c317c3f3cb1b114575032528dbdaf428740483200ea874c2ca0a") version("1.5.2", sha256="23031301f10fef5eaa55b438610fbd29294a70d2fa189355343bf0186bff8374") version("1.5.0", sha256="a806f8a92f879dcd0146f3f1153fdffe845f2fc0df9b1a26c19312b7b0a29c86") version("1.4.0", sha256="48ed850ce772fef1b44ca23639b0a57e38884045ed2cbb18ab137ef33ec713f9") From 8f93ea80fd5b1cc7857a13460c74d6900c65bc0a Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Sun, 6 Apr 2025 07:26:11 +0200 Subject: [PATCH 024/317] util-linux-uuid: add v2.41 (#49900) --- var/spack/repos/builtin/packages/util-linux-uuid/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/util-linux-uuid/package.py b/var/spack/repos/builtin/packages/util-linux-uuid/package.py index 7287e649ac3..861e46c6c5a 100644 --- a/var/spack/repos/builtin/packages/util-linux-uuid/package.py +++ b/var/spack/repos/builtin/packages/util-linux-uuid/package.py @@ -17,6 +17,7 @@ class UtilLinuxUuid(AutotoolsPackage): license("BSD-3-Clause", checked_by="wdconinc") + version("2.41", sha256="c014b5861695b603d0be2ad1e6f10d5838b9d7859e1dd72d01504556817d8a87") version("2.40.4", sha256="5b3b1435c02ba201ebaa5066bb391965a614b61721155dfb7f7b6569e95b0627") version("2.40.3", sha256="6d72589a24b7feccdf8db20336bb984f64c7cfc2ceb044ef01cac5dce480284e") version("2.40.2", sha256="7bec316b713a14c6be1a5721aa0e56a3b6170277329e6e1f1a56013cc91eece0") From 03b0d299f9fe1c69b7e873461324bdea754c6c54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 22:30:35 -0700 Subject: [PATCH 025/317] build(deps): bump types-six in /.github/workflows/requirements/style (#49869) Bumps [types-six](https://github.com/typeshed-internal/stub_uploader) from 1.17.0.20250304 to 1.17.0.20250403. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-six dependency-version: 1.17.0.20250403 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 fdbb0046637..fd008b01599 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -3,6 +3,6 @@ clingo==5.7.1 flake8==7.2.0 isort==6.0.1 mypy==1.15.0 -types-six==1.17.0.20250304 +types-six==1.17.0.20250403 vermin==1.6.0 pylint==3.3.6 From fb2cca4e1e50299772ba5bdbf10cc8fdbb061126 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Apr 2025 22:31:31 -0700 Subject: [PATCH 026/317] build(deps): bump clingo in /.github/workflows/requirements/style (#49868) Bumps [clingo](https://github.com/potassco/clingo) from 5.7.1 to 5.8.0. - [Release notes](https://github.com/potassco/clingo/releases) - [Changelog](https://github.com/potassco/clingo/blob/master/CHANGES.md) - [Commits](https://github.com/potassco/clingo/compare/v5.7.1...v5.8.0) --- updated-dependencies: - dependency-name: clingo dependency-version: 5.8.0 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 fd008b01599..aae430c83eb 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -1,5 +1,5 @@ black==25.1.0 -clingo==5.7.1 +clingo==5.8.0 flake8==7.2.0 isort==6.0.1 mypy==1.15.0 From 2cb140f9a8336006c2265adb470b89c05e9b1e88 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Sun, 6 Apr 2025 00:31:54 -0500 Subject: [PATCH 027/317] py-maturin: add v1.8.3 (#49910) --- var/spack/repos/builtin/packages/py-maturin/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-maturin/package.py b/var/spack/repos/builtin/packages/py-maturin/package.py index 12a23478f4f..80a777ada3e 100644 --- a/var/spack/repos/builtin/packages/py-maturin/package.py +++ b/var/spack/repos/builtin/packages/py-maturin/package.py @@ -17,6 +17,7 @@ class PyMaturin(PythonPackage): license("Apache-2.0") + version("1.8.3", sha256="304762f86fd53a8031b1bf006d12572a2aa0a5235485031113195cc0152e1e12") version("1.8.2", sha256="e31abc70f6f93285d6e63d2f4459c079c94c259dd757370482d2d4ceb9ec1fa0") version("1.6.0", sha256="b955025c24c8babc808db49e0ff90db8b4b1320dcc16b14eb26132841737230d") version("1.5.1", sha256="3dd834ece80edb866af18cbd4635e0ecac40139c726428d5f1849ae154b26dca") From 440ae973d1e2ef81c74933c4201fbb3cbe8a1646 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Sun, 6 Apr 2025 00:22:53 -0600 Subject: [PATCH 028/317] flux-sched: add v0.44.0 (#49894) * Automated deployment to update package flux-sched 2025-04-04 * depends on c/cxx... order matters! * Empty space --------- 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 0947f4e263c..4dbab624bfb 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -22,6 +22,7 @@ class FluxSched(CMakePackage, AutotoolsPackage): license("LGPL-3.0-only") version("master", branch="master") + version("0.44.0", sha256="a2b71a0c5fb51a89d32cff9eca2fc7c275a7a1a81746bea8d00b4c1868af366e") version("0.43.0", sha256="0d9f6b88f99270fa84094b144a35bd6075adf92b9ec5c7f7f60fceffa668c996") version("0.42.2", sha256="3a4a513c6539f2927e7a544f431e97456e50c71b63f8744d31e0dee3dc7fcc2e") version("0.42.1", sha256="ab56b257e4918ad7e26ef6a375d0ea500a4929bf6633937f0c11c06e21db56b9") From 8fbe1ad941bb1c4153a84f0c899e47c97f8d5bf2 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 03:38:54 -0500 Subject: [PATCH 029/317] libarchive: add thru v3.7.9 (#49932) --- var/spack/repos/builtin/packages/libarchive/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index abe3b301c06..225abbc9a45 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -16,6 +16,9 @@ class Libarchive(AutotoolsPackage): license("BSD-2-Clause AND BSD-3-Clause AND Public-Domain") + version("3.7.9", sha256="aa90732c5a6bdda52fda2ad468ac98d75be981c15dde263d7b5cf6af66fd009f") + version("3.7.8", sha256="a123d87b1bd8adb19e8c187da17ae2d957c7f9596e741b929e6b9ceefea5ad0f") + version("3.7.7", sha256="4cc540a3e9a1eebdefa1045d2e4184831100667e6d7d5b315bb1cbc951f8ddff") version("3.7.6", sha256="b4071807367b15b72777c2eaac80f42c8ea2d20212ab279514a19fe1f6f96ef4") version("3.7.5", sha256="37556113fe44d77a7988f1ef88bf86ab68f53d11e85066ffd3c70157cc5110f1") @@ -131,6 +134,7 @@ class Libarchive(AutotoolsPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + depends_on("pkgconfig", type="build") depends_on("bzip2", when="compression=bz2lib") depends_on("lz4", when="compression=lz4") From d1b7cc9b5eb3405fd2b9427a5052d383fe27a3fe Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 03:39:12 -0500 Subject: [PATCH 030/317] zlib-ng: add v2.2.4 (#49905) --- var/spack/repos/builtin/packages/zlib-ng/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/zlib-ng/package.py b/var/spack/repos/builtin/packages/zlib-ng/package.py index b143fbbec06..ff9cc7b7d13 100644 --- a/var/spack/repos/builtin/packages/zlib-ng/package.py +++ b/var/spack/repos/builtin/packages/zlib-ng/package.py @@ -19,6 +19,7 @@ class ZlibNg(AutotoolsPackage, CMakePackage): license("Zlib") + version("2.2.4", sha256="a73343c3093e5cdc50d9377997c3815b878fd110bf6511c2c7759f2afb90f5a3") version("2.2.3", sha256="f2fb245c35082fe9ea7a22b332730f63cf1d42f04d84fe48294207d033cba4dd") version("2.2.2", sha256="fcb41dd59a3f17002aeb1bb21f04696c9b721404890bb945c5ab39d2cb69654c") version("2.2.1", sha256="ec6a76169d4214e2e8b737e0850ba4acb806c69eeace6240ed4481b9f5c57cdf") From dcf2c8744af163d76c7d8e1caf8eac1f57449777 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 03:39:50 -0500 Subject: [PATCH 031/317] zstd: add v1.5.7 (#49904) --- var/spack/repos/builtin/packages/zstd/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py index 6835b0604ec..a5826d42987 100644 --- a/var/spack/repos/builtin/packages/zstd/package.py +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -23,6 +23,7 @@ class Zstd(CMakePackage, MakefilePackage): license("BSD-3-Clause OR GPL-2.0-or-later") version("develop", branch="dev") + version("1.5.7", sha256="37d7284556b20954e56e1ca85b80226768902e2edabd3b649e9e72c0c9012ee3") version("1.5.6", sha256="30f35f71c1203369dc979ecde0400ffea93c27391bfd2ac5a9715d2173d92ff7") version("1.5.5", sha256="98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1") version("1.5.4", sha256="35ad983197f8f8eb0c963877bf8be50490a0b3df54b4edeb8399ba8a8b2f60a4") From 625a4b854c7cf780b62ec6f6253172ff30ba1f5e Mon Sep 17 00:00:00 2001 From: Rocco Meli Date: Mon, 7 Apr 2025 11:42:33 +0200 Subject: [PATCH 032/317] greenx: new package (#49646) * greenx * [@spackbot] updating style on behalf of RMeli * split desc * license * Update var/spack/repos/builtin/packages/greenx/package.py Co-authored-by: Alberto Invernizzi <9337627+albestro@users.noreply.github.com> --------- Co-authored-by: RMeli Co-authored-by: Alberto Invernizzi <9337627+albestro@users.noreply.github.com> --- .../repos/builtin/packages/greenx/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/greenx/package.py diff --git a/var/spack/repos/builtin/packages/greenx/package.py b/var/spack/repos/builtin/packages/greenx/package.py new file mode 100644 index 00000000000..7f28ef071d0 --- /dev/null +++ b/var/spack/repos/builtin/packages/greenx/package.py @@ -0,0 +1,50 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Greenx(CMakePackage): + """GreenX: An open-source library that supports exascale implementations + of Green's-function-based methodologies.""" + + homepage = "https://nomad-coe.github.io/greenX" + url = "https://github.com/nomad-coe/greenX/archive/refs/tags/v2.1.tar.gz" + + maintainers("RMeli") + + license("Apache-2.0", checked_by="RMeli") + + version("2.1", sha256="2fc1fc2c93b0bab14babc33386f7932192336813cea6db11cd27dbc36b541e41") + + variant("shared", default=True, description="Build shared libraries") + variant("ac", default=True, description="Enable Analytical Continuation component") + variant( + "gmp", + when="+ac", + default=True, + description="Enable GMP library for multiple precision arithmetic", + ) + variant("minmax", default=True, description="Enable minmax time-frequency grids component") + variant("lbasis", default=False, description="Enable localized basis component") + variant("paw", default=False, description="Enable PAW component") + + depends_on("cxx", type="build") + depends_on("fortran", type="build") + + depends_on("blas") + depends_on("lapack") + + depends_on("gmp", when="+gmp") + + def cmake_args(self): + args = [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("AC_COMPONENT", "ac"), + self.define_from_variant("ENABLE_GNU_GMP", "gmp"), + self.define_from_variant("MINMAX_COMPONENT", "minmax"), + self.define_from_variant("LBASIS_COMPONENT", "lbasis"), + self.define_from_variant("PAW_COMPONENT", "paw"), + ] + return args From 98605621e7f539077802edea06e4ccf106b34f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lacroix?= Date: Mon, 7 Apr 2025 13:53:01 +0200 Subject: [PATCH 033/317] cuDDN: Add versions 9.5.1, 9.6.0, 9.7.1 and 9.8.0 (#49789) --- .../repos/builtin/packages/cudnn/package.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index 35cc4297759..9118e22e461 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -8,6 +8,38 @@ from spack.package import * _versions = { + # cuDNN 9.8.0 + "9.8.0.87-12": { + "Linux-x86_64": "321b9b33bb1287404d93d5672d352f16feabc4b220ac6ae0b86e4b27f257dcf4", + "Linux-aarch64": "f03ece3ff07d1719f06218973a8797cec1be387cc317baab5bb118dc988199e7", + }, + "9.8.0.87-11": { + "Linux-x86_64": "cf4dfaef8311d987d640a322f668cd5240ac3e5302abe9617dd991b5b2532758" + }, + # cuDNN 9.7.1 + "9.7.1.26-12": { + "Linux-x86_64": "109a5e5c6bcdf4396e6f63f3f862ed2dcf16ee93ee034dc704a1b11bdf00c0b1", + "Linux-aarch64": "8c33d601728e8896296e53f08391544a1ec5d03820e7d2cb9ddfa95fdcbbaf5c", + }, + "9.7.1.26-11": { + "Linux-x86_64": "73aadf2d1b721a34bd7b90908d02906257f2addbd246cf8db58e21d68d855ea2" + }, + # cuDNN 9.6.0 + "9.6.0.74-12": { + "Linux-x86_64": "72595f0d17d952cf568c1d76e370a9c303bb08c2f80888a8cf33e316a65d46a8", + "Linux-aarch64": "6f907bf97731d30ffd55dcc53fe8aa666b583b2c0c6b20e88c7341f98bb0b594", + }, + "9.6.0.74-11": { + "Linux-x86_64": "9717b0022d4f5ea88ccd9796bef7ad1cc5d04b3bd53f690041767aabfb98d14d" + }, + # cuDNN 9.5.1 + "9.5.1.17-12": { + "Linux-x86_64": "35dd20b9c68324ae1288ac36f66ab1f318d2bfecfafb703a82617aa283272be4", + "Linux-aarch64": "0099b8e4081ac146f802e769cdd30d9e01a289ea0fd056e64e44297a13e1aa0c", + }, + "9.5.1.17-11": { + "Linux-x86_64": "b1f5050cd2bfd7fa9d3d0dd00d417cc2124692d8421295e12f841be6c8e3a426" + }, # cuDNN 9.2.0 "9.2.0.82-12": { "Linux-x86_64": "1362b4d437e37e92c9814c3b4065db5106c2e03268e22275a5869e968cee7aa8", From e5ec08771b641d0f7553ffce9ce2d013fdd49cda Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 7 Apr 2025 15:35:21 +0200 Subject: [PATCH 034/317] docs: editor support config files (#49935) --- lib/spack/docs/configuration.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 3f092291a92..d972f7284bf 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -46,6 +46,12 @@ Each Spack configuration file is nested under a top-level section corresponding to its name. So, ``config.yaml`` starts with ``config:``, ``mirrors.yaml`` starts with ``mirrors:``, etc. +.. tip:: + + Validation and autocompletion of Spack config files can be enabled in + your editor with the YAML language server. See `spack/schemas + `_ for more information. + .. _configuration-scopes: -------------------- From 081e4c463b8673f52346af51052ae3d763d28efb Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 7 Apr 2025 15:39:13 +0200 Subject: [PATCH 035/317] compilers: add `.stdcxx_libs` to the compiler adaptor (#49873) This property is used by a few recipes, including `cp2k` under certain configurations Signed-off-by: Massimiliano Culpo --- lib/spack/spack/compilers/adaptor.py | 4 ++++ var/spack/repos/builtin/packages/aocc/package.py | 1 + var/spack/repos/builtin/packages/gcc/package.py | 2 +- var/spack/repos/builtin/packages/grackle/package.py | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/compilers/adaptor.py b/lib/spack/spack/compilers/adaptor.py index ad9a929d342..e925e876012 100644 --- a/lib/spack/spack/compilers/adaptor.py +++ b/lib/spack/spack/compilers/adaptor.py @@ -190,6 +190,10 @@ def f77(self): self._lang_exists_or_raise("f77", lang=Languages.FORTRAN) return self.compilers[Languages.FORTRAN].package.fortran + @property + def stdcxx_libs(self): + return self._maybe_return_attribute("stdcxx_libs", lang=Languages.CXX) + class DeprecatedCompiler(lang.DeprecatedProperty): def __init__(self) -> None: diff --git a/var/spack/repos/builtin/packages/aocc/package.py b/var/spack/repos/builtin/packages/aocc/package.py index de11a97842e..64e533f4fc6 100644 --- a/var/spack/repos/builtin/packages/aocc/package.py +++ b/var/spack/repos/builtin/packages/aocc/package.py @@ -138,6 +138,7 @@ def cfg_files(self): } implicit_rpath_libs = ["libclang"] + stdcxx_libs = ("-lstdc++",) def _standard_flag(self, *, language: str, standard: str) -> str: flags = { diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 7150857bbf5..5e910e89e9e 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -618,7 +618,7 @@ def supported_languages(self): opt_flags = ["-O", "-O0", "-O1", "-O2", "-O3", "-Os", "-Ofast", "-Og"] implicit_rpath_libs = ["libgcc", "libgfortran"] - stdcxx_libs = "-lstdc++" + stdcxx_libs = ("-lstdc++",) def _standard_flag(self, *, language, standard): flags = { diff --git a/var/spack/repos/builtin/packages/grackle/package.py b/var/spack/repos/builtin/packages/grackle/package.py index 6dd2c670402..b3690d6380e 100644 --- a/var/spack/repos/builtin/packages/grackle/package.py +++ b/var/spack/repos/builtin/packages/grackle/package.py @@ -28,6 +28,8 @@ class Grackle(Package): depends_on("libtool", when="@2.2:") depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("tcsh", type="build") depends_on("mpi") From 415055d303bb5408803f4428243da08d7c7d3fa7 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 09:45:41 -0500 Subject: [PATCH 036/317] scitokens-cpp: add v1.1.3 (#49925) --- 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 32b37c04d82..cd42c18311f 100644 --- a/var/spack/repos/builtin/packages/scitokens-cpp/package.py +++ b/var/spack/repos/builtin/packages/scitokens-cpp/package.py @@ -16,6 +16,7 @@ class ScitokensCpp(CMakePackage): license("Apache-2.0") + version("1.1.3", sha256="eeaeb06da74cae92bd03d6be4c407e4855db023f409c59540b3143069407be1f") version("1.1.2", sha256="07d33cb51a3ccd8460f2acebb15b35393aeccfc70e3554a73c9e5cffed6edb39") version("1.1.1", sha256="a9091b888fc778282caf2a6808c86f685d2411557673152d58fe53932a6c7212") version("1.1.0", sha256="9c4afd6638e94855ede52ecfc3d4f05082f2bdf151a9ab8dafcc2bb7cd4d9039") From 2afbeded25c3f7045769b34ddae8940c1275e952 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 7 Apr 2025 17:04:03 +0200 Subject: [PATCH 037/317] py-python-dateutil: add v2.9.0.post0 (#49527) --- .../packages/py-python-dateutil/package.py | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-python-dateutil/package.py b/var/spack/repos/builtin/packages/py-python-dateutil/package.py index 2cdf34e81da..e72c41a6954 100644 --- a/var/spack/repos/builtin/packages/py-python-dateutil/package.py +++ b/var/spack/repos/builtin/packages/py-python-dateutil/package.py @@ -13,6 +13,9 @@ class PyPythonDateutil(PythonPackage): license("Apache-2.0") + version( + "2.9.0.post0", sha256="37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3" + ) version("2.8.2", sha256="0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86") version("2.8.1", sha256="73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c") version("2.8.0", sha256="c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e") @@ -21,9 +24,22 @@ class PyPythonDateutil(PythonPackage): version("2.4.2", sha256="3e95445c1db500a344079a47b171c45ef18f57d188dffdb0e4165c71bea8eb3d") version("2.4.0", sha256="439df33ce47ef1478a4f4765f3390eab0ed3ec4ae10be32f2930000c8d19f417") version("2.2", sha256="eec865307ebe7f329a6a9945c15453265a449cdaaf3710340828a1934d53e468") - version("1.5", sha256="6f197348b46fb8cdf9f3fcfc2a7d5a97da95db3e2e8667cf657216274fe1b009") - depends_on("python@2.7:2.8,3.3:", when="@2.7.5:", type=("build", "run")) - depends_on("py-setuptools@24.3:", type="build") - depends_on("py-setuptools-scm", type="build", when="@2.7.0:") - depends_on("py-six@1.5:", when="@2:", type=("build", "run")) + with default_args(deprecated=True): + version("1.5", sha256="6f197348b46fb8cdf9f3fcfc2a7d5a97da95db3e2e8667cf657216274fe1b009") + + with default_args(type="build"): + depends_on("py-setuptools@:39", when="@2.8.0: ^python@3.3") + depends_on("py-setuptools@24.3:") + + depends_on("py-setuptools-scm@:7", when="@2.9.0.post0:") + + depends_on("py-wheel", when="@2.8.0:") + + with default_args(type=("build", "run")): + depends_on("python@2.7:2,3.3:", when="@2.7.0:") + depends_on("python@2.6:2,3.2:", when="@2.1:") + depends_on("python@3:", when="@2.0") + depends_on("python", when="@:1") + + depends_on("py-six@1.5:", when="@2:") From 10afe498775530efc70e9ed1f596db3c94d6af1f Mon Sep 17 00:00:00 2001 From: Tahmid Khan <60913202+ta7mid@users.noreply.github.com> Date: Mon, 7 Apr 2025 22:21:01 +0600 Subject: [PATCH 038/317] simdjson: new package (#49453) * simdjson: new package * simdjson: update description * simdjson: make line lengths < 100 chars to pass style checks * simdjson: add variants for enabling sanitizers * simdjson: improve description * simdjson: fixes and improvements * simdjson: fix conditions and requirements for variants --------- Co-authored-by: Tahmid A. Khan <60913202+tahmid-khan@users.noreply.github.com> --- .../builtin/packages/simdjson/package.py | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 var/spack/repos/builtin/packages/simdjson/package.py diff --git a/var/spack/repos/builtin/packages/simdjson/package.py b/var/spack/repos/builtin/packages/simdjson/package.py new file mode 100644 index 00000000000..31ad9f5695a --- /dev/null +++ b/var/spack/repos/builtin/packages/simdjson/package.py @@ -0,0 +1,84 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Simdjson(CMakePackage): + """simdjson is a SIMD-accelerated JSON parsing library for C++ that can parse gigabytes of JSON + text per second.""" + + homepage = "https://simdjson.org" + url = "https://github.com/simdjson/simdjson/archive/v3.12.2.tar.gz" + + maintainers("ta7mid") + + license("Apache-2.0 OR MIT") + + version("3.12.2", sha256="8ac7c97073d5079f54ad66d04381ec75e1169c2e20bfe9b6500bc81304da3faf") + version("3.12.1", sha256="b73e21f78eabdaf89bf026d8ef0d65d2f1a9bfdc1cb26659c4ec88959989bf70") + version("3.12.0", sha256="1e5e82f0a34c331c1b0d0c21609791bfe6d6849edfc24983fc241626b433e1c3") + version("3.11.6", sha256="7176a2feb98e1b36b6b9fa56d64151068865f505a0ce24203f3ddbb3f985103b") + version("3.11.5", sha256="509bf4880978666f5a6db1eb3d747681e0cc6e0b5bddd94ab0f14a4199d93e18") + version("3.11.4", sha256="1029aff6bcca7811fb7b6d5421c5c9024b8e74e84cd268680265723f42e23cf2") + version("3.11.3", sha256="eeb10661047e476aa3b535d14a32af95690691778d7afe0630a344654ff9759a") + version("3.11.2", sha256="47a6d78a70c25764386a01b55819af386b98fc421da79ae8de3ae0242cf66d93") + version("3.11.1", sha256="18f7dfd267b90d177851623747598e45fbe4d91fc485f2b57ff0e3ae1b0fdde3") + version("3.11.0", sha256="f3469e776ca704cfda47f0a43331690c882f82c9c0c6f185452387c1e222a63e") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + # variants by library linkage type + variant("shared", default=False, description="Build a dynamically linked library") + variant( + "simdjson_static", + default=False, + description="Build the simdjson_static library along with the dynamically linked simdjson", + when="+shared", + ) + + # feature variants + variant("exceptions", default=True, description="Enable exception throwing") + variant("threads", default=True, description="Enable multithreading") + variant("deprecated", default=True, description="Enable deprecated APIs") + variant("utf8-validation", default=True, description="Enable UTF-8 validation") + + # variants for enabling sanitizers + variant("ubsan", default=False, description="Enable UndefinedBehaviorSanitizer") + variant("tsan", default=False, description="Enable ThreadSanitizer", when="+ubsan") + variant("asan", default=False, description="Enable AddressSanitizer") + variant("msan", default=False, description="Enable MemorySanitizer") + + conflicts("+asan+msan", msg="AddressSanitizer and MemorySanitizer cannot be combined") + conflicts("+asan+tsan", msg="AddressSanitizer and ThreadSanitizer cannot be combined") + conflicts("+msan+tsan", msg="MemorySanitizer and ThreadSanitizer cannot be combined") + + # https://clang.llvm.org/docs/MemorySanitizer.html#supported-platforms + requires( + "platform=linux %clang", + "platform=freebsd %clang", + when="+msan", + msg="MemorySanitizer is supported only by Clang and on Linux, FreeBSD, and NetBSD", + ) + + def cmake_args(self): + build_type = self.spec.variants["build_type"] + enable_dev_checks = "Debug" in build_type or "RelWithDebInfo" in build_type + + return [ + "-DSIMDJSON_DEVELOPER_MODE:BOOL=OFF", + "-DSIMDJSON_VERBOSE_LOGGING:BOOL=OFF", + self.define("SIMDJSON_DEVELOPMENT_CHECKS", enable_dev_checks), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("SIMDJSON_BUILD_STATIC_LIB", "simdjson_static"), + self.define_from_variant("SIMDJSON_ENABLE_THREADS", "threads"), + self.define_from_variant("SIMDJSON_EXCEPTIONS", "exceptions"), + self.define("SIMDJSON_DISABLE_DEPRECATED_API", self.spec.satisfies("~deprecated")), + self.define("SIMDJSON_SKIPUTF8VALIDATION", self.spec.satisfies("~utf8-validation")), + self.define_from_variant("SIMDJSON_SANITIZE_UNDEFINED", "ubsan"), + self.define_from_variant("SIMDJSON_SANITIZE_THREADS", "tsan"), + self.define_from_variant("SIMDJSON_SANITIZE", "asan"), + self.define_from_variant("SIMDJSON_SANITIZE_MEMORY", "msan"), + ] From 8b3bfbd95e9d9e1422ac3e3ae9632521252a3ff5 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:26:21 -0500 Subject: [PATCH 039/317] libsm: add v1.2.6 (#49933) --- var/spack/repos/builtin/packages/libsm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py index b61f952269e..d43a2f9e801 100644 --- a/var/spack/repos/builtin/packages/libsm/package.py +++ b/var/spack/repos/builtin/packages/libsm/package.py @@ -15,6 +15,7 @@ class Libsm(AutotoolsPackage, XorgPackage): maintainers("wdconinc") + version("1.2.6", sha256="166b4b50d606cdd83f1ddc61b5b9162600034f848b3e32ccbb0e63536b7d6cdd") version("1.2.5", sha256="a11c3d23b60dce0c13256a8ce9478c1ea330719c0747b5adfbce60571198fa57") version("1.2.4", sha256="51464ce1abce323d5b6707ceecf8468617106e1a8a98522f8342db06fd024c15") version("1.2.3", sha256="1e92408417cb6c6c477a8a6104291001a40b3bb56a4a60608fdd9cd2c5a0f320") From cd8ebdcfbdbbe5e6c001487332aee1589ef94b4f Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:28:43 -0500 Subject: [PATCH 040/317] embree: add v4.4.0 (#49930) --- var/spack/repos/builtin/packages/embree/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/embree/package.py b/var/spack/repos/builtin/packages/embree/package.py index 6224ede5faf..9fea72890e1 100644 --- a/var/spack/repos/builtin/packages/embree/package.py +++ b/var/spack/repos/builtin/packages/embree/package.py @@ -14,6 +14,7 @@ class Embree(CMakePackage): license("Apache-2.0", checked_by="wdconinc") + version("4.4.0", sha256="acb517b0ea0f4b442235d5331b69f96192c28da6aca5d5dde0cbe40799638d5c") version("4.3.3", sha256="8a3bc3c3e21aa209d9861a28f8ba93b2f82ed0dc93341dddac09f1f03c36ef2d") version("4.3.2", sha256="dc7bb6bac095b2e7bc64321435acd07c6137d6d60e4b79ec07bb0b215ddf81cb") version("4.3.1", sha256="824edcbb7a8cd393c5bdb7a16738487b21ecc4e1d004ac9f761e934f97bb02a4") From a311d0a8c01cec57094bb5fa882b04ac62aae3b9 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:30:40 -0500 Subject: [PATCH 041/317] armadillo: add v14.4.1 (#49929) --- 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 04e0aa66fe9..97e23ee5357 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -16,6 +16,7 @@ class Armadillo(CMakePackage): license("Apache-2.0") + version("14.4.1", sha256="26ce272bfdc8246c278e6f8cfa53777a1efb14ef196e88082fee05da1a463491") version("14.4.0", sha256="023242fd59071d98c75fb015fd3293c921132dc39bf46d221d4b059aae8d79f4") version("14.2.3", sha256="fc70c3089a8d2bb7f2510588597d4b35b4323f6d4be5db5c17c6dba20ab4a9cc") version("14.2.2", sha256="3054c8e63db3abdf1a5c8f9fdb7e6b4ad833f9bcfb58324c0ff86de0784c70e0") From 7e027cae3e81d58fb8199db4f236664d8cbd7b6b Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:32:38 -0500 Subject: [PATCH 042/317] gdbm: add v1.25 (#49928) --- var/spack/repos/builtin/packages/gdbm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index 83b4e5e53b0..406749885db 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -16,6 +16,7 @@ class Gdbm(AutotoolsPackage, GNUMirrorPackage): license("GPL-3.0-or-later") + version("1.25", sha256="d02db3c5926ed877f8817b81cd1f92f53ef74ca8c6db543fbba0271b34f393ec") version("1.24", sha256="695e9827fdf763513f133910bc7e6cfdb9187943a4fec943e57449723d2b8dbf") version("1.23", sha256="74b1081d21fff13ae4bd7c16e5d6e504a4c26f7cde1dca0d963a484174bbcacd") version("1.22", sha256="f366c823a6724af313b6bbe975b2809f9a157e5f6a43612a72949138d161d762") From 36540708f1422d98525a02d5e95f4d354c67a173 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:33:53 -0500 Subject: [PATCH 043/317] py-zope-interface: add thru v7.2 (#49927) --- var/spack/repos/builtin/packages/py-zope-interface/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-zope-interface/package.py b/var/spack/repos/builtin/packages/py-zope-interface/package.py index 2705bbd94ce..f36dd230b09 100644 --- a/var/spack/repos/builtin/packages/py-zope-interface/package.py +++ b/var/spack/repos/builtin/packages/py-zope-interface/package.py @@ -16,6 +16,8 @@ class PyZopeInterface(PythonPackage): license("ZPL-2.1", checked_by="wdconinc") + version("7.2", sha256="8b49f1a3d1ee4cdaf5b32d2e738362c7f5e40ac8b46dd7d1a65e82a4872728fe") + version("7.1.1", sha256="4284d664ef0ff7b709836d4de7b13d80873dc5faeffc073abdb280058bfac5e3") version("7.0.3", sha256="cd2690d4b08ec9eaf47a85914fe513062b20da78d10d6d789a792c0b20307fb1") version("7.0.2", sha256="f1146bb27a411d0d40cc0e88182a6b0e979d68ab526c8e5ae9e27c06506ed017") version("7.0.1", sha256="f0f5fda7cbf890371a59ab1d06512da4f2c89a6ea194e595808123c863c38eff") @@ -37,4 +39,5 @@ class PyZopeInterface(PythonPackage): depends_on("python@3.8:", type=("build", "run"), when="@7:") depends_on("py-setuptools", type=("build", "run")) + depends_on("py-setuptools@:73", type=("build", "run"), when="@7.1:") depends_on("py-setuptools@:45", type=("build", "run"), when="@4.5.0") From 8ca82fb2b660c780c07fe40ca7807892885e2c1a Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:34:50 -0500 Subject: [PATCH 044/317] r: add v4.4.3 (#49926) --- var/spack/repos/builtin/packages/r/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index db36006942d..cb8ba305c5d 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -23,6 +23,7 @@ class R(AutotoolsPackage): license("GPL-2.0-or-later") + version("4.4.3", sha256="0d93d224442dea253c2b086f088db6d0d3cfd9b592cd5496e8cb2143e90fc9e8") version("4.4.2", sha256="1578cd603e8d866b58743e49d8bf99c569e81079b6a60cf33cdf7bdffeb817ec") version("4.4.1", sha256="b4cb675deaaeb7299d3b265d218cde43f192951ce5b89b7bb1a5148a36b2d94d") version("4.4.0", sha256="ace4125f9b976d2c53bcc5fca30c75e30d4edc401584859cbadb080e72b5f030") From 97bad2f5a7e114fafe202dc0724ae2d8987a44ad Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:35:55 -0500 Subject: [PATCH 045/317] soqt: depends on c (#49924) --- var/spack/repos/builtin/packages/soqt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/soqt/package.py b/var/spack/repos/builtin/packages/soqt/package.py index dfd0b580053..9c3ed1bc073 100644 --- a/var/spack/repos/builtin/packages/soqt/package.py +++ b/var/spack/repos/builtin/packages/soqt/package.py @@ -18,6 +18,7 @@ class Soqt(CMakePackage): version("1.6.2", sha256="fb483b20015ab827ba46eb090bd7be5bc2f3d0349c2f947c3089af2b7003869c") version("1.6.1", sha256="80289d9bd49ffe709ab85778c952573f43f1c725ea958c6d5969b2e9c77bb3ba") + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("cmake@3:", type="build") From 770c6cc612179f1a48355f04748e61662f11c995 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 7 Apr 2025 18:36:52 +0200 Subject: [PATCH 046/317] py-torchgeo: add v0.7.0 (#49903) --- .../builtin/packages/py-pandas/package.py | 4 +++ .../builtin/packages/py-torchgeo/package.py | 31 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 9b9b2bc7317..381aa85c029 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -114,6 +114,7 @@ class PyPandas(PythonPackage): variant("performance", default=True, description="Build recommended performance dependencies") variant("excel", when="@1.4:", default=False, description="Build with support for Excel") + variant("parquet", when="@2:", default=False, description="Build with support for Parquet") depends_on("c", type="build") depends_on("cxx", type="build") @@ -205,3 +206,6 @@ class PyPandas(PythonPackage): depends_on("py-xlsxwriter@3.0.3:", when="@2.1:") depends_on("py-xlsxwriter@1.4.3:", when="@1.5:") depends_on("py-xlsxwriter@1.2.2:", when="@1.4:") + + with when("+parquet"): + depends_on("py-pyarrow@10.0.1:") diff --git a/var/spack/repos/builtin/packages/py-torchgeo/package.py b/var/spack/repos/builtin/packages/py-torchgeo/package.py index c4f9ad71900..7f9d344fb1f 100644 --- a/var/spack/repos/builtin/packages/py-torchgeo/package.py +++ b/var/spack/repos/builtin/packages/py-torchgeo/package.py @@ -16,6 +16,7 @@ class PyTorchgeo(PythonPackage): maintainers("adamjstewart", "calebrob6") version("main", branch="main") + version("0.7.0", sha256="4ba0e96ea826080f393b1bb719a3f8c364637112710b1ac38c56b9590a638e29") version("0.6.2", sha256="82f49f0d18d2c22cc70fc0690641e8dd60e4904a9c50d32c79ebd5020ac10fa7") version("0.6.1", sha256="38c930917ea341d05a7a611ff74c017f29482df7455d50e287ea79dec7d0a14b") version("0.6.0", sha256="c5b073b3c9ac06cd68e45620bab3a78fb7637fa3563aae4f75f4781ba57aee5a") @@ -45,13 +46,16 @@ class PyTorchgeo(PythonPackage): depends_on("py-setuptools@42:") with default_args(type=("build", "run")): + depends_on("python@3.11:", when="@0.7:") depends_on("python@3.10:", when="@0.6:") depends_on("python@3.9:", when="@0.5:") depends_on("py-einops@0.3:") + depends_on("py-fiona@1.8.22:", when="@0.7:") depends_on("py-fiona@1.8.21:", when="@0.6:") depends_on("py-fiona@1.8.19:", when="@0.5:") depends_on("py-fiona@1.8:", when="@0.3:") depends_on("py-fiona@1.5:") + depends_on("py-kornia@0.7.4:", when="@0.7:") depends_on("py-kornia@0.7.3:", when="@0.6:") depends_on("py-kornia@0.6.9:", when="@0.5:") depends_on("py-kornia@0.6.5:", when="@0.4:") @@ -62,42 +66,56 @@ class PyTorchgeo(PythonPackage): depends_on("py-lightly@1.4.4:", when="@0.5:") depends_on("py-lightning@2:", when="@0.5:") depends_on("py-lightning@1.8:", when="@0.4.1:") + depends_on("py-matplotlib@3.6:", when="@0.7:") depends_on("py-matplotlib@3.5:", when="@0.6:") depends_on("py-matplotlib@3.3.3:", when="@0.5:") depends_on("py-matplotlib@3.3:") + depends_on("py-numpy@1.23.2:", when="@0.7:") depends_on("py-numpy@1.21.2:", when="@0.6:") depends_on("py-numpy@1.19.3:", when="@0.5:") depends_on("py-numpy@1.17.2:") + depends_on("py-pandas@1.5:", when="@0.7:") depends_on("py-pandas@1.3.3:", when="@0.6:") depends_on("py-pandas@1.1.3:", when="@0.5:") + depends_on("pil@9.2:", when="@0.7:") depends_on("pil@8.4:", when="@0.6:") depends_on("pil@8:", when="@0.5:") depends_on("pil@6.2:") + depends_on("py-pyproj@3.4:", when="@0.7:") depends_on("py-pyproj@3.3:", when="@0.6:") depends_on("py-pyproj@3:", when="@0.5:") depends_on("py-pyproj@2.2:") + depends_on("py-rasterio@1.3.3:", when="@0.7:") depends_on("py-rasterio@1.3:", when="@0.6:") depends_on("py-rasterio@1.2:", when="@0.5:") depends_on("py-rasterio@1.0.20:", when="@0.3:") depends_on("py-rasterio@1.0.16:") + depends_on("py-rtree@1.0.1:", when="@0.7:") depends_on("py-rtree@1:", when="@0.3:") depends_on("py-rtree@0.9.4:", when="@0.2.1:") depends_on("py-rtree@0.5:") + depends_on("py-segmentation-models-pytorch@0.3.3:", when="@0.7:") depends_on("py-segmentation-models-pytorch@0.2:") + depends_on("py-shapely@1.8.5:", when="@0.7:") depends_on("py-shapely@1.8:", when="@0.6:") depends_on("py-shapely@1.7.1:", when="@0.5:") depends_on("py-shapely@1.3:") + depends_on("py-timm@0.9.2:", when="@0.7:") depends_on("py-timm@0.4.12:") + depends_on("py-torch@2:", when="@0.7:") depends_on("py-torch@1.13:", when="@0.6:") depends_on("py-torch@1.12:", when="@0.4:") depends_on("py-torch@1.9:", when="@0.2:") depends_on("py-torch@1.7:") + depends_on("py-torchmetrics@1.2:", when="@0.7:") depends_on("py-torchmetrics@0.10:", when="@0.4:") depends_on("py-torchmetrics@0.7:") + depends_on("py-torchvision@0.15.1:", when="@0.7:") depends_on("py-torchvision@0.14:", when="@0.6:") depends_on("py-torchvision@0.13:", when="@0.4:") depends_on("py-torchvision@0.10:", when="@0.2:") depends_on("py-torchvision@0.3:") + depends_on("py-typing-extensions@4.5:", when="@0.7:") # Only part of lightning[pytorch-extra] we actually require. depends_on("py-jsonargparse@4.26.1:+signatures", when="@0.5:") @@ -114,24 +132,30 @@ class PyTorchgeo(PythonPackage): # Optional dependencies with when("+datasets"), default_args(type="run"): + depends_on("py-h5py@3.8:", when="@0.7:") depends_on("py-h5py@3.6:", when="@0.6:") depends_on("py-h5py@3:", when="@0.5:") depends_on("py-h5py@2.6:") depends_on("py-laspy@2:", when="@0.2:") + depends_on("py-netcdf4@1.6.1:", when="@0.7:") + depends_on("opencv@4.5.5:", when="@0.7:") depends_on("opencv@4.5.4:", when="@0.6:") depends_on("opencv@4.4.0.46:", when="@0.5:") depends_on("opencv@3.4.2.17:") + depends_on("py-pandas@2:+parquet", when="@0.7:") depends_on("py-pycocotools@2.0.7:", when="@0.6:") depends_on("py-pycocotools@2.0.5:", when="@0.5:") depends_on("py-pycocotools@2:") - depends_on("py-pyvista@0.34.2:", when="@0.5:0.6") - depends_on("py-pyvista@0.20:", when="@0.4") + depends_on("py-scikit-image@0.20:", when="@0.7:") depends_on("py-scikit-image@0.19:", when="@0.6:") depends_on("py-scikit-image@0.18:", when="@0.4:") + depends_on("py-scipy@1.9.2:", when="@0.7:") depends_on("py-scipy@1.7.2:", when="@0.6:") depends_on("py-scipy@1.6.2:", when="@0.4:") depends_on("py-scipy@1.2:", when="@0.3:") depends_on("py-scipy@0.9:") + depends_on("py-webdataset@0.2.4:", when="@0.7:") + depends_on("py-xarray@0.12.3:", when="@0.7:") # Required to download SpaceNet datasets. depends_on("awscli-v2", when="@0.6:") @@ -159,6 +183,8 @@ class PyTorchgeo(PythonPackage): # https://github.com/microsoft/torchgeo/pull/1537 depends_on("py-pandas@0.23.2:2.0", when="@0.3:0.4") depends_on("py-pandas@0.19.1:2.0", when="@0.2") + depends_on("py-pyvista@0.34.2:", when="@0.5:0.6") + depends_on("py-pyvista@0.20:", when="@0.4") depends_on("py-radiant-mlhub@0.3:", when="@0.4.1:0.5") depends_on("py-radiant-mlhub@0.2.1:0.4", when="@:0.4.0") depends_on("py-rarfile@4:", when="@0.5") @@ -174,6 +200,7 @@ class PyTorchgeo(PythonPackage): with when("+style"), default_args(type="run"): depends_on("prettier@3:", when="@0.6:") depends_on("py-mypy@0.900:") + depends_on("py-ruff@0.9:", when="@0.7:") depends_on("py-ruff@0.2:", when="@0.6:") # Historical dependencies From c6ce7637fc9ca71bbfdac6cd41149783a96c5f20 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:37:51 -0500 Subject: [PATCH 047/317] spdlog: add v1.15.2 (#49923) --- var/spack/repos/builtin/packages/spdlog/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/spdlog/package.py b/var/spack/repos/builtin/packages/spdlog/package.py index 9a7f459baed..66bdf4dfb94 100644 --- a/var/spack/repos/builtin/packages/spdlog/package.py +++ b/var/spack/repos/builtin/packages/spdlog/package.py @@ -13,6 +13,7 @@ class Spdlog(CMakePackage): license("MIT") + version("1.15.2", sha256="7a80896357f3e8e920e85e92633b14ba0f229c506e6f978578bdc35ba09e9a5d") version("1.15.1", sha256="25c843860f039a1600f232c6eb9e01e6627f7d030a2ae5e232bdd3c9205d26cc") version("1.15.0", sha256="9962648c9b4f1a7bbc76fd8d9172555bad1871fdb14ff4f842ef87949682caa5") version("1.14.1", sha256="1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b") From 91ef8c056bd02cbc8537ded130a739b45436c5d9 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:39:01 -0500 Subject: [PATCH 048/317] vdt: add v0.4.5, v0.4.6 (#49922) * vdt: add thru v0.4.6 * vdt: add maintainer --- var/spack/repos/builtin/packages/vdt/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/vdt/package.py b/var/spack/repos/builtin/packages/vdt/package.py index 776f1a36a81..c8b67bb530c 100644 --- a/var/spack/repos/builtin/packages/vdt/package.py +++ b/var/spack/repos/builtin/packages/vdt/package.py @@ -14,6 +14,10 @@ class Vdt(CMakePackage): homepage = "https://github.com/dpiparo/vdt" url = "https://github.com/dpiparo/vdt/archive/v0.3.9.tar.gz" + maintainers("wdconinc") + + version("0.4.6", sha256="1820feae446780763ec8bbb60a0dbcf3ae1ee548bdd01415b1fb905fd4f90c54") + version("0.4.5", sha256="3a8962d9200b164ee6802a2c00f988843e7dc0916b9704e4c90db6e0691e967b") version("0.4.4", sha256="8b1664b45ec82042152f89d171dd962aea9bb35ac53c8eebb35df1cb9c34e498") version("0.4.3", sha256="705674612ebb5c182b65a8f61f4d173eb7fe7cdeee2235b402541a492e08ace1") version("0.3.9", sha256="1662d21037a29cae717ee50b73bd177bea79582f4138b7ad11404fc4be4e542e") From 20f31ce39d6fad4c934645b3b6f0acb436b33ce8 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:39:52 -0500 Subject: [PATCH 049/317] voms: add v2.1.2 (#49921) * voms: add v2.1.2 * voms: patch only when @:2.1.0 --- var/spack/repos/builtin/packages/voms/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/voms/package.py b/var/spack/repos/builtin/packages/voms/package.py index 536db34e039..0526cf87016 100644 --- a/var/spack/repos/builtin/packages/voms/package.py +++ b/var/spack/repos/builtin/packages/voms/package.py @@ -15,6 +15,7 @@ class Voms(AutotoolsPackage): license("Apache-2.0", checked_by="wdconinc") + version("2.1.2", sha256="171cfa66b000422761b2a534a84ad88b646c675ff7910409b08b900775dbf035") version("2.1.0", sha256="2fd2468620af531c02e9ac495aaaf2a8d5b8cfbe24d4904f2e8fa7f64cdeeeec") depends_on("c", type="build") @@ -33,6 +34,7 @@ class Voms(AutotoolsPackage): force_autoreconf = True + @when("@:2.1.0") def patch(self): filter_file( r"/usr/bin/soapcpp2", f"{self.spec['gsoap'].prefix.bin.soapcpp2}", "m4/wsdl2h.m4" From 95f8c7e07376fdd6043875c37baceb24fa066ae6 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:41:42 -0500 Subject: [PATCH 050/317] cmark: add v0.31.1 (#49913) --- var/spack/repos/builtin/packages/cmark/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmark/package.py b/var/spack/repos/builtin/packages/cmark/package.py index d846be60530..a48ead01d23 100644 --- a/var/spack/repos/builtin/packages/cmark/package.py +++ b/var/spack/repos/builtin/packages/cmark/package.py @@ -14,6 +14,7 @@ class Cmark(CMakePackage): license("BSD-2-Clause") + version("0.31.1", sha256="3da93db5469c30588cfeb283d9d62edfc6ded9eb0edc10a4f5bbfb7d722ea802") version("0.31.0", sha256="bbcb8f8c03b5af33fcfcf11a74e9499f20a9043200b8552f78a6e8ba76e04d11") version("0.29.0", sha256="2558ace3cbeff85610de3bda32858f722b359acdadf0c4691851865bb84924a6") version("0.28.3", sha256="acc98685d3c1b515ff787ac7c994188dadaf28a2d700c10c1221da4199bae1fc") From a3f4fd68d60c332146061e8e621c0b46d7bfb292 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 7 Apr 2025 18:42:54 +0200 Subject: [PATCH 051/317] Packages: add missing compiler dependencies (#49920) * Packages: add missing compiler dependencies * Undo changes to cray-mpich --- var/spack/repos/builtin/packages/amp/package.py | 4 ++++ var/spack/repos/builtin/packages/aocc/package.py | 1 + var/spack/repos/builtin/packages/aocl-da/package.py | 2 ++ var/spack/repos/builtin/packages/aragorn/package.py | 2 ++ var/spack/repos/builtin/packages/babelstream/package.py | 2 ++ var/spack/repos/builtin/packages/bam-readcount/package.py | 1 + var/spack/repos/builtin/packages/bioawk/package.py | 2 ++ var/spack/repos/builtin/packages/blat/package.py | 2 ++ var/spack/repos/builtin/packages/bucky/package.py | 2 ++ var/spack/repos/builtin/packages/casper/package.py | 1 + var/spack/repos/builtin/packages/connect-proxy/package.py | 2 ++ var/spack/repos/builtin/packages/dataspaces/package.py | 2 ++ var/spack/repos/builtin/packages/dhpmm-f/package.py | 3 +++ var/spack/repos/builtin/packages/dialign-tx/package.py | 2 ++ var/spack/repos/builtin/packages/dicom3tools/package.py | 1 + var/spack/repos/builtin/packages/dihydrogen/package.py | 1 + var/spack/repos/builtin/packages/dire/package.py | 1 + var/spack/repos/builtin/packages/dray/package.py | 1 + .../repos/builtin/packages/eclipse-gcj-parser/package.py | 2 ++ var/spack/repos/builtin/packages/examinimd/package.py | 2 ++ var/spack/repos/builtin/packages/fasttree/package.py | 2 ++ var/spack/repos/builtin/packages/ferret/package.py | 1 + var/spack/repos/builtin/packages/ffb/package.py | 4 ++++ var/spack/repos/builtin/packages/ffr/package.py | 3 +++ var/spack/repos/builtin/packages/flamemaster/package.py | 3 +++ var/spack/repos/builtin/packages/fontconfig/package.py | 1 + var/spack/repos/builtin/packages/fplo/package.py | 4 ++++ var/spack/repos/builtin/packages/fsl/package.py | 3 +++ var/spack/repos/builtin/packages/grib-api/package.py | 7 ++----- var/spack/repos/builtin/packages/hdf-eos2/package.py | 2 ++ var/spack/repos/builtin/packages/hipsycl/package.py | 2 ++ var/spack/repos/builtin/packages/improved-rdock/package.py | 1 + var/spack/repos/builtin/packages/itensor/package.py | 1 + var/spack/repos/builtin/packages/lbann/package.py | 1 + var/spack/repos/builtin/packages/lcals/package.py | 2 ++ var/spack/repos/builtin/packages/ldak/package.py | 2 ++ var/spack/repos/builtin/packages/libmesh/package.py | 3 +++ var/spack/repos/builtin/packages/lorene/package.py | 3 +++ var/spack/repos/builtin/packages/mapsplice2/package.py | 3 +++ var/spack/repos/builtin/packages/mpitrampoline/package.py | 1 + var/spack/repos/builtin/packages/mptensor/package.py | 2 ++ var/spack/repos/builtin/packages/msmpi/package.py | 2 ++ var/spack/repos/builtin/packages/mumax/package.py | 2 ++ var/spack/repos/builtin/packages/namd/package.py | 3 +++ var/spack/repos/builtin/packages/nn-c/package.py | 2 ++ var/spack/repos/builtin/packages/openfdtd/package.py | 2 ++ var/spack/repos/builtin/packages/openssl/package.py | 1 + var/spack/repos/builtin/packages/openstf/package.py | 2 ++ var/spack/repos/builtin/packages/orc/package.py | 1 + var/spack/repos/builtin/packages/pacparser/package.py | 1 + var/spack/repos/builtin/packages/parquet-cpp/package.py | 1 + var/spack/repos/builtin/packages/pdftk/package.py | 2 ++ var/spack/repos/builtin/packages/prank/package.py | 1 + var/spack/repos/builtin/packages/psi4/package.py | 1 + var/spack/repos/builtin/packages/regcm/package.py | 2 ++ .../repos/builtin/packages/revocap-refiner/package.py | 4 ++++ var/spack/repos/builtin/packages/rose/package.py | 3 +++ .../builtin/packages/simmetrix-simmodsuite/package.py | 2 ++ var/spack/repos/builtin/packages/sollve/package.py | 3 +++ var/spack/repos/builtin/packages/sos/package.py | 4 ++++ var/spack/repos/builtin/packages/spectrum-mpi/package.py | 2 ++ var/spack/repos/builtin/packages/srilm/package.py | 3 +++ var/spack/repos/builtin/packages/stripack/package.py | 2 ++ var/spack/repos/builtin/packages/sumaclust/package.py | 2 ++ var/spack/repos/builtin/packages/sw4lite/package.py | 2 ++ var/spack/repos/builtin/packages/tmalign/package.py | 2 ++ var/spack/repos/builtin/packages/tmscore/package.py | 2 ++ var/spack/repos/builtin/packages/unrar/package.py | 2 +- var/spack/repos/builtin/packages/usalign/package.py | 2 ++ var/spack/repos/builtin/packages/vasp/package.py | 4 ++++ var/spack/repos/builtin/packages/xabclib/package.py | 3 +++ var/spack/repos/builtin/packages/xios/package.py | 3 +++ var/spack/repos/builtin/packages/zpares/package.py | 2 ++ 73 files changed, 151 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/amp/package.py b/var/spack/repos/builtin/packages/amp/package.py index c0e85d04934..79549696300 100644 --- a/var/spack/repos/builtin/packages/amp/package.py +++ b/var/spack/repos/builtin/packages/amp/package.py @@ -31,6 +31,10 @@ class Amp(CMakePackage): variant("trilinos", default=True, description="Build with support for Trilinos") variant("zlib", default=True, description="Build with support for zlib") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + # Everything should be compiled position independent (-fpic) depends_on("blas") depends_on("lapack") diff --git a/var/spack/repos/builtin/packages/aocc/package.py b/var/spack/repos/builtin/packages/aocc/package.py index 64e533f4fc6..1a73fc7533c 100644 --- a/var/spack/repos/builtin/packages/aocc/package.py +++ b/var/spack/repos/builtin/packages/aocc/package.py @@ -65,6 +65,7 @@ class Aocc(Package, LlvmDetection, CompilerPackage): license_url = "https://www.amd.com/en/developer/aocc/aocc-compiler/eula.html" depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("libxml2") depends_on("zlib-api") diff --git a/var/spack/repos/builtin/packages/aocl-da/package.py b/var/spack/repos/builtin/packages/aocl-da/package.py index 53beca51837..00f3f500d63 100644 --- a/var/spack/repos/builtin/packages/aocl-da/package.py +++ b/var/spack/repos/builtin/packages/aocl-da/package.py @@ -52,6 +52,8 @@ class AoclDa(CMakePackage): when="@5.0", ) + depends_on("c", type="build") + depends_on("cmake@3.22:", type="build") for vers in ["5.0"]: with when(f"@={vers}"): diff --git a/var/spack/repos/builtin/packages/aragorn/package.py b/var/spack/repos/builtin/packages/aragorn/package.py index c53195bc4d6..ea8614c850c 100644 --- a/var/spack/repos/builtin/packages/aragorn/package.py +++ b/var/spack/repos/builtin/packages/aragorn/package.py @@ -28,6 +28,8 @@ class Aragorn(Package): expand=False, ) + depends_on("c", type="build") + # fix checksum error def url_for_version(self, version): return f"http://www.ansikte.se/ARAGORN/Downloads/aragorn{version}.c" diff --git a/var/spack/repos/builtin/packages/babelstream/package.py b/var/spack/repos/builtin/packages/babelstream/package.py index d5546584512..d6aa03032da 100644 --- a/var/spack/repos/builtin/packages/babelstream/package.py +++ b/var/spack/repos/builtin/packages/babelstream/package.py @@ -25,6 +25,8 @@ class Babelstream(CMakePackage, CudaPackage, ROCmPackage, MakefilePackage): version("main", branch="main") maintainers("tomdeakin", "kaanolgu", "tom91136") # Previous maintainers: "robj0nes" + + depends_on("c", type="build") depends_on("cxx", type="build", when="languages=cxx") depends_on("fortran", type="build", when="languages=fortran") # Languages diff --git a/var/spack/repos/builtin/packages/bam-readcount/package.py b/var/spack/repos/builtin/packages/bam-readcount/package.py index 07af8d06baa..cb3246d3f86 100644 --- a/var/spack/repos/builtin/packages/bam-readcount/package.py +++ b/var/spack/repos/builtin/packages/bam-readcount/package.py @@ -16,6 +16,7 @@ class BamReadcount(CMakePackage): version("1.0.1", sha256="8ebf84d9efee0f2d3b43f0452dbf16b27337c960e25128f6a7173119e62588b8") version("0.8.0", sha256="4f4dd558e3c6bfb24d6a57ec441568f7524be6639b24f13ea6f2bb350c7ea65f") + depends_on("c", type="build") depends_on("cxx", type="build") # generated def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/bioawk/package.py b/var/spack/repos/builtin/packages/bioawk/package.py index 9887f36e0e8..c5228fddedd 100644 --- a/var/spack/repos/builtin/packages/bioawk/package.py +++ b/var/spack/repos/builtin/packages/bioawk/package.py @@ -16,6 +16,8 @@ class Bioawk(MakefilePackage): version("1.0", sha256="316a6561dda41e8327b85106db3704e94e23d7a89870392d19ef8559f7859e2d") + depends_on("c", type="build") + depends_on("zlib-api") depends_on("bison", type=("build")) diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py index d40f3a97013..1bc10b4a091 100644 --- a/var/spack/repos/builtin/packages/blat/package.py +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -16,6 +16,8 @@ class Blat(Package): version("37", sha256="88ee2b272d42ab77687c61d200b11f1d58443951069feb7e10226a2509f84cf2") version("35", sha256="06d9bcf114ec4a4b21fef0540a0532556b6602322a5a2b33f159dc939ae53620") + depends_on("c", type="build") + depends_on("libpng") depends_on("uuid", when="@37:") depends_on("mysql-client", when="@37:") diff --git a/var/spack/repos/builtin/packages/bucky/package.py b/var/spack/repos/builtin/packages/bucky/package.py index 7381d417231..9318215cf30 100644 --- a/var/spack/repos/builtin/packages/bucky/package.py +++ b/var/spack/repos/builtin/packages/bucky/package.py @@ -19,6 +19,8 @@ class Bucky(MakefilePackage): requires("%gcc", msg="bucky can only be compiled with GCC") + depends_on("cxx", type="build") + build_directory = "src" def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/casper/package.py b/var/spack/repos/builtin/packages/casper/package.py index 2a5ce9aa8d1..cbac62cf2f8 100644 --- a/var/spack/repos/builtin/packages/casper/package.py +++ b/var/spack/repos/builtin/packages/casper/package.py @@ -23,6 +23,7 @@ class Casper(MakefilePackage): ) depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("jellyfish@2.2.3:") depends_on("boost+exception") diff --git a/var/spack/repos/builtin/packages/connect-proxy/package.py b/var/spack/repos/builtin/packages/connect-proxy/package.py index c6173f4dd89..d3cd9b0621b 100644 --- a/var/spack/repos/builtin/packages/connect-proxy/package.py +++ b/var/spack/repos/builtin/packages/connect-proxy/package.py @@ -16,6 +16,8 @@ class ConnectProxy(MakefilePackage): version("1.105", sha256="07366026b1f81044ecd8da9b5b5b51321327ecdf6ba23576271a311bbd69d403") + depends_on("c", type="build") + def build(self, spec, prefix): make("CC={0}".format(spack_cc)) diff --git a/var/spack/repos/builtin/packages/dataspaces/package.py b/var/spack/repos/builtin/packages/dataspaces/package.py index 588f927531b..d891a640240 100644 --- a/var/spack/repos/builtin/packages/dataspaces/package.py +++ b/var/spack/repos/builtin/packages/dataspaces/package.py @@ -34,6 +34,8 @@ class Dataspaces(AutotoolsPackage): variant("ptag", default="250", description="Cray UGNI protection tag", values=is_string) variant("mpi", default=True, description="Use MPI for collective communication") + depends_on("c", type="build") + depends_on("m4", type="build") depends_on("automake", type="build") depends_on("autoconf", type="build") diff --git a/var/spack/repos/builtin/packages/dhpmm-f/package.py b/var/spack/repos/builtin/packages/dhpmm-f/package.py index 9213fbdc941..2b2a661bc6c 100644 --- a/var/spack/repos/builtin/packages/dhpmm-f/package.py +++ b/var/spack/repos/builtin/packages/dhpmm-f/package.py @@ -15,6 +15,9 @@ class DhpmmF(MakefilePackage): version("alpha", sha256="35321ecbc749f2682775ffcd27833afc8c8eb4fa7753ce769727c9d1fe097848") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("blas", type="link") depends_on("lapack", type="link") diff --git a/var/spack/repos/builtin/packages/dialign-tx/package.py b/var/spack/repos/builtin/packages/dialign-tx/package.py index cf677d871ca..36114015d07 100644 --- a/var/spack/repos/builtin/packages/dialign-tx/package.py +++ b/var/spack/repos/builtin/packages/dialign-tx/package.py @@ -18,6 +18,8 @@ class DialignTx(MakefilePackage): build_directory = "source" + depends_on("c", type="build") + conflicts("%gcc@6:") def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/dicom3tools/package.py b/var/spack/repos/builtin/packages/dicom3tools/package.py index c305d1d894f..c6135690af5 100644 --- a/var/spack/repos/builtin/packages/dicom3tools/package.py +++ b/var/spack/repos/builtin/packages/dicom3tools/package.py @@ -26,6 +26,7 @@ class Dicom3tools(MakefilePackage): description="default UID Root assignment", ) + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("bzip2", type="build") diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py index 251b2b33adc..e8a0ec8699d 100644 --- a/var/spack/repos/builtin/packages/dihydrogen/package.py +++ b/var/spack/repos/builtin/packages/dihydrogen/package.py @@ -125,6 +125,7 @@ class Dihydrogen(CachedCMakePackage, CudaPackage, ROCmPackage): ) # Dependencies + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("catch2@3.0.1:", type=("build", "test"), when="+developer") diff --git a/var/spack/repos/builtin/packages/dire/package.py b/var/spack/repos/builtin/packages/dire/package.py index fbc20f7ea56..1e154b966cf 100644 --- a/var/spack/repos/builtin/packages/dire/package.py +++ b/var/spack/repos/builtin/packages/dire/package.py @@ -21,6 +21,7 @@ class Dire(Package): version("2.004", sha256="8cc1213b58fec744fdaa50834560a14b141de99efb2c3e3d3d47f3d6d84b179f") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("zlib-api") diff --git a/var/spack/repos/builtin/packages/dray/package.py b/var/spack/repos/builtin/packages/dray/package.py index 706afd9163c..6c0f1df457c 100644 --- a/var/spack/repos/builtin/packages/dray/package.py +++ b/var/spack/repos/builtin/packages/dray/package.py @@ -65,6 +65,7 @@ class Dray(Package, CudaPackage): # set to false for systems that implicitly link mpi variant("blt_find_mpi", default=True, description="Use BLT CMake Find MPI logic") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated diff --git a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py index bc41b77ce41..bde93777222 100644 --- a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py +++ b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py @@ -28,6 +28,8 @@ class EclipseGcjParser(Package): expand=False, ) + depends_on("c", type="build") + @property def gcj(self): """Obtain Executable for the gcj included with this GCC, diff --git a/var/spack/repos/builtin/packages/examinimd/package.py b/var/spack/repos/builtin/packages/examinimd/package.py index 1abfd9729d9..2c9cd2a62ae 100644 --- a/var/spack/repos/builtin/packages/examinimd/package.py +++ b/var/spack/repos/builtin/packages/examinimd/package.py @@ -33,6 +33,8 @@ class Examinimd(MakefilePackage): conflicts("+openmp", when="+pthreads") + depends_on("cxx", type="build") + depends_on("kokkos-legacy") depends_on("mpi", when="+mpi") diff --git a/var/spack/repos/builtin/packages/fasttree/package.py b/var/spack/repos/builtin/packages/fasttree/package.py index 2104043e6b5..acb9e42d5df 100644 --- a/var/spack/repos/builtin/packages/fasttree/package.py +++ b/var/spack/repos/builtin/packages/fasttree/package.py @@ -31,6 +31,8 @@ class Fasttree(Package): variant("openmp", default=True, description="Add openmp support to Fasttree.") + depends_on("c", type="build") + def install(self, spec, prefix): cc = Executable(spack_cc) if self.spec.satisfies("+openmp"): diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index a2ef28c248e..620470b5ad8 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -30,6 +30,7 @@ class Ferret(Package): variant("datasets", default=False, description="Install Ferret standard datasets") depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("fortran", type="build") # generated depends_on("hdf5+hl") diff --git a/var/spack/repos/builtin/packages/ffb/package.py b/var/spack/repos/builtin/packages/ffb/package.py index f49498285bf..37d633b3065 100644 --- a/var/spack/repos/builtin/packages/ffb/package.py +++ b/var/spack/repos/builtin/packages/ffb/package.py @@ -22,6 +22,10 @@ class Ffb(MakefilePackage): patch("xvx.patch") patch("gffv3tr.patch") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("mpi") depends_on("blas") depends_on("scalapack") diff --git a/var/spack/repos/builtin/packages/ffr/package.py b/var/spack/repos/builtin/packages/ffr/package.py index 12f67c3982c..f8bfbeea7e7 100644 --- a/var/spack/repos/builtin/packages/ffr/package.py +++ b/var/spack/repos/builtin/packages/ffr/package.py @@ -32,6 +32,9 @@ class Ffr(MakefilePackage): patch("gfortran_format_31.patch", when="@3.1.004 %gcc") patch("gfortran_format_30.patch", when="@3.0_000 %gcc") + depends_on("c", type="build") + depends_on("fortran", type="build") + depends_on("mpi") depends_on("metis@:4", type="link") diff --git a/var/spack/repos/builtin/packages/flamemaster/package.py b/var/spack/repos/builtin/packages/flamemaster/package.py index f3612bd568e..7bdb3fc69a7 100644 --- a/var/spack/repos/builtin/packages/flamemaster/package.py +++ b/var/spack/repos/builtin/packages/flamemaster/package.py @@ -127,6 +127,9 @@ class Flamemaster(CMakePackage): variant("eglib", default=False, description="Build with EG lib") variant("sundials", default=True, description="with sundials") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("blas") depends_on("lapack") depends_on("cmake@3.12", type="build") diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index c5996114e1a..39a4af3c610 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -23,6 +23,7 @@ class Fontconfig(AutotoolsPackage): version("2.11.1", sha256="b6b066c7dce3f436fdc0dfbae9d36122b38094f4f53bd8dffd45e195b0540d8d") depends_on("c", type="build") # generated + depends_on("fortran", type="build") # freetype2 21.0.15+ provided by freetype 2.8.1+ depends_on("freetype@2.8.1:", when="@2.13:") diff --git a/var/spack/repos/builtin/packages/fplo/package.py b/var/spack/repos/builtin/packages/fplo/package.py index 2dd38f6bc90..3ff828a93aa 100644 --- a/var/spack/repos/builtin/packages/fplo/package.py +++ b/var/spack/repos/builtin/packages/fplo/package.py @@ -44,6 +44,10 @@ class Fplo(MakefilePackage): # Sets the correct python module import order. patch("fedit_py.patch") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("mkl") depends_on("ncurses") depends_on("perl", type="run") diff --git a/var/spack/repos/builtin/packages/fsl/package.py b/var/spack/repos/builtin/packages/fsl/package.py index 058e1b4449a..a9183efe3ab 100644 --- a/var/spack/repos/builtin/packages/fsl/package.py +++ b/var/spack/repos/builtin/packages/fsl/package.py @@ -26,6 +26,9 @@ class Fsl(Package, CudaPackage): version("6.0.4", sha256="58b88f38e080b05d70724d57342f58e1baf56e2bd3b98506a72b4446cad5033e") version("5.0.10", sha256="ca183e489320de0e502a7ba63230a7f55098917a519e8c738b005d526e700842") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("python", type=("build", "run")) depends_on("expat") depends_on("libx11") diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py index 6aabeab5c43..1785bae73d2 100644 --- a/var/spack/repos/builtin/packages/grib-api/package.py +++ b/var/spack/repos/builtin/packages/grib-api/package.py @@ -70,6 +70,8 @@ class GribApi(CMakePackage): # tests are enabled but the testing scripts don't use it. # depends_on('valgrind', type='test', when='+test') + depends_on("fortran", type="build", when="+fortran") + depends_on("netcdf-c", when="+netcdf") depends_on("openjpeg@1.5.0:1.5", when="jp2k=openjpeg") depends_on("jasper", when="jp2k=jasper") @@ -85,11 +87,6 @@ class GribApi(CMakePackage): # CMAKE_INSTALL_RPATH must be a semicolon-separated list. patch("cmake_install_rpath.patch") - @run_before("cmake") - def check_fortran(self): - if "+fortran" in self.spec and self.compiler.fc is None: - raise InstallError("Fortran interface requires a Fortran compiler!") - def cmake_args(self): var_opt_list = [ ("+pthreads", "GRIB_THREADS"), diff --git a/var/spack/repos/builtin/packages/hdf-eos2/package.py b/var/spack/repos/builtin/packages/hdf-eos2/package.py index 65e9cf730c4..22c52796959 100644 --- a/var/spack/repos/builtin/packages/hdf-eos2/package.py +++ b/var/spack/repos/builtin/packages/hdf-eos2/package.py @@ -67,6 +67,8 @@ class HdfEos2(AutotoolsPackage): conflicts("~static", when="~shared", msg="At least one of +static or +shared must be set") + depends_on("c", type="build") + # Build dependencies depends_on("hdf") # Because hdf always depends on zlib and jpeg in spack, the tests below in configure_args diff --git a/var/spack/repos/builtin/packages/hipsycl/package.py b/var/spack/repos/builtin/packages/hipsycl/package.py index 389b41090ea..ed7fc1f0a06 100644 --- a/var/spack/repos/builtin/packages/hipsycl/package.py +++ b/var/spack/repos/builtin/packages/hipsycl/package.py @@ -38,6 +38,8 @@ class Hipsycl(CMakePackage, ROCmPackage): variant("cuda", default=False, description="Enable CUDA backend for SYCL kernels") variant("rocm", default=False, description="Enable ROCM backend for SYCL kernels") + depends_on("cxx", type="build") + depends_on("cmake@3.5:", type="build") depends_on("boost +filesystem", when="@:0.8") depends_on("boost@1.67.0:1.69.0 +filesystem +fiber +context cxxstd=17", when="@0.9.1:") diff --git a/var/spack/repos/builtin/packages/improved-rdock/package.py b/var/spack/repos/builtin/packages/improved-rdock/package.py index 5468685a97e..9a4d793bd15 100644 --- a/var/spack/repos/builtin/packages/improved-rdock/package.py +++ b/var/spack/repos/builtin/packages/improved-rdock/package.py @@ -22,6 +22,7 @@ class ImprovedRdock(MakefilePackage): version("main", branch="main") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("popt") diff --git a/var/spack/repos/builtin/packages/itensor/package.py b/var/spack/repos/builtin/packages/itensor/package.py index 2dfa818e7a3..90e04b8a173 100644 --- a/var/spack/repos/builtin/packages/itensor/package.py +++ b/var/spack/repos/builtin/packages/itensor/package.py @@ -37,6 +37,7 @@ class Itensor(MakefilePackage): variant("hdf5", default=False, description="Build rockstar with HDF5 support.") variant("shared", default=False, description="Also build dynamic libraries.") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("lapack") diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index d382e6c80c0..95ce745e60a 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -117,6 +117,7 @@ class Lbann(CachedCMakePackage, CudaPackage, ROCmPackage): conflicts("+gold", when="platform=darwin", msg="gold does not work on Darwin") conflicts("+lld", when="platform=darwin", msg="lld does not work on Darwin") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("cmake@3.17.0:", type="build") diff --git a/var/spack/repos/builtin/packages/lcals/package.py b/var/spack/repos/builtin/packages/lcals/package.py index a9b4dd891d8..6ab77d09304 100644 --- a/var/spack/repos/builtin/packages/lcals/package.py +++ b/var/spack/repos/builtin/packages/lcals/package.py @@ -30,6 +30,8 @@ class Lcals(MakefilePackage): values=("sse", "avx", "MIC"), ) + depends_on("cxx", type="build") + @property def build_targets(self): targets = [] diff --git a/var/spack/repos/builtin/packages/ldak/package.py b/var/spack/repos/builtin/packages/ldak/package.py index dcc461beb3a..0ecf87bc7b0 100644 --- a/var/spack/repos/builtin/packages/ldak/package.py +++ b/var/spack/repos/builtin/packages/ldak/package.py @@ -24,6 +24,8 @@ class Ldak(Package): variant("glpk", default=False, description="Use glpk instead of vendored qsopt") + depends_on("c", type="build") + depends_on("zlib-api") depends_on("blas") depends_on("lapack") diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py index c2503c6054f..d8072bd3dd5 100644 --- a/var/spack/repos/builtin/packages/libmesh/package.py +++ b/var/spack/repos/builtin/packages/libmesh/package.py @@ -133,6 +133,9 @@ class Libmesh(AutotoolsPackage): "variant.", ) + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("boost", when="+boost") # TODO: replace this with an explicit list of components of Boost, diff --git a/var/spack/repos/builtin/packages/lorene/package.py b/var/spack/repos/builtin/packages/lorene/package.py index 59f967563b2..09ea498a092 100644 --- a/var/spack/repos/builtin/packages/lorene/package.py +++ b/var/spack/repos/builtin/packages/lorene/package.py @@ -30,6 +30,9 @@ class Lorene(MakefilePackage): description="Build Bin_star solver for binary neutron star systems", ) + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("blas") depends_on("fftw @3:", when="+fftw") depends_on("gsl") diff --git a/var/spack/repos/builtin/packages/mapsplice2/package.py b/var/spack/repos/builtin/packages/mapsplice2/package.py index be2235e0206..e52a0691cb1 100644 --- a/var/spack/repos/builtin/packages/mapsplice2/package.py +++ b/var/spack/repos/builtin/packages/mapsplice2/package.py @@ -19,6 +19,9 @@ class Mapsplice2(MakefilePackage): patch("Makefile.patch") patch("mapsplice_ebwt.patch") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("bowtie") depends_on("ncurses", type="link") depends_on("samtools", type="link") diff --git a/var/spack/repos/builtin/packages/mpitrampoline/package.py b/var/spack/repos/builtin/packages/mpitrampoline/package.py index 01944d4b030..ca762c8bf9d 100644 --- a/var/spack/repos/builtin/packages/mpitrampoline/package.py +++ b/var/spack/repos/builtin/packages/mpitrampoline/package.py @@ -59,6 +59,7 @@ class Mpitrampoline(CMakePackage): version("1.0.1", sha256="4ce91b99fb6d2dab481b5e477b6b6a0709add48cf0f287afbbb440fdf3232500") depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("fortran", type="build") # generated variant("shared", default=True, description="Build a shared version of the library") diff --git a/var/spack/repos/builtin/packages/mptensor/package.py b/var/spack/repos/builtin/packages/mptensor/package.py index d7e866b661a..c853cb5d1d5 100644 --- a/var/spack/repos/builtin/packages/mptensor/package.py +++ b/var/spack/repos/builtin/packages/mptensor/package.py @@ -19,7 +19,9 @@ class Mptensor(CMakePackage): variant("mpi", default=False, description="Build with MPI library") variant("doc", default=False, description="build documentation with Doxygen") + depends_on("c", type="build") depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") depends_on("cmake@3.6:", type="build") depends_on("mpi", when="+mpi") diff --git a/var/spack/repos/builtin/packages/msmpi/package.py b/var/spack/repos/builtin/packages/msmpi/package.py index dac04482057..f7db4d4b48c 100644 --- a/var/spack/repos/builtin/packages/msmpi/package.py +++ b/var/spack/repos/builtin/packages/msmpi/package.py @@ -28,6 +28,8 @@ class Msmpi(Package): provides("mpi") + depends_on("c", type="build") + depends_on("win-wdk") patch("ifort_compat.patch") diff --git a/var/spack/repos/builtin/packages/mumax/package.py b/var/spack/repos/builtin/packages/mumax/package.py index 31137ad2cee..8033305bc14 100644 --- a/var/spack/repos/builtin/packages/mumax/package.py +++ b/var/spack/repos/builtin/packages/mumax/package.py @@ -30,6 +30,8 @@ class Mumax(MakefilePackage, CudaPackage): variant("cuda", default=True, description="Use CUDA; must be true") variant("gnuplot", default=False, description="Use gnuplot for graphs") + depends_on("c", type="build") + depends_on("cuda") depends_on("go", type="build") depends_on("gnuplot", type="run", when="+gnuplot") diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py index e2fb94c7186..8181a5ff00d 100644 --- a/var/spack/repos/builtin/packages/namd/package.py +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -99,6 +99,9 @@ class Namd(MakefilePackage, CudaPackage, ROCmPackage): # Handle change in python-config for python@3.8: patch("namd-python38.patch", when="interface=python ^python@3.8:") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("charmpp@7.0.0:", when="@3.0:") depends_on("charmpp@6.10.1:6", when="@2.14:2") depends_on("charmpp@6.8.2", when="@2.13") diff --git a/var/spack/repos/builtin/packages/nn-c/package.py b/var/spack/repos/builtin/packages/nn-c/package.py index 70b21364de7..fe2e195d5e8 100644 --- a/var/spack/repos/builtin/packages/nn-c/package.py +++ b/var/spack/repos/builtin/packages/nn-c/package.py @@ -19,6 +19,8 @@ class NnC(AutotoolsPackage): variant("pic", default=True, description="Produce position-independent code (for shared libs)") depends_on("c", type="build") # generated + depends_on("cxx", type="build") + depends_on("fortran", type="build") configure_directory = "nn" diff --git a/var/spack/repos/builtin/packages/openfdtd/package.py b/var/spack/repos/builtin/packages/openfdtd/package.py index 4c77ea3762d..63a698ae786 100644 --- a/var/spack/repos/builtin/packages/openfdtd/package.py +++ b/var/spack/repos/builtin/packages/openfdtd/package.py @@ -23,6 +23,8 @@ class Openfdtd(MakefilePackage): variant("mpi", default=False, description="Build with MPI Support") + depends_on("c", type="build") + depends_on("mpi", when="+mpi") def url_for_version(self, version): diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 0a3f21236b2..d100f97aaf0 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -82,6 +82,7 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package variant("dynamic", default=False, description="Link with MSVC's dynamic runtime library") depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("zlib-api") depends_on("perl@5.14.0:", type=("build", "test")) diff --git a/var/spack/repos/builtin/packages/openstf/package.py b/var/spack/repos/builtin/packages/openstf/package.py index edfa498261f..22b07914261 100644 --- a/var/spack/repos/builtin/packages/openstf/package.py +++ b/var/spack/repos/builtin/packages/openstf/package.py @@ -22,6 +22,8 @@ class Openstf(MakefilePackage): variant("mpi", default=False, description="Build with MPI Support") + depends_on("c", type="build") + depends_on("mpi", when="+mpi") def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/orc/package.py b/var/spack/repos/builtin/packages/orc/package.py index 68a501dcfe6..1aeb36bea89 100644 --- a/var/spack/repos/builtin/packages/orc/package.py +++ b/var/spack/repos/builtin/packages/orc/package.py @@ -15,6 +15,7 @@ class Orc(CMakePackage): version("1.6.5", sha256="df5885db8fa2e4435db8d486c6c7fc4e2c565d6197eee27729cf9cbdf36353c0") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("maven") diff --git a/var/spack/repos/builtin/packages/pacparser/package.py b/var/spack/repos/builtin/packages/pacparser/package.py index 0666d4cc59f..a685bb67129 100644 --- a/var/spack/repos/builtin/packages/pacparser/package.py +++ b/var/spack/repos/builtin/packages/pacparser/package.py @@ -25,6 +25,7 @@ class Pacparser(MakefilePackage): ) depends_on("c", type="build") # generated + depends_on("cxx", type="build") depends_on("python", when="+python") depends_on("py-setuptools", when="+python", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/parquet-cpp/package.py b/var/spack/repos/builtin/packages/parquet-cpp/package.py index afebbd97c65..258b3af89e7 100644 --- a/var/spack/repos/builtin/packages/parquet-cpp/package.py +++ b/var/spack/repos/builtin/packages/parquet-cpp/package.py @@ -18,6 +18,7 @@ class ParquetCpp(CMakePackage): depends_on("arrow") + depends_on("c", type="build") depends_on("cxx", type="build") # generated # TODO: replace this with an explicit list of components of Boost, diff --git a/var/spack/repos/builtin/packages/pdftk/package.py b/var/spack/repos/builtin/packages/pdftk/package.py index c82fa33a33e..ade389d5e04 100644 --- a/var/spack/repos/builtin/packages/pdftk/package.py +++ b/var/spack/repos/builtin/packages/pdftk/package.py @@ -22,6 +22,8 @@ class Pdftk(MakefilePackage): version("2.02", sha256="118f6a25fd3acaafb58824dce6f97cdc07e56050e666b90e4c4ef426ea37b8c1") + depends_on("cxx", type="build") + depends_on("eclipse-gcj-parser", type="build") # Only takes effect in phases not overridden here diff --git a/var/spack/repos/builtin/packages/prank/package.py b/var/spack/repos/builtin/packages/prank/package.py index a3c419e9a18..111f5a96bf4 100644 --- a/var/spack/repos/builtin/packages/prank/package.py +++ b/var/spack/repos/builtin/packages/prank/package.py @@ -13,6 +13,7 @@ class Prank(Package): version("170427", sha256="623eb5e9b5cb0be1f49c3bf715e5fabceb1059b21168437264bdcd5c587a8859") + depends_on("c", type="build") depends_on("cxx", type="build") # generated depends_on("mafft") diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 1110cb4caf4..3b91c4dffe4 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -26,6 +26,7 @@ class Psi4(CMakePackage): values=("Debug", "Release"), ) + depends_on("c", type="build") depends_on("cxx", type="build") # generated # Required dependencies diff --git a/var/spack/repos/builtin/packages/regcm/package.py b/var/spack/repos/builtin/packages/regcm/package.py index c24533b8600..fc278837207 100644 --- a/var/spack/repos/builtin/packages/regcm/package.py +++ b/var/spack/repos/builtin/packages/regcm/package.py @@ -55,6 +55,8 @@ class Regcm(AutotoolsPackage): description="Build NetCDF using the high performance parallel " "NetCDF implementation.", ) + depends_on("fortran", type="build") + depends_on("netcdf-c") depends_on("netcdf-fortran") depends_on("hdf5") diff --git a/var/spack/repos/builtin/packages/revocap-refiner/package.py b/var/spack/repos/builtin/packages/revocap-refiner/package.py index 5bebdaf2649..6f8529af774 100644 --- a/var/spack/repos/builtin/packages/revocap-refiner/package.py +++ b/var/spack/repos/builtin/packages/revocap-refiner/package.py @@ -19,6 +19,10 @@ class RevocapRefiner(MakefilePackage): parallel = False + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + # add space between literal and identifier. patch("add_space.patch") # remove unused function getIndices. diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 9357a2cb5fa..8152d91f74e 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -69,6 +69,9 @@ class Rose(AutotoolsPackage): # -------------------------------------------------------------------------- # Dependencies # -------------------------------------------------------------------------- + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("autoconf@2.69:", type="build") depends_on("automake@1.14:", type="build") depends_on("libtool@2.4:", type="build") diff --git a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py index 72e690397fd..6f577559c61 100644 --- a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py +++ b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py @@ -540,6 +540,8 @@ class SimmetrixSimmodsuite(Package): variant("parallelmesh", default=False, description="enable parallel meshing") variant("paralleladapt", default=False, description="enable parallel adaptation") + depends_on("c", type="build") + depends_on("mpi") depends_on("libtirpc", type="link") depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/sollve/package.py b/var/spack/repos/builtin/packages/sollve/package.py index 241211fc95f..2faa3735aa5 100644 --- a/var/spack/repos/builtin/packages/sollve/package.py +++ b/var/spack/repos/builtin/packages/sollve/package.py @@ -55,6 +55,9 @@ class Sollve(CMakePackage): variant("argobots", default=True, description="Use Argobots in BOLT") extends("python", when="+python") + depends_on("c", type="build") + depends_on("cxx", type="build") + # Build dependency depends_on("cmake@3.4.3:", type="build") depends_on("python", type="build") diff --git a/var/spack/repos/builtin/packages/sos/package.py b/var/spack/repos/builtin/packages/sos/package.py index f0d9c62fe50..dc796b3f8ae 100644 --- a/var/spack/repos/builtin/packages/sos/package.py +++ b/var/spack/repos/builtin/packages/sos/package.py @@ -65,6 +65,10 @@ class Sos(AutotoolsPackage): variant("hard-polling", default=False, description="Enable hard polling of wait calls") variant("fortran", default=False, description="Enable fortran API") + 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") depends_on("libtool", type="build") diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index a5b0871684f..8432cd86dc7 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -22,6 +22,8 @@ class SpectrumMpi(BundlePackage): requires("platform=linux") + depends_on("c", type="build") + executables = ["^ompi_info$"] @classmethod diff --git a/var/spack/repos/builtin/packages/srilm/package.py b/var/spack/repos/builtin/packages/srilm/package.py index a94347d8a8b..f5f1089fdeb 100644 --- a/var/spack/repos/builtin/packages/srilm/package.py +++ b/var/spack/repos/builtin/packages/srilm/package.py @@ -26,6 +26,9 @@ class Srilm(MakefilePackage): variant("pic", default=False, description="Build position independent code") variant("liblbfgs", default=False, description="Enable libLBFGS") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("iconv") depends_on("liblbfgs", when="+liblbfgs") depends_on("gawk", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/stripack/package.py b/var/spack/repos/builtin/packages/stripack/package.py index a819797c2cd..9bc0be06d19 100644 --- a/var/spack/repos/builtin/packages/stripack/package.py +++ b/var/spack/repos/builtin/packages/stripack/package.py @@ -29,6 +29,8 @@ class Stripack(MakefilePackage): url="https://people.sc.fsu.edu/~jburkardt/f_src/stripack/stripack.f90", ) + depends_on("fortran", type="build") + @run_before("build") def run_mkmake(self): config = [ diff --git a/var/spack/repos/builtin/packages/sumaclust/package.py b/var/spack/repos/builtin/packages/sumaclust/package.py index b5d0fcaf6c2..b0330d52057 100644 --- a/var/spack/repos/builtin/packages/sumaclust/package.py +++ b/var/spack/repos/builtin/packages/sumaclust/package.py @@ -19,6 +19,8 @@ class Sumaclust(MakefilePackage): url="https://git.metabarcoding.org/obitools/sumaclust/uploads/69f757c42f2cd45212c587e87c75a00f/sumaclust_v1.0.20.tar.gz", ) + depends_on("c", type="build") + def build(self, spec, prefix): make("CC={0}".format(spack_cc)) diff --git a/var/spack/repos/builtin/packages/sw4lite/package.py b/var/spack/repos/builtin/packages/sw4lite/package.py index 209c7eae62f..9390c8f9431 100644 --- a/var/spack/repos/builtin/packages/sw4lite/package.py +++ b/var/spack/repos/builtin/packages/sw4lite/package.py @@ -30,6 +30,8 @@ class Sw4lite(MakefilePackage, CudaPackage): ) variant("ckernel", default=False, description="C or Fortran kernel") + depends_on("cxx", type="build") + depends_on("blas") depends_on("lapack") depends_on("mpi") diff --git a/var/spack/repos/builtin/packages/tmalign/package.py b/var/spack/repos/builtin/packages/tmalign/package.py index 1e5dc71a616..eb358dcf407 100644 --- a/var/spack/repos/builtin/packages/tmalign/package.py +++ b/var/spack/repos/builtin/packages/tmalign/package.py @@ -28,6 +28,8 @@ class Tmalign(Package): variant("fast-math", default=False, description="Enable fast math", when="@20220412:") + depends_on("cxx", type="build") + with when("@20220412:"): phases = ["build", "install"] diff --git a/var/spack/repos/builtin/packages/tmscore/package.py b/var/spack/repos/builtin/packages/tmscore/package.py index 2426616d202..dc137d9219a 100644 --- a/var/spack/repos/builtin/packages/tmscore/package.py +++ b/var/spack/repos/builtin/packages/tmscore/package.py @@ -22,6 +22,8 @@ class Tmscore(Package): variant("fast-math", default=False, description="Enable fast math") + depends_on("cxx", type="build") + phases = ["build", "install"] def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/unrar/package.py b/var/spack/repos/builtin/packages/unrar/package.py index 52ed8e00d71..58d7baffd03 100644 --- a/var/spack/repos/builtin/packages/unrar/package.py +++ b/var/spack/repos/builtin/packages/unrar/package.py @@ -23,7 +23,7 @@ class Unrar(MakefilePackage): def edit(self, spec, prefix): makefile = FileFilter("makefile") - makefile.filter("LIBFLAGS=-fPIC", "LIBFLAGS={0}".format(self.compiler.cc_pic_flag)) + makefile.filter("LIBFLAGS=-fPIC", "LIBFLAGS={0}".format(self.compiler.cxx_pic_flag)) makefile.filter("DESTDIR=/usr", "DESTDIR={0}".format(self.prefix)) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/usalign/package.py b/var/spack/repos/builtin/packages/usalign/package.py index 2176c3766bb..846930adfe0 100644 --- a/var/spack/repos/builtin/packages/usalign/package.py +++ b/var/spack/repos/builtin/packages/usalign/package.py @@ -31,6 +31,8 @@ class Usalign(Package): variant("fast-math", default=False, description="Enable fast math") + depends_on("cxx", type="build") + phases = ["build", "install"] def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/vasp/package.py b/var/spack/repos/builtin/packages/vasp/package.py index fab016d467b..1e4744d8a81 100644 --- a/var/spack/repos/builtin/packages/vasp/package.py +++ b/var/spack/repos/builtin/packages/vasp/package.py @@ -68,6 +68,10 @@ class Vasp(MakefilePackage, CudaPackage): variant("shmem", default=True, description="Enable use_shmem build flag") variant("hdf5", default=False, when="@6.2:", description="Enabled HDF5 support") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("rsync", type="build") depends_on("blas") depends_on("lapack") diff --git a/var/spack/repos/builtin/packages/xabclib/package.py b/var/spack/repos/builtin/packages/xabclib/package.py index a7aad79e2c3..5c700f5ca35 100644 --- a/var/spack/repos/builtin/packages/xabclib/package.py +++ b/var/spack/repos/builtin/packages/xabclib/package.py @@ -15,6 +15,9 @@ class Xabclib(MakefilePackage): version("1.03", sha256="9d200f40f1db87abc26cfe75a22db3a6d972988a28fc0ce8421a0c88cc574d1a") + depends_on("c", type="build") + depends_on("fortran", type="build") + def edit(self, spec, prefix): cc = [spack_cc, "-O3", self.compiler.openmp_flag] fc = [spack_fc, "-O3", self.compiler.openmp_flag] diff --git a/var/spack/repos/builtin/packages/xios/package.py b/var/spack/repos/builtin/packages/xios/package.py index 1fb036e5d7b..7141ac4998a 100644 --- a/var/spack/repos/builtin/packages/xios/package.py +++ b/var/spack/repos/builtin/packages/xios/package.py @@ -57,6 +57,9 @@ class Xios(Package): patch("earcut_missing_include_2.6.patch", when="@2.6:") + depends_on("c", type="build") + depends_on("fortran", type="build") + depends_on("netcdf-c+mpi") depends_on("netcdf-fortran") depends_on("hdf5+mpi") diff --git a/var/spack/repos/builtin/packages/zpares/package.py b/var/spack/repos/builtin/packages/zpares/package.py index 953a9cc390a..671163420c6 100644 --- a/var/spack/repos/builtin/packages/zpares/package.py +++ b/var/spack/repos/builtin/packages/zpares/package.py @@ -19,6 +19,8 @@ class Zpares(MakefilePackage): variant("mpi", default=False, description="Activates MPI support") variant("mumps", default=False, description="Activates MUMPS support") + depends_on("fortran", type="build") + depends_on("mumps+mpi", when="+mumps+mpi") depends_on("mumps~mpi", when="+mumps~mpi") depends_on("lapack") From 32a4eb4ebbddeba8d904680192ac7b2f92695e38 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:45:24 -0500 Subject: [PATCH 052/317] jwt-cpp: add v0.7.1 (#49917) * jwt-cpp: add v0.7.1 * jwt-cpp: depends on c only thru 0.7.0 * jwt-cpp: fix checksum --- var/spack/repos/builtin/packages/jwt-cpp/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/jwt-cpp/package.py b/var/spack/repos/builtin/packages/jwt-cpp/package.py index e9c2f2a9cbb..fd8750879c7 100644 --- a/var/spack/repos/builtin/packages/jwt-cpp/package.py +++ b/var/spack/repos/builtin/packages/jwt-cpp/package.py @@ -15,6 +15,7 @@ class JwtCpp(CMakePackage): license("MIT") + version("0.7.1", sha256="e52f247d5e62fac5da6191170998271a70ce27f747f2ce8fde9b09f96a5375a4") version("0.7.0", sha256="b9eb270e3ba8221e4b2bc38723c9a1cb4fa6c241a42908b9a334daff31137406") version("0.6.0", sha256="0227bd6e0356b211341075c7997c837f0b388c01379bd256aa525566a5553f03") version("0.5.2", sha256="d3188f9611597eb1bb285169879e1d87202bf10a08e4e7734c9f2097bfd4a850") @@ -35,7 +36,7 @@ class JwtCpp(CMakePackage): description="SSL library to use", ) - depends_on("c", type="build") + depends_on("c", type="build", when="@:0.7.0") depends_on("cxx", type="build") depends_on("openssl@1.0.2:", when="@0.4.0:0.4.99") From cf5ba8aee3dadd1656fd342bb5d0914f53745ec2 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:46:06 -0500 Subject: [PATCH 053/317] dbus: add v1.16.2 (#49916) --- 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 186f0b8ca83..bff2aef5cc1 100644 --- a/var/spack/repos/builtin/packages/dbus/package.py +++ b/var/spack/repos/builtin/packages/dbus/package.py @@ -30,6 +30,7 @@ class Dbus(AutotoolsPackage, MesonPackage): ) # Note: odd minor versions are unstable, keep last stable version preferred + version("1.16.2", sha256="0ba2a1a4b16afe7bceb2c07e9ce99a8c2c3508e5dec290dbb643384bd6beb7e2") version("1.16.0", sha256="9f8ca5eb51cbe09951aec8624b86c292990ae2428b41b856e2bed17ec65c8849") version("1.15.12", sha256="0589c9c707dd593e31f0709caefa5828e69c668c887a7c0d2e5ba445a86bae4d") version("1.15.10", sha256="f700f2f1d0473f11e52f3f3e179f577f31b85419f9ae1972af8c3db0bcfde178") From e7bca5b8f60701c28dfba18519e0d376d517259c Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 7 Apr 2025 11:46:37 -0500 Subject: [PATCH 054/317] cppgsl: add v4.2.0 (#49915) --- var/spack/repos/builtin/packages/cppgsl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cppgsl/package.py b/var/spack/repos/builtin/packages/cppgsl/package.py index 864233af9b7..bb267bad557 100644 --- a/var/spack/repos/builtin/packages/cppgsl/package.py +++ b/var/spack/repos/builtin/packages/cppgsl/package.py @@ -15,6 +15,7 @@ class Cppgsl(CMakePackage): license("MIT") version("main", branch="main") + version("4.2.0", sha256="2c717545a073649126cb99ebd493fa2ae23120077968795d2c69cbab821e4ac6") version("4.1.0", sha256="0a227fc9c8e0bf25115f401b9a46c2a68cd28f299d24ab195284eb3f1d7794bd") version("4.0.0", sha256="f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9") version("3.1.0", sha256="d3234d7f94cea4389e3ca70619b82e8fb4c2f33bb3a070799f1e18eef500a083") From cfbc92c2f0246bb314ac27d479ae329baa2f94da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 09:49:58 -0700 Subject: [PATCH 055/317] build(deps): bump flake8 from 7.1.2 to 7.2.0 in /lib/spack/docs (#49816) Bumps [flake8](https://github.com/pycqa/flake8) from 7.1.2 to 7.2.0. - [Commits](https://github.com/pycqa/flake8/compare/7.1.2...7.2.0) --- updated-dependencies: - dependency-name: flake8 dependency-version: 7.2.0 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 7149d30efe6..526d13f52f5 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -9,5 +9,5 @@ urllib3==2.3.0 pytest==8.3.5 isort==6.0.1 black==25.1.0 -flake8==7.1.2 +flake8==7.2.0 mypy==1.11.1 From 7d0dd273635fa29fcb7de62d3e4aad6d569b2e3f Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 7 Apr 2025 18:56:45 +0200 Subject: [PATCH 056/317] py-setuptools-scm: add v8.2.1 (#49901) --- var/spack/repos/builtin/packages/py-setuptools-scm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py index 585db295a9c..ad508f64899 100644 --- a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py @@ -16,6 +16,7 @@ class PySetuptoolsScm(PythonPackage): license("MIT") + version("8.2.1", sha256="51cfdd1deefc9b8c08d1a61e940a59c4dec39eb6c285d33fa2f1b4be26c7874d") version("8.2.0", sha256="a18396a1bc0219c974d1a74612b11f9dce0d5bd8b1dc55c65f6ac7fd609e8c28") version("8.1.0", sha256="42dea1b65771cba93b7a515d65a65d8246e560768a66b9106a592c8e7f26c8a7") version("8.0.4", sha256="b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7") From d403060cf2362c06b6a4e82cbb86c1d59a9041fe Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Mon, 7 Apr 2025 11:05:41 -0600 Subject: [PATCH 057/317] trilinos: patch version 16.1.0 to build on MacOS. (#49811) --- .../trilinos/16-1-0-stk-fpe-exceptions.patch | 122 ++++++++++++++++++ .../builtin/packages/trilinos/package.py | 3 + 2 files changed, 125 insertions(+) create mode 100644 var/spack/repos/builtin/packages/trilinos/16-1-0-stk-fpe-exceptions.patch diff --git a/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-fpe-exceptions.patch b/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-fpe-exceptions.patch new file mode 100644 index 00000000000..7470a720000 --- /dev/null +++ b/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-fpe-exceptions.patch @@ -0,0 +1,122 @@ +diff --git a/packages/stk/stk_util/stk_util/util/FPExceptions.hpp b/packages/stk/stk_util/stk_util/util/FPExceptions.hpp +index e2f94a533d0..b539aa8a7dd 100644 +--- a/packages/stk/stk_util/stk_util/util/FPExceptions.hpp ++++ b/packages/stk/stk_util/stk_util/util/FPExceptions.hpp +@@ -14,7 +14,7 @@ + namespace stk { + namespace util { + +-constexpr bool have_errno() ++inline bool have_errno() + { + #ifdef STK_HAVE_FP_ERRNO + return math_errhandling & MATH_ERRNO; +@@ -23,7 +23,7 @@ constexpr bool have_errno() + #endif + } + +-constexpr bool have_errexcept() ++inline bool have_errexcept() + { + #ifdef STK_HAVE_FP_EXCEPT + return math_errhandling & MATH_ERREXCEPT; +@@ -38,7 +38,7 @@ std::string get_fe_except_string(int fe_except_bitmask); + + inline void clear_fp_errors() + { +- if constexpr (have_errexcept()) ++ if (have_errexcept()) + { + // experimental results show calling std::feclearexcept is *very* + // expensive, so dont call it unless needed. +@@ -46,7 +46,7 @@ inline void clear_fp_errors() + { + std::feclearexcept(FE_EXCEPT_CHECKS); + } +- } else if constexpr (have_errno()) ++ } else if (have_errno()) + { + errno = 0; + } +@@ -54,7 +54,7 @@ inline void clear_fp_errors() + + inline void throw_or_warn_on_fp_error(const char* fname = nullptr, bool warn=false, std::ostream& os = std::cerr) + { +- if constexpr (have_errexcept()) ++ if (have_errexcept()) + { + int fe_except_bitmask = std::fetestexcept(FE_EXCEPT_CHECKS); + if (fe_except_bitmask != 0) +@@ -68,7 +68,7 @@ inline void throw_or_warn_on_fp_error(const char* fname = nullptr, bool warn=fal + STK_ThrowRequireMsg(fe_except_bitmask == 0, msg); + } + } +- } else if constexpr (have_errno()) ++ } else if (have_errno()) + { + if (errno != 0) + { +diff --git a/packages/stk/stk_util/stk_util/util/PairIter.hpp b/packages/stk/stk_util/stk_util/util/PairIter.hpp +index e468dfff0af..edc9b62f1be 100644 +--- a/packages/stk/stk_util/stk_util/util/PairIter.hpp ++++ b/packages/stk/stk_util/stk_util/util/PairIter.hpp +@@ -35,6 +35,7 @@ + #ifndef stk_util_util_PairIter_hpp + #define stk_util_util_PairIter_hpp + ++#include + #include + #include + +diff --git a/packages/stk/stk_util/stk_util/util/ReportHandler.hpp b/packages/stk/stk_util/stk_util/util/ReportHandler.hpp +index e7ed6ca6b23..c632361a3a6 100644 +--- a/packages/stk/stk_util/stk_util/util/ReportHandler.hpp ++++ b/packages/stk/stk_util/stk_util/util/ReportHandler.hpp +@@ -40,7 +40,6 @@ + #include // for operator+, allocator, string, char_traits + #include + +-#include "stk_util/diag/String.hpp" + #include "stk_util/stk_kokkos_macros.h" // for STK_FUNCTION + + #ifdef STK_ENABLE_GPU_BUT_NO_RDC +@@ -266,7 +265,7 @@ class is_valid_throw_condition + + public: + static constexpr bool value = +- !is_same_as_any::value && !is_string_literal::value; ++ !is_same_as_any::value && !is_string_literal::value; + }; + template + inline auto eval_test_condition(const T& val) +diff --git a/packages/stk/stk_util/stk_util/util/concat_variable_name.cpp b/packages/stk/stk_util/stk_util/util/concat_variable_name.cpp +index c322a06fd41..a6fecf922be 100644 +--- a/packages/stk/stk_util/stk_util/util/concat_variable_name.cpp ++++ b/packages/stk/stk_util/stk_util/util/concat_variable_name.cpp +@@ -34,7 +34,6 @@ + + #include "stk_util/util/concat_variable_name.hpp" + #include // for size_t +-#include "stk_util/util/ReportHandler.hpp" + + namespace stk { + namespace util { +@@ -60,6 +59,5 @@ namespace util { + return false; + } + } +- + } + } +diff --git a/packages/stk/stk_util/stk_util/util/concat_variable_name.hpp b/packages/stk/stk_util/stk_util/util/concat_variable_name.hpp +index 997accb9943..73eb2ae9b36 100644 +--- a/packages/stk/stk_util/stk_util/util/concat_variable_name.hpp ++++ b/packages/stk/stk_util/stk_util/util/concat_variable_name.hpp +@@ -36,7 +36,6 @@ + #define STK_UTIL_UTIL_CONCAT_VARIABLE_NAME_H + + #include // for string +-#include + namespace stk { + namespace util { + /*! diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 9a95a8df89b..58a180b15a9 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -554,6 +554,9 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # https://github.com/trilinos/Trilinos/pull/11600 patch("13.4.1-patch11600.patch", when="@13.4.1 %oneapi@2025:") + # https://github.com/trilinos/Trilinos/pull/13921 + patch("16-1-0-stk-fpe-exceptions.patch", when="@=16.1.0 +stk platform=darwin") + def flag_handler(self, name, flags): spec = self.spec is_cce = spec.satisfies("%cce") From b6dec56f4f48c07877dab69b1be666cc62f0a3f5 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 8 Apr 2025 01:26:26 -0500 Subject: [PATCH 058/317] lbzip2: change URL and deprecate (#49948) --- .../repos/builtin/packages/lbzip2/package.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/lbzip2/package.py b/var/spack/repos/builtin/packages/lbzip2/package.py index 5174339313b..c8057e2ee69 100644 --- a/var/spack/repos/builtin/packages/lbzip2/package.py +++ b/var/spack/repos/builtin/packages/lbzip2/package.py @@ -9,7 +9,17 @@ class Lbzip2(AutotoolsPackage): """Multi-threaded compression utility with support for bzip2 compressed file format""" - homepage = "https://lbzip2.org/" - url = "http://archive.lbzip2.org/lbzip2-2.5.tar.gz" + homepage = "https://github.com/kjn/lbzip2/" + url = "https://github.com/kjn/lbzip2/archive/refs/tags/v2.5.tar.gz" - version("2.5", sha256="46c75ee93cc95eedc6005625442b2b8e59a2bef3ba80987d0491f055185650e9") + depends_on("c", type="build") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + + version( + "2.5", + sha256="7be69ece83ecdc8f12b9201d838eee5cdb499f2fd68cffd2af58866076ccac43", + deprecated=True, + ) From 86b57c233debb046d658af37aeded2eead153891 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 8 Apr 2025 01:48:32 -0500 Subject: [PATCH 059/317] apptainer: add v1.4.0 (#49912) --- var/spack/repos/builtin/packages/apptainer/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/apptainer/package.py b/var/spack/repos/builtin/packages/apptainer/package.py index 97b7d512b35..8d2eff14420 100644 --- a/var/spack/repos/builtin/packages/apptainer/package.py +++ b/var/spack/repos/builtin/packages/apptainer/package.py @@ -37,6 +37,7 @@ class Apptainer(SingularityBase): ) version("main", branch="main", get_full_repo=True) # apptainer version uses git describe + version("1.4.0", sha256="204cded54046547cb3eb4c7874bdf45892fedc58b0d104195c59d2972cba51d3") version("1.3.6", sha256="b5343369e7fdf67572f887d81f8d2b938f099fb39c876d96430d747935960d51") version("1.3.5", sha256="fe1c977da952edf1056915b2df67ae2203ef06065d4e4901a237c902329306b2") version("1.3.4", sha256="c6ccfdd7c967e5c36dde8711f369c4ac669a16632b79fa0dcaf7e772b7a47397") @@ -53,18 +54,23 @@ class Apptainer(SingularityBase): version("1.1.3", sha256="c7bf7f4d5955e1868739627928238d02f94ca9fd0caf110b0243d65548427899") version("1.0.2", sha256="2d7a9d0a76d5574459d249c3415e21423980d9154ce85e8c34b0600782a7dfd3") + variant("libsubid", default=True, when="@1.4:", description="Enable libsubid support") + depends_on("c", type="build") # generated depends_on("e2fsprogs@1.47:+fuse2fs", type="run") depends_on("go@1.17.5:", when="@1.1.0:") depends_on("go@1.19:", when="@1.2:") depends_on("go@1.20:", when="@1.3:") + depends_on("go@1.22.7:", when="@1.4:") depends_on("gocryptfs@2.4:", type="run", when="@1.3:") depends_on("squashfuse", type="run") depends_on("squashfuse@0.5.1:", type="run", when="@1.3:") depends_on("fuse-overlayfs", type="run") depends_on("fuse-overlayfs@1.13:", type="run", when="@1.3:") + depends_on("shadow", when="+libsubid") + singularity_org = "apptainer" singularity_name = "apptainer" singularity_security_urls = ( @@ -79,6 +85,10 @@ def config_options(self): options = [] if spec.satisfies("@1.1.0: +suid"): options.append("--with-suid") + if spec.satisfies("+libsubid"): + options.append("--with-libsubid") + else: + options.append("--without-libsubid") return options def flag_handler(self, name, flags): From 58ac6f7cba2e5fc944473a177c7501eed8e3e247 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 8 Apr 2025 01:49:07 -0500 Subject: [PATCH 060/317] py-kiwisolver: add v1.4.6, v1.4.7, v1.4.8 (#49911) --- var/spack/repos/builtin/packages/py-cppy/package.py | 2 ++ var/spack/repos/builtin/packages/py-kiwisolver/package.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-cppy/package.py b/var/spack/repos/builtin/packages/py-cppy/package.py index 5199ac5d410..99bbee58e29 100644 --- a/var/spack/repos/builtin/packages/py-cppy/package.py +++ b/var/spack/repos/builtin/packages/py-cppy/package.py @@ -13,6 +13,8 @@ class PyCppy(PythonPackage): license("BSD-3-Clause") + version("1.3.1", sha256="55b5307c11874f242ea135396f398cb67a5bbde4fab3e3c3294ea5fce43a6d68") + version("1.3.0", sha256="da7413a286d5d31626ba35ed2c70ddfb033520cc81310088ba5a57d34039f604") version("1.2.1", sha256="83b43bf17b1085ac15c5debdb42154f138b928234b21447358981f69d0d6fe1b") version("1.1.0", sha256="4eda6f1952054a270f32dc11df7c5e24b259a09fddf7bfaa5f33df9fb4a29642") diff --git a/var/spack/repos/builtin/packages/py-kiwisolver/package.py b/var/spack/repos/builtin/packages/py-kiwisolver/package.py index d814ee3d26b..f6b9b0b0c1f 100644 --- a/var/spack/repos/builtin/packages/py-kiwisolver/package.py +++ b/var/spack/repos/builtin/packages/py-kiwisolver/package.py @@ -11,6 +11,9 @@ class PyKiwisolver(PythonPackage): homepage = "https://github.com/nucleic/kiwi" pypi = "kiwisolver/kiwisolver-1.1.0.tar.gz" + version("1.4.8", sha256="23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e") + version("1.4.7", sha256="9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60") + version("1.4.6", sha256="3cda29d601445e6aa11f80d90a9b8c2ae501650c55d7ad29829bd44499c9e7e0") version("1.4.5", sha256="e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec") version("1.4.4", sha256="d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955") version("1.3.2", sha256="fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c") @@ -25,10 +28,13 @@ class PyKiwisolver(PythonPackage): depends_on("python@2.7:2.8,3.4:", type=("build", "run")) depends_on("python@3.6:", type=("build", "run"), when="@1.2.0:") depends_on("python@3.7:", type=("build", "run"), when="@1.3.2:") + depends_on("python@3.8:", type=("build", "run"), when="@1.4.6:") + depends_on("python@3.10:", type=("build", "run"), when="@1.4.8:") depends_on("py-setuptools", type="build") depends_on("py-setuptools@61.2:", when="@1.4.4:", type="build") depends_on("py-setuptools-scm@3.4.3:+toml", when="@1.4.4:", type="build") depends_on("py-cppy@1.1.0:", type="build", when="@1.2.0:") depends_on("py-cppy@1.2.0:", type="build", when="@1.4.4:") + depends_on("py-cppy@1.3.0:", type="build", when="@1.4.8:") depends_on("py-typing-extensions", when="@1.4.4: ^python@:3.7", type=("build", "run")) From a919b67cb4fb15719ffece5a1be97f01f5395a0b Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 8 Apr 2025 01:50:52 -0500 Subject: [PATCH 061/317] hep: root +arrow +emaca (#49931) --- share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml index cfdb74bdf91..4668b811065 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml @@ -25,7 +25,7 @@ spack: rivet: require: hepmc=3 root: - require: +davix +dcache +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +tmva-cpu +unuran +vc +vdt +veccore +webgui +x +xml +xrootd # cxxstd=20 + require: +arrow +davix +dcache +emacs +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +tmva-cpu +unuran +vc +vdt +veccore +webgui +x +xml +xrootd # cxxstd=20 # note: root cxxstd=20 not concretizable within sherpa vecgeom: require: +gdml +geant4 +root +shared cxxstd=20 From 6228247edabf5e2cac1157e4f35bfae0b547e257 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 8 Apr 2025 01:51:22 -0500 Subject: [PATCH 062/317] hep: build Geant4 with Qt5 and Qt6 (#49777) * hep: build geant4 with qt5 and qt6 * hep: keep geant4 ~vtk for now --- share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml index 4668b811065..6c6b6d91295 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml @@ -20,6 +20,8 @@ spack: require: +analysis +dd4hep +edm4hep +examples +fatras +geant4 +hepmc3 +podio +pythia8 +python +svg +tgeo cxxstd=20 celeritas: require: +geant4 +hepmc3 +root +shared cxxstd=20 + geant4: + require: +opengl +qt +threads +x11 hip: require: '@5.7.1 +rocm' rivet: @@ -66,7 +68,8 @@ spack: - fjcontrib #- garfieldpp - gaudi +aida +examples +heppdt +xercesc ^gdb +debuginfod +python - - geant4 +opengl +qt +threads ~vtk ^[virtuals=qmake] qt + - geant4 ~vtk ^[virtuals=qmake] qt + - geant4 ~vtk ^[virtuals=qmake] qt-base #- genie +atmo - hepmc - hepmc3 +interfaces +protobuf +python +rootio From 357089f3473c1ca493859b65ba4082240a569a93 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 8 Apr 2025 08:54:39 +0200 Subject: [PATCH 063/317] py-nbstripout: add v0.8.1 (#49896) --- var/spack/repos/builtin/packages/py-nbstripout/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-nbstripout/package.py b/var/spack/repos/builtin/packages/py-nbstripout/package.py index 5ba6f3cfa29..d461eb6d2f7 100644 --- a/var/spack/repos/builtin/packages/py-nbstripout/package.py +++ b/var/spack/repos/builtin/packages/py-nbstripout/package.py @@ -13,6 +13,7 @@ class PyNbstripout(PythonPackage): license("MIT") + version("0.8.1", sha256="eaac8b6b4e729e8dfe1e5df2c0f8ba44abc5a17a65448f0480141f80be230bb1") version("0.6.1", sha256="9065bcdd1488b386e4f3c081ffc1d48f4513a2f8d8bf4d0d9a28208c5dafe9d3") depends_on("py-setuptools", type="build") From 9e6e478ccf6a41eb6a4c26e46adbf1c007e6fb85 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 8 Apr 2025 09:12:34 +0200 Subject: [PATCH 064/317] llvm: don't detect +flang multiple times (#49876) fixes #49831 Signed-off-by: Massimiliano Culpo --- .../builtin/packages/llvm/detection_test.yaml | 28 +++++++++++++++++++ .../repos/builtin/packages/llvm/package.py | 12 ++++---- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/detection_test.yaml b/var/spack/repos/builtin/packages/llvm/detection_test.yaml index a189b585680..482c0941d16 100644 --- a/var/spack/repos/builtin/packages/llvm/detection_test.yaml +++ b/var/spack/repos/builtin/packages/llvm/detection_test.yaml @@ -68,6 +68,34 @@ paths: cxx: ".*/bin/clang[+][+]" fortran: ".*/bin/flang" +# flang and flang-new in the same directory +- layout: + - executables: + - "bin/clang" + - "bin/clang++" + script: | + echo "clang version 20.1.0-rc1 (https://github.com/llvm/llvm-project af7f483a9d801252247b6c72e3763c1f55c5a506)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /tmp/clang/LLVM-20.1.0-rc1-Linux-X64/bin" + - executables: + - "bin/flang" + - "bin/flang-new" + script: | + echo "flang version 20.1.0-rc1 (https://github.com/llvm/llvm-project af7f483a9d801252247b6c72e3763c1f55c5a506)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /tmp/clang/LLVM-20.1.0-rc1-Linux-X64/bin" + platforms: ["darwin", "linux"] + results: + - spec: 'llvm@20.1.0 +flang+clang~lld~lldb' + extra_attributes: + compilers: + c: ".*/bin/clang" + cxx: ".*/bin/clang[+][+]" + fortran: ".*/bin/flang" + + # `~` and other weird characters in the version string - layout: - executables: diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 4ee27a5d1f8..394dd852af8 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -801,7 +801,7 @@ def determine_version(cls, exe): def determine_variants(cls, exes, version_str): # Do not need to reuse more general logic from CompilerPackage # because LLVM has kindly named compilers - variants, compilers = ["+clang"], {} + variants, compilers = {"+clang"}, {} lld_found, lldb_found = False, False for exe in sorted(exes, key=len): name = os.path.basename(exe) @@ -809,18 +809,18 @@ def determine_variants(cls, exes, version_str): compilers.setdefault("cxx", exe) elif "clang" in name: compilers.setdefault("c", exe) - elif "flang" in name: - variants.append("+flang") + elif "flang" in name and "fortran" not in compilers: + variants.add("+flang") compilers.setdefault("fortran", exe) elif "ld.lld" in name: lld_found = True elif "lldb" in name: lldb_found = True - variants.append("+lld" if lld_found else "~lld") - variants.append("+lldb" if lldb_found else "~lldb") + variants.add("+lld" if lld_found else "~lld") + variants.add("+lldb" if lldb_found else "~lldb") - return "".join(variants), {"compilers": compilers} + return "".join(sorted(variants)), {"compilers": compilers} @classmethod def validate_detected_spec(cls, spec, extra_attributes): From e7b009e350479a70bd2cc3592215645160ba4c8f Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 8 Apr 2025 15:17:21 +0200 Subject: [PATCH 065/317] asp.py: reduce verbosity of "preferences" comment (#49954) --- lib/spack/spack/solver/asp.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 26440475ef9..0e263d22d86 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -2334,6 +2334,8 @@ def preferred_variants(self, pkg_name): if not preferred_variants: return + self.gen.h2(f"Package preferences: {pkg_name}") + for variant_name in sorted(preferred_variants): variant = preferred_variants[variant_name] @@ -3128,7 +3130,6 @@ def setup( for pkg in sorted(self.pkgs): self.gen.h2("Package rules: %s" % pkg) self.pkg_rules(pkg, tests=self.tests) - self.gen.h2("Package preferences: %s" % pkg) self.preferred_variants(pkg) self.gen.h1("Special variants") From 129338c4c9cb8a54771b5a20aa20f0c5cce4172f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 8 Apr 2025 17:27:17 +0200 Subject: [PATCH 066/317] Group together all concretization unit test (#49960) In this way, to run them, we just need to run: spack unit-test lib/spack/spack/test/concretization Signed-off-by: Massimiliano Culpo --- .../spack/test/{abi_splicing.py => concretization/splicing.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/spack/spack/test/{abi_splicing.py => concretization/splicing.py} (100%) diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/concretization/splicing.py similarity index 100% rename from lib/spack/spack/test/abi_splicing.py rename to lib/spack/spack/test/concretization/splicing.py From dd8d2a25153a7f89594d247cb2870625e2f0c0a9 Mon Sep 17 00:00:00 2001 From: Adrien Bernede <51493078+adrienbernede@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:29:16 +0200 Subject: [PATCH 067/317] Radiuss-Spack-Configs update 2025-03-0 (#49637) * Clearly split old and new hip settings requirements * Fix style * TO REVERT: Trigger CI * Apply generic rocm handling to every project * TO REVERT: Trigger CI * Revert "TO REVERT: Trigger CI" This reverts commit dcedb2ead52e510fdf10a38b0c2a503596e65678. * Revert "TO REVERT: Trigger CI" This reverts commit 02f76a8ca636df7e5a7cfc16367e8704a43773a5. * Update RADIUSS packages with latest release and sync with RSC implementation * Update CARE package * make default logic for hip support more robust * TO REVERT: Trigger CI * Fix style * Fix style (bis) * Shorten message * GPU_TARGET is only necessary under certain project specific conditions, it should not be necessary in general * Update logic to find amdclang++ * Fix syntax * Let's postpone update of hip handling in camp * Revert "TO REVERT: Trigger CI" This reverts commit 620fbc1b018b0e8c77db670d917223041eef15bc. * Remove unecessary logic from CARE * Update CARE: add 0.15.1 --- .../repos/builtin/packages/caliper/package.py | 14 +++++++ .../repos/builtin/packages/camp/package.py | 8 +++- .../repos/builtin/packages/care/package.py | 39 +++++++++++++++---- .../repos/builtin/packages/chai/package.py | 10 ++++- .../builtin/packages/raja-perf/package.py | 12 +++++- .../repos/builtin/packages/raja/package.py | 17 +++++++- .../repos/builtin/packages/umpire/package.py | 20 ++++++++-- 7 files changed, 104 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index ab1795d6cec..d133d62247f 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import socket import sys from spack.package import * @@ -149,6 +150,19 @@ def _get_sys_type(self, spec): sys_type = env["SYS_TYPE"] return sys_type + @property + def cache_name(self): + hostname = socket.gethostname() + if "SYS_TYPE" in env: + hostname = hostname.rstrip("1234567890") + return "{0}-{1}-{2}@{3}-{4}.cmake".format( + hostname, + self._get_sys_type(self.spec), + self.spec.compiler.name, + self.spec.compiler.version, + self.spec.dag_hash(8), + ) + def initconfig_compiler_entries(self): spec = self.spec entries = super().initconfig_compiler_entries() diff --git a/var/spack/repos/builtin/packages/camp/package.py b/var/spack/repos/builtin/packages/camp/package.py index 07a8b4ff2ef..c0f873f715e 100644 --- a/var/spack/repos/builtin/packages/camp/package.py +++ b/var/spack/repos/builtin/packages/camp/package.py @@ -15,11 +15,17 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/LLNL/camp.git" url = "https://github.com/LLNL/camp/archive/v0.1.0.tar.gz" - maintainers("trws", "adrienbernede") + maintainers("adrienbernede", "kab163", "trws") license("BSD-3-Clause") version("main", branch="main", submodules=False) + version( + "2025.03.0", + tag="v2025.03.0", + commit="ee0a3069a7ae72da8bcea63c06260fad34901d43", + submodules=False, + ) version( "2024.07.0", tag="v2024.07.0", diff --git a/var/spack/repos/builtin/packages/care/package.py b/var/spack/repos/builtin/packages/care/package.py index aaec56cd8eb..002a4f23877 100644 --- a/var/spack/repos/builtin/packages/care/package.py +++ b/var/spack/repos/builtin/packages/care/package.py @@ -24,6 +24,30 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop", submodules=False) version("master", branch="master", submodules=False) + version( + "0.15.1", + tag="v0.15.1", + commit="f198c8b3d5dcfd274107b4263331818e86b50c7a", + submodules=False, + ) + version( + "0.15.0", + tag="v0.15.0", + commit="aff9eea69b6d95342371aacc44b73bef785255f3", + submodules=False, + ) + version( + "0.14.1", + tag="v0.14.1", + commit="110c6e5766ead59b231e2b05deecd7567874e907", + submodules=False, + ) + version( + "0.14.0", + tag="v0.14.0", + commit="2784188a067abac35747d58b5a5daa1b3852756b", + submodules=False, + ) version( "0.13.3", tag="v0.13.3", @@ -67,6 +91,7 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): variant( "implicit_conversions", default=False, + when="@:0.14", description="Enable implicit" "conversions to/from raw pointers", ) variant("tests", default=False, description="Build tests") @@ -111,7 +136,6 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("raja@2024.02.0:", when="@0.12.0:") depends_on("raja@2022.10.5:", when="@0.10.0:") - # TODO: Add an enable_pick variant depends_on("chai+enable_pick+raja") depends_on("chai@2024.07.0:", when="@0.13.2:") depends_on("chai@2024.02.2:", when="@0.13.1:") @@ -209,12 +233,6 @@ def initconfig_hardware_entries(self): if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) - archs = self.spec.variants["amdgpu_target"].value - if archs != "none": - arch_str = ",".join(archs) - entries.append( - cmake_cache_string("HIP_HIPCC_FLAGS", "--amdgpu-target={0}".format(arch_str)) - ) else: entries.append(cmake_cache_option("ENABLE_HIP", False)) @@ -250,6 +268,13 @@ def initconfig_package_entries(self): entries.append(cmake_cache_string("CMAKE_BUILD_TYPE", spec.variants["build_type"].value)) + # C++14 + if spec.satisfies("@:0.14.1"): + entries.append(cmake_cache_string("BLT_CXX_STD", "c++14")) + # C++17 + else: + entries.append(cmake_cache_string("BLT_CXX_STD", "c++17")) + entries.append(cmake_cache_option("ENABLE_TESTS", spec.satisfies("+tests"))) entries.append(cmake_cache_option("CARE_ENABLE_TESTS", spec.satisfies("+tests"))) # For tests to work, we also need BLT_ENABLE_TESTS to be on. diff --git a/var/spack/repos/builtin/packages/chai/package.py b/var/spack/repos/builtin/packages/chai/package.py index 0e72e71d1e4..b6d790803cb 100644 --- a/var/spack/repos/builtin/packages/chai/package.py +++ b/var/spack/repos/builtin/packages/chai/package.py @@ -18,11 +18,17 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/LLNL/CHAI.git" tags = ["ecp", "e4s", "radiuss"] - maintainers("davidbeckingsale", "adayton1", "adrienbernede") + maintainers("adayton1", "adrienbernede", "davidbeckingsale", "kab163") license("BSD-3-Clause") version("develop", branch="develop", submodules=False) + version( + "2025.03.0", + tag="v2025.03.0", + commit="79f6414a00a89070054ac97baed47d21d10c83a4", + submodules=False, + ) version( "2024.07.0", tag="v2024.07.0", @@ -101,7 +107,7 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): # We propagate the patch here. patch("change_mpi_target_name_umpire_patch.patch", when="@2022.10.0:2023.06.0") - variant("enable_pick", default=False, description="Enable pick method") + variant("enable_pick", default=False, when="@:2024", description="Enable pick method") variant( "separable_compilation", default=True, diff --git a/var/spack/repos/builtin/packages/raja-perf/package.py b/var/spack/repos/builtin/packages/raja-perf/package.py index e2362f65e44..a4e47c92681 100644 --- a/var/spack/repos/builtin/packages/raja-perf/package.py +++ b/var/spack/repos/builtin/packages/raja-perf/package.py @@ -97,6 +97,11 @@ class RajaPerf(CachedCMakePackage, CudaPackage, ROCmPackage): description="Tests to run", ) variant("caliper", default=False, description="Build with support for Caliper based profiling") + variant( + "lowopttest", + default=False, + description="For developers, lowers optimization level to pass tests with some compilers", + ) depends_on("cxx", type="build") # generated @@ -176,6 +181,9 @@ def initconfig_compiler_entries(self): # Default entries are already defined in CachedCMakePackage, inherit them: entries = super().initconfig_compiler_entries() + if spec.satisfies("+lowopttest"): + entries.append(cmake_cache_string("CMAKE_CXX_FLAGS_RELEASE", "-O1")) + if spec.satisfies("+rocm ^blt@:0.6"): entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc)) @@ -249,7 +257,7 @@ def initconfig_hardware_entries(self): else: entries.append(cmake_cache_option("ENABLE_HIP", False)) - entries.append(cmake_cache_option("ENABLE_OPENMP_TARGET", "+omptarget" in spec)) + entries.append(cmake_cache_option("RAJA_ENABLE_TARGET_OPENMP", "+omptarget" in spec)) if "+omptarget" in spec: if "%xl" in spec: entries.append( @@ -320,7 +328,7 @@ def initconfig_package_entries(self): entries.append(cmake_cache_option("BUILD_SHARED_LIBS", "+shared" in spec)) entries.append(cmake_cache_option("ENABLE_OPENMP", "+openmp" in spec)) entries.append(cmake_cache_option("RAJA_ENABLE_OPENMP_TASK", "+omptask" in spec)) - entries.append(cmake_cache_option("ENABLE_SYCL", spec.satisfies("+sycl"))) + entries.append(cmake_cache_option("RAJA_ENABLE_SYCL", spec.satisfies("+sycl"))) # C++17 if spec.satisfies("@2024.07.0:") and spec.satisfies("+sycl"): diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 7eb1e0be491..ce756a48afa 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -25,12 +25,18 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/LLNL/RAJA.git" tags = ["radiuss", "e4s"] - maintainers("davidbeckingsale", "adrienbernede") + maintainers("adrienbernede", "davidbeckingsale", "kab163") license("BSD-3-Clause") version("develop", branch="develop", submodules=submodules) version("main", branch="main", submodules=submodules) + version( + "2025.03.0", + tag="v2025.03.0", + commit="1d70abf171474d331f1409908bdf1b1c3fe19222", + submodules=submodules, + ) version( "2024.07.0", tag="v2024.07.0", @@ -206,6 +212,12 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): description="Run all the tests, including those known to fail.", ) + variant( + "lowopttest", + default=False, + description="For developers, lowers optimization level to pass tests with some compilers", + ) + depends_on("cxx", type="build") # generated depends_on("blt", type="build") @@ -365,6 +377,9 @@ def initconfig_package_entries(self): entries.append(cmake_cache_option("RAJA_ENABLE_SYCL", spec.satisfies("+sycl"))) + if spec.satisfies("+lowopttest"): + entries.append(cmake_cache_string("CMAKE_CXX_FLAGS_RELEASE", "-O1")) + # C++17 if spec.satisfies("@2024.07.0:") and spec.satisfies("+sycl"): entries.append(cmake_cache_string("BLT_CXX_STD", "c++17")) diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index bd2d5073c0d..df0cf71a5c6 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -18,11 +18,17 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): git = "https://github.com/LLNL/Umpire.git" tags = ["radiuss", "e4s"] - maintainers("davidbeckingsale", "adrienbernede") + maintainers("adrienbernede", "davidbeckingsale", "kab163") license("MIT") version("develop", branch="develop", submodules=False) + version( + "2025.03.0", + tag="v2025.03.0", + commit="1ed0669c57f041baa1f1070693991c3a7a43e7ee", + submodules=False, + ) version( "2024.07.0", tag="v2024.07.0", @@ -189,6 +195,7 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): variant("c", default=True, description="Build C API") variant("mpi", default=False, description="Enable MPI support") variant("ipc_shmem", default=False, description="Enable POSIX shared memory") + variant("mpi3_shmem", default=False, description="Enable MPI3 shared memory") variant( "sqlite_experimental", default=False, @@ -229,6 +236,7 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cmake@3.8:", type="build") depends_on("blt", type="build") + depends_on("blt@0.7.0:", type="build", when="@2025.03.0:") depends_on("blt@0.6.2:", type="build", when="@2024.02.1:") depends_on("blt@0.6.1", type="build", when="@2024.02.0") depends_on("blt@0.5.3", type="build", when="@2023.06.0") @@ -256,9 +264,9 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("sqlite", when="+sqlite_experimental") depends_on("mpi", when="+mpi") - depends_on("fmt@9.1:", when="@2024.02.0:") + depends_on("fmt@9.1:11.0", when="@2024.02.0:") # For some reason, we need c++ 17 explicitly only with intel - depends_on("fmt@9.1: cxxstd=17", when="@2024.02.0: %intel@19.1") + depends_on("fmt@9.1:11.0 cxxstd=17", when="@2024.02.0: %intel@19.1") with when("@5.0.0:"): with when("+cuda"): @@ -291,6 +299,9 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): "+rocm", when="+omptarget", msg="Cant support both rocm and openmp device backends at once" ) conflicts("+ipc_shmem", when="@:5.0.1") + conflicts("+mpi3_shmem", when="@:2024.07.0") + conflicts("+mpi3_shmem", when="~mpi") + conflicts("+ipc_shmem", when="+mpi3_shmem") conflicts("+sqlite_experimental", when="@:6.0.0") conflicts("+sanitizer_tests", when="~asan") @@ -386,6 +397,9 @@ def initconfig_mpi_entries(self): entries = super().initconfig_mpi_entries() entries.append(cmake_cache_option("ENABLE_MPI", spec.satisfies("+mpi"))) + entries.append( + cmake_cache_option("UMPIRE_ENABLE_MPI3_SHARED_MEMORY", spec.satisfies("+mpi3_shmem")) + ) return entries From bedc7bd518b69a6246ccf8da29caf65023db5c88 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan <72402802+nkoukpaizan@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:38:28 -0400 Subject: [PATCH 068/317] coinhsl: fix typo when setting liblapack_path (#49937) --- var/spack/repos/builtin/packages/coinhsl/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/coinhsl/package.py b/var/spack/repos/builtin/packages/coinhsl/package.py index 12f03226332..93c9c67795e 100644 --- a/var/spack/repos/builtin/packages/coinhsl/package.py +++ b/var/spack/repos/builtin/packages/coinhsl/package.py @@ -62,7 +62,7 @@ def meson_args(self): args.append(f"-Dlibblas={blas}") args.extend([f"-Dlibblas_path={p}" for p in blas_paths]) args.append(f"-Dliblapack={lapack}") - args.extend([f"-Dlibblas_path={p}" for p in lapack_paths]) + args.extend([f"-Dliblapack_path={p}" for p in lapack_paths]) if spec.satisfies("+metis"): metis = spec["metis"] if metis.satisfies("@5"): From 2acdacb129b8cf6bea3dbb6ef4d1fb40ff2401b8 Mon Sep 17 00:00:00 2001 From: arezaii Date: Tue, 8 Apr 2025 10:38:44 -0600 Subject: [PATCH 069/317] py-pyarrow: add depends_on c (#49940) --- var/spack/repos/builtin/packages/py-pyarrow/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pyarrow/package.py b/var/spack/repos/builtin/packages/py-pyarrow/package.py index cd48541f232..42a67fada68 100644 --- a/var/spack/repos/builtin/packages/py-pyarrow/package.py +++ b/var/spack/repos/builtin/packages/py-pyarrow/package.py @@ -37,6 +37,7 @@ class PyPyarrow(PythonPackage): version("0.11.0", sha256="07a6fd71c5d7440f2c42383dd2c5daa12d7f0a012f1e88288ed08a247032aead") version("0.9.0", sha256="7db8ce2f0eff5a00d6da918ce9f9cfec265e13f8a119b4adb1595e5b19fd6242") + depends_on("c", type="build") depends_on("cxx", type="build") with default_args(type="build"): From 50752758733418328fe11380a239eb4f30a1afb8 Mon Sep 17 00:00:00 2001 From: Thomas Padioleau Date: Tue, 8 Apr 2025 18:39:10 +0200 Subject: [PATCH 070/317] Set tpadioleau and nmm0 as mdspan maintainers (#49938) --- var/spack/repos/builtin/packages/mdspan/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/mdspan/package.py b/var/spack/repos/builtin/packages/mdspan/package.py index 5dadf0726ca..709110ec3bc 100644 --- a/var/spack/repos/builtin/packages/mdspan/package.py +++ b/var/spack/repos/builtin/packages/mdspan/package.py @@ -13,6 +13,8 @@ class Mdspan(CMakePackage): url = "https://github.com/kokkos/mdspan/archive/refs/tags/mdspan-0.6.0.zip" git = "https://github.com/kokkos/mdspan.git" + maintainers("tpadioleau", "nmm0") + version("stable", branch="stable") version("0.6.0", sha256="d6b7b9d4f472106df1d28729bd8383a8a7ea7938adf9f82d3be9c151344830d9") From 17b47c9dbee442c4de81ac3c59656a8a055d51ef Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 8 Apr 2025 18:41:35 +0200 Subject: [PATCH 071/317] py-torchmetrics: add v1.7.1 (#49955) --- 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 9d642dea8eb..cd0706d33a1 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -14,6 +14,7 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.7.1", sha256="0ac1a0e90d2375866ceb5d3868720c6df7d7d0c5729b7ad36e92c897c6af70c2") version("1.7.0", sha256="7a26d5cb73a6ae51ab5cb514aa4dc0543af7287a507719986a06e15df12ea68b") version("1.6.3", sha256="be59ffe9e9abf12ac12c3ac4383b2fc7731ad2bf3748ae1b06e8dea34e9f8a65") version("1.6.2", sha256="a3fa6372dbf01183d0f6fda2159e9526fb62818aa3630660909c290425f67df6") From 4b73da5bb29e8244f162d567e915430dabd4e5c2 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Tue, 8 Apr 2025 10:43:51 -0600 Subject: [PATCH 072/317] scons: add v4.9.1(#49942) --- var/spack/repos/builtin/packages/scons/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index 9333bfcb46e..bec704a0423 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -10,12 +10,16 @@ class Scons(PythonPackage): """SCons is a software construction tool""" homepage = "https://scons.org" - pypi = "SCons/SCons-4.5.1.tar.gz" + pypi = "scons/scons-4.9.1.tar.gz" tags = ["build-tools", "windows"] license("MIT") + version("4.9.1", sha256="bacac880ba2e86d6a156c116e2f8f2bfa82b257046f3ac2666c85c53c615c338") + version("4.9.0", sha256="f1a5e161bf3d1411d780d65d7919654b9405555994621d3d68e42d62114b592a") + version("4.8.1", sha256="5b641357904d2f56f7bfdbb37e165ab996b6143c948b9df0efc7305f54949daa") + version("4.8.0", sha256="2c7377ff6a22ca136c795ae3dc3d0824696e5478d1e4940f2af75659b0d45454") version("4.7.0", sha256="d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3") version("4.5.2", sha256="813360b2bce476bc9cc12a0f3a22d46ce520796b352557202cb07d3e402f5458") version("4.5.1", sha256="9daeabe4d87ba2bd4ea15410765fc1ed2d931b723e4dc730a487a3911b9a1738") @@ -26,7 +30,11 @@ class Scons(PythonPackage): "4.1.0.post1", sha256="ecb062482b9d80319b56758c0341eb717735437f86a575bac3552804428bd73e" ) version("4.0.1", sha256="722ed104b5c624ecdc89bd4e02b094d2b14d99d47b5d0501961e47f579a2007c") - version("4.0.0", sha256="de8599189ee87bb84234e3d6e30bef0298d6364713979856927576b252c411f3") + version( + "4.0.0", + sha256="de8599189ee87bb84234e3d6e30bef0298d6364713979856927576b252c411f3", + url="https://files.pythonhosted.org/packages/source/S/SCons/SCons-4.0.0.tar.gz", + ) version("3.1.2", sha256="8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f") version("3.1.1", sha256="fd44f8f2a4562e7e5bc8c63c82b01e469e8115805a3e9c2923ee54cdcd6678b3") version("3.1.0", sha256="94e0d0684772d3e6d9368785296716e0ed6ce757270b3ed814e5aa72d3163890") From 382647c8af91e2ab7c02d4534cbd448060bb5b0f Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 8 Apr 2025 10:49:10 -0600 Subject: [PATCH 073/317] trilinos: depends on kokkos~cuda when ~cuda and kokkos~rocm when ~rocm (#49951) --- var/spack/repos/builtin/packages/trilinos/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 58a180b15a9..7b5483f3142 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -418,6 +418,8 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # External Kokkos with when("@14.4: +kokkos"): + depends_on("kokkos~cuda", when="~cuda") + depends_on("kokkos~rocm", when="~rocm") depends_on("kokkos+wrapper", when="+wrapper") depends_on("kokkos~wrapper", when="~wrapper") depends_on("kokkos+cuda_relocatable_device_code~shared", when="+cuda_rdc") From 63a506ed174e50b12631c9a9aa1f9d743474af46 Mon Sep 17 00:00:00 2001 From: Cameron Smith Date: Tue, 8 Apr 2025 13:39:08 -0400 Subject: [PATCH 074/317] pumi: remove redundant compiler deps (#49936) --- var/spack/repos/builtin/packages/pumi/package.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index 432200c8d39..83ef667b74d 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -67,10 +67,6 @@ class Pumi(CMakePackage): "Disable the check for testing new versions.", ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated - depends_on("cxx", type="build") depends_on("c", type="build") depends_on("fortran", type="build", when="+fortran") From 4372907fc1b43abf79cde01dd3d909f5041a7a55 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 8 Apr 2025 11:43:40 -0600 Subject: [PATCH 075/317] h5z-zfp: update to use CMake (#49735) * h5z-zfp: update to use CMake. * Add depedency requirement. * Remove shared variant. --- .../repos/builtin/packages/h5z-zfp/package.py | 50 ++++--------------- 1 file changed, 11 insertions(+), 39 deletions(-) diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py index 8ccc9337f37..ddaa7ba86a2 100644 --- a/var/spack/repos/builtin/packages/h5z-zfp/package.py +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -20,47 +20,19 @@ class H5zZfp(CMakePackage): version("1.1.0", sha256="48a81e69d1f3b61d9a1eb07e868164fadf3b88690ec930efd849f5889681a893") variant("fortran", default=True, description="Enable Fortran support") + variant("tests", default=False, description="Build tests") - depends_on("c", type="build") # generated - depends_on("fortran", type="build") # generated - - depends_on("hdf5+fortran", when="+fortran") - depends_on("hdf5", when="~fortran") - depends_on("mpi", when="^hdf5+mpi") + depends_on("c", type="build") + depends_on("fortran", type="build", when="+fortran") + depends_on("hdf5") depends_on("zfp bsws=8") + depends_on("hdf5+fortran", when="+fortran") + depends_on("mpi", when="^hdf5+mpi") - @property - def make_defs(self): - cc = spack_cc - fc = spack_fc - if self.spec.satisfies("^hdf5+mpi"): - cc = self.spec["mpi"].mpicc - fc = self.spec["mpi"].mpifc - make_defs = [ - "PREFIX=%s" % prefix, - "CC=%s" % cc, - "HDF5_HOME=%s" % self.spec["hdf5"].prefix, - "ZFP_HOME=%s" % self.spec["zfp"].prefix, + def cmake_args(self): + args = [ + self.define_from_variant("FORTRAN_INTERFACE", "fortran"), + self.define_from_variant("BUILD_TESTING", "tests"), ] - if self.spec.satisfies("+fortran") and fc: - make_defs += ["FC=%s" % fc] - else: - make_defs += ["FC="] - - return make_defs - - @property - def build_targets(self): - targets = ["all"] - return self.make_defs + targets - - @property - def install_targets(self): - make_args = ["install"] - return make_args + self.make_defs - - @run_after("build") - @on_package_attributes(run_tests=True) - def check_build(self): - make("check", *self.make_defs, parallel=False) + return args From 8ffd6c29bf5da596dd6e4266d3982e5f4fbbad70 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 8 Apr 2025 19:51:16 +0200 Subject: [PATCH 076/317] gcc/oneapi: inject runtime iff language virtual (#49956) Currently we inject runtimes when a package has a direct build dep on a compiler, but what matters is whether the package depends on a language. That way we can avoid recursion of injecting runtimes to runtimes without a rule in the solver: runtimes don't depend on languages, they just have a build dep on the same compiler. --- lib/spack/spack/solver/asp.py | 21 ++++++------ .../builtin.mock/packages/gcc/package.py | 32 ++++++----------- .../repos/builtin/packages/gcc/package.py | 32 ++++++----------- .../intel-oneapi-compilers/package.py | 34 ++++++++----------- 4 files changed, 46 insertions(+), 73 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 0e263d22d86..b602b431a17 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -3201,12 +3201,13 @@ def define_runtime_constraints(self) -> List[spack.spec.Spec]: # FIXME (compiler as nodes): think of using isinstance(compiler_cls, WrappedCompiler) # Add a dependency on the compiler wrapper - recorder("*").depends_on( - "compiler-wrapper", - when=f"%{compiler.name}@{compiler.versions}", - type="build", - description=f"Add the compiler wrapper when using {compiler}", - ) + for language in ("c", "cxx", "fortran"): + recorder("*").depends_on( + "compiler-wrapper", + when=f"%[virtuals={language}] {compiler.name}@{compiler.versions}", + type="build", + description=f"Add the compiler wrapper when using {compiler} for {language}", + ) if not using_libc_compatibility(): continue @@ -3601,11 +3602,9 @@ def rule_body_from(self, when_spec: "spack.spec.Spec") -> Tuple[str, str]: # (avoid adding virtuals everywhere, if a single edge needs it) _, provider, virtual = clause.args clause.args = "virtual_on_edge", node_placeholder, provider, virtual - body_str = ( - f" {f',{os.linesep} '.join(str(x) for x in body_clauses)},\n" - f" not external({node_variable}),\n" - f" not runtime(Package)" - ).replace(f'"{node_placeholder}"', f"{node_variable}") + body_str = ",\n".join(f" {x}" for x in body_clauses) + body_str += f",\n not external({node_variable})" + body_str = body_str.replace(f'"{node_placeholder}"', f"{node_variable}") for old, replacement in when_substitutions.items(): body_str = body_str.replace(old, replacement) return body_str, node_variable diff --git a/var/spack/repos/builtin.mock/packages/gcc/package.py b/var/spack/repos/builtin.mock/packages/gcc/package.py index d029a522681..59ae7077cc4 100644 --- a/var/spack/repos/builtin.mock/packages/gcc/package.py +++ b/var/spack/repos/builtin.mock/packages/gcc/package.py @@ -81,19 +81,13 @@ def runtime_constraints(cls, *, spec, pkg): spec: spec that will inject runtime dependencies pkg: object used to forward information to the solver """ - pkg("*").depends_on( - "gcc-runtime", - when="%gcc", - type="link", - description="If any package uses %gcc, it depends on gcc-runtime", - ) - pkg("*").depends_on( - f"gcc-runtime@{str(spec.version)}:", - when=f"^[deptypes=build] {spec.name}@{spec.versions}", - type="link", - description=f"If any package uses %{str(spec)}, " - f"it depends on gcc-runtime@{str(spec.version)}:", - ) + for language in ("c", "cxx", "fortran"): + pkg("*").depends_on( + f"gcc-runtime@{spec.version}:", + when=f"%[virtuals={language}] {spec.name}@{spec.versions}", + type="link", + description=f"Inject gcc-runtime when gcc is used as a {language} compiler", + ) gfortran_str = "libgfortran@5" if spec.satisfies("gcc@:6"): @@ -104,18 +98,14 @@ def runtime_constraints(cls, *, spec, pkg): for fortran_virtual in ("fortran-rt", gfortran_str): pkg("*").depends_on( fortran_virtual, - when=f"^[virtuals=fortran deptypes=build] {spec.name}@{spec.versions}", + when=f"%[virtuals=fortran] {spec.name}@{spec.versions}", type="link", description=f"Add a dependency on '{gfortran_str}' for nodes compiled with " - f"{str(spec)} and using the 'fortran' language", + f"{spec} and using the 'fortran' language", ) # The version of gcc-runtime is the same as the %gcc used to "compile" it - pkg("gcc-runtime").requires( - f"@{str(spec.versions)}", when=f"^[deptypes=build] {spec.name}@{spec.versions}" - ) + pkg("gcc-runtime").requires(f"@{spec.versions}", when=f"%{spec.name}@{spec.versions}") # If a node used %gcc@X.Y its dependencies must use gcc-runtime@:X.Y # (technically @:X is broader than ... <= @=X but this should work in practice) - pkg("*").propagate( - f"gcc@:{str(spec.version)}", when=f"^[deptypes=build] {spec.name}@{spec.versions}" - ) + pkg("*").propagate(f"gcc@:{spec.version}", when=f"%{spec.name}@{spec.versions}") diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 5e910e89e9e..5626d6f9f0a 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -1158,19 +1158,13 @@ def runtime_constraints(cls, *, spec, pkg): spec: spec that will inject runtime dependencies pkg: object used to forward information to the solver """ - pkg("*").depends_on( - "gcc-runtime", - when="%gcc", - type="link", - description="If any package uses %gcc, it depends on gcc-runtime", - ) - pkg("*").depends_on( - f"gcc-runtime@{str(spec.version)}:", - when=f"^[deptypes=build] {spec.name}@{spec.versions}", - type="link", - description=f"If any package uses %{str(spec)}, " - f"it depends on gcc-runtime@{str(spec.version)}:", - ) + for language in ("c", "cxx", "fortran"): + pkg("*").depends_on( + f"gcc-runtime@{spec.version}:", + when=f"%[virtuals={language}] {spec.name}@{spec.versions}", + type="link", + description=f"Inject gcc-runtime when gcc is used as a {language} compiler", + ) gfortran_str = "libgfortran@5" if spec.satisfies("gcc@:6"): @@ -1181,21 +1175,17 @@ def runtime_constraints(cls, *, spec, pkg): for fortran_virtual in ("fortran-rt", gfortran_str): pkg("*").depends_on( fortran_virtual, - when=f"^[virtuals=fortran deptypes=build] {spec.name}@{spec.versions}", + when=f"%[virtuals=fortran] {spec.name}@{spec.versions}", type="link", description=f"Add a dependency on '{gfortran_str}' for nodes compiled with " - f"{str(spec)} and using the 'fortran' language", + f"{spec} and using the 'fortran' language", ) # The version of gcc-runtime is the same as the %gcc used to "compile" it - pkg("gcc-runtime").requires( - f"@{str(spec.versions)}", when=f"^[deptypes=build] {spec.name}@{spec.versions}" - ) + pkg("gcc-runtime").requires(f"@{spec.versions}", when=f"%{spec.name}@{spec.versions}") # If a node used %gcc@X.Y its dependencies must use gcc-runtime@:X.Y # (technically @:X is broader than ... <= @=X but this should work in practice) - pkg("*").propagate( - f"gcc@:{str(spec.version)}", when=f"^[deptypes=build] {spec.name}@{spec.versions}" - ) + pkg("*").propagate(f"gcc@:{spec.version}", when=f"%{spec.name}@{spec.versions}") def _post_buildcache_install_hook(self): if not self.spec.satisfies("platform=linux"): 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 9432b19d660..eb70fef136d 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -655,38 +655,32 @@ def determine_variants(cls, exes, version_str): @classmethod def runtime_constraints(cls, *, spec, pkg): - pkg("*").depends_on( - "intel-oneapi-runtime", - when="%oneapi", - type="link", - description="If any package uses %oneapi, it depends on intel-oneapi-runtime", - ) - pkg("*").depends_on( - f"intel-oneapi-runtime@{str(spec.version)}:", - when=f"^[deptypes=build] {spec.name}@{spec.versions}", - type="link", - description=f"If any package uses %{str(spec)}, " - f"it depends on intel-oneapi-runtime@{str(spec.version)}:", - ) + for language in ("c", "cxx", "fortran"): + pkg("*").depends_on( + f"intel-oneapi-runtime@{spec.version}:", + when=f"%[virtuals={language}] {spec.name}@{spec.versions}", + type="link", + description="Inject intel-oneapi-runtime when oneapi is used as " + f"a {language} compiler", + ) for fortran_virtual in ("fortran-rt", "libifcore@5"): pkg("*").depends_on( fortran_virtual, - when=f"^[virtuals=fortran deptypes=build] {spec.name}@{spec.versions}", + when=f"%[virtuals=fortran] {spec.name}@{spec.versions}", type="link", - description=f"Add a dependency on 'libifcore' for nodes compiled with " - f"{str(spec)} and using the 'fortran' language", + description="Add a dependency on 'libifcore' for nodes compiled with " + f"{spec.name}@{spec.versions} and using the 'fortran' language", ) # The version of intel-oneapi-runtime is the same as the %oneapi used to "compile" it pkg("intel-oneapi-runtime").requires( - f"@{str(spec.versions)}", when=f"^[deptypes=build] {spec.name}@{spec.versions}" + f"@{spec.versions}", when=f"%{spec.name}@{spec.versions}" ) - # If a node used %intel-oneapi=runtime@X.Y its dependencies must use @:X.Y + # If a node used %intel-oneapi-runtime@X.Y its dependencies must use @:X.Y # (technically @:X is broader than ... <= @=X but this should work in practice) pkg("*").propagate( - f"intel-oneapi-compilers@:{str(spec.version)}", - when=f"^[deptypes=build] {spec.name}@{spec.versions}", + f"intel-oneapi-compilers@:{spec.version}", when=f"%{spec.name}@{spec.versions}" ) def _cc_path(self): From b74e23a637f9172d14f500ea09ba0f09b7da34f1 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:41:46 -0600 Subject: [PATCH 077/317] pox: add v0.3.5 (#49945) --- var/spack/repos/builtin/packages/py-pox/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pox/package.py b/var/spack/repos/builtin/packages/py-pox/package.py index 1f76d8529b9..48c48a64560 100644 --- a/var/spack/repos/builtin/packages/py-pox/package.py +++ b/var/spack/repos/builtin/packages/py-pox/package.py @@ -13,6 +13,11 @@ class PyPox(PythonPackage): license("BSD-3-Clause") + version("0.3.5", sha256="8120ee4c94e950e6e0483e050a4f0e56076e590ba0a9add19524c254bd23c2d1") + version("0.3.4", sha256="16e6eca84f1bec3828210b06b052adf04cf2ab20c22fd6fbef5f78320c9a6fed") + version("0.3.3", sha256="e1ced66f2a0c92a58cf3646bc7ccb8b4773d40884b76f85eeda0670474871667") + version("0.3.2", sha256="e825225297638d6e3d49415f8cfb65407a5d15e56f2fb7fe9d9b9e3050c65ee1") + version("0.3.1", sha256="cbb0c0acd650c0ffb620999da611e93aae5105c46a084c4ceaf2f704ed708c1e") version("0.3.0", sha256="cb968350b186466bb4905a21084587ec3aa6fd7aa0ef55d416ee0d523e2abe31") version("0.2.5", sha256="2b53fbdf02596240483dc2cb94f94cc21252ad1b1858c7b1c151afeec9022cc8") version("0.2.3", sha256="d3e8167a1ebe08ae56262a0b9359118d90bc4648cd284b5d10ae240343100a75") From 4cb64e150f1244c4ae8c229b4b0ec0def3b2ea21 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 8 Apr 2025 14:02:41 -0600 Subject: [PATCH 078/317] trilinos: patch stk to include cstddef for size_t error (#49952) * trilinos: patch stk to include cstddef for size_t error * Update comment. --- .../packages/trilinos/16-1-0-stk-size_t.patch | 19 +++++++++++++++++++ .../builtin/packages/trilinos/package.py | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/trilinos/16-1-0-stk-size_t.patch diff --git a/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-size_t.patch b/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-size_t.patch new file mode 100644 index 00000000000..9a1cc0dfddc --- /dev/null +++ b/var/spack/repos/builtin/packages/trilinos/16-1-0-stk-size_t.patch @@ -0,0 +1,19 @@ +diff --git a/packages/stk/stk_util/stk_util/parallel/ReceiveCounter.hpp b/packages/stk/stk_util/stk_util/parallel/ReceiveCounter.hpp +index ad1232b5bf7..daf3329969b 100644 +--- a/packages/stk/stk_util/stk_util/parallel/ReceiveCounter.hpp ++++ b/packages/stk/stk_util/stk_util/parallel/ReceiveCounter.hpp +@@ -36,6 +36,7 @@ + #define stk_util_parallel_ReceiveCounter_hpp + + #include ++#include + + #include "stk_util/parallel/Parallel.hpp" // for MPI + +@@ -92,4 +93,4 @@ std::vector get_send_counts(std::vector< std::vector > sendLists, size_ + } + + } // namespace +-#endif +\ No newline at end of file ++#endif diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 7b5483f3142..46f00d18b7c 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -559,6 +559,10 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): # https://github.com/trilinos/Trilinos/pull/13921 patch("16-1-0-stk-fpe-exceptions.patch", when="@=16.1.0 +stk platform=darwin") + # https://github.com/trilinos/Trilinos/issues/13916 and + # https://github.com/trilinos/Trilinos/pull/13921 + patch("16-1-0-stk-size_t.patch", when="@=16.1.0 +stk") + def flag_handler(self, name, flags): spec = self.spec is_cce = spec.satisfies("%cce") From d2dd4e96d979b254c7809918004c531121bee36a Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:16:39 -0400 Subject: [PATCH 079/317] Windows: add env name to prompts (#48819) --- lib/spack/spack/environment/shell.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/environment/shell.py b/lib/spack/spack/environment/shell.py index 814c84b4051..2c6a79f4db9 100644 --- a/lib/spack/spack/environment/shell.py +++ b/lib/spack/spack/environment/shell.py @@ -49,10 +49,23 @@ 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 + if prompt: + old_prompt = os.environ.get("SPACK_OLD_PROMPT") + if not old_prompt: + old_prompt = os.environ.get("PROMPT") + cmds += f'set "SPACK_OLD_PROMPT={old_prompt}"\n' + cmds += f'set "PROMPT={prompt} $P$G"\n' elif shell == "pwsh": cmds += "$Env:SPACK_ENV='%s'\n" % env.path if view: cmds += "$Env:SPACK_ENV_VIEW='%s'\n" % view + if prompt: + cmds += ( + "function global:prompt { $pth = $(Convert-Path $(Get-Location))" + ' | Split-Path -leaf; if(!"$Env:SPACK_OLD_PROMPT") ' + '{$Env:SPACK_OLD_PROMPT="[spack] PS $pth>"}; ' + '"%s PS $pth>"}\n' % prompt + ) else: bash_color_prompt = colorize(f"@G{{{prompt}}}", color=True, enclose=True) zsh_color_prompt = colorize(f"@G{{{prompt}}}", color=True, enclose=False, zsh=True) @@ -107,10 +120,19 @@ def deactivate_header(shell): cmds += 'set "SPACK_ENV="\n' cmds += 'set "SPACK_ENV_VIEW="\n' # TODO: despacktivate - # TODO: prompt + old_prompt = os.environ.get("SPACK_OLD_PROMPT") + if old_prompt: + cmds += f'set "PROMPT={old_prompt}"\n' + cmds += 'set "SPACK_OLD_PROMPT="\n' elif shell == "pwsh": cmds += "Set-Item -Path Env:SPACK_ENV\n" cmds += "Set-Item -Path Env:SPACK_ENV_VIEW\n" + cmds += ( + "function global:prompt { $pth = $(Convert-Path $(Get-Location))" + ' | Split-Path -leaf; $spack_prompt = "[spack] $pth >"; ' + 'if("$Env:SPACK_OLD_PROMPT") {$spack_prompt=$Env:SPACK_OLD_PROMPT};' + " $spack_prompt}\n" + ) else: cmds += "if [ ! -z ${SPACK_ENV+x} ]; then\n" cmds += "unset SPACK_ENV; export SPACK_ENV;\n" From f4f1606298c1047a92b724b447a92c72a2c0adc8 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 8 Apr 2025 15:26:07 -0600 Subject: [PATCH 080/317] hypre: remove shared variant default for darwin (#49749) * hypre: remove shared variant default for darwin. * [@spackbot] updating style on behalf of jrood-nrel * Update var/spack/repos/builtin/packages/hypre/package.py Co-authored-by: Victor A. P. Magri <50467563+victorapm@users.noreply.github.com> * hypre: remove sys import. --------- Co-authored-by: jrood-nrel Co-authored-by: Victor A. P. Magri <50467563+victorapm@users.noreply.github.com> --- .../repos/builtin/packages/hypre/package.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 5d0059e2261..92d3221dd8a 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -3,7 +3,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os -import sys from spack.package import * @@ -56,15 +55,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage): version("2.10.1", sha256="a4a9df645ebdc11e86221b794b276d1e17974887ead161d5050aaf0b43bb183a") version("2.10.0b", sha256="b55dbdc692afe5a00490d1ea1c38dd908dae244f7bdd7faaf711680059824c11") - # Versions 2.13.0 and later can be patched to build shared - # libraries on Darwin; the patch for this capability does not - # apply to version 2.12.1 and earlier due to changes in the build system - # between versions 2.12.1 and 2.13.0. - variant( - "shared", - default=(sys.platform != "darwin"), - description="Build shared library (disables static library)", - ) + variant("shared", default=True, description="Build shared library (disables static library)") # Use internal SuperLU routines for FEI - version 2.12.1 and below variant("internal-superlu", default=False, description="Use internal SuperLU routines") variant( @@ -118,9 +109,11 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage): def patch(self): # fix sequential compilation in 'src/seq_mv' filter_file("\tmake", "\t$(MAKE)", "src/seq_mv/Makefile") - 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="+cuda") + depends_on("cxx", type="build", when="+rocm") + depends_on("cxx", type="build", when="+sycl") + depends_on("fortran", type="build", when="+fortran") depends_on("mpi", when="+mpi") depends_on("blas", when="+lapack") From ae78c7698a43d55f82ee56ade91d0d43d77c3e88 Mon Sep 17 00:00:00 2001 From: Thomas Padioleau Date: Wed, 9 Apr 2025 05:30:23 +0200 Subject: [PATCH 081/317] Add languages to PDI ecosystem (#49957) --- var/spack/repos/builtin/packages/paraconf/package.py | 4 ++++ var/spack/repos/builtin/packages/pdi/package.py | 4 ++++ .../repos/builtin/packages/pdiplugin-decl-hdf5/package.py | 4 ++++ .../repos/builtin/packages/pdiplugin-decl-netcdf/package.py | 3 +++ var/spack/repos/builtin/packages/pdiplugin-mpi/package.py | 3 +++ var/spack/repos/builtin/packages/pdiplugin-pycall/package.py | 3 +++ .../repos/builtin/packages/pdiplugin-serialize/package.py | 3 +++ .../repos/builtin/packages/pdiplugin-set-value/package.py | 3 +++ var/spack/repos/builtin/packages/pdiplugin-trace/package.py | 3 +++ .../repos/builtin/packages/pdiplugin-user-code/package.py | 3 +++ 10 files changed, 33 insertions(+) diff --git a/var/spack/repos/builtin/packages/paraconf/package.py b/var/spack/repos/builtin/packages/paraconf/package.py index 5ba73e9a319..3cab4c098e4 100644 --- a/var/spack/repos/builtin/packages/paraconf/package.py +++ b/var/spack/repos/builtin/packages/paraconf/package.py @@ -31,6 +31,10 @@ class Paraconf(CMakePackage): variant("fortran", default=True, description="Enable Fortran support") variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") + depends_on("cmake@3.5:", type=("build")) depends_on("pkgconfig", type=("build")) depends_on("libyaml@0.1.7:", type=("link", "run")) diff --git a/var/spack/repos/builtin/packages/pdi/package.py b/var/spack/repos/builtin/packages/pdi/package.py index b699f3fcdd2..276e43ae747 100644 --- a/var/spack/repos/builtin/packages/pdi/package.py +++ b/var/spack/repos/builtin/packages/pdi/package.py @@ -32,6 +32,10 @@ class Pdi(CMakePackage): variant("fortran", default=True, description="Enable Fortran support") variant("python", default=True, description="Enable Python support") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("doxygen@1.8.17:", type=("build"), when="@1.8: +docs") depends_on("paraconf@1:", type=("link", "run"), when="@1.6:") diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py index 0229bd25912..8b8baf248af 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py @@ -28,6 +28,10 @@ class PdipluginDeclHdf5(CMakePackage): variant("tests", default=False, description="Build tests") variant("mpi", default=True, description="Enable parallel HDF5") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("hdf5@1.10.4:1 +shared", type=("build", "link", "run"), when="@1.8:") depends_on("hdf5 +mpi", type=("build", "link", "run"), when="+mpi") diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py index bc7b7435a04..483817e0940 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py @@ -24,6 +24,9 @@ class PdipluginDeclNetcdf(CMakePackage): variant("tests", default=False, description="Build tests") variant("mpi", default=True, description="Enable parallel NetCDF") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("netcdf-c@4.7.3:4", type=("link"), when="@1.8:") depends_on("netcdf-c@4.6.2:4+mpi", type=("link"), when="+mpi") diff --git a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py index eb0956b3803..1c6c4d3c6c9 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py @@ -22,6 +22,9 @@ class PdipluginMpi(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("mpi", type=("build", "link", "run")) depends_on("pdi@develop", type=("link", "run"), when="@develop") diff --git a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py index 3cd08606414..cedf0116d9b 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py @@ -22,6 +22,9 @@ class PdipluginPycall(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("pdi+python@develop", type=("link", "run"), when="@develop") depends_on("pdi+python@1.8.1", type=("link", "run"), when="@1.8.1") diff --git a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py index b6bd43dc565..2fca2dfcac6 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py @@ -23,6 +23,9 @@ class PdipluginSerialize(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("pdi@develop", type=("link", "run"), when="@develop") depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") diff --git a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py index 21c192c6dec..e3a2b158703 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py @@ -23,6 +23,9 @@ class PdipluginSetValue(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("pdi@develop", type=("link", "run"), when="@develop") depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") diff --git a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py index af620c39869..4f582ae945e 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py @@ -23,6 +23,9 @@ class PdipluginTrace(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("pdi@develop", type=("link", "run"), when="@develop") depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") diff --git a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py index 0a41eeb95cc..10e8d2f1161 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py @@ -24,6 +24,9 @@ class PdipluginUserCode(CMakePackage): variant("tests", default=False, description="Build tests") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") depends_on("pdi@develop", type=("link", "run"), when="@develop") depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") From d6b69106546cad467bec12743e252407bd512bef Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 9 Apr 2025 05:36:44 +0200 Subject: [PATCH 082/317] go: add v1.23.8 (#49962) --- 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 4eef8c697d4..f5a799e8e5e 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): version("1.24.2", sha256="9dc77ffadc16d837a1bf32d99c624cb4df0647cee7b119edd9e7b1bcc05f2e00") version("1.24.1", sha256="8244ebf46c65607db10222b5806aeb31c1fcf8979c1b6b12f60c677e9a3c0656") version("1.24.0", sha256="d14120614acb29d12bcab72bd689f257eb4be9e0b6f88a8fb7e41ac65f8556e5") + version("1.23.8", sha256="0ca1f1e37ea255e3ce283af3f4e628502fb444587da987a5bb96d6c6f15930d4") version("1.23.7", sha256="7cfabd46b73eb4c26b19d69515dd043d7183a6559acccd5cfdb25eb6b266a458") version("1.23.6", sha256="039c5b04e65279daceee8a6f71e70bd05cf5b801782b6f77c6e19e2ed0511222") version("1.23.5", sha256="a6f3f4bbd3e6bdd626f79b668f212fbb5649daf75084fb79b678a0ae4d97423b") From 513142f1546bacd0618bd6c51c35c2732eb9e2c6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 9 Apr 2025 05:42:24 +0200 Subject: [PATCH 083/317] py-litdata: add new package (#49961) --- .../builtin/packages/py-litdata/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-litdata/package.py diff --git a/var/spack/repos/builtin/packages/py-litdata/package.py b/var/spack/repos/builtin/packages/py-litdata/package.py new file mode 100644 index 00000000000..77dbdece4ef --- /dev/null +++ b/var/spack/repos/builtin/packages/py-litdata/package.py @@ -0,0 +1,28 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyLitdata(PythonPackage): + """The Deep Learning framework to train, deploy, and ship AI products Lightning fast.""" + + homepage = "https://github.com/Lightning-AI/litdata" + pypi = "litdata/litdata-0.2.44.tar.gz" + + maintainers("adamjstewart") + + license("Apache-2.0") + + version("0.2.44", sha256="0c2ad485d4692702d97a396bfe6017f9ac2af2832bb39fae99fd49c26e207a0e") + + depends_on("py-setuptools", type="build") + + with default_args(type=("build", "run")): + depends_on("py-torch") + depends_on("py-filelock") + depends_on("py-numpy") + depends_on("py-boto3") + depends_on("py-requests") + depends_on("py-tifffile") From 69a95bf1f8916f8cd95fdf80bac892253cf47878 Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Tue, 8 Apr 2025 22:34:44 -0600 Subject: [PATCH 084/317] libpng: add v1.6.47 (#49872) * add 1.6.47, add cmake reqs * use open ended cmake versions Co-authored-by: Alec Scott --------- Co-authored-by: Alec Scott --- var/spack/repos/builtin/packages/libpng/package.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index a8d2137694e..5e141a40b44 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -11,12 +11,13 @@ class Libpng(CMakePackage): homepage = "http://www.libpng.org/pub/png/libpng.html" url = "https://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.xz" - git = "https://github.com/glennrp/libpng.git" + git = "https://github.com/pnggroup/libpng" maintainers("AlexanderRichert-NOAA") license("Libpng") + version("1.6.47", sha256="b213cb381fbb1175327bd708a77aab708a05adde7b471bc267bd15ac99893631") version("1.6.39", sha256="1f4696ce70b4ee5f85f1e1623dc1229b210029fa4b7aee573df3e2ba7b036937") version("1.6.37", sha256="505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca") # From http://www.libpng.org/pub/png/libpng.html (2019-04-15) @@ -29,8 +30,13 @@ class Libpng(CMakePackage): version("1.5.30", sha256="7d76275fad2ede4b7d87c5fd46e6f488d2a16b5a69dc968ffa840ab39ba756ed") version("1.2.57", sha256="0f4620e11fa283fedafb474427c8e96bf149511a1804bdc47350963ae5cf54d8") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("cmake@3.14:", type="build", when="@1.6.47:") + depends_on("cmake@3.1:", type="build", when="@1.6.37:") + depends_on("cmake@2.8.3:", type="build", when="@1.5.30:") + depends_on("cmake@2.4.3:", type="build", when="@1.2.57:") depends_on("zlib-api") From c960fa0996b65dfa7007eab4b2fb5494fdaffcb5 Mon Sep 17 00:00:00 2001 From: Fabien Bruneval Date: Wed, 9 Apr 2025 06:35:40 +0200 Subject: [PATCH 085/317] molgw: add v3.4 (#49701) * update molgw package v3.4 * Set OpenMP variant default to False --------- Co-authored-by: Fabien Bruneval --- var/spack/repos/builtin/packages/molgw/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/molgw/package.py b/var/spack/repos/builtin/packages/molgw/package.py index eea30462907..b647319e01b 100644 --- a/var/spack/repos/builtin/packages/molgw/package.py +++ b/var/spack/repos/builtin/packages/molgw/package.py @@ -18,13 +18,14 @@ class Molgw(MakefilePackage): """ homepage = "https://github.com/molgw/molgw" - url = "https://github.com/molgw/molgw/archive/v3.3.tar.gz" + url = "https://github.com/molgw/molgw/archive/v3.4.tar.gz" git = "https://github.com/molgw/molgw.git" maintainers("bruneval") license("GPL-3.0-only") + version("3.4", sha256="b7ce298c660861713c25873d46e09713cad80b3927110a6bf747c0114b387e6b") version("3.3", sha256="ff1c8eb736049e52608d4554a2d435ee9d15e47c4a9934d41712962748929e81") version("3.2", sha256="a3f9a99db52d95ce03bc3636b5999e6d92b503ec2f4afca33d030480c3e10242") @@ -102,8 +103,6 @@ def edit(self, spec, prefix): flags["FC"] = self.compiler.fc # Set FCFLAGS - if self.compiler.flags.get("fflags") is not None: - flags["FCFLAGS"] = " ".join(self.compiler.flags.get("fflags")) + " " if "+openmp" in spec: flags["FCFLAGS"] = flags.get("FCFLAGS", "") + " {0} ".format(self.compiler.openmp_flag) if "%intel" in spec or "%oneapi" in spec: From 1cf311f217c1ff3791bc83585171aff5df77741f Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com> Date: Wed, 9 Apr 2025 06:37:21 +0200 Subject: [PATCH 086/317] whizard: add v3.1.5 (#49785) Co-authored-by: jmcarcell --- var/spack/repos/builtin/packages/whizard/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/whizard/package.py b/var/spack/repos/builtin/packages/whizard/package.py index 10d885a1803..81cdf340c69 100644 --- a/var/spack/repos/builtin/packages/whizard/package.py +++ b/var/spack/repos/builtin/packages/whizard/package.py @@ -26,6 +26,7 @@ class Whizard(AutotoolsPackage): license("GPL-2.0-or-later") version("master", branch="master") + version("3.1.5", sha256="731d147b342e3b63307ea541f6f0bb4073195a78a75da60db10f284f282c3d19") version("3.1.4", sha256="9da9805251d786adaf4ad5a112f9c4ee61d515778af0d2623d6460c3f1f900cd") version("3.1.2", sha256="4f706f8ef02a580ae4dba867828691dfe0b3f9f9b8982b617af72eb8cd4c6fa3") version("3.1.1", sha256="dd48e4e39b8a4990be47775ec6171f89d8147cb2e9e293afc7051a7dbc5a23ef") From 1cbee69becc6d9f914b5cca37a9c1160e48b46fc Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 9 Apr 2025 06:44:18 +0200 Subject: [PATCH 087/317] gh: add v2.69.0 (#49963) --- var/spack/repos/builtin/packages/gh/package.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/gh/package.py b/var/spack/repos/builtin/packages/gh/package.py index 1ae220c15b4..583afa2cd66 100644 --- a/var/spack/repos/builtin/packages/gh/package.py +++ b/var/spack/repos/builtin/packages/gh/package.py @@ -15,6 +15,7 @@ class Gh(GoPackage): license("MIT") + version("2.69.0", sha256="e2deb3759bbe4da8ad4f071ca604fda5c2fc803fef8b3b89896013e4b1c1fe65") version("2.63.2", sha256="2578a8b1f00cb292a8094793515743f2a86e02b8d0b18d6b95959ddbeebd6b8d") version("2.63.1", sha256="b9a90118dfb46204dbcc0d09c2073d48f35b6f640b4db33fbaa24892fed56c8d") version("2.63.0", sha256="c5309db9707c9e64ebe264e1e2d0f893ecead9056d680b39a565aaa5513d2947") @@ -45,12 +46,13 @@ class Gh(GoPackage): conflicts("platform=darwin", when="@2.28.0") - depends_on("go@1.16:", type="build") - depends_on("go@1.18:", type="build", when="@2.10.0:") - depends_on("go@1.19:", type="build", when="@2.21.0:") - depends_on("go@1.21:", type="build", when="@2.33.0:") - depends_on("go@1.22:", type="build", when="@2.47.0:") + depends_on("go@1.23.0:", type="build", when="@2.66.0:") depends_on("go@1.22.5:", type="build", when="@2.56.0:") + depends_on("go@1.22.0:", type="build", when="@2.47.0:") + depends_on("go@1.21.0:", type="build", when="@2.33.0:") + depends_on("go@1.19.0:", type="build", when="@2.21.0:") + depends_on("go@1.18.0:", type="build", when="@2.10.0:") + depends_on("go@1.16.0:", type="build") @property def build_args(self): From b6722ce5c94c498426e02324d3c39412a0c0ff41 Mon Sep 17 00:00:00 2001 From: Olivier Cessenat Date: Wed, 9 Apr 2025 17:46:48 +0200 Subject: [PATCH 088/317] scotch: takes care IDXSIZE differs from INTSIZE even with cmake (#49842) --- .../repos/builtin/packages/scotch/package.py | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 6bb6d0c3896..5e9231244bc 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -140,9 +140,17 @@ def cmake_args(self): if "+int64" in self.spec: args.append("-DINTSIZE=64") + elif self.is_64bit(): + c_flags = [] + c_flags.append("-DIDXSIZE64") + c_flags.append("-DINTSIZE32") + args.append(self.define("CMAKE_C_FLAGS", " ".join(c_flags))) return args + def is_64bit(self): + return "64" in str(self.pkg.spec.target.family) + @when("+noarch") def setup_build_environment(self, env): env.unset("SPACK_TARGET_ARGS") @@ -155,13 +163,17 @@ def edit(self, pkg, spec, prefix): makefile_inc = [] cflags = ["-O3", "-DCOMMON_RANDOM_FIXED_SEED", "-DSCOTCH_DETERMINISTIC", "-DSCOTCH_RENAME"] + # SCOTCH_Num typedef: size of integers in arguments + # SCOTCH_Idx typedef: indices for addressing if "+int64" in self.spec: - # SCOTCH_Num typedef: size of integers in arguments cflags.append("-DINTSIZE64") - cflags.append("-DIDXSIZE64") # SCOTCH_Idx typedef: indices for addressing + cflags.append("-DIDXSIZE64") + elif self.is_64bit(): + cflags.append("-DINTSIZE32") + cflags.append("-DIDXSIZE64") else: cflags.append("-DINTSIZE32") - cflags.append("-DIDXSIZE64") # SCOTCH_Idx typedef: indices for addressing + cflags.append("-DIDXSIZE32") if self.spec.satisfies("platform=darwin"): cflags.extend(["-Drestrict=__restrict"]) @@ -283,6 +295,9 @@ def edit(self, pkg, spec, prefix): with open("Makefile.inc", "w") as fh: fh.write("\n".join(makefile_inc)) + def is_64bit(self): + return "64" in str(self.pkg.spec.target.family) + @property def build_targets(self): targets = ["scotch"] From 84dcc654ecf16b50fa86ea6c22beb4b9d63f8483 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 9 Apr 2025 19:29:47 +0200 Subject: [PATCH 089/317] util/environment.py: require string values in env mods (#49987) --- lib/spack/spack/util/environment.py | 113 ++++++++---------- .../repos/builtin/packages/groff/package.py | 2 +- 2 files changed, 50 insertions(+), 65 deletions(-) diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index e52807eda74..6f092115311 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -12,13 +12,15 @@ import shlex import subprocess import sys -from functools import wraps +import warnings from typing import Any, Callable, Dict, Iterable, List, MutableMapping, Optional, Tuple, Union from llnl.path import path_to_os_path, system_path_filter from llnl.util import tty from llnl.util.lang import dedupe +import spack.error + if sys.platform == "win32": SYSTEM_PATHS = [ "C:\\", @@ -61,28 +63,6 @@ ModificationList = List[Union["NameModifier", "NameValueModifier"]] -def system_env_normalize(func): - """Decorator wrapping calls to system env modifications, - converting all env variable names to all upper case on Windows, no-op - on other platforms before calling env modification method. - - Windows, due to a DOS holdover, treats all env variable names case - insensitively, however Spack's env modification class does not, - meaning setting `Path` and `PATH` would be distinct env operations - for Spack, but would cause a collision when actually performing the - env modification operations on the env. - Normalize all env names to all caps to prevent this collision from the - Spack side.""" - - @wraps(func) - def case_insensitive_modification(self, name: str, *args, **kwargs): - if sys.platform == "win32": - name = name.upper() - return func(self, name, *args, **kwargs) - - return case_insensitive_modification - - def is_system_path(path: Path) -> bool: """Returns True if the argument is a system path, False otherwise.""" return bool(path) and (os.path.normpath(path) in SYSTEM_DIRS) @@ -251,7 +231,7 @@ class NameModifier: __slots__ = ("name", "separator", "trace") def __init__(self, name: str, *, separator: str = os.pathsep, trace: Optional[Trace] = None): - self.name = name + self.name = name.upper() if sys.platform == "win32" else name self.separator = separator self.trace = trace @@ -271,9 +251,17 @@ class NameValueModifier: __slots__ = ("name", "value", "separator", "trace") def __init__( - self, name: str, value: Any, *, separator: str = os.pathsep, trace: Optional[Trace] = None + self, name: str, value: str, *, separator: str = os.pathsep, trace: Optional[Trace] = None ): - self.name = name + self.name = name.upper() if sys.platform == "win32" else name + if not isinstance(value, str): + warnings.warn( + f"{self.__class__.__name__} {self.name}={value}: using a non-string value " + f"{type(value).__name__} is deprecated and will be an error in Spack v1.0", + spack.error.SpackAPIWarning, + stacklevel=4, + ) + value = str(value) self.value = value self.separator = separator self.trace = trace @@ -309,17 +297,17 @@ def __init__( self.raw = raw def execute(self, env: MutableMapping[str, str]): - tty.debug(f"SetEnv: {self.name}={str(self.value)}", level=3) - env[self.name] = str(self.value) + tty.debug(f"SetEnv: {self.name}={self.value}", level=3) + env[self.name] = self.value class AppendFlagsEnv(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"AppendFlagsEnv: {self.name}={str(self.value)}", level=3) + tty.debug(f"AppendFlagsEnv: {self.name}={self.value}", level=3) if self.name in env and env[self.name]: - env[self.name] += self.separator + str(self.value) + env[self.name] += self.separator + self.value else: - env[self.name] = str(self.value) + env[self.name] = self.value class UnsetEnv(NameModifier): @@ -331,7 +319,7 @@ def execute(self, env: MutableMapping[str, str]): class RemoveFlagsEnv(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"RemoveFlagsEnv: {self.name}-{str(self.value)}", level=3) + tty.debug(f"RemoveFlagsEnv: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") flags = environment_value.split(self.separator) if environment_value else [] flags = [f for f in flags if f != self.value] @@ -339,15 +327,24 @@ def execute(self, env: MutableMapping[str, str]): class SetPath(NameValueModifier): + def __init__( + self, + name: str, + value: List[str], + *, + separator: str = os.pathsep, + trace: Optional[Trace] = None, + ): + super().__init__(name, separator.join(value), separator=separator, trace=trace) + def execute(self, env: MutableMapping[str, str]): - string_path = self.separator.join(str(item) for item in self.value) - tty.debug(f"SetPath: {self.name}={string_path}", level=3) - env[self.name] = string_path + tty.debug(f"SetPath: {self.name}={self.value}", level=3) + env[self.name] = self.value class AppendPath(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"AppendPath: {self.name}+{str(self.value)}", level=3) + tty.debug(f"AppendPath: {self.name}+{self.value}", level=3) environment_value = env.get(self.name, "") directories = environment_value.split(self.separator) if environment_value else [] directories.append(path_to_os_path(os.path.normpath(self.value)).pop()) @@ -356,7 +353,7 @@ def execute(self, env: MutableMapping[str, str]): class PrependPath(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"PrependPath: {self.name}+{str(self.value)}", level=3) + tty.debug(f"PrependPath: {self.name}+{self.value}", level=3) environment_value = env.get(self.name, "") directories = environment_value.split(self.separator) if environment_value else [] directories = [path_to_os_path(os.path.normpath(self.value)).pop()] + directories @@ -365,7 +362,7 @@ def execute(self, env: MutableMapping[str, str]): class RemoveFirstPath(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"RemoveFirstPath: {self.name}-{str(self.value)}", level=3) + tty.debug(f"RemoveFirstPath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") directories = environment_value.split(self.separator) directories = [path_to_os_path(os.path.normpath(x)).pop() for x in directories] @@ -377,7 +374,7 @@ def execute(self, env: MutableMapping[str, str]): class RemoveLastPath(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"RemoveLastPath: {self.name}-{str(self.value)}", level=3) + tty.debug(f"RemoveLastPath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") directories = environment_value.split(self.separator)[::-1] directories = [path_to_os_path(os.path.normpath(x)).pop() for x in directories] @@ -389,7 +386,7 @@ def execute(self, env: MutableMapping[str, str]): class RemovePath(NameValueModifier): def execute(self, env: MutableMapping[str, str]): - tty.debug(f"RemovePath: {self.name}-{str(self.value)}", level=3) + tty.debug(f"RemovePath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") directories = environment_value.split(self.separator) directories = [ @@ -473,8 +470,7 @@ def _trace(self) -> Optional[Trace]: return Trace(filename=filename, lineno=lineno, context=current_context) - @system_env_normalize - def set(self, name: str, value: str, *, force: bool = False, raw: bool = False): + def set(self, name: str, value: str, *, force: bool = False, raw: bool = False) -> None: """Stores a request to set an environment variable. Args: @@ -486,8 +482,7 @@ def set(self, name: str, value: str, *, force: bool = False, raw: bool = False): item = SetEnv(name, value, trace=self._trace(), force=force, raw=raw) self.env_modifications.append(item) - @system_env_normalize - def append_flags(self, name: str, value: str, sep: str = " "): + def append_flags(self, name: str, value: str, sep: str = " ") -> None: """Stores a request to append 'flags' to an environment variable. Args: @@ -498,8 +493,7 @@ def append_flags(self, name: str, value: str, sep: str = " "): item = AppendFlagsEnv(name, value, separator=sep, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def unset(self, name: str): + def unset(self, name: str) -> None: """Stores a request to unset an environment variable. Args: @@ -508,8 +502,7 @@ def unset(self, name: str): item = UnsetEnv(name, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def remove_flags(self, name: str, value: str, sep: str = " "): + def remove_flags(self, name: str, value: str, sep: str = " ") -> None: """Stores a request to remove flags from an environment variable Args: @@ -520,8 +513,7 @@ def remove_flags(self, name: str, value: str, sep: str = " "): item = RemoveFlagsEnv(name, value, separator=sep, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def set_path(self, name: str, elements: List[str], separator: str = os.pathsep): + def set_path(self, name: str, elements: List[str], separator: str = os.pathsep) -> None: """Stores a request to set an environment variable to a list of paths, separated by a character defined in input. @@ -533,8 +525,7 @@ def set_path(self, name: str, elements: List[str], separator: str = os.pathsep): item = SetPath(name, elements, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def append_path(self, name: str, path: str, separator: str = os.pathsep): + def append_path(self, name: str, path: str, separator: str = os.pathsep) -> None: """Stores a request to append a path to list of paths. Args: @@ -545,8 +536,7 @@ def append_path(self, name: str, path: str, separator: str = os.pathsep): item = AppendPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def prepend_path(self, name: str, path: str, separator: str = os.pathsep): + def prepend_path(self, name: str, path: str, separator: str = os.pathsep) -> None: """Stores a request to prepend a path to list of paths. Args: @@ -557,8 +547,7 @@ def prepend_path(self, name: str, path: str, separator: str = os.pathsep): item = PrependPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def remove_first_path(self, name: str, path: str, separator: str = os.pathsep): + def remove_first_path(self, name: str, path: str, separator: str = os.pathsep) -> None: """Stores a request to remove first instance of path from a list of paths. Args: @@ -569,8 +558,7 @@ def remove_first_path(self, name: str, path: str, separator: str = os.pathsep): item = RemoveFirstPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def remove_last_path(self, name: str, path: str, separator: str = os.pathsep): + def remove_last_path(self, name: str, path: str, separator: str = os.pathsep) -> None: """Stores a request to remove last instance of path from a list of paths. Args: @@ -581,8 +569,7 @@ def remove_last_path(self, name: str, path: str, separator: str = os.pathsep): item = RemoveLastPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def remove_path(self, name: str, path: str, separator: str = os.pathsep): + def remove_path(self, name: str, path: str, separator: str = os.pathsep) -> None: """Stores a request to remove a path from a list of paths. Args: @@ -593,8 +580,7 @@ def remove_path(self, name: str, path: str, separator: str = os.pathsep): item = RemovePath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def deprioritize_system_paths(self, name: str, separator: str = os.pathsep): + def deprioritize_system_paths(self, name: str, separator: str = os.pathsep) -> None: """Stores a request to deprioritize system paths in a path list, otherwise preserving the order. @@ -605,8 +591,7 @@ def deprioritize_system_paths(self, name: str, separator: str = os.pathsep): item = DeprioritizeSystemPaths(name, separator=separator, trace=self._trace()) self.env_modifications.append(item) - @system_env_normalize - def prune_duplicate_paths(self, name: str, separator: str = os.pathsep): + def prune_duplicate_paths(self, name: str, separator: str = os.pathsep) -> None: """Stores a request to remove duplicates from a path list, otherwise preserving the order. diff --git a/var/spack/repos/builtin/packages/groff/package.py b/var/spack/repos/builtin/packages/groff/package.py index 8d9b7a714a8..16972d917c5 100644 --- a/var/spack/repos/builtin/packages/groff/package.py +++ b/var/spack/repos/builtin/packages/groff/package.py @@ -92,7 +92,7 @@ def configure_args(self): def setup_run_environment(self, env): if self.spec.satisfies("+x"): dir = join_path(self.prefix.lib, "X11", "app-defaults") - env.set_path("XFILESEARCHPATH", dir) + env.prepend_path("XFILESEARCHPATH", dir) def flag_handler(self, name, flags): if name == "cxxflags": From 4a88884a8e23ec6432e604d401e31905035cf1bb Mon Sep 17 00:00:00 2001 From: Rob Latham Date: Wed, 9 Apr 2025 14:14:16 -0500 Subject: [PATCH 090/317] root's new RNTuple format can use daos backends (#49849) * root's new RNTuple format can use daos backends * Update var/spack/repos/builtin/packages/root/package.py Co-authored-by: Wouter Deconinck * root: fix style * hep: root +daos --------- Co-authored-by: Wouter Deconinck --- share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml | 2 +- var/spack/repos/builtin/packages/daos/package.py | 1 + var/spack/repos/builtin/packages/dpdk/package.py | 2 +- var/spack/repos/builtin/packages/root/package.py | 6 ++++++ var/spack/repos/builtin/packages/spdk/package.py | 3 +++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml index 6c6b6d91295..40d8bd81f4f 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml @@ -27,7 +27,7 @@ spack: rivet: require: hepmc=3 root: - require: +arrow +davix +dcache +emacs +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +tmva-cpu +unuran +vc +vdt +veccore +webgui +x +xml +xrootd # cxxstd=20 + require: +arrow ~daos +davix +dcache +emacs +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +tmva-cpu +unuran +vc +vdt +veccore +webgui +x +xml +xrootd # cxxstd=20 # note: root cxxstd=20 not concretizable within sherpa vecgeom: require: +gdml +geant4 +root +shared cxxstd=20 diff --git a/var/spack/repos/builtin/packages/daos/package.py b/var/spack/repos/builtin/packages/daos/package.py index 341f2e442f5..0257af8e642 100644 --- a/var/spack/repos/builtin/packages/daos/package.py +++ b/var/spack/repos/builtin/packages/daos/package.py @@ -33,6 +33,7 @@ class Daos(SConsPackage): depends_on("boost", type="build") depends_on("cmocka", type="build") depends_on("go", type="build") + depends_on("pkgconfig", type="build") depends_on("hwloc") depends_on("isa-l@2.30.0:") depends_on("isa-l-crypto@2.23.0:") diff --git a/var/spack/repos/builtin/packages/dpdk/package.py b/var/spack/repos/builtin/packages/dpdk/package.py index 47c8165010d..f99cfc1098b 100644 --- a/var/spack/repos/builtin/packages/dpdk/package.py +++ b/var/spack/repos/builtin/packages/dpdk/package.py @@ -49,7 +49,7 @@ class Dpdk(MakefilePackage, MesonPackage): class MesonBuilder(MesonBuilder): def meson_args(self): - return ["--warnlevel=3"] + return ["--warnlevel=2"] class MakefileBuilder(MakefileBuilder): diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index e6812b89341..61078203c14 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -190,6 +190,9 @@ class Root(CMakePackage): 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") + variant( + "daos", default=False, description="Enable RNTuple support for DAOS storage", when="@6.26:" + ) variant("davix", default=True, description="Compile with external Davix") variant("dcache", default=False, description="Enable support for dCache") variant("emacs", default=False, description="Enable Emacs support") @@ -389,6 +392,7 @@ class Root(CMakePackage): depends_on("cuda", when="+cuda") depends_on("cuda", when="+cudnn") depends_on("cudnn", when="+cudnn") + depends_on("daos", when="+daos") depends_on("davix @0.7.1:", when="+davix") depends_on("dcap", when="+dcache") depends_on("cfitsio", when="+fits") @@ -560,6 +564,7 @@ def _add_variant(variants, features, featurename, variantname): variants.append("~%s" % variantname[1:]) _add_variant(v, f, "cocoa", "+aqua") + _add_variant(v, f, "daos", "+daos") _add_variant(v, f, "davix", "+davix") _add_variant(v, f, "dcache", "+dcache") _add_variant(v, f, "fftw3", "+fftw") @@ -706,6 +711,7 @@ def cmake_args(self): define_from_variant("cocoa", "aqua"), define("dataframe", True), define_from_variant("davix"), + define_from_variant("daos"), define_from_variant("dcache"), define_from_variant("fftw3", "fftw"), define_from_variant("fitsio", "fits"), diff --git a/var/spack/repos/builtin/packages/spdk/package.py b/var/spack/repos/builtin/packages/spdk/package.py index a20e4767f0d..b370c1fa376 100644 --- a/var/spack/repos/builtin/packages/spdk/package.py +++ b/var/spack/repos/builtin/packages/spdk/package.py @@ -61,6 +61,8 @@ class Spdk(AutotoolsPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + depends_on("libtool", type="build") + depends_on("pkgconfig", type="build") depends_on("dpdk@22.11:", when="+dpdk") depends_on("fio@3.33", when="+fio") @@ -70,6 +72,7 @@ class Spdk(AutotoolsPackage): depends_on("numactl") depends_on("py-pyelftools") depends_on("rdma-core", when="+rdma") + depends_on("uuid") def configure_args(self): spec = self.spec From 6df832d9797cafc730ca3b8883aaab1c397c7dd0 Mon Sep 17 00:00:00 2001 From: Alex Tyler Chapman <100869159+chapman39@users.noreply.github.com> Date: Wed, 9 Apr 2025 23:07:47 -0700 Subject: [PATCH 091/317] Add `+axom` variant to the hiop spack package (#49817) * Add missing AXOM_DIR to hiop package * remove auto-generated compiler comments --- var/spack/repos/builtin/packages/hiop/package.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/var/spack/repos/builtin/packages/hiop/package.py b/var/spack/repos/builtin/packages/hiop/package.py index 8d85f27019e..f8b46161d08 100644 --- a/var/spack/repos/builtin/packages/hiop/package.py +++ b/var/spack/repos/builtin/packages/hiop/package.py @@ -72,6 +72,15 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version("develop", branch="develop") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + + variant( + "axom", + default=False, + description="Enable/Disable AXOM to use Sidre for scalable checkpointing", + ) variant("jsrun", default=False, description="Enable/Disable jsrun command for testing") variant("shared", default=False, description="Enable/Disable shared libraries") variant("mpi", default=True, description="Enable/Disable MPI") @@ -152,6 +161,8 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): # This is no longer a requirement in RAJA > 0.14 depends_on("umpire+cuda~shared", when="+raja+cuda ^raja@:0.14") + depends_on("axom", when="+axom") + conflicts( "+shared", when="+cuda+raja ^raja@:0.14", @@ -203,6 +214,7 @@ def cmake_args(self): self.define_from_variant("HIOP_USE_MPI", "mpi"), self.define_from_variant("HIOP_DEEPCHECKS", "deepchecking"), self.define_from_variant("HIOP_USE_CUDA", "cuda"), + self.define_from_variant("HIOP_USE_AXOM", "axom"), self.define_from_variant("HIOP_USE_HIP", "rocm"), self.define_from_variant("HIOP_USE_RAJA", "raja"), self.define_from_variant("HIOP_USE_UMPIRE", "raja"), @@ -272,6 +284,9 @@ def cmake_args(self): if spec.satisfies("+sparse"): args.append(self.define("HIOP_COINHSL_DIR", spec["coinhsl"].prefix)) + if spec.satisfies("+axom"): + args.append(self.define("AXOM_DIR", spec["axom"].prefix)) + return args # If testing on a cluster without access to home directory in a job, you may From 252ceeedbe56d2d254d9700e903ad10fcd8b2629 Mon Sep 17 00:00:00 2001 From: psakievich Date: Thu, 10 Apr 2025 01:40:16 -0600 Subject: [PATCH 092/317] spack develop: avoid deprecated package_class (#49997) --- lib/spack/spack/cmd/develop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/develop.py b/lib/spack/spack/cmd/develop.py index e46fde7a4ad..b3aee538c59 100644 --- a/lib/spack/spack/cmd/develop.py +++ b/lib/spack/spack/cmd/develop.py @@ -102,7 +102,7 @@ def assure_concrete_spec(env: spack.environment.Environment, spec: spack.spec.Sp ) else: # look up the maximum version so infintiy versions are preferred for develop - version = max(spec.package_class.versions.keys()) + version = max(spack.repo.PATH.get_pkg_class(spec.fullname).versions.keys()) tty.msg(f"Defaulting to highest version: {spec.name}@{version}") spec.versions = spack.version.VersionList([version]) From 23d7305efd76550e52025afa0ae85ebfe28b4a66 Mon Sep 17 00:00:00 2001 From: Scott Wittenburg Date: Thu, 10 Apr 2025 01:42:01 -0600 Subject: [PATCH 093/317] buildcache: Remove deprecated commands and arguments (#49999) --- lib/spack/spack/cmd/buildcache.py | 91 +++---------------------------- lib/spack/spack/test/cmd/ci.py | 4 -- share/spack/spack-completion.bash | 16 ++---- share/spack/spack-completion.fish | 32 ++--------- 4 files changed, 18 insertions(+), 125 deletions(-) diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py index a76cfa767f6..80a579a3b71 100644 --- a/lib/spack/spack/cmd/buildcache.py +++ b/lib/spack/spack/cmd/buildcache.py @@ -76,9 +76,6 @@ def setup_parser(subparser: argparse.ArgumentParser): default=False, help="regenerate buildcache index after building package(s)", ) - push.add_argument( - "--spec-file", default=None, help="create buildcache entry for spec from json or yaml file" - ) push.add_argument( "--only", default="package,dependencies", @@ -192,28 +189,14 @@ def setup_parser(subparser: argparse.ArgumentParser): default=lambda: spack.config.default_modify_scope(), help="configuration scope containing mirrors to check", ) - # Unfortunately there are 3 ways to do the same thing here: - check_specs = check.add_mutually_exclusive_group() - check_specs.add_argument( - "-s", "--spec", help="check single spec instead of release specs file" - ) - check_specs.add_argument( - "--spec-file", - help="check single spec from json or yaml file instead of release specs file", - ) + arguments.add_common_arguments(check, ["specs"]) check.set_defaults(func=check_fn) # Download tarball and specfile download = subparsers.add_parser("download", help=download_fn.__doc__) - download_spec_or_specfile = download.add_mutually_exclusive_group(required=True) - download_spec_or_specfile.add_argument( - "-s", "--spec", help="download built tarball for spec from mirror" - ) - download_spec_or_specfile.add_argument( - "--spec-file", help="download built tarball for spec (from json or yaml file) from mirror" - ) + download.add_argument("-s", "--spec", help="download built tarball for spec from mirror") download.add_argument( "-p", "--path", @@ -223,28 +206,10 @@ def setup_parser(subparser: argparse.ArgumentParser): ) download.set_defaults(func=download_fn) - # Get buildcache name - getbuildcachename = subparsers.add_parser( - "get-buildcache-name", help=get_buildcache_name_fn.__doc__ - ) - getbuildcachename_spec_or_specfile = getbuildcachename.add_mutually_exclusive_group( - required=True - ) - getbuildcachename_spec_or_specfile.add_argument( - "-s", "--spec", help="spec string for which buildcache name is desired" - ) - getbuildcachename_spec_or_specfile.add_argument( - "--spec-file", help="path to spec json or yaml file for which buildcache name is desired" - ) - getbuildcachename.set_defaults(func=get_buildcache_name_fn) - # Given the root spec, save the yaml of the dependent spec to a file savespecfile = subparsers.add_parser("save-specfile", help=save_specfile_fn.__doc__) savespecfile_spec_or_specfile = savespecfile.add_mutually_exclusive_group(required=True) savespecfile_spec_or_specfile.add_argument("--root-spec", help="root spec of dependent spec") - savespecfile_spec_or_specfile.add_argument( - "--root-specfile", help="path to json or yaml file containing root spec of dependent spec" - ) savespecfile.add_argument( "-s", "--specs", @@ -380,14 +345,8 @@ def _specs_to_be_packaged( def push_fn(args): """create a binary package and push it to a mirror""" - if args.spec_file: - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - "Use positional arguments instead." - ) - - if args.specs or args.spec_file: - roots = _matching_specs(spack.cmd.parse_specs(args.specs or args.spec_file)) + if args.specs: + roots = _matching_specs(spack.cmd.parse_specs(args.specs)) else: roots = spack.cmd.require_active_env(cmd_name="buildcache push").concrete_roots() @@ -529,22 +488,7 @@ def check_fn(args: argparse.Namespace): this command uses the process exit code to indicate its result, specifically, if the exit code is non-zero, then at least one of the indicated specs needs to be rebuilt """ - if args.spec_file: - specs_arg = ( - args.spec_file if os.path.sep in args.spec_file else os.path.join(".", args.spec_file) - ) - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - f"Use `spack buildcache check {specs_arg}` instead." - ) - elif args.spec: - specs_arg = args.spec - tty.warn( - "The flag `--spec` is deprecated and will be removed in Spack 0.23. " - f"Use `spack buildcache check {specs_arg}` instead." - ) - else: - specs_arg = args.specs + specs_arg = args.specs if specs_arg: specs = _matching_specs(spack.cmd.parse_specs(specs_arg)) @@ -578,13 +522,7 @@ def download_fn(args): code indicates that the command failed to download at least one of the required buildcache components """ - if args.spec_file: - tty.warn( - "The flag `--spec-file` is deprecated and will be removed in Spack 0.22. " - "Use --spec instead." - ) - - specs = _matching_specs(spack.cmd.parse_specs(args.spec or args.spec_file)) + specs = _matching_specs(spack.cmd.parse_specs(args.spec)) if len(specs) != 1: tty.die("a single spec argument is required to download from a buildcache") @@ -593,15 +531,6 @@ def download_fn(args): sys.exit(1) -def get_buildcache_name_fn(args): - """get name (prefix) of buildcache entries for this spec""" - tty.warn("This command is deprecated and will be removed in Spack 0.22.") - specs = _matching_specs(spack.cmd.parse_specs(args.spec or args.spec_file)) - if len(specs) != 1: - tty.die("a single spec argument is required to get buildcache name") - print(bindist.tarball_name(specs[0], "")) - - def save_specfile_fn(args): """get full spec for dependencies and write them to files in the specified output directory @@ -609,13 +538,7 @@ def save_specfile_fn(args): successful. if any errors or exceptions are encountered, or if expected command-line arguments are not provided, then the exit code will be non-zero """ - if args.root_specfile: - tty.warn( - "The flag `--root-specfile` is deprecated and will be removed in Spack 0.22. " - "Use --root-spec instead." - ) - - specs = spack.cmd.parse_specs(args.root_spec or args.root_specfile) + specs = spack.cmd.parse_specs(args.root_spec) if len(specs) != 1: tty.die("a single spec argument is required to save specfile") diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index b1201efbe74..da1ce50c77e 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -873,10 +873,6 @@ def test_push_to_build_cache( ci.copy_stage_logs_to_artifacts(concrete_spec, str(logs_dir)) assert "spack-build-out.txt.gz" in os.listdir(logs_dir) - dl_dir = scratch / "download_dir" - buildcache_cmd("download", "--spec-file", json_path, "--path", str(dl_dir)) - assert len(os.listdir(dl_dir)) == 2 - def test_push_to_build_cache_exceptions(monkeypatch, tmp_path, capsys): def push_or_raise(*args, **kwargs): diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 65d276b9743..7abaf6ff785 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -563,14 +563,14 @@ _spack_buildcache() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="push create install list keys check download get-buildcache-name save-specfile sync update-index rebuild-index" + SPACK_COMPREPLY="push create install list keys check download save-specfile sync update-index rebuild-index" fi } _spack_buildcache_push() { if $list_options then - SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --spec-file --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" + SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" else _mirrors fi @@ -579,7 +579,7 @@ _spack_buildcache_push() { _spack_buildcache_create() { if $list_options then - SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --spec-file --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" + SPACK_COMPREPLY="-h --help -f --force --unsigned -u --signed --key -k --update-index --rebuild-index --only --with-build-dependencies --without-build-dependencies --fail-fast --base-image --tag -t --private -j --jobs" else _mirrors fi @@ -610,22 +610,18 @@ _spack_buildcache_keys() { _spack_buildcache_check() { if $list_options then - SPACK_COMPREPLY="-h --help -m --mirror-url -o --output-file --scope -s --spec --spec-file" + SPACK_COMPREPLY="-h --help -m --mirror-url -o --output-file --scope" else _all_packages fi } _spack_buildcache_download() { - SPACK_COMPREPLY="-h --help -s --spec --spec-file -p --path" -} - -_spack_buildcache_get_buildcache_name() { - SPACK_COMPREPLY="-h --help -s --spec --spec-file" + SPACK_COMPREPLY="-h --help -s --spec -p --path" } _spack_buildcache_save_specfile() { - SPACK_COMPREPLY="-h --help --root-spec --root-specfile -s --specs --specfile-dir" + SPACK_COMPREPLY="-h --help --root-spec -s --specs --specfile-dir" } _spack_buildcache_sync() { diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 0a6c986757f..9d53ea526ec 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -693,7 +693,6 @@ complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a list -d complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a keys -d 'get public keys available on mirrors' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a check -d 'check specs against remote binary mirror(s) to see if any need to be rebuilt' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a download -d 'download buildcache entry from a remote mirror to local folder' -complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a get-buildcache-name -d 'get name (prefix) of buildcache entries for this spec' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a save-specfile -d 'get full spec for dependencies and write them to files in the specified output directory' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a sync -d 'sync binaries (and associated metadata) from one mirror to another' complete -c spack -n '__fish_spack_using_command_pos 0 buildcache' -f -a update-index -d 'update a buildcache index' @@ -702,7 +701,7 @@ complete -c spack -n '__fish_spack_using_command buildcache' -s h -l help -f -a complete -c spack -n '__fish_spack_using_command buildcache' -s h -l help -d 'show this help message and exit' # spack buildcache push -set -g __fish_spack_optspecs_spack_buildcache_push h/help f/force u/unsigned signed k/key= update-index spec-file= only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= +set -g __fish_spack_optspecs_spack_buildcache_push h/help f/force u/unsigned signed k/key= update-index only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= complete -c spack -n '__fish_spack_using_command_pos_remainder 1 buildcache push' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache push' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache push' -s h -l help -d 'show this help message and exit' @@ -716,8 +715,6 @@ complete -c spack -n '__fish_spack_using_command buildcache push' -l key -s k -r complete -c spack -n '__fish_spack_using_command buildcache push' -l key -s k -r -d 'key for signing' complete -c spack -n '__fish_spack_using_command buildcache push' -l update-index -l rebuild-index -f -a update_index complete -c spack -n '__fish_spack_using_command buildcache push' -l update-index -l rebuild-index -d 'regenerate buildcache index after building package(s)' -complete -c spack -n '__fish_spack_using_command buildcache push' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache push' -l spec-file -r -d 'create buildcache entry for spec from json or yaml file' complete -c spack -n '__fish_spack_using_command buildcache push' -l only -r -f -a 'package dependencies' complete -c spack -n '__fish_spack_using_command buildcache push' -l only -r -d 'select the buildcache mode. The default is to build a cache for the package along with all its dependencies. Alternatively, one can decide to build a cache for only the package or only the dependencies' complete -c spack -n '__fish_spack_using_command buildcache push' -l with-build-dependencies -f -a with_build_dependencies @@ -736,7 +733,7 @@ complete -c spack -n '__fish_spack_using_command buildcache push' -s j -l jobs - complete -c spack -n '__fish_spack_using_command buildcache push' -s j -l jobs -r -d 'explicitly set number of parallel jobs' # spack buildcache create -set -g __fish_spack_optspecs_spack_buildcache_create h/help f/force u/unsigned signed k/key= update-index spec-file= only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= +set -g __fish_spack_optspecs_spack_buildcache_create h/help f/force u/unsigned signed k/key= update-index only= with-build-dependencies without-build-dependencies fail-fast base-image= t/tag= private j/jobs= complete -c spack -n '__fish_spack_using_command_pos_remainder 1 buildcache create' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache create' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache create' -s h -l help -d 'show this help message and exit' @@ -750,8 +747,6 @@ complete -c spack -n '__fish_spack_using_command buildcache create' -l key -s k complete -c spack -n '__fish_spack_using_command buildcache create' -l key -s k -r -d 'key for signing' complete -c spack -n '__fish_spack_using_command buildcache create' -l update-index -l rebuild-index -f -a update_index complete -c spack -n '__fish_spack_using_command buildcache create' -l update-index -l rebuild-index -d 'regenerate buildcache index after building package(s)' -complete -c spack -n '__fish_spack_using_command buildcache create' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache create' -l spec-file -r -d 'create buildcache entry for spec from json or yaml file' complete -c spack -n '__fish_spack_using_command buildcache create' -l only -r -f -a 'package dependencies' complete -c spack -n '__fish_spack_using_command buildcache create' -l only -r -d 'select the buildcache mode. The default is to build a cache for the package along with all its dependencies. Alternatively, one can decide to build a cache for only the package or only the dependencies' complete -c spack -n '__fish_spack_using_command buildcache create' -l with-build-dependencies -f -a with_build_dependencies @@ -811,7 +806,7 @@ complete -c spack -n '__fish_spack_using_command buildcache keys' -s f -l force complete -c spack -n '__fish_spack_using_command buildcache keys' -s f -l force -d 'force new download of keys' # spack buildcache check -set -g __fish_spack_optspecs_spack_buildcache_check h/help m/mirror-url= o/output-file= scope= s/spec= spec-file= +set -g __fish_spack_optspecs_spack_buildcache_check h/help m/mirror-url= o/output-file= scope= complete -c spack -n '__fish_spack_using_command_pos_remainder 0 buildcache check' -f -k -a '(__fish_spack_specs)' complete -c spack -n '__fish_spack_using_command buildcache check' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache check' -s h -l help -d 'show this help message and exit' @@ -821,39 +816,22 @@ complete -c spack -n '__fish_spack_using_command buildcache check' -s o -l outpu complete -c spack -n '__fish_spack_using_command buildcache check' -s o -l output-file -r -d 'file where rebuild info should be written' complete -c spack -n '__fish_spack_using_command buildcache check' -l scope -r -f -a '_builtin defaults system site user command_line' complete -c spack -n '__fish_spack_using_command buildcache check' -l scope -r -d 'configuration scope containing mirrors to check' -complete -c spack -n '__fish_spack_using_command buildcache check' -s s -l spec -r -f -a spec -complete -c spack -n '__fish_spack_using_command buildcache check' -s s -l spec -r -d 'check single spec instead of release specs file' -complete -c spack -n '__fish_spack_using_command buildcache check' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache check' -l spec-file -r -d 'check single spec from json or yaml file instead of release specs file' # spack buildcache download -set -g __fish_spack_optspecs_spack_buildcache_download h/help s/spec= spec-file= p/path= +set -g __fish_spack_optspecs_spack_buildcache_download h/help s/spec= p/path= complete -c spack -n '__fish_spack_using_command buildcache download' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache download' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command buildcache download' -s s -l spec -r -f -a spec complete -c spack -n '__fish_spack_using_command buildcache download' -s s -l spec -r -d 'download built tarball for spec from mirror' -complete -c spack -n '__fish_spack_using_command buildcache download' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache download' -l spec-file -r -d 'download built tarball for spec (from json or yaml file) from mirror' complete -c spack -n '__fish_spack_using_command buildcache download' -s p -l path -r -f -a path complete -c spack -n '__fish_spack_using_command buildcache download' -s p -l path -r -d 'path to directory where tarball should be downloaded' -# spack buildcache get-buildcache-name -set -g __fish_spack_optspecs_spack_buildcache_get_buildcache_name h/help s/spec= spec-file= -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s h -l help -f -a help -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s h -l help -d 'show this help message and exit' -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s s -l spec -r -f -a spec -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -s s -l spec -r -d 'spec string for which buildcache name is desired' -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -l spec-file -r -f -a spec_file -complete -c spack -n '__fish_spack_using_command buildcache get-buildcache-name' -l spec-file -r -d 'path to spec json or yaml file for which buildcache name is desired' - # spack buildcache save-specfile -set -g __fish_spack_optspecs_spack_buildcache_save_specfile h/help root-spec= root-specfile= s/specs= specfile-dir= +set -g __fish_spack_optspecs_spack_buildcache_save_specfile h/help root-spec= s/specs= specfile-dir= complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-spec -r -f -a root_spec complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-spec -r -d 'root spec of dependent spec' -complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-specfile -r -f -a root_specfile -complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l root-specfile -r -d 'path to json or yaml file containing root spec of dependent spec' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s s -l specs -r -f -a specs complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -s s -l specs -r -d 'list of dependent specs for which saved yaml is desired' complete -c spack -n '__fish_spack_using_command buildcache save-specfile' -l specfile-dir -r -f -a specfile_dir From c5e5ed3a3bb700bb69d783a3c7fd6ba7b1b8a774 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 10 Apr 2025 10:43:33 +0200 Subject: [PATCH 094/317] rocm ecosystem: deprecate master type versions (#49982) --- var/spack/repos/builtin/packages/comgr/package.py | 2 +- .../repos/builtin/packages/composable-kernel/package.py | 2 +- var/spack/repos/builtin/packages/hip-rocclr/package.py | 2 +- var/spack/repos/builtin/packages/hip-tensor/package.py | 2 +- var/spack/repos/builtin/packages/hip/package.py | 2 +- var/spack/repos/builtin/packages/hipblas/package.py | 4 ++-- var/spack/repos/builtin/packages/hipfft/package.py | 2 +- var/spack/repos/builtin/packages/hipify-clang/package.py | 2 +- var/spack/repos/builtin/packages/hiprand/package.py | 4 ++-- var/spack/repos/builtin/packages/hipsolver/package.py | 4 ++-- var/spack/repos/builtin/packages/hsa-rocr-dev/package.py | 2 +- var/spack/repos/builtin/packages/hsakmt-roct/package.py | 2 +- var/spack/repos/builtin/packages/llvm-amdgpu/package.py | 2 +- var/spack/repos/builtin/packages/omnitrace/package.py | 4 ++-- var/spack/repos/builtin/packages/rocblas/package.py | 4 ++-- var/spack/repos/builtin/packages/rocfft/package.py | 2 +- .../repos/builtin/packages/rocm-bandwidth-test/package.py | 2 +- var/spack/repos/builtin/packages/rocm-clang-ocl/package.py | 2 +- var/spack/repos/builtin/packages/rocm-cmake/package.py | 2 +- var/spack/repos/builtin/packages/rocm-dbgapi/package.py | 2 +- .../repos/builtin/packages/rocm-device-libs/package.py | 2 +- var/spack/repos/builtin/packages/rocm-opencl/package.py | 6 +++--- var/spack/repos/builtin/packages/rocm-smi-lib/package.py | 2 +- var/spack/repos/builtin/packages/rocminfo/package.py | 2 +- .../repos/builtin/packages/rocprofiler-systems/package.py | 4 ++-- var/spack/repos/builtin/packages/rocrand/package.py | 4 ++-- var/spack/repos/builtin/packages/rocsolver/package.py | 4 ++-- 27 files changed, 37 insertions(+), 37 deletions(-) diff --git a/var/spack/repos/builtin/packages/comgr/package.py b/var/spack/repos/builtin/packages/comgr/package.py index 46dc7356b43..fca124394f5 100644 --- a/var/spack/repos/builtin/packages/comgr/package.py +++ b/var/spack/repos/builtin/packages/comgr/package.py @@ -28,7 +28,7 @@ def url_for_version(self, version): license("NCSA") - version("master", branch="amd-stg-open") + version("master", branch="amd-stg-open", deprecated=True) version("6.3.3", sha256="4df9aba24e574edf23844c0d2d9dda112811db5c2b08c9428604a21b819eb23d") version("6.3.2", sha256="1f52e45660ea508d3fe717a9903fe27020cee96de95a3541434838e0193a4827") version("6.3.1", sha256="e9c2481cccacdea72c1f8d3970956c447cec47e18dfb9712cbbba76a2820552c") diff --git a/var/spack/repos/builtin/packages/composable-kernel/package.py b/var/spack/repos/builtin/packages/composable-kernel/package.py index a9aeba2e4d4..893dfa18886 100644 --- a/var/spack/repos/builtin/packages/composable-kernel/package.py +++ b/var/spack/repos/builtin/packages/composable-kernel/package.py @@ -17,7 +17,7 @@ class ComposableKernel(CMakePackage): license("MIT") - version("master", branch="develop") + version("master", branch="develop", deprecated=True) version("6.3.3", sha256="b7102efba044455416a6127af1951019fe8365a653ea7eb0b1d83bb4542c9309") version("6.3.2", sha256="875237fe493ff040f8f63b827cddf2ff30a8d3aa18864f87d0e35323c7d62a2d") version("6.3.1", sha256="3e8c8c832ca3f9ceb99ab90f654b93b7db876f08d90eda87a70bc629c854052a") diff --git a/var/spack/repos/builtin/packages/hip-rocclr/package.py b/var/spack/repos/builtin/packages/hip-rocclr/package.py index e324bf3357f..c1cc3ade7c7 100644 --- a/var/spack/repos/builtin/packages/hip-rocclr/package.py +++ b/var/spack/repos/builtin/packages/hip-rocclr/package.py @@ -22,7 +22,7 @@ class HipRocclr(CMakePackage): license("MIT") - version("master", branch="main") + version("master", branch="main", deprecated=True) version("5.6.1", sha256="cc9a99c7e4de3d9360c0a471b27d626e84a39c9e60e0aff1e8e1500d82391819") version("5.6.0", sha256="864f87323e793e60b16905284fba381a7182b960dd4a37fb67420c174442c03c") version("5.5.1", sha256="1375fc7723cfaa0ae22a78682186d4804188b0a54990bfd9c0b8eb421b85e37e") diff --git a/var/spack/repos/builtin/packages/hip-tensor/package.py b/var/spack/repos/builtin/packages/hip-tensor/package.py index 5c3dbdd6dfe..8a25a8d5f7b 100644 --- a/var/spack/repos/builtin/packages/hip-tensor/package.py +++ b/var/spack/repos/builtin/packages/hip-tensor/package.py @@ -15,7 +15,7 @@ class HipTensor(CMakePackage, ROCmPackage): maintainers("srekolam", "afzpatel") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="2f4e34c5a96004e24fcdf70f9157f1079ab177a78f6dbf96ea8290f668257c23") version("6.3.2", sha256="094db6d759eb32e9d15c36fce7f5b5d46ba81416953a8d9435b2fb9c161d8c83") version("6.3.1", sha256="142401331526e6da3fa172cce283f1c053056cb59cf431264443da76cee2f168") diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index 055c74f73bd..b44122f56ed 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -24,7 +24,7 @@ class Hip(CMakePackage): license("MIT") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="aa3a5466304d1dbee0d976b50fccb710dd12e2e1d5534793396447c0ff845e2c") version("6.3.2", sha256="66a4eba98bd74fc7126ce7cb4d59653b22075fe95a70412fe283dc806ae366e0") version("6.3.1", sha256="76f862493c4912a06e0e0b8da3917c2ba7481f1e05f2c23ffd5e05f8c44e3037") diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index a518769e520..2cb24b08d61 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -22,8 +22,8 @@ class Hipblas(CMakePackage, CudaPackage, ROCmPackage): license("MIT") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="8f645a5c9298170e71354437188eeca8272ff2b98077e9f34d1ca0fd7f27b7f8") version("6.3.2", sha256="6e86d4f8657e13665e37fdf3174c3a30f4c7dff2c4e2431d1be110cd7d463971") version("6.3.1", sha256="77a1845254d738c43a48bc52fa3e94499ed83535b5771408ff476122bc4b7b7c") diff --git a/var/spack/repos/builtin/packages/hipfft/package.py b/var/spack/repos/builtin/packages/hipfft/package.py index e86445d7f25..2a46dfebc97 100644 --- a/var/spack/repos/builtin/packages/hipfft/package.py +++ b/var/spack/repos/builtin/packages/hipfft/package.py @@ -23,7 +23,7 @@ class Hipfft(CMakePackage, CudaPackage, ROCmPackage): license("MIT") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="c032d59a45b0eb4441539498bd4c22d8442fbc554cb08d6cb452a1d27be6c57c") version("6.3.2", sha256="5d9e662c7d67f4c814cad70476b57651df5ae6b65f371ca6dbb5aa51d9eeb6f5") version("6.3.1", sha256="b709df2d0115748ed004d0cddce829cb0f9ec3761eb855e61f0097cab04e4806") diff --git a/var/spack/repos/builtin/packages/hipify-clang/package.py b/var/spack/repos/builtin/packages/hipify-clang/package.py index 461650a343d..e7e7eede928 100644 --- a/var/spack/repos/builtin/packages/hipify-clang/package.py +++ b/var/spack/repos/builtin/packages/hipify-clang/package.py @@ -18,7 +18,7 @@ class HipifyClang(CMakePackage): license("MIT") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="94d32b0e02c0c34debb9a8034cb5fcd6c2ee35b67350c64690034cf94cd38ddd") version("6.3.2", sha256="c0da5118be8207fab6d19803417c0b8d2db5bc766279038527cbd6fa92b25c67") version("6.3.1", sha256="5f9d9a65545f97b18c6a0d4394dca1bcdee10737a5635b79378ea505081f9315") diff --git a/var/spack/repos/builtin/packages/hiprand/package.py b/var/spack/repos/builtin/packages/hiprand/package.py index ac990e810b5..1a9481f3056 100644 --- a/var/spack/repos/builtin/packages/hiprand/package.py +++ b/var/spack/repos/builtin/packages/hiprand/package.py @@ -22,8 +22,8 @@ class Hiprand(CMakePackage, CudaPackage, ROCmPackage): license("MIT") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="ea0d7638a463c06d30692205f8c591d3fe025b58a772226ca1c972e723118a2f") version("6.3.2", sha256="0a08ed7554c161b095c866cd5e6f0d63cdf063e5b3c1183afa6ac18bad94a575") version("6.3.1", sha256="ec43bf64eda348cf53c2767e553fd9561540dc50ae3ce95ca916404aa9a3eafb") diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 911d54331f9..6219fdf61fb 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -27,8 +27,8 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): license("MIT") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="529263f9abe5b7485bbabedc3993630abaa0d5fd547c4add0993d1cb0d71e226") version("6.3.2", sha256="885c999da8e4aa0b4cb9584bc0fc0d6a8c8d56f5e7ee6d211c608003eff22aa7") version("6.3.1", sha256="793074ebaa4a3b16dc6e4d2a54ecbb259f1e0ec7fdcd7f885da622a1d1478b76") 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 0df4ab5fe3c..a268920448b 100644 --- a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py @@ -22,7 +22,7 @@ class HsaRocrDev(CMakePackage): maintainers("srekolam", "renjithravindrankannath", "haampie", "afzpatel") libraries = ["libhsa-runtime64"] - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="aa2e30d3d68707d6df4840e954bb08cc13cd312cec1a98a64d97adbe07262f50") version("6.3.2", sha256="aaecaa7206b6fa1d5d7b8f7c1f7c5057a944327ba4779448980d7e7c7122b074") version("6.3.1", sha256="547ceeeda9a41cdffa21e57809dc5834f94938a0a2809c283aebcbcf01901df0") diff --git a/var/spack/repos/builtin/packages/hsakmt-roct/package.py b/var/spack/repos/builtin/packages/hsakmt-roct/package.py index 5c2526d2559..b274bed223d 100644 --- a/var/spack/repos/builtin/packages/hsakmt-roct/package.py +++ b/var/spack/repos/builtin/packages/hsakmt-roct/package.py @@ -20,7 +20,7 @@ class HsakmtRoct(CMakePackage): maintainers("srekolam", "renjithravindrankannath") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.2.4", sha256="5c71655e3a1b9d1404dc8cb64b9d2fadd27e67606aaa8aec0c325768d8c483c0") version("6.2.1", sha256="bba5dd8cce595d94d6a8e467dbd6de9e921f81e665ca8aac1e346e0ade7620f0") version("6.2.0", sha256="73df98ca2be8a887cb76554c23f148ef6556bdbccfac99f34111fa1f87fd7c5d") diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 6497165455e..62af6b51ba6 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -33,7 +33,7 @@ class LlvmAmdgpu(CMakePackage, LlvmDetection, CompilerPackage): license("Apache-2.0") - version("master", branch="amd-stg-open") + version("master", branch="amd-stg-open", deprecated=True) version("6.3.3", sha256="4df9aba24e574edf23844c0d2d9dda112811db5c2b08c9428604a21b819eb23d") version("6.3.2", sha256="1f52e45660ea508d3fe717a9903fe27020cee96de95a3541434838e0193a4827") version("6.3.1", sha256="e9c2481cccacdea72c1f8d3970956c447cec47e18dfb9712cbbba76a2820552c") diff --git a/var/spack/repos/builtin/packages/omnitrace/package.py b/var/spack/repos/builtin/packages/omnitrace/package.py index 29f115f7222..ee45ec54589 100644 --- a/var/spack/repos/builtin/packages/omnitrace/package.py +++ b/var/spack/repos/builtin/packages/omnitrace/package.py @@ -18,8 +18,8 @@ class Omnitrace(CMakePackage): license("MIT") - version("amd-mainline", branch="amd-mainline", submodules=True) - version("amd-staging", branch="amd-staging", submodules=True) + version("amd-mainline", branch="amd-mainline", submodules=True, deprecated=True) + version("amd-staging", branch="amd-staging", submodules=True, deprecated=True) version( "rocm-6.3.0", git="https://github.com/ROCm/rocprofiler-systems", diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index 364449bbf1a..e10bf6efc1a 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -20,8 +20,8 @@ class Rocblas(CMakePackage): license("MIT") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="73e91bd50c920b818742fa5bf9990c0676be5bfbafe321d5781607dc2ce27060") version("6.3.2", sha256="455cad760d926c21101594197c4456f617e5873a8f17bb3e14bd762018545a9e") version("6.3.1", sha256="88d2de6ce6b23a157eea8be63408350848935e4dfc3e27e5f2add78834c6d6ba") diff --git a/var/spack/repos/builtin/packages/rocfft/package.py b/var/spack/repos/builtin/packages/rocfft/package.py index 5b5a5efea3e..fa9a1c383ad 100644 --- a/var/spack/repos/builtin/packages/rocfft/package.py +++ b/var/spack/repos/builtin/packages/rocfft/package.py @@ -19,7 +19,7 @@ class Rocfft(CMakePackage): libraries = ["librocfft"] license("MIT") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="b2edb5c39215b98e0abc485d2b277a0b8c6f87f06e9b0770a60f5568ef52e62e") version("6.3.2", sha256="0511d04d2367dcac6b35bc6b449337ba37bb623b8382fb11178fc608b5435437") version("6.3.1", sha256="f8aa0e68d8e303725d0be8ae1d7c0113b6ca019a3b9f08572abf8a02db690662") diff --git a/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py b/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py index 328cda61df8..d560685d627 100644 --- a/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py +++ b/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py @@ -16,7 +16,7 @@ class RocmBandwidthTest(CMakePackage): maintainers("srekolam", "renjithravindrankannath", "afzpatel") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="d33f656eb6ba7db78b41c4bcf6d830b511dc97c6d645760e6d05edd07fcaefba") version("6.3.2", sha256="3754831244d7c4f6314fc25b3e929adf9abe44c9cb60621dd8ae5d1aa930ae55") version("6.3.1", sha256="98002e4104929a62a308114ed82fba530880359a17f90ebd62a2ca49c2baac78") diff --git a/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py b/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py index 5e41a98168a..954138b5347 100644 --- a/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py +++ b/var/spack/repos/builtin/packages/rocm-clang-ocl/package.py @@ -18,7 +18,7 @@ class RocmClangOcl(CMakePackage): license("MIT") maintainers("srekolam", "renjithravindrankannath") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.1.2", sha256="cc9942539b5e50b97fa0d2425ba93aae7223635fecba869d8f43b2c26f9482ae") version("6.1.1", sha256="21b8a6d521a8e584e18851d27b5ef328a63ea7ee9eb3cc52508b9bfcf975e119") version("6.1.0", sha256="c983adad49ab5850307db1282f8bc957b9870d4ce37db8fbb43c52db6c90d0ed") diff --git a/var/spack/repos/builtin/packages/rocm-cmake/package.py b/var/spack/repos/builtin/packages/rocm-cmake/package.py index c4dfd6947ff..1eba292de90 100644 --- a/var/spack/repos/builtin/packages/rocm-cmake/package.py +++ b/var/spack/repos/builtin/packages/rocm-cmake/package.py @@ -19,7 +19,7 @@ class RocmCmake(CMakePackage): license("MIT") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="4238cccc22226ba9487185fc2faa66b11c0cb8e7982240332e1b919cec8d909e") version("6.3.2", sha256="f5104c2289da99a70d8c4c1befbca4f8efa7c89711eaac7b6b63592cd4bd99a8") version("6.3.1", sha256="6994a5bdeea55cd41ec01ab4142785ea02bbdcb83e70f6911095c7cea766ebe8") diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py index f575654328e..4a8d53f27c5 100644 --- a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py @@ -23,7 +23,7 @@ class RocmDbgapi(CMakePackage): license("MIT") - version("master", branch="amd-master") + version("master", branch="amd-master", deprecated=True) version("6.3.3", sha256="25c8e9f4a22f23004f2fc1998c284095b193591eb6143b47380455754948ab98") version("6.3.2", sha256="0e7cea6ae2eb737ad378787d2ef5f6cbaf9dfb483bb5e61e716601a145677adf") version("6.3.1", sha256="1843423c91a22cf83bef5f14cb50f55ba333047e03e75296b9f9522facde5822") diff --git a/var/spack/repos/builtin/packages/rocm-device-libs/package.py b/var/spack/repos/builtin/packages/rocm-device-libs/package.py index 4705d09ae22..2dc1eb7827e 100644 --- a/var/spack/repos/builtin/packages/rocm-device-libs/package.py +++ b/var/spack/repos/builtin/packages/rocm-device-libs/package.py @@ -23,7 +23,7 @@ def url_for_version(self, version): maintainers("srekolam", "renjithravindrankannath", "haampie", "afzpatel") - version("master", branch="amd-stg-open") + version("master", branch="amd-stg-open", deprecated=True) version("6.3.3", sha256="4df9aba24e574edf23844c0d2d9dda112811db5c2b08c9428604a21b819eb23d") version("6.3.2", sha256="1f52e45660ea508d3fe717a9903fe27020cee96de95a3541434838e0193a4827") version("6.3.1", sha256="e9c2481cccacdea72c1f8d3970956c447cec47e18dfb9712cbbba76a2820552c") diff --git a/var/spack/repos/builtin/packages/rocm-opencl/package.py b/var/spack/repos/builtin/packages/rocm-opencl/package.py index 27fcbea6de7..a4d7ed3969b 100644 --- a/var/spack/repos/builtin/packages/rocm-opencl/package.py +++ b/var/spack/repos/builtin/packages/rocm-opencl/package.py @@ -34,9 +34,9 @@ def url_for_version(self, version): license("MIT") - version("master", branch="main") - version("6.3.3", sha256="8e5adca8f8c2d99d4a4e49605dd6b56b7881b762ee8ce15b4a7000e3cd982fec"), - version("6.3.2", sha256="ec13dc4ffe212beee22171cb2825d2b16cdce103c835adddb482b9238cf4f050"), + version("master", branch="main", deprecated=True) + version("6.3.3", sha256="8e5adca8f8c2d99d4a4e49605dd6b56b7881b762ee8ce15b4a7000e3cd982fec") + version("6.3.2", sha256="ec13dc4ffe212beee22171cb2825d2b16cdce103c835adddb482b9238cf4f050") version("6.3.1", sha256="bfb8a4a59e7bd958e2cd4bf6f14c6cdea601d9827ebf6dc7af053a90e963770f") version("6.3.0", sha256="829e61a5c54d0c8325d02b0191c0c8254b5740e63b8bfdb05eec9e03d48f7d2c") version("6.2.4", sha256="0a3164af7f997a4111ade634152957378861b95ee72d7060eb01c86c87208c54") diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py index 70a478898aa..34ea16b56ae 100644 --- a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py @@ -22,7 +22,7 @@ class RocmSmiLib(CMakePackage): maintainers("srekolam", "renjithravindrankannath") libraries = ["librocm_smi64"] - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="679dfd0cbd213d27660e546584ab013afea286eff95928d748d168503305c9c4") version("6.3.2", sha256="29a9190143dfcbafeac93d8064b00c9320dbca57a3344adb009ec17d9b09d036") version("6.3.1", sha256="0f45e4823e361a1c6ac560eabf6000c3b59e08bcd96e87150149149e861c6a63") diff --git a/var/spack/repos/builtin/packages/rocminfo/package.py b/var/spack/repos/builtin/packages/rocminfo/package.py index 0893f916f99..e773fc7fa70 100644 --- a/var/spack/repos/builtin/packages/rocminfo/package.py +++ b/var/spack/repos/builtin/packages/rocminfo/package.py @@ -16,7 +16,7 @@ class Rocminfo(CMakePackage): maintainers("srekolam", "renjithravindrankannath", "haampie") - version("master", branch="master") + version("master", branch="master", deprecated=True) version("6.3.3", sha256="08390b2babe6dc832887098c5d3a5253d655430a18751f3446a56c7422b26dd2") version("6.3.2", sha256="a98a32bae0e118397b5559b4a584c9363191bb2d1f45fe13b09f502016745e8f") version("6.3.1", sha256="30cf7ed537c066e325a8731d0fbe62be2f0f66c8700a06f334e787e9f0f87437") diff --git a/var/spack/repos/builtin/packages/rocprofiler-systems/package.py b/var/spack/repos/builtin/packages/rocprofiler-systems/package.py index 39d9479478e..4922f030904 100644 --- a/var/spack/repos/builtin/packages/rocprofiler-systems/package.py +++ b/var/spack/repos/builtin/packages/rocprofiler-systems/package.py @@ -16,8 +16,8 @@ class RocprofilerSystems(CMakePackage): license("MIT") - version("amd-mainline", branch="amd-mainline", submodules=True) - version("amd-staging", branch="amd-staging", submodules=True) + version("amd-mainline", branch="amd-mainline", submodules=True, deprecated=True) + version("amd-staging", branch="amd-staging", submodules=True, deprecated=True) version( "6.3.3", git="https://github.com/ROCm/rocprofiler-systems", diff --git a/var/spack/repos/builtin/packages/rocrand/package.py b/var/spack/repos/builtin/packages/rocrand/package.py index a8f6dd69e75..e7b16b598fc 100644 --- a/var/spack/repos/builtin/packages/rocrand/package.py +++ b/var/spack/repos/builtin/packages/rocrand/package.py @@ -22,8 +22,8 @@ class Rocrand(CMakePackage): license("MIT") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="d55be9d367af28d87d983d649329b7ef04641e74d39064b98aeee4b9980af4eb") version("6.3.2", sha256="57f364806369ddb80761ce44187920075cf446de527dd1fbc6adbb4b4b3e9bb8") version("6.3.1", sha256="80d86c31ec9cb40f5c5532281b42cf99fbc8a81e3ffd3bc8b3bbe4a7e509bf5f") diff --git a/var/spack/repos/builtin/packages/rocsolver/package.py b/var/spack/repos/builtin/packages/rocsolver/package.py index ff4ee0d9aff..78cb3ad7da2 100644 --- a/var/spack/repos/builtin/packages/rocsolver/package.py +++ b/var/spack/repos/builtin/packages/rocsolver/package.py @@ -43,8 +43,8 @@ class Rocsolver(CMakePackage): license("BSD-2-Clause") - version("develop", branch="develop") - version("master", branch="master") + version("develop", branch="develop", deprecated=True) + version("master", branch="master", deprecated=True) version("6.3.3", sha256="0e8bb906513555d349b6a20cb17976402f5ea6702668efcdda595a2e2d516b46") version("6.3.2", sha256="834f532c54bdf0e4900e73ffb0544068071976175559c8bf3c50d7a3b7230a3a") version("6.3.1", sha256="ffa70c4dedeb20a33cf79d4ae3e95ade2ae5202f819459b19a0ebf62c380bba0") From 8885f6b861ea8721711ad7d9030593968a62e959 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Thu, 10 Apr 2025 13:06:22 +0200 Subject: [PATCH 095/317] defaults/config.yaml: timeout at 30s by default (#50002) Fetching generated tarballs from github.com sometimes takes pauses for more than 10 seconds, when the server is slow to put together the next bits of the tarball. Default to 30s to avoid that issue. --- etc/spack/defaults/config.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index 9cca52fd353..7d6f444b7e3 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -90,10 +90,9 @@ config: misc_cache: $user_cache_path/cache - # Timeout in seconds used for downloading sources etc. This only applies - # to the connection phase and can be increased for slow connections or - # servers. 0 means no timeout. - connect_timeout: 10 + # Abort downloads after this many seconds if not data is received. + # Setting this to 0 will disable the timeout. + connect_timeout: 30 # If this is false, tools like curl that use SSL will not verify From 9347769d4b478ea127786c53cb4d0b4b60f1efef Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Thu, 10 Apr 2025 17:00:29 +0100 Subject: [PATCH 096/317] yosys: add v0.52 (#49998) --- 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 5de1d4749dc..d11f10c9a2f 100644 --- a/var/spack/repos/builtin/packages/yosys/package.py +++ b/var/spack/repos/builtin/packages/yosys/package.py @@ -28,6 +28,7 @@ class Yosys(MakefilePackage): version("master", branch="master") + version("0.52", commit="fee39a3284c90249e1d9684cf6944ffbbcbb8f90", submodules=True) version("0.51", commit="c4b5190229616f7ebf8197f43990b4429de3e420", submodules=True) version("0.50", commit="b5170e1394f602c607e75bdbb1a2b637118f2086", submodules=True) version("0.49", commit="427b5a251bfb511528a177bfa92567b4b3ada3dd", submodules=True) From 95de0c021bf4f9155fa4ebc4c05073cd7d320cef Mon Sep 17 00:00:00 2001 From: Kyle Shores Date: Thu, 10 Apr 2025 12:00:40 -0500 Subject: [PATCH 097/317] New package: musica (#49988) * adding the musica package with git and version sha256 --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --- .../repos/builtin/packages/musica/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/musica/package.py diff --git a/var/spack/repos/builtin/packages/musica/package.py b/var/spack/repos/builtin/packages/musica/package.py new file mode 100644 index 00000000000..94de144f787 --- /dev/null +++ b/var/spack/repos/builtin/packages/musica/package.py @@ -0,0 +1,54 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Musica(CMakePackage): + """MUSICA - The multi-scale interface for chemistry and aerosols + + MUSICA is a software package which exposes a flexible + API for including aerosol and gas-phase chemistry in + many contexts across languages and platforms. It is designed to + be used in conjunction with other software packages, such as + climate models, to provide a comprehensive framework for + simulating atmospheric chemistry processes. + """ + + homepage = "https://github.com/NCAR/musica" + url = "https://github.com/NCAR/musica/archive/refs/tags/v0.10.1.tar.gz" + git = "https://github.com/NCAR/musica.git" + + maintainers("kshores", "mattldawson", "boulderdaze") + + license("Apache-2.0", checked_by="kshores") + + # Versions + version("0.10.1", sha256="edefab03a676a449761997734e6c5b654b2c4f92ce8f1cc66ef63b8ae8ccccf1") + + # Options from CMake + variant("mpi", default=False, description="Enable MPI support") + variant("openmp", default=False, description="Enable OpenMP support") + variant("tests", default=True, description="Enable tests") + variant("fortran", default=False, description="Build Fortran interface") + variant("micm", default=True, description="Enable MICM support") + variant("tuvx", default=True, description="Enable TUV-x support") + + # Dependencies + depends_on("cmake@3.21:", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("mpi", when="+mpi") + + def cmake_args(self): + args = [ + self.define_from_variant("MUSICA_ENABLE_MPI", "mpi"), + self.define_from_variant("MUSICA_ENABLE_OPENMP", "openmp"), + self.define_from_variant("MUSICA_ENABLE_TESTS", "tests"), + self.define_from_variant("MUSICA_BUILD_FORTRAN_INTERFACE", "fortran"), + self.define_from_variant("MUSICA_ENABLE_MICM", "micm"), + self.define_from_variant("MUSICA_ENABLE_TUVX", "tuvx"), + self.define("MUSICA_ENABLE_INSTALL", True), + ] + return args From 3da44cff0bb1bce839bd56e560a9d0d35d12b727 Mon Sep 17 00:00:00 2001 From: Scott Wittenburg Date: Thu, 10 Apr 2025 12:27:36 -0600 Subject: [PATCH 098/317] ci: Use explicit version of notary image (#50010) --- share/spack/gitlab/cloud_pipelines/configs/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/spack/gitlab/cloud_pipelines/configs/ci.yaml b/share/spack/gitlab/cloud_pipelines/configs/ci.yaml index e67ffdcda89..e3679f87493 100644 --- a/share/spack/gitlab/cloud_pipelines/configs/ci.yaml +++ b/share/spack/gitlab/cloud_pipelines/configs/ci.yaml @@ -42,7 +42,7 @@ ci: aud: "${OIDC_TOKEN_AUDIENCE}" - signing-job: - image: { "name": "ghcr.io/spack/notary:latest", "entrypoint": [""] } + image: { "name": "ghcr.io/spack/notary:0.0.1", "entrypoint": [""] } tags: ["aws"] script: - - aws s3 sync --exclude "*" --include "*spec.json*" ${SPACK_BUILDCACHE_DESTINATION}/build_cache /tmp From aa05af81d0a8ebbb45a5ebcbffc03cde94320f63 Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Thu, 10 Apr 2025 12:26:05 -0700 Subject: [PATCH 099/317] sundials: add v7.3.0 (#49972) --- 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 6d3885d4ccf..1a638bee146 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -25,6 +25,7 @@ class Sundials(CMakePackage, CudaPackage, ROCmPackage): # Versions # ========================================================================== version("develop", branch="develop") + version("7.3.0", tag="v7.3.0", commit="e941546af1a5b5e492dcac0a1872540e9961c556") version("7.2.1", tag="v7.2.1", commit="5c53be85c88f63c5201c130b8cb2c686615cfb03") version("7.2.0", tag="v7.2.0", commit="0eff39663606f2ff280c4059a947ed62ae38180a") version("7.1.1", tag="v7.1.1", commit="c28eaa3764a03705d61decb6025b409360e9d53f") From b4b35f9efd77a3e6701e14d0c2dd7ebc1f5a2049 Mon Sep 17 00:00:00 2001 From: Thomas Madlener Date: Fri, 11 Apr 2025 02:24:08 +0200 Subject: [PATCH 100/317] Make podio depend on fmt for newer versions (#49986) --- var/spack/repos/builtin/packages/podio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py index 8dc4d07ab03..a3dff4db87e 100644 --- a/var/spack/repos/builtin/packages/podio/package.py +++ b/var/spack/repos/builtin/packages/podio/package.py @@ -111,6 +111,7 @@ class Podio(CMakePackage): depends_on("py-pyyaml", type=("build", "run")) depends_on("py-jinja2@2.10.1:", type=("build", "run")) depends_on("sio", type=("build", "link"), when="+sio") + depends_on("fmt@9:", type=("build", "link"), when="@1.3:") depends_on("catch2@3.0.1:", type=("test"), when="@:0.16.5") depends_on("catch2@3.1:", type=("test"), when="@0.16.6:") depends_on("catch2@3.4:", type=("test"), when="@0.17.1: cxxstd=20") From e70d7d4eb796125804b19e03e98b11454cede669 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Thu, 10 Apr 2025 23:52:36 -0600 Subject: [PATCH 101/317] py-dill: add v0.3.7, v0.3.8, v0.3.9 (#49944) --- var/spack/repos/builtin/packages/py-dill/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py index aab44c04104..a21389a9478 100644 --- a/var/spack/repos/builtin/packages/py-dill/package.py +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -13,6 +13,9 @@ class PyDill(PythonPackage): license("BSD-3-Clause") + version("0.3.9", sha256="81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c") + version("0.3.8", sha256="3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca") + version("0.3.7", sha256="cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03") version("0.3.6", sha256="e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373") version("0.3.5.1", sha256="d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86") version("0.3.4", sha256="9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675") @@ -28,6 +31,8 @@ class PyDill(PythonPackage): version("0.2.1", sha256="a54401bdfae419cfe1c9e0b48e9b290afccaa413d2319d9bb0fdb85c130a7923") version("0.2", sha256="aba8d4c81c4136310e6ce333bd6f4f3ea2d53bd367e2f69c864428f260c0308c") + depends_on("python@3.7:", when="@0.3.6:", type=("build", "run")) + depends_on("python@3.8:", when="@0.3.8:", type=("build", "run")) depends_on("py-setuptools@42:", when="@0.3.5.1:", type="build") depends_on("py-setuptools@0.6:", type="build") @@ -37,7 +42,7 @@ class PyDill(PythonPackage): # [this issue]: https://github.com/uqfoundation/dill/issues/566 # [fixing PR]: https://github.com/uqfoundation/dill/pull/567 # [this commit]: https://github.com/uqfoundation/dill/commit/23c47455da62d4cb8582d8f98f1de9fc6e0971ad - patch("fix-is-builtin-module.patch", when="@0.3.5:") + patch("fix-is-builtin-module.patch", when="@0.3.5:0.3.6") def url_for_version(self, version): url = "https://pypi.io/packages/source/d/dill/" From fd31f7e01453a0c6a76fc41bfd75ef303e662c45 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 11 Apr 2025 15:52:11 +0200 Subject: [PATCH 102/317] spec.py: remove exceptions of old concretizer (#50018) --- lib/spack/spack/spec.py | 86 ----------------------------------------- 1 file changed, 86 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 2581ea053a4..d67e1517630 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -111,22 +111,14 @@ __all__ = [ "CompilerSpec", "Spec", - "SpecParseError", "UnsupportedPropagationError", "DuplicateDependencyError", - "DuplicateCompilerSpecError", "UnsupportedCompilerError", "DuplicateArchitectureError", - "InconsistentSpecError", "InvalidDependencyError", - "NoProviderError", - "MultipleProviderError", "UnsatisfiableSpecNameError", "UnsatisfiableVersionSpecError", - "UnsatisfiableCompilerSpecError", - "UnsatisfiableCompilerFlagSpecError", "UnsatisfiableArchitectureSpecError", - "UnsatisfiableProviderSpecError", "UnsatisfiableDependencySpecError", "AmbiguousHashError", "InvalidHashError", @@ -5162,25 +5154,6 @@ def eval_conditional(string): return eval(string, valid_variables) -class SpecParseError(spack.error.SpecError): - """Wrapper for ParseError for when we're parsing specs.""" - - def __init__(self, parse_error): - super().__init__(parse_error.message) - self.string = parse_error.string - self.pos = parse_error.pos - - @property - def long_message(self): - return "\n".join( - [ - " Encountered when parsing spec:", - " %s" % self.string, - " %s^" % (" " * self.pos), - ] - ) - - class InvalidVariantForSpecError(spack.error.SpecError): """Raised when an invalid conditional variant is specified.""" @@ -5198,14 +5171,6 @@ class DuplicateDependencyError(spack.error.SpecError): """Raised when the same dependency occurs in a spec twice.""" -class MultipleVersionError(spack.error.SpecError): - """Raised when version constraints occur in a spec twice.""" - - -class DuplicateCompilerSpecError(spack.error.SpecError): - """Raised when the same compiler occurs in a spec twice.""" - - class UnsupportedCompilerError(spack.error.SpecError): """Raised when the user asks for a compiler spack doesn't know about.""" @@ -5214,11 +5179,6 @@ class DuplicateArchitectureError(spack.error.SpecError): """Raised when the same architecture occurs in a spec twice.""" -class InconsistentSpecError(spack.error.SpecError): - """Raised when two nodes in the same spec DAG have inconsistent - constraints.""" - - class InvalidDependencyError(spack.error.SpecError): """Raised when a dependency in a spec is not actually a dependency of the package.""" @@ -5230,30 +5190,6 @@ def __init__(self, pkg, deps): ) -class NoProviderError(spack.error.SpecError): - """Raised when there is no package that provides a particular - virtual dependency. - """ - - def __init__(self, vpkg): - super().__init__("No providers found for virtual package: '%s'" % vpkg) - self.vpkg = vpkg - - -class MultipleProviderError(spack.error.SpecError): - """Raised when there is no package that provides a particular - virtual dependency. - """ - - def __init__(self, vpkg, providers): - """Takes the name of the vpkg""" - super().__init__( - "Multiple providers found for '%s': %s" % (vpkg, [str(s) for s in providers]) - ) - self.vpkg = vpkg - self.providers = providers - - class UnsatisfiableSpecNameError(spack.error.UnsatisfiableSpecError): """Raised when two specs aren't even for the same package.""" @@ -5268,20 +5204,6 @@ def __init__(self, provided, required): super().__init__(provided, required, "version") -class UnsatisfiableCompilerSpecError(spack.error.UnsatisfiableSpecError): - """Raised when a spec compiler conflicts with package constraints.""" - - def __init__(self, provided, required): - super().__init__(provided, required, "compiler") - - -class UnsatisfiableCompilerFlagSpecError(spack.error.UnsatisfiableSpecError): - """Raised when a spec variant conflicts with package constraints.""" - - def __init__(self, provided, required): - super().__init__(provided, required, "compiler_flags") - - class UnsatisfiableArchitectureSpecError(spack.error.UnsatisfiableSpecError): """Raised when a spec architecture conflicts with package constraints.""" @@ -5289,14 +5211,6 @@ def __init__(self, provided, required): super().__init__(provided, required, "architecture") -class UnsatisfiableProviderSpecError(spack.error.UnsatisfiableSpecError): - """Raised when a provider is supplied but constraints don't match - a vpkg requirement""" - - def __init__(self, provided, required): - super().__init__(provided, required, "provider") - - # TODO: get rid of this and be more specific about particular incompatible # dep constraints class UnsatisfiableDependencySpecError(spack.error.UnsatisfiableSpecError): From fd1b982073d1183eb2b57afe264a9368850a438f Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 11 Apr 2025 19:01:27 +0200 Subject: [PATCH 103/317] solver: dump output specs to file if not satisfied (#50019) When the solver produces specs that do not satisfy the input constraints, dump both input and output specs as json in an temporary dir and ask the user to upload these files in a bug report. --- lib/spack/spack/main.py | 46 +++++++++++++++++++ lib/spack/spack/solver/asp.py | 31 +++++++------ lib/spack/spack/test/concretization/core.py | 5 +- lib/spack/spack/test/concretization/errors.py | 32 +++++++++++++ 4 files changed, 97 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index ec98b86e246..458ef7d2671 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -20,6 +20,7 @@ import signal import subprocess as sp import sys +import tempfile import traceback import warnings from typing import List, Tuple @@ -41,6 +42,7 @@ import spack.paths import spack.platforms import spack.repo +import spack.solver.asp import spack.spec import spack.store import spack.util.debug @@ -1046,6 +1048,10 @@ def main(argv=None): try: return _main(argv) + except spack.solver.asp.OutputDoesNotSatisfyInputError as e: + _handle_solver_bug(e) + return 1 + except spack.error.SpackError as e: tty.debug(e) e.die() # gracefully die on any SpackErrors @@ -1069,5 +1075,45 @@ def main(argv=None): return 3 +def _handle_solver_bug( + e: spack.solver.asp.OutputDoesNotSatisfyInputError, out=sys.stderr, root=None +) -> None: + # when the solver outputs specs that do not satisfy the input and spack is used as a command + # line tool, we dump the incorrect output specs to json so users can upload them in bug reports + wrong_output = [(input, output) for input, output in e.input_to_output if output is not None] + no_output = [input for input, output in e.input_to_output if output is None] + if no_output: + tty.error( + "internal solver error: the following specs were not solved:\n - " + + "\n - ".join(str(s) for s in no_output), + stream=out, + ) + if wrong_output: + msg = ( + "internal solver error: the following specs were concretized, but do not satisfy the " + "input:\n - " + + "\n - ".join(str(s) for s, _ in wrong_output) + + "\n Please report a bug at https://github.com/spack/spack/issues" + ) + # try to write the input/output specs to a temporary directory for bug reports + try: + tmpdir = tempfile.mkdtemp(prefix="spack-asp-", dir=root) + files = [] + for i, (input, output) in enumerate(wrong_output, start=1): + in_file = os.path.join(tmpdir, f"input-{i}.json") + out_file = os.path.join(tmpdir, f"output-{i}.json") + files.append(in_file) + files.append(out_file) + with open(in_file, "w", encoding="utf-8") as f: + input.to_json(f) + with open(out_file, "w", encoding="utf-8") as f: + output.to_json(f) + + msg += " and attach the following files:\n - " + "\n - ".join(files) + except Exception: + msg += "." + tty.error(msg, stream=out) + + class SpackCommandError(Exception): """Raised when SpackCommand execution fails.""" diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index b602b431a17..971b8a977c4 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -1287,12 +1287,8 @@ def on_model(model): result.raise_if_unsat() if result.satisfiable and result.unsolved_specs and setup.concretize_everything: - unsolved_str = Result.format_unsolved(result.unsolved_specs) - raise InternalConcretizerError( - "Internal Spack error: the solver completed but produced specs" - " that do not satisfy the request. Please report a bug at " - f"https://github.com/spack/spack/issues\n\t{unsolved_str}" - ) + raise OutputDoesNotSatisfyInputError(result.unsolved_specs) + if conc_cache_enabled: CONC_CACHE.store(problem_repr, result, self.control.statistics, test=setup.tests) concretization_stats = self.control.statistics @@ -4651,13 +4647,9 @@ def solve_in_rounds( break if not result.specs: - # This is also a problem: no specs were solved for, which - # means we would be in a loop if we tried again - unsolved_str = Result.format_unsolved(result.unsolved_specs) - raise InternalConcretizerError( - "Internal Spack error: a subset of input specs could not" - f" be solved for.\n\t{unsolved_str}" - ) + # This is also a problem: no specs were solved for, which means we would be in a + # loop if we tried again + raise OutputDoesNotSatisfyInputError(result.unsolved_specs) input_specs = list(x for (x, y) in result.unsolved_specs) for spec in result.specs: @@ -4687,6 +4679,19 @@ def __init__(self, msg): self.constraint_type = None +class OutputDoesNotSatisfyInputError(InternalConcretizerError): + + def __init__( + self, input_to_output: List[Tuple[spack.spec.Spec, Optional[spack.spec.Spec]]] + ) -> None: + self.input_to_output = input_to_output + super().__init__( + "internal solver error: the solver completed but produced specs" + " that do not satisfy the request. Please report a bug at " + f"https://github.com/spack/spack/issues\n\t{Result.format_unsolved(input_to_output)}" + ) + + class SolverError(InternalConcretizerError): """For cases where the solver is unable to produce a solution. diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index 0e6458725db..b6c8453da4a 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -1831,10 +1831,7 @@ def test_solve_in_rounds_all_unsolved(self, monkeypatch, mock_packages): monkeypatch.setattr(spack.solver.asp.Result, "unsolved_specs", simulate_unsolved_property) monkeypatch.setattr(spack.solver.asp.Result, "specs", list()) - with pytest.raises( - spack.solver.asp.InternalConcretizerError, - match="a subset of input specs could not be solved for", - ): + with pytest.raises(spack.solver.asp.OutputDoesNotSatisfyInputError): list(solver.solve_in_rounds(specs)) def test_coconcretize_reuse_and_virtuals(self): diff --git a/lib/spack/spack/test/concretization/errors.py b/lib/spack/spack/test/concretization/errors.py index 6060d588cb5..779a84419ff 100644 --- a/lib/spack/spack/test/concretization/errors.py +++ b/lib/spack/spack/test/concretization/errors.py @@ -2,11 +2,15 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from io import StringIO + import pytest import spack.concretize import spack.config +import spack.main import spack.solver.asp +import spack.spec version_error_messages = [ "Cannot satisfy", @@ -60,3 +64,31 @@ def test_error_messages(error_messages, config_set, spec, mock_packages, mutable for em in error_messages: assert em in str(e.value) + + +def test_internal_error_handling_formatting(tmp_path): + log = StringIO() + input_to_output = [ + (spack.spec.Spec("foo+x"), spack.spec.Spec("foo@=1.0~x")), + (spack.spec.Spec("bar+y"), spack.spec.Spec("x@=1.0~y")), + (spack.spec.Spec("baz+z"), None), + ] + spack.main._handle_solver_bug( + spack.solver.asp.OutputDoesNotSatisfyInputError(input_to_output), root=tmp_path, out=log + ) + + output = log.getvalue() + assert "the following specs were not solved:\n - baz+z\n" in output + assert ( + "the following specs were concretized, but do not satisfy the input:\n" + " - foo+x\n" + " - bar+y\n" + ) in output + + files = {f.name: str(f) for f in tmp_path.glob("spack-asp-*/*.json")} + assert {"input-1.json", "input-2.json", "output-1.json", "output-2.json"} == set(files.keys()) + + assert spack.spec.Spec.from_specfile(files["input-1.json"]) == spack.spec.Spec("foo+x") + assert spack.spec.Spec.from_specfile(files["input-2.json"]) == spack.spec.Spec("bar+y") + assert spack.spec.Spec.from_specfile(files["output-1.json"]) == spack.spec.Spec("foo@=1.0~x") + assert spack.spec.Spec.from_specfile(files["output-2.json"]) == spack.spec.Spec("x@=1.0~y") From 246ac7ced94f850c91830f2566bdff14374c83aa Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Fri, 11 Apr 2025 13:20:04 -0400 Subject: [PATCH 104/317] root: remove unnecessary patches (#50022) * root: 6.34 included this patch * ROOT: no need to patch unless +root7 +geom +webgui --- var/spack/repos/builtin/packages/root/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 61078203c14..30e58c4e847 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -179,7 +179,7 @@ class Root(CMakePackage): patch( "https://github.com/root-project/root/pull/15925.diff?full_index=1", sha256="1937290a4d54cd2e3e8a8d23d93b8dedaca9ed8dcfdcfa2f0d16629ff53fb3b7", - when="@6.28: +python", + when="@6.28:6.32 +python", ) # ###################### Variants ########################## @@ -505,6 +505,7 @@ class Root(CMakePackage): # See https://github.com/root-project/root/issues/11135 conflicts("+ipo", msg="LTO is not a supported configuration for building ROOT") + @when("+root7 +geom +webgui") def patch(self): filter_file( r"#include ", From 8a8d88aab98af08da21208f0a84e1131535379d8 Mon Sep 17 00:00:00 2001 From: Pranav Sivaraman Date: Fri, 11 Apr 2025 13:43:04 -0400 Subject: [PATCH 105/317] libcxi: add dependencies for autoreconf phase (#50025) --- var/spack/repos/builtin/packages/libcxi/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/libcxi/package.py b/var/spack/repos/builtin/packages/libcxi/package.py index a663751c977..0ec4ea93e5c 100644 --- a/var/spack/repos/builtin/packages/libcxi/package.py +++ b/var/spack/repos/builtin/packages/libcxi/package.py @@ -23,6 +23,12 @@ class Libcxi(AutotoolsPackage): depends_on("c", type="build") + with default_args(type="build", when="@main"): + depends_on("autoconf") + depends_on("automake") + depends_on("libtool") + depends_on("pkgconfig") + depends_on("cassini-headers") depends_on("cxi-driver") From 8fc1ccc686cdcdda71aab2d94abcfab3d99a2a89 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 11 Apr 2025 20:09:21 +0200 Subject: [PATCH 106/317] solver: encode `%` as "build requirement", not as "dependency" (#50011) This PR fixes the issues with `%` and reused specs, due to https://github.com/spack/spack/issues/49847#issuecomment-2774640234 It does so by adding another layer of indirection, so that whenever a spec `foo %bar` is encountered, the `%bar` part is encoded as an `attr("build_requirement", ...)`. Then: 1. If `foo` is a node to be built, then the build requirement implies a dependency 2. Otherwise it implies looking e.g. reused specs metadata, and ensure it matches --------- Signed-off-by: Massimiliano Culpo --- lib/spack/spack/solver/asp.py | 59 +++++++++++++---- lib/spack/spack/solver/concretize.lp | 51 +++++++++++++-- lib/spack/spack/test/concretization/core.py | 33 ++++++++++ .../spack/test/concretization/requirements.py | 65 +++++++++++++++++++ 4 files changed, 191 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 971b8a977c4..0c03e0b47e3 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -287,9 +287,33 @@ def specify(spec): return spack.spec.Spec(spec) -def remove_node(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: - """Transformation that removes all "node" and "virtual_node" from the input list of facts.""" - return list(filter(lambda x: x.args[0] not in ("node", "virtual_node"), facts)) +def remove_facts( + *to_be_removed: str, +) -> Callable[[spack.spec.Spec, List[AspFunction]], List[AspFunction]]: + """Returns a transformation function that removes facts from the input list of facts.""" + + def _remove(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: + return list(filter(lambda x: x.args[0] not in to_be_removed, facts)) + + return _remove + + +def remove_build_deps(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: + build_deps = {x.args[2]: x.args[1] for x in facts if x.args[0] == "depends_on"} + result = [] + for x in facts: + current_name = x.args[1] + if current_name in build_deps: + x.name = "build_requirement" + result.append(fn.attr("build_requirement", build_deps[current_name], x)) + continue + + if x.args[0] == "depends_on": + continue + + result.append(x) + + return result def all_libcs() -> Set[spack.spec.Spec]: @@ -1880,7 +1904,7 @@ def condition( if not context: context = ConditionContext() - context.transform_imposed = remove_node + context.transform_imposed = remove_facts("node", "virtual_node") if imposed_spec: imposed_name = imposed_spec.name or imposed_name @@ -1980,7 +2004,7 @@ def track_dependencies(input_spec, requirements): return requirements + [fn.attr("track_dependencies", input_spec.name)] def dependency_holds(input_spec, requirements): - result = remove_node(input_spec, requirements) + [ + result = remove_facts("node", "virtual_node")(input_spec, requirements) + [ fn.attr( "dependency_holds", pkg.name, input_spec.name, dt.flag_to_string(t) ) @@ -2170,7 +2194,10 @@ def emit_facts_from_requirement_rules(self, rules: List[RequirementRule]): pkg_name, ConstraintOrigin.REQUIRE ) if not virtual: - context.transform_imposed = remove_node + context.transform_required = remove_build_deps + context.transform_imposed = remove_facts( + "node", "virtual_node", "depends_on" + ) # else: for virtuals we want to emit "node" and # "virtual_node" in imposed specs @@ -2232,16 +2259,18 @@ def external_packages(self): if pkg_name not in self.pkgs: continue - self.gen.h2(f"External package: {pkg_name}") # Check if the external package is buildable. If it is # not then "external()" is a fact, unless we can # reuse an already installed spec. external_buildable = data.get("buildable", True) + externals = data.get("externals", []) + if not external_buildable or externals: + self.gen.h2(f"External package: {pkg_name}") + if not external_buildable: self.gen.fact(fn.buildable_false(pkg_name)) # Read a list of all the specs for this package - externals = data.get("externals", []) candidate_specs = [ spack.spec.parse_with_version_concrete(x["spec"]) for x in externals ] @@ -2572,6 +2601,16 @@ def _spec_clauses( # already-installed concrete specs. if concrete_build_deps or dspec.depflag != dt.BUILD: clauses.append(fn.attr("hash", dep.name, dep.dag_hash())) + elif not concrete_build_deps and dspec.depflag: + clauses.append( + fn.attr( + "concrete_build_dependency", spec.name, dep.name, dep.dag_hash() + ) + ) + for virtual_name in dspec.virtuals: + clauses.append( + fn.attr("virtual_on_build_edge", spec.name, dep.name, virtual_name) + ) # if the spec is abstract, descend into dependencies. # if it's concrete, then the hashes above take care of dependency @@ -3265,15 +3304,13 @@ def literal_specs(self, specs): # These facts are needed to compute the "condition_set" of the root pkg_name = clause.args[1] self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) - elif clause_name == "depends_on": - pkg_name = clause.args[2] - self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) requirements.append( fn.attr( "virtual_root" if spack.repo.PATH.is_virtual(spec.name) else "root", spec.name ) ) + requirements = [x for x in requirements if x.args[0] != "depends_on"] cache[imposed_spec_key] = (effect_id, requirements) self.gen.fact(fn.pkg_fact(spec.name, fn.condition_effect(condition_id, effect_id))) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index de25bbf5dac..36064ee7b35 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -175,12 +175,21 @@ trigger_node(TriggerID, Node, Node) :- % Since we trigger the existence of literal nodes from a condition, we need to construct the condition_set/2 mentioned_in_literal(Root, Mentioned) :- mentioned_in_literal(TriggerID, Root, Mentioned), solve_literal(TriggerID). -condition_set(node(min_dupe_id, Root), node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). +literal_node(Root, node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). -1 { condition_set(node(min_dupe_id, Root), node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- +1 { literal_node(Root, node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- mentioned_in_literal(Root, Mentioned), Mentioned != Root, internal_error("must have exactly one condition_set for literals"). +1 { build_dependency_of_literal_node(LiteralNode, node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 :- + literal_node(Root, LiteralNode), + build(LiteralNode), + attr("build_requirement", LiteralNode, build_requirement("node", BuildDependency)). + +condition_set(node(min_dupe_id, Root), LiteralNode) :- literal_node(Root, LiteralNode). +condition_set(LiteralNode, BuildNode) :- build_dependency_of_literal_node(LiteralNode, BuildNode). + + % Discriminate between "roots" that have been explicitly requested, and roots that are deduced from "virtual roots" explicitly_requested_root(node(min_dupe_id, Package)) :- solve_literal(TriggerID), @@ -472,10 +481,35 @@ provider(ProviderNode, VirtualNode) :- attr("provider_set", ProviderNode, Virtua imposed_constraint(ID, "depends_on", A1, A2, A3), internal_error("Build deps must land in exactly one duplicate"). -1 { build_requirement(node(X, Parent), node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 +% If the parent is built, then we have a build_requirement on another node. For concrete nodes, +% or external nodes, we don't since we are trimming their build dependencies. +1 { attr("depends_on", node(X, Parent), node(0..Y-1, BuildDependency), "build") : max_dupes(BuildDependency, Y) } 1 :- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), - impose(ID, node(X, Parent)), - imposed_constraint(ID,"build_requirement",Parent,_). + build(node(X, Parent)), + not external(node(X, Parent)). + +:- attr("build_requirement", ParentNode, build_requirement("node", BuildDependency)), + concrete(ParentNode), + not attr("concrete_build_dependency", ParentNode, BuildDependency, _). + +:- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), + attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), + not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. + +:- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), + attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), + attr("virtual_on_build_edge", ParentNode, BuildDependency, Virtual), + not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. + +% Asking for gcc@10 %gcc@9 shouldn't give us back an external gcc@10, just because of the hack +% we have on externals +:- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), + Parent == BuildDependency, + external(node(X, Parent)). + +build_requirement(node(X, Parent), node(Y, BuildDependency)) :- + attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build"), + attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)). 1 { virtual_build_requirement(ParentNode, node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("dependency_holds", ParentNode, Virtual, "build"), @@ -496,7 +530,6 @@ attr("node_version_satisfies", node(X, BuildDependency), Constraint) :- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), build_requirement(ParentNode, node(X, BuildDependency)). -attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build") :- build_requirement(node(X, Parent), node(Y, BuildDependency)). 1 { attr("provider_set", node(X, BuildDependency), node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), @@ -882,6 +915,12 @@ requirement_weight(node(ID, Package), Group, W) :- requirement_policy(Package, Group, "one_of"), requirement_group_satisfied(node(ID, Package), Group). + { attr("build_requirement", node(ID, Package), BuildRequirement) : condition_requirement(TriggerID, "build_requirement", Package, BuildRequirement) } :- + pkg_fact(Package, condition_trigger(ConditionID, TriggerID)), + requirement_group_member(ConditionID, Package, Group), + activate_requirement(node(ID, Package), Group), + requirement_group(Package, Group). + requirement_group_satisfied(node(ID, Package), X) :- 1 { condition_holds(Y, node(ID, Package)) : requirement_group_member(Y, Package, X) } , requirement_policy(Package, X, "any_of"), diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index b6c8453da4a..b28c3337f11 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -3333,3 +3333,36 @@ def test_specifying_compilers_with_virtuals_syntax(default_mock_concretization): assert mpich["fortran"].satisfies("gcc") assert mpich["c"].satisfies("llvm") assert mpich["cxx"].satisfies("llvm") + + +@pytest.mark.regression("49847") +@pytest.mark.xfail(sys.platform == "win32", reason="issues with install mockery") +def test_reuse_when_input_specifies_build_dep(install_mockery, do_not_check_runtimes_on_reuse): + """Test that we can reuse a spec when specifying build dependencies in the input""" + pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9 %gcc@9")) + PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() + + with spack.config.override("concretizer:reuse", True): + result = spack.concretize.concretize_one("pkg-b %gcc") + assert pkgb_old.dag_hash() == result.dag_hash() + + result = spack.concretize.concretize_one("pkg-a ^pkg-b %gcc@9") + assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() + assert result.satisfies("%gcc@9") + + result = spack.concretize.concretize_one("pkg-a %gcc@10 ^pkg-b %gcc@9") + assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() + + +@pytest.mark.regression("49847") +def test_reuse_when_requiring_build_dep( + install_mockery, do_not_check_runtimes_on_reuse, mutable_config +): + """Test that we can reuse a spec when specifying build dependencies in requirements""" + mutable_config.set("packages:all:require", "%gcc") + pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9")) + PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() + + with spack.config.override("concretizer:reuse", True): + result = spack.concretize.concretize_one("pkg-b") + assert pkgb_old.dag_hash() == result.dag_hash(), result.tree() diff --git a/lib/spack/spack/test/concretization/requirements.py b/lib/spack/spack/test/concretization/requirements.py index fe768611de7..c381a2d6d7d 100644 --- a/lib/spack/spack/test/concretization/requirements.py +++ b/lib/spack/spack/test/concretization/requirements.py @@ -1239,3 +1239,68 @@ def test_virtual_requirement_respects_any_of(concretize_scope, mock_packages): with pytest.raises(spack.error.SpackError): spack.concretize.concretize_one("mpileaks ^[virtuals=mpi] zmpi") + + +@pytest.mark.parametrize( + "packages_yaml,expected_reuse,expected_contraints", + [ + ( + """ +packages: + all: + require: + - "%gcc" + """, + True, + # To minimize installed specs we reuse pkg-b compiler, since the requirement allows it + ["%gcc@9"], + ), + ( + """ +packages: + all: + require: + - "%gcc@10" + """, + False, + ["%gcc@10"], + ), + ( + """ +packages: + all: + require: + - "%gcc" + pkg-a: + require: + - "%gcc@10" + """, + True, + ["%gcc@10"], + ), + ], +) +@pytest.mark.regression("49847") +def test_requirements_on_compilers_and_reuse( + concretize_scope, mock_packages, packages_yaml, expected_reuse, expected_contraints +): + """Tests that we can require compilers with `%` in configuration files, and still get reuse + of specs (even though reused specs have no build dependency in the ASP encoding). + """ + input_spec = "pkg-a" + + reused_spec = spack.concretize.concretize_one("pkg-b@0.9 %gcc@9") + reused_nodes = list(reused_spec.traverse()) + update_packages_config(packages_yaml) + root_specs = [Spec(input_spec)] + + with spack.config.override("concretizer:reuse", True): + solver = spack.solver.asp.Solver() + setup = spack.solver.asp.SpackSolverSetup() + result, _, _ = solver.driver.solve(setup, root_specs, reuse=reused_nodes) + pkga = result.specs[0] + is_pkgb_reused = pkga["pkg-b"].dag_hash() == reused_spec.dag_hash() + + assert is_pkgb_reused == expected_reuse + for c in expected_contraints: + assert pkga.satisfies(c), print(pkga.tree()) From cc3d40d9d3b3d9ba9e7ca64438d3e1de205a4bcd Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Fri, 11 Apr 2025 21:39:42 +0200 Subject: [PATCH 107/317] fetch_strategy.py: show progress (#50003) Show progress meter for fetches when `stdout` is a `tty`. * fetch_strategy.py: show progress * "Fetched: x MB at y MB/s" * add tests, show % if content-length --- lib/spack/spack/fetch_strategy.py | 124 ++++++++++++++++++++++- lib/spack/spack/test/fetch_strategy.py | 135 +++++++++++++++++++++++++ 2 files changed, 256 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index dd09a6d3dd1..d98b3971221 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -27,11 +27,14 @@ import os import re import shutil +import sys +import time import urllib.error import urllib.parse import urllib.request +import urllib.response from pathlib import PurePath -from typing import List, Optional +from typing import Callable, List, Mapping, Optional import llnl.url import llnl.util @@ -219,6 +222,114 @@ def mirror_id(self): """BundlePackages don't have a mirror id.""" +def _format_speed(total_bytes: int, elapsed: float) -> str: + """Return a human-readable average download speed string.""" + elapsed = 1 if elapsed <= 0 else elapsed # avoid divide by zero + speed = total_bytes / elapsed + if speed >= 1e9: + return f"{speed / 1e9:6.1f} GB/s" + elif speed >= 1e6: + return f"{speed / 1e6:6.1f} MB/s" + elif speed >= 1e3: + return f"{speed / 1e3:6.1f} KB/s" + return f"{speed:6.1f} B/s" + + +def _format_bytes(total_bytes: int) -> str: + """Return a human-readable total bytes string.""" + if total_bytes >= 1e9: + return f"{total_bytes / 1e9:7.2f} GB" + elif total_bytes >= 1e6: + return f"{total_bytes / 1e6:7.2f} MB" + elif total_bytes >= 1e3: + return f"{total_bytes / 1e3:7.2f} KB" + return f"{total_bytes:7.2f} B" + + +class FetchProgress: + #: Characters to rotate in the spinner. + spinner = ["|", "/", "-", "\\"] + + def __init__( + self, + total_bytes: Optional[int] = None, + enabled: bool = True, + get_time: Callable[[], float] = time.time, + ) -> None: + """Initialize a FetchProgress instance. + Args: + total_bytes: Total number of bytes to download, if known. + enabled: Whether to print progress information. + get_time: Function to get the current time.""" + #: Number of bytes downloaded so far. + self.current_bytes = 0 + #: Delta time between progress prints + self.delta = 0.1 + #: Whether to print progress information. + self.enabled = enabled + #: Function to get the current time. + self.get_time = get_time + #: Time of last progress print to limit output + self.last_printed = 0.0 + #: Time of start of download + self.start_time = get_time() if enabled else 0.0 + #: Total number of bytes to download, if known. + self.total_bytes = total_bytes if total_bytes and total_bytes > 0 else 0 + #: Index of spinner character to print (used if total bytes is unknown) + self.index = 0 + + @classmethod + def from_headers( + cls, + headers: Mapping[str, str], + enabled: bool = True, + get_time: Callable[[], float] = time.time, + ) -> "FetchProgress": + """Create a FetchProgress instance from HTTP headers.""" + # headers.get is case-insensitive if it's from a HTTPResponse object. + content_length = headers.get("Content-Length") + try: + total_bytes = int(content_length) if content_length else None + except ValueError: + total_bytes = None + return cls(total_bytes=total_bytes, enabled=enabled, get_time=get_time) + + def advance(self, num_bytes: int, out=sys.stdout) -> None: + if not self.enabled: + return + self.current_bytes += num_bytes + self.print(out=out) + + def print(self, final: bool = False, out=sys.stdout) -> None: + if not self.enabled: + return + current_time = self.get_time() + if self.last_printed + self.delta < current_time or final: + self.last_printed = current_time + # print a newline if this is the final update + maybe_newline = "\n" if final else "" + # if we know the total bytes, show a percentage, otherwise a spinner + if self.total_bytes > 0: + percentage = min(100 * self.current_bytes / self.total_bytes, 100.0) + percent_or_spinner = f"[{percentage:3.0f}%] " + else: + # only show the spinner if we are not at 100% + if final: + percent_or_spinner = "[100%] " + else: + percent_or_spinner = f"[ {self.spinner[self.index]} ] " + self.index = (self.index + 1) % len(self.spinner) + + print( + f"\r {percent_or_spinner}{_format_bytes(self.current_bytes)} " + f"@ {_format_speed(self.current_bytes, current_time - self.start_time)}" + f"{maybe_newline}", + end="", + flush=True, + file=out, + ) + + @fetcher class URLFetchStrategy(FetchStrategy): """URLFetchStrategy pulls source code from a URL for an archive, check the @@ -316,7 +427,7 @@ def _check_headers(self, headers): tty.warn(msg) @_needs_stage - def _fetch_urllib(self, url): + def _fetch_urllib(self, url, chunk_size=65536): save_file = self.stage.save_filename request = urllib.request.Request(url, headers={"User-Agent": web_util.SPACK_USER_AGENT}) @@ -327,8 +438,15 @@ def _fetch_urllib(self, url): try: response = web_util.urlopen(request) tty.msg(f"Fetching {url}") + progress = FetchProgress.from_headers(response.headers, enabled=sys.stdout.isatty()) with open(save_file, "wb") as f: - shutil.copyfileobj(response, f) + while True: + chunk = response.read(chunk_size) + if not chunk: + break + f.write(chunk) + progress.advance(len(chunk)) + progress.print(final=True) except OSError as e: # clean up archive on failure. if self.archive_file: diff --git a/lib/spack/spack/test/fetch_strategy.py b/lib/spack/spack/test/fetch_strategy.py index d0451e77c25..f349da03ef1 100644 --- a/lib/spack/spack/test/fetch_strategy.py +++ b/lib/spack/spack/test/fetch_strategy.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from io import StringIO + import pytest from spack import fetch_strategy @@ -13,3 +15,136 @@ def test_fetchstrategy_bad_url_scheme(): with pytest.raises(ValueError): fetcher = fetch_strategy.from_url_scheme("bogus-scheme://example.com/a/b/c") # noqa: F841 + + +@pytest.mark.parametrize( + "expected,total_bytes", + [ + (" 0.00 B", 0), + (" 999.00 B", 999), + (" 1.00 KB", 1000), + (" 2.05 KB", 2048), + (" 1.00 MB", 1e6), + (" 12.30 MB", 1.23e7), + (" 1.23 GB", 1.23e9), + (" 999.99 GB", 9.9999e11), + ("5000.00 GB", 5e12), + ], +) +def test_format_bytes(expected, total_bytes): + assert fetch_strategy._format_bytes(total_bytes) == expected + + +@pytest.mark.parametrize( + "expected,total_bytes,elapsed", + [ + (" 0.0 B/s", 0, 0), # no time passed -- defaults to 1s. + (" 0.0 B/s", 0, 1), + (" 999.0 B/s", 999, 1), + (" 1.0 KB/s", 1000, 1), + (" 500.0 B/s", 1000, 2), + (" 2.0 KB/s", 2048, 1), + (" 1.0 MB/s", 1e6, 1), + (" 500.0 KB/s", 1e6, 2), + (" 12.3 MB/s", 1.23e7, 1), + (" 1.2 GB/s", 1.23e9, 1), + (" 999.9 GB/s", 9.999e11, 1), + ("5000.0 GB/s", 5e12, 1), + ], +) +def test_format_speed(expected, total_bytes, elapsed): + assert fetch_strategy._format_speed(total_bytes, elapsed) == expected + + +def test_fetch_progress_unknown_size(): + # time stamps in seconds, with 0.1s delta except 1.5 -> 1.55. + time_stamps = iter([1.0, 1.5, 1.55, 2.0, 3.0, 5.0, 5.5, 5.5]) + progress = fetch_strategy.FetchProgress(total_bytes=None, get_time=lambda: next(time_stamps)) + assert progress.start_time == 1.0 + out = StringIO() + + progress.advance(1000, out) + assert progress.last_printed == 1.5 + progress.advance(50, out) + assert progress.last_printed == 1.5 # does not print, too early after last print + progress.advance(2000, out) + assert progress.last_printed == 2.0 + progress.advance(3000, out) + assert progress.last_printed == 3.0 + progress.advance(4000, out) + assert progress.last_printed == 5.0 + progress.advance(4000, out) + assert progress.last_printed == 5.5 + progress.print(final=True, out=out) # finalize download + + outputs = [ + "\r [ | ] 1.00 KB @ 2.0 KB/s", + "\r [ / ] 3.05 KB @ 3.0 KB/s", + "\r [ - ] 6.05 KB @ 3.0 KB/s", + "\r [ \\ ] 10.05 KB @ 2.5 KB/s", # have to escape \ here but is aligned in output + "\r [ | ] 14.05 KB @ 3.1 KB/s", + "\r [100%] 14.05 KB @ 3.1 KB/s\n", # final print: no spinner; newline + ] + + assert out.getvalue() == "".join(outputs) + + +def test_fetch_progress_known_size(): + time_stamps = iter([1.0, 1.5, 3.0, 4.0, 4.0]) + progress = fetch_strategy.FetchProgress(total_bytes=6000, get_time=lambda: next(time_stamps)) + out = StringIO() + progress.advance(1000, out) # time 1.5 + progress.advance(2000, out) # time 3.0 + progress.advance(3000, out) # time 4.0 + progress.print(final=True, out=out) + + outputs = [ + "\r [ 17%] 1.00 KB @ 2.0 KB/s", + "\r [ 50%] 3.00 KB @ 1.5 KB/s", + "\r [100%] 6.00 KB @ 2.0 KB/s", + "\r [100%] 6.00 KB @ 2.0 KB/s\n", # final print has newline + ] + + assert out.getvalue() == "".join(outputs) + + +def test_fetch_progress_disabled(): + """When disabled, FetchProgress shouldn't print anything when advanced""" + + def get_time(): + raise RuntimeError("Should not be called") + + progress = fetch_strategy.FetchProgress(enabled=False, get_time=get_time) + out = StringIO() + progress.advance(1000, out) + progress.advance(2000, out) + progress.print(final=True, out=out) + assert progress.last_printed == 0 + assert not out.getvalue() + + +@pytest.mark.parametrize( + "header,value,total_bytes", + [ + ("Content-Length", "1234", 1234), + ("Content-Length", "0", 0), + ("Content-Length", "-10", 0), + ("Content-Length", "not a number", 0), + ("Not-Content-Length", "1234", 0), + ], +) +def test_fetch_progress_from_headers(header, value, total_bytes): + time_stamps = iter([1.0, 1.5, 3.0, 4.0, 4.0]) + progress = fetch_strategy.FetchProgress.from_headers( + {header: value}, get_time=lambda: next(time_stamps), enabled=True + ) + assert progress.total_bytes == total_bytes + assert progress.enabled + assert progress.start_time == 1.0 + + +def test_fetch_progress_from_headers_disabled(): + progress = fetch_strategy.FetchProgress.from_headers( + {"Content-Length": "1234"}, get_time=lambda: 1.0, enabled=False + ) + assert not progress.enabled From 6fb5a1492a4775ff5c68c10f10fbc56f8d9c5a04 Mon Sep 17 00:00:00 2001 From: Cameron Rutherford Date: Sat, 12 Apr 2025 00:22:44 -0700 Subject: [PATCH 108/317] gslib: add shared library support (#50016) --- .../repos/builtin/packages/gslib/package.py | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/gslib/package.py b/var/spack/repos/builtin/packages/gslib/package.py index 72610111e8c..38220a5f553 100644 --- a/var/spack/repos/builtin/packages/gslib/package.py +++ b/var/spack/repos/builtin/packages/gslib/package.py @@ -18,13 +18,20 @@ class Gslib(Package): version("1.0.5", tag="v1.0.5", commit="1de2fba1d94e27e20f3bc3af6a3a35901e223ecd") version("1.0.4", tag="v1.0.4", commit="00a074c15a13fdfd121ac5781ae450af809dde3b") version("1.0.3", tag="v1.0.3", commit="e2df99fad9480a981034fd0e4b3a7fe8f3cf9ae3") - version("1.0.2", tag="v1.0.2", commit="e53419c32a4a326e55e1c3e0d7de14ce665c1788") - version("1.0.1", tag="v1.0.1", commit="d16685f24551b7efd69e58d96dc76aec75239ea3") - version("1.0.0", tag="v1.0.0", commit="9533e652320a3b26a72c36487ae265b02072cd48") + version( + "1.0.2", tag="v1.0.2", commit="e53419c32a4a326e55e1c3e0d7de14ce665c1788", deprecated=True + ) + version( + "1.0.1", tag="v1.0.1", commit="d16685f24551b7efd69e58d96dc76aec75239ea3", deprecated=True + ) + version( + "1.0.0", tag="v1.0.0", commit="9533e652320a3b26a72c36487ae265b02072cd48", deprecated=True + ) variant("mpi", default=True, description="Build with MPI") variant("mpiio", default=True, description="Build with MPI I/O") variant("blas", default=False, description="Build with BLAS") + variant("shared", default=False, description="Build shared libs. Disables static libs") depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated @@ -39,14 +46,22 @@ class Gslib(Package): def install(self, spec, prefix): src_dir = "src" lib_dir = "lib" - libname = "libgs.a" if self.spec.satisfies("@1.0.1:"): makefile = "Makefile" else: makefile = "src/Makefile" - cc = self.compiler.cc + cc = self["c"].cc + + # Maybe this is too restrictive. Can +shared and +static be okay? + # If so, should add +/~ static variant. + if "+shared" in spec: + libname = "libgs.so" + filter_file(r"SHARED.*?=.*0", "SHARED = 1", makefile) + filter_file(r"STATIC.*?=.*0", "STATIC = 0", makefile) + else: + libname = "libgs.a" if "+mpiio" not in spec: filter_file(r"MPIIO.*?=.*1", "MPIIO = 0", makefile) @@ -68,16 +83,14 @@ def install(self, spec, prefix): if self.spec.satisfies("@1.0.3:"): make(make_cmd) make("install", "INSTALL_ROOT=%s" % self.prefix) - else: - if self.spec.satisfies("@1.0.1:"): - make(make_cmd) - make("install") - install_tree(lib_dir, prefix.lib) - elif self.version == Version("1.0.0"): - with working_dir(src_dir): - make(make_cmd) - mkdir(prefix.lib) - install(libname, prefix.lib) - # Should only install the headers (this will be fixed in gslib on - # future releases). + elif self.spec.satisfies("@1.0.1:"): + make(make_cmd) + make("install") + install_tree(lib_dir, prefix.lib) install_tree(src_dir, prefix.include) + elif self.version == Version("1.0.0"): + with working_dir(src_dir): + make(make_cmd) + mkdir(prefix.lib) + install(libname, prefix.lib) + install_tree(src_dir, prefix.include) From 493a307e4fe443248673e2dfd79c38a5e807d985 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Sat, 12 Apr 2025 04:37:39 -0600 Subject: [PATCH 109/317] gcc: bump aarch64-darwin patches (#50032) Co-authored-by: Harmen Stoppels --- var/spack/repos/builtin/packages/gcc/package.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 5626d6f9f0a..c0229346aa4 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -378,11 +378,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): # on XCode 12.5 conflicts("+bootstrap", when="@:11.1 %apple-clang@12.0.5") - # aarch64/M1 is supported in GCC 11.3-12.2 and 13 requires( - "@11.3,12.2,13.1:", + "@11.3:", when="target=aarch64: platform=darwin", - msg="Only GCC 11.3-12.2, 13.1+ support macOS M1 (aarch64)", + msg="Only GCC 11.3+ support aarch64-darwin", ) # Newer binutils than RHEL's is required to run `as` on some instructions @@ -438,8 +437,8 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): # aarch64-darwin support from Iain Sandoe's branch patch( - "https://github.com/iains/gcc-14-branch/compare/04696df09633baf97cdbbdd6e9929b9d472161d3..gcc-14.2-darwin-r2.patch?full_index=1", - sha256="01ea668489f3f0fb2439060f6c333c4c17ef4c19c4c4e6e6aa4b8ea493e97685", + "https://github.com/iains/gcc-14-branch/compare/04696df09633baf97cdbbdd6e9929b9d472161d3..a495b2dded281beeafec91074e4e82a5a3df8104.patch?full_index=1", + sha256="838cf070bec5468340018bf003f714f6340c562b878f3244303d2b7ba9949ccd", when="@14.2.0 target=aarch64:", ) patch( @@ -449,8 +448,8 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): ) patch( - "https://github.com/iains/gcc-13-branch/compare/b71f1de6e9cf7181a288c0f39f9b1ef6580cf5c8..gcc-13.3-darwin-r1.patch?full_index=1", - sha256="d957520afc286ac46aa3c4bf9b64618d02ca0bf1466f32321b5d6beec6a396eb", + "https://github.com/iains/gcc-13-branch/compare/b71f1de6e9cf7181a288c0f39f9b1ef6580cf5c8..7808d253bf53c6c6ce63f04a66601b595e2bae08.patch?full_index=1", + sha256="e7d4415e66ba09dd65b102a842e62e6f9ba6b41da878e08235e59a3fc53058eb", when="@13.3.0 target=aarch64:", ) patch( @@ -465,8 +464,8 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): ) patch( - "https://github.com/iains/gcc-12-branch/compare/2bada4bc59bed4be34fab463bdb3c3ebfd2b41bb..gcc-12.4-darwin-r0.patch?full_index=1", - sha256="e242adf240a62ed3005da75a9e304bda980b84ce497f124b4bddc819ee821e2a", + "https://github.com/iains/gcc-12-branch/compare/2bada4bc59bed4be34fab463bdb3c3ebfd2b41bb..99533d94172ed7a24c0e54c4ea97e6ae2260409e.patch?full_index=1", + sha256="4f59c671b34cc24b57eaa528592a5188f18716cd3cd63c4601fbbda92d397ce2", when="@12.4.0 target=aarch64:", ) patch( From 4ae473953710e07eb871f46bc0bd629ea467ba9c Mon Sep 17 00:00:00 2001 From: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Date: Mon, 14 Apr 2025 00:13:16 -0700 Subject: [PATCH 110/317] warpx, py-amrex: add v25.04 (#49891) --- var/spack/repos/builtin/packages/py-amrex/package.py | 7 ++++--- var/spack/repos/builtin/packages/warpx/package.py | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-amrex/package.py b/var/spack/repos/builtin/packages/py-amrex/package.py index 72f7f5306fe..a5923cb36bd 100644 --- a/var/spack/repos/builtin/packages/py-amrex/package.py +++ b/var/spack/repos/builtin/packages/py-amrex/package.py @@ -10,7 +10,7 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage): """AMReX Python Bindings with pybind11""" homepage = "https://amrex-codes.github.io/amrex/" - url = "https://github.com/AMReX-Codes/pyamrex/archive/refs/tags/25.03.tar.gz" + url = "https://github.com/AMReX-Codes/pyamrex/archive/refs/tags/25.04.tar.gz" git = "https://github.com/AMReX-Codes/pyamrex.git" maintainers("ax3l", "EZoni", "RTSandberg", "sayerhs", "WeiqunZhang") @@ -20,11 +20,12 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage): license("BSD-3-Clause-LBNL") version("develop", branch="development") - version("25.03", sha256="5a65545d46b49dd3f2bca2647a174c3ee0384e49791dc3e335a3a39d9a045350") + version("25.04", sha256="2c765d581f21170ea26a5eb50bdd2c9151d2dbed9f1002dc25e62f38ed6220c0") with default_args(deprecated=True): + version("25.03", sha256="5a65545d46b49dd3f2bca2647a174c3ee0384e49791dc3e335a3a39d9a045350") version("25.02", sha256="c743086b317f9fa90639d825db32a92376cde8dc5e1eab47a4c6a82af36d5b5c") - for v in ["25.03", "25.02", "develop"]: + for v in ["25.04", "25.03", "25.02", "develop"]: depends_on("amrex@{0}".format(v), when="@{0}".format(v), type=("build", "link")) variant( diff --git a/var/spack/repos/builtin/packages/warpx/package.py b/var/spack/repos/builtin/packages/warpx/package.py index 56ae7276cdb..8484beb8889 100644 --- a/var/spack/repos/builtin/packages/warpx/package.py +++ b/var/spack/repos/builtin/packages/warpx/package.py @@ -15,7 +15,7 @@ class Warpx(CMakePackage, PythonExtension): """ homepage = "https://ecp-warpx.github.io" - url = "https://github.com/BLAST-WarpX/warpx/archive/refs/tags/25.03.tar.gz" + url = "https://github.com/BLAST-WarpX/warpx/archive/refs/tags/25.04.tar.gz" git = "https://github.com/BLAST-WarpX/warpx.git" maintainers("ax3l", "dpgrote", "EZoni", "RemiLehe") @@ -24,13 +24,14 @@ class Warpx(CMakePackage, PythonExtension): license("BSD-3-Clause-LBNL") version("develop", branch="development") - version("25.03", sha256="18155ff67b036a00db2a25303058316167192a81cfe6dc1dec65fdef0b6d9903") + version("25.04", sha256="374136fbf566d65307dfe95ae12686ccaf3e649d2f66a79cd856585986c94ac7") with default_args(deprecated=True): + version("25.03", sha256="18155ff67b036a00db2a25303058316167192a81cfe6dc1dec65fdef0b6d9903") version("25.02", sha256="7bdea9c1e94f82dbc3565f14f6b6ad7658a639217a10a6cf08c05a16aa26266f") # 22.01+ requires C++17 or newer # 20.01+ requires C++14 or newer - for v in ["25.03", "25.02", "develop"]: + for v in ["25.04", "25.03", "25.02", "develop"]: depends_on( f"amrex@{v} build_system=cmake +linear_solvers +pic +particles +shared +tiny_profile", when=f"@{v}", From 9a37a6fcb18f7fdb912b95c3cd10323cc85ada23 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 14 Apr 2025 01:14:22 -0600 Subject: [PATCH 111/317] lammps: add versions 20250402 and 20240829.2 (#50031) --- .../repos/builtin/packages/lammps/package.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index c3033e58b82..006665fc03a 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -30,12 +30,18 @@ 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("20250402", sha256="5087ebd6b00cd44a7d73303d49685668f6effa76dc375912f7f75db558b39bca") version("20250204", sha256="a4cb0a58451d47ac31ee3e1f148d92f445298d6e27f2d06f161b9b4168d79eb1") version("20241119", sha256="7d1a825f13eef06d82ed8ae950f4a5ca6da9f6a5979745a85a7a58781e4c6ffa") + version( + "20240829.2", + sha256="f8ca3f021a819ced8658055f7750e235c51b4937ddb621cf1bd7bee08e0b6266", + preferred=True, + ) version( "20240829.1", sha256="3aea41869aa2fb8120fc4814cab645686f969e2eb7c66aa5587e500597d482dc", - preferred=True, + deprecated=True, ) version( "20240829", @@ -421,6 +427,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): depends_on("fortran", type="build", when=f"+{fc_pkg}") stable_versions = { + "20240829.2", "20240829.1", "20240829", "20230802.4", @@ -707,6 +714,7 @@ def url_for_version(self, version): depends_on("blas", when="+latte") depends_on("lapack", when="+latte") depends_on("python", when="+python") + depends_on("python@3.6:", when="@20250402: +python") depends_on("mpi", when="+user-lb") depends_on("mpi", when="+latboltz") depends_on("mpi", when="+user-h5md") @@ -726,6 +734,7 @@ def url_for_version(self, version): depends_on("kokkos@4.3.01:", when="@20240627: +kokkos") depends_on("kokkos@4.4.01:", when="@20241119: +kokkos") depends_on("kokkos@4.5.01:", when="@20250204: +kokkos") + depends_on("kokkos@4.6.00:", when="@20250402: +kokkos") depends_on("adios2", when="+user-adios") depends_on("adios2", when="+adios") depends_on("plumed", when="+user-plumed") @@ -769,6 +778,11 @@ def url_for_version(self, version): extends("python", when="+python") + conflicts( + "lammps_sizes=smallsmall", + when="@20250402:", + msg="smallsmall support has been removed in version 20250402", + ) conflicts("+cuda", when="+opencl") conflicts("+rocm", when="+opencl") conflicts("+body", when="+poems@:20180628") From fa9dcb43bd93c828a4d045d8daba61e31cb21661 Mon Sep 17 00:00:00 2001 From: Gerhard Theurich Date: Mon, 14 Apr 2025 00:15:43 -0700 Subject: [PATCH 112/317] esmf: remove @:7.0 conditionals with associated patches (#50030) --- .../esmf/darwin_dylib_install_name.patch | 18 -- .../repos/builtin/packages/esmf/gcc.patch | 26 -- .../repos/builtin/packages/esmf/intel.patch | 17 -- .../builtin/packages/esmf/mvapich2.patch | 225 ------------------ .../repos/builtin/packages/esmf/package.py | 21 -- 5 files changed, 307 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/esmf/darwin_dylib_install_name.patch delete mode 100644 var/spack/repos/builtin/packages/esmf/gcc.patch delete mode 100644 var/spack/repos/builtin/packages/esmf/intel.patch delete mode 100644 var/spack/repos/builtin/packages/esmf/mvapich2.patch diff --git a/var/spack/repos/builtin/packages/esmf/darwin_dylib_install_name.patch b/var/spack/repos/builtin/packages/esmf/darwin_dylib_install_name.patch deleted file mode 100644 index 0f363b378c2..00000000000 --- a/var/spack/repos/builtin/packages/esmf/darwin_dylib_install_name.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/build/common.mk 2017-11-25 17:16:31.000000000 +1100 -+++ b/build/common.mk 2017-11-25 17:26:20.000000000 +1100 -@@ -3415,11 +3415,11 @@ - mkdir tmp_$$NEXTLIB ;\ - cd tmp_$$NEXTLIB ;\ - $(ESMF_AREXTRACT) ../$$NEXTLIB.a ;\ -- echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ -- $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ -+ echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -Wl,-install_name -Wl,@rpath/$$NEXTLIB.$(ESMF_SL_SUFFIX) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ -+ $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -Wl,-install_name -Wl,@rpath/$$NEXTLIB.$(ESMF_SL_SUFFIX) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ - echo Converting $$NEXTLIB.a to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\ -- echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ -- $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ -+ echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -Wl,-install_name -Wl,@rpath/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ -+ $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -Wl,-install_name -Wl,@rpath/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ - cd .. ;\ - $(ESMF_RM) -r tmp_$$NEXTLIB ;\ - fi ;\ diff --git a/var/spack/repos/builtin/packages/esmf/gcc.patch b/var/spack/repos/builtin/packages/esmf/gcc.patch deleted file mode 100644 index 4b349b271f2..00000000000 --- a/var/spack/repos/builtin/packages/esmf/gcc.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3706bf758012daebadef83d6575c477aeff9c89b Mon Sep 17 00:00:00 2001 -From: Walter Spector -Date: Fri, 29 Apr 2016 12:57:16 -0700 -Subject: [PATCH] Fix a file open test in the Moab I/O code that gcc 6.1 - noticed. - ---- - src/Infrastructure/Mesh/src/Moab/io/ReadABAQUS.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Infrastructure/Mesh/src/Moab/io/ReadABAQUS.cpp b/src/Infrastructure/Mesh/src/Moab/io/ReadABAQUS.cpp -index 1c44057..89e5f23 100644 ---- a/src/Infrastructure/Mesh/src/Moab/io/ReadABAQUS.cpp -+++ b/src/Infrastructure/Mesh/src/Moab/io/ReadABAQUS.cpp -@@ -105,7 +105,7 @@ void ReadABAQUS::reset() - ReadABAQUS::~ReadABAQUS() - { - mdbImpl->release_interface(readMeshIface); -- if (NULL != abFile) -+ if (abFile.is_open()) - abFile.close(); - } - --- -2.7.4 - diff --git a/var/spack/repos/builtin/packages/esmf/intel.patch b/var/spack/repos/builtin/packages/esmf/intel.patch deleted file mode 100644 index ab955d8c52e..00000000000 --- a/var/spack/repos/builtin/packages/esmf/intel.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- old/build_config/Linux.intel.default/build_rules.mk 2019-06-27 15:55:30.857527494 -0400 -+++ new/build_config/Linux.intel.default/build_rules.mk 2019-06-27 15:56:13.007089627 -0400 -@@ -187,10 +187,10 @@ - ############################################################ - # OpenMP compiler and linker flags - # --ESMF_OPENMP_F90COMPILEOPTS += -openmp --ESMF_OPENMP_CXXCOMPILEOPTS += -openmp --ESMF_OPENMP_F90LINKOPTS += -openmp --ESMF_OPENMP_CXXLINKOPTS += -openmp -+ESMF_OPENMP_F90COMPILEOPTS += -qopenmp -+ESMF_OPENMP_CXXCOMPILEOPTS += -qopenmp -+ESMF_OPENMP_F90LINKOPTS += -qopenmp -+ESMF_OPENMP_CXXLINKOPTS += -qopenmp - - ############################################################ - # Set rpath syntax diff --git a/var/spack/repos/builtin/packages/esmf/mvapich2.patch b/var/spack/repos/builtin/packages/esmf/mvapich2.patch deleted file mode 100644 index 8352faae446..00000000000 --- a/var/spack/repos/builtin/packages/esmf/mvapich2.patch +++ /dev/null @@ -1,225 +0,0 @@ -From 34de0ccf556ba75d35c9687dae5d9f666a1b2a18 Mon Sep 17 00:00:00 2001 -From: Walter Spector -Date: Tue, 22 Nov 2016 10:57:53 -0800 -Subject: [PATCH] Detect and use libmpifort when available in mvaphich2 - configurations. - ---- - build_config/Darwin.absoft.default/build_rules.mk | 1 + - build_config/Darwin.g95.default/build_rules.mk | 1 + - build_config/Darwin.gfortran.default/build_rules.mk | 1 + - build_config/Darwin.gfortranclang.default/build_rules.mk | 1 + - build_config/Darwin.intel.default/build_rules.mk | 1 + - build_config/Darwin.nag.default/build_rules.mk | 1 + - build_config/Linux.absoft.default/build_rules.mk | 1 + - build_config/Linux.g95.default/build_rules.mk | 1 + - build_config/Linux.gfortran.default/build_rules.mk | 1 + - build_config/Linux.gfortranclang.default/build_rules.mk | 1 + - build_config/Linux.intel.default/build_rules.mk | 1 + - build_config/Linux.intelgcc.default/build_rules.mk | 1 + - build_config/Linux.lahey.default/build_rules.mk | 1 + - build_config/Linux.nag.default/build_rules.mk | 1 + - build_config/Linux.pgi.default/build_rules.mk | 1 + - scripts/libs.mvapich2f90 | 10 ++++++++++ - 16 files changed, 25 insertions(+) - create mode 100755 scripts/libs.mvapich2f90 - -diff --git a/build_config/Darwin.absoft.default/build_rules.mk b/build_config/Darwin.absoft.default/build_rules.mk -index 059ff82..88a95fe 100644 ---- a/build_config/Darwin.absoft.default/build_rules.mk -+++ b/build_config/Darwin.absoft.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Darwin.g95.default/build_rules.mk b/build_config/Darwin.g95.default/build_rules.mk -index 9789b26..a7bf89c 100644 ---- a/build_config/Darwin.g95.default/build_rules.mk -+++ b/build_config/Darwin.g95.default/build_rules.mk -@@ -54,6 +54,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Darwin.gfortran.default/build_rules.mk b/build_config/Darwin.gfortran.default/build_rules.mk -index 96a2a4f..2e05248 100644 ---- a/build_config/Darwin.gfortran.default/build_rules.mk -+++ b/build_config/Darwin.gfortran.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Darwin.gfortranclang.default/build_rules.mk b/build_config/Darwin.gfortranclang.default/build_rules.mk -index da52f08..cf90636 100644 ---- a/build_config/Darwin.gfortranclang.default/build_rules.mk -+++ b/build_config/Darwin.gfortranclang.default/build_rules.mk -@@ -56,6 +56,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Darwin.intel.default/build_rules.mk b/build_config/Darwin.intel.default/build_rules.mk -index f6593f1..b851691 100644 ---- a/build_config/Darwin.intel.default/build_rules.mk -+++ b/build_config/Darwin.intel.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Darwin.nag.default/build_rules.mk b/build_config/Darwin.nag.default/build_rules.mk -index 4ee8689..1dd172d 100644 ---- a/build_config/Darwin.nag.default/build_rules.mk -+++ b/build_config/Darwin.nag.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.absoft.default/build_rules.mk b/build_config/Linux.absoft.default/build_rules.mk -index 7a2314e..43231c9 100644 ---- a/build_config/Linux.absoft.default/build_rules.mk -+++ b/build_config/Linux.absoft.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.g95.default/build_rules.mk b/build_config/Linux.g95.default/build_rules.mk -index 5f45593..5d71e59 100644 ---- a/build_config/Linux.g95.default/build_rules.mk -+++ b/build_config/Linux.g95.default/build_rules.mk -@@ -54,6 +54,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.gfortran.default/build_rules.mk b/build_config/Linux.gfortran.default/build_rules.mk -index 47b55de..2954eab 100644 ---- a/build_config/Linux.gfortran.default/build_rules.mk -+++ b/build_config/Linux.gfortran.default/build_rules.mk -@@ -61,6 +61,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.gfortranclang.default/build_rules.mk b/build_config/Linux.gfortranclang.default/build_rules.mk -index 4c58349..6a68841 100644 ---- a/build_config/Linux.gfortranclang.default/build_rules.mk -+++ b/build_config/Linux.gfortranclang.default/build_rules.mk -@@ -64,6 +64,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.intel.default/build_rules.mk b/build_config/Linux.intel.default/build_rules.mk -index abb2873..55dd61a 100644 ---- a/build_config/Linux.intel.default/build_rules.mk -+++ b/build_config/Linux.intel.default/build_rules.mk -@@ -60,6 +60,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.intelgcc.default/build_rules.mk b/build_config/Linux.intelgcc.default/build_rules.mk -index 7c0e5c9..135c822 100644 ---- a/build_config/Linux.intelgcc.default/build_rules.mk -+++ b/build_config/Linux.intelgcc.default/build_rules.mk -@@ -60,6 +60,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.lahey.default/build_rules.mk b/build_config/Linux.lahey.default/build_rules.mk -index 9959bda..7a83264 100644 ---- a/build_config/Linux.lahey.default/build_rules.mk -+++ b/build_config/Linux.lahey.default/build_rules.mk -@@ -57,6 +57,7 @@ ifeq ($(ESMF_COMM),mvapich2) - ESMF_F90DEFAULT = mpif90 - ESMF_F90LINKERDEFAULT = mpicxx - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.nag.default/build_rules.mk b/build_config/Linux.nag.default/build_rules.mk -index 0fd6435..41a7e60 100644 ---- a/build_config/Linux.nag.default/build_rules.mk -+++ b/build_config/Linux.nag.default/build_rules.mk -@@ -53,6 +53,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/build_config/Linux.pgi.default/build_rules.mk b/build_config/Linux.pgi.default/build_rules.mk -index f6380b1..052a1cb 100644 ---- a/build_config/Linux.pgi.default/build_rules.mk -+++ b/build_config/Linux.pgi.default/build_rules.mk -@@ -80,6 +80,7 @@ ifeq ($(ESMF_COMM),mvapich2) - # Mvapich2 --------------------------------------------------- - ESMF_F90DEFAULT = mpif90 - ESMF_CXXDEFAULT = mpicxx -+ESMF_CXXLINKLIBS += $(shell $(ESMF_DIR)/scripts/libs.mvapich2f90) - ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS) - ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS) - else -diff --git a/scripts/libs.mvapich2f90 b/scripts/libs.mvapich2f90 -new file mode 100755 -index 0000000..e4b6f27 ---- /dev/null -+++ b/scripts/libs.mvapich2f90 -@@ -0,0 +1,10 @@ -+#!/bin/sh -+# this scripts determines the correct MVAPICH2 Fortran bindings library to -+# use when mpicxx is used for linking. If libmpifort, use it. -+PATHEXE=`which mpicxx` -+MVAPICH2_LIBDIR=`dirname ${PATHEXE}`/../lib* -+ls -1 ${MVAPICH2_LIBDIR} | grep mpifort > /dev/null 2>&1 -+if [ $? = 0 ]; then -+ echo -lmpifort; -+fi -+ --- -2.7.4 - diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index ebd52be4cba..e566f904f0c 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -138,24 +138,10 @@ class Esmf(MakefilePackage, PythonExtension): conflicts("%aocc", when="@:8.3") - # Make esmf build with newer intel versions - patch("intel.patch", when="@:7.0 %intel@17:") - # Make esmf build with newer gcc versions - # https://sourceforge.net/p/esmf/esmf/ci/3706bf758012daebadef83d6575c477aeff9c89b/ - patch("gcc.patch", when="@:7.0 %gcc@6:") - - # Fix undefined reference errors with mvapich2 - # https://sourceforge.net/p/esmf/esmf/ci/34de0ccf556ba75d35c9687dae5d9f666a1b2a18/ - patch("mvapich2.patch", when="@:7.0") - # explicit type cast of variables from long to int patch("longtoint.patch", when="@:8.3.2 %cce@14:") patch("longtoint.patch", when="@:8.3.2 %oneapi@2022:") - # Allow different directories for creation and - # installation of dynamic libraries on OSX: - patch("darwin_dylib_install_name.patch", when="platform=darwin @:7.0") - # Missing include file for newer gcc compilers # https://trac.macports.org/ticket/57493 patch("cstddef.patch", when="@7.1.0r %gcc@8:") @@ -195,13 +181,6 @@ class MakefileBuilder(spack.build_systems.makefile.MakefileBuilder): # below sets the compilers to the MPI wrappers. filter_compiler_wrappers("esmf.mk", relative_root="lib") - # Make script from mvapich2.patch executable - @when("@:7.0") - @run_before("build") - def chmod_scripts(self): - chmod = which("chmod") - chmod("+x", "scripts/libs.mvapich2f90") - def url_for_version(self, version): if version < Version("8.0.0"): # Older ESMF releases had a custom tag format ESMF_x_y_z From 74f78bd24faa736c63dcc924cdec28c0e91ca410 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Mon, 14 Apr 2025 12:48:29 +0530 Subject: [PATCH 113/317] aocl-da & aocl-utils: fix missing compiler dependencies (#50029) --- var/spack/repos/builtin/packages/aocl-da/package.py | 2 ++ var/spack/repos/builtin/packages/aocl-utils/package.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/aocl-da/package.py b/var/spack/repos/builtin/packages/aocl-da/package.py index 00f3f500d63..9ebaab2f76c 100644 --- a/var/spack/repos/builtin/packages/aocl-da/package.py +++ b/var/spack/repos/builtin/packages/aocl-da/package.py @@ -53,6 +53,8 @@ class AoclDa(CMakePackage): ) depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("cmake@3.22:", type="build") for vers in ["5.0"]: diff --git a/var/spack/repos/builtin/packages/aocl-utils/package.py b/var/spack/repos/builtin/packages/aocl-utils/package.py index 31302f70e30..5750891d180 100644 --- a/var/spack/repos/builtin/packages/aocl-utils/package.py +++ b/var/spack/repos/builtin/packages/aocl-utils/package.py @@ -47,7 +47,8 @@ class AoclUtils(CMakePackage): variant("shared", default=True, when="@4.2:", description="build shared library") variant("examples", default=False, description="enable examples") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3.22:", type="build") depends_on("doxygen", when="+doc") From 620d5c7ef88d740bcb53beabf72f55c8ebee6e1f Mon Sep 17 00:00:00 2001 From: Joshua Finkelstein <39136329+finkeljos@users.noreply.github.com> Date: Mon, 14 Apr 2025 01:38:37 -0600 Subject: [PATCH 114/317] bml: add magma and cusolver build options (#49652) --- .../repos/builtin/packages/bml/package.py | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index f30bc953dc6..5c234fb8439 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -14,7 +14,7 @@ class Bml(CMakePackage): url = "https://github.com/lanl/bml/archive/refs/tags/v2.2.0.tar.gz" git = "https://github.com/lanl/bml.git" - maintainers("jeanlucf22") + maintainers("jeanlucf22", "finkeljos") license("BSD-3-Clause") @@ -31,19 +31,33 @@ class Bml(CMakePackage): version("1.2.2", sha256="babc2fd0229397e418be00f3691277e86f549b5a23cadbcee66078595e9176a0") version("1.1.0", sha256="a90ede19d80ed870f0bf1588875a9f371484d89006a7296010d8d791da3eac33") - variant("shared", default=True, description="Build shared libs") - variant("mpi", default=True, description="Build with MPI Support") - - conflicts("+mpi", when="@:1.2.2") - depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated - depends_on("blas") depends_on("lapack") + + variant("shared", default=True, description="Build shared libs") + + variant("mpi", default=True, description="Build with MPI Support") depends_on("mpi", when="+mpi") - depends_on("python", type="build") + conflicts("+mpi", when="@:1.2.2") + + variant("magma", default=False, description="Build with magma support") + depends_on("magma", when="+magma") + conflicts("+magma", when="@1.1.0:2.2.0", msg="Must use master branch of bml") + + variant( + "cusolver", + default=False, + when="+magma", + description="Use cusolver diagonalization instead internal magma one.", + ) + depends_on("cuda", when="+cusolver") + + def setup_build_environment(self, env): + if "+magma" in self.spec: + env.set("MAGMA_ROOT", self.spec["magma"].prefix) def cmake_args(self): args = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] @@ -55,4 +69,16 @@ def cmake_args(self): args.append("-DCMAKE_Fortran_COMPILER=%s" % spec["mpi"].mpifc) else: args.append("-DBML_MPI=False") + + # if using magma variant + if "+magma" in self.spec: + args.append("-DBML_MAGMA=True") + + # cmake doesnt find lapack lib without explicilty setting it. + args.append("-DBLAS_LIBRARIES=%s" % self.spec["blas"].libs) + args.append("-DLAPACK_LIBRARIES=%s" % self.spec["lapack"].libs) + + # if using cusolver variant, magma required to use cusolver + if "+cusolver" in self.spec: + args.append("-DBML_CUSOLVER=True") return args From c5b227d14ccba8a691e1ec0331d4eb2ba40c1c95 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 14 Apr 2025 09:39:54 +0200 Subject: [PATCH 115/317] iconv: add a strong preference on libiconv by default (#50020) This strong preference fixes a sporadic issue when concretizing environments with `unify:when_possible`. In the first round of concretization, it is almost certain that glibc is installed, and that spec might provide iconv. In later rounds using that as a provider might be preferred, as it leads to less nodes to be "built". To avoid duplication by default, prefer libiconv in a stronger way than default preferences. Signed-off-by: Massimiliano Culpo --- etc/spack/defaults/packages.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index f23d55ffb9f..f340cdfeafc 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -92,6 +92,8 @@ packages: buildable: false hpcx-mpi: buildable: false + iconv: + prefer: [libiconv] mpt: buildable: false spectrum-mpi: From 7e9c24a78911e64c87953d798d81c7aeb4ae8bd6 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Mon, 14 Apr 2025 02:01:58 -0600 Subject: [PATCH 116/317] py-ppft: add v1.7.6.5 -> v1.7.6.9 (#49946) --- .../repos/builtin/packages/py-ppft/package.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ppft/package.py b/var/spack/repos/builtin/packages/py-ppft/package.py index b998d2585c8..3d85d074424 100644 --- a/var/spack/repos/builtin/packages/py-ppft/package.py +++ b/var/spack/repos/builtin/packages/py-ppft/package.py @@ -13,6 +13,11 @@ class PyPpft(PythonPackage): license("BSD-3-Clause") + version("1.7.6.9", sha256="73161c67474ea9d81d04bcdad166d399cff3f084d5d2dc21ebdd46c075bbc265") + version("1.7.6.8", sha256="76a429a7d7b74c4d743f6dba8351e58d62b6432ed65df9fe204790160dab996d") + version("1.7.6.7", sha256="ab34436814e2f18238f35688fd869b2641b2d2d8dca22b8d246f6701dfc954c8") + version("1.7.6.6", sha256="f933f0404f3e808bc860745acb3b79cd4fe31ea19a20889a645f900415be60f1") + version("1.7.6.5", sha256="47e0dab87a516c0b9992cd5b0c908348e4c7d964304d106b227fad28ae03219e") version("1.6.6.4", sha256="473442cc6731856990bd25bd6b454bb98720007de4523a73c560bdd0060463d2") version("1.6.4.9", sha256="5537b00afb7b247da0f59cc57ee5680178be61c8b2e21b5a0672b70a3d247791") version("1.6.4.7.1", sha256="f94b26491b4a36adc975fc51dba7568089a24756007a3a4ef3414a98d7337651") @@ -23,13 +28,18 @@ class PyPpft(PythonPackage): depends_on("python@2.7:2.8,3.6:", when="@1.6.6.4:", type=("build", "run")) depends_on("py-setuptools@0.6:", type="build") - depends_on("py-six@1.7.3:", type=("build", "run")) + depends_on("py-six@1.7.3:", type=("build", "run"), when="@:1.7.6.5") depends_on("py-dill@0.2.6:", type=("build", "run")) depends_on("py-dill@0.3.4:", type=("build", "run"), when="@1.6.6.4:") + depends_on("py-dill@0.3.5:", type=("build", "run"), when="@1.7.6.5") + depends_on("py-dill@0.3.6:", type=("build", "run"), when="@1.7.6.6") + depends_on("py-dill@0.3.7:", type=("build", "run"), when="@1.7.6.7") + depends_on("py-dill@0.3.8:", type=("build", "run"), when="@1.7.6.8") + depends_on("py-dill@0.3.9:", type=("build", "run"), when="@1.7.6.9") def url_for_version(self, version): url = "https://pypi.io/packages/source/p/ppft/" - if Version("1.6.6.4") > version >= Version("1.6.4.8"): + if version >= Version("1.6.4.8"): url += "ppft-{0}.tar.gz" else: url += "ppft-{0}.zip" From b3585ff1b8b3b6ac262644c6623eb15ebb36c4d3 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Mon, 14 Apr 2025 02:02:33 -0600 Subject: [PATCH 117/317] py-multiprocess: add v0.70.13 -> v0.70.17 (#49947) --- .../packages/py-multiprocess/package.py | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py index 9bf7e5e9d52..7bc32661f2a 100644 --- a/var/spack/repos/builtin/packages/py-multiprocess/package.py +++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py @@ -9,31 +9,42 @@ class PyMultiprocess(PythonPackage): """Better multiprocessing and multithreading in Python""" homepage = "https://github.com/uqfoundation/multiprocess" - pypi = "multiprocess/multiprocess-0.70.5.zip" + pypi = "multiprocess/multiprocess-0.70.17.tar.gz" license("BSD-3-Clause") + version("0.70.17", sha256="4ae2f11a3416809ebc9a48abfc8b14ecce0652a0944731a1493a3c1ba44ff57a") + version("0.70.16", sha256="161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1") + version("0.70.15", sha256="f20eed3036c0ef477b07a4177cf7c1ba520d9a2677870a4f47fe026f0cd6787e") + version("0.70.14", sha256="3eddafc12f2260d27ae03fe6069b12570ab4764ab59a75e81624fac453fbf46a") + version("0.70.13", sha256="2e096dd618a84d15aa369a9cf6695815e5539f853dc8fa4f4b9153b11b1d0b32") version("0.70.12.2", sha256="206bb9b97b73f87fec1ed15a19f8762950256aa84225450abc7150d02855a083") version("0.70.9", sha256="9fd5bd990132da77e73dec6e9613408602a4612e1d73caf2e2b813d2b61508e5") - version("0.70.7", sha256="3394f1fbd0d87112690a877e49eb7917d851ee8d822294d522dd4deae12febdb") - version("0.70.5", sha256="c4c196f3c4561dc1d78139c3e73709906a222d2fc166ef3eef895d8623df7267") - version("0.70.4", sha256="a692c6dc8392c25b29391abb58a9fbdc1ac38bca73c6f27d787774201e68e12c") + version("0.70.7", sha256="46479a327388df8e77ad268892f2e73eac06d6271189b868ce9d4f95474e58e3") + version( + "0.70.5", + sha256="c4c196f3c4561dc1d78139c3e73709906a222d2fc166ef3eef895d8623df7267", + url="https://files.pythonhosted.org/packages/multiprocess/multiprocess-0.70.5.zip", + ) + version( + "0.70.4", + sha256="a692c6dc8392c25b29391abb58a9fbdc1ac38bca73c6f27d787774201e68e12c", + url="https://files.pythonhosted.org/packages/multiprocess/multiprocess-0.70.4.zip", + ) depends_on("python@2.5:2.8,3.1:", type=("build", "run")) depends_on("python@2.7:2.8,3.6:", when="@0.70.12.2:", type=("build", "run")) + depends_on("python@2.7:2.8,3.7:", when="@0.70.13:", type=("build", "run")) + depends_on("python@3.7:", when="@0.70.14:", type=("build", "run")) + depends_on("python@3.8:", when="@0.70.16:", type=("build", "run")) depends_on("py-setuptools@0.6:", type="build") depends_on("py-dill@0.2.6:", type=("build", "run")) depends_on("py-dill@0.2.9:", type=("build", "run"), when="@0.70.7:") depends_on("py-dill@0.3.1:", type=("build", "run"), when="@0.70.9:") depends_on("py-dill@0.3.4:", type=("build", "run"), when="@0.70.12.2:") - - def url_for_version(self, version): - url = self.url.rsplit("/", 1)[0] - if Version("0.70.12.2") > version >= Version("0.70.7"): - url += "/multiprocess-{0}.tar.gz" - else: - url += "/multiprocess-{0}.zip" - - url = url.format(version) - return url + depends_on("py-dill@0.3.5.1:", type=("build", "run"), when="@0.70.13:") + depends_on("py-dill@0.3.6:", type=("build", "run"), when="@0.70.14:") + depends_on("py-dill@0.3.7:", type=("build", "run"), when="@0.70.15:") + depends_on("py-dill@0.3.8:", type=("build", "run"), when="@0.70.16:") + depends_on("py-dill@0.3.9:", type=("build", "run"), when="@0.70.17:") From 0a6767e602aa4204885dfb4ab5ce8a5be4a447c3 Mon Sep 17 00:00:00 2001 From: Thomas Padioleau Date: Mon, 14 Apr 2025 10:06:06 +0200 Subject: [PATCH 118/317] benchmark: set default build type to Release (#50013) --- var/spack/repos/builtin/packages/benchmark/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 65cae28d2bb..bade4054a89 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -45,7 +45,7 @@ class Benchmark(CMakePackage): variant( "build_type", - default="RelWithDebInfo", + default="Release", description="The build type to build", values=("Debug", "Release", "RelWithDebInfo", "MinSizeRel", "Coverage"), ) From 7794d51adb566324d1eaa47ec924c0f42b93e141 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 10:07:24 +0200 Subject: [PATCH 119/317] build(deps): bump urllib3 from 2.3.0 to 2.4.0 in /lib/spack/docs (#50014) Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.3.0 to 2.4.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.3.0...2.4.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.4.0 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 526d13f52f5..dbeaffe3dcc 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -5,7 +5,7 @@ sphinx-rtd-theme==3.0.2 python-levenshtein==0.27.1 docutils==0.21.2 pygments==2.19.1 -urllib3==2.3.0 +urllib3==2.4.0 pytest==8.3.5 isort==6.0.1 black==25.1.0 From 476863c4e8094852fd96a0fd4a465ed4f8192cc0 Mon Sep 17 00:00:00 2001 From: Stephen Hudson Date: Mon, 14 Apr 2025 03:10:20 -0500 Subject: [PATCH 120/317] libEnsemble: add v1.5.0 (#50012) --- var/spack/repos/builtin/packages/py-libensemble/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-libensemble/package.py b/var/spack/repos/builtin/packages/py-libensemble/package.py index 71c864646ab..b4972d3400d 100644 --- a/var/spack/repos/builtin/packages/py-libensemble/package.py +++ b/var/spack/repos/builtin/packages/py-libensemble/package.py @@ -11,7 +11,7 @@ class PyLibensemble(PythonPackage): """Library for managing ensemble-like collections of computations.""" homepage = "https://libensemble.readthedocs.io" - pypi = "libensemble/libensemble-1.4.3.tar.gz" + pypi = "libensemble/libensemble-1.5.0.tar.gz" git = "https://github.com/Libensemble/libensemble.git" maintainers("shuds13", "jlnav") @@ -20,6 +20,7 @@ class PyLibensemble(PythonPackage): license("BSD-3-Clause") version("develop", branch="develop") + version("1.5.0", sha256="7541829ac412d64152eaea204ba6e3e94640a206f3605a8357b519e932e86065") version("1.4.3", sha256="d30fd5ec93ae78a8e931765fd773b0693fde8b43130aca547c931230225c0f63") version("1.4.2", sha256="d283935594333793112f65cec1070137e0a87e31cd2bf1baec4a1261ac06ab63") version("1.4.1", sha256="fd39d5c4010f9cb1728af1666d0f10d0da7dd43c12e411badcbc53aab42ab183") From ccea1c6c9b43362e394c7196f5f873f8c2bd10ef Mon Sep 17 00:00:00 2001 From: Nathan Ellingwood Date: Mon, 14 Apr 2025 02:13:32 -0600 Subject: [PATCH 121/317] trilinos: update for kokkos and kokkos-kernels 4.6.00 (#49977) Corresponds to the kokkos 4.6.00 release, see PRs: * https://github.com/spack/spack/pull/49810 * https://github.com/trilinos/Trilinos/pull/13925 Signed-off-by: Nathan Ellingwood --- var/spack/repos/builtin/packages/trilinos/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 46f00d18b7c..74df430456a 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -427,12 +427,12 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos-kernels~shared", when="+cuda_rdc") depends_on("kokkos-kernels~shared", when="+rocm_rdc") depends_on("kokkos~complex_align") - depends_on("kokkos@=4.5.01", when="@master:") + depends_on("kokkos@=4.6.00", when="@master:") depends_on("kokkos@=4.5.01", when="@16.1") depends_on("kokkos@=4.3.01", when="@16.0") 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.5.01", when="@master:") + depends_on("kokkos-kernels@=4.6.00", when="@master:") depends_on("kokkos-kernels@=4.5.01", when="@16.1") depends_on("kokkos-kernels@=4.3.01", when="@16.0") depends_on("kokkos-kernels@=4.2.01", when="@15.1:15") From 940f47a47c6d82c5b25cdc7f96a1b94975f927d6 Mon Sep 17 00:00:00 2001 From: Thomas Madlener Date: Mon, 14 Apr 2025 10:14:35 +0200 Subject: [PATCH 122/317] Fix dependency on C compiler for some packages to pass cmake or configure stage (#49993) * genfit: depend on c compiler to fix installation issues genfit does not specify `LANGUAGES` in their `project` declaration yet, so C is also required to pass the cmake stage. * vbfnlo: Depend on C compiler to pass configure stage * cppunit: Depend on C compiler to pass configure stage * Make py-pyqt5 depend on C to fix build error * bdsim: Depend on C to pass configure stage --- var/spack/repos/builtin/packages/bdsim/package.py | 1 + var/spack/repos/builtin/packages/cppunit/package.py | 1 + var/spack/repos/builtin/packages/genfit/package.py | 2 +- var/spack/repos/builtin/packages/py-pyqt5/package.py | 1 + var/spack/repos/builtin/packages/vbfnlo/package.py | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bdsim/package.py b/var/spack/repos/builtin/packages/bdsim/package.py index 9029105e985..e1e603daab6 100644 --- a/var/spack/repos/builtin/packages/bdsim/package.py +++ b/var/spack/repos/builtin/packages/bdsim/package.py @@ -28,6 +28,7 @@ class Bdsim(CMakePackage): version("1.6.0", sha256="c0149a68d3c2436e036e8f71a13a251a2d88afe51e4387fe43ebd31a96bb3d7d") depends_on("cxx", type="build") # generated + depends_on("c", type="build") depends_on("cmake") depends_on("geant4") diff --git a/var/spack/repos/builtin/packages/cppunit/package.py b/var/spack/repos/builtin/packages/cppunit/package.py index 53712899c48..905c9af06bb 100644 --- a/var/spack/repos/builtin/packages/cppunit/package.py +++ b/var/spack/repos/builtin/packages/cppunit/package.py @@ -41,6 +41,7 @@ class Cppunit(AutotoolsPackage): ) depends_on("cxx", type="build") + depends_on("c", type="build") depends_on("autoconf", type="build", when="@master,1.15_20220904") depends_on("automake", type="build", when="@master,1.15_20220904") diff --git a/var/spack/repos/builtin/packages/genfit/package.py b/var/spack/repos/builtin/packages/genfit/package.py index 57997f4f390..889fb3269c0 100644 --- a/var/spack/repos/builtin/packages/genfit/package.py +++ b/var/spack/repos/builtin/packages/genfit/package.py @@ -30,7 +30,7 @@ class Genfit(CMakePackage): version("b496504a", sha256="e1582b35782118ade08498adc03f3fda01979ff8bed61e0520edae46d7bfe477") depends_on("cxx", type="build") # generated - + depends_on("c", type="build") depends_on("root") depends_on("root@:6.16.00", when="@b496504a") depends_on("eigen") diff --git a/var/spack/repos/builtin/packages/py-pyqt5/package.py b/var/spack/repos/builtin/packages/py-pyqt5/package.py index 68ee50bd154..070ac2d233d 100644 --- a/var/spack/repos/builtin/packages/py-pyqt5/package.py +++ b/var/spack/repos/builtin/packages/py-pyqt5/package.py @@ -19,6 +19,7 @@ class PyPyqt5(SIPPackage): version("5.15.9", sha256="dc41e8401a90dc3e2b692b411bd5492ab559ae27a27424eed4bd3915564ec4c0") depends_on("cxx", type="build") # generated + depends_on("c", type="build") # pyproject.toml depends_on("py-sip@6.6.2:6", type="build") diff --git a/var/spack/repos/builtin/packages/vbfnlo/package.py b/var/spack/repos/builtin/packages/vbfnlo/package.py index 679d7dc6660..a87ef9c287c 100644 --- a/var/spack/repos/builtin/packages/vbfnlo/package.py +++ b/var/spack/repos/builtin/packages/vbfnlo/package.py @@ -44,6 +44,7 @@ class Vbfnlo(AutotoolsPackage): depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("c", type="build") depends_on("hepmc") depends_on("gsl") From 7a489e1e4e3369d826132251418c694200e5f2bf Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 14 Apr 2025 10:40:24 +0200 Subject: [PATCH 123/317] py-grpcio: add v1.71.0 (#49980) --- var/spack/repos/builtin/packages/py-grpcio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-grpcio/package.py b/var/spack/repos/builtin/packages/py-grpcio/package.py index a43760c8fc4..0977a7d046f 100644 --- a/var/spack/repos/builtin/packages/py-grpcio/package.py +++ b/var/spack/repos/builtin/packages/py-grpcio/package.py @@ -13,6 +13,7 @@ class PyGrpcio(PythonPackage): license("Apache-2.0") + version("1.71.0", sha256="2b85f7820475ad3edec209d3d89a7909ada16caab05d3f2e08a7e8ae3200a55c") version("1.64.0", sha256="257baf07f53a571c215eebe9679c3058a313fd1d1f7c4eede5a8660108c52d9c") version("1.63.0", sha256="f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1") version("1.62.2", sha256="c77618071d96b7a8be2c10701a98537823b9c65ba256c0b9067e0594cdbd954d") From ebb2bb206e5d5148bd08f7b9861556bec3cebadf Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Mon, 14 Apr 2025 02:40:44 -0600 Subject: [PATCH 124/317] openfast: add v4.0.3 (#49974) --- var/spack/repos/builtin/packages/openfast/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py index 809f35cf43b..32ec7360bf2 100644 --- a/var/spack/repos/builtin/packages/openfast/package.py +++ b/var/spack/repos/builtin/packages/openfast/package.py @@ -17,6 +17,7 @@ class Openfast(CMakePackage): version("develop", branch="dev") version("master", branch="main") + version("4.0.3", tag="v4.0.3", commit="20632d7728da024478956b545876eb24a48dadbe") version("4.0.2", tag="v4.0.2", commit="fc1110183bcc87b16d93129edabdce6d30e3a497") version("3.5.5", tag="v3.5.5", commit="b48e032303c12df6949c67ebffb7050b888db000") version("3.5.4", tag="v3.5.4", commit="6a63db76978b0f703165391291963beb517d5a9e") From b66694d1caf5cff9d8c3a671d89ea770f1e5abcd Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Mon, 14 Apr 2025 04:41:54 -0400 Subject: [PATCH 125/317] nag: nag provides fortran (#49895) --- var/spack/repos/builtin/packages/nag/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index 7cd51060b17..8eba3d8412b 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -36,7 +36,8 @@ class Nag(Package, CompilerPackage): deprecated=True, ) - depends_on("fortran", type="build") # generated + depends_on("gcc languages=c", type="run", when="platform=linux") + provides("fortran") # Licensing license_required = True From b3ded1332e8f86d551868eeb773bfe77cbb445f0 Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Mon, 14 Apr 2025 05:18:07 -0400 Subject: [PATCH 126/317] openblas: fixes for Xcode 16.3 darwin aarch64 (#49976) --- .../openblas-0.3.29-darwin-aarch64.patch | 84 +++++++++++++++++++ .../builtin/packages/openblas/package.py | 3 + 2 files changed, 87 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openblas/openblas-0.3.29-darwin-aarch64.patch diff --git a/var/spack/repos/builtin/packages/openblas/openblas-0.3.29-darwin-aarch64.patch b/var/spack/repos/builtin/packages/openblas/openblas-0.3.29-darwin-aarch64.patch new file mode 100644 index 00000000000..02b7b75508e --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas-0.3.29-darwin-aarch64.patch @@ -0,0 +1,84 @@ +diff --git a/Makefile.system b/Makefile.system +index ac278bab1..a1059c224 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -434,6 +434,11 @@ ifeq (x$(XCVER), x 15) + CCOMMON_OPT += -Wl,-ld_classic + FCOMMON_OPT += -Wl,-ld_classic + endif ++ifeq (x$(XCVER), x 16) ++ifeq ($(F_COMPILER), GFORTRAN) ++override CEXTRALIB := $(filter-out(-lto_library, $(CEXTRALIB))) ++endif ++endif + endif + + ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly)) +diff --git a/ctest/Makefile b/ctest/Makefile +index 877a190c1..e6f683bd8 100644 +--- a/ctest/Makefile ++++ b/ctest/Makefile +@@ -235,18 +235,18 @@ FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS) + ifeq ($(USE_OPENMP), 1) + ifeq ($(F_COMPILER), GFORTRAN) + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB += -lomp ++EXTRALIB += -lomp + endif + endif + ifeq ($(F_COMPILER), NAG) +-CEXTRALIB = -lgomp ++EXTRALIB = -lgomp + endif + ifeq ($(F_COMPILER), IBM) + ifeq ($(C_COMPILER), GCC) +-CEXTRALIB += -lgomp ++EXTRALIB += -lgomp + endif + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB += -lomp ++EXTRALIB += -lomp + endif + endif + endif +diff --git a/test/Makefile b/test/Makefile +index 65576d3dd..9ba88988b 100644 +--- a/test/Makefile ++++ b/test/Makefile +@@ -299,18 +299,18 @@ CLDFLAGS = $(CFLAGS) $(LDFLAGS) + ifeq ($(USE_OPENMP), 1) + ifeq ($(F_COMPILER), GFORTRAN) + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB += -lomp ++EXTRALIB += -lomp + endif + endif + ifeq ($(F_COMPILER), NAG) +-CEXTRALIB = -lgomp ++EXTRALIB = -lgomp + endif + ifeq ($(F_COMPILER), IBM) + ifeq ($(C_COMPILER), GCC) +-CEXTRALIB += -lgomp ++EXTRALIB += -lgomp + endif + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB += -lomp ++EXTRALIB += -lomp + endif + endif + endif +diff --git a/utest/test_potrs.c b/utest/test_potrs.c +index 642ce1e37..bcb1f753b 100644 +--- a/utest/test_potrs.c ++++ b/utest/test_potrs.c +@@ -32,7 +32,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **********************************************************************************/ + + #include "openblas_utest.h" ++#if defined(ARCH_LOONGARCH64) + #pragma GCC optimize("no-gcse") ++#endif + /* + void BLASFUNC(cpotrf)(char*, BLASINT*, complex float*, BLASINT*, BLASINT*); + void BLASFUNC(zpotrs_(char*, BLASINT*, BLASINT*, complex double*, diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index d1b39d976eb..52e6149fb12 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -114,6 +114,9 @@ class Openblas(CMakePackage, MakefilePackage): # https://github.com/OpenMathLib/OpenBLAS/pull/4328 patch("xcode15-fortran.patch", when="@0.3.25 %apple-clang@15:") + # https://github.com/OpenMathLib/OpenBLAS/issues/5202 + patch("openblas-0.3.29-darwin-aarch64.patch", when="@0.3.29 platform=darwin") + # https://github.com/xianyi/OpenBLAS/pull/2519/files patch("ifort-msvc.patch", when="%msvc") From 25beeef865a5fca39435f399b52aa2a828249101 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 14 Apr 2025 11:22:13 +0200 Subject: [PATCH 127/317] Environment: separate parsing concerns from SpecList (#49973) Signed-off-by: Massimiliano Culpo --- lib/spack/spack/environment/environment.py | 101 +++----- .../{spec_list.py => environment/list.py} | 217 +++++++++------- lib/spack/spack/test/env.py | 11 +- lib/spack/spack/test/spec_list.py | 245 ++++++++---------- 4 files changed, 270 insertions(+), 304 deletions(-) rename lib/spack/spack/{spec_list.py => environment/list.py} (50%) diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index ca8e996bd6b..93dca484d5a 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -31,7 +31,6 @@ import spack.repo import spack.schema.env import spack.spec -import spack.spec_list import spack.store import spack.user_environment as uenv import spack.util.environment @@ -44,10 +43,10 @@ from spack.installer import PackageInstaller from spack.schema.env import TOP_LEVEL_KEY from spack.spec import Spec -from spack.spec_list import SpecList from spack.util.path import substitute_path_variables from ..enums import ConfigScopePriority +from .list import SpecList, SpecListError, SpecListParser SpecPair = spack.concretize.SpecPair @@ -932,8 +931,10 @@ def __init__(self, manifest_dir: Union[str, pathlib.Path]) -> None: self.new_specs: List[Spec] = [] self.views: Dict[str, ViewDescriptor] = {} + #: Parser for spec lists + self._spec_lists_parser = SpecListParser() #: Specs from "spack.yaml" - self.spec_lists: Dict[str, SpecList] = {user_speclist_name: SpecList()} + self.spec_lists: Dict[str, SpecList] = {} #: User specs from the last concretization self.concretized_user_specs: List[Spec] = [] #: Roots associated with the last concretization, in order @@ -1001,26 +1002,6 @@ def write_transaction(self): """Get a write lock context manager for use in a `with` block.""" return lk.WriteTransaction(self.txlock, acquire=self._re_read) - def _process_definition(self, entry): - """Process a single spec definition item.""" - when_string = entry.get("when") - if when_string is not None: - when = spack.spec.eval_conditional(when_string) - assert len([x for x in entry if x != "when"]) == 1 - else: - when = True - assert len(entry) == 1 - - if when: - for name, spec_list in entry.items(): - if name == "when": - continue - user_specs = SpecList(name, spec_list, self.spec_lists.copy()) - if name in self.spec_lists: - self.spec_lists[name].extend(user_specs) - else: - self.spec_lists[name] = user_specs - def _process_view(self, env_view: Optional[Union[bool, str, Dict]]): """Process view option(s), which can be boolean, string, or None. @@ -1082,21 +1063,24 @@ def _process_concrete_includes(self): def _construct_state_from_manifest(self): """Set up user specs and views from the manifest file.""" - self.spec_lists = collections.OrderedDict() self.views = {} + self._sync_speclists() + self._process_view(spack.config.get("view", True)) + self._process_concrete_includes() - for item in spack.config.get("definitions", []): - self._process_definition(item) + def _sync_speclists(self): + self.spec_lists = {} + self.spec_lists.update( + self._spec_lists_parser.parse_definitions( + data=spack.config.CONFIG.get("definitions", []) + ) + ) env_configuration = self.manifest[TOP_LEVEL_KEY] spec_list = env_configuration.get(user_speclist_name, []) - user_specs = SpecList( - user_speclist_name, [s for s in spec_list if s], self.spec_lists.copy() + self.spec_lists[user_speclist_name] = self._spec_lists_parser.parse_user_specs( + name=user_speclist_name, yaml_list=spec_list ) - self.spec_lists[user_speclist_name] = user_specs - - self._process_view(spack.config.get("view", True)) - self._process_concrete_includes() def all_concretized_user_specs(self) -> List[Spec]: """Returns all of the concretized user specs of the environment and @@ -1167,9 +1151,7 @@ def clear(self, re_read=False): re_read: If ``True``, do not clear ``new_specs``. This value cannot be read from yaml, and needs to be maintained when re-reading an existing environment. """ - self.spec_lists = collections.OrderedDict() - self.spec_lists[user_speclist_name] = SpecList() - + self.spec_lists = {} self._dev_specs = {} self.concretized_order = [] # roots of last concretize, in order self.concretized_user_specs = [] # user specs from last concretize @@ -1276,22 +1258,6 @@ def destroy(self): """Remove this environment from Spack entirely.""" shutil.rmtree(self.path) - def update_stale_references(self, from_list=None): - """Iterate over spec lists updating references.""" - if not from_list: - from_list = next(iter(self.spec_lists.keys())) - index = list(self.spec_lists.keys()).index(from_list) - - # spec_lists is an OrderedDict to ensure lists read from the manifest - # are maintainted in order, hence, all list entries after the modified - # list may refer to the modified list requiring stale references to be - # updated. - for i, (name, speclist) in enumerate( - list(self.spec_lists.items())[index + 1 :], index + 1 - ): - new_reference = dict((n, self.spec_lists[n]) for n in list(self.spec_lists.keys())[:i]) - speclist.update_reference(new_reference) - def add(self, user_spec, list_name=user_speclist_name): """Add a single user_spec (non-concretized) to the Environment @@ -1311,18 +1277,17 @@ def add(self, user_spec, list_name=user_speclist_name): elif not spack.repo.PATH.exists(spec.name) and not spec.abstract_hash: virtuals = spack.repo.PATH.provider_index.providers.keys() if spec.name not in virtuals: - msg = "no such package: %s" % spec.name - raise SpackEnvironmentError(msg) + raise SpackEnvironmentError(f"no such package: {spec.name}") list_to_change = self.spec_lists[list_name] existing = str(spec) in list_to_change.yaml_list if not existing: list_to_change.add(str(spec)) - self.update_stale_references(list_name) if list_name == user_speclist_name: self.manifest.add_user_spec(str(user_spec)) else: self.manifest.add_definition(str(user_spec), list_name=list_name) + self._sync_speclists() return bool(not existing) @@ -1366,18 +1331,17 @@ def change_existing_spec( "There are no specs named {0} in {1}".format(match_spec.name, list_name) ) elif len(matches) > 1 and not allow_changing_multiple_specs: - raise ValueError("{0} matches multiple specs".format(str(match_spec))) + raise ValueError(f"{str(match_spec)} matches multiple specs") for idx, spec in matches: override_spec = Spec.override(spec, change_spec) - self.spec_lists[list_name].replace(idx, str(override_spec)) if list_name == user_speclist_name: self.manifest.override_user_spec(str(override_spec), idx=idx) else: self.manifest.override_definition( str(spec), override=str(override_spec), list_name=list_name ) - self.update_stale_references(from_list=list_name) + self._sync_speclists() def remove(self, query_spec, list_name=user_speclist_name, force=False): """Remove specs from an environment that match a query_spec""" @@ -1405,22 +1369,17 @@ def remove(self, query_spec, list_name=user_speclist_name, force=False): raise SpackEnvironmentError(f"{err_msg_header}, no spec matches") old_specs = set(self.user_specs) - new_specs = set() + + # Remove specs from the appropriate spec list for spec in matches: if spec not in list_to_change: continue try: list_to_change.remove(spec) - self.update_stale_references(list_name) - new_specs = set(self.user_specs) - except spack.spec_list.SpecListError as e: - # define new specs list - new_specs = set(self.user_specs) + except SpecListError as e: msg = str(e) if force: msg += " It will be removed from the concrete specs." - # Mock new specs, so we can remove this spec from concrete spec lists - new_specs.remove(spec) tty.warn(msg) else: if list_name == user_speclist_name: @@ -1428,7 +1387,11 @@ def remove(self, query_spec, list_name=user_speclist_name, force=False): else: self.manifest.remove_definition(str(spec), list_name=list_name) - # If force, update stale concretized specs + # Recompute "definitions" and user specs + self._sync_speclists() + new_specs = set(self.user_specs) + + # If 'force', update stale concretized specs for spec in old_specs - new_specs: if force and spec in self.concretized_user_specs: i = self.concretized_user_specs.index(spec) @@ -2827,6 +2790,8 @@ def add_definition(self, user_spec: str, list_name: str) -> None: item[list_name].append(user_spec) break + # "definitions" can be remote, so we need to update the global config too + spack.config.CONFIG.set("definitions", defs, scope=self.scope_name) self.changed = True def remove_definition(self, user_spec: str, list_name: str) -> None: @@ -2853,6 +2818,8 @@ def remove_definition(self, user_spec: str, list_name: str) -> None: except ValueError: pass + # "definitions" can be remote, so we need to update the global config too + spack.config.CONFIG.set("definitions", defs, scope=self.scope_name) self.changed = True def override_definition(self, user_spec: str, *, override: str, list_name: str) -> None: @@ -2878,6 +2845,8 @@ def override_definition(self, user_spec: str, *, override: str, list_name: str) except ValueError: pass + # "definitions" can be remote, so we need to update the global config too + spack.config.CONFIG.set("definitions", defs, scope=self.scope_name) self.changed = True def _iterate_on_definitions(self, definitions, *, list_name, err_msg): diff --git a/lib/spack/spack/spec_list.py b/lib/spack/spack/environment/list.py similarity index 50% rename from lib/spack/spack/spec_list.py rename to lib/spack/spack/environment/list.py index eadc28fa8f8..9bb258fa777 100644 --- a/lib/spack/spack/spec_list.py +++ b/lib/spack/spack/environment/list.py @@ -2,36 +2,24 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import itertools -from typing import List +from typing import Any, Dict, List, NamedTuple, Optional, Union import spack.spec +import spack.util.spack_yaml import spack.variant from spack.error import SpackError from spack.spec import Spec class SpecList: - def __init__(self, name="specs", yaml_list=None, reference=None): - # Normalize input arguments - yaml_list = yaml_list or [] - reference = reference or {} - + def __init__(self, *, name: str = "specs", yaml_list=None, expanded_list=None): self.name = name - self._reference = reference # TODO: Do we need defensive copy here? - - # Validate yaml_list before assigning - if not all(isinstance(s, str) or isinstance(s, (list, dict)) for s in yaml_list): - raise ValueError( - "yaml_list can contain only valid YAML types! Found:\n %s" - % [type(s) for s in yaml_list] - ) - self.yaml_list = yaml_list[:] - + self.yaml_list = yaml_list[:] if yaml_list is not None else [] # Expansions can be expensive to compute and difficult to keep updated # We cache results and invalidate when self.yaml_list changes - self._expanded_list = None + self.specs_as_yaml_list = expanded_list or [] self._constraints = None - self._specs = None + self._specs: Optional[List[Spec]] = None @property def is_matrix(self): @@ -40,12 +28,6 @@ def is_matrix(self): return True return False - @property - def specs_as_yaml_list(self): - if self._expanded_list is None: - self._expanded_list = self._expand_references(self.yaml_list) - return self._expanded_list - @property def specs_as_constraints(self): if self._constraints is None: @@ -62,7 +44,7 @@ def specs_as_constraints(self): @property def specs(self) -> List[Spec]: if self._specs is None: - specs = [] + specs: List[Spec] = [] # This could be slightly faster done directly from yaml_list, # but this way is easier to maintain. for constraint_list in self.specs_as_constraints: @@ -74,12 +56,13 @@ def specs(self) -> List[Spec]: return self._specs - def add(self, spec): - self.yaml_list.append(str(spec)) + def add(self, spec: Spec): + spec_str = str(spec) + self.yaml_list.append(spec_str) # expanded list can be updated without invalidation - if self._expanded_list is not None: - self._expanded_list.append(str(spec)) + if self.specs_as_yaml_list is not None: + self.specs_as_yaml_list.append(spec_str) # Invalidate cache variables when we change the list self._constraints = None @@ -101,83 +84,18 @@ def remove(self, spec): # Remove may contain more than one string representation of the same spec for item in remove: self.yaml_list.remove(item) + self.specs_as_yaml_list.remove(item) # invalidate cache variables when we change the list - self._expanded_list = None self._constraints = None self._specs = None - def replace(self, idx: int, spec: str): - """Replace the existing spec at the index with the new one. - - Args: - idx: index of the spec to replace in the speclist - spec: new spec - """ - self.yaml_list[idx] = spec - - # invalidate cache variables when we change the list - self._expanded_list = None - self._constraints = None - self._specs = None - - def extend(self, other, copy_reference=True): + def extend(self, other: "SpecList", copy_reference=True) -> None: self.yaml_list.extend(other.yaml_list) - self._expanded_list = None + self.specs_as_yaml_list.extend(other.specs_as_yaml_list) self._constraints = None self._specs = None - if copy_reference: - self._reference = other._reference - - def update_reference(self, reference): - self._reference = reference - self._expanded_list = None - self._constraints = None - self._specs = None - - def _parse_reference(self, name): - sigil = "" - name = name[1:] - - # Parse specs as constraints - if name.startswith("^") or name.startswith("%"): - sigil = name[0] - name = name[1:] - - # Make sure the reference is valid - if name not in self._reference: - msg = f"SpecList '{self.name}' refers to named list '{name}'" - msg += " which does not appear in its reference dict." - raise UndefinedReferenceError(msg) - - return (name, sigil) - - def _expand_references(self, yaml): - if isinstance(yaml, list): - ret = [] - - for item in yaml: - # if it's a reference, expand it - if isinstance(item, str) and item.startswith("$"): - # replace the reference and apply the sigil if needed - name, sigil = self._parse_reference(item) - - referent = [ - _sigilify(item, sigil) for item in self._reference[name].specs_as_yaml_list - ] - ret.extend(referent) - else: - # else just recurse - ret.append(self._expand_references(item)) - return ret - elif isinstance(yaml, dict): - # There can't be expansions in dicts - return dict((name, self._expand_references(val)) for (name, val) in yaml.items()) - else: - # Strings are just returned - return yaml - def __len__(self): return len(self.specs) @@ -251,6 +169,111 @@ def _sigilify(item, sigil): return sigil + item +class Definition(NamedTuple): + name: str + yaml_list: List[Union[str, Dict]] + when: Optional[str] + + +class SpecListParser: + """Parse definitions and user specs from data in environments""" + + def __init__(self): + self.definitions: Dict[str, SpecList] = {} + + def parse_definitions(self, *, data: List[Dict[str, Any]]) -> Dict[str, SpecList]: + definitions_from_yaml: Dict[str, List[Definition]] = {} + for item in data: + value = self._parse_yaml_definition(item) + definitions_from_yaml.setdefault(value.name, []).append(value) + + self.definitions = {} + self._build_definitions(definitions_from_yaml) + return self.definitions + + def parse_user_specs(self, *, name, yaml_list) -> SpecList: + definition = Definition(name=name, yaml_list=yaml_list, when=None) + return self._speclist_from_definitions(name, [definition]) + + def _parse_yaml_definition(self, yaml_entry) -> Definition: + when_string = yaml_entry.get("when") + + if (when_string and len(yaml_entry) > 2) or (not when_string and len(yaml_entry) > 1): + mark = spack.util.spack_yaml.get_mark_from_yaml_data(yaml_entry) + attributes = ", ".join(x for x in yaml_entry if x != "when") + error_msg = f"definition must have a single attribute, got many: {attributes}" + raise SpecListError(f"{mark.name}:{mark.line + 1}: {error_msg}") + + for name, yaml_list in yaml_entry.items(): + if name == "when": + continue + return Definition(name=name, yaml_list=yaml_list, when=when_string) + + # If we are here, it means only "when" is in the entry + mark = spack.util.spack_yaml.get_mark_from_yaml_data(yaml_entry) + error_msg = "definition must have a single attribute, got none" + raise SpecListError(f"{mark.name}:{mark.line + 1}: {error_msg}") + + def _build_definitions(self, definitions_from_yaml: Dict[str, List[Definition]]): + for name, definitions in definitions_from_yaml.items(): + self.definitions[name] = self._speclist_from_definitions(name, definitions) + + def _speclist_from_definitions(self, name, definitions) -> SpecList: + combined_yaml_list = [] + for def_part in definitions: + if def_part.when is not None and not spack.spec.eval_conditional(def_part.when): + continue + combined_yaml_list.extend(def_part.yaml_list) + expanded_list = self._expand_yaml_list(combined_yaml_list) + return SpecList(name=name, yaml_list=combined_yaml_list, expanded_list=expanded_list) + + def _expand_yaml_list(self, raw_yaml_list): + result = [] + for item in raw_yaml_list: + if isinstance(item, str) and item.startswith("$"): + result.extend(self._expand_reference(item)) + continue + + value = item + if isinstance(item, dict): + value = self._expand_yaml_matrix(item) + result.append(value) + return result + + def _expand_reference(self, item: str): + sigil, name = "", item[1:] + if name.startswith("^") or name.startswith("%"): + sigil, name = name[0], name[1:] + + if name not in self.definitions: + mark = spack.util.spack_yaml.get_mark_from_yaml_data(item) + error_msg = f"trying to expand the name '{name}', which is not defined yet" + raise UndefinedReferenceError(f"{mark.name}:{mark.line + 1}: {error_msg}") + + value = self.definitions[name].specs_as_yaml_list + if not sigil: + return value + return [_sigilify(x, sigil) for x in value] + + def _expand_yaml_matrix(self, matrix_yaml): + extra_attributes = set(matrix_yaml) - {"matrix", "exclude"} + if extra_attributes: + mark = spack.util.spack_yaml.get_mark_from_yaml_data(matrix_yaml) + error_msg = f"extra attributes in spec matrix: {','.join(sorted(extra_attributes))}" + raise SpecListError(f"{mark.name}:{mark.line + 1}: {error_msg}") + + if "matrix" not in matrix_yaml: + mark = spack.util.spack_yaml.get_mark_from_yaml_data(matrix_yaml) + error_msg = "matrix is missing the 'matrix' attribute" + raise SpecListError(f"{mark.name}:{mark.line + 1}: {error_msg}") + + # Assume data has been validated against the YAML schema + result = {"matrix": [self._expand_yaml_list(row) for row in matrix_yaml["matrix"]]} + if "exclude" in matrix_yaml: + result["exclude"] = matrix_yaml["exclude"] + return result + + class SpecListError(SpackError): """Error class for all errors related to SpecList objects.""" diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py index a888c88d99b..64476624d0d 100644 --- a/lib/spack/spack/test/env.py +++ b/lib/spack/spack/test/env.py @@ -20,7 +20,7 @@ SpackEnvironmentViewError, _error_on_nonempty_view_dir, ) -from spack.spec_list import UndefinedReferenceError +from spack.environment.list import UndefinedReferenceError pytestmark = pytest.mark.not_on_windows("Envs are not supported on windows") @@ -107,7 +107,8 @@ def test_env_change_spec_in_definition(tmp_path, mock_packages, mutable_mock_env assert any(x.intersects("mpileaks@2.1%gcc") for x in e.user_specs) - e.change_existing_spec(spack.spec.Spec("mpileaks@2.2"), list_name="desired_specs") + with e: + e.change_existing_spec(spack.spec.Spec("mpileaks@2.2"), list_name="desired_specs") e.write() # Ensure changed specs are in memory @@ -776,10 +777,8 @@ def test_env_with_include_def_missing(mutable_mock_env_path, mock_packages): """ ) - e = ev.Environment(env_path) - with e: - with pytest.raises(UndefinedReferenceError, match=r"which does not appear"): - e.concretize() + with pytest.raises(UndefinedReferenceError, match=r"which is not defined"): + _ = ev.Environment(env_path) @pytest.mark.regression("41292") diff --git a/lib/spack/spack/test/spec_list.py b/lib/spack/spack/test/spec_list.py index 275d267fa69..fdafdbf05d7 100644 --- a/lib/spack/spack/test/spec_list.py +++ b/lib/spack/spack/test/spec_list.py @@ -6,53 +6,56 @@ import pytest import spack.concretize +from spack.environment.list import SpecListParser from spack.installer import PackageInstaller from spack.spec import Spec -from spack.spec_list import SpecList + +DEFAULT_EXPANSION = [ + "mpileaks", + "zmpi@1.0", + "mpich@3.0", + {"matrix": [["hypre"], ["%gcc@4.5.0", "%clang@3.3"]]}, + "libelf", +] + +DEFAULT_CONSTRAINTS = [ + [Spec("mpileaks")], + [Spec("zmpi@1.0")], + [Spec("mpich@3.0")], + [Spec("hypre"), Spec("%gcc@4.5.0")], + [Spec("hypre"), Spec("%clang@3.3")], + [Spec("libelf")], +] + +DEFAULT_SPECS = [ + Spec("mpileaks"), + Spec("zmpi@1.0"), + Spec("mpich@3.0"), + Spec("hypre%gcc@4.5.0"), + Spec("hypre%clang@3.3"), + Spec("libelf"), +] + + +@pytest.fixture() +def parser_and_speclist(): + """Default configuration of parser and user spec list for tests""" + parser = SpecListParser() + parser.parse_definitions( + data=[ + {"gccs": ["%gcc@4.5.0"]}, + {"clangs": ["%clang@3.3"]}, + {"mpis": ["zmpi@1.0", "mpich@3.0"]}, + ] + ) + result = parser.parse_user_specs( + name="specs", + yaml_list=["mpileaks", "$mpis", {"matrix": [["hypre"], ["$gccs", "$clangs"]]}, "libelf"], + ) + return parser, result class TestSpecList: - default_input = ["mpileaks", "$mpis", {"matrix": [["hypre"], ["$gccs", "$clangs"]]}, "libelf"] - - default_reference = { - "gccs": SpecList("gccs", ["%gcc@4.5.0"]), - "clangs": SpecList("clangs", ["%clang@3.3"]), - "mpis": SpecList("mpis", ["zmpi@1.0", "mpich@3.0"]), - } - - default_expansion = [ - "mpileaks", - "zmpi@1.0", - "mpich@3.0", - {"matrix": [["hypre"], ["%gcc@4.5.0", "%clang@3.3"]]}, - "libelf", - ] - - default_constraints = [ - [Spec("mpileaks")], - [Spec("zmpi@1.0")], - [Spec("mpich@3.0")], - [Spec("hypre"), Spec("%gcc@4.5.0")], - [Spec("hypre"), Spec("%clang@3.3")], - [Spec("libelf")], - ] - - default_specs = [ - Spec("mpileaks"), - Spec("zmpi@1.0"), - Spec("mpich@3.0"), - Spec("hypre%gcc@4.5.0"), - Spec("hypre%clang@3.3"), - Spec("libelf"), - ] - - def test_spec_list_expansions(self): - speclist = SpecList("specs", self.default_input, self.default_reference) - - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs - @pytest.mark.regression("28749") @pytest.mark.parametrize( "specs,expected", @@ -86,116 +89,87 @@ def test_spec_list_expansions(self): ], ) def test_spec_list_constraint_ordering(self, specs, expected): - speclist = SpecList("specs", specs) - expected_specs = [Spec(x) for x in expected] - assert speclist.specs == expected_specs + result = SpecListParser().parse_user_specs(name="specs", yaml_list=specs) + assert result.specs == [Spec(x) for x in expected] - def test_spec_list_add(self): - speclist = SpecList("specs", self.default_input, self.default_reference) + def test_mock_spec_list(self, parser_and_speclist): + """Tests expected properties on the default mock spec list""" + parser, mock_list = parser_and_speclist + assert mock_list.specs_as_yaml_list == DEFAULT_EXPANSION + assert mock_list.specs_as_constraints == DEFAULT_CONSTRAINTS + assert mock_list.specs == DEFAULT_SPECS - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs + def test_spec_list_add(self, parser_and_speclist): + parser, mock_list = parser_and_speclist + mock_list.add("libdwarf") - speclist.add("libdwarf") + assert mock_list.specs_as_yaml_list == DEFAULT_EXPANSION + ["libdwarf"] + assert mock_list.specs_as_constraints == DEFAULT_CONSTRAINTS + [[Spec("libdwarf")]] + assert mock_list.specs == DEFAULT_SPECS + [Spec("libdwarf")] - assert speclist.specs_as_yaml_list == self.default_expansion + ["libdwarf"] - assert speclist.specs_as_constraints == self.default_constraints + [[Spec("libdwarf")]] - assert speclist.specs == self.default_specs + [Spec("libdwarf")] + def test_spec_list_remove(self, parser_and_speclist): + parser, mock_list = parser_and_speclist + mock_list.remove("libelf") - def test_spec_list_remove(self): - speclist = SpecList("specs", self.default_input, self.default_reference) + assert mock_list.specs_as_yaml_list + ["libelf"] == DEFAULT_EXPANSION + assert mock_list.specs_as_constraints + [[Spec("libelf")]] == DEFAULT_CONSTRAINTS + assert mock_list.specs + [Spec("libelf")] == DEFAULT_SPECS - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs - - speclist.remove("libelf") - - assert speclist.specs_as_yaml_list + ["libelf"] == self.default_expansion - - assert speclist.specs_as_constraints + [[Spec("libelf")]] == self.default_constraints - - assert speclist.specs + [Spec("libelf")] == self.default_specs - - def test_spec_list_update_reference(self): - speclist = SpecList("specs", self.default_input, self.default_reference) - - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs - - new_mpis = SpecList("mpis", self.default_reference["mpis"].yaml_list) - new_mpis.add("mpich@3.3") - new_reference = self.default_reference.copy() - new_reference["mpis"] = new_mpis - - speclist.update_reference(new_reference) - - expansion = list(self.default_expansion) - expansion.insert(3, "mpich@3.3") - constraints = list(self.default_constraints) - constraints.insert(3, [Spec("mpich@3.3")]) - specs = list(self.default_specs) - specs.insert(3, Spec("mpich@3.3")) - - assert speclist.specs_as_yaml_list == expansion - assert speclist.specs_as_constraints == constraints - assert speclist.specs == specs - - def test_spec_list_extension(self): - speclist = SpecList("specs", self.default_input, self.default_reference) - - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs - - new_ref = self.default_reference.copy() - otherlist = SpecList("specs", ["zlib", {"matrix": [["callpath"], ["%intel@18"]]}], new_ref) - - speclist.extend(otherlist) - - assert speclist.specs_as_yaml_list == ( - self.default_expansion + otherlist.specs_as_yaml_list + def test_spec_list_extension(self, parser_and_speclist): + parser, mock_list = parser_and_speclist + other_list = parser.parse_user_specs( + name="specs", yaml_list=[{"matrix": [["callpath"], ["%intel@18"]]}] ) - assert speclist.specs == self.default_specs + otherlist.specs - assert speclist._reference is new_ref + mock_list.extend(other_list) + + assert mock_list.specs_as_yaml_list == (DEFAULT_EXPANSION + other_list.specs_as_yaml_list) + assert mock_list.specs == DEFAULT_SPECS + other_list.specs + + def test_spec_list_nested_matrices(self, parser_and_speclist): + parser, _ = parser_and_speclist - def test_spec_list_nested_matrices(self): inner_matrix = [{"matrix": [["zlib", "libelf"], ["%gcc", "%intel"]]}] outer_addition = ["+shared", "~shared"] outer_matrix = [{"matrix": [inner_matrix, outer_addition]}] - speclist = SpecList("specs", outer_matrix) + result = parser.parse_user_specs(name="specs", yaml_list=outer_matrix) expected_components = itertools.product( ["zlib", "libelf"], ["%gcc", "%intel"], ["+shared", "~shared"] ) expected = [Spec(" ".join(combo)) for combo in expected_components] - assert set(speclist.specs) == set(expected) + assert set(result.specs) == set(expected) @pytest.mark.regression("16897") def test_spec_list_recursion_specs_as_constraints(self): input = ["mpileaks", "$mpis", {"matrix": [["hypre"], ["$%gccs", "$%clangs"]]}, "libelf"] - reference = { - "gccs": SpecList("gccs", ["gcc@4.5.0"]), - "clangs": SpecList("clangs", ["clang@3.3"]), - "mpis": SpecList("mpis", ["zmpi@1.0", "mpich@3.0"]), - } - - speclist = SpecList("specs", input, reference) - - assert speclist.specs_as_yaml_list == self.default_expansion - assert speclist.specs_as_constraints == self.default_constraints - assert speclist.specs == self.default_specs - - def test_spec_list_matrix_exclude(self, mock_packages): - # Test on non-boolean variants for regression for #16841 - matrix = [ - {"matrix": [["multivalue-variant"], ["foo=bar", "foo=baz"]], "exclude": ["foo=bar"]} + definitions = [ + {"gccs": ["gcc@4.5.0"]}, + {"clangs": ["clang@3.3"]}, + {"mpis": ["zmpi@1.0", "mpich@3.0"]}, ] - speclist = SpecList("specs", matrix) - assert len(speclist.specs) == 1 + + parser = SpecListParser() + parser.parse_definitions(data=definitions) + result = parser.parse_user_specs(name="specs", yaml_list=input) + + assert result.specs_as_yaml_list == DEFAULT_EXPANSION + assert result.specs_as_constraints == DEFAULT_CONSTRAINTS + assert result.specs == DEFAULT_SPECS + + @pytest.mark.regression("16841") + def test_spec_list_matrix_exclude(self, mock_packages): + parser = SpecListParser() + result = parser.parse_user_specs( + name="specs", + yaml_list=[ + { + "matrix": [["multivalue-variant"], ["foo=bar", "foo=baz"]], + "exclude": ["foo=bar"], + } + ], + ) + assert len(result.specs) == 1 def test_spec_list_exclude_with_abstract_hashes(self, mock_packages, install_mockery): # Put mpich in the database so it can be referred to by hash. @@ -205,9 +179,10 @@ def test_spec_list_exclude_with_abstract_hashes(self, mock_packages, install_moc # Create matrix and exclude +debug, which excludes the first mpich after its abstract hash # is resolved. - speclist = SpecList( - "specs", - [ + parser = SpecListParser() + result = parser.parse_user_specs( + name="specs", + yaml_list=[ { "matrix": [ ["mpileaks"], @@ -220,5 +195,5 @@ def test_spec_list_exclude_with_abstract_hashes(self, mock_packages, install_moc ) # Ensure that only mpich~debug is selected, and that the assembled spec remains abstract. - assert len(speclist.specs) == 1 - assert speclist.specs[0] == Spec(f"mpileaks ^callpath ^mpich/{mpich_2.dag_hash(5)}") + assert len(result.specs) == 1 + assert result.specs[0] == Spec(f"mpileaks ^callpath ^mpich/{mpich_2.dag_hash(5)}") From e97a78ebcccf67911fee2addd3ec573805dc3dd0 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 14 Apr 2025 12:15:32 +0200 Subject: [PATCH 128/317] Mark glibc and musl as buildable false (#50035) --- etc/spack/defaults/packages.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index f340cdfeafc..79a78df3e9d 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -90,11 +90,15 @@ packages: buildable: false fujitsu-ssl2: buildable: false + glibc: + buildable: false hpcx-mpi: buildable: false iconv: prefer: [libiconv] mpt: buildable: false + musl: + buildable: false spectrum-mpi: buildable: false From 900fff77cd718fe2d55f52d26816a234f9b80156 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 14 Apr 2025 12:26:30 +0200 Subject: [PATCH 129/317] Use gnu_mirror_path for GNU packages (#50034) --- var/spack/repos/builtin/packages/acct/package.py | 4 ++-- var/spack/repos/builtin/packages/freeipmi/package.py | 4 ++-- var/spack/repos/builtin/packages/gprofng-gui/package.py | 4 ++-- var/spack/repos/builtin/packages/grep/package.py | 4 ++-- var/spack/repos/builtin/packages/gzip/package.py | 4 ++-- var/spack/repos/builtin/packages/libmicrohttpd/package.py | 4 ++-- var/spack/repos/builtin/packages/libtasn1/package.py | 4 ++-- var/spack/repos/builtin/packages/termcap/package.py | 4 ++-- var/spack/repos/builtin/packages/which/package.py | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/acct/package.py b/var/spack/repos/builtin/packages/acct/package.py index 2eb3775142c..4b63ee9ffcd 100644 --- a/var/spack/repos/builtin/packages/acct/package.py +++ b/var/spack/repos/builtin/packages/acct/package.py @@ -5,11 +5,11 @@ from spack.package import * -class Acct(AutotoolsPackage): +class Acct(AutotoolsPackage, GNUMirrorPackage): """Utilities for monitoring process activities.""" homepage = "https://www.gnu.org/software/acct" - url = "https://ftp.gnu.org/gnu/acct/acct-6.6.4.tar.gz" + gnu_mirror_path = "acct/acct-6.6.4.tar.gz" license("GPL-3.0-or-later") diff --git a/var/spack/repos/builtin/packages/freeipmi/package.py b/var/spack/repos/builtin/packages/freeipmi/package.py index 7e06cd54c5d..72309168dd9 100644 --- a/var/spack/repos/builtin/packages/freeipmi/package.py +++ b/var/spack/repos/builtin/packages/freeipmi/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Freeipmi(AutotoolsPackage): +class Freeipmi(AutotoolsPackage, GNUMirrorPackage): """FreeIPMI provides in-band and out-of-band IPMI software based on the IPMI v1.5/2.0 specification. The IPMI specification defines a set of interfaces for platform management and is implemented by a number vendors for system @@ -19,7 +19,7 @@ class Freeipmi(AutotoolsPackage): info.""" homepage = "https://www.gnu.org/software/freeipmi/" - url = "https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.4.tar.gz" + gnu_mirror_path = "freeipmi/freeipmi-1.6.4.tar.gz" license("GPL-3.0-or-later") diff --git a/var/spack/repos/builtin/packages/gprofng-gui/package.py b/var/spack/repos/builtin/packages/gprofng-gui/package.py index 27eb3ef0793..fbf84c18449 100644 --- a/var/spack/repos/builtin/packages/gprofng-gui/package.py +++ b/var/spack/repos/builtin/packages/gprofng-gui/package.py @@ -6,11 +6,11 @@ from spack.package import * -class GprofngGui(AutotoolsPackage): +class GprofngGui(AutotoolsPackage, GNUMirrorPackage): """A graphical environment to analyze the performance data generated by the gprofng""" homepage = "https://sourceware.org/binutils/wiki/gprofng" - url = "https://ftp.gnu.org/gnu/gprofng-gui/gprofng-gui-1.1.tar.gz" + gnu_mirror_path = "gprofng-gui/gprofng-gui-1.1.tar.gz" git = "https://git.savannah.gnu.org/git/gprofng-gui.git" maintainers("pramodk") diff --git a/var/spack/repos/builtin/packages/grep/package.py b/var/spack/repos/builtin/packages/grep/package.py index 8129f7c331a..150b78e0310 100644 --- a/var/spack/repos/builtin/packages/grep/package.py +++ b/var/spack/repos/builtin/packages/grep/package.py @@ -5,12 +5,12 @@ from spack.package import * -class Grep(AutotoolsPackage): +class Grep(AutotoolsPackage, GNUMirrorPackage): """Grep searches one or more input files for lines containing a match to a specified pattern""" homepage = "https://www.gnu.org/software/grep/" - url = "https://ftp.gnu.org/gnu/grep/grep-3.3.tar.xz" + gnu_mirror_path = "grep/grep-3.3.tar.xz" license("GPL-3.0-or-later") diff --git a/var/spack/repos/builtin/packages/gzip/package.py b/var/spack/repos/builtin/packages/gzip/package.py index ab283c83933..ffd8cfa14cf 100644 --- a/var/spack/repos/builtin/packages/gzip/package.py +++ b/var/spack/repos/builtin/packages/gzip/package.py @@ -4,12 +4,12 @@ from spack.package import * -class Gzip(AutotoolsPackage): +class Gzip(AutotoolsPackage, GNUMirrorPackage): """GNU Gzip is a popular data compression program originally written by Jean-loup Gailly for the GNU project.""" homepage = "https://www.gnu.org/software/gzip/" - url = "https://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.gz" + gnu_mirror_path = "gzip/gzip-1.10.tar.gz" license("GPL-3.0-or-later") diff --git a/var/spack/repos/builtin/packages/libmicrohttpd/package.py b/var/spack/repos/builtin/packages/libmicrohttpd/package.py index 9c2e651ae88..acd8d977d9d 100644 --- a/var/spack/repos/builtin/packages/libmicrohttpd/package.py +++ b/var/spack/repos/builtin/packages/libmicrohttpd/package.py @@ -5,13 +5,13 @@ from spack.package import * -class Libmicrohttpd(AutotoolsPackage): +class Libmicrohttpd(AutotoolsPackage, GNUMirrorPackage): """GNU libmicrohttpd is a small C library that is supposed to make it easy to run an HTTP server as part of another application. """ homepage = "https://www.gnu.org/software/libmicrohttpd/" - url = "https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.71.tar.gz" + gnu_mirror_path = "libmicrohttpd/libmicrohttpd-0.9.71.tar.gz" maintainers("hainest") diff --git a/var/spack/repos/builtin/packages/libtasn1/package.py b/var/spack/repos/builtin/packages/libtasn1/package.py index 283b5089728..4ef4e854d2c 100644 --- a/var/spack/repos/builtin/packages/libtasn1/package.py +++ b/var/spack/repos/builtin/packages/libtasn1/package.py @@ -5,11 +5,11 @@ from spack.package import * -class Libtasn1(Package): +class Libtasn1(Package, GNUMirrorPackage): """ASN.1 structure parser library.""" homepage = "https://www.gnu.org/software/libtasn1/" - url = "https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.13.tar.gz" + gnu_mirror_path = "libtasn1/libtasn1-4.13.tar.gz" license("LGPL-2.1-or-later") diff --git a/var/spack/repos/builtin/packages/termcap/package.py b/var/spack/repos/builtin/packages/termcap/package.py index 5e4f36d4909..4b63d94df40 100644 --- a/var/spack/repos/builtin/packages/termcap/package.py +++ b/var/spack/repos/builtin/packages/termcap/package.py @@ -5,13 +5,13 @@ from spack.package import * -class Termcap(AutotoolsPackage): +class Termcap(AutotoolsPackage, GNUMirrorPackage): """This is the GNU termcap library, a library of C functions that enable programs to send control strings to terminals in a way independent of the terminal type.""" homepage = "https://www.gnu.org/software/termutils/manual/termcap-1.3/html_mono/termcap.html" - url = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz" + gnu_mirror_path = "termcap/termcap-1.3.1.tar.gz" license("GPL-2.0-or-later") diff --git a/var/spack/repos/builtin/packages/which/package.py b/var/spack/repos/builtin/packages/which/package.py index ffe807bbb36..b88178ca2d0 100644 --- a/var/spack/repos/builtin/packages/which/package.py +++ b/var/spack/repos/builtin/packages/which/package.py @@ -6,12 +6,12 @@ from spack.package import * -class Which(AutotoolsPackage): +class Which(AutotoolsPackage, GNUMirrorPackage): """GNU which - is a utility that is used to find which executable (or alias or shell function) is executed when entered on the shell prompt.""" homepage = "https://savannah.gnu.org/projects/which/" - url = "https://ftp.gnu.org/gnu/which/which-2.21.tar.gz" + gnu_mirror_path = "which/which-2.21.tar.gz" license("GPL-3.0") From e45ee9cb92a875db09a48e84d81985894c395722 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 14 Apr 2025 05:27:37 -0500 Subject: [PATCH 130/317] gaudi: add v39.3, v39.4 (#50017) --- var/spack/repos/builtin/packages/gaudi/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index 4bcfb0ab433..6f634f84c04 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -17,6 +17,8 @@ class Gaudi(CMakePackage, CudaPackage): tags = ["hep"] version("master", branch="master") + version("39.4", sha256="dd698e0788811fa8325ed5f37ecf3fd9bde55720489224a517b52360819564d7") + version("39.3", sha256="009a306a7413f3207f0d5fa19034186c0bb3c8de0c807d38f515338a41a8a0bc") version("39.2", sha256="9697f5092df49187e3d30256c821a4400534e77ddaa2d976ba4bb22745c904d6") version("39.1", sha256="acdeddcc2383a127b1ad4b0bdaf9f1c6699b64105e0c1d8095c560c96c157885") version("39.0", sha256="faa3653e2e6c769292c0592e3fc35cd98a2820bd6fc0c967cac565808b927262") From ebef5f75fbf44638fc8ab7098034ca50fbd7c822 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 14 Apr 2025 14:52:12 +0200 Subject: [PATCH 131/317] util/environment.py: allow PurePath for path modifiers and improve file/lineno of warnings (#50038) --- lib/spack/spack/util/environment.py | 109 ++++++++++++++++++++++------ 1 file changed, 88 insertions(+), 21 deletions(-) diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 6f092115311..7c158d462b2 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -7,6 +7,7 @@ import inspect import json import os +import pathlib import pickle import re import shlex @@ -21,6 +22,12 @@ import spack.error +# List is invariant, so List[str] is not a subtype of List[Union[str, pathlib.PurePath]]. +# Sequence is covariant, but because str itself is a subtype of Sequence[str], we cannot exlude it +# in the type hint. So, use an awkward union type to allow (mixed) str and PurePath items. +ListOfPaths = Union[List[str], List[pathlib.PurePath], List[Union[str, pathlib.PurePath]]] + + if sys.platform == "win32": SYSTEM_PATHS = [ "C:\\", @@ -254,14 +261,6 @@ def __init__( self, name: str, value: str, *, separator: str = os.pathsep, trace: Optional[Trace] = None ): self.name = name.upper() if sys.platform == "win32" else name - if not isinstance(value, str): - warnings.warn( - f"{self.__class__.__name__} {self.name}={value}: using a non-string value " - f"{type(value).__name__} is deprecated and will be an error in Spack v1.0", - spack.error.SpackAPIWarning, - stacklevel=4, - ) - value = str(value) self.value = value self.separator = separator self.trace = trace @@ -280,6 +279,23 @@ def execute(self, env: MutableMapping[str, str]): raise NotImplementedError("must be implemented by derived classes") +class NamePathModifier(NameValueModifier): + """Base class for modifiers that modify the value of an environment variable + that is a path.""" + + __slots__ = ("name", "value", "separator", "trace") + + def __init__( + self, + name: str, + value: Union[str, pathlib.PurePath], + *, + separator: str = os.pathsep, + trace: Optional[Trace] = None, + ): + super().__init__(name, str(value), separator=separator, trace=trace) + + class SetEnv(NameValueModifier): __slots__ = ("force", "raw") @@ -330,19 +346,21 @@ class SetPath(NameValueModifier): def __init__( self, name: str, - value: List[str], + value: ListOfPaths, *, separator: str = os.pathsep, trace: Optional[Trace] = None, ): - super().__init__(name, separator.join(value), separator=separator, trace=trace) + super().__init__( + name, separator.join(str(x) for x in value), separator=separator, trace=trace + ) def execute(self, env: MutableMapping[str, str]): tty.debug(f"SetPath: {self.name}={self.value}", level=3) env[self.name] = self.value -class AppendPath(NameValueModifier): +class AppendPath(NamePathModifier): def execute(self, env: MutableMapping[str, str]): tty.debug(f"AppendPath: {self.name}+{self.value}", level=3) environment_value = env.get(self.name, "") @@ -351,7 +369,7 @@ def execute(self, env: MutableMapping[str, str]): env[self.name] = self.separator.join(directories) -class PrependPath(NameValueModifier): +class PrependPath(NamePathModifier): def execute(self, env: MutableMapping[str, str]): tty.debug(f"PrependPath: {self.name}+{self.value}", level=3) environment_value = env.get(self.name, "") @@ -360,7 +378,7 @@ def execute(self, env: MutableMapping[str, str]): env[self.name] = self.separator.join(directories) -class RemoveFirstPath(NameValueModifier): +class RemoveFirstPath(NamePathModifier): def execute(self, env: MutableMapping[str, str]): tty.debug(f"RemoveFirstPath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") @@ -372,7 +390,7 @@ def execute(self, env: MutableMapping[str, str]): env[self.name] = self.separator.join(directories) -class RemoveLastPath(NameValueModifier): +class RemoveLastPath(NamePathModifier): def execute(self, env: MutableMapping[str, str]): tty.debug(f"RemoveLastPath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") @@ -384,7 +402,7 @@ def execute(self, env: MutableMapping[str, str]): env[self.name] = self.separator.join(directories[::-1]) -class RemovePath(NameValueModifier): +class RemovePath(NamePathModifier): def execute(self, env: MutableMapping[str, str]): tty.debug(f"RemovePath: {self.name}-{self.value}", level=3) environment_value = env.get(self.name, "") @@ -419,6 +437,36 @@ def execute(self, env: MutableMapping[str, str]): env[self.name] = self.separator.join(directories) +def _validate_path_value(name: str, value: Any) -> Union[str, pathlib.PurePath]: + """Ensure the value for an env variable is string or path""" + types = (str, pathlib.PurePath) + if isinstance(value, types): + return value + types_str = " or ".join([f"`{t.__name__}`" for t in types]) + warnings.warn( + f"when setting environment variable {name}={value}: value is of type " + f"`{type(value).__name__}`, but {types_str} was expected. This is deprecated and will be " + f"an error in Spack v1.0", + spack.error.SpackAPIWarning, + stacklevel=3, + ) + return str(value) + + +def _validate_value(name: str, value: Any) -> str: + """Ensure the value for an env variable is a string""" + if isinstance(value, str): + return value + warnings.warn( + f"when setting environment variable {name}={value}: value is of type " + f"`{type(value).__name__}`, but `str` was expected. This is deprecated and will be an " + "error in Spack v1.0", + spack.error.SpackAPIWarning, + stacklevel=3, + ) + return str(value) + + class EnvironmentModifications: """Keeps track of requests to modify the current environment.""" @@ -479,6 +527,7 @@ def set(self, name: str, value: str, *, force: bool = False, raw: bool = False) force: if True, audit will not consider this modification a warning raw: if True, format of value string is skipped """ + value = _validate_value(name, value) item = SetEnv(name, value, trace=self._trace(), force=force, raw=raw) self.env_modifications.append(item) @@ -490,6 +539,7 @@ def append_flags(self, name: str, value: str, sep: str = " ") -> None: value: flags to be appended sep: separator for the flags (default: " ") """ + value = _validate_value(name, value) item = AppendFlagsEnv(name, value, separator=sep, trace=self._trace()) self.env_modifications.append(item) @@ -510,10 +560,11 @@ def remove_flags(self, name: str, value: str, sep: str = " ") -> None: value: flags to be removed sep: separator for the flags (default: " ") """ + value = _validate_value(name, value) item = RemoveFlagsEnv(name, value, separator=sep, trace=self._trace()) self.env_modifications.append(item) - def set_path(self, name: str, elements: List[str], separator: str = os.pathsep) -> None: + def set_path(self, name: str, elements: ListOfPaths, separator: str = os.pathsep) -> None: """Stores a request to set an environment variable to a list of paths, separated by a character defined in input. @@ -522,10 +573,13 @@ def set_path(self, name: str, elements: List[str], separator: str = os.pathsep) elements: ordered list paths separator: separator for the paths (default: os.pathsep) """ + elements = [_validate_path_value(name, x) for x in elements] item = SetPath(name, elements, separator=separator, trace=self._trace()) self.env_modifications.append(item) - def append_path(self, name: str, path: str, separator: str = os.pathsep) -> None: + def append_path( + self, name: str, path: Union[str, pathlib.PurePath], separator: str = os.pathsep + ) -> None: """Stores a request to append a path to list of paths. Args: @@ -533,10 +587,13 @@ def append_path(self, name: str, path: str, separator: str = os.pathsep) -> None path: path to be appended separator: separator for the paths (default: os.pathsep) """ + path = _validate_path_value(name, path) item = AppendPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - def prepend_path(self, name: str, path: str, separator: str = os.pathsep) -> None: + def prepend_path( + self, name: str, path: Union[str, pathlib.PurePath], separator: str = os.pathsep + ) -> None: """Stores a request to prepend a path to list of paths. Args: @@ -544,10 +601,13 @@ def prepend_path(self, name: str, path: str, separator: str = os.pathsep) -> Non path: path to be prepended separator: separator for the paths (default: os.pathsep) """ + path = _validate_path_value(name, path) item = PrependPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - def remove_first_path(self, name: str, path: str, separator: str = os.pathsep) -> None: + def remove_first_path( + self, name: str, path: Union[str, pathlib.PurePath], separator: str = os.pathsep + ) -> None: """Stores a request to remove first instance of path from a list of paths. Args: @@ -555,10 +615,13 @@ def remove_first_path(self, name: str, path: str, separator: str = os.pathsep) - path: path to be removed separator: separator for the paths (default: os.pathsep) """ + path = _validate_path_value(name, path) item = RemoveFirstPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - def remove_last_path(self, name: str, path: str, separator: str = os.pathsep) -> None: + def remove_last_path( + self, name: str, path: Union[str, pathlib.PurePath], separator: str = os.pathsep + ) -> None: """Stores a request to remove last instance of path from a list of paths. Args: @@ -566,10 +629,13 @@ def remove_last_path(self, name: str, path: str, separator: str = os.pathsep) -> path: path to be removed separator: separator for the paths (default: os.pathsep) """ + path = _validate_path_value(name, path) item = RemoveLastPath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) - def remove_path(self, name: str, path: str, separator: str = os.pathsep) -> None: + def remove_path( + self, name: str, path: Union[str, pathlib.PurePath], separator: str = os.pathsep + ) -> None: """Stores a request to remove a path from a list of paths. Args: @@ -577,6 +643,7 @@ def remove_path(self, name: str, path: str, separator: str = os.pathsep) -> None path: path to be removed separator: separator for the paths (default: os.pathsep) """ + path = _validate_path_value(name, path) item = RemovePath(name, path, separator=separator, trace=self._trace()) self.env_modifications.append(item) From bc5b57dca90728ae27b77a7976ef7d9dff956b3b Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 14 Apr 2025 08:23:31 -0500 Subject: [PATCH 132/317] fmt: conflicts llvm@21: when @:11.0 (#49965) * fmt: conflicts llvm@21: when @:11.0 * Update var/spack/repos/builtin/packages/fmt/package.py Co-authored-by: Mikael Simberg --------- Co-authored-by: Mikael Simberg --- var/spack/repos/builtin/packages/fmt/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py index e962ab1c19a..c1737e406d7 100644 --- a/var/spack/repos/builtin/packages/fmt/package.py +++ b/var/spack/repos/builtin/packages/fmt/package.py @@ -79,6 +79,8 @@ class Fmt(CMakePackage): # (https://github.com/fmtlib/fmt/issues/3028) conflicts("cxxstd=17", when="@9.0.0%intel") conflicts("cxxstd=17", when="@9.0.0%nvhpc") + # clang-21 requires fmt-11.1.0 (https://github.com/fmtlib/fmt/pull/4187) + conflicts("%[virtuals=cxx] llvm@21:", when="@:11.0") # Use CMAKE_CXX_STANDARD to define C++ flag, as in later versions patch("fmt-use-cmake-cxx-standard_3.0.0.patch", when="@3.0.0") From 19f7a1bfbd2d6d53069e0852234b9780911b2767 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 14 Apr 2025 15:56:31 +0200 Subject: [PATCH 133/317] yarn: add v4.8.1 (#49898) --- var/spack/repos/builtin/packages/yarn/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/yarn/package.py b/var/spack/repos/builtin/packages/yarn/package.py index c470eadb91f..8e2a255df70 100644 --- a/var/spack/repos/builtin/packages/yarn/package.py +++ b/var/spack/repos/builtin/packages/yarn/package.py @@ -19,6 +19,7 @@ class Yarn(Package): license("BSD-2-Clause") + version("4.8.1", sha256="26eee1ff317c4a1ba40cb3c5a85bb3ca35b7feb23d4339509ce2b0fd112567e8") version("4.7.0", sha256="3e840034175d50254578c692f795cd79512869ad257f5b2269117b82c14fa0b1") version("4.6.0", sha256="c3a318af0deb9d284d7c46bf97a28f9d70b156142dcab8ec985481d5818dc651") version("1.22.22", sha256="88268464199d1611fcf73ce9c0a6c4d44c7d5363682720d8506f6508addf36a0") From 24efb565287bbe9b0f6a505b6e6aefa148cdc661 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 14 Apr 2025 16:03:15 +0200 Subject: [PATCH 134/317] fastjet: ProtoJet output compilation error (#50004) * fastjet: ProtoJet output * switch to upstream fix * spack wants .diff URLs apparently? * Delete var/spack/repos/builtin/packages/fastjet/protojet.patch * increase patch level, upper bound for patch * Update package.py --- var/spack/repos/builtin/packages/fastjet/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/fastjet/package.py b/var/spack/repos/builtin/packages/fastjet/package.py index 7de7eb0f7a3..a9c55424735 100644 --- a/var/spack/repos/builtin/packages/fastjet/package.py +++ b/var/spack/repos/builtin/packages/fastjet/package.py @@ -114,6 +114,12 @@ class Fastjet(AutotoolsPackage): when="@3.4:3.4.1 +atlas", level=0, ) + patch( + "https://gitlab.com/fastjet/fastjet/-/merge_requests/8.diff", + sha256="acc00a619c449552732935ec7a3bf8b191692bfff507cd01a0130c2b9586ba32", + level=1, + when="@2.4.0:3.4.3", + ) def configure_args(self): extra_args = [] From b4646c340c45849f2e7afb6f2792b5c4afa7d1b2 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 14 Apr 2025 10:17:18 -0400 Subject: [PATCH 135/317] dd4hep: fix inconsistent cxxstd (#50027) * dd4hep: fix doc dependencies and made doc optional * edm4hep: fix downstream build error in dd4hep * dd4hep: propagate cxxstd to fix build error with +ddg4 --- .../repos/builtin/packages/dd4hep/package.py | 49 +++++++++++++------ .../repos/builtin/packages/edm4hep/package.py | 8 +++ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/dd4hep/package.py b/var/spack/repos/builtin/packages/dd4hep/package.py index c78156c89f8..ab1845e4017 100644 --- a/var/spack/repos/builtin/packages/dd4hep/package.py +++ b/var/spack/repos/builtin/packages/dd4hep/package.py @@ -71,6 +71,7 @@ class Dd4hep(CMakePackage): variant("utilityapps", default=True, description="Build UtilityApps subpackage.") # variants for other build options + variant("doc", default=False, description="Build documentation") variant("xercesc", default=False, description="Enable 'Detector Builders' based on XercesC") variant("hepmc3", default=False, description="Enable build with hepmc3") variant( @@ -90,16 +91,30 @@ class Dd4hep(CMakePackage): " some places in addtion to the debug build type", ) + _cxxstd_values = ("14", "17", "20") + variant( + "cxxstd", + default="20", + values=_cxxstd_values, + multi=False, + description="Use the specified C++ standard when building.", + ) + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("cmake @3.12:", type="build") depends_on("cmake @3.14:", type="build", when="@1.26:") + + for _std in _cxxstd_values: + for _pkg in ["boost", "root"]: + depends_on(f"{_pkg} cxxstd={_std}", when=f"cxxstd={_std}") + depends_on("boost @1.49:") - depends_on("boost +iostreams", when="+ddg4") depends_on("boost +system +filesystem", when="%gcc@:7") depends_on("root @6.08: +gdml +math +python") depends_on("root @6.12.2: +root7", when="@1.26:") # DDCoreGraphics needs ROOT::ROOTHistDraw + with when("+ddeve"): depends_on("root @6.08: +geom +opengl +x") depends_on("root @:6.27", when="@:1.23") @@ -108,9 +123,14 @@ class Dd4hep(CMakePackage): requires("^root +root7 +webgui", when="@1.24: ^root @6.27:") depends_on("root @6.08: +gdml +geom +math +python +x +opengl", when="+utilityapps") - extends("python") + with when("+ddg4"): + depends_on("boost +iostreams") + depends_on("geant4@10.2.2:") + for _std in _cxxstd_values: + depends_on(f"geant4 cxxstd={_std}", when=f"cxxstd={_std}") + + depends_on("imagemagick", when="+doc") depends_on("xerces-c", when="+xercesc") - depends_on("geant4@10.2.2:", when="+ddg4") depends_on("assimp@5.0.2:", when="+ddcad") depends_on("hepmc3", when="+hepmc3") depends_on("hepmc3@3.2.6:", when="+hepmc3-gz") @@ -122,15 +142,21 @@ class Dd4hep(CMakePackage): depends_on("lcio", when="+lcio") depends_on("py-pytest", type=("build", "test")) with when("+edm4hep"): - depends_on("edm4hep") + # Packages with cxxstd: note they only support 17 and onward + for _std in ["17", "20"]: + for _pkg in ["edm4hep", "podio"]: + depends_on(f"{_pkg} cxxstd={_std}", when=f"cxxstd={_std}") + + # Specific version requirements depends_on("edm4hep@0.10.5:", when="@1.31:") - depends_on("podio") depends_on("podio@:0.16.03", when="@:1.23") depends_on("podio@:0", when="@:1.29") depends_on("podio@0.16:", when="@1.24:") depends_on("podio@0.16.3:", when="@1.26:") depends_on("podio@0.16.7:", when="@1.31:") + extends("python") + # See https://github.com/AIDASoft/DD4hep/pull/771 and https://github.com/AIDASoft/DD4hep/pull/876 conflicts( "^cmake@3.16:3.17.2", @@ -139,12 +165,6 @@ class Dd4hep(CMakePackage): ) conflicts("~ddrec+dddetectors", msg="Need to enable +ddrec to build +dddetectors.") - # Geant4 needs to be (at least) the same version as DD4hep, but we don't - # have a very good handle on that at this stage, because we make that - # dependent on roots cxxstd. However, cxxstd=11 will never work - # See https://github.com/AIDASoft/DD4hep/pull/1191 - conflicts("^geant4 cxxstd=11", when="+ddg4") - # See https://github.com/AIDASoft/DD4hep/issues/1210 conflicts("^root@6.31.1:", when="@:1.27") @@ -157,11 +177,8 @@ def libs(self): def cmake_args(self): spec = self.spec - cxxstd = spec["root"].variants["cxxstd"].value - # root can be built with cxxstd=11, but dd4hep requires 14 - if cxxstd == "11": - cxxstd = "14" args = [ + self.define_from_variant("BUILD_DOCS", "doc"), self.define_from_variant("DD4HEP_USE_EDM4HEP", "edm4hep"), self.define_from_variant("DD4HEP_USE_XERCESC", "xercesc"), self.define_from_variant("DD4HEP_USE_TBB", "tbb"), @@ -170,6 +187,7 @@ def cmake_args(self): self.define_from_variant("DD4HEP_USE_HEPMC3", "hepmc3"), self.define_from_variant("DD4HEP_USE_GEANT4_UNITS", "geant4units"), self.define_from_variant("DD4HEP_BUILD_DEBUG", "debug"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), # DD4hep@1.26: with hepmc3@3.2.6: allows compressed hepmc3 files self.define( "DD4HEP_HEPMC3_COMPRESSION_SUPPORT", self.spec.satisfies("@1.26: ^hepmc3@3.2.6:") @@ -178,7 +196,6 @@ def cmake_args(self): # However, with spack it is preferrable to have a proper external # dependency, so we disable it. self.define("DD4HEP_LOAD_ASSIMP", False), - self.define("CMAKE_CXX_STANDARD", cxxstd), self.define("BUILD_TESTING", self.run_tests), self.define("BOOST_ROOT", spec["boost"].prefix), self.define("Boost_NO_BOOST_CMAKE", True), diff --git a/var/spack/repos/builtin/packages/edm4hep/package.py b/var/spack/repos/builtin/packages/edm4hep/package.py index f8ccf7a4580..e7cca567dd0 100644 --- a/var/spack/repos/builtin/packages/edm4hep/package.py +++ b/var/spack/repos/builtin/packages/edm4hep/package.py @@ -93,6 +93,14 @@ class Edm4hep(CMakePackage): conflicts("%clang@:16", when="@0.99.1:", msg="Incomplete consteval support in clang") + # Fix missing nljson import + # NOTE that downstream packages (dd4hep) may fail for 0.99 and before + patch( + "https://patch-diff.githubusercontent.com/raw/key4hep/EDM4hep/pull/379.patch?full_index=1", + when="@0.99.1", + sha256="c4be2f27c7bda4d033f92fee14e48ddf59fbe606d208e8288d9bdb3dec5ad5c2", + ) + def cmake_args(self): args = [ self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), From 2cbc21d5846d7ce9b87c2c6d7f010807742bbbc1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 14 Apr 2025 16:35:03 +0200 Subject: [PATCH 136/317] Remove runtime errors for Fortran compilers (#49981) --- var/spack/repos/builtin/packages/adios/package.py | 14 -------------- var/spack/repos/builtin/packages/cmor/package.py | 6 ------ .../repos/builtin/packages/eccodes/package.py | 5 ----- .../repos/builtin/packages/flibcpp/package.py | 8 -------- .../repos/builtin/packages/fortrilinos/package.py | 8 -------- var/spack/repos/builtin/packages/h5hut/package.py | 7 ------- var/spack/repos/builtin/packages/hdf5/package.py | 6 ------ var/spack/repos/builtin/packages/msmpi/package.py | 5 ----- .../repos/builtin/packages/mvapich-plus/package.py | 8 -------- var/spack/repos/builtin/packages/ncl/package.py | 3 --- .../repos/builtin/packages/nek5000/package.py | 6 ------ .../repos/builtin/packages/nekbone/package.py | 6 ------ var/spack/repos/builtin/packages/nekcem/package.py | 6 ------ .../repos/builtin/packages/nektools/package.py | 6 ------ .../repos/builtin/packages/openblas/package.py | 14 -------------- .../repos/builtin/packages/openloops/package.py | 2 -- .../repos/builtin/packages/openmpi/package.py | 8 -------- var/spack/repos/builtin/packages/papi/package.py | 6 ------ var/spack/repos/builtin/packages/petaca/package.py | 6 ------ var/spack/repos/builtin/packages/petsc/package.py | 6 ------ var/spack/repos/builtin/packages/pnmpi/package.py | 9 --------- .../repos/builtin/packages/py-scipy/package.py | 5 ----- .../repos/builtin/packages/spherepack/package.py | 2 -- var/spack/repos/builtin/packages/wrf/package.py | 6 ------ 24 files changed, 158 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index b98876ce228..d2f788cb105 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -107,19 +107,6 @@ class Adios(AutotoolsPackage): sha256="aea47e56013b57c2d5d36e23e0ae6010541c3333a84003784437768c2e350b05", ) - def validate(self, spec): - """Checks if incompatible variants have been activated at the same time - - Args: - spec: spec of the package - - Raises: - RuntimeError: in case of inconsistencies - """ - if "+fortran" in spec and not self.compiler.fc: - msg = "cannot build a fortran variant without a fortran compiler" - raise RuntimeError(msg) - def with_or_without_hdf5(self, activated): if activated: return f"--with-phdf5={self.spec['hdf5'].prefix}" @@ -133,7 +120,6 @@ def setup_build_environment(self, env): def configure_args(self): spec = self.spec - self.validate(spec) extra_args = [ # required, otherwise building its python bindings will fail diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index 17df84b273b..5f1e5e8a274 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -48,12 +48,6 @@ class Cmor(AutotoolsPackage): depends_on("py-wheel", when="+python", type="build") depends_on("py-numpy", type=("build", "run"), when="+python") - @run_before("configure") - def validate(self): - if self.spec.satisfies("+fortran") and not self.compiler.fc: - msg = "cannot build a fortran variant without a fortran compiler" - raise RuntimeError(msg) - def configure_args(self): spec = self.spec args = ["--disable-debug"] diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index b29e5599a2b..dd883952c44 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -305,11 +305,6 @@ def libs(self): msg.format("shared" if shared else "static", self.spec.name, self.spec.prefix) ) - @run_before("cmake") - def check_fortran(self): - if "+fortran" in self.spec and self.compiler.fc is None: - raise InstallError("Fortran interface requires a Fortran compiler!") - def cmake_args(self): jp2k = self.spec.variants["jp2k"].value diff --git a/var/spack/repos/builtin/packages/flibcpp/package.py b/var/spack/repos/builtin/packages/flibcpp/package.py index 6c93e076723..3aceea0912f 100644 --- a/var/spack/repos/builtin/packages/flibcpp/package.py +++ b/var/spack/repos/builtin/packages/flibcpp/package.py @@ -42,14 +42,6 @@ class Flibcpp(CMakePackage): depends_on("swig@4.0.2-fortran", type="build", when="+swig") depends_on("py-sphinx", type="build", when="+doc") - @run_before("cmake") - def die_without_fortran(self): - # Until we can pass compiler requirements through virtual - # dependencies, explicitly check for Fortran compiler instead of - # waiting for configure error. - if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError("Flibcpp requires a Fortran compiler") - def cmake_args(self): from_variant = self.define_from_variant fstd_key = ( diff --git a/var/spack/repos/builtin/packages/fortrilinos/package.py b/var/spack/repos/builtin/packages/fortrilinos/package.py index 86b1ddcdcb1..011745525ba 100644 --- a/var/spack/repos/builtin/packages/fortrilinos/package.py +++ b/var/spack/repos/builtin/packages/fortrilinos/package.py @@ -69,14 +69,6 @@ class Fortrilinos(CMakePackage): "trilinos+amesos2+anasazi+belos+kokkos+ifpack2+muelu+nox+tpetra" "+stratimikos", when="+hl" ) - @run_before("cmake") - def die_without_fortran(self): - # Until we can pass variants such as +fortran through virtual - # dependencies, require Fortran compiler to - # avoid delayed build errors in dependents. - if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError("ForTrilinos requires a Fortran compiler") - def cmake_args(self): return [ self.define_from_variant("BUILD_SHARED_LIBS", "shared"), diff --git a/var/spack/repos/builtin/packages/h5hut/package.py b/var/spack/repos/builtin/packages/h5hut/package.py index d3214cf555d..b01f30ae64c 100644 --- a/var/spack/repos/builtin/packages/h5hut/package.py +++ b/var/spack/repos/builtin/packages/h5hut/package.py @@ -38,13 +38,6 @@ class H5hut(AutotoolsPackage): # install: .libs/libH5hut.a: No such file or directory parallel = False - @run_before("configure") - def validate(self): - """Checks if Fortran compiler is available.""" - - if self.spec.satisfies("+fortran") and not self.compiler.fc: - raise RuntimeError("Cannot build Fortran variant without a Fortran compiler.") - def flag_handler(self, name, flags): build_system_flags = [] if ( diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 4cf2cd44c51..cca72214e6a 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -516,12 +516,6 @@ def setup_run_environment(self, env): # LD_LIBRARY_PATH. env.append_path("LD_LIBRARY_PATH", self.prefix.lib) - @run_before("cmake") - def fortran_check(self): - if self.spec.satisfies("+fortran") and not self.compiler.fc: - msg = "cannot build a Fortran variant without a Fortran compiler" - raise RuntimeError(msg) - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/msmpi/package.py b/var/spack/repos/builtin/packages/msmpi/package.py index f7db4d4b48c..988b95a603f 100644 --- a/var/spack/repos/builtin/packages/msmpi/package.py +++ b/var/spack/repos/builtin/packages/msmpi/package.py @@ -68,11 +68,6 @@ def is_64bit(self): def build_command_line(self): args = ["-noLogo"] ifort_bin = self.pkg.compiler.fc - if not ifort_bin: - raise InstallError( - "Cannot install MSMPI without fortran" - "please select a compiler with fortran support." - ) args.append("/p:IFORT_BIN=%s" % os.path.dirname(ifort_bin)) args.append("/p:VCToolsVersion=%s" % self.pkg.compiler.msvc_version) args.append("/p:WindowsTargetPlatformVersion=%s" % str(self.pkg.spec["wdk"].version)) diff --git a/var/spack/repos/builtin/packages/mvapich-plus/package.py b/var/spack/repos/builtin/packages/mvapich-plus/package.py index 784a952281d..4c4b6690f2f 100644 --- a/var/spack/repos/builtin/packages/mvapich-plus/package.py +++ b/var/spack/repos/builtin/packages/mvapich-plus/package.py @@ -276,14 +276,6 @@ def setup_dependent_package(self, module, dependent_spec): os.path.join(self.prefix.lib, f"libmpi.{dso_suffix}"), ] - @run_before("configure") - def die_without_fortran(self): - # Until we can pass variants such as +fortran through virtual - # dependencies depends_on('mpi'), require Fortran compiler to - # avoid delayed build errors in dependents. - if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError("Mvapich requires both C and Fortran compilers!") - def configure_args(self): spec = self.spec args = [ diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index eb626f29150..18ea26c3a2c 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -161,9 +161,6 @@ def patch(self): ) def install(self, spec, prefix): - if (self.compiler.fc is None) or (self.compiler.cc is None): - raise InstallError("NCL package requires both " "C and Fortran compilers.") - self.prepare_site_config() self.prepare_install_config() self.prepare_src_tree() diff --git a/var/spack/repos/builtin/packages/nek5000/package.py b/var/spack/repos/builtin/packages/nek5000/package.py index 6d9c3e560ac..565efc89b57 100644 --- a/var/spack/repos/builtin/packages/nek5000/package.py +++ b/var/spack/repos/builtin/packages/nek5000/package.py @@ -48,12 +48,6 @@ class Nek5000(Package): patch("add_fjfortran.patch", when="%fj") - @run_before("install") - def fortran_check(self): - if not self.compiler.f77: - msg = "Cannot build Nek5000 without a Fortran 77 compiler." - raise RuntimeError(msg) - @run_after("install") def check_install(self): with working_dir("short_tests/eddy"): diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py index 35d75b52bea..500cec7c6fa 100644 --- a/var/spack/repos/builtin/packages/nekbone/package.py +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -35,12 +35,6 @@ class Nekbone(Package): depends_on("mpi", when="+mpi") - @run_before("install") - def fortran_check(self): - if not self.compiler.fc: - msg = "Nekbone can not be built without a Fortran compiler." - raise RuntimeError(msg) - def install(self, spec, prefix): mkdir(prefix.bin) diff --git a/var/spack/repos/builtin/packages/nekcem/package.py b/var/spack/repos/builtin/packages/nekcem/package.py index 5b50dc69195..fb9b3e5e573 100644 --- a/var/spack/repos/builtin/packages/nekcem/package.py +++ b/var/spack/repos/builtin/packages/nekcem/package.py @@ -34,12 +34,6 @@ class Nekcem(Package): depends_on("blas") depends_on("lapack") - @run_before("install") - def fortran_check(self): - if not self.compiler.fc: - msg = "NekCEM can not be built without a Fortran compiler." - raise RuntimeError(msg) - @run_after("install") def check_install(self): nekcem_test = join_path(self.prefix.bin, "NekCEM", "tests", "2dboxpec") diff --git a/var/spack/repos/builtin/packages/nektools/package.py b/var/spack/repos/builtin/packages/nektools/package.py index 1ddb0a40ca8..886b8446088 100644 --- a/var/spack/repos/builtin/packages/nektools/package.py +++ b/var/spack/repos/builtin/packages/nektools/package.py @@ -68,12 +68,6 @@ class Nektools(Package): depends_on("libxt", when="+postnek") depends_on("visit", when="+visit") - @run_before("install") - def fortran_check(self): - if not self.compiler.f77: - msg = "Cannot build Nek5000 without a Fortran 77 compiler." - raise RuntimeError(msg) - def install(self, spec, prefix): tools_dir = "tools" bin_dir = "bin" diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 52e6149fb12..7eadea25c98 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -297,20 +297,6 @@ def parallel(self): # unclear whether setting `-j N` externally was supported before 0.3 return self.spec.version >= Version("0.3.0") - @run_before("edit") - def check_compilers(self): - # As of 06/2016 there is no mechanism to specify that packages which - # depends on Blas/Lapack need C or/and Fortran symbols. For now - # require both. - # As of 08/2022 (0.3.21), we can build purely with a C compiler using - # a f2c translated LAPACK version - # https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.21 - if self.compiler.fc is None and "~fortran" not in self.spec: - raise InstallError( - self.compiler.cc - + " has no Fortran compiler added in spack. Add it or use openblas~fortran!" - ) - @property def headers(self): # The only public headers for cblas and lapacke in diff --git a/var/spack/repos/builtin/packages/openloops/package.py b/var/spack/repos/builtin/packages/openloops/package.py index da83a4e056c..7cc746bb40f 100644 --- a/var/spack/repos/builtin/packages/openloops/package.py +++ b/var/spack/repos/builtin/packages/openloops/package.py @@ -277,8 +277,6 @@ def configure(self, spec, prefix): f.write("process_lib_dir = {0}\n".format(self.spec.prefix.proclib)) f.write("cc = {0}\n".format(env["SPACK_CC"])) f.write("cxx = {0}\n".format(env["SPACK_CXX"])) - if not self.compiler.fc: - raise InstallError(f"{self.spec.compiler} has no Fortran compiler in spack!") f.write("fortran_compiler = {0}\n".format(env["SPACK_FC"])) if self.spec.satisfies("@1.3.1") and not is_intel: f.write("gfortran_f_flags = -ffree-line-length-none\n") diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index aa01dde228f..bf81f691d15 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -1013,14 +1013,6 @@ def with_or_without_tm(self, activated): return "--without-tm" return f"--with-tm={self.spec['pbs'].prefix}" - @run_before("autoreconf") - def die_without_fortran(self): - # Until we can pass variants such as +fortran through virtual - # dependencies depends_on('mpi'), require Fortran compiler to - # avoid delayed build errors in dependents. - if (self.compiler.f77 is None) and (self.compiler.fc is None): - raise InstallError("OpenMPI requires both C and Fortran compilers!") - @when("@main") def autoreconf(self, spec, prefix): perl = which("perl") diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 10f4c206788..4bac82088eb 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -177,12 +177,6 @@ def configure_args(self): return options - @run_before("configure") - def fortran_check(self): - if not self.compiler.fc: - msg = "PAPI requires a Fortran compiler to build" - raise RuntimeError(msg) - @run_before("configure") def component_configure(self): configure_script = Executable("./configure") diff --git a/var/spack/repos/builtin/packages/petaca/package.py b/var/spack/repos/builtin/packages/petaca/package.py index 3eb5fbd27e5..26cae762062 100644 --- a/var/spack/repos/builtin/packages/petaca/package.py +++ b/var/spack/repos/builtin/packages/petaca/package.py @@ -52,12 +52,6 @@ class Petaca(CMakePackage): variant("std_name", default=False, description="enables std_mod_proc_name with intel") - # copied from openmpi/package.py to ensure fortran support - @run_before("cmake") - def die_without_fortran(self): - if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError("petaca requires both C and Fortran compilers!") - def cmake_args(self): return [ self.define("ENABLE_TESTS", self.run_tests), diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 50c25999661..ed377bab791 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -314,12 +314,6 @@ class Petsc(Package, CudaPackage, ROCmPackage): filter_compiler_wrappers("petscvariables", "reconfigure*.py", relative_root="lib/petsc/conf") filter_compiler_wrappers("petsc.pc", "PETSc.pc", relative_root="lib/pkgconfig") - @run_before("configure") - def check_fortran_compiler(self): - # Raise error if +fortran and there isn't a fortran compiler! - if "+fortran" in self.spec and self.compiler.fc is None: - raise InstallError("+fortran requires a fortran compiler!") - # temporary workaround Clang 8.1.0 with XCode 8.3 on macOS, see # https://bitbucket.org/petsc/petsc/commits/4f290403fdd060d09d5cb07345cbfd52670e3cbc # the patch is an adaptation of the original commit to 3.7.5 diff --git a/var/spack/repos/builtin/packages/pnmpi/package.py b/var/spack/repos/builtin/packages/pnmpi/package.py index 9052b9a69f5..0f8d8a82360 100644 --- a/var/spack/repos/builtin/packages/pnmpi/package.py +++ b/var/spack/repos/builtin/packages/pnmpi/package.py @@ -32,15 +32,6 @@ class Pnmpi(CMakePackage): depends_on("doxygen") depends_on("mpi") - @run_before("cmake") - def check_fortran(self): - is_no_fortran_compiler = not self.compiler.f77 and not self.compiler.fc - if self.spec.satisfies("+fortran"): - if is_no_fortran_compiler: - raise InstallError( - "pnmpi+fortran requires Fortran compiler " "but no Fortran compiler found!" - ) - def cmake_args(self): args = [] spec = self.spec diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 2209dc499c1..f4e613c07e7 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -230,11 +230,6 @@ def archive_files(self): @run_before("install") def set_fortran_compiler(self): - if self.compiler.f77 is None or self.compiler.fc is None: - raise InstallError( - "py-scipy requires Fortran compilers. Configure Fortran compiler to proceed." - ) - if self.spec.satisfies("%fj"): with open("setup.cfg", "w") as f: f.write("[config_fc]\n") diff --git a/var/spack/repos/builtin/packages/spherepack/package.py b/var/spack/repos/builtin/packages/spherepack/package.py index 236b2710eda..215db4ab89b 100644 --- a/var/spack/repos/builtin/packages/spherepack/package.py +++ b/var/spack/repos/builtin/packages/spherepack/package.py @@ -18,8 +18,6 @@ class Spherepack(Package): depends_on("gmake", type="build") def install(self, spec, prefix): - if self.compiler.fc is None: - raise InstallError("SPHEREPACK requires a Fortran 90 compiler") make("MAKE=make", "F90=f90 -O2 -fallow-argument-mismatch", "AR=ar", "libspherepack") make("MAKE=make", "F90=f90 -O2 -fallow-argument-mismatch", "AR=ar", "testspherepack") install_tree("lib", prefix.lib) diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index f76c45ecb19..b6725f8f2bc 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -424,12 +424,6 @@ def do_configure_fixup(self): ) config.filter("^CC_TOOLS(.*?)=([^#\n\r]*)(.*)$", r"CC_TOOLS\1=\2 -fpermissive \3") - @run_before("configure") - def fortran_check(self): - if not self.compiler.fc: - msg = "cannot build WRF without a Fortran compiler" - raise RuntimeError(msg) - def configure(self, spec, prefix): # Remove broken default options... self.do_configure_fixup() From 4a08f5b6e4153e113e9f2873754104f0b79dee0e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 14 Apr 2025 10:11:09 -0500 Subject: [PATCH 137/317] sherpa: add variant internal_pdfs to avoid fortran (#49918) --- var/spack/repos/builtin/packages/sherpa/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index a9b536ee87d..4ee3155f4a9 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -55,6 +55,7 @@ class Sherpa(CMakePackage, AutotoolsPackage): description="Enable HepMC (version 3.1+) ROOT support", when="+root", ) + variant("internal_pdfs", default=True, description="Enables internal PDFs", when="@3:") variant("rivet", default=False, description="Enable Rivet support") variant("fastjet", default=True, when="@:2", description="Enable FASTJET") variant("openloops", default=False, description="Enable OpenLoops") @@ -81,9 +82,10 @@ class Sherpa(CMakePackage, AutotoolsPackage): # Note that the delphes integration seems utterly broken: https://sherpa.hepforge.org/trac/ticket/305 - 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="@:2") + depends_on("fortran", type="build", when="@3: +internal_pdfs") # autotools dependencies are needed at runtime to compile processes depends_on("autoconf", when="@:2") @@ -158,6 +160,7 @@ def cmake_args(self): self.define_from_variant("SHERPA_ENABLE_GZIP", "gzip"), self.define_from_variant("SHERPA_ENABLE_HEPMC3", "hepmc3"), self.define_from_variant("SHERPA_ENABLE_HEPMC3_ROOT", "hepmc3root"), + self.define_from_variant("SHERPA_ENABLE_INTERNAL_PDFS", "internal_pdfs"), self.define_from_variant("SHERPA_ENABLE_LHAPDF", "lhapdf"), self.define_from_variant("SHERPA_ENABLE_LHOLE", "lhole"), self.define_from_variant("SHERPA_ENABLE_MPI", "mpi"), From f926512cd44822789d7cd217815922c0a233cefb Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 14 Apr 2025 10:12:23 -0500 Subject: [PATCH 138/317] conmon: add v2.1.13 (#49914) --- var/spack/repos/builtin/packages/conmon/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/conmon/package.py b/var/spack/repos/builtin/packages/conmon/package.py index f06cdd7f29e..1faf878edfa 100644 --- a/var/spack/repos/builtin/packages/conmon/package.py +++ b/var/spack/repos/builtin/packages/conmon/package.py @@ -14,6 +14,7 @@ class Conmon(MakefilePackage): license("Apache-2.0") + version("2.1.13", sha256="350992cb2fe4a69c0caddcade67be20462b21b4078dae00750e8da1774926d60") version("2.1.12", sha256="842f0b5614281f7e35eec2a4e35f9f7b9834819aa58ecdad8d0ff6a84f6796a6") version("2.1.7", sha256="7d0f9a2f7cb8a76c51990128ac837aaf0cc89950b6ef9972e94417aa9cf901fe") version("2.1.5", sha256="ee3179ee2b9a9107acec00eb546062cf7deb847f135a3b81503d22b0d226b3ed") From 6dab20e8f88adec4f860ab98c3824b156f00a078 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 14 Apr 2025 10:13:21 -0500 Subject: [PATCH 139/317] py-particle: add v0.25.3 (#49907) --- var/spack/repos/builtin/packages/py-particle/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-particle/package.py b/var/spack/repos/builtin/packages/py-particle/package.py index b4b73d7e784..7bf5a2b7491 100644 --- a/var/spack/repos/builtin/packages/py-particle/package.py +++ b/var/spack/repos/builtin/packages/py-particle/package.py @@ -21,6 +21,7 @@ class PyParticle(PythonPackage): license("BSD-3-Clause") version("master", branch="master") + version("0.25.3", sha256="78cf7e56e9e2118385fbfb8908d8395e7a267ab5f0596aaafebadb08cb04452b") version("0.25.2", sha256="1fa4bbee38bfeaef08a40b2779b4c30c5ce4fa2865a10c02acfe90679b4e61e9") version("0.25.1", sha256="9706748e95a706dffd49426db393298197fe1af819721c5d2c6e515764a1fb01") version("0.25.0", sha256="8e2d5fa36555e6af218b66e97b9585b1d4f52085785d96c067736f0b2e57f5ad") From 1f77b33255972013f971fc446265d6aad5d06177 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 14 Apr 2025 22:32:59 +0200 Subject: [PATCH 140/317] covfie: add v0.13.0 (#50039) Does what it says on the tin. --- var/spack/repos/builtin/packages/covfie/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/covfie/package.py b/var/spack/repos/builtin/packages/covfie/package.py index 4147bb9ed4b..3a217dc5259 100644 --- a/var/spack/repos/builtin/packages/covfie/package.py +++ b/var/spack/repos/builtin/packages/covfie/package.py @@ -19,6 +19,7 @@ class Covfie(CMakePackage, CudaPackage): maintainers("stephenswat") + version("0.13.0", sha256="e9cd0546c7bc9539f440273bbad303c97215ccd87403cedb4aa387a313938d57") version("0.12.1", sha256="c33d7707ee30ab5fa8df686a780600343760701023ac0b23355627e1f2f044de") version("0.12.0", sha256="e35e94075a40e89c4691ff373e3061577295d583a2546c682b2d652d9fce7828") version("0.11.0", sha256="39fcd0f218d3b4f3aacc6af497a8cda8767511efae7a72b47781f10fd4340f4f") From 0bec90ecd75f686b89f114c0c711f17c3cbd0041 Mon Sep 17 00:00:00 2001 From: Sichao25 <54721834+Sichao25@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:03:39 -0400 Subject: [PATCH 141/317] zoltan: add +scotch variant (#49845) * add scotch variant to zoltan * style fix * apply satisfies func and F-strings --- var/spack/repos/builtin/packages/zoltan/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 63a2491e82d..36b9af6ce16 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -36,6 +36,7 @@ class Zoltan(AutotoolsPackage): variant("mpi", default=True, description="Enable MPI support.") variant("parmetis", default=False, description="Enable ParMETIS support.") variant("int64", default=False, description="Enable 64bit indices.") + variant("scotch", default=False, description="Enable PT-Scotch support.") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -47,6 +48,7 @@ class Zoltan(AutotoolsPackage): depends_on("parmetis@4:", when="+parmetis") depends_on("metis+int64", when="+parmetis+int64") depends_on("metis", when="+parmetis") + depends_on("scotch", when="+scotch") depends_on("perl@:5.21", type="build", when="@:3.6") depends_on("autoconf", type="build") @@ -145,6 +147,16 @@ def configure_args(self): else: config_args.append("--with-id-type=uint") + if spec.satisfies("+scotch"): + scotch_prefix = spec["scotch"].prefix + config_args.extend( + [ + "--with-scotch", + f"--with-scotch-incdir={scotch_prefix.include}", + f"--with-scotch-libdir={scotch_prefix.lib}", + ] + ) + if "+mpi" in spec: config_args.extend( [ From 6b2cd0ca45b889c38be74b3d7c38ea1000535ccf Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi <9337627+albestro@users.noreply.github.com> Date: Tue, 15 Apr 2025 11:33:18 +0200 Subject: [PATCH 142/317] bump iwyu (#50053) --- var/spack/repos/builtin/packages/iwyu/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/iwyu/package.py b/var/spack/repos/builtin/packages/iwyu/package.py index a7b246d4351..0eebef6d006 100644 --- a/var/spack/repos/builtin/packages/iwyu/package.py +++ b/var/spack/repos/builtin/packages/iwyu/package.py @@ -24,6 +24,9 @@ class Iwyu(CMakePackage): executables = ["^include-what-you-use$"] + version("0.24", sha256="a23421ceff601d3ea215e8fa9292bfa8ca39eb1ac2098dbbedfc6cfe65541c10") + version("0.23", sha256="0004d5a9169717acf2f481248a5bfc15c7d55ddc2b9cdc7f461b06e93d49c73f") + version("0.22", sha256="859074b461ea4b8325a73418c207ca33b5e6566b08e6b587eb9164416569a6dd") version("0.21", sha256="6a351919ff89bda7c95c895472601868db3daab96a958b38e0362890d58760b6") version("0.20", sha256="75fce1e6485f280f8f13f4c2d090b11d2fd2102b50857507c8413a919b7af899") version("0.19", sha256="2b10157b60ea08adc08e3896b4921c73fcadd5ec4eb652b29a34129d501e5ee0") @@ -41,6 +44,9 @@ class Iwyu(CMakePackage): patch("iwyu-013-cmake.patch", when="@0.13:0.14") + depends_on("llvm+clang@20", when="@0.24") + depends_on("llvm+clang@19", when="@0.23") + depends_on("llvm+clang@18", when="@0.22") depends_on("llvm+clang@17.0:17", when="@0.21") depends_on("llvm+clang@16.0:16", when="@0.20") depends_on("llvm+clang@15.0:15", when="@0.19") From caaf0c50f6c60971113a57bde7545ce823469046 Mon Sep 17 00:00:00 2001 From: Rocco Meli Date: Tue, 15 Apr 2025 16:00:08 +0200 Subject: [PATCH 143/317] dla-future: add v0.9.0 (#50055) --- var/spack/repos/builtin/packages/dla-future/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/dla-future/package.py b/var/spack/repos/builtin/packages/dla-future/package.py index 0d41c594362..a1894dee0a5 100644 --- a/var/spack/repos/builtin/packages/dla-future/package.py +++ b/var/spack/repos/builtin/packages/dla-future/package.py @@ -15,6 +15,7 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") + version("0.9.0", sha256="0297afb46285745413fd4536d8d7fe123e3045d4899cc91eed501bcd4b588ea6") version("0.8.0", sha256="4c30c33ee22417514d839a75d99ae4c24860078fb595ee24ce4ebf45fbce5e69") version("0.7.3", sha256="8c829b72f4ea9c924abdb6fe2ac7489304be4056ab76b8eba226c33ce7b7dc0e") version( From 336d33ecfa0286bbf6d6c805be880b35108cca86 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 15 Apr 2025 11:28:27 -0400 Subject: [PATCH 144/317] iwyu: update for best practices (#50060) --- .../repos/builtin/packages/iwyu/package.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/iwyu/package.py b/var/spack/repos/builtin/packages/iwyu/package.py index 0eebef6d006..4e432fc9145 100644 --- a/var/spack/repos/builtin/packages/iwyu/package.py +++ b/var/spack/repos/builtin/packages/iwyu/package.py @@ -10,9 +10,8 @@ class Iwyu(CMakePackage): - """include-what-you-use: A tool for use with clang to analyze #includes in - C and C++ source files - """ + """Include-what-you-use: A tool for use with clang to analyze #includes in + C and C++ source files.""" homepage = "https://include-what-you-use.org" url = "https://include-what-you-use.org/downloads/include-what-you-use-0.13.src.tar.gz" @@ -24,6 +23,8 @@ class Iwyu(CMakePackage): executables = ["^include-what-you-use$"] + sanity_check_is_file = ["bin/include-what-you-use"] + version("0.24", sha256="a23421ceff601d3ea215e8fa9292bfa8ca39eb1ac2098dbbedfc6cfe65541c10") version("0.23", sha256="0004d5a9169717acf2f481248a5bfc15c7d55ddc2b9cdc7f461b06e93d49c73f") version("0.22", sha256="859074b461ea4b8325a73418c207ca33b5e6566b08e6b587eb9164416569a6dd") @@ -39,11 +40,11 @@ class Iwyu(CMakePackage): version("0.12", sha256="a5892fb0abccb820c394e4e245c00ef30fc94e4ae58a048b23f94047c0816025") version("0.11", sha256="2d2877726c4aed9518cbb37673ffbc2b7da9c239bf8fe29432da35c1c0ec367a") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - - patch("iwyu-013-cmake.patch", when="@0.13:0.14") + # Build dependencies + depends_on("c", type="build") + depends_on("cxx", type="build") + # Required dependencies depends_on("llvm+clang@20", when="@0.24") depends_on("llvm+clang@19", when="@0.23") depends_on("llvm+clang@18", when="@0.22") @@ -62,7 +63,9 @@ class Iwyu(CMakePackage): # iwyu uses X86AsmParser so must have the x86 target on non-x86 arch _arches = set(str(x.family) for x in archspec.cpu.TARGETS.values()) for _arch in _arches - set(["x86", "x86_64"]): - depends_on("llvm targets=x86", when="arch={0}:".format(_arch)) + depends_on("llvm targets=x86", when=f"arch={_arch}:") + + patch("iwyu-013-cmake.patch", when="@0.13:0.14") @classmethod def determine_version(cls, exe): From 8d23edd1a98216898e9fa5b9d1a24ca534b55c0f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 15 Apr 2025 18:04:38 +0200 Subject: [PATCH 145/317] libpng: add v1.6.47 (#49979) * libpng: add v1.6.47 * Add conflict --- var/spack/repos/builtin/packages/libpng/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index 5e141a40b44..c1c8704bb50 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -49,6 +49,9 @@ class Libpng(CMakePackage): ) variant("pic", default=False, description="PIC") + # Tries but fails to include fp.h, removed in libpng 1.6.45 + conflicts("@:1.6.44", when="%apple-clang@17:") + @property def libs(self): # v1.2 does not have a version-less symlink From 0fa64f97912c1f2cbbc0acfce2de06431c38f534 Mon Sep 17 00:00:00 2001 From: Teague Sterling Date: Tue, 15 Apr 2025 09:37:53 -0700 Subject: [PATCH 146/317] hwdata: add v0.392 and update configure args to fix data path (#49654) * hwdata: add v0.392 and update configure args to fix data path Signed-off-by: Teague Sterling * fix styles Signed-off-by: Teague Sterling --------- Signed-off-by: Teague Sterling --- var/spack/repos/builtin/packages/hwdata/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/hwdata/package.py b/var/spack/repos/builtin/packages/hwdata/package.py index d7045662f25..90f360e7f96 100644 --- a/var/spack/repos/builtin/packages/hwdata/package.py +++ b/var/spack/repos/builtin/packages/hwdata/package.py @@ -13,5 +13,9 @@ class Hwdata(AutotoolsPackage): license("GPL-2.0-or-later OR XFree86-1.1") + version("0.392", sha256="1f472d8f2ec824d4efe6a75480767c4ce240fa5d91b6428d9f8775035da3ba1f") version("0.345", sha256="fafcc97421ba766e08a2714ccc3eebb0daabc99e67d53c2d682721dd01ccf7a7") version("0.340", sha256="e3a0ef18af6795a362345a2c2c7177be351cb27b4cc0ed9278b7409759258802") + + def configure_args(self): + return [f"--datarootdir={self.prefix.share}"] # Will default to /usr/share if not set From 069010fe138fd094e3829b253d290d4291d34861 Mon Sep 17 00:00:00 2001 From: Vicente Bolea Date: Tue, 15 Apr 2025 13:40:52 -0400 Subject: [PATCH 147/317] vtk-m: update to latest release (#49867) * vtk-m: add v2.3.0 version * Update package.py * Update var/spack/repos/builtin/packages/vtk-m/package.py Co-authored-by: Kenneth Moreland --------- Co-authored-by: Kenneth Moreland --- var/spack/repos/builtin/packages/vtk-m/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index 4067d6889a6..f9e9f542521 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -30,10 +30,11 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version("release", branch="release") version( - "2.2.0", - sha256="f40d6b39ca1bcecd232571c92ce606627811909f4e21972d1823e605f686bcf5", + "2.3.0", + sha256="d105ee2de5cfa600f1b4b3d2061f97bebd581a0ae1c86c6174af4e8128f83c54", preferred=True, ) + version("2.2.0", sha256="f40d6b39ca1bcecd232571c92ce606627811909f4e21972d1823e605f686bcf5") version("2.1.0", sha256="7b224f1f91e5ef140e193338bf091133b1e9f40d323bccdc8bb80bfc2675e6ea") version("2.0.0", sha256="21c8b2cb8f3d4116a4f90c1d08c9f5e27b25c7a0951f7b403eced94576f84880") version("1.9.0", sha256="f9862d9d24deae32063ba1ea3d9a42900ac0cdd7f98412d960249a7cac35d47f") @@ -165,7 +166,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): # VTK-M PR#3258 # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3258 - patch("mr3258-fix-typo-thrust-dependency-with-rocm.patch", when="@2.2:") + patch("mr3258-fix-typo-thrust-dependency-with-rocm.patch", when="@2.2.0") # VTK-M PR#3259 # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3259 From 4f27ef8157d1d39f257e3b8dcea634589f985ed8 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 15 Apr 2025 15:00:39 -0400 Subject: [PATCH 148/317] conmon: update for best practices (#50058) --- .../repos/builtin/packages/conmon/package.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/conmon/package.py b/var/spack/repos/builtin/packages/conmon/package.py index 1faf878edfa..e8b80cda0c5 100644 --- a/var/spack/repos/builtin/packages/conmon/package.py +++ b/var/spack/repos/builtin/packages/conmon/package.py @@ -6,27 +6,32 @@ class Conmon(MakefilePackage): - """An OCI container runtime monitor""" + """An OCI container runtime monitor that tracks and logs container lifecycle events.""" homepage = "https://github.com/containers/conmon" url = "https://github.com/containers/conmon/archive/v2.0.30.tar.gz" + git = "https://github.com/containers/conmon.git" + maintainers("bernhardkaindl") license("Apache-2.0") + sanity_check_is_file = ["bin/conmon"] + + version("main", branch="main") version("2.1.13", sha256="350992cb2fe4a69c0caddcade67be20462b21b4078dae00750e8da1774926d60") version("2.1.12", sha256="842f0b5614281f7e35eec2a4e35f9f7b9834819aa58ecdad8d0ff6a84f6796a6") version("2.1.7", sha256="7d0f9a2f7cb8a76c51990128ac837aaf0cc89950b6ef9972e94417aa9cf901fe") version("2.1.5", sha256="ee3179ee2b9a9107acec00eb546062cf7deb847f135a3b81503d22b0d226b3ed") version("2.0.30", sha256="4b0a98fbe8a63c42f60edac25c19aa6606caa7b1e4fe7846fc7f7de0b566ba25") - depends_on("c", type="build") # generated - + depends_on("c", type="build") depends_on("go", type="build") depends_on("go-md2man", type="build") depends_on("pkgconfig", type="build") - depends_on("libseccomp") + depends_on("glib") + depends_on("libseccomp") def install(self, spec, prefix): - make("install", "PREFIX=" + prefix) + make("install", f"PREFIX={prefix}") From 4a7508c9dfb470ed323f5521184eb558f48e8693 Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:44:25 -0400 Subject: [PATCH 149/317] Update make/nmake invocations (mostly Windows) (#49022) The second change technically affects non-Windows, but the behavior should be exactly the same: * Packages no longer have access to `.msbuild` and `.nmake` automatically; they now get them via a dependency on `msvc`. * Update two CMake-based packages that call `make test` to instead call `ctest` (`netcdf-cxx4` and `pegtl`). CMake-based packages should do this because on Windows `make test` will not generally work, but `ctest` does. * Fix `openssl` "make test" on Windows (WRT prior point: not a CMake-based package). --- lib/spack/spack/build_environment.py | 8 +++----- lib/spack/spack/package.py | 1 + var/spack/repos/builtin/packages/bzip2/package.py | 1 - var/spack/repos/builtin/packages/msvc/package.py | 7 +++++++ var/spack/repos/builtin/packages/netcdf-cxx4/package.py | 2 +- var/spack/repos/builtin/packages/openssl/package.py | 6 ++++-- var/spack/repos/builtin/packages/pegtl/package.py | 2 +- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index a8857aecea9..36f74349c96 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -574,12 +574,10 @@ def set_package_py_globals(pkg, context: Context = Context.BUILD): module.make = DeprecatedExecutable(pkg.name, "make", "gmake") module.gmake = DeprecatedExecutable(pkg.name, "gmake", "gmake") module.ninja = DeprecatedExecutable(pkg.name, "ninja", "ninja") - # TODO: johnwparent: add package or builder support to define these build tools - # for now there is no entrypoint for builders to define these on their - # own + if sys.platform == "win32": - module.nmake = Executable("nmake") - module.msbuild = Executable("msbuild") + module.nmake = DeprecatedExecutable(pkg.name, "nmake", "msvc") + module.msbuild = DeprecatedExecutable(pkg.name, "msbuild", "msvc") # analog to configure for win32 module.cscript = Executable("cscript") diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bf2056d826d..c3846e5349d 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -162,6 +162,7 @@ class tty: configure: Executable make_jobs: int make: MakeExecutable +nmake: Executable ninja: MakeExecutable python_include: str python_platlib: str diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index 5f0ad51cd8e..6ce731ed257 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -131,7 +131,6 @@ def install(self, spec, prefix): # Build the static library and everything else if self.spec.satisfies("platform=windows"): # Build step - nmake = Executable("nmake.exe") nmake("-f", "makefile.msc") # Install step mkdirp(self.prefix.include) diff --git a/var/spack/repos/builtin/packages/msvc/package.py b/var/spack/repos/builtin/packages/msvc/package.py index ddab1972b9f..7140b321698 100644 --- a/var/spack/repos/builtin/packages/msvc/package.py +++ b/var/spack/repos/builtin/packages/msvc/package.py @@ -90,6 +90,13 @@ def determine_variants(cls, exes, version_str): extras["compilers"]["fortran"] = fortran_compiler return spec, extras + def setup_dependent_package(self, module, dependent_spec): + """Populates dependent module with tooling available from VS""" + # We want these to resolve to the paths set by MSVC's VCVARs + # so no paths + module.nmake = Executable("nmake") + module.msbuild = Executable("msbuild") + def setup_dependent_build_environment(self, env, dependent_spec): self.init_msvc() # Set the build environment variables for spack. Just using diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index 71b87db3c8c..4727f237714 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -95,4 +95,4 @@ def cmake_args(self): def check(self): with working_dir(self.build_directory): - make("test", parallel=False) + ctest() diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index d100f97aaf0..5fcb45f1c68 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -189,18 +189,20 @@ def install(self, spec, prefix): if spec.satisfies("platform=windows"): host_make = nmake + make_args = {} else: host_make = make + make_args = {"parallel": False} host_make() if self.run_tests: - host_make("test", parallel=False) # 'VERBOSE=1' + host_make("test", **make_args) # 'VERBOSE=1' install_tgt = "install" if self.spec.satisfies("+docs") else "install_sw" # See https://github.com/openssl/openssl/issues/7466#issuecomment-432148137 - host_make(install_tgt, parallel=False) + host_make(install_tgt, **make_args) @run_after("install") def link_system_certs(self): diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py index e7829b97764..77239fdac1e 100644 --- a/var/spack/repos/builtin/packages/pegtl/package.py +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -49,4 +49,4 @@ def cmake_args(self): @on_package_attributes(run_tests=True) def check(self): with working_dir(self.build_directory): - make("test", parallel=False) + ctest() From 4b2a96fe06b8cb327115b1faaec4e6ad8052b39e Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 15 Apr 2025 17:08:39 -0400 Subject: [PATCH 150/317] Improve our README to make it easier for new users (#49711) --- README.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index feff4b31053..c701cb12b72 100644 --- a/README.md +++ b/README.md @@ -46,18 +46,42 @@ See the [Feature Overview](https://spack.readthedocs.io/en/latest/features.html) for examples and highlights. -To install spack and your first package, make sure you have Python & Git. +Installation +---------------- + +To install spack, first make sure you have Python & Git. Then: - $ git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git - $ cd spack/bin - $ ./spack install zlib +```bash +git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git +``` + +
+What are manyFiles=true and --depth=2? +
-> [!TIP] > `-c feature.manyFiles=true` improves git's performance on repositories with 1,000+ files. > > `--depth=2` prunes the git history to reduce the size of the Spack installation. +
+ +```bash +# For bash/zsh/sh +. spack/share/spack/setup-env.sh + +# For tcsh/csh +source spack/share/spack/setup-env.csh + +# For fish +. spack/share/spack/setup-env.fish +``` + +```bash +# Now you're ready to install a package! +spack install zlib-ng +``` + Documentation ---------------- From 1d70dc8292b933ece21ca8a29d0bdc700f2459c8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 16 Apr 2025 14:41:53 +0900 Subject: [PATCH 151/317] Remove Prolog so that GitHub detects Answer Set Programming (#50077) This reverts a change made in #20639 to have GitHub recognize our ASP files as Prolog, the closest langauge supported by [Linguist](https://github.com/github-linguist/linguist) at the time. Linguist has since [added support for ASP](https://github.com/github-linguist/linguist/pull/7184), so we no longer need to force Prolog detection -- our `.lp` files should be auto-detected as ASP. Signed-off-by: Todd Gamblin --- .gitattributes | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index 6dee4b041c5..de5b2ca45dd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,3 @@ *.py diff=python -*.lp linguist-language=Prolog lib/spack/external/* linguist-vendored -*.bat text eol=crlf \ No newline at end of file +*.bat text eol=crlf From dbd3895cbf4ddfc939f87961ca20c325b9f90c05 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 16 Apr 2025 09:15:13 +0200 Subject: [PATCH 152/317] version_types.py: Version -> Union[StandardVersion, GitVersion] (#50061) --- lib/spack/spack/database.py | 12 ++++++------ lib/spack/spack/version/version_types.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 60b7068e37c..bedf46b9e65 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -149,12 +149,12 @@ def _getfqdn(): return socket.getfqdn() -def reader(version: vn.ConcreteVersion) -> Type["spack.spec.SpecfileReaderBase"]: +def reader(version: vn.StandardVersion) -> Type["spack.spec.SpecfileReaderBase"]: reader_cls = { - vn.Version("5"): spack.spec.SpecfileV1, - vn.Version("6"): spack.spec.SpecfileV3, - vn.Version("7"): spack.spec.SpecfileV4, - vn.Version("8"): spack.spec.SpecfileV5, + vn.StandardVersion.from_string("5"): spack.spec.SpecfileV1, + vn.StandardVersion.from_string("6"): spack.spec.SpecfileV3, + vn.StandardVersion.from_string("7"): spack.spec.SpecfileV4, + vn.StandardVersion.from_string("8"): spack.spec.SpecfileV5, } return reader_cls[version] @@ -824,7 +824,7 @@ def check(cond, msg): db = fdata["database"] check("version" in db, "no 'version' in JSON DB.") - self.db_version = vn.Version(db["version"]) + self.db_version = vn.StandardVersion.from_string(db["version"]) if self.db_version > _DB_VERSION: raise InvalidDatabaseVersionError(self, _DB_VERSION, self.db_version) elif self.db_version < _DB_VERSION: diff --git a/lib/spack/spack/version/version_types.py b/lib/spack/spack/version/version_types.py index 6728d23e3e3..33810059e49 100644 --- a/lib/spack/spack/version/version_types.py +++ b/lib/spack/spack/version/version_types.py @@ -1257,7 +1257,7 @@ def _prev_version(v: StandardVersion) -> StandardVersion: return StandardVersion("", (release, prerelease), separators) -def Version(string: Union[str, int]) -> ConcreteVersion: +def Version(string: Union[str, int]) -> Union[StandardVersion, GitVersion]: if not isinstance(string, (str, int)): raise TypeError(f"Cannot construct a version from {type(string)}") string = str(string) From 8ac53985762bf18686b80df07852d0ac5c71f418 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Wed, 16 Apr 2025 00:29:20 -0700 Subject: [PATCH 153/317] ci: add gawk (#50074) --- .github/workflows/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index dae7034193b..7a2759033f3 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -26,7 +26,7 @@ jobs: dnf install -y \ bzip2 curl file gcc-c++ gcc gcc-gfortran git gzip \ make patch unzip which xz python3 python3-devel tree \ - cmake bison bison-devel libstdc++-static + cmake bison bison-devel libstdc++-static gawk - name: Setup OpenSUSE if: ${{ matrix.image == 'opensuse/leap:latest' }} run: | From 1dc9bac7452af5ecf79049a3192b7abe4f49b11c Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 16 Apr 2025 09:40:14 +0200 Subject: [PATCH 154/317] detection/common.py: catch is_file() inside loop (#50042) --- lib/spack/spack/detection/common.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/spack/spack/detection/common.py b/lib/spack/spack/detection/common.py index b908dd24f57..2e0cf645925 100644 --- a/lib/spack/spack/detection/common.py +++ b/lib/spack/spack/detection/common.py @@ -20,7 +20,7 @@ import sys from typing import Dict, List, Optional, Set, Tuple, Union -import llnl.util.tty +from llnl.util import tty import spack.config import spack.error @@ -93,14 +93,13 @@ def _spec_is_valid(spec: spack.spec.Spec) -> bool: except spack.error.SpackError: # It is assumed here that we can at least extract the package name from the spec so we # can look up the implementation of determine_spec_details - msg = f"Constructed spec for {spec.name} does not have a string representation" - llnl.util.tty.warn(msg) + tty.warn(f"Constructed spec for {spec.name} does not have a string representation") return False try: spack.spec.Spec(str(spec)) except spack.error.SpackError: - llnl.util.tty.warn( + tty.warn( "Constructed spec has a string representation but the string" " representation does not evaluate to a valid spec: {0}".format(str(spec)) ) @@ -109,20 +108,24 @@ def _spec_is_valid(spec: spack.spec.Spec) -> bool: return True -def path_to_dict(search_paths: List[str]): +def path_to_dict(search_paths: List[str]) -> Dict[str, str]: """Return dictionary[fullpath]: basename from list of paths""" - path_to_lib = {} + path_to_lib: Dict[str, str] = {} # Reverse order of search directories so that a lib in the first # entry overrides later entries for search_path in reversed(search_paths): try: - with os.scandir(search_path) as entries: - path_to_lib.update( - {entry.path: entry.name for entry in entries if entry.is_file()} - ) + dir_iter = os.scandir(search_path) except OSError as e: - msg = f"cannot scan '{search_path}' for external software: {str(e)}" - llnl.util.tty.debug(msg) + tty.debug(f"cannot scan '{search_path}' for external software: {e}") + continue + with dir_iter as entries: + for entry in entries: + try: + if entry.is_file(): + path_to_lib[entry.path] = entry.name + except OSError as e: + tty.debug(f"cannot scan '{search_path}' for external software: {e}") return path_to_lib From 883bbf38263eee22c0cc96202ee0d8410d1553fa Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 16 Apr 2025 09:44:38 +0200 Subject: [PATCH 155/317] variants: fix narrowing multi -> single -> bool (#49880) * `x=*` constrained by `+x` now produces a boolean valued variant instead of a multi-valued variant. * Values are now always stored as a tuple internally, whether bool, single or multi-valued. * Value assignment has a stricter api to prevent ambiguity / type issues related to `variant.value = "x"` / `variant.value = ["x"]` / `variant.value = ("x",)`. It's now `variant.set("x", ...)` for single and multi-valued variants. * The `_original_value` prop is dropped, since it was unused. * The wildcard `*` is no longer a possible variant value in any type of variant, since the *parser* deals with it and creates a variant with no values. --- lib/spack/spack/solver/asp.py | 28 +- lib/spack/spack/spec.py | 28 +- lib/spack/spack/spec_parser.py | 4 +- lib/spack/spack/test/spec_semantics.py | 11 +- lib/spack/spack/test/variant.py | 206 ++++++-------- lib/spack/spack/variant.py | 375 +++++++++++-------------- 6 files changed, 293 insertions(+), 359 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 0c03e0b47e3..01d897c82e4 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -1755,15 +1755,17 @@ def define_variant( pkg_fact(fn.variant_condition(name, vid, cond_id)) # record type so we can construct the variant when we read it back in - self.gen.fact(fn.variant_type(vid, variant_def.variant_type.value)) + self.gen.fact(fn.variant_type(vid, variant_def.variant_type.string)) if variant_def.sticky: pkg_fact(fn.variant_sticky(vid)) # define defaults for this variant definition - defaults = variant_def.make_default().value if variant_def.multi else [variant_def.default] - for val in sorted(defaults): - pkg_fact(fn.variant_default_value_from_package_py(vid, val)) + if variant_def.multi: + for val in sorted(variant_def.make_default().values): + pkg_fact(fn.variant_default_value_from_package_py(vid, val)) + else: + pkg_fact(fn.variant_default_value_from_package_py(vid, variant_def.default)) # define possible values for this variant definition values = variant_def.values @@ -1791,7 +1793,9 @@ def define_variant( # make a spec indicating whether the variant has this conditional value variant_has_value = spack.spec.Spec() - variant_has_value.variants[name] = vt.VariantBase(name, value.value) + variant_has_value.variants[name] = vt.VariantValue( + vt.VariantType.MULTI, name, (value.value,) + ) if value.when: # the conditional value is always "possible", but it imposes its when condition as @@ -2373,7 +2377,7 @@ def preferred_variants(self, pkg_name): ) continue - for value in variant.value_as_tuple: + for value in variant.values: for variant_def in variant_defs: self.variant_values_from_specs.add((pkg_name, id(variant_def), value)) self.gen.fact( @@ -2491,7 +2495,7 @@ def _spec_clauses( if variant.value == ("*",): continue - for value in variant.value_as_tuple: + for value in variant.values: # ensure that the value *can* be valid for the spec if spec.name and not spec.concrete and not spack.repo.PATH.is_virtual(spec.name): variant_defs = vt.prevalidate_variant_value( @@ -3828,13 +3832,13 @@ def node_os(self, node, os): def node_target(self, node, target): self._arch(node).target = target - def variant_selected(self, node, name, value, variant_type, variant_id): + def variant_selected(self, node, name: str, value: str, variant_type: str, variant_id): spec = self._specs[node] variant = spec.variants.get(name) if not variant: - spec.variants[name] = vt.VariantType(variant_type).variant_class(name, value) + spec.variants[name] = vt.VariantValue.from_concretizer(name, value, variant_type) else: - assert variant_type == vt.VariantType.MULTI.value, ( + assert variant_type == "multi", ( f"Can't have multiple values for single-valued variant: " f"{node}, {name}, {value}, {variant_type}, {variant_id}" ) @@ -4213,10 +4217,10 @@ def _inject_patches_variant(root: spack.spec.Spec) -> None: continue patches = list(spec_to_patches[id(spec)]) - variant: vt.MultiValuedVariant = spec.variants.setdefault( + variant: vt.VariantValue = spec.variants.setdefault( "patches", vt.MultiValuedVariant("patches", ()) ) - variant.value = tuple(p.sha256 for p in patches) + variant.set(*(p.sha256 for p in patches)) # FIXME: Monkey patches variant to store patches order ordered_hashes = [(*p.ordering_key, p.sha256) for p in patches if p.ordering_key] ordered_hashes.sort() diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index d67e1517630..06c42a8e2fc 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1698,7 +1698,9 @@ def _dependencies_dict(self, depflag: dt.DepFlag = dt.ALL): result[key] = list(group) return result - def _add_flag(self, name: str, value: str, propagate: bool, concrete: bool) -> None: + def _add_flag( + self, name: str, value: Union[str, bool], propagate: bool, concrete: bool + ) -> None: """Called by the parser to add a known flag""" if propagate and name in vt.RESERVED_NAMES: @@ -1708,6 +1710,7 @@ def _add_flag(self, name: str, value: str, propagate: bool, concrete: bool) -> N valid_flags = FlagMap.valid_compiler_flags() if name == "arch" or name == "architecture": + assert type(value) is str, "architecture have a string value" parts = tuple(value.split("-")) plat, os, tgt = parts if len(parts) == 3 else (None, None, value) self._set_architecture(platform=plat, os=os, target=tgt) @@ -1721,17 +1724,15 @@ def _add_flag(self, name: str, value: str, propagate: bool, concrete: bool) -> N self.namespace = value elif name in valid_flags: assert self.compiler_flags is not None + assert type(value) is str, f"{name} must have a string value" flags_and_propagation = spack.compilers.flags.tokenize_flags(value, propagate) flag_group = " ".join(x for (x, y) in flags_and_propagation) for flag, propagation in flags_and_propagation: self.compiler_flags.add_flag(name, flag, propagation, flag_group) else: - if str(value).upper() == "TRUE" or str(value).upper() == "FALSE": - self.variants[name] = vt.BoolValuedVariant(name, value, propagate) - elif concrete: - self.variants[name] = vt.MultiValuedVariant(name, value, propagate) - else: - self.variants[name] = vt.VariantBase(name, value, propagate) + self.variants[name] = vt.VariantValue.from_string_or_bool( + name, value, propagate=propagate, concrete=concrete + ) def _set_architecture(self, **kwargs): """Called by the parser to set the architecture.""" @@ -4481,7 +4482,7 @@ def __init__(self, spec: Spec): def __setitem__(self, name, vspec): # Raise a TypeError if vspec is not of the right type - if not isinstance(vspec, vt.VariantBase): + if not isinstance(vspec, vt.VariantValue): raise TypeError( "VariantMap accepts only values of variant types " f"[got {type(vspec).__name__} instead]" @@ -4621,7 +4622,7 @@ def __str__(self): bool_keys = [] kv_keys = [] for key in sorted_keys: - if isinstance(self[key].value, bool): + if self[key].type == vt.VariantType.BOOL: bool_keys.append(key) else: kv_keys.append(key) @@ -4654,7 +4655,8 @@ def substitute_abstract_variants(spec: Spec): unknown = [] for name, v in spec.variants.items(): if name == "dev_path": - spec.variants.substitute(vt.SingleValuedVariant(name, v._original_value)) + v.type = vt.VariantType.SINGLE + v.concrete = True continue elif name in vt.RESERVED_NAMES: continue @@ -4677,7 +4679,7 @@ def substitute_abstract_variants(spec: Spec): if rest: continue - new_variant = pkg_variant.make_variant(v._original_value) + new_variant = pkg_variant.make_variant(*v.values) pkg_variant.validate_or_raise(new_variant, spec.name) spec.variants.substitute(new_variant) @@ -4803,7 +4805,7 @@ def from_node_dict(cls, node): for val in values: spec.compiler_flags.add_flag(name, val, propagate) else: - spec.variants[name] = vt.MultiValuedVariant.from_node_dict( + spec.variants[name] = vt.VariantValue.from_node_dict( name, values, propagate=propagate, abstract=name in abstract_variants ) @@ -4829,7 +4831,7 @@ def from_node_dict(cls, node): patches = node["patches"] if len(patches) > 0: mvar = spec.variants.setdefault("patches", vt.MultiValuedVariant("patches", ())) - mvar.value = patches + mvar.set(*patches) # FIXME: Monkey patches mvar to store patches order mvar._patches_in_order_of_appearance = patches diff --git a/lib/spack/spack/spec_parser.py b/lib/spack/spack/spec_parser.py index 1d89cd93888..f6392c33808 100644 --- a/lib/spack/spack/spec_parser.py +++ b/lib/spack/spack/spec_parser.py @@ -62,7 +62,7 @@ import sys import traceback import warnings -from typing import Iterator, List, Optional, Tuple +from typing import Iterator, List, Optional, Tuple, Union from llnl.util.tty import color @@ -369,7 +369,7 @@ def raise_parsing_error(string: str, cause: Optional[Exception] = None): """Raise a spec parsing error with token context.""" raise SpecParsingError(string, self.ctx.current_token, self.literal_str) from cause - def add_flag(name: str, value: str, propagate: bool, concrete: bool): + def add_flag(name: str, value: Union[str, bool], propagate: bool, concrete: bool): """Wrapper around ``Spec._add_flag()`` that adds parser context to errors raised.""" try: initial_spec._add_flag(name, value, propagate, concrete) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 9232fcb0292..02673ffab68 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -973,13 +973,10 @@ def test_spec_formatting_bad_formats(self, default_mock_concretization, fmt_str) with pytest.raises(SpecFormatStringError): spec.format(fmt_str) - def test_combination_of_wildcard_or_none(self): - # Test that using 'none' and another value raises - with pytest.raises(spack.spec_parser.SpecParsingError, match="cannot be combined"): - Spec("multivalue-variant foo=none,bar") - - # Test that using wildcard and another value raises - with pytest.raises(spack.spec_parser.SpecParsingError, match="cannot be combined"): + def test_wildcard_is_invalid_variant_value(self): + """The spec string x=* is parsed as a multi-valued variant with values the empty set. + That excludes * as a literal variant value.""" + with pytest.raises(spack.spec_parser.SpecParsingError, match="cannot use reserved value"): Spec("multivalue-variant foo=*,bar") def test_errors_in_variant_directive(self): diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index edf9af681fb..d32bb35fb33 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -21,7 +21,7 @@ SingleValuedVariant, UnsatisfiableVariantSpecError, Variant, - VariantBase, + VariantValue, disjoint_sets, ) @@ -29,53 +29,37 @@ class TestMultiValuedVariant: def test_initialization(self): # Basic properties - a = MultiValuedVariant("foo", "bar,baz") - assert repr(a) == "MultiValuedVariant('foo', 'bar,baz')" + a = MultiValuedVariant("foo", ("bar", "baz")) assert str(a) == "foo:=bar,baz" + assert a.values == ("bar", "baz") assert a.value == ("bar", "baz") assert "bar" in a assert "baz" in a - assert eval(repr(a)) == a - - # Spaces are trimmed - b = MultiValuedVariant("foo", "bar, baz") - assert repr(b) == "MultiValuedVariant('foo', 'bar, baz')" - assert str(b) == "foo:=bar,baz" - assert b.value == ("bar", "baz") - assert "bar" in b - assert "baz" in b - assert a == b - assert hash(a) == hash(b) - assert eval(repr(b)) == a # Order is not important - c = MultiValuedVariant("foo", "baz, bar") - assert repr(c) == "MultiValuedVariant('foo', 'baz, bar')" + c = MultiValuedVariant("foo", ("baz", "bar")) assert str(c) == "foo:=bar,baz" - assert c.value == ("bar", "baz") + assert c.values == ("bar", "baz") assert "bar" in c assert "baz" in c assert a == c assert hash(a) == hash(c) - assert eval(repr(c)) == a # Check the copy d = a.copy() - assert repr(a) == repr(d) assert str(a) == str(d) - assert d.value == ("bar", "baz") + assert d.values == ("bar", "baz") assert "bar" in d assert "baz" in d assert a == d assert a is not d assert hash(a) == hash(d) - assert eval(repr(d)) == a def test_satisfies(self): - a = MultiValuedVariant("foo", "bar,baz") - b = MultiValuedVariant("foo", "bar") - c = MultiValuedVariant("fee", "bar,baz") - d = MultiValuedVariant("foo", "True") + a = MultiValuedVariant("foo", ("bar", "baz")) + b = MultiValuedVariant("foo", ("bar",)) + c = MultiValuedVariant("fee", ("bar", "baz")) + d = MultiValuedVariant("foo", (True,)) # concrete, different values do not satisfy each other assert not a.satisfies(b) and not b.satisfies(a) @@ -85,21 +69,19 @@ def test_satisfies(self): # eachother b_sv = SingleValuedVariant("foo", "bar") assert b.satisfies(b_sv) and b_sv.satisfies(b) - d_sv = SingleValuedVariant("foo", "True") + d_sv = SingleValuedVariant("foo", True) assert d.satisfies(d_sv) and d_sv.satisfies(d) - almost_d_bv = SingleValuedVariant("foo", "true") - assert not d.satisfies(almost_d_bv) + almost_d_bv = SingleValuedVariant("foo", True) + assert d.satisfies(almost_d_bv) - # BoolValuedVariant actually stores the value as a boolean, whereas with MV and SV the - # value is string "True". - d_bv = BoolValuedVariant("foo", "True") - assert not d.satisfies(d_bv) and not d_bv.satisfies(d) + d_bv = BoolValuedVariant("foo", True) + assert d.satisfies(d_bv) and d_bv.satisfies(d) def test_intersects(self): - a = MultiValuedVariant("foo", "bar,baz") - b = MultiValuedVariant("foo", "True") - c = MultiValuedVariant("fee", "bar,baz") - d = MultiValuedVariant("foo", "bar,barbaz") + a = MultiValuedVariant("foo", ("bar", "baz")) + b = MultiValuedVariant("foo", (True,)) + c = MultiValuedVariant("fee", ("bar", "baz")) + d = MultiValuedVariant("foo", ("bar", "barbaz")) # concrete, different values do not intersect. assert not a.intersects(b) and not b.intersects(a) @@ -110,47 +92,45 @@ def test_intersects(self): assert not c.intersects(d) and not d.intersects(c) # SV and MV intersect if they have the same concrete value. - b_sv = SingleValuedVariant("foo", "True") + b_sv = SingleValuedVariant("foo", True) assert b.intersects(b_sv) assert not c.intersects(b_sv) - # BoolValuedVariant stores a bool, which is not the same as the string "True" in MV. - b_bv = BoolValuedVariant("foo", "True") - assert not b.intersects(b_bv) + # BoolValuedVariant intersects if the value is the same + b_bv = BoolValuedVariant("foo", True) + assert b.intersects(b_bv) assert not c.intersects(b_bv) def test_constrain(self): # Concrete values cannot be constrained - a = MultiValuedVariant("foo", "bar,baz") - b = MultiValuedVariant("foo", "bar") + a = MultiValuedVariant("foo", ("bar", "baz")) + b = MultiValuedVariant("foo", ("bar",)) with pytest.raises(UnsatisfiableVariantSpecError): a.constrain(b) with pytest.raises(UnsatisfiableVariantSpecError): b.constrain(a) # Try to constrain on the same value - a = MultiValuedVariant("foo", "bar,baz") + a = MultiValuedVariant("foo", ("bar", "baz")) b = a.copy() assert not a.constrain(b) - assert a == b == MultiValuedVariant("foo", "bar,baz") + assert a == b == MultiValuedVariant("foo", ("bar", "baz")) # Try to constrain on a different name - a = MultiValuedVariant("foo", "bar,baz") - b = MultiValuedVariant("fee", "bar") + a = MultiValuedVariant("foo", ("bar", "baz")) + b = MultiValuedVariant("fee", ("bar",)) with pytest.raises(UnsatisfiableVariantSpecError): a.constrain(b) def test_yaml_entry(self): - a = MultiValuedVariant("foo", "bar,baz,barbaz") - b = MultiValuedVariant("foo", "bar, baz, barbaz") - expected = ("foo", sorted(["bar", "baz", "barbaz"])) + a = MultiValuedVariant("foo", ("bar", "baz", "barbaz")) + expected = ("foo", sorted(("bar", "baz", "barbaz"))) assert a.yaml_entry() == expected - assert b.yaml_entry() == expected - a = MultiValuedVariant("foo", "bar") + a = MultiValuedVariant("foo", ("bar",)) expected = ("foo", sorted(["bar"])) assert a.yaml_entry() == expected @@ -160,26 +140,20 @@ class TestSingleValuedVariant: def test_initialization(self): # Basic properties a = SingleValuedVariant("foo", "bar") - assert repr(a) == "SingleValuedVariant('foo', 'bar')" assert str(a) == "foo=bar" + assert a.values == ("bar",) assert a.value == "bar" assert "bar" in a - assert eval(repr(a)) == a - - # Raise if multiple values are passed - with pytest.raises(ValueError): - SingleValuedVariant("foo", "bar, baz") # Check the copy b = a.copy() - assert repr(a) == repr(b) assert str(a) == str(b) + assert b.values == ("bar",) assert b.value == "bar" assert "bar" in b assert a == b assert a is not b assert hash(a) == hash(b) - assert eval(repr(b)) == a def test_satisfies(self): a = SingleValuedVariant("foo", "bar") @@ -247,54 +221,37 @@ def test_yaml_entry(self): class TestBoolValuedVariant: def test_initialization(self): # Basic properties - True value - for v in (True, "True", "TRUE", "TrUe"): - a = BoolValuedVariant("foo", v) - assert repr(a) == "BoolValuedVariant('foo', {0})".format(repr(v)) - assert str(a) == "+foo" - assert a.value is True - assert True in a - assert eval(repr(a)) == a + a = BoolValuedVariant("foo", True) + assert str(a) == "+foo" + assert a.value is True + assert a.values == (True,) + assert True in a # Copy - True value b = a.copy() - assert repr(a) == repr(b) assert str(a) == str(b) assert b.value is True + assert b.values == (True,) assert True in b assert a == b assert a is not b assert hash(a) == hash(b) - assert eval(repr(b)) == a - # Basic properties - False value - for v in (False, "False", "FALSE", "FaLsE"): - a = BoolValuedVariant("foo", v) - assert repr(a) == "BoolValuedVariant('foo', {0})".format(repr(v)) - assert str(a) == "~foo" - assert a.value is False - assert False in a - assert eval(repr(a)) == a - - # Copy - True value + # Copy - False value + a = BoolValuedVariant("foo", False) b = a.copy() - assert repr(a) == repr(b) assert str(a) == str(b) assert b.value is False + assert b.values == (False,) assert False in b assert a == b assert a is not b - assert eval(repr(b)) == a - - # Invalid values - for v in ("bar", "bar,baz"): - with pytest.raises(ValueError): - BoolValuedVariant("foo", v) def test_satisfies(self): a = BoolValuedVariant("foo", True) b = BoolValuedVariant("foo", False) c = BoolValuedVariant("fee", False) - d = BoolValuedVariant("foo", "True") + d = BoolValuedVariant("foo", True) # concrete, different values do not satisfy each other assert not a.satisfies(b) and not b.satisfies(a) @@ -325,7 +282,7 @@ def test_intersects(self): a = BoolValuedVariant("foo", True) b = BoolValuedVariant("fee", True) c = BoolValuedVariant("foo", False) - d = BoolValuedVariant("foo", "True") + d = BoolValuedVariant("foo", True) # concrete, different values do not intersect each other assert not a.intersects(b) and not b.intersects(a) @@ -347,7 +304,7 @@ def test_intersects(self): def test_constrain(self): # Try to constrain on a value equal to self - a = BoolValuedVariant("foo", "True") + a = BoolValuedVariant("foo", True) b = BoolValuedVariant("foo", True) assert not a.constrain(b) @@ -375,24 +332,24 @@ def test_constrain(self): assert a == BoolValuedVariant("foo", True) def test_yaml_entry(self): - a = BoolValuedVariant("foo", "True") + a = BoolValuedVariant("foo", True) expected = ("foo", True) assert a.yaml_entry() == expected - a = BoolValuedVariant("foo", "False") + a = BoolValuedVariant("foo", False) expected = ("foo", False) assert a.yaml_entry() == expected def test_from_node_dict(): - a = MultiValuedVariant.from_node_dict("foo", ["bar"]) - assert type(a) is MultiValuedVariant + a = VariantValue.from_node_dict("foo", ["bar"]) + assert a.type == spack.variant.VariantType.MULTI - a = MultiValuedVariant.from_node_dict("foo", "bar") - assert type(a) is SingleValuedVariant + a = VariantValue.from_node_dict("foo", "bar") + assert a.type == spack.variant.VariantType.SINGLE - a = MultiValuedVariant.from_node_dict("foo", "true") - assert type(a) is BoolValuedVariant + a = VariantValue.from_node_dict("foo", "true") + assert a.type == spack.variant.VariantType.BOOL class TestVariant: @@ -406,7 +363,7 @@ def test_validation(self): # Multiple values are not allowed with pytest.raises(MultipleValuesInExclusiveVariantError): - vspec.value = "bar,baz" + vspec.set("bar", "baz") # Inconsistent vspec vspec.name = "FOO" @@ -415,10 +372,10 @@ def test_validation(self): # Valid multi-value vspec a.multi = True - vspec = a.make_variant("bar,baz") + vspec = a.make_variant("bar", "baz") a.validate_or_raise(vspec, "test-package") # Add an invalid value - vspec.value = "bar,baz,barbaz" + vspec.set("bar", "baz", "barbaz") with pytest.raises(InvalidVariantValueError): a.validate_or_raise(vspec, "test-package") @@ -429,12 +386,12 @@ def validator(x): except ValueError: return False - a = Variant("foo", default=1024, description="", values=validator, multi=False) + a = Variant("foo", default="1024", description="", values=validator, multi=False) vspec = a.make_default() a.validate_or_raise(vspec, "test-package") - vspec.value = 2056 + vspec.set("2056") a.validate_or_raise(vspec, "test-package") - vspec.value = "foo" + vspec.set("foo") with pytest.raises(InvalidVariantValueError): a.validate_or_raise(vspec, "test-package") @@ -464,9 +421,9 @@ def test_invalid_values(self) -> None: a["foo"] = 2 # Duplicate variant - a["foo"] = MultiValuedVariant("foo", "bar,baz") + a["foo"] = MultiValuedVariant("foo", ("bar", "baz")) with pytest.raises(DuplicateVariantError): - a["foo"] = MultiValuedVariant("foo", "bar") + a["foo"] = MultiValuedVariant("foo", ("bar",)) with pytest.raises(DuplicateVariantError): a["foo"] = SingleValuedVariant("foo", "bar") @@ -476,7 +433,7 @@ def test_invalid_values(self) -> None: # Non matching names between key and vspec.name with pytest.raises(KeyError): - a["bar"] = MultiValuedVariant("foo", "bar") + a["bar"] = MultiValuedVariant("foo", ("bar",)) def test_set_item(self) -> None: # Check that all the three types of variants are accepted @@ -484,7 +441,7 @@ def test_set_item(self) -> None: a["foo"] = BoolValuedVariant("foo", True) a["bar"] = SingleValuedVariant("bar", "baz") - a["foobar"] = MultiValuedVariant("foobar", "a, b, c, d, e") + a["foobar"] = MultiValuedVariant("foobar", ("a", "b", "c", "d", "e")) def test_substitute(self) -> None: # Check substitution of a key that exists @@ -500,13 +457,13 @@ def test_substitute(self) -> None: def test_satisfies_and_constrain(self) -> None: # foo=bar foobar=fee feebar=foo a = VariantMap(Spec()) - a["foo"] = MultiValuedVariant("foo", "bar") + a["foo"] = MultiValuedVariant("foo", ("bar",)) a["foobar"] = SingleValuedVariant("foobar", "fee") a["feebar"] = SingleValuedVariant("feebar", "foo") # foo=bar,baz foobar=fee shared=True b = VariantMap(Spec()) - b["foo"] = MultiValuedVariant("foo", "bar, baz") + b["foo"] = MultiValuedVariant("foo", ("bar", "baz")) b["foobar"] = SingleValuedVariant("foobar", "fee") b["shared"] = BoolValuedVariant("shared", True) @@ -516,7 +473,7 @@ def test_satisfies_and_constrain(self) -> None: # foo=bar,baz foobar=fee feebar=foo shared=True c = VariantMap(Spec()) - c["foo"] = MultiValuedVariant("foo", "bar, baz") + c["foo"] = MultiValuedVariant("foo", ("bar", "baz")) c["foobar"] = SingleValuedVariant("foobar", "fee") c["feebar"] = SingleValuedVariant("feebar", "foo") c["shared"] = BoolValuedVariant("shared", True) @@ -529,14 +486,14 @@ def test_copy(self) -> None: a = VariantMap(Spec()) a["foo"] = BoolValuedVariant("foo", True) a["bar"] = SingleValuedVariant("bar", "baz") - a["foobar"] = MultiValuedVariant("foobar", "a, b, c, d, e") + a["foobar"] = MultiValuedVariant("foobar", ("a", "b", "c", "d", "e")) c = a.copy() assert a == c def test_str(self) -> None: c = VariantMap(Spec()) - c["foo"] = MultiValuedVariant("foo", "bar, baz") + c["foo"] = MultiValuedVariant("foo", ("bar", "baz")) c["foobar"] = SingleValuedVariant("foobar", "fee") c["feebar"] = SingleValuedVariant("feebar", "foo") c["shared"] = BoolValuedVariant("shared", True) @@ -635,10 +592,10 @@ def test_wild_card_valued_variants_equivalent_to_str(): several_arbitrary_values = ("doe", "re", "mi") # "*" case - wild_output = wild_var.make_variant(several_arbitrary_values) + wild_output = wild_var.make_variant(*several_arbitrary_values) wild_var.validate_or_raise(wild_output, "test-package") # str case - str_output = str_var.make_variant(several_arbitrary_values) + str_output = str_var.make_variant(*several_arbitrary_values) str_var.validate_or_raise(str_output, "test-package") # equivalence each instance already validated assert str_output.value == wild_output.value @@ -760,21 +717,21 @@ def test_concretize_variant_default_with_multiple_defs( "spec,variant_name,narrowed_type", [ # dev_path is a special case - ("foo dev_path=/path/to/source", "dev_path", SingleValuedVariant), + ("foo dev_path=/path/to/source", "dev_path", spack.variant.VariantType.SINGLE), # reserved name: won't be touched - ("foo patches=2349dc44", "patches", VariantBase), + ("foo patches=2349dc44", "patches", spack.variant.VariantType.MULTI), # simple case -- one definition applies - ("variant-values@1.0 v=foo", "v", SingleValuedVariant), + ("variant-values@1.0 v=foo", "v", spack.variant.VariantType.SINGLE), # simple, but with bool valued variant - ("pkg-a bvv=true", "bvv", BoolValuedVariant), + ("pkg-a bvv=true", "bvv", spack.variant.VariantType.BOOL), # takes the second definition, which overrides the single-valued one - ("variant-values@2.0 v=bar", "v", MultiValuedVariant), + ("variant-values@2.0 v=bar", "v", spack.variant.VariantType.MULTI), ], ) def test_substitute_abstract_variants_narrowing(mock_packages, spec, variant_name, narrowed_type): spec = Spec(spec) spack.spec.substitute_abstract_variants(spec) - assert type(spec.variants[variant_name]) is narrowed_type + assert spec.variants[variant_name].type == narrowed_type def test_substitute_abstract_variants_failure(mock_packages): @@ -920,3 +877,12 @@ def test_patches_variant(): assert not Spec("patches:=abcdef").satisfies("patches:=ab") assert not Spec("patches:=abcdef,xyz").satisfies("patches:=abc,xyz") assert not Spec("patches:=abcdef").satisfies("patches:=abcdefghi") + + +def test_constrain_narrowing(): + s = Spec("foo=*") + assert s.variants["foo"].type == spack.variant.VariantType.MULTI + assert not s.variants["foo"].concrete + s.constrain("+foo") + assert s.variants["foo"].type == spack.variant.VariantType.BOOL + assert s.variants["foo"].concrete diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index e9700ed9466..cd4de737779 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -10,7 +10,6 @@ import functools import inspect import itertools -import re from typing import Any, Callable, Collection, Iterable, List, Optional, Tuple, Type, Union import llnl.util.lang as lang @@ -33,24 +32,22 @@ "target", } -special_variant_values = [None, "none", "*"] - -class VariantType(enum.Enum): +class VariantType(enum.IntEnum): """Enum representing the three concrete variant types.""" - MULTI = "multi" - BOOL = "bool" - SINGLE = "single" + BOOL = 1 + SINGLE = 2 + MULTI = 3 @property - def variant_class(self) -> Type: - if self is self.MULTI: - return MultiValuedVariant - elif self is self.BOOL: - return BoolValuedVariant - else: - return SingleValuedVariant + def string(self) -> str: + """Convert the variant type to a string.""" + if self == VariantType.BOOL: + return "bool" + elif self == VariantType.SINGLE: + return "single" + return "multi" class Variant: @@ -134,7 +131,7 @@ def isa_type(v): self.sticky = sticky self.precedence = precedence - def validate_or_raise(self, vspec: "VariantBase", pkg_name: str): + def validate_or_raise(self, vspec: "VariantValue", pkg_name: str): """Validate a variant spec against this package variant. Raises an exception if any error is found. @@ -156,7 +153,7 @@ def validate_or_raise(self, vspec: "VariantBase", pkg_name: str): raise InconsistentValidationError(vspec, self) # If the value is exclusive there must be at most one - value = vspec.value_as_tuple + value = vspec.values if not self.multi and len(value) != 1: raise MultipleValuesInExclusiveVariantError(vspec, pkg_name) @@ -191,27 +188,15 @@ def allowed_values(self): v = docstring if docstring else "" return v - def make_default(self): - """Factory that creates a variant holding the default value. + def make_default(self) -> "VariantValue": + """Factory that creates a variant holding the default value(s).""" + variant = VariantValue.from_string_or_bool(self.name, self.default) + variant.type = self.variant_type + return variant - Returns: - MultiValuedVariant or SingleValuedVariant or BoolValuedVariant: - instance of the proper variant - """ - return self.make_variant(self.default) - - def make_variant(self, value: Union[str, bool]) -> "VariantBase": - """Factory that creates a variant holding the value passed as - a parameter. - - Args: - value: value that will be hold by the variant - - Returns: - MultiValuedVariant or SingleValuedVariant or BoolValuedVariant: - instance of the proper variant - """ - return self.variant_type.variant_class(self.name, value) + def make_variant(self, *value: Union[str, bool]) -> "VariantValue": + """Factory that creates a variant holding the value(s) passed.""" + return VariantValue(self.variant_type, self.name, value) @property def variant_type(self) -> VariantType: @@ -254,116 +239,148 @@ def _flatten(values) -> Collection: #: Type for value of a variant -ValueType = Union[str, bool, Tuple[Union[str, bool], ...]] +ValueType = Tuple[Union[bool, str], ...] #: Type of variant value when output for JSON, YAML, etc. SerializedValueType = Union[str, bool, List[Union[str, bool]]] @lang.lazy_lexicographic_ordering -class VariantBase: - """A BaseVariant corresponds to a spec string of the form ``foo=bar`` or ``foo=bar,baz``. - It is a constraint on the spec and abstract in the sense that it must have **at least** these - values -- concretization may add more values.""" +class VariantValue: + """A VariantValue is a key-value pair that represents a variant. It can have zero or more + values. Values have set semantics, so they are unordered and unique. The variant type can + be narrowed from multi to single to boolean, this limits the number of values that can be + stored in the variant. Multi-valued variants can either be concrete or abstract: abstract + means that the variant takes at least the values specified, but may take more when concretized. + Concrete means that the variant takes exactly the values specified. Lastly, a variant can be + marked as propagating, which means that it should be propagated to dependencies.""" name: str propagate: bool - _value: ValueType - _original_value: Any + concrete: bool + type: VariantType + _values: ValueType - def __init__(self, name: str, value: ValueType, propagate: bool = False) -> None: + slots = ("name", "propagate", "concrete", "type", "_values") + + def __init__( + self, + type: VariantType, + name: str, + value: ValueType, + *, + propagate: bool = False, + concrete: bool = False, + ) -> None: self.name = name + self.type = type self.propagate = propagate - self.concrete = False + # only multi-valued variants can be abstract + self.concrete = concrete or type in (VariantType.BOOL, VariantType.SINGLE) # Invokes property setter - self.value = value + self.set(*value) @staticmethod def from_node_dict( name: str, value: Union[str, List[str]], *, propagate: bool = False, abstract: bool = False - ) -> "VariantBase": + ) -> "VariantValue": """Reconstruct a variant from a node dict.""" if isinstance(value, list): - constructor = VariantBase if abstract else MultiValuedVariant - mvar = constructor(name, (), propagate=propagate) - mvar._value = tuple(value) - mvar._original_value = mvar._value - return mvar + return VariantValue( + VariantType.MULTI, name, tuple(value), propagate=propagate, concrete=not abstract + ) + # todo: is this necessary? not literal true / false in json/yaml? elif str(value).upper() == "TRUE" or str(value).upper() == "FALSE": - return BoolValuedVariant(name, value, propagate=propagate) + return VariantValue( + VariantType.BOOL, name, (str(value).upper() == "TRUE",), propagate=propagate + ) - return SingleValuedVariant(name, value, propagate=propagate) + return VariantValue(VariantType.SINGLE, name, (value,), propagate=propagate) + + @staticmethod + def from_string_or_bool( + name: str, value: Union[str, bool], *, propagate: bool = False, concrete: bool = False + ) -> "VariantValue": + if value is True or value is False: + return VariantValue(VariantType.BOOL, name, (value,), propagate=propagate) + + elif value.upper() in ("TRUE", "FALSE"): + return VariantValue( + VariantType.BOOL, name, (value.upper() == "TRUE",), propagate=propagate + ) + + elif value == "*": + return VariantValue(VariantType.MULTI, name, (), propagate=propagate) + + return VariantValue( + VariantType.MULTI, + name, + tuple(value.split(",")), + propagate=propagate, + concrete=concrete, + ) + + @staticmethod + def from_concretizer(name: str, value: str, type: str) -> "VariantValue": + """Reconstruct a variant from concretizer output.""" + if type == "bool": + return VariantValue(VariantType.BOOL, name, (value == "True",)) + elif type == "multi": + return VariantValue(VariantType.MULTI, name, (value,), concrete=True) + else: + return VariantValue(VariantType.SINGLE, name, (value,)) def yaml_entry(self) -> Tuple[str, SerializedValueType]: - """Returns a key, value tuple suitable to be an entry in a yaml dict. + """Returns a (key, value) tuple suitable to be an entry in a yaml dict. Returns: tuple: (name, value_representation) """ - return self.name, list(self.value_as_tuple) + if self.type == VariantType.MULTI: + return self.name, list(self.values) + return self.name, self.values[0] @property - def value_as_tuple(self) -> Tuple[Union[bool, str], ...]: - """Getter for self.value that always returns a Tuple (even for single valued variants). - - This makes it easy to iterate over possible values. - """ - if isinstance(self._value, (bool, str)): - return (self._value,) - return self._value + def values(self) -> ValueType: + return self._values @property - def value(self) -> ValueType: - """Returns a tuple of strings containing the values stored in - the variant. + def value(self) -> Union[ValueType, bool, str]: + return self._values[0] if self.type != VariantType.MULTI else self._values - Returns: - tuple: values stored in the variant - """ - return self._value + def set(self, *value: Union[bool, str]) -> None: + """Set the value(s) of the variant.""" + if len(value) > 1: + value = tuple(sorted(set(value))) - @value.setter - def value(self, value: ValueType) -> None: - self._value_setter(value) + if self.type != VariantType.MULTI: + if len(value) != 1: + raise MultipleValuesInExclusiveVariantError(self) + unwrapped = value[0] + if self.type == VariantType.BOOL and unwrapped not in (True, False): + raise ValueError( + f"cannot set a boolean variant to a value that is not a boolean: {unwrapped}" + ) - def _value_setter(self, value: ValueType) -> None: - # Store the original value - self._original_value = value + if "*" in value: + raise InvalidVariantValueError("cannot use reserved value '*'") - if value == "*": - self._value = () - return - - if not isinstance(value, (tuple, list)): - # Store a tuple of CSV string representations - # Tuple is necessary here instead of list because the - # values need to be hashed - value = tuple(re.split(r"\s*,\s*", str(value))) - - for val in special_variant_values: - if val in value and len(value) > 1: - msg = "'%s' cannot be combined with other variant" % val - msg += " values." - raise InvalidVariantValueCombinationError(msg) - - # With multi-value variants it is necessary - # to remove duplicates and give an order - # to a set - self._value = tuple(sorted(set(value))) + self._values = value def _cmp_iter(self) -> Iterable: yield self.name yield self.propagate - yield from (str(v) for v in self.value_as_tuple) + yield self.concrete + yield from (str(v) for v in self.values) - def copy(self) -> "VariantBase": - variant = type(self)(self.name, self._original_value, self.propagate) - variant.concrete = self.concrete - return variant + def copy(self) -> "VariantValue": + return VariantValue( + self.type, self.name, self.values, propagate=self.propagate, concrete=self.concrete + ) - def satisfies(self, other: "VariantBase") -> bool: + def satisfies(self, other: "VariantValue") -> bool: """The lhs satisfies the rhs if all possible concretizations of lhs are also possible concretizations of rhs.""" if self.name != other.name: @@ -376,138 +393,90 @@ def satisfies(self, other: "VariantBase") -> bool: if self.name == "patches": return all( isinstance(v, str) - and any(isinstance(w, str) and w.startswith(v) for w in self.value_as_tuple) - for v in other.value_as_tuple + and any(isinstance(w, str) and w.startswith(v) for w in self.values) + for v in other.values ) - return all(v in self for v in other.value_as_tuple) + return all(v in self for v in other.values) if self.concrete: # both concrete: they must be equal - return self.value_as_tuple == other.value_as_tuple + return self.values == other.values return False - def intersects(self, other: "VariantBase") -> bool: + def intersects(self, other: "VariantValue") -> bool: """True iff there exists a concretization that satisfies both lhs and rhs.""" if self.name != other.name: return False if self.concrete: if other.concrete: - return self.value_as_tuple == other.value_as_tuple - return all(v in self for v in other.value_as_tuple) + return self.values == other.values + return all(v in self for v in other.values) if other.concrete: - return all(v in other for v in self.value_as_tuple) + return all(v in other for v in self.values) # both abstract: the union is a valid concretization of both return True - def constrain(self, other: "VariantBase") -> bool: + def constrain(self, other: "VariantValue") -> bool: """Constrain self with other if they intersect. Returns true iff self was changed.""" if not self.intersects(other): raise UnsatisfiableVariantSpecError(self, other) - old_value = self.value - values = list(sorted({*self.value_as_tuple, *other.value_as_tuple})) - self._value_setter(",".join(str(v) for v in values)) - changed = old_value != self.value + old_values = self.values + self.set(*self.values, *other.values) + changed = old_values != self.values if self.propagate and not other.propagate: self.propagate = False changed = True if not self.concrete and other.concrete: self.concrete = True changed = True + if self.type > other.type: + self.type = other.type + changed = True return changed - def __contains__(self, item: Union[str, bool]) -> bool: - return item in self.value_as_tuple + def append(self, value: Union[str, bool]) -> None: + self.set(*self.values, value) - def __repr__(self) -> str: - return f"{type(self).__name__}({repr(self.name)}, {repr(self._original_value)})" + def __contains__(self, item: Union[str, bool]) -> bool: + return item in self.values def __str__(self) -> str: - concrete = ":" if self.concrete else "" + # boolean variants are printed +foo or ~foo + if self.type == VariantType.BOOL: + sigil = "+" if self.value else "~" + if self.propagate: + sigil *= 2 + return f"{sigil}{self.name}" + + # concrete multi-valued foo:=bar,baz + concrete = ":" if self.type == VariantType.MULTI and self.concrete else "" delim = "==" if self.propagate else "=" - values_tuple = self.value_as_tuple - if values_tuple: - value_str = ",".join(str(v) for v in values_tuple) - else: + if not self.values: value_str = "*" + elif self.name == "patches" and self.concrete: + value_str = ",".join(str(x)[:7] for x in self.values) + else: + value_str = ",".join(str(x) for x in self.values) return f"{self.name}{concrete}{delim}{spack.spec_parser.quote_if_needed(value_str)}" - -class MultiValuedVariant(VariantBase): - def __init__(self, name, value, propagate=False): - super().__init__(name, value, propagate) - self.concrete = True - - def append(self, value: Union[str, bool]) -> None: - """Add another value to this multi-valued variant.""" - self._value = tuple(sorted((value,) + self.value_as_tuple)) - self._original_value = ",".join(str(v) for v in self._value) - - def __str__(self) -> str: - # Special-case patches to not print the full 64 character sha256 - if self.name == "patches": - values_str = ",".join(str(x)[:7] for x in self.value_as_tuple) - else: - values_str = ",".join(str(x) for x in self.value_as_tuple) - - delim = "==" if self.propagate else "=" - return f"{self.name}:{delim}{spack.spec_parser.quote_if_needed(values_str)}" + def __repr__(self): + return ( + f"VariantValue({self.type!r}, {self.name!r}, {self.values!r}, " + f"propagate={self.propagate!r}, concrete={self.concrete!r})" + ) -class SingleValuedVariant(VariantBase): - def __init__(self, name, value, propagate=False): - super().__init__(name, value, propagate) - self.concrete = True - - def _value_setter(self, value: ValueType) -> None: - # Treat the value as a multi-valued variant - super()._value_setter(value) - - # Then check if there's only a single value - values = self.value_as_tuple - if len(values) != 1: - raise MultipleValuesInExclusiveVariantError(self) - - self._value = values[0] - - def __contains__(self, item: ValueType) -> bool: - return item == self.value - - def yaml_entry(self) -> Tuple[str, SerializedValueType]: - assert isinstance(self.value, (bool, str)) - return self.name, self.value - - def __str__(self) -> str: - delim = "==" if self.propagate else "=" - return f"{self.name}{delim}{spack.spec_parser.quote_if_needed(str(self.value))}" +def MultiValuedVariant(name: str, value: ValueType, propagate: bool = False) -> VariantValue: + return VariantValue(VariantType.MULTI, name, value, propagate=propagate, concrete=True) -class BoolValuedVariant(SingleValuedVariant): - def __init__(self, name, value, propagate=False): - super().__init__(name, value, propagate) - self.concrete = True +def SingleValuedVariant( + name: str, value: Union[bool, str], propagate: bool = False +) -> VariantValue: + return VariantValue(VariantType.SINGLE, name, (value,), propagate=propagate) - def _value_setter(self, value: ValueType) -> None: - # Check the string representation of the value and turn - # it to a boolean - if str(value).upper() == "TRUE": - self._original_value = value - self._value = True - elif str(value).upper() == "FALSE": - self._original_value = value - self._value = False - else: - raise ValueError( - f'cannot construct a BoolValuedVariant for "{self.name}" from ' - "a value that does not represent a bool" - ) - def __contains__(self, item: ValueType) -> bool: - return item is self.value - - def __str__(self) -> str: - sigil = "+" if self.value else "~" - if self.propagate: - sigil *= 2 - return f"{sigil}{self.name}" +def BoolValuedVariant(name: str, value: bool, propagate: bool = False) -> VariantValue: + return VariantValue(VariantType.BOOL, name, (value,), propagate=propagate) # The class below inherit from Sequence to disguise as a tuple and comply @@ -714,7 +683,7 @@ def __lt__(self, other): def prevalidate_variant_value( pkg_cls: "Type[spack.package_base.PackageBase]", - variant: VariantBase, + variant: VariantValue, spec: Optional["spack.spec.Spec"] = None, strict: bool = False, ) -> List[Variant]: @@ -735,8 +704,8 @@ def prevalidate_variant_value( list of variant definitions that will accept the given value. List will be empty 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 or variant.propagate: + # do not validate non-user variants or optional variants + if variant.name in RESERVED_NAMES or variant.propagate: return [] # raise if there is no definition at all @@ -819,17 +788,13 @@ class MultipleValuesInExclusiveVariantError(spack.error.SpecError, ValueError): only one. """ - def __init__(self, variant: VariantBase, pkg_name: Optional[str] = None): + def __init__(self, variant: VariantValue, pkg_name: Optional[str] = None): pkg_info = "" if pkg_name is None else f" in package '{pkg_name}'" msg = f"multiple values are not allowed for variant '{variant.name}'{pkg_info}" super().__init__(msg.format(variant, pkg_info)) -class InvalidVariantValueCombinationError(spack.error.SpecError): - """Raised when a variant has values '*' or 'none' with other values.""" - - class InvalidVariantValueError(spack.error.SpecError): """Raised when variants have invalid values.""" From 25d8e95ad4c6fe54c7e9441323f1054d8811fe14 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Wed, 16 Apr 2025 06:09:37 -0500 Subject: [PATCH 156/317] go: ignore unresolved library (#50072) --- 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 f5a799e8e5e..6c3e3203342 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -33,6 +33,7 @@ class Go(Package): extendable = True executables = ["^go$"] + unresolved_libraries = ["libtiff.so.*"] # go/src/debug/elf/testdata/libtiffxx.so_ maintainers("alecbcs") From 62ec0f6d339983d76abe93caca68f1b279bcf05b Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Wed, 16 Apr 2025 13:16:11 +0200 Subject: [PATCH 157/317] fenics-dolfinx: add missing "c" build dependency (#50071) building fenics-dolfinx resulted in the following error: ==> No patches needed for fenics-dolfinx ==> fenics-dolfinx: Executing phase: 'cmake' ==> Error: ProcessError: Command exited with status 1: 3 errors found in build log: 3 -- The C compiler identification is unknown 4 -- The CXX compiler identification is GNU 12.2.0 5 -- Detecting C compiler ABI info 6 -- Detecting C compiler ABI info - failed 7 -- Check for working C compiler: /opt/spack/[...]libexec/spack/cc 8 -- Check for working C compiler: /opt/spack/[...]libexec/spack/cc - broken >> 9 CMake Error at /opt/spack/opt/spack/[...]/CMakeTestCCompiler.cmake:67 (message): 10 The C compiler 11 12 "/opt/spack/opt/spack/[...]/libexec/spack/cc" 13 14 is not able to compile a simple test program. 15 ... Thanks to @amd-toolchain-support issue #50021, this is easily fixed by adding the one-liner for the missing dependency for the C compiler. Signed-off-by: Christian Lamparter --- var/spack/repos/builtin/packages/fenics-dolfinx/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py index 9836f23bd14..25e1e2b3676 100644 --- a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py @@ -30,6 +30,7 @@ class FenicsDolfinx(CMakePackage): multi=True, ) + depends_on("c", type="build") depends_on("cxx", type="build") # generated # Graph partitioner dependencies From dc8678136ce1456b108137a0fa64e9658a4e9c61 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 16 Apr 2025 15:35:10 +0200 Subject: [PATCH 158/317] py-setuptools: add v76.1.0 -> v78.1.0 (#49680) * py-setuptools: add v76.1.0 * py-setuptools: do not deprecate older minor and patch versions * py-setuptools: add v77.0.1 and v77.0.3 * py-flatbuffers: constrain setuptools * py-torchvision: constrain setuptools * py-torch-cluster: constrain setuptools * py-torch-scatter: constrain setuptools * py-torch-spline-conv: constrain setuptools * py-setuptools: add v78.0.1, v78.0.2, v78.1.0 --- .../packages/py-flatbuffers/package.py | 2 + .../builtin/packages/py-setuptools/package.py | 8 ++++ .../packages/py-torch-cluster/package.py | 2 + .../packages/py-torch-scatter/package.py | 2 + .../packages/py-torch-spline-conv/package.py | 2 + .../packages/py-torchvision/package.py | 39 +++++-------------- 6 files changed, 25 insertions(+), 30 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-flatbuffers/package.py b/var/spack/repos/builtin/packages/py-flatbuffers/package.py index 4f667ed7dd0..b17ece10bf5 100644 --- a/var/spack/repos/builtin/packages/py-flatbuffers/package.py +++ b/var/spack/repos/builtin/packages/py-flatbuffers/package.py @@ -25,4 +25,6 @@ class PyFlatbuffers(PythonPackage): version("2.0", sha256="12158ab0272375eab8db2d663ae97370c33f152b27801fa6024e1d6105fd4dd2") version("1.12", sha256="63bb9a722d5e373701913e226135b28a6f6ac200d5cc7b4d919fa38d73b44610") + # https://setuptools.pypa.io/en/latest/history.html#v77-0-0 + depends_on("py-setuptools@:76", type="build", when="@:24.3.25") depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 8d4510adc50..3a7355d1013 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -19,11 +19,19 @@ class PySetuptools(Package, PythonExtension): # Requires railroad skip_modules = ["setuptools._vendor", "pkg_resources._vendor"] + version("78.1.0", sha256="3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8") + version("78.0.2", sha256="4a612c80e1f1d71b80e4906ce730152e8dec23df439f82731d9d0b608d7b700d") + version("78.0.1", sha256="1cc9b32ee94f93224d6c80193cbb768004667aa2f2732a473d6949b0236c1d4e") + version("77.0.3", sha256="67122e78221da5cf550ddd04cf8742c8fe12094483749a792d56cd669d6cf58c") + version("77.0.1", sha256="81a234dff81a82bb52e522c8aef145d0dd4de1fd6de4d3b196d0f77dc2fded26") + version("76.1.0", sha256="34750dcb17d046929f545dec9b8349fe42bf4ba13ddffee78428aec422dbfb73") version("76.0.0", sha256="199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6") version("75.9.1", sha256="0a6f876d62f4d978ca1a11ab4daf728d1357731f978543ff18ecdbf9fd071f73") version("75.8.2", sha256="558e47c15f1811c1fa7adbd0096669bf76c1d3f433f58324df69f3f5ecac4e8f") version("75.8.1", sha256="3bc32c0b84c643299ca94e77f834730f126efd621de0cc1de64119e0e17dab1f") version("75.8.0", sha256="e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3") + version("75.3.2", sha256="90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9") + version("75.3.1", sha256="ccd77cda9d3bc3d3e99036d221b91d15f86e53195139d643b5b5299d42463cd3") version("75.3.0", sha256="f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd") version("69.2.0", sha256="c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c") version("69.1.1", sha256="02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56") diff --git a/var/spack/repos/builtin/packages/py-torch-cluster/package.py b/var/spack/repos/builtin/packages/py-torch-cluster/package.py index d0d04a2d951..4d6fcfff0c8 100644 --- a/var/spack/repos/builtin/packages/py-torch-cluster/package.py +++ b/var/spack/repos/builtin/packages/py-torch-cluster/package.py @@ -21,6 +21,8 @@ class PyTorchCluster(PythonPackage): depends_on("cxx", type="build") depends_on("python", type=("build", "link", "run")) + # https://setuptools.pypa.io/en/latest/history.html#v77-0-0 + depends_on("py-setuptools@:76", type="build", when="@:1.6.3") depends_on("py-setuptools", type="build") depends_on("py-scipy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-torch-scatter/package.py b/var/spack/repos/builtin/packages/py-torch-scatter/package.py index 7d9a5d4e0e8..8741fa6c222 100644 --- a/var/spack/repos/builtin/packages/py-torch-scatter/package.py +++ b/var/spack/repos/builtin/packages/py-torch-scatter/package.py @@ -21,6 +21,8 @@ class PyTorchScatter(PythonPackage): depends_on("cxx", type="build") depends_on("python", type=("build", "link", "run")) + # https://setuptools.pypa.io/en/latest/history.html#v77-0-0 + depends_on("py-setuptools@:76", type="build", when="@:2.1.2") depends_on("py-setuptools", type="build") # Undocumented dependencies diff --git a/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py b/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py index 39bd4e3c383..47f5ef8c3b0 100644 --- a/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py +++ b/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py @@ -21,6 +21,8 @@ class PyTorchSplineConv(PythonPackage): depends_on("cxx", type="build") depends_on("python", type=("build", "link", "run")) + # https://setuptools.pypa.io/en/latest/history.html#v77-0-0 + depends_on("py-setuptools@:76", type="build", when="@:1.2.2") depends_on("py-setuptools", type="build") # Undocumented dependencies diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 0d96754d6fb..191fae7b4bb 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -48,36 +48,13 @@ class PyTorchvision(PythonPackage): version("0.9.1", sha256="79964773729880e0eee0e6af13f336041121d4cc8491a3e2c0e5f184cac8a718") version("0.9.0", sha256="9351ed92aded632f8c7f59dfadac13c191a834babe682f5785ea47e6fcf6b472") version("0.8.2", sha256="9a866c3c8feb23b3221ce261e6153fc65a98ce9ceaa71ccad017016945c178bf") - version( - "0.8.1", - sha256="c46734c679c99f93e5c06654f4295a05a6afe6c00a35ebd26a2cce507ae1ccbd", - deprecated=True, - ) - version( - "0.8.0", - sha256="b5f040faffbfc7bac8d4687d8665bd1196937334589b3fb5fcf15bb69ca25391", - deprecated=True, - ) - version( - "0.7.0", - sha256="fa0a6f44a50451115d1499b3f2aa597e0092a07afce1068750260fa7dd2c85cb", - deprecated=True, - ) - version( - "0.6.1", - sha256="8173680a976c833640ecbd0d7e6f0a11047bf8833433e2147180efc905e48656", - deprecated=True, - ) - version( - "0.6.0", - sha256="02de11b3abe6882de4032ce86dab9c7794cbc84369b44d04e667486580f0f1f7", - deprecated=True, - ) - version( - "0.5.0", - sha256="eb9afc93df3d174d975ee0914057a9522f5272310b4d56c150b955c287a4d74d", - deprecated=True, - ) + with default_args(deprecated=True): + version("0.8.1", sha256="c46734c679c99f93e5c06654f4295a05a6afe6c00a35ebd26a2cce507ae1ccbd") + version("0.8.0", sha256="b5f040faffbfc7bac8d4687d8665bd1196937334589b3fb5fcf15bb69ca25391") + version("0.7.0", sha256="fa0a6f44a50451115d1499b3f2aa597e0092a07afce1068750260fa7dd2c85cb") + version("0.6.1", sha256="8173680a976c833640ecbd0d7e6f0a11047bf8833433e2147180efc905e48656") + version("0.6.0", sha256="02de11b3abe6882de4032ce86dab9c7794cbc84369b44d04e667486580f0f1f7") + version("0.5.0", sha256="eb9afc93df3d174d975ee0914057a9522f5272310b4d56c150b955c287a4d74d") desc = "Enable support for native encoding/decoding of {} formats in torchvision.io" variant("png", default=True, description=desc.format("PNG")) @@ -145,6 +122,8 @@ class PyTorchvision(PythonPackage): depends_on("ninja", type="build") # setup.py + # https://setuptools.pypa.io/en/latest/history.html#v77-0-0 + depends_on("py-setuptools@:76", type="build", when="@:0.21.0") depends_on("py-setuptools", type="build") depends_on("py-numpy", type=("build", "run")) # https://github.com/pytorch/vision/issues/8460 From 3256ad8e5c8e695b34b2e1a7dcd62eb710ace217 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 16 Apr 2025 15:36:25 +0200 Subject: [PATCH 159/317] py-pip: add v25.0, v25.0.1 (#49249) * py-pip: add v25.0 and v25.0.1 Release notes: - https://pip.pypa.io/en/stable/news/#v25-0 - https://pip.pypa.io/en/stable/news/#v25-0-1 * py-pip: add known conflict * fixup! py-pip: add known conflict * fixup! fixup! py-pip: add known conflict * py-setuptools: fix typo in conflict * fixup! py-setuptools: fix typo in conflict --- var/spack/repos/builtin/packages/py-pip/package.py | 2 ++ var/spack/repos/builtin/packages/py-setuptools/package.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index f674ae41e12..58273a7c9a6 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -24,6 +24,8 @@ class PyPip(Package, PythonExtension): license("MIT") + version("25.0.1", sha256="c46efd13b6aa8279f33f2864459c8ce587ea6a1a59ee20de055868d8f7688f7f") + version("25.0", sha256="b6eb97a803356a52b2dd4bb73ba9e65b2ba16caa6bcb25a7497350a4e5859b65") version("24.3.1", sha256="3790624780082365f47549d032f3770eeb2b1e8bd1f7b2e02dace1afa361b4ed") version("24.2", sha256="2cd581cf58ab7fcfca4ce8efa6dcacd0de5bf8d0a3eb9ec927e07405f4d9e2a2") version("24.1.2", sha256="7cd207eed4c60b0f411b444cd1464198fe186671c323b6cd6d433ed80fc9d247") diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 3a7355d1013..54b88684199 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -118,6 +118,14 @@ class PySetuptools(Package, PythonExtension): depends_on("py-pip", type="build") + conflicts( + "^python@:3.9 ^py-pip@25:", + when="@:75.1.0", + msg="py-pip@25: vendors pyproject-hooks@1.2. " + "The combination pyproject-hooks@1.2, python@:3.9, and py-setuptools@:75.1.0 is broken. " + "See https://github.com/pypa/pyproject-hooks/issues/206 for details.", + ) + def url_for_version(self, version): url = "https://files.pythonhosted.org/packages/{0}/s/setuptools/setuptools-{1}-{0}-none-any.whl" From 1d27add3076ea3de648d1e1101561b3605ddd4b2 Mon Sep 17 00:00:00 2001 From: Thomas Padioleau Date: Wed, 16 Apr 2025 18:05:10 +0200 Subject: [PATCH 160/317] Update mdspan recipe (#50046) * Remove hard-coded compiler * Remove compiler flags * Use spack functions * Add a cxxstd variant * Replace main branch of googletest with some random not too old version --- .../repos/builtin/packages/mdspan/package.py | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/mdspan/package.py b/var/spack/repos/builtin/packages/mdspan/package.py index 709110ec3bc..d515a1f1fb4 100644 --- a/var/spack/repos/builtin/packages/mdspan/package.py +++ b/var/spack/repos/builtin/packages/mdspan/package.py @@ -21,25 +21,21 @@ class Mdspan(CMakePackage): variant("examples", default=True, description="Enable examples") variant("tests", default=False, description="Enable tests") variant("benchmarks", default=False, description="Enable benchmarks") + variant( + "cxxstd", default="17", values=["14", "17", "20"], multi=False, description="C++ standard" + ) depends_on("benchmark", when="+benchmarks") - depends_on("googletest@main", when="+tests") + depends_on("googletest@1.14:1", when="+tests") def cmake_args(self): - args = [] - - if self.spec.satisfies("+tests"): - args.append("-DMDSPAN_ENABLE_TESTS=ON") - args.append("-DMDSPAN_USE_SYSTEM_GTEST=ON") - if self.spec.satisfies("+benchmarks"): - args.append("-DMDSPAN_ENABLE_BENCHMARKS=ON") - if self.spec.satisfies("+examples"): - args.append("-DMDSPAN_ENABLE_EXAMPLES=ON") - - args.append("-DCMAKE_CXX_FLAGS='-Wall -Wextra -pedantic'") - args.append("-DCMAKE_CXX_STANDARD=17") - args.append("-DMDSPAN_CXX_STANDARD=17") - args.append("-DCMAKE_CXX_COMPILER=g++") - args.append("-DCMAKE_CXX_EXTENSIONS=OFF") + args = [ + self.define_from_variant("MDSPAN_ENABLE_TESTS", "tests"), + self.define_from_variant("MDSPAN_USE_SYSTEM_GTEST", "tests"), + self.define_from_variant("MDSPAN_ENABLE_BENCHMARKS", "benchmarks"), + self.define_from_variant("MDSPAN_ENABLE_EXAMPLES", "examples"), + self.define_from_variant("MDSPAN_CXX_STANDARD", "cxxstd"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), + ] return args From 4c075801db0518a4f45cd256dbc5ea2bb0dd9ab2 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Wed, 16 Apr 2025 10:57:46 -0600 Subject: [PATCH 161/317] py-pathos: add v0.2.9 -> v0.3.3 (#49943) * MAINT: add py-pathos versions * MAINT: match version directives order in dependencies --- .../builtin/packages/py-pathos/package.py | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pathos/package.py b/var/spack/repos/builtin/packages/py-pathos/package.py index 32d3a6bbf1e..5bbfd2ed890 100644 --- a/var/spack/repos/builtin/packages/py-pathos/package.py +++ b/var/spack/repos/builtin/packages/py-pathos/package.py @@ -13,22 +13,47 @@ class PyPathos(PythonPackage): license("BSD-3-Clause") + version("0.3.3", sha256="dcb2a5f321aa34ca541c1c1861011ea49df357bb908379c21dd5741f666e0a58") + version("0.3.2", sha256="4f2a42bc1e10ccf0fe71961e7145fc1437018b6b21bd93b2446abc3983e49a7a") + version("0.3.1", sha256="c9a088021493c5cb627d4459bba6c0533c684199e271a5dc297d62be23d74019") + version("0.3.0", sha256="24fa8db51fbd9284da8e191794097c4bb2aa3fce411090e57af6385e61b97e09") + version("0.2.9", sha256="a8dbddcd3d9af32ada7c6dc088d845588c513a29a0ba19ab9f64c5cd83692934") version("0.2.8", sha256="1f0f27a90f7ab66c423ba796529000fde9360d17b2d8e50097641ff405fc6f15") version("0.2.3", sha256="954c5b0a8b257c375e35d311c65fa62a210a3d65269195557de38418ac9f61f9") version("0.2.0", sha256="2f4e67e7914c95fb0cce766bab173eb2c5860ee420108fa183099557ac2e50e9") - depends_on("python@2.6:2.8,3.1:", type=("build", "run")) depends_on("python@2.7:2.8,3.6:", when="@0.2.8:", type=("build", "run")) + depends_on("python@2.6:2.8,3.1:", type=("build", "run")) depends_on("py-setuptools@0.6:", type="build") - depends_on("py-multiprocess@0.70.7:", type=("build", "run")) - depends_on("py-pox@0.2.5:", type=("build", "run")) - depends_on("py-pox@0.3.0:", type=("build", "run"), when="@0.2.8:") - depends_on("py-ppft@1.6.4.9:", type=("build", "run")) - depends_on("py-ppft@1.6.6.4:", type=("build", "run"), when="@0.2.8:") - depends_on("py-dill@0.2.9:", type=("build", "run")) - depends_on("py-dill@0.3.4:", type=("build", "run"), when="@0.2.8:") + depends_on("py-multiprocess@0.70.17:", type=("build", "run"), when="@0.3.3:") + depends_on("py-multiprocess@0.70.16:", type=("build", "run"), when="@0.3.2:") + depends_on("py-multiprocess@0.70.15:", type=("build", "run"), when="@0.3.1:") + depends_on("py-multiprocess@0.70.14:", type=("build", "run"), when="@0.3.0:") + depends_on("py-multiprocess@0.70.13:", type=("build", "run"), when="@0.2.9:") depends_on("py-multiprocess@0.70.12:", type=("build", "run"), when="@0.2.8:") + depends_on("py-multiprocess@0.70.7:", type=("build", "run")) + depends_on("py-pox@0.3.5:", type=("build", "run"), when="@0.3.3:") + depends_on("py-pox@0.3.4:", type=("build", "run"), when="@0.3.2:") + depends_on("py-pox@0.3.3:", type=("build", "run"), when="@0.3.1:") + depends_on("py-pox@0.3.2:", type=("build", "run"), when="@0.3.0:") + depends_on("py-pox@0.3.1:", type=("build", "run"), when="@0.2.9:") + depends_on("py-pox@0.3.0:", type=("build", "run"), when="@0.2.8:") + depends_on("py-pox@0.2.5:", type=("build", "run")) + depends_on("py-ppft@1.7.6.9:", type=("build", "run"), when="@0.3.3:") + depends_on("py-ppft@1.7.6.8:", type=("build", "run"), when="@0.3.2:") + depends_on("py-ppft@1.7.6.7:", type=("build", "run"), when="@0.3.1:") + depends_on("py-ppft@1.7.6.6:", type=("build", "run"), when="@0.3.0:") + depends_on("py-ppft@1.7.6.5:", type=("build", "run"), when="@0.2.9:") + depends_on("py-ppft@1.6.6.4:", type=("build", "run"), when="@0.2.8:") + depends_on("py-ppft@1.6.4.9:", type=("build", "run")) + depends_on("py-dill@0.3.9:", type=("build", "run"), when="@0.3.3:") + depends_on("py-dill@0.3.8:", type=("build", "run"), when="@0.3.2:") + depends_on("py-dill@0.3.7:", type=("build", "run"), when="@0.3.1:") + depends_on("py-dill@0.3.6:", type=("build", "run"), when="@0.3.0:") + depends_on("py-dill@0.3.5.1:", type=("build", "run"), when="@0.2.9:") + depends_on("py-dill@0.3.4:", type=("build", "run"), when="@0.2.8:") + depends_on("py-dill@0.2.9:", type=("build", "run")) def url_for_version(self, version): url = self.url.rsplit("/", 1)[0] From c2327a2adfe59ab420fc70ba8c1fa25d6f11c2fe Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Apr 2025 19:10:30 +0200 Subject: [PATCH 162/317] py-pykwalify: add v1.8.0 (#50063) --- .../builtin/packages/py-pykwalify/package.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pykwalify/package.py b/var/spack/repos/builtin/packages/py-pykwalify/package.py index eedc502fcc5..049ad6835c0 100644 --- a/var/spack/repos/builtin/packages/py-pykwalify/package.py +++ b/var/spack/repos/builtin/packages/py-pykwalify/package.py @@ -15,13 +15,20 @@ class PyPykwalify(PythonPackage): license("MIT") + version("1.8.0", sha256="796b2ad3ed4cb99b88308b533fb2f559c30fa6efb4fa9fda11347f483d245884") version("1.7.0", sha256="7e8b39c5a3a10bc176682b3bd9a7422c39ca247482df198b402e8015defcceb2") version("1.6.1", sha256="191fd3f457f23c0aa8538c3a5c0249f70eeb1046e88d0eaaef928e09c44dff8d") depends_on("py-setuptools", type="build") - depends_on("py-docopt@0.6.2:", type=("build", "run")) - depends_on("py-ruamel-yaml@0.11.0:", type=("build", "run")) - depends_on("py-python-dateutil@2.4.2:", type=("build", "run")) - depends_on("py-pyyaml@3.11:", type=("build", "run"), when="@1.6.1") + + with default_args(type=("build", "run")): + # Uses deprecated imp module + depends_on("python@:3.11", when="@:1.7") + depends_on("py-docopt@0.6.2:") + depends_on("py-ruamel-yaml@0.16:", when="@1.8:") + depends_on("py-ruamel-yaml@0.11:") + depends_on("py-python-dateutil@2.8:", when="@1.8:") + depends_on("py-python-dateutil@2.4.2:") + depends_on("py-pyyaml@3.11:", when="@1.6.1") conflicts("^py-ruamel-yaml@0.16.0:", when="@1.6.1") From a0940510df4fe1c7b2a8f2b4ae2b082f13594977 Mon Sep 17 00:00:00 2001 From: Alberto Invernizzi <9337627+albestro@users.noreply.github.com> Date: Wed, 16 Apr 2025 19:29:17 +0200 Subject: [PATCH 163/317] `libluv`, `tree-sitter`, `utf8-proc` and `unibilium`: bump update of (some of) neovim deps (#50054) * simple update of some of neovim deps * switch to neovim fork for unibilium and add newer versions * fix tree-sitter _DEFAULT_SOURCE vs _BSD_SOURCE * oneliner for filter_file --- .../repos/builtin/packages/libluv/package.py | 2 ++ .../builtin/packages/tree-sitter/package.py | 17 +++++++++++++++ .../builtin/packages/unibilium/package.py | 21 +++++++++++++++---- .../builtin/packages/utf8proc/package.py | 1 + 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/libluv/package.py b/var/spack/repos/builtin/packages/libluv/package.py index 2f04376a308..85f12e9769a 100644 --- a/var/spack/repos/builtin/packages/libluv/package.py +++ b/var/spack/repos/builtin/packages/libluv/package.py @@ -15,6 +15,8 @@ class Libluv(CMakePackage): license("Apache-2.0") + version("1.50.0-1", sha256="d867c3024d9c981d54f2edd83e13fd6dc1158f0608635f7b1c0f6b5586b5bc34") + version("1.48.0-2", sha256="2c3a1ddfebb4f6550293a40ee789f7122e97647eede51511f57203de48c03b7a") version("1.48.0-2", sha256="2c3a1ddfebb4f6550293a40ee789f7122e97647eede51511f57203de48c03b7a") version("1.45.0-0", sha256="fa6c46fb09f88320afa7f88017efd7b0d2b3a0158c5ba5b6851340b0332a2b81") version("1.44.2-1", sha256="3eb5c7bc44f61fbc4148ea30e3221d410263e0ffa285672851fc19debf9e5c30") diff --git a/var/spack/repos/builtin/packages/tree-sitter/package.py b/var/spack/repos/builtin/packages/tree-sitter/package.py index d4ae97486b3..4ffe6aadba0 100644 --- a/var/spack/repos/builtin/packages/tree-sitter/package.py +++ b/var/spack/repos/builtin/packages/tree-sitter/package.py @@ -18,6 +18,16 @@ class TreeSitter(MakefilePackage): license("MIT") + version("0.25.3", sha256="862fac52653bc7bc9d2cd0630483e6bdf3d02bcd23da956ca32663c4798a93e3") + version("0.25.2", sha256="26791f69182192fef179cd58501c3226011158823557a86fe42682cb4a138523") + version("0.25.1", sha256="99a2446075c2edf60e82755c48415d5f6e40f2d9aacb3423c6ca56809b70fe59") + version("0.25.0", sha256="3729e98e54a41a4c03f4f6c0be580d14ed88c113d75acf15397b16e05cf91129") + version("0.24.7", sha256="7cbc13c974d6abe978cafc9da12d1e79e07e365c42af75e43ec1b5cdc03ed447") + version("0.24.6", sha256="03c7ee1e6f9f4f3821fd4af0ae06e1da60433b304a73ff92ee9694933009121a") + version("0.24.5", sha256="b5ac48acf5a04fd82ccd4246ad46354d9c434be26c9606233917549711e4252c") + version("0.24.4", sha256="d704832a6bfaac8b3cbca3b5d773cad613183ba8c04166638af2c6e5dfb9e2d2") + version("0.24.3", sha256="0a8d0cf8e09caba22ed0d8439f7fa1e3d8453800038e43ccad1f34ef29537da1") + version("0.24.2", sha256="199da041ac7ef62bccdda9b7bec28aafa073f7eea2677680aa7992d503c9cc64") version("0.22.6", sha256="e2b687f74358ab6404730b7fb1a1ced7ddb3780202d37595ecd7b20a8f41861f") version("0.22.5", sha256="6bc22ca7e0f81d77773462d922cf40b44bfd090d92abac75cb37dbae516c2417") version("0.22.4", sha256="919b750da9af1260cd989498bc84c63391b72ee2aa2ec20fc84882544eb7a229") @@ -40,3 +50,10 @@ class TreeSitter(MakefilePackage): def edit(self, spec, prefix): env["PREFIX"] = prefix + + # Starting from 0.25.0 endianness is taken into account using system headers + # https://github.com/tree-sitter/tree-sitter/pull/3740 + # but GLIBC provides them according to some defines that changed over time. + # https://www.sourceware.org/glibc/wiki/Release/2.20#Deprecation_of__BSD_SOURCE_and__SVID_SOURCE_feature_macros + if spec.satisfies("@0.25: ^glibc@:2.19"): + filter_file("-D_DEFAULT_SOURCE", "-D_BSD_SOURCE", "Makefile") diff --git a/var/spack/repos/builtin/packages/unibilium/package.py b/var/spack/repos/builtin/packages/unibilium/package.py index 27983984fac..6e9df57159f 100644 --- a/var/spack/repos/builtin/packages/unibilium/package.py +++ b/var/spack/repos/builtin/packages/unibilium/package.py @@ -5,24 +5,37 @@ from spack.package import * -class Unibilium(Package): +class Unibilium(MakefilePackage, AutotoolsPackage): """A terminfo parsing library""" - homepage = "https://github.com/mauke/unibilium" - url = "https://github.com/mauke/unibilium/archive/v2.0.0.tar.gz" + homepage = "https://github.com/neovim/unibilium/" + url = "https://github.com/neovim/unibilium/archive/v2.1.2.tar.gz" license("LGPL-3.0-or-later") + version("2.1.2", sha256="370ecb07fbbc20d91d1b350c55f1c806b06bf86797e164081ccc977fc9b3af7a") + version("2.1.1", sha256="6f0ee21c8605340cfbb458cbd195b4d074e6d16dd0c0e12f2627ca773f3cabf1") + version("2.1.0", sha256="05bf97e357615e218126f7ac086e7056a23dc013cfac71643b50a18ad390c7d4") version("2.0.0", sha256="78997d38d4c8177c60d3d0c1aa8c53fd0806eb21825b7b335b1768d7116bc1c1") version("1.2.0", sha256="623af1099515e673abfd3cae5f2fa808a09ca55dda1c65a7b5c9424eb304ead8") - depends_on("c", type="build") # generated + depends_on("c", type="build") + + build_system( + conditional("makefile", when="@:2.1.1"), + conditional("autotools", when="@2.1.2:"), + default="autotools", + ) depends_on("gmake", type="build") depends_on("libtool", type="build") depends_on("perl", type="build") depends_on("gzip", type="build") + with when("build_system=autotools"): + depends_on("autoconf", when="@2.1.2:", type="build") + depends_on("automake", when="@2.1.2:", type="build") + def install(self, spec, prefix): make("PREFIX=" + prefix) make("install", "PREFIX=" + prefix) diff --git a/var/spack/repos/builtin/packages/utf8proc/package.py b/var/spack/repos/builtin/packages/utf8proc/package.py index c3600c9bc71..4e32e9c320f 100644 --- a/var/spack/repos/builtin/packages/utf8proc/package.py +++ b/var/spack/repos/builtin/packages/utf8proc/package.py @@ -12,6 +12,7 @@ class Utf8proc(CMakePackage): homepage = "https://juliastrings.github.io/utf8proc/" url = "https://github.com/JuliaStrings/utf8proc/archive/v2.4.0.tar.gz" + version("2.10.0", sha256="6f4f1b639daa6dca9f80bc5db1233e9cbaa31a67790887106160b33ef743f136") version("2.9.0", sha256="18c1626e9fc5a2e192311e36b3010bfc698078f692888940f1fa150547abb0c1") version("2.8.0", sha256="a0a60a79fe6f6d54e7d411facbfcc867a6e198608f2cd992490e46f04b1bcecc") version("2.7.0", sha256="4bb121e297293c0fd55f08f83afab6d35d48f0af4ecc07523ad8ec99aa2b12a1") From d4582945baf51bbb5ac4d222e4e1a7de5e460009 Mon Sep 17 00:00:00 2001 From: Caetano Melone Date: Wed, 16 Apr 2025 11:34:30 -0700 Subject: [PATCH 164/317] py-gidgetlab: add v2.0.0, v2.0.1, v2.1.0 (#50051) * py-gidgetlab: add v2.0.0-v2.1.0 1.1.0 doesn't work with Python 3.13. See this commit (and the tags that contain it) for history on build deps: https://gitlab.com/beenje/gidgetlab/-/commit/310bc109bad39957c9d1b4d4d19a380ee7b8b077. * group dependencies Co-authored-by: Alec Scott * set python version constraint Co-authored-by: Alec Scott --------- Co-authored-by: Alec Scott --- var/spack/repos/builtin/packages/py-gidgetlab/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-gidgetlab/package.py b/var/spack/repos/builtin/packages/py-gidgetlab/package.py index 35e3c8e47cd..a3f862ff815 100644 --- a/var/spack/repos/builtin/packages/py-gidgetlab/package.py +++ b/var/spack/repos/builtin/packages/py-gidgetlab/package.py @@ -18,13 +18,19 @@ class PyGidgetlab(PythonPackage): license("Apache-2.0") version("main", branch="main") + version("2.1.0", sha256="60c39516261b788e7643ae12fae106a79329450d908e821c9a591ab6c52ffe95") + version("2.0.1", sha256="bce8f8553c41823bff330eb9e1f0951f19feb7fc76a9effe3038f780377d984e") + version("2.0.0", sha256="f109c12a47c4b2cadd5485c6574d003807a07796585d75a21bd9e0d4ecd63c14") version("1.1.0", sha256="314ec2cddc898317ec45d99068665dbf33c0fee1f52df6671f28ad35bb51f902") variant( "aiohttp", default=False, description="Enable aiohttp functionality through dependency." ) + depends_on("python@:3.12", type=("build", "run"), when="@:1") + depends_on("py-setuptools@60:", type=("build", "run"), when="@2.0.0:") depends_on("py-setuptools@45:", type=("build", "run")) + depends_on("py-setuptools-scm@8.0:", type="build", when="@2.0.0:") depends_on("py-setuptools-scm@6.2:", type="build") depends_on("py-aiohttp", type=("build", "run"), when="+aiohttp") From 04f6881b76791d8b5f825052a26f2e8e6459a724 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 17 Apr 2025 07:55:32 +0200 Subject: [PATCH 165/317] Environment: remove leftover code to attach test deps (#50097) This should not be needed anymore after #49405 Signed-off-by: Massimiliano Culpo --- lib/spack/spack/environment/environment.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 93dca484d5a..96d023026f9 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -1605,23 +1605,6 @@ def _concretize_separately(self, tests=False): # Unify the specs objects, so we get correct references to all parents self._read_lockfile_dict(self._to_lockfile_dict()) - - # Re-attach information on test dependencies - if tests: - # This is slow, but the information on test dependency is lost - # after unification or when reading from a lockfile. - for h in self.specs_by_hash: - current_spec, computed_spec = self.specs_by_hash[h], by_hash[h] - for node in computed_spec.traverse(): - test_edges = node.edges_to_dependencies(depflag=dt.TEST) - for current_edge in test_edges: - test_dependency = current_edge.spec - if test_dependency in current_spec[node.name]: - continue - current_spec[node.name].add_dependency_edge( - test_dependency.copy(), depflag=dt.TEST, virtuals=current_edge.virtuals - ) - return concretized_specs @property From 986102ab7a35ba13f1acc90b039a82f99fbe8e54 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Thu, 17 Apr 2025 02:45:29 -0400 Subject: [PATCH 166/317] Revert "solver: encode `%` as "build requirement", not as "dependency" (#50011)" (#50092) This reverts commit 8fc1ccc686cdcdda71aab2d94abcfab3d99a2a89. conflicts("%gcc@:11", when="@2.17:") conflicts("%gcc", when="+ompt") regressed. --- lib/spack/spack/solver/asp.py | 59 ++++------------- lib/spack/spack/solver/concretize.lp | 51 ++------------- lib/spack/spack/test/concretization/core.py | 33 ---------- .../spack/test/concretization/requirements.py | 65 ------------------- 4 files changed, 17 insertions(+), 191 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 01d897c82e4..2982ecf6fc6 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -287,33 +287,9 @@ def specify(spec): return spack.spec.Spec(spec) -def remove_facts( - *to_be_removed: str, -) -> Callable[[spack.spec.Spec, List[AspFunction]], List[AspFunction]]: - """Returns a transformation function that removes facts from the input list of facts.""" - - def _remove(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: - return list(filter(lambda x: x.args[0] not in to_be_removed, facts)) - - return _remove - - -def remove_build_deps(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: - build_deps = {x.args[2]: x.args[1] for x in facts if x.args[0] == "depends_on"} - result = [] - for x in facts: - current_name = x.args[1] - if current_name in build_deps: - x.name = "build_requirement" - result.append(fn.attr("build_requirement", build_deps[current_name], x)) - continue - - if x.args[0] == "depends_on": - continue - - result.append(x) - - return result +def remove_node(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: + """Transformation that removes all "node" and "virtual_node" from the input list of facts.""" + return list(filter(lambda x: x.args[0] not in ("node", "virtual_node"), facts)) def all_libcs() -> Set[spack.spec.Spec]: @@ -1908,7 +1884,7 @@ def condition( if not context: context = ConditionContext() - context.transform_imposed = remove_facts("node", "virtual_node") + context.transform_imposed = remove_node if imposed_spec: imposed_name = imposed_spec.name or imposed_name @@ -2008,7 +1984,7 @@ def track_dependencies(input_spec, requirements): return requirements + [fn.attr("track_dependencies", input_spec.name)] def dependency_holds(input_spec, requirements): - result = remove_facts("node", "virtual_node")(input_spec, requirements) + [ + result = remove_node(input_spec, requirements) + [ fn.attr( "dependency_holds", pkg.name, input_spec.name, dt.flag_to_string(t) ) @@ -2198,10 +2174,7 @@ def emit_facts_from_requirement_rules(self, rules: List[RequirementRule]): pkg_name, ConstraintOrigin.REQUIRE ) if not virtual: - context.transform_required = remove_build_deps - context.transform_imposed = remove_facts( - "node", "virtual_node", "depends_on" - ) + context.transform_imposed = remove_node # else: for virtuals we want to emit "node" and # "virtual_node" in imposed specs @@ -2263,18 +2236,16 @@ def external_packages(self): if pkg_name not in self.pkgs: continue + self.gen.h2(f"External package: {pkg_name}") # Check if the external package is buildable. If it is # not then "external()" is a fact, unless we can # reuse an already installed spec. external_buildable = data.get("buildable", True) - externals = data.get("externals", []) - if not external_buildable or externals: - self.gen.h2(f"External package: {pkg_name}") - if not external_buildable: self.gen.fact(fn.buildable_false(pkg_name)) # Read a list of all the specs for this package + externals = data.get("externals", []) candidate_specs = [ spack.spec.parse_with_version_concrete(x["spec"]) for x in externals ] @@ -2605,16 +2576,6 @@ def _spec_clauses( # already-installed concrete specs. if concrete_build_deps or dspec.depflag != dt.BUILD: clauses.append(fn.attr("hash", dep.name, dep.dag_hash())) - elif not concrete_build_deps and dspec.depflag: - clauses.append( - fn.attr( - "concrete_build_dependency", spec.name, dep.name, dep.dag_hash() - ) - ) - for virtual_name in dspec.virtuals: - clauses.append( - fn.attr("virtual_on_build_edge", spec.name, dep.name, virtual_name) - ) # if the spec is abstract, descend into dependencies. # if it's concrete, then the hashes above take care of dependency @@ -3308,13 +3269,15 @@ def literal_specs(self, specs): # These facts are needed to compute the "condition_set" of the root pkg_name = clause.args[1] self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) + elif clause_name == "depends_on": + pkg_name = clause.args[2] + self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) requirements.append( fn.attr( "virtual_root" if spack.repo.PATH.is_virtual(spec.name) else "root", spec.name ) ) - requirements = [x for x in requirements if x.args[0] != "depends_on"] cache[imposed_spec_key] = (effect_id, requirements) self.gen.fact(fn.pkg_fact(spec.name, fn.condition_effect(condition_id, effect_id))) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 36064ee7b35..de25bbf5dac 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -175,21 +175,12 @@ trigger_node(TriggerID, Node, Node) :- % Since we trigger the existence of literal nodes from a condition, we need to construct the condition_set/2 mentioned_in_literal(Root, Mentioned) :- mentioned_in_literal(TriggerID, Root, Mentioned), solve_literal(TriggerID). -literal_node(Root, node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). +condition_set(node(min_dupe_id, Root), node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). -1 { literal_node(Root, node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- +1 { condition_set(node(min_dupe_id, Root), node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- mentioned_in_literal(Root, Mentioned), Mentioned != Root, internal_error("must have exactly one condition_set for literals"). -1 { build_dependency_of_literal_node(LiteralNode, node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 :- - literal_node(Root, LiteralNode), - build(LiteralNode), - attr("build_requirement", LiteralNode, build_requirement("node", BuildDependency)). - -condition_set(node(min_dupe_id, Root), LiteralNode) :- literal_node(Root, LiteralNode). -condition_set(LiteralNode, BuildNode) :- build_dependency_of_literal_node(LiteralNode, BuildNode). - - % Discriminate between "roots" that have been explicitly requested, and roots that are deduced from "virtual roots" explicitly_requested_root(node(min_dupe_id, Package)) :- solve_literal(TriggerID), @@ -481,35 +472,10 @@ provider(ProviderNode, VirtualNode) :- attr("provider_set", ProviderNode, Virtua imposed_constraint(ID, "depends_on", A1, A2, A3), internal_error("Build deps must land in exactly one duplicate"). -% If the parent is built, then we have a build_requirement on another node. For concrete nodes, -% or external nodes, we don't since we are trimming their build dependencies. -1 { attr("depends_on", node(X, Parent), node(0..Y-1, BuildDependency), "build") : max_dupes(BuildDependency, Y) } 1 +1 { build_requirement(node(X, Parent), node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 :- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), - build(node(X, Parent)), - not external(node(X, Parent)). - -:- attr("build_requirement", ParentNode, build_requirement("node", BuildDependency)), - concrete(ParentNode), - not attr("concrete_build_dependency", ParentNode, BuildDependency, _). - -:- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), - attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), - not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. - -:- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), - attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), - attr("virtual_on_build_edge", ParentNode, BuildDependency, Virtual), - not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. - -% Asking for gcc@10 %gcc@9 shouldn't give us back an external gcc@10, just because of the hack -% we have on externals -:- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), - Parent == BuildDependency, - external(node(X, Parent)). - -build_requirement(node(X, Parent), node(Y, BuildDependency)) :- - attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build"), - attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)). + impose(ID, node(X, Parent)), + imposed_constraint(ID,"build_requirement",Parent,_). 1 { virtual_build_requirement(ParentNode, node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("dependency_holds", ParentNode, Virtual, "build"), @@ -530,6 +496,7 @@ attr("node_version_satisfies", node(X, BuildDependency), Constraint) :- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), build_requirement(ParentNode, node(X, BuildDependency)). +attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build") :- build_requirement(node(X, Parent), node(Y, BuildDependency)). 1 { attr("provider_set", node(X, BuildDependency), node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), @@ -915,12 +882,6 @@ requirement_weight(node(ID, Package), Group, W) :- requirement_policy(Package, Group, "one_of"), requirement_group_satisfied(node(ID, Package), Group). - { attr("build_requirement", node(ID, Package), BuildRequirement) : condition_requirement(TriggerID, "build_requirement", Package, BuildRequirement) } :- - pkg_fact(Package, condition_trigger(ConditionID, TriggerID)), - requirement_group_member(ConditionID, Package, Group), - activate_requirement(node(ID, Package), Group), - requirement_group(Package, Group). - requirement_group_satisfied(node(ID, Package), X) :- 1 { condition_holds(Y, node(ID, Package)) : requirement_group_member(Y, Package, X) } , requirement_policy(Package, X, "any_of"), diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index b28c3337f11..b6c8453da4a 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -3333,36 +3333,3 @@ def test_specifying_compilers_with_virtuals_syntax(default_mock_concretization): assert mpich["fortran"].satisfies("gcc") assert mpich["c"].satisfies("llvm") assert mpich["cxx"].satisfies("llvm") - - -@pytest.mark.regression("49847") -@pytest.mark.xfail(sys.platform == "win32", reason="issues with install mockery") -def test_reuse_when_input_specifies_build_dep(install_mockery, do_not_check_runtimes_on_reuse): - """Test that we can reuse a spec when specifying build dependencies in the input""" - pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9 %gcc@9")) - PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() - - with spack.config.override("concretizer:reuse", True): - result = spack.concretize.concretize_one("pkg-b %gcc") - assert pkgb_old.dag_hash() == result.dag_hash() - - result = spack.concretize.concretize_one("pkg-a ^pkg-b %gcc@9") - assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() - assert result.satisfies("%gcc@9") - - result = spack.concretize.concretize_one("pkg-a %gcc@10 ^pkg-b %gcc@9") - assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() - - -@pytest.mark.regression("49847") -def test_reuse_when_requiring_build_dep( - install_mockery, do_not_check_runtimes_on_reuse, mutable_config -): - """Test that we can reuse a spec when specifying build dependencies in requirements""" - mutable_config.set("packages:all:require", "%gcc") - pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9")) - PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() - - with spack.config.override("concretizer:reuse", True): - result = spack.concretize.concretize_one("pkg-b") - assert pkgb_old.dag_hash() == result.dag_hash(), result.tree() diff --git a/lib/spack/spack/test/concretization/requirements.py b/lib/spack/spack/test/concretization/requirements.py index c381a2d6d7d..fe768611de7 100644 --- a/lib/spack/spack/test/concretization/requirements.py +++ b/lib/spack/spack/test/concretization/requirements.py @@ -1239,68 +1239,3 @@ def test_virtual_requirement_respects_any_of(concretize_scope, mock_packages): with pytest.raises(spack.error.SpackError): spack.concretize.concretize_one("mpileaks ^[virtuals=mpi] zmpi") - - -@pytest.mark.parametrize( - "packages_yaml,expected_reuse,expected_contraints", - [ - ( - """ -packages: - all: - require: - - "%gcc" - """, - True, - # To minimize installed specs we reuse pkg-b compiler, since the requirement allows it - ["%gcc@9"], - ), - ( - """ -packages: - all: - require: - - "%gcc@10" - """, - False, - ["%gcc@10"], - ), - ( - """ -packages: - all: - require: - - "%gcc" - pkg-a: - require: - - "%gcc@10" - """, - True, - ["%gcc@10"], - ), - ], -) -@pytest.mark.regression("49847") -def test_requirements_on_compilers_and_reuse( - concretize_scope, mock_packages, packages_yaml, expected_reuse, expected_contraints -): - """Tests that we can require compilers with `%` in configuration files, and still get reuse - of specs (even though reused specs have no build dependency in the ASP encoding). - """ - input_spec = "pkg-a" - - reused_spec = spack.concretize.concretize_one("pkg-b@0.9 %gcc@9") - reused_nodes = list(reused_spec.traverse()) - update_packages_config(packages_yaml) - root_specs = [Spec(input_spec)] - - with spack.config.override("concretizer:reuse", True): - solver = spack.solver.asp.Solver() - setup = spack.solver.asp.SpackSolverSetup() - result, _, _ = solver.driver.solve(setup, root_specs, reuse=reused_nodes) - pkga = result.specs[0] - is_pkgb_reused = pkga["pkg-b"].dag_hash() == reused_spec.dag_hash() - - assert is_pkgb_reused == expected_reuse - for c in expected_contraints: - assert pkga.satisfies(c), print(pkga.tree()) From a573f2248d922caaa9c18580e85f204b39d866ae Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Thu, 17 Apr 2025 09:54:43 +0200 Subject: [PATCH 167/317] new package: theia-ide (#49539) --- .../builtin/packages/theia-ide/package.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/theia-ide/package.py diff --git a/var/spack/repos/builtin/packages/theia-ide/package.py b/var/spack/repos/builtin/packages/theia-ide/package.py new file mode 100644 index 00000000000..25afeb2336a --- /dev/null +++ b/var/spack/repos/builtin/packages/theia-ide/package.py @@ -0,0 +1,59 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class TheiaIde(Package): + """A modern and open IDE for cloud and desktop. + The Theia IDE is based on the Theia platform.""" + + homepage = "https://theia-ide.org/" + url = "https://github.com/eclipse-theia/theia-ide/archive/refs/tags/v1.59.1.tar.gz" + + maintainers("RobertMaaskant") + + license("MIT", checked_by="RobertMaaskant") + + version("1.59.1", sha256="f3e4fdb76aa0d5a4f034d9fe8889e8c798425d8c0a452688277002b7f09ea7d0") + + conflicts("platform=darwin", msg="Currently only packaged for Linux") + conflicts("platform=windows", msg="Currently only packaged for Linux") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + with default_args(type="build"): + depends_on("gmake") + depends_on("kbproto") + depends_on("libsecret") + depends_on("libx11") + depends_on("libxau") + depends_on("libxcb") + depends_on("libxdmcp") + depends_on("libxkbfile") + depends_on("pkg-config") + depends_on("xproto") + + depends_on("npm@10.8.2:") + depends_on("yarn@1.7.0:1") + + # required by node-gyp ^9.0.0: https://github.com/eclipse-theia/theia/blob/v1.59.0/package.json#L45 + # https://github.com/nodejs/node-gyp/tree/v9.0.0?tab=readme-ov-file#on-unix + depends_on("python@3.7:3.10") + + with default_args(type="run"): + depends_on("git@2.11.0:") + # https://github.com/microsoft/vscode/blob/1.98.2/.nvmrc + depends_on("node-js@20.18.2:20") + + def install(self, spec, prefix): + yarn = which("yarn", required=True) + yarn() + yarn("build") + yarn("download:plugins") + yarn("package:applications") + + mkdirp(prefix.bin) + install("applications/electron/dist/TheiaIDE.AppImage", prefix.bin.join("theia-ide")) From 0d7c0c83627e7ea4ab8d5813eaf0e8632ad81046 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Thu, 17 Apr 2025 09:55:57 +0200 Subject: [PATCH 168/317] py-deephyper: add v0.9.3 (#49604) * py-deephyper: deprecate versions requiring old setuptools versions * py-deephyper: add v0.9.3 * py-deephyper: wip * py-deephyper: use nested context managers * py-deephyper: comment out py-pymoo dep * py-deephyper: deprecate versions requiring old setuptools versions * py-deephyper: add v0.9.3 * py-deephyper: wip * py-deephyper: use nested context managers * sync with deephyper developer spack repo * py-deephyper: disable variants jax-cpu and redis Both variants require depedencies missing in Spack. * py-deephyper: add back dependencies for deprecated versions * fixup! py-deephyper: add back dependencies for deprecated versions * py-deephyper: fix copyright notice * py-deephyper: add back license --------- Co-authored-by: Brett Eiffert --- .../builtin/packages/py-deephyper/package.py | 130 ++++++++++++++---- 1 file changed, 100 insertions(+), 30 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-deephyper/package.py b/var/spack/repos/builtin/packages/py-deephyper/package.py index e6f9c5c0d0e..adba194eb0a 100644 --- a/var/spack/repos/builtin/packages/py-deephyper/package.py +++ b/var/spack/repos/builtin/packages/py-deephyper/package.py @@ -7,44 +7,114 @@ class PyDeephyper(PythonPackage): - """Scalable asynchronous neural architecture and hyperparameter - search for deep neural networks.""" + """Scalable asynchronous hyperparameter optimization, neural architecture search, + and parallel ensemble of predictive models.""" homepage = "https://deephyper.readthedocs.io/" - pypi = "deephyper/deephyper-0.4.2.tar.gz" + pypi = "deephyper/deephyper-0.9.3.tar.gz" git = "https://github.com/deephyper/deephyper.git" - maintainers("mdorier", "Deathn0t") + maintainers("mdorier", "Deathn0t", "bretteiffert") license("BSD-3-Clause") + # Versions version("master", branch="master") - version("0.6.0", sha256="cda2dd7c74bdca4203d9cd637c4f441595f77bae6d77ef8e4a056b005357de34") - version("0.4.2", sha256="ee1811a22b08eff3c9098f63fbbb37f7c8703e2f878f2bdf2ec35a978512867f") + version("develop", branch="develop") + version("0.9.3", sha256="e28f9f6ca596edee7fa73f7377ca17ddab99ac4b3c7f15db27cb6e786f770f23") + version("0.8.1", sha256="ac27edd62ff81fcfb9b0b49f44963dadd8338be687f8f616d4cbdd6f5c68e511") - depends_on("python@3.7:3.9", type=("build", "run")) - depends_on("python@3.7:3.11", type=("build", "run"), when="@0.6.0") + # Variants for machine learning features + # exists upstream, disabled in Spack due to missing dependencies, contributions welcome + # variant("jax-cpu", default=False, description="Build with JAX dependencies") + variant("torch", default=False, description="Build with PyTorch dependencies") - depends_on("py-setuptools@42:", type="build", when="@0.6.0") - depends_on("py-setuptools@40:49.1", type="build") - depends_on("py-wheel@0.36.2", type="build") - depends_on("py-cython@0.29.24:", type="build", when="@0.6.0") - depends_on("py-cython@0.29.24:2", type="build", when="@0.4.2") + # Variants for storage/parallel backends + variant("mpi", default=False, description="Build with MPI dependencies") + variant("ray", default=False, description="Build with Ray dependencies") + # exists upstream, disabled in Spack due to missing dependencies, contributions welcome + # variant("redis", default=False, description="Build with Redis dependencies") - depends_on("py-configspace@0.4.20:", type=("build", "run")) - depends_on("py-dm-tree", type=("build", "run")) - depends_on("py-jinja2@:3.1", type=("build", "run"), when="@0.6.0") - depends_on("py-jinja2@:3.0", type=("build", "run"), when="@0.4.2") - depends_on("py-numpy@1.20:", type=("build", "run"), when="@0.6.0") - depends_on("py-numpy", type=("build", "run")) - depends_on("py-pandas@0.24.2:", type=("build", "run")) - depends_on("py-packaging", type=("build", "run")) - depends_on( - "py-packaging@20.5:", type=("build", "run"), when="@0.6.0 target=aarch64: platform=darwin" - ) - depends_on("py-scikit-learn@0.23.1:", type=("build", "run")) - depends_on("py-scipy@1.7:", type=("build", "run"), when="@0.6.0") - depends_on("py-scipy@0.19.1:", type=("build", "run")) - depends_on("py-tqdm@4.64.0:", type=("build", "run")) - depends_on("py-pyyaml", type=("build", "run")) - depends_on("py-tinydb", type=("build", "run"), when="@0.4.2") + # Variants for developers + variant("dev", default=False, description="Build with dev dependencies") + + with default_args(deprecated=True): + version("0.6.0", sha256="cda2dd7c74bdca4203d9cd637c4f441595f77bae6d77ef8e4a056b005357de34") + version("0.4.2", sha256="ee1811a22b08eff3c9098f63fbbb37f7c8703e2f878f2bdf2ec35a978512867f") + + # Build backend + with default_args(type="build"): + depends_on("py-hatchling@1.25:", when="@master") + depends_on("py-hatchling@1.25:", when="@develop") + depends_on("py-hatchling@1.25:", when="@0.9:") + + depends_on("py-setuptools@42:", when="@0.8:") + depends_on("py-setuptools@42:", when="@0.6.0") + depends_on("py-setuptools@40:49.1", when="@:0.6") + + depends_on("py-cython@0.29.24:", when="@0.8:") + depends_on("py-cython@0.29.24:", when="@0.6.0") + depends_on("py-cython@0.29.24:2", when="@0.4.2") + + depends_on("py-wheel@0.36.2", when="@:0.6") + + # Python versions + with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@0.9:") + depends_on("python@3.9:", when="@0.8:") + depends_on("python@3.7:3.11", when="@0.6.0") + depends_on("python@3.7:3.9", when="@0.4.2") + + # Dependencies from setup/toml files + with default_args(type=("build", "run")): + depends_on("py-alive-progress@3.2.0:", when="@0.8:") + depends_on("py-configspace@1.1.1:", when="@0.8:") + depends_on("py-configspace@0.4.20:") + depends_on("py-cloudpickle", when="@0.9.3:") + depends_on("py-dm-tree") + depends_on("py-jinja2@3.1.4:", when="@0.8:") + depends_on("py-jinja2@:3.1", when="@0.6.0") + depends_on("py-jinja2@:3.0", when="@0.4.2") + depends_on("py-loky@3.4:", when="@0.9.3:") + depends_on("py-matplotlib") + depends_on("py-numpy@1.26.0:", when="@0.8:") + depends_on("py-numpy@1.20:", when="@0.6.0") + depends_on("py-numpy") + depends_on("openssl@3.4.0:", when="@0.8:") + depends_on("py-pandas@0.24.2:") + depends_on("py-packaging@20.5:", when="@0.6.0 target=aarch64: platform=darwin") + depends_on("py-packaging") + depends_on("py-parse", when="@0.8:") + depends_on("py-psutil", when="@0.8:") + depends_on("py-pymoo@0.6:", when="@0.8:") + depends_on("py-pyyaml", when="@0.8:") + depends_on("py-scikit-learn@0.23.1:") + depends_on("py-scipy@1.10:", when="@0.8:") + depends_on("py-scipy@1.7:", when="@0.6.0") + depends_on("py-scipy@0.19.1:") + depends_on("py-tqdm@4.64.0:") + depends_on("py-psutil", when="@0.8:") + depends_on("py-pymoo@0.6:", when="@0.8:") + depends_on("py-pyyaml") + depends_on("py-tinydb", when="@0.4.2") + + with when("+dev"), default_args(type=("build", "run")): + depends_on("py-pytest") + + # # Jax for GPU is not currently available on Spack + # with when("+jax-cpu"), default_args(type=("build", "run")): + # depends_on("py-jax@0.4.3:", when="@0.8:") + # depends_on("py-numpyro@0.15.3:", when="@0.8:") + + with when("+torch"), default_args(type=("build", "run")): + depends_on("py-torch@2:", when="@0.8:") + + with when("+mpi"), default_args(type=("build", "run")): + depends_on("py-mpi4py@3:", when="@0.8:") + + with when("+ray"), default_args(type=("build", "run")): + depends_on("py-ray", when="@0.8:") + + # with when("+redis"), default_args(type=("build", "run")): + # depends_on("py-redis") + # depends_on("redisjson") From eab1d6df80fd7b16908760e31ed4c2096df2d912 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Thu, 17 Apr 2025 02:00:27 -0600 Subject: [PATCH 169/317] flux-core: add v0.68.0 -> v0.73.0 (#49893) * Automated deployment to update package flux-core 2025-04-04 * Add py-packaging * Do not pin py-packaging * flux-sched: build older flux-core flux sched 0.38 was the first that required gcc version 12 or higher, and flux-core continued to build for some time, but eventually added features that we are now seeing break with sched 0.37 and the latest flux. This conflicts should ensure that older flux-sched, which is being built by having an older compiler, only builds with flux-core up to 0.68. Signed-off-by: vsoch --------- Signed-off-by: vsoch Co-authored-by: github-actions Co-authored-by: vsoch --- var/spack/repos/builtin/packages/flux-core/package.py | 9 +++++++++ var/spack/repos/builtin/packages/flux-sched/package.py | 1 + 2 files changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py index e5d733c4bf4..c96d323131e 100644 --- a/var/spack/repos/builtin/packages/flux-core/package.py +++ b/var/spack/repos/builtin/packages/flux-core/package.py @@ -20,6 +20,12 @@ class FluxCore(AutotoolsPackage): license("LGPL-3.0-only") version("master", branch="master") + version("0.73.0", sha256="d029c3da68bd0a0bea40d964de772e90a55eec72303b610396882f9e94d8c0c6") + version("0.72.0", sha256="1642d9f93cca6e0e934b534609787a31753462215ab376d190cdced16c386524") + version("0.71.0", sha256="023fd3e2153e20ba28cdf60fefa14d60053df61de3b9e273bf6f9a9ebdef0b52") + version("0.70.0", sha256="f68fbc2038d7c0d54c71260b4a8253a73cf6abc09a663ab060a00a4181a9fa94") + version("0.69.0", sha256="c44fe9c41e54c2a7dcde24c660c07c8b422072540add0447cbba867719e167b5") + version("0.68.0", sha256="fd3d0b0b13136f3914733c7f9e775372a8808d3c7c724ba076fda277a5abeae3") version("0.67.0", sha256="9406e776cbeff971881143fd1b94c42ec912e5b226401d2d3d91d766dd81de8c") version("0.66.0", sha256="0a25cfb1ebc033c249614eb2350c6fb57b00cdf3c584d0759c787f595c360daa") version("0.65.0", sha256="a60bc7ed13b8e6d09e99176123a474aad2d9792fff6eb6fd4da2a00e1d2865ab") @@ -98,6 +104,9 @@ class FluxCore(AutotoolsPackage): depends_on("py-jsonschema@2.3:", type=("build", "run"), when="@:0.58.0") depends_on("py-ply", type=("build", "run"), when="@0.46.1:") depends_on("py-setuptools", type="build", when="@0.67.0:") + # distutils was dropped in Python 3.12, this fallback was added 9/19/2023 + # for version 0.54.0 but we don't need it until setuptools is dropped + depends_on("py-packaging", type=("build", "run")) depends_on("jansson@2.10:") depends_on("pkgconfig") depends_on("lz4") diff --git a/var/spack/repos/builtin/packages/flux-sched/package.py b/var/spack/repos/builtin/packages/flux-sched/package.py index 4dbab624bfb..fd3e8ce6a59 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -81,6 +81,7 @@ class FluxSched(CMakePackage, AutotoolsPackage): conflicts("%gcc@:9.3", when="@0.34:") conflicts("%gcc@:11", when="@0.37:", msg="gcc version must be 12 or higher") conflicts("%clang@:14", when="@0.37:", msg="clang must be version 15 or higher") + conflicts("flux-core@0.68:", when="@:0.38", msg="sched before 0.38 requires older core") depends_on("py-sphinx@1.6.3:", when="+docs", type="build") depends_on("flux-core", type=("build", "link", "run")) From 4024200d61a873ff51665908a3ec8a92861a05e7 Mon Sep 17 00:00:00 2001 From: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com> Date: Thu, 17 Apr 2025 13:34:12 +0530 Subject: [PATCH 170/317] aocc: add missing attributes (#50082) Co-authored-by: viveshar --- var/spack/repos/builtin/packages/aocc/package.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/aocc/package.py b/var/spack/repos/builtin/packages/aocc/package.py index 1a73fc7533c..9fe90d92319 100644 --- a/var/spack/repos/builtin/packages/aocc/package.py +++ b/var/spack/repos/builtin/packages/aocc/package.py @@ -64,7 +64,7 @@ class Aocc(Package, LlvmDetection, CompilerPackage): # Licensing license_url = "https://www.amd.com/en/developer/aocc/aocc-compiler/eula.html" - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("libxml2") @@ -116,6 +116,15 @@ def cfg_files(self): with open(join_path(self.prefix.bin, "{}.cfg".format(compiler)), "w") as f: f.write(compiler_options) + def _cc_path(self): + return os.path.join(self.spec.prefix.bin, "clang") + + def _cxx_path(self): + return os.path.join(self.spec.prefix.bin, "clang++") + + def _fortran_path(self): + return os.path.join(self.spec.prefix.bin, "flang") + compiler_version_regex = r"AOCC_(\d+[._]\d+[._]\d+)" fortran_names = ["flang"] From b75e35289c3ff84e4e0bd485259b73ca1f08d444 Mon Sep 17 00:00:00 2001 From: "Garth N. Wells" Date: Thu, 17 Apr 2025 09:13:22 +0100 Subject: [PATCH 171/317] py-scikit-build-core: add v.0.11.1 (#50088) --- .../repos/builtin/packages/py-scikit-build-core/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-scikit-build-core/package.py b/var/spack/repos/builtin/packages/py-scikit-build-core/package.py index 61417047859..b1ce8fe23b2 100644 --- a/var/spack/repos/builtin/packages/py-scikit-build-core/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-build-core/package.py @@ -18,6 +18,7 @@ class PyScikitBuildCore(PythonPackage): license("Apache-2.0") + version("0.11.1", sha256="4e5988df5cd33f0bdb9967b72663ca99f50383c9bc21d8b24fa40c0661ae72b7") version("0.10.7", sha256="04cbb59fe795202a7eeede1849112ee9dcbf3469feebd9b8b36aa541336ac4f8") version("0.9.5", sha256="2a4cb119cc968fe87ae05582979657cc0e7be45655798446eabbe490e61ce072") version("0.8.2", sha256="50ec24b9568c9aa6e27233deeb2978932bc79856212b30575cbfa4049655c436") @@ -44,7 +45,8 @@ class PyScikitBuildCore(PythonPackage): depends_on("py-importlib-metadata@1:", when="@0.9: ^python@:3.7") depends_on("py-importlib-metadata", when="@0.3.0: ^python@:3.7") depends_on("py-importlib-resources@1.3:", when="^python@:3.8", type=("build", "run")) - depends_on("py-packaging@21.3:", type=("build", "run"), when="@0.9:") + depends_on("py-packaging@23.2:", type=("build", "run"), when="@0.10:") + depends_on("py-packaging@21.3:", type=("build", "run"), when="@0.9") depends_on("py-packaging@20.9:", type=("build", "run")) depends_on("py-pathspec@0.10.1:", type=("build", "run"), when="@0.9:") depends_on("py-tomli@1.2.2:", when="@0.9: ^python@:3.10", type=("build", "run")) @@ -73,8 +75,8 @@ class PyScikitBuildCore(PythonPackage): depends_on("py-setuptools@45:", when="@0.9: ^python@3.9", type="test") depends_on("py-setuptools@49:", when="@0.9: ^python@3.10:3.11", type="test") depends_on("py-setuptools@66.1:", when="@0.9: ^python@3.12:", type="test") - depends_on("py-virtualenv@20.0.28:", when="@0.9:", type="test") depends_on("py-setuptools", type="test") + depends_on("py-virtualenv@20.0.28:", when="@0.9:", type="test") depends_on("py-virtualenv", when="@0.6:", type="test") depends_on("py-wheel@0.40:", when="@0.9:", type="test") depends_on("py-wheel", type="test") From 8fb5898d108c4b4e42add0c248abc63f6a1ac45a Mon Sep 17 00:00:00 2001 From: Till Ehrengruber Date: Thu, 17 Apr 2025 11:50:12 +0200 Subject: [PATCH 172/317] cudnn: aarch64 hash for several version (#46272) * cudnn: aarch64 hash for several version * Remove spurious newline * Fix format * [@spackbot] updating style on behalf of tehrengruber * Fix cudnn 8.8 link derivation for aarch64 * Use sbsa for cudnn >= 8.3.1 * Fix typo * Temporarily remove hashes * Undo * Use sbsa for cudnn >= 8.3.1 * Update hashes --------- Co-authored-by: tehrengruber Co-authored-by: Till Ehrengruber --- .../repos/builtin/packages/cudnn/package.py | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index 9118e22e461..3b45c386ae4 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -11,51 +11,58 @@ # cuDNN 9.8.0 "9.8.0.87-12": { "Linux-x86_64": "321b9b33bb1287404d93d5672d352f16feabc4b220ac6ae0b86e4b27f257dcf4", - "Linux-aarch64": "f03ece3ff07d1719f06218973a8797cec1be387cc317baab5bb118dc988199e7", + "Linux-aarch64": "22f62f474f0cbb35bef540adb1d841da63c9cd3df76b3c4e43010f436b2cd85c", }, "9.8.0.87-11": { - "Linux-x86_64": "cf4dfaef8311d987d640a322f668cd5240ac3e5302abe9617dd991b5b2532758" + "Linux-x86_64": "cf4dfaef8311d987d640a322f668cd5240ac3e5302abe9617dd991b5b2532758", + "Linux-aarch64": "8ff117715fb3323032d1b489880117556ad8b5e57a9060143f0cb72384db7710", }, # cuDNN 9.7.1 "9.7.1.26-12": { "Linux-x86_64": "109a5e5c6bcdf4396e6f63f3f862ed2dcf16ee93ee034dc704a1b11bdf00c0b1", - "Linux-aarch64": "8c33d601728e8896296e53f08391544a1ec5d03820e7d2cb9ddfa95fdcbbaf5c", + "Linux-aarch64": "92824550a95eb275b06c90998410e12ce05140e0508f0905644c654c9ed7a764", }, "9.7.1.26-11": { - "Linux-x86_64": "73aadf2d1b721a34bd7b90908d02906257f2addbd246cf8db58e21d68d855ea2" + "Linux-x86_64": "73aadf2d1b721a34bd7b90908d02906257f2addbd246cf8db58e21d68d855ea2", + "Linux-aarch64": "25ca58ff295401a8f7edbceb2657ab483c4ee4a80f9a92f8d0cbe5f15aae1cde", }, # cuDNN 9.6.0 "9.6.0.74-12": { "Linux-x86_64": "72595f0d17d952cf568c1d76e370a9c303bb08c2f80888a8cf33e316a65d46a8", - "Linux-aarch64": "6f907bf97731d30ffd55dcc53fe8aa666b583b2c0c6b20e88c7341f98bb0b594", + "Linux-aarch64": "f71fb008833fa92f9eac02c0b786a21f5e383470235ddeb1eee98fe370148ace", }, "9.6.0.74-11": { - "Linux-x86_64": "9717b0022d4f5ea88ccd9796bef7ad1cc5d04b3bd53f690041767aabfb98d14d" + "Linux-x86_64": "9717b0022d4f5ea88ccd9796bef7ad1cc5d04b3bd53f690041767aabfb98d14d", + "Linux-aarch64": "5f7440fd8269f7a7986bff89dd6924e4145644a94958ab49f146b6f8c0230d46", }, # cuDNN 9.5.1 "9.5.1.17-12": { "Linux-x86_64": "35dd20b9c68324ae1288ac36f66ab1f318d2bfecfafb703a82617aa283272be4", - "Linux-aarch64": "0099b8e4081ac146f802e769cdd30d9e01a289ea0fd056e64e44297a13e1aa0c", + "Linux-aarch64": "340c49b32c133b0321c5c5b00d14fb64887dcac83ee8fd24195d9191061f1ad7", }, "9.5.1.17-11": { - "Linux-x86_64": "b1f5050cd2bfd7fa9d3d0dd00d417cc2124692d8421295e12f841be6c8e3a426" + "Linux-x86_64": "b1f5050cd2bfd7fa9d3d0dd00d417cc2124692d8421295e12f841be6c8e3a426", + "Linux-aarch64": "ad68d12ee351b5f3478078fc8188eefb8712721c3e501c9345ec5ffb0b85fae8", }, # cuDNN 9.2.0 "9.2.0.82-12": { "Linux-x86_64": "1362b4d437e37e92c9814c3b4065db5106c2e03268e22275a5869e968cee7aa8", - "Linux-aarch64": "24cc2a0308dfe412c02c7d41d4b07ec12dacb021ebf8c719de38eb77d22f68c1", + "Linux-aarch64": "2b017070bbd361aa2d8f7ef84620c2e66062b9424a477b08cba925316c85aed1", }, "9.2.0.82-11": { - "Linux-x86_64": "99dcb3fa2bf7eed7f35b0f8e58e7d1f04d9a52e01e382efc1de16fed230d3b26" + "Linux-x86_64": "99dcb3fa2bf7eed7f35b0f8e58e7d1f04d9a52e01e382efc1de16fed230d3b26", + "Linux-aarch64": "62973737acc11c20f0640e63248a8d988b53b6aad219cf17eaff63a05970853d", }, # cuDNN 8.9.7 "8.9.7.29-12": { "Linux-x86_64": "475333625c7e42a7af3ca0b2f7506a106e30c93b1aa0081cd9c13efb6e21e3bb", "Linux-ppc64le": "8574d291b299f9cc0134304473c9933bd098cc717e8d0876f4aba9f9eebe1b76", + "Linux-aarch64": "e98b7c80010785e5d5ca01ee4ce9b5b0c8c73587ea6f8648be34d3f8d1d47bd1", }, "8.9.7.29-11": { "Linux-x86_64": "a3e2509028cecda0117ce5a0f42106346e82e86d390f4bb9475afc976c77402e", "Linux-ppc64le": "f23fd7d59f9d4f743fa926f317dab0d37f6ea21edb2726ceb607bea45b0f9f36", + "Linux-aarch64": "91c37cfb458f541419e98510f13aaf5975c0232c613e18b776385490074eea17", }, # cuDNN 8.9.5 "8.9.5.30-12": { @@ -66,25 +73,29 @@ "8.9.5.30-11": { "Linux-x86_64": "bbe10e3c08cd7e4aea1012213781e4fe270e1c908263444f567cafefb2cc6525", "Linux-ppc64le": "d678f8b2903b95de7eeaef38890c5674705864ea049b2b63e90565f2c0ea682f", + "Linux-aarch64": "50e3d38cb70a53bb059da0aefc60e1460729c6988e2697200c43b80d218e556c", }, # cuDNN 8.9.0 "8.9.0.131-12": { "Linux-x86_64": "477631002be61022b60961cba0a501271507a93f81d6b08384bc320cb8706c98", "Linux-ppc64le": "ff239e4cbbf21fa18104b62a887686e2197f820ad58817d62e509c735a331829", - "Linux-aarch64": "fab70f4fb3b933ff502200a1d954d2c6fc205ff9c9b1d271ea4c41e980a66596", + "Linux-aarch64": "0f09605e282dcf7f66eb3957c394c197e8b8a4d41635a880e217fc8d37342e0f", }, "8.9.0.131-11": { "Linux-x86_64": "3cb82c50723f14b41d43523f222cd52cc9d50b3ad67c380f4be51bd1133daa2d", "Linux-ppc64le": "18778de490550c5b584e96560208e5e37678397037946e10a1c2824174c69725", + "Linux-aarch64": "3e50e31833718a9d755c0ae8f126e9f0f62213d9d2b0a545a6bc2dcafda2386f", }, # cuDNN 8.8.1 "8.8.1.3-12": { "Linux-x86_64": "79d77a769c7e7175abc7b5c2ed5c494148c0618a864138722c887f95c623777c", "Linux-ppc64le": "b0e89021a846952cad8cfc674edce2883f6e344ebd47a2394f706b1136715bc7", + "Linux-aarch64": "9e3977aa1b9d06eb860b582ac8933630675a0243029c259bfec5bb5699867d20", }, "8.8.1.3-11": { "Linux-x86_64": "af7584cae0cc5524b5913ef08c29ba6154113c60eb0a37a0590a91b515a8a8f9", "Linux-ppc64le": "d086003d09d5388aa42142f07483a773aa74b602478b0933e24fc63f56f1658f", + "Linux-aarch64": "3b35aaf9a4249886d938d996498c85a19cde9b74657685f2272ec6553e863359", }, # cuDNN 8.7.0 "8.7.0.84-11.8": { @@ -366,7 +377,7 @@ def url_for_version(self, version): .replace("darwin", "osx") .replace("aarch64", "aarch64sbsa") ) - elif version < Version("8.8.0"): + else: sys_key = sys_key.replace("aarch64", "sbsa") if version >= Version("8.3.1"): From fcfbc28e10bae0d8830ebc0285156131d256384c Mon Sep 17 00:00:00 2001 From: Rocco Meli Date: Thu, 17 Apr 2025 13:02:36 +0200 Subject: [PATCH 173/317] dla-future-fortran: add v0.4.0 (#50095) --- .../repos/builtin/packages/dla-future-fortran/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 e68bef59f41..189abac91a5 100644 --- a/var/spack/repos/builtin/packages/dla-future-fortran/package.py +++ b/var/spack/repos/builtin/packages/dla-future-fortran/package.py @@ -20,17 +20,18 @@ class DlaFutureFortran(CMakePackage): license("BSD-3-Clause") version("main", branch="main") + version("0.4.0", sha256="1c42ed1a12b472ee02702c507a0a4fc94d2090701726ebc782b1b5e8278c8c5b") version("0.3.0", sha256="404ce0d2d3df9317764450158901fd6cb2198b37f5687e9616519100ad6e9ece") version("0.2.0", sha256="7fd3e1779c111b35f0d2701a024398b4f6e8dea4af523b6c8617d28c0b7ae61a") version("0.1.0", sha256="9fd8a105cbb2f3e1daf8a49910f98fce68ca0b954773dba98a91464cf2e7c1da") - variant("shared", default=True, description="Build shared libraries.") - variant("test", default=False, description="Build tests.") - 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.") + generator("ninja") depends_on("cmake@3.22:", type="build") depends_on("pkgconfig", type="build") @@ -38,6 +39,7 @@ class DlaFutureFortran(CMakePackage): depends_on("dla-future@0.4.1:0.5 +scalapack", when="@0.1.0") depends_on("dla-future@0.6.0: +scalapack", when="@0.2.0:") depends_on("dla-future@0.7.3: +scalapack", when="@0.3:") + depends_on("dla-future@0.9: +scalapack", when="@0.4:") depends_on("dla-future +shared", when="+shared") depends_on("mpi", when="+test") From be492e1ed7b05156b21eddfadfb5c40105690dcb Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 17 Apr 2025 15:25:02 +0200 Subject: [PATCH 174/317] solver: encode % as "build requirement", not as "dependency" (take 2) (#50104) reland 8fc1ccc686cdcdda71aab2d94abcfab3d99a2a89 Signed-off-by: Massimiliano Culpo --- lib/spack/spack/solver/asp.py | 59 +++++++++++++---- lib/spack/spack/solver/concretize.lp | 53 +++++++++++++-- lib/spack/spack/test/concretization/core.py | 33 ++++++++++ .../spack/test/concretization/requirements.py | 65 +++++++++++++++++++ 4 files changed, 193 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 2982ecf6fc6..01d897c82e4 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -287,9 +287,33 @@ def specify(spec): return spack.spec.Spec(spec) -def remove_node(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: - """Transformation that removes all "node" and "virtual_node" from the input list of facts.""" - return list(filter(lambda x: x.args[0] not in ("node", "virtual_node"), facts)) +def remove_facts( + *to_be_removed: str, +) -> Callable[[spack.spec.Spec, List[AspFunction]], List[AspFunction]]: + """Returns a transformation function that removes facts from the input list of facts.""" + + def _remove(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: + return list(filter(lambda x: x.args[0] not in to_be_removed, facts)) + + return _remove + + +def remove_build_deps(spec: spack.spec.Spec, facts: List[AspFunction]) -> List[AspFunction]: + build_deps = {x.args[2]: x.args[1] for x in facts if x.args[0] == "depends_on"} + result = [] + for x in facts: + current_name = x.args[1] + if current_name in build_deps: + x.name = "build_requirement" + result.append(fn.attr("build_requirement", build_deps[current_name], x)) + continue + + if x.args[0] == "depends_on": + continue + + result.append(x) + + return result def all_libcs() -> Set[spack.spec.Spec]: @@ -1884,7 +1908,7 @@ def condition( if not context: context = ConditionContext() - context.transform_imposed = remove_node + context.transform_imposed = remove_facts("node", "virtual_node") if imposed_spec: imposed_name = imposed_spec.name or imposed_name @@ -1984,7 +2008,7 @@ def track_dependencies(input_spec, requirements): return requirements + [fn.attr("track_dependencies", input_spec.name)] def dependency_holds(input_spec, requirements): - result = remove_node(input_spec, requirements) + [ + result = remove_facts("node", "virtual_node")(input_spec, requirements) + [ fn.attr( "dependency_holds", pkg.name, input_spec.name, dt.flag_to_string(t) ) @@ -2174,7 +2198,10 @@ def emit_facts_from_requirement_rules(self, rules: List[RequirementRule]): pkg_name, ConstraintOrigin.REQUIRE ) if not virtual: - context.transform_imposed = remove_node + context.transform_required = remove_build_deps + context.transform_imposed = remove_facts( + "node", "virtual_node", "depends_on" + ) # else: for virtuals we want to emit "node" and # "virtual_node" in imposed specs @@ -2236,16 +2263,18 @@ def external_packages(self): if pkg_name not in self.pkgs: continue - self.gen.h2(f"External package: {pkg_name}") # Check if the external package is buildable. If it is # not then "external()" is a fact, unless we can # reuse an already installed spec. external_buildable = data.get("buildable", True) + externals = data.get("externals", []) + if not external_buildable or externals: + self.gen.h2(f"External package: {pkg_name}") + if not external_buildable: self.gen.fact(fn.buildable_false(pkg_name)) # Read a list of all the specs for this package - externals = data.get("externals", []) candidate_specs = [ spack.spec.parse_with_version_concrete(x["spec"]) for x in externals ] @@ -2576,6 +2605,16 @@ def _spec_clauses( # already-installed concrete specs. if concrete_build_deps or dspec.depflag != dt.BUILD: clauses.append(fn.attr("hash", dep.name, dep.dag_hash())) + elif not concrete_build_deps and dspec.depflag: + clauses.append( + fn.attr( + "concrete_build_dependency", spec.name, dep.name, dep.dag_hash() + ) + ) + for virtual_name in dspec.virtuals: + clauses.append( + fn.attr("virtual_on_build_edge", spec.name, dep.name, virtual_name) + ) # if the spec is abstract, descend into dependencies. # if it's concrete, then the hashes above take care of dependency @@ -3269,15 +3308,13 @@ def literal_specs(self, specs): # These facts are needed to compute the "condition_set" of the root pkg_name = clause.args[1] self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) - elif clause_name == "depends_on": - pkg_name = clause.args[2] - self.gen.fact(fn.mentioned_in_literal(trigger_id, root_name, pkg_name)) requirements.append( fn.attr( "virtual_root" if spack.repo.PATH.is_virtual(spec.name) else "root", spec.name ) ) + requirements = [x for x in requirements if x.args[0] != "depends_on"] cache[imposed_spec_key] = (effect_id, requirements) self.gen.fact(fn.pkg_fact(spec.name, fn.condition_effect(condition_id, effect_id))) diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index de25bbf5dac..3670caf23bc 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -175,12 +175,23 @@ trigger_node(TriggerID, Node, Node) :- % Since we trigger the existence of literal nodes from a condition, we need to construct the condition_set/2 mentioned_in_literal(Root, Mentioned) :- mentioned_in_literal(TriggerID, Root, Mentioned), solve_literal(TriggerID). -condition_set(node(min_dupe_id, Root), node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). +literal_node(Root, node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root). -1 { condition_set(node(min_dupe_id, Root), node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- +1 { literal_node(Root, node(0..Y-1, Mentioned)) : max_dupes(Mentioned, Y) } 1 :- mentioned_in_literal(Root, Mentioned), Mentioned != Root, internal_error("must have exactly one condition_set for literals"). +1 { build_dependency_of_literal_node(LiteralNode, node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 :- + literal_node(Root, LiteralNode), + build(LiteralNode), + attr("build_requirement", LiteralNode, build_requirement("node", BuildDependency)). + +condition_set(node(min_dupe_id, Root), LiteralNode) :- literal_node(Root, LiteralNode). +condition_set(LiteralNode, BuildNode) :- build_dependency_of_literal_node(LiteralNode, BuildNode). + +:- build_dependency_of_literal_node(LiteralNode, BuildNode), + not attr("depends_on", LiteralNode, BuildNode, "build"). + % Discriminate between "roots" that have been explicitly requested, and roots that are deduced from "virtual roots" explicitly_requested_root(node(min_dupe_id, Package)) :- solve_literal(TriggerID), @@ -472,10 +483,35 @@ provider(ProviderNode, VirtualNode) :- attr("provider_set", ProviderNode, Virtua imposed_constraint(ID, "depends_on", A1, A2, A3), internal_error("Build deps must land in exactly one duplicate"). -1 { build_requirement(node(X, Parent), node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 +% If the parent is built, then we have a build_requirement on another node. For concrete nodes, +% or external nodes, we don't since we are trimming their build dependencies. +1 { attr("depends_on", node(X, Parent), node(0..Y-1, BuildDependency), "build") : max_dupes(BuildDependency, Y) } 1 :- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), - impose(ID, node(X, Parent)), - imposed_constraint(ID,"build_requirement",Parent,_). + build(node(X, Parent)), + not external(node(X, Parent)). + +:- attr("build_requirement", ParentNode, build_requirement("node", BuildDependency)), + concrete(ParentNode), + not attr("concrete_build_dependency", ParentNode, BuildDependency, _). + +:- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), + attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), + not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. + +:- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), + attr("concrete_build_dependency", ParentNode, BuildDependency, BuildDependencyHash), + attr("virtual_on_build_edge", ParentNode, BuildDependency, Virtual), + not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. + +% Asking for gcc@10 %gcc@9 shouldn't give us back an external gcc@10, just because of the hack +% we have on externals +:- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), + Parent == BuildDependency, + external(node(X, Parent)). + +build_requirement(node(X, Parent), node(Y, BuildDependency)) :- + attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build"), + attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)). 1 { virtual_build_requirement(ParentNode, node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("dependency_holds", ParentNode, Virtual, "build"), @@ -496,7 +532,6 @@ attr("node_version_satisfies", node(X, BuildDependency), Constraint) :- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), build_requirement(ParentNode, node(X, BuildDependency)). -attr("depends_on", node(X, Parent), node(Y, BuildDependency), "build") :- build_requirement(node(X, Parent), node(Y, BuildDependency)). 1 { attr("provider_set", node(X, BuildDependency), node(0..Y-1, Virtual)) : max_dupes(Virtual, Y) } 1 :- attr("build_requirement", ParentNode, build_requirement("provider_set", BuildDependency, Virtual)), @@ -882,6 +917,12 @@ requirement_weight(node(ID, Package), Group, W) :- requirement_policy(Package, Group, "one_of"), requirement_group_satisfied(node(ID, Package), Group). + { attr("build_requirement", node(ID, Package), BuildRequirement) : condition_requirement(TriggerID, "build_requirement", Package, BuildRequirement) } :- + pkg_fact(Package, condition_trigger(ConditionID, TriggerID)), + requirement_group_member(ConditionID, Package, Group), + activate_requirement(node(ID, Package), Group), + requirement_group(Package, Group). + requirement_group_satisfied(node(ID, Package), X) :- 1 { condition_holds(Y, node(ID, Package)) : requirement_group_member(Y, Package, X) } , requirement_policy(Package, X, "any_of"), diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index b6c8453da4a..b28c3337f11 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -3333,3 +3333,36 @@ def test_specifying_compilers_with_virtuals_syntax(default_mock_concretization): assert mpich["fortran"].satisfies("gcc") assert mpich["c"].satisfies("llvm") assert mpich["cxx"].satisfies("llvm") + + +@pytest.mark.regression("49847") +@pytest.mark.xfail(sys.platform == "win32", reason="issues with install mockery") +def test_reuse_when_input_specifies_build_dep(install_mockery, do_not_check_runtimes_on_reuse): + """Test that we can reuse a spec when specifying build dependencies in the input""" + pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9 %gcc@9")) + PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() + + with spack.config.override("concretizer:reuse", True): + result = spack.concretize.concretize_one("pkg-b %gcc") + assert pkgb_old.dag_hash() == result.dag_hash() + + result = spack.concretize.concretize_one("pkg-a ^pkg-b %gcc@9") + assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() + assert result.satisfies("%gcc@9") + + result = spack.concretize.concretize_one("pkg-a %gcc@10 ^pkg-b %gcc@9") + assert pkgb_old.dag_hash() == result["pkg-b"].dag_hash() + + +@pytest.mark.regression("49847") +def test_reuse_when_requiring_build_dep( + install_mockery, do_not_check_runtimes_on_reuse, mutable_config +): + """Test that we can reuse a spec when specifying build dependencies in requirements""" + mutable_config.set("packages:all:require", "%gcc") + pkgb_old = spack.concretize.concretize_one(spack.spec.Spec("pkg-b@0.9")) + PackageInstaller([pkgb_old.package], fake=True, explicit=True).install() + + with spack.config.override("concretizer:reuse", True): + result = spack.concretize.concretize_one("pkg-b") + assert pkgb_old.dag_hash() == result.dag_hash(), result.tree() diff --git a/lib/spack/spack/test/concretization/requirements.py b/lib/spack/spack/test/concretization/requirements.py index fe768611de7..c381a2d6d7d 100644 --- a/lib/spack/spack/test/concretization/requirements.py +++ b/lib/spack/spack/test/concretization/requirements.py @@ -1239,3 +1239,68 @@ def test_virtual_requirement_respects_any_of(concretize_scope, mock_packages): with pytest.raises(spack.error.SpackError): spack.concretize.concretize_one("mpileaks ^[virtuals=mpi] zmpi") + + +@pytest.mark.parametrize( + "packages_yaml,expected_reuse,expected_contraints", + [ + ( + """ +packages: + all: + require: + - "%gcc" + """, + True, + # To minimize installed specs we reuse pkg-b compiler, since the requirement allows it + ["%gcc@9"], + ), + ( + """ +packages: + all: + require: + - "%gcc@10" + """, + False, + ["%gcc@10"], + ), + ( + """ +packages: + all: + require: + - "%gcc" + pkg-a: + require: + - "%gcc@10" + """, + True, + ["%gcc@10"], + ), + ], +) +@pytest.mark.regression("49847") +def test_requirements_on_compilers_and_reuse( + concretize_scope, mock_packages, packages_yaml, expected_reuse, expected_contraints +): + """Tests that we can require compilers with `%` in configuration files, and still get reuse + of specs (even though reused specs have no build dependency in the ASP encoding). + """ + input_spec = "pkg-a" + + reused_spec = spack.concretize.concretize_one("pkg-b@0.9 %gcc@9") + reused_nodes = list(reused_spec.traverse()) + update_packages_config(packages_yaml) + root_specs = [Spec(input_spec)] + + with spack.config.override("concretizer:reuse", True): + solver = spack.solver.asp.Solver() + setup = spack.solver.asp.SpackSolverSetup() + result, _, _ = solver.driver.solve(setup, root_specs, reuse=reused_nodes) + pkga = result.specs[0] + is_pkgb_reused = pkga["pkg-b"].dag_hash() == reused_spec.dag_hash() + + assert is_pkgb_reused == expected_reuse + for c in expected_contraints: + assert pkga.satisfies(c), print(pkga.tree()) From e78d9d93ddbc1845ff4979c718f79f0c4bf1164c Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Thu, 17 Apr 2025 07:20:40 -0700 Subject: [PATCH 175/317] c23 standard typo (#50101) --- lib/spack/spack/compilers/adaptor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/compilers/adaptor.py b/lib/spack/spack/compilers/adaptor.py index e925e876012..e8caef57760 100644 --- a/lib/spack/spack/compilers/adaptor.py +++ b/lib/spack/spack/compilers/adaptor.py @@ -140,7 +140,7 @@ def c17_flag(self) -> str: @property def c23_flag(self) -> str: return self.compilers[Languages.C].package.standard_flag( - language=Languages.C.value, standard="17" + language=Languages.C.value, standard="23" ) @property From cf812dd3a971ff8dfcf657d2e7cd4d05127ababc Mon Sep 17 00:00:00 2001 From: Miranda Mundt <55767766+mrmundt@users.noreply.github.com> Date: Thu, 17 Apr 2025 08:48:35 -0600 Subject: [PATCH 176/317] py-pyomo: add v6.9.0, v6.9.1, v6.9.2 (#50096) --- var/spack/repos/builtin/packages/py-pyomo/package.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyomo/package.py b/var/spack/repos/builtin/packages/py-pyomo/package.py index e6edc21112e..16cce620492 100644 --- a/var/spack/repos/builtin/packages/py-pyomo/package.py +++ b/var/spack/repos/builtin/packages/py-pyomo/package.py @@ -14,9 +14,12 @@ class PyPyomo(PythonPackage): pypi = "Pyomo/Pyomo-5.6.6.tar.gz" git = "https://github.com/Pyomo/pyomo.git" - # Maintainer accurate as of 2024-12-17 + # Maintainer accurate as of 2025-04-16 maintainers("mrmundt") + version("6.9.2", sha256="81b2b14ea619244824e1c547cc12602fe9a6e19309cbf0742868c5b1ef37cb35") + version("6.9.1", sha256="ccb85fa4b03450c32614a939c6830d073a7ce79461b12b0f1e7809db96ae86de") + version("6.9.0", sha256="622323c9d24de09db9fb491847a9c371be24efa1cc2f38da4782e11850ec1e7d") version("6.8.2", sha256="40d8f7b216ad1602bb254f4296591608dd94fe2c961dc1e63ca6b84fb397bed6") version("6.8.1", sha256="dc3369193a915d6fa9a59382f1c02c17f6bf540584f641b9bd20d1f1a7f8ba8c") version("6.8.0", sha256="a204a78d8ed5fa7ad8fa94d3c8ed4f6da38b5c02a68b8fe446bc694f16c8d1ea") @@ -80,8 +83,7 @@ class PyPyomo(PythonPackage): ############################ # python_requires - # Preemptively tagging 3.8:3.13 for 6.8.1 and 6.8.2; 3.8 support will - # be removed in 6.9.0(MRM - Dec 2024) + depends_on("python@3.9:3.13", when="@6.9", type=("build", "run")) depends_on("python@3.8:3.13", when="@6.8.1:6.8.2", type=("build", "run")) depends_on("python@3.8:3.12", when="@6.7:6.8.0", type=("build", "run")) depends_on("python@3.7:3.11", when="@6.4:6.6", type=("build", "run")) @@ -112,7 +114,7 @@ class PyPyomo(PythonPackage): # when docs is requested depends_on("py-sphinx@3:", when="@:6.6+docs", type=("run")) - depends_on("py-sphinx@5:", when="@6.7:+docs", type=("run")) + depends_on("py-sphinx@5:8.1,8.2.1:", when="@6.7:+docs", type=("run")) depends_on("py-sphinx-copybutton", when="@6.1:+docs", type=("run")) depends_on("py-sphinx-rtd-theme@0.6:", when="@6.1:+docs", type=("run")) depends_on("py-sphinxcontrib-jsmath", when="@6.1:+docs", type=("run")) From b97fbcb970e06d6a85de29442290a8eb467213dc Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 17 Apr 2025 08:58:06 -0600 Subject: [PATCH 177/317] seacas: new version (#50049) * Kluge to support file-per-rank and multiple-rank-single-file read/write in CGNS, other CGNS-related changes. * Catalyst changes * Update to latest TriBITs * Improved static library build * EPU: Handle case where no elements, but add_processor_id specified * CPUP: Handle decomp-created zgc between zones better * IOSS: Add filessystem type function (lustre, gpfs, nfs, ...) * CPUP: Fix handling of assemblies * IOSS: fix io_shell compare of db with no changesets * IOSS: Cgns - handle missing assemblies correctly * IOSS: Clean up owning_processor calculation * EXO2MAT: Add -i option to not transfer info records to mat file --- var/spack/repos/builtin/packages/seacas/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py index ac2059ea29c..a8cb1fc7fac 100644 --- a/var/spack/repos/builtin/packages/seacas/package.py +++ b/var/spack/repos/builtin/packages/seacas/package.py @@ -34,6 +34,9 @@ class Seacas(CMakePackage): # ###################### Versions ########################## version("master", branch="master") + version( + "2025-04-14", sha256="7704fc27e4f0d283fd9272ea769dbeffd971315a982e265c0d7c99fc77186476" + ) version( "2025-03-13", sha256="406aff5b8908d6a3bf6687d825905990101caa9cf8c1213a508938eed2134d6d" ) From ca82085c82b86e2e486fa3cd286992d29500aeec Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Thu, 17 Apr 2025 11:21:46 -0400 Subject: [PATCH 178/317] covfie: update for best practices (#50064) --- .../repos/builtin/packages/covfie/package.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/covfie/package.py b/var/spack/repos/builtin/packages/covfie/package.py index 3a217dc5259..e763c82febe 100644 --- a/var/spack/repos/builtin/packages/covfie/package.py +++ b/var/spack/repos/builtin/packages/covfie/package.py @@ -6,26 +6,26 @@ class Covfie(CMakePackage, CudaPackage): - """ - Covfie is a library for compositional descriptions of storage methods for - vector fields and other structured multi-dimensional data. - """ + """Covfie is a library for compositional descriptions of storage methods for + vector fields and other structured multi-dimensional data.""" homepage = "https://github.com/acts-project/covfie" - url = "https://github.com/acts-project/covfie/archive/refs/tags/v0.1.0.tar.gz" + url = "https://github.com/acts-project/covfie/archive/refs/tags/v0.13.0.tar.gz" + git = "https://github.com/acts-project/covfie.git" list_url = "https://github.com/acts-project/covfie/tags" - license("MPL-2.0") - maintainers("stephenswat") + license("MPL-2.0") + + version("main", branch="main") version("0.13.0", sha256="e9cd0546c7bc9539f440273bbad303c97215ccd87403cedb4aa387a313938d57") version("0.12.1", sha256="c33d7707ee30ab5fa8df686a780600343760701023ac0b23355627e1f2f044de") version("0.12.0", sha256="e35e94075a40e89c4691ff373e3061577295d583a2546c682b2d652d9fce7828") version("0.11.0", sha256="39fcd0f218d3b4f3aacc6af497a8cda8767511efae7a72b47781f10fd4340f4f") version("0.10.0", sha256="d44142b302ffc193ad2229f1d2cc6d8d720dd9da8c37989ada4f23018f86c964") - depends_on("cxx", type="build") # generated + depends_on("cxx", type="build") depends_on("cmake@3.21:", type="build", when="@0.11:") depends_on("cmake@3.18:", type="build") From 45bc8fd2a38e0e010943dc721cd2c6edaef6463a Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Thu, 17 Apr 2025 11:23:20 -0400 Subject: [PATCH 179/317] mepo: add v2.3.1 (#50085) --- var/spack/repos/builtin/packages/mepo/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mepo/package.py b/var/spack/repos/builtin/packages/mepo/package.py index 0697eb80680..832942bda59 100644 --- a/var/spack/repos/builtin/packages/mepo/package.py +++ b/var/spack/repos/builtin/packages/mepo/package.py @@ -16,6 +16,7 @@ class Mepo(PythonPackage): license("Apache-2.0", checked_by="mathomp4") + version("2.3.1", sha256="76b7fe081de7b34e5680879352a070dd447e2b113f3e34e4ce20c02486c3c0d8") version("2.3.0", sha256="e80d7157553d33382ab0c399fcd5ec43ab5ff642504b07c8aef266165f9095d2") version("2.2.1", sha256="b691989bb762dc5944a2f13afd89666602fa7e40816f0cfb0278fe2164b34e30") version("2.2.0", sha256="d7cf2456ec2ae9e1724782152b6bf86e06cf071263dbe2eb8ad5b8765b419857") From f0a7388496a5cb062d7ec6541273b6cc697ba051 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Thu, 17 Apr 2025 12:43:25 -0400 Subject: [PATCH 180/317] py-repligit: new package (#50098) --- .../builtin/packages/py-repligit/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-repligit/package.py diff --git a/var/spack/repos/builtin/packages/py-repligit/package.py b/var/spack/repos/builtin/packages/py-repligit/package.py new file mode 100644 index 00000000000..ffd505b9bf8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-repligit/package.py @@ -0,0 +1,28 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyRepligit(PythonPackage): + """A Git client for mirroring multiple remotes without storing state.""" + + homepage = "https://github.com/LLNL/repligit" + pypi = "repligit/repligit-0.1.0.tar.gz" + git = "https://github.com/LLNL/repligit.git" + + maintainers("alecbcs", "cmelone") + + license("Apache-2.0 WITH LLVM-exception") + + version("main", branch="main") + version("0.1.0", sha256="9beac1a14542704f2e5af6a2f3d391d8adf2112ae3c70e98339db251a9e1079e") + + variant("aiohttp", default="False", description="Enable aiohttp support") + + depends_on("python@3.10:", type=("build", "run")) + + depends_on("py-hatchling", type="build") + + depends_on("py-aiohttp", type=("build", "run"), when="+aiohttp") From 10109bf1288fc6cfa3f2ed1ab531336675c9f2c4 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 18 Apr 2025 00:53:54 -0500 Subject: [PATCH 181/317] valgrind: add v3.24.0 (#50116) --- var/spack/repos/builtin/packages/valgrind/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index 486d6452be1..4ce8bcc2f03 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -26,6 +26,7 @@ class Valgrind(AutotoolsPackage, SourcewarePackage): license("GPL-2.0-or-later") version("develop", branch="master") + version("3.24.0", sha256="71aee202bdef1ae73898ccf7e9c315134fa7db6c246063afc503aef702ec03bd") version("3.23.0", sha256="c5c34a3380457b9b75606df890102e7df2c702b9420c2ebef9540f8b5d56264d") version("3.22.0", sha256="c811db5add2c5f729944caf47c4e7a65dcaabb9461e472b578765dd7bf6d2d4c") version("3.21.0", sha256="10ce1618bb3e33fad16eb79552b0a3e1211762448a0d7fce11c8a6243b9ac971") From 34b0e8ebcec2a9f473e6f2b1e9e71110a981b1fd Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 18 Apr 2025 08:12:43 +0200 Subject: [PATCH 182/317] asio: add 1.34.2 (#50110) --- var/spack/repos/builtin/packages/asio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/asio/package.py b/var/spack/repos/builtin/packages/asio/package.py index eb831b8afba..b1984d03053 100644 --- a/var/spack/repos/builtin/packages/asio/package.py +++ b/var/spack/repos/builtin/packages/asio/package.py @@ -18,6 +18,7 @@ class Asio(AutotoolsPackage): license("BSL-1.0") # As uneven minor versions of asio are not considered stable, they wont be added anymore + version("1.34.2", sha256="f3bac015305fbb700545bd2959fbc52d75a1ec2e05f9c7f695801273ceb78cf5") version("1.34.0", sha256="061ed6c8b97527756aed3e34d2cbcbcb6d3c80afd26ed6304f51119e1ef6a1cd") version("1.32.0", sha256="f1b94b80eeb00bb63a3c8cef5047d4e409df4d8a3fe502305976965827d95672") version("1.30.2", sha256="755bd7f85a4b269c67ae0ea254907c078d408cce8e1a352ad2ed664d233780e8") From 193f3b3c5a2669cca0b116deaaebd27480920dc9 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 18 Apr 2025 08:14:08 +0200 Subject: [PATCH 183/317] mimalloc: add 3.0.3 (#50109) --- var/spack/repos/builtin/packages/mimalloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mimalloc/package.py b/var/spack/repos/builtin/packages/mimalloc/package.py index e7976c962a9..ab8409ce75f 100644 --- a/var/spack/repos/builtin/packages/mimalloc/package.py +++ b/var/spack/repos/builtin/packages/mimalloc/package.py @@ -18,6 +18,7 @@ class Mimalloc(CMakePackage): version("dev-slice", branch="dev-slice") version("dev", branch="dev") version("master", branch="master") + version("3.0.3", sha256="baf343041420e2924e1760bbbc0c111101c44e1cecb998e7951f646a957ee05f") version("3.0.1", sha256="6a514ae31254b43e06e2a89fe1cbc9c447fdbf26edc6f794f3eb722f36e28261") version("2.1.9", sha256="dd8ff701691f19bf4e225d42ef0d3d5e6ca0e03498ee4f044a0402e4697e4a20") version("2.1.7", sha256="0eed39319f139afde8515010ff59baf24de9e47ea316a315398e8027d198202d") From 54f4530df4252be6637b93861227813eeeb12d45 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 18 Apr 2025 08:15:57 +0200 Subject: [PATCH 184/317] py-numpy: fix support for newer macOS ld linker (#50065) Co-authored-by: Alec Scott --- var/spack/repos/builtin/packages/py-numpy/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index ed3de80b894..f5097210bd6 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -183,6 +183,13 @@ class PyNumpy(PythonPackage): depends_on("py-setuptools@:63", when="@:1.25") depends_on("py-setuptools@:59", when="@:1.22.1") + # https://github.com/spack/spack/issues/49983 + patch( + "https://github.com/numpy/numpy/pull/28713.patch?full_index=1", + sha256="e80ed84d31a03ecdebcaa4acd9f725298633b8f2c254beb30e0d44c039921783", + when="@2.0:2.2", + ) + # Add Fujitsu Fortran compiler patch("add_fj_compiler.patch", when="@1.19.3:1.19.5%fj") patch("add_fj_compiler2.patch", when="@1.19.0:1.19.2%fj") From 0a0282163b93d001fb1436bc5d612b4cbbfa2eaf Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Fri, 18 Apr 2025 00:23:09 -0600 Subject: [PATCH 185/317] libogg: fix depends_on to include cxx (#50115) --- var/spack/repos/builtin/packages/libogg/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libogg/package.py b/var/spack/repos/builtin/packages/libogg/package.py index 4bdfd7c7572..38e3637e39f 100644 --- a/var/spack/repos/builtin/packages/libogg/package.py +++ b/var/spack/repos/builtin/packages/libogg/package.py @@ -21,7 +21,8 @@ class Libogg(CMakePackage, AutotoolsPackage, Package): version("1.3.4", sha256="fe5670640bd49e828d64d2879c31cb4dde9758681bb664f9bdbf159a01b0c76e") version("1.3.2", sha256="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("shared", default=True, description="Build shared library", when="build_system=cmake") variant( From 8f40889a465f933fa7de67a240a0bfb1abccb7fe Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Fri, 18 Apr 2025 02:29:31 -0400 Subject: [PATCH 186/317] mapl: add v2.55.0 (#50068) --- .../repos/builtin/packages/mapl/package.py | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 974d36db93d..6251e5a13d4 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -37,6 +37,7 @@ class Mapl(CMakePackage): version("develop", branch="develop") version("main", branch="main") + version("2.55.0", sha256="13ec3d81d53cf18aa18322b74b9a6990ad7e51224f1156be5d1f834ee826f95c") version("2.54.2", sha256="70b7be425d07a7be7d9bb0e53b93a372887a048caf23260e0ae602ca6e3670ed") version("2.54.1", sha256="2430ded45a98989e9100037f54cf22f5a5083e17196514b3667d3003413e49e1") version("2.53.2", sha256="0f294a5289541b0028773f8e5ab2bf04734ec09241baa5a3dcea0e939d40336f") @@ -162,11 +163,17 @@ class Mapl(CMakePackage): # Versions later than 3.14 remove FindESMF.cmake # from ESMA_CMake. + resource( + name="esma_cmake", + git="https://github.com/GEOS-ESM/ESMA_cmake.git", + tag="v3.58.1", + when="@2.55:", + ) resource( name="esma_cmake", git="https://github.com/GEOS-ESM/ESMA_cmake.git", tag="v3.55.0", - when="@2.51:", + when="@2.51:2.54", ) resource( name="esma_cmake", @@ -304,14 +311,16 @@ class Mapl(CMakePackage): depends_on("udunits", when="@2.48:") # gFTL dependency - depends_on("gftl@1.14.0:", when="@2.48:") + depends_on("gftl@1.15.2:", when="@2.55:") + depends_on("gftl@1.14.0:", when="@2.48:2.54") depends_on("gftl@1.13.0:", when="@2.45:2.47") depends_on("gftl@1.11.0:", when="@2.44") depends_on("gftl@1.10.0:", when="@2.40:2.43") depends_on("gftl@1.5.5:1.9", when="@:2.39") # gFTL-Shared dependency - depends_on("gftl-shared@1.9.0:", when="@2.48:") + depends_on("gftl-shared@1.10.0:", when="@2.55:") + depends_on("gftl-shared@1.9.0:", when="@2.48:2.54") depends_on("gftl-shared@1.8.0:", when="@2.45:2.47") depends_on("gftl-shared@1.7.0:", when="@2.44") depends_on("gftl-shared@1.6.1:", when="@2.40:2.43") @@ -325,7 +334,8 @@ class Mapl(CMakePackage): depends_on("yafyaml@1.0-beta5", when="@:2.22+extdata2g") # pflogger dependency - depends_on("pflogger@1.15.0: +mpi", when="@2.48:+pflogger") + depends_on("pflogger@1.16.1: +mpi", when="@2.55:+pflogger") + depends_on("pflogger@1.15.0: +mpi", when="@2.48:2.54+pflogger") depends_on("pflogger@1.14.0: +mpi", when="@2.45:2.47+pflogger") depends_on("pflogger@1.11.0: +mpi", when="@2.44+pflogger") depends_on("pflogger@1.9.5: +mpi", when="@2.40:2.43+pflogger") @@ -333,14 +343,16 @@ class Mapl(CMakePackage): depends_on("pflogger@:1.6 +mpi", when="@:2.22+pflogger") # fargparse dependency - depends_on("fargparse@1.8.0:", when="@2.48:+fargparse") + depends_on("fargparse@1.9.0:", when="@2.55:+fargparse") + depends_on("fargparse@1.8.0:", when="@2.48:2.54+fargparse") depends_on("fargparse@1.7.0:", when="@2.45:2.47+fargparse") depends_on("fargparse@1.6.0:", when="@2.44+fargparse") depends_on("fargparse@1.5.0:", when="@2.40:43+fargparse") depends_on("fargparse@1.4.1:1.4", when="@:2.39+fargparse") # pfunit dependency - depends_on("pfunit@4.10: +mpi +fhamcrest", when="@2.48:+pfunit") + depends_on("pfunit@4.11.1: +mpi +fhamcrest", when="@2.55:+pfunit") + depends_on("pfunit@4.10: +mpi +fhamcrest", when="@2.48:2.54+pfunit") depends_on("pfunit@4.9: +mpi +fhamcrest", when="@2.45:2.47+pfunit") depends_on("pfunit@4.8: +mpi +fhamcrest", when="@2.44+pfunit") depends_on("pfunit@4.7.3: +mpi +fhamcrest", when="@2.40:+pfunit") From 044c37372a14dd2e18a0318e1ccb7d1a2337bced Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 18 Apr 2025 08:32:34 +0200 Subject: [PATCH 187/317] py-pillow: add v11.2.1 (#50057) --- var/spack/repos/builtin/packages/py-pillow/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index a965f6545a0..76af5e1c293 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -26,6 +26,7 @@ class PyPillowBase(PythonPackage): "jpeg2000", "imagequant", "xcb", + "avif", ) variant("zlib", default=True, description="Compressed PNG functionality") variant("jpeg", default=True, description="JPEG functionality") @@ -38,6 +39,7 @@ class PyPillowBase(PythonPackage): variant("jpeg2000", default=False, description="JPEG 2000 functionality") variant("imagequant", when="@3.3:", default=False, description="Improved color quantization") variant("xcb", when="@7.1:", default=False, description="X11 screengrab support") + variant("avif", when="@11.2:", default=False, description="Support for the AVIF format") # Required dependencies # https://pillow.readthedocs.io/en/stable/installation/python-support.html @@ -56,6 +58,7 @@ class PyPillowBase(PythonPackage): # pyproject.toml with default_args(type="build"): depends_on("py-pip@22.1:", when="@10:") + depends_on("py-setuptools@77:", when="@11.2:") depends_on("py-setuptools@67.8:", when="@10:") depends_on("py-setuptools") @@ -72,6 +75,7 @@ class PyPillowBase(PythonPackage): depends_on("openjpeg", when="+jpeg2000") depends_on("libimagequant", when="+imagequant") depends_on("libxcb", when="+xcb") + depends_on("libavif", when="+avif") patch( "https://github.com/python-pillow/Pillow/commit/1c11d4581c5705dfa21bc5a4f3b6980c556978bf.patch?full_index=1", @@ -104,12 +108,12 @@ def patch(self): if self.version >= Version("11"): setup.filter( "library_dirs: list[str] = []", - "library_dirs = {0}".format(library_dirs), + "library_dirs: list[str] = {0}".format(library_dirs), string=True, ) setup.filter( "include_dirs: list[str] = []", - "include_dirs = {0}".format(include_dirs), + "include_dirs: list[str] = {0}".format(include_dirs), string=True, ) else: @@ -148,6 +152,7 @@ class PyPillow(PyPillowBase): homepage = "https://python-pillow.org/" pypi = "pillow/pillow-10.2.0.tar.gz" + version("11.2.1", sha256="a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6") version("11.1.0", sha256="368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20") version("11.0.0", sha256="72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739") version("10.4.0", sha256="166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06") @@ -190,6 +195,7 @@ class PyPillow(PyPillowBase): depends_on("c", type="build") for ver in [ + "11.2.1", "11.1.0", "11.0.0", "10.4.0", From 1d81ceb1010c4ba6d0ed6417bb238dc04c586f08 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 18 Apr 2025 02:42:47 -0400 Subject: [PATCH 188/317] mergiraf: new package (#50070) --- .../builtin/packages/mergiraf/package.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mergiraf/package.py diff --git a/var/spack/repos/builtin/packages/mergiraf/package.py b/var/spack/repos/builtin/packages/mergiraf/package.py new file mode 100644 index 00000000000..0043ffc13d2 --- /dev/null +++ b/var/spack/repos/builtin/packages/mergiraf/package.py @@ -0,0 +1,20 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Mergiraf(CargoPackage): + """A syntax-aware git merge driver for a growing collection of programming + languages and file formats. + """ + + homepage = "https://mergiraf.org/" + url = "https://codeberg.org/mergiraf/mergiraf/archive/v0.6.0.tar.gz" + + maintainers("alecbcs") + + license("GPL-3.0-only") + + version("0.6.0", sha256="548b0ae3d811d6410beae9e7294867c7e6d791cf9f68ddda5c24e287f7978030") From 2c1a3eff741b44ae6cdceaab1de3c18d74539bbd Mon Sep 17 00:00:00 2001 From: Teague Sterling Date: Thu, 17 Apr 2025 23:43:47 -0700 Subject: [PATCH 189/317] libdisplay-info: new package (#49653) Signed-off-by: Teague Sterling --- .../packages/libdisplay-info/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libdisplay-info/package.py diff --git a/var/spack/repos/builtin/packages/libdisplay-info/package.py b/var/spack/repos/builtin/packages/libdisplay-info/package.py new file mode 100644 index 00000000000..469549f5614 --- /dev/null +++ b/var/spack/repos/builtin/packages/libdisplay-info/package.py @@ -0,0 +1,23 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class LibdisplayInfo(MesonPackage): + """EDID and DisplayID library""" + + homepage = "https://emersion.pages.freedesktop.org/libdisplay-info/" + url = "https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.bz2" + + maintainers("teaguesterling") + + license("MIT", checked_by="teaguesterling") + + version("0.2.0", sha256="f6cf2ddbba3753ae38de5113d1fcb8fab977dfaf5fb07b38cd68d8482765e208") + + depends_on("c", type="build") + with default_args(type="build"): + depends_on("hwdata@0.392:") + depends_on("python") From 9e65bd583715f7d37b7d984ab39236244f6c7af0 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 18 Apr 2025 02:45:15 -0400 Subject: [PATCH 190/317] zoltan: update for best practices (#50062) --- .../repos/builtin/packages/zoltan/package.py | 110 +++++++++--------- 1 file changed, 53 insertions(+), 57 deletions(-) diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 36b9af6ce16..2cc4879d8fd 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -2,7 +2,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - import re from spack.package import * @@ -10,13 +9,11 @@ class Zoltan(AutotoolsPackage): """The Zoltan library is a toolkit of parallel combinatorial algorithms - for parallel, unstructured, and/or adaptive scientific - applications. Zoltan's largest component is a suite of dynamic - load-balancing and partitioning algorithms that increase - applications' parallel performance by reducing idle time. Zoltan - also has graph coloring and graph ordering algorithms, which are - useful in task schedulers and parallel preconditioners. - + for parallel, unstructured, and/or adaptive scientific applications. + Zoltan's largest component is a suite of dynamic load-balancing and + partitioning algorithms that increase applications' parallel performance + by reducing idle time. Zoltan also has graph coloring and graph ordering + algorithms, which are useful in task schedulers and parallel preconditioners. """ homepage = "https://sandialabs.github.io/Zoltan/" @@ -27,36 +24,33 @@ class Zoltan(AutotoolsPackage): version("3.901", sha256="030c22d9f7532d3076e40cba1f03a63b2ee961d8cc9a35149af4a3684922a910") version("3.83", sha256="17320a9f08e47f30f6f3846a74d15bfea6f3c1b937ca93c0ab759ca02c40e56c") - patch("notparallel.patch", when="@3.8") - variant("debug", default=False, description="Builds a debug version of the library.") variant("shared", default=True, description="Builds a shared version of the library.") - variant("fortran", default=True, description="Enable Fortran support.") variant("mpi", default=True, description="Enable MPI support.") variant("parmetis", default=False, description="Enable ParMETIS support.") variant("int64", default=False, description="Enable 64bit indices.") variant("scotch", default=False, description="Enable PT-Scotch support.") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated - - depends_on("mpi", when="+mpi") - - depends_on("parmetis@4: +int64", when="+parmetis+int64") - depends_on("parmetis@4:", when="+parmetis") - depends_on("metis+int64", when="+parmetis+int64") - depends_on("metis", when="+parmetis") - depends_on("scotch", when="+scotch") - - depends_on("perl@:5.21", type="build", when="@:3.6") depends_on("autoconf", type="build") depends_on("automake", type="build") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") depends_on("m4", type="build") + depends_on("perl@:5.21", type="build", when="@:3.6") + + depends_on("mpi", when="+mpi") + depends_on("metis", when="+parmetis") + depends_on("metis+int64", when="+parmetis+int64") + depends_on("parmetis@4:", when="+parmetis") + depends_on("parmetis@4: +int64", when="+parmetis+int64") + depends_on("scotch", when="+scotch") conflicts("+parmetis", when="~mpi") + patch("notparallel.patch", when="@3.8") + build_directory = "spack-build" @property @@ -74,7 +68,7 @@ def configure_directory(self): ).format(self.version) ) if spec.satisfies("@:3.6"): - zoltan_path = "Zoltan_v{0}".format(self.version) + zoltan_path = f"Zoltan_v{self.version}" return zoltan_path return "." @@ -101,17 +95,20 @@ def configure_args(self): self.get_config_flag("f90interface", "fortran"), self.get_config_flag("mpi", "mpi"), ] - config_cflags = ["-O0" if "+debug" in spec else "-O3", "-g" if "+debug" in spec else ""] + config_cflags = [ + "-O0" if spec.satisfies("+debug") else "-O3", + "-g" if spec.satisfies("+debug") else "", + ] config_ldflags = [] config_libs = [] config_incdirs = [] - # PGI runtime libraries # NVHPC runtime libraries - if "%nvhpc" in spec: + if spec.satisfies("%nvhpc"): config_ldflags.append("-fortranlibs") - if "+shared" in spec: + + if spec.satisfies("+shared"): config_args.extend(["RANLIB=echo", "--with-ar=$(CXX) -shared $(LDFLAGS) -o"]) config_cflags.append(self.compiler.cc_pic_flag) if spec.satisfies("%gcc"): @@ -122,27 +119,27 @@ def configure_args(self): if spec.satisfies("%intel") or spec.satisfies("%oneapi"): config_libs.append("-lifcore") - if "+int64" in spec: + if spec.satisfies("+int64"): config_args.append("--with-id-type=ulong") - if "+parmetis" in spec: + if spec.satisfies("+parmetis"): parmetis_prefix = spec["parmetis"].prefix config_args.extend( [ "--with-parmetis", - "--with-parmetis-libdir={0}".format(parmetis_prefix.lib), - "--with-parmetis-incdir={0}".format(parmetis_prefix.include), + f"--with-parmetis-libdir={parmetis_prefix.lib}", + f"--with-parmetis-incdir={parmetis_prefix.include}", ] ) - config_ldflags.append("-L{0}".format(spec["metis"].prefix.lib)) - config_incdirs.append("-I{0}".format(spec["metis"].prefix.include)) + config_ldflags.append(f"-L{spec['metis'].prefix.lib}") + config_incdirs.append(f"-I{spec['metis'].prefix.include}") config_libs.append("-lparmetis") config_libs.append("-lmetis") # Although appending to config_libs _should_ suffice, it does not # Add them to ldflags as well config_ldflags.append("-lparmetis") config_ldflags.append("-lmetis") - if "+int64" in spec["metis"]: + if spec["metis"].satisfies("+int64"): config_args.append("--with-id-type=ulong") else: config_args.append("--with-id-type=uint") @@ -157,12 +154,12 @@ def configure_args(self): ] ) - if "+mpi" in spec: + if spec.satisfies("+mpi"): config_args.extend( [ - "CC={0}".format(spec["mpi"].mpicc), - "CXX={0}".format(spec["mpi"].mpicxx), - "--with-mpi={0}".format(spec["mpi"].prefix), + f"CC={spec['mpi'].mpicc}", + f"CXX={spec['mpi'].mpicxx}", + f"--with-mpi={spec['mpi'].prefix}", # NOTE: Zoltan assumes that it's linking against an MPI library # that can be found with '-lmpi' which isn't the case for many # MPI packages. We rely on the MPI-wrappers to automatically @@ -171,8 +168,8 @@ def configure_args(self): "--with-mpi-libs= ", ] ) - if "+fortran" in spec: - config_args.extend(["FC={0}".format(spec["mpi"].mpifc)]) + if spec.satisfies("+fortran"): + config_args.extend([f"FC={spec['mpi'].mpifc}"]) config_fcflags = config_cflags[:] config_cxxflags = config_cflags[:] @@ -184,29 +181,28 @@ def configure_args(self): # library packages (e.g. ParMETIS, Scotch), which messes with Spack's # ability to descend directly into the package's source directory. if config_cflags: - config_args.append("--with-cflags={0}".format(" ".join(config_cflags))) + config_args.append(f"--with-cflags={' '.join(config_cflags)}") if config_cxxflags: - config_args.append("--with-cxxflags={0}".format(" ".join(config_cxxflags))) + config_args.append(f"--with-cxxflags={' '.join(config_cxxflags)}") if config_fcflags: - config_args.append("--with-fcflags={0}".format(" ".join(config_fcflags))) + config_args.append(f"--with-fcflags={' '.join(config_fcflags)}") if config_ldflags: - config_args.append("--with-ldflags={0}".format(" ".join(config_ldflags))) + config_args.append(f"--with-ldflags={' '.join(config_ldflags)}") if config_libs: - config_args.append("--with-libs={0}".format(" ".join(config_libs))) + config_args.append(f"--with-libs={' '.join(config_libs)}") if config_incdirs: - config_args.append("--with-incdirs={0}".format(" ".join(config_incdirs))) + config_args.append(f"--with-incdirs={' '.join(config_incdirs)}") return config_args + def get_config_flag(self, flag_name, flag_variant): + flag_pre = "en" if self.spec.satisfies(f"+{flag_variant}") else "dis" + return f"--{flag_pre}able-{flag_name}" + # NOTE: Unfortunately, Zoltan doesn't provide any configuration # options for the extension of the output library files, so this # script must change these extensions as a post-processing step. - @run_after("install") + @run_after("install", when="+shared") def solib_install(self): - if "+shared" in self.spec: - for lib_path in find(self.spec.prefix.lib, "lib*.a"): - lib_shared_name = re.sub(r"\.a$", ".{0}".format(dso_suffix), lib_path) - move(lib_path, lib_shared_name) - - def get_config_flag(self, flag_name, flag_variant): - flag_pre = "en" if "+{0}".format(flag_variant) in self.spec else "dis" - return "--{0}able-{1}".format(flag_pre, flag_name) + for lib_path in find(self.spec.prefix.lib, "lib*.a"): + lib_shared_name = re.sub(r"\.a$", f".{dso_suffix}", lib_path) + move(lib_path, lib_shared_name) From 31ce23f3fc3cf5755f33007148d25836566b291e Mon Sep 17 00:00:00 2001 From: Cameron Rutherford Date: Thu, 17 Apr 2025 23:52:04 -0700 Subject: [PATCH 191/317] libceed: add BLAS_DIR and link time blas dependency (#50033) --- var/spack/repos/builtin/packages/libceed/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/libceed/package.py b/var/spack/repos/builtin/packages/libceed/package.py index d6df0b28133..948a35c80e5 100644 --- a/var/spack/repos/builtin/packages/libceed/package.py +++ b/var/spack/repos/builtin/packages/libceed/package.py @@ -55,6 +55,7 @@ class Libceed(MakefilePackage, CudaPackage, ROCmPackage): depends_on("occa~cuda", when="~cuda") depends_on("libxsmm", when="+libxsmm") + depends_on("blas", when="+libxsmm", type="link") depends_on("magma", when="+magma") @@ -136,6 +137,7 @@ def common_make_opts(self): if spec.satisfies("+libxsmm"): makeopts += ["XSMM_DIR=%s" % spec["libxsmm"].prefix] + makeopts += ["BLAS_LIB=%s" % spec["blas"].libs] if spec.satisfies("+magma"): makeopts += ["MAGMA_DIR=%s" % spec["magma"].prefix] From a38045f77e8953b544010981c2fc125893dc99bd Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Fri, 18 Apr 2025 02:52:36 -0400 Subject: [PATCH 192/317] libffi: update for best practices (#50050) --- var/spack/repos/builtin/packages/libffi/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index e92f441274e..8fb8fec9efa 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -33,8 +33,8 @@ class Libffi(AutotoolsPackage): sha256="d06ebb8e1d9a22d19e38d63fdb83954253f39bedc5d46232a05645685722ca37", ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") patch("clang-powerpc-3.2.1.patch", when="@3.2.1 platform=linux %clang") # ref.: https://github.com/libffi/libffi/pull/561 @@ -66,7 +66,7 @@ def flag_handler(self, name, flags): def configure_args(self): args = ["--with-pic"] - if self.spec.version >= Version("3.3"): + if self.spec.satisfies("@3.3:"): # Spack adds its own target flags, so tell libffi not to # second-guess us args.append("--without-gcc-arch") From 875397cf16173bbae8c4cc2c9c50116d4d6983a9 Mon Sep 17 00:00:00 2001 From: Rao Garimella Date: Fri, 18 Apr 2025 00:54:11 -0600 Subject: [PATCH 193/317] r3d: add the shared variant (#49953) --- var/spack/repos/builtin/packages/r3d/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/r3d/package.py b/var/spack/repos/builtin/packages/r3d/package.py index f6a1e08b2b2..a41551aa7c5 100644 --- a/var/spack/repos/builtin/packages/r3d/package.py +++ b/var/spack/repos/builtin/packages/r3d/package.py @@ -35,6 +35,8 @@ class R3d(CMakePackage): description="Build R3D regression tests (versions 2019-04-24 or earlier)", ) + variant("shared", default=False, description="Build shared libraries") + variant( "pic", default=False, description="Produce position-independent code (for shared libs)" ) @@ -42,6 +44,8 @@ class R3d(CMakePackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + conflicts("+shared ~pic") + @when("@:2019-04-24") def cmake(self, spec, prefix): pass @@ -81,11 +85,12 @@ def cmake_args(self): if r3d_max_verts != "0": options.append("-DR3D_MAX_VERTS=" + r3d_max_verts) + options.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + options.append(self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic")) + if self.run_tests: options.append("-DENABLE_UNIT_TESTS=ON") else: options.append("-DENABLE_UNIT_TESTS=OFF") - options.append(self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic")) - return options From 8cbf0674557314c80828b5c722b570e5ee90d2bd Mon Sep 17 00:00:00 2001 From: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Date: Thu, 17 Apr 2025 23:56:26 -0700 Subject: [PATCH 194/317] py-amrex: update maintainers (#50044) --- var/spack/repos/builtin/packages/py-amrex/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-amrex/package.py b/var/spack/repos/builtin/packages/py-amrex/package.py index a5923cb36bd..e7156f8e985 100644 --- a/var/spack/repos/builtin/packages/py-amrex/package.py +++ b/var/spack/repos/builtin/packages/py-amrex/package.py @@ -13,7 +13,7 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage): url = "https://github.com/AMReX-Codes/pyamrex/archive/refs/tags/25.04.tar.gz" git = "https://github.com/AMReX-Codes/pyamrex.git" - maintainers("ax3l", "EZoni", "RTSandberg", "sayerhs", "WeiqunZhang") + maintainers("ax3l", "EZoni", "atmyers", "sayerhs", "WeiqunZhang") tags = ["e4s", "hpsf"] From a284cbf256d58053a2eab0ad681c9259c8211287 Mon Sep 17 00:00:00 2001 From: snehring <7978778+snehring@users.noreply.github.com> Date: Fri, 18 Apr 2025 01:56:55 -0500 Subject: [PATCH 195/317] sentieon-genomics: adding v202503 (#50043) Signed-off-by: Shane Nehring --- var/spack/repos/builtin/packages/sentieon-genomics/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/sentieon-genomics/package.py b/var/spack/repos/builtin/packages/sentieon-genomics/package.py index d11d87d9aca..1ac6bb12897 100644 --- a/var/spack/repos/builtin/packages/sentieon-genomics/package.py +++ b/var/spack/repos/builtin/packages/sentieon-genomics/package.py @@ -25,6 +25,7 @@ class SentieonGenomics(Package): url = "https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-201808.01.tar.gz" maintainers("snehring") + version("202503", sha256="da8fd40e8fe86e0d52ac7023b2ee561d5eb4a89f15afe79ef2ff1d3a13cea73d") version("202308.02", sha256="adb553c72d5180f551aea77fb6626dea36f33f1968f3d0ab0bb00dc7af4f5b55") version("202308", sha256="13dc8d50577fe4767142c50f1a95772db95cd4b173c2b281cdcdd68a5af47cb0") version("202112.07", sha256="ea770483d3e70e9d157fe938096d5ea06e47166d57e0037cf66b6449c7fce2ab") @@ -42,7 +43,8 @@ class SentieonGenomics(Package): def install(self, spec, prefix): install_tree("bin", prefix.bin) install_tree("doc", prefix.doc) - install_tree("etc", prefix.etc) + if spec.satisfies("@:202308.02"): + install_tree("etc", prefix.etc) install_tree("lib", prefix.lib) install_tree("libexec", prefix.libexec) install_tree("share", prefix.share) From e7c17f7ed88c3ab7f979f1c26da16f83216879c5 Mon Sep 17 00:00:00 2001 From: jdomke <28772296+jdomke@users.noreply.github.com> Date: Fri, 18 Apr 2025 17:32:25 +0900 Subject: [PATCH 196/317] hpcg: compiler flag not supported by fujitsu either (#43110) Co-authored-by: domke <673751-domke@users.noreply.gitlab.com> --- var/spack/repos/builtin/packages/hpcg/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hpcg/package.py b/var/spack/repos/builtin/packages/hpcg/package.py index 2353292fef7..71991572eeb 100644 --- a/var/spack/repos/builtin/packages/hpcg/package.py +++ b/var/spack/repos/builtin/packages/hpcg/package.py @@ -68,6 +68,7 @@ def configure(self, spec, prefix): and not spec.satisfies("%arm") and not spec.satisfies("%intel") and not spec.satisfies("%oneapi") + and not spec.satisfies("%fj") and not spec.satisfies("%clang") ): CXXFLAGS += " -ftree-vectorizer-verbose=0 " From f5c6e10e08e96aaeda51828c8e54894256a489c6 Mon Sep 17 00:00:00 2001 From: Krishna Chilleri Date: Fri, 18 Apr 2025 17:09:16 -0600 Subject: [PATCH 197/317] hpc-beeflow: add v0.1.10 and py-requests-unixsocket: add v0.4.1 (#49709) * add version 0.1.10 * add hpc-beeflow v0.1.10 * force typer version to 0.5.0 * add neo4j and redis dependencies * add method that sets the path of neo4j and redis installations --------- Co-authored-by: Todd Gamblin --- .../builtin/packages/hpc-beeflow/package.py | 33 +++++++++++++++---- .../py-requests-unixsocket/package.py | 15 +++++++-- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/hpc-beeflow/package.py b/var/spack/repos/builtin/packages/hpc-beeflow/package.py index ca5de3e5a7f..8e822a86f28 100644 --- a/var/spack/repos/builtin/packages/hpc-beeflow/package.py +++ b/var/spack/repos/builtin/packages/hpc-beeflow/package.py @@ -17,15 +17,20 @@ class HpcBeeflow(PythonPackage): specified to run on.""" homepage = "https://github.com/lanl/bee" - pypi = "hpc_beeflow/hpc_beeflow-0.1.9.tar.gz" + pypi = "hpc_beeflow/hpc_beeflow-0.1.10.tar.gz" - # maintainers("pagrubel") + maintainers("pagrubel") license("MIT") + version("0.1.10", sha256="b7863798e15591a16f6cd265f9b5b7385779630f1c37d8a2a5178b8bf89fc664") version("0.1.9", sha256="196eb9155a5ca6e35d0cc514e0609cf352fc757088707306653496b83a311ac1") - depends_on("python@3.8.3:3.12.2", type=("build", "run")) + depends_on("neo4j@5.17.0", type=("build", "run")) + depends_on("redis@7.4.0", type=("build", "run")) + + depends_on("python@3.8.3:3.13.0", when="@0.1.10:", type=("build", "run")) + depends_on("python@3.8.3:3.12.2", when="@:0.1.9", type=("build", "run")) depends_on("py-poetry@0.12:", type="build") depends_on("py-flask@2.0:", type=("build", "run")) @@ -37,12 +42,28 @@ class HpcBeeflow(PythonPackage): depends_on("py-cwl-utils@0.16:", type=("build", "run")) depends_on("py-apscheduler@3.6.3:", type=("build", "run")) depends_on("py-jsonpickle@2.2.0:", type=("build", "run")) - depends_on("py-requests@:2.28", type=("build", "run")) - depends_on("py-requests-unixsocket@0.3.0:", type=("build", "run")) + depends_on("py-requests@:2.28", when="@:0.1.9", type=("build", "run")) + depends_on("py-requests@2.32.3:", when="@0.1.10:", type=("build", "run")) + depends_on("py-requests-unixsocket@0.3.0:", when="@:0.1.9", type=("build", "run")) + depends_on("py-requests-unixsocket@0.4.1:", when="@0.1.10:", type=("build", "run")) depends_on("py-python-daemon@2.3.1:", type=("build", "run")) depends_on("py-gunicorn@20.1.0:22", type=("build", "run")) - depends_on("py-typer@0.5.0:", type=("build", "run")) + depends_on("py-typer@0.5.0", type=("build", "run")) depends_on("py-cffi@1.15.1:", type=("build", "run")) depends_on("py-celery+redis+sqlalchemy@5.3.4:", type=("build", "run")) depends_on("py-docutils@0.18.1", type=("build", "run")) depends_on("py-graphviz@0.20.3:", type=("build", "run")) + depends_on("py-networkx@3.1", when="@0.1.10:", type=("build", "run")) + depends_on("py-pre-commit@3.5.0", when="@0.1.10:", type=("build", "run")) + depends_on("py-mypy-extensions", type=("build", "run")) + + def setup_run_environment(self, env): + + neo4j_bin = join_path(self.spec["neo4j"].prefix, "packaging/standalone/target") + redis_bin = join_path(self.spec["redis"].prefix, "bin") + + env.prepend_path("PATH", neo4j_bin) + env.prepend_path("PATH", redis_bin) + + env.set("neo4j_path", neo4j_bin) + env.set("redis_path", redis_bin) diff --git a/var/spack/repos/builtin/packages/py-requests-unixsocket/package.py b/var/spack/repos/builtin/packages/py-requests-unixsocket/package.py index 7dc2d74341f..26391c33d3a 100644 --- a/var/spack/repos/builtin/packages/py-requests-unixsocket/package.py +++ b/var/spack/repos/builtin/packages/py-requests-unixsocket/package.py @@ -13,10 +13,21 @@ class PyRequestsUnixsocket(PythonPackage): license("Apache-2.0") + version("0.4.1", sha256="b2596158c356ecee68d27ba469a52211230ac6fb0cde8b66afb19f0ed47a1995") version("0.3.0", sha256="28304283ea9357d45fff58ad5b11e47708cfbf5806817aa59b2a363228ee971e") version("0.2.0", sha256="9e5c1a20afc3cf786197ae59c79bcdb0e7565f218f27df5f891307ee8817c1ea") - depends_on("py-setuptools", type="build") - depends_on("py-pbr", type="build") + depends_on("py-setuptools", when="@:0.3.0", type="build") + depends_on("py-setuptools@64:", when="@0.4:", type="build") + depends_on("py-setuptools-scm@8:", when="@0.4:", type="build") + depends_on("python@3.9:", when="@0.4:", type=("build", "run")) depends_on("py-requests@1.1:", type=("build", "run")) depends_on("py-urllib3@1.8:", when="@:0.2.0", type=("build", "run")) + + def url_for_version(self, version): + url = "https://files.pythonhosted.org/packages/source/r/requests-unixsocket/requests{}unixsocket-{}.tar.gz" + if version >= Version("0.3.1"): + sep = "_" + else: + sep = "-" + return url.format(sep, version) From 18eebce04dbbfbe78d0c8c10e31087663bcc50ab Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Fri, 18 Apr 2025 22:28:23 -0500 Subject: [PATCH 198/317] external: list licensing in init summary (#46042) --- lib/spack/external/__init__.py | 13 +++++++++++++ .../repos/builtin/packages/py-archspec/package.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/spack/external/__init__.py b/lib/spack/external/__init__.py index 9a4b7b7f051..cd6d1842216 100644 --- a/lib/spack/external/__init__.py +++ b/lib/spack/external/__init__.py @@ -11,6 +11,7 @@ * Homepage: https://altgraph.readthedocs.io/en/latest/index.html * Usage: dependency of macholib * Version: 0.17.3 +* License: MIT archspec -------- @@ -18,6 +19,7 @@ * Homepage: https://pypi.python.org/pypi/archspec * Usage: Labeling, comparison and detection of microarchitectures * Version: 0.2.5 (commit 38ce485258ffc4fc6dd6688f8dc90cb269478c47) +* License: Apache-2.0 or MIT astunparse ---------------- @@ -25,6 +27,7 @@ * Homepage: https://github.com/simonpercivall/astunparse * Usage: Unparsing Python ASTs for package hashes in Spack * Version: 1.6.3 (plus modifications) +* License: PSF-2.0 * Note: This is in ``spack.util.unparse`` because it's very heavily modified, and we want to track coverage for it. Specifically, we have modified this library to generate consistent unparsed ASTs @@ -41,6 +44,7 @@ * Homepage: https://github.com/python-attrs/attrs * Usage: Needed by jsonschema. * Version: 22.1.0 +* License: MIT ctest_log_parser ---------------- @@ -48,6 +52,7 @@ * Homepage: https://github.com/Kitware/CMake/blob/master/Source/CTest/cmCTestBuildHandler.cxx * Usage: Functions to parse build logs and extract error messages. * Version: Unversioned +* License: BSD-3-Clause * Note: This is a homemade port of Kitware's CTest build handler. distro @@ -56,6 +61,7 @@ * Homepage: https://pypi.python.org/pypi/distro * Usage: Provides a more stable linux distribution detection. * Version: 1.8.0 +* License: Apache-2.0 jinja2 ------ @@ -63,6 +69,7 @@ * Homepage: https://pypi.python.org/pypi/Jinja2 * Usage: A modern and designer-friendly templating language for Python. * Version: 3.0.3 (last version supporting Python 3.6) +* License: BSD-3-Clause jsonschema ---------- @@ -70,6 +77,7 @@ * Homepage: https://pypi.python.org/pypi/jsonschema * Usage: An implementation of JSON Schema for Python. * Version: 3.2.0 (last version before 2.7 and 3.6 support was dropped) +* License: MIT * Note: We don't include tests or benchmarks; just what Spack needs. macholib @@ -78,6 +86,7 @@ * Homepage: https://macholib.readthedocs.io/en/latest/index.html# * Usage: Manipulation of Mach-o binaries for relocating macOS buildcaches on Linux * Version: 1.16.2 +* License: MIT markupsafe ---------- @@ -85,6 +94,7 @@ * Homepage: https://pypi.python.org/pypi/MarkupSafe * Usage: Implements a XML/HTML/XHTML Markup safe string for Python. * Version: 2.0.1 (last version supporting Python 3.6) +* License: BSD-3-Clause pyrsistent ---------- @@ -92,6 +102,7 @@ * Homepage: http://github.com/tobgu/pyrsistent/ * Usage: Needed by `jsonschema` * Version: 0.18.0 +* License: MIT ruamel.yaml ------ @@ -101,6 +112,7 @@ actively maintained and has more features, including round-tripping comments read from config files. * Version: 0.17.21 +* License: MIT six --- @@ -108,5 +120,6 @@ * Homepage: https://pypi.python.org/pypi/six * Usage: Python 2 and 3 compatibility utilities. * Version: 1.16.0 +* License: MIT """ diff --git a/var/spack/repos/builtin/packages/py-archspec/package.py b/var/spack/repos/builtin/packages/py-archspec/package.py index 21ca8db5aa1..954291d97f8 100644 --- a/var/spack/repos/builtin/packages/py-archspec/package.py +++ b/var/spack/repos/builtin/packages/py-archspec/package.py @@ -14,7 +14,7 @@ class PyArchspec(PythonPackage): maintainers("alalazo") - license("Apache-2.0") + license("Apache-2.0 AND MIT", checked_by="wdconinc") version("0.2.4", sha256="eabbae22f315d24cc2ce786a092478ec8e245208c9877fb213c2172a6ecb9302") version("0.2.3", sha256="d07deb5b6e2ab3b74861e217523d02e69be8522f6e6565f4cc5d2062eb1a5d2c") From b24f2875e610a675aac25c226dbad1ae0de1a83b Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Sun, 20 Apr 2025 15:49:56 +0200 Subject: [PATCH 199/317] py-setuptools: deprecate old versions (#49595) * setuptools: deprecated old versions * py-zope-interface: deprecate versions requiring old setuptools verions * py-botorch: deprecate versions requiring old setuptools verions * py-deepsig: deprecate versions requiring old setuptools verions * py-scipy: deprecate versions requiring old setuptools verions * py-openslide-python: deprecate versions requiring old setuptools verions * py-setuptools: fixup python 3.8 comment --- .../builtin/packages/py-botorch/package.py | 48 +++++++++------ .../builtin/packages/py-deepsig/package.py | 22 ++++--- .../packages/py-openslide-python/package.py | 4 +- .../builtin/packages/py-scipy/package.py | 59 +++++-------------- .../builtin/packages/py-setuptools/package.py | 48 +++++++++++---- .../packages/py-zope-interface/package.py | 19 +++--- 6 files changed, 109 insertions(+), 91 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-botorch/package.py b/var/spack/repos/builtin/packages/py-botorch/package.py index ae6fbe94a97..2f6bf960feb 100644 --- a/var/spack/repos/builtin/packages/py-botorch/package.py +++ b/var/spack/repos/builtin/packages/py-botorch/package.py @@ -17,25 +17,37 @@ class PyBotorch(PythonPackage): version("0.8.4", sha256="e2c17efa8fcda3c9353bbd14ba283ddf237d66151097c0af483bbaaaac61288b") version("0.8.3", sha256="e529f7adbb2b54f46125ae904682fc0f0d02ab8bdb9067ede521c379b355bf73") - version("0.6.4", sha256="3fd28417f55749501a45378f72cd5ca7614e2e05b7b65c6b4eb9b72378bc665a") - depends_on("python@3.7:", type=("build", "run")) - depends_on("python@3.8:", when="@0.8.3:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-setuptools@:47", when="@:0.6.4", type="build") - depends_on("py-setuptools-scm", type="build") - depends_on("py-setuptools-scm+toml", when="@0.8.3:", type="build") - depends_on("py-torch@1.12:", when="@0.8.3:", type=("build", "run")) - depends_on("py-torch@1.9:", type=("build", "run")) - depends_on("py-gpytorch@1.10:", when="@0.8.4:", type=("build", "run")) - depends_on("py-gpytorch@1.9.1:", when="@0.8.3:", type=("build", "run")) - depends_on("py-gpytorch@1.6:", type=("build", "run")) - depends_on("py-scipy", type=("build", "run")) - depends_on("py-multipledispatch", type=("build", "run")) - depends_on("py-pyro-ppl@1.8.4:", when="@0.8.3:", type=("build", "run")) - depends_on("py-pyro-ppl@1.8.0", when="@:0.6.4", type=("build", "run")) - depends_on("py-linear-operator@0.4.0:", when="@0.8.4:", type=("build", "run")) - depends_on("py-linear-operator@0.3.0:", when="@0.8.3:", type=("build", "run")) + with default_args(deprecated=True): + version("0.6.4", sha256="3fd28417f55749501a45378f72cd5ca7614e2e05b7b65c6b4eb9b72378bc665a") + + with default_args(type="build"): + depends_on("py-setuptools") + depends_on("py-setuptools@:47", when="@:0.6.4") + + depends_on("py-setuptools-scm") + depends_on("py-setuptools-scm+toml", when="@0.8.3:") + + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@0.8.3:") + depends_on("python@3.7:") + + depends_on("py-torch@1.12:", when="@0.8.3:") + depends_on("py-torch@1.9:") + + depends_on("py-gpytorch@1.10:", when="@0.8.4:") + depends_on("py-gpytorch@1.9.1:", when="@0.8.3:") + depends_on("py-gpytorch@1.6:") + + depends_on("py-scipy") + + depends_on("py-multipledispatch") + + depends_on("py-pyro-ppl@1.8.4:", when="@0.8.3:") + depends_on("py-pyro-ppl@1.8.0", when="@:0.6.4") + + depends_on("py-linear-operator@0.4.0:", when="@0.8.4:") + depends_on("py-linear-operator@0.3.0:", when="@0.8.3:") def setup_build_environment(self, env): if self.spec.satisfies("@0.8.3:"): diff --git a/var/spack/repos/builtin/packages/py-deepsig/package.py b/var/spack/repos/builtin/packages/py-deepsig/package.py index 7127e64d94c..ce8ce76deea 100644 --- a/var/spack/repos/builtin/packages/py-deepsig/package.py +++ b/var/spack/repos/builtin/packages/py-deepsig/package.py @@ -12,16 +12,20 @@ class PyDeepsig(PythonPackage): homepage = "https://github.com/Kaleidophon/deep-significance" pypi = "deepsig/deepsig-1.2.1.tar.gz" - version("1.2.1", sha256="8543630c00264898116a065f6461c131d026ef75d8703bc631a4fd2bafb31f89") + with default_args(deprecated=True): + version("1.2.1", sha256="8543630c00264898116a065f6461c131d026ef75d8703bc631a4fd2bafb31f89") - depends_on("python@3.5.3:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-numpy@1.19.5", type=("build", "run")) - depends_on("py-scipy@1.6.0", type=("build", "run")) - depends_on("py-tqdm@4.59.0", type=("build", "run")) - depends_on("py-joblib@1.0.1", type=("build", "run")) - depends_on("py-pandas@1.3.3", type=("build", "run")) - depends_on("py-dill@0.3.4", type=("build", "run")) + with default_args(type="build"): + depends_on("py-setuptools", type="build") + + with default_args(type=("build", "run")): + depends_on("python@3.5.3:") + depends_on("py-numpy@1.19.5") + depends_on("py-scipy@1.6.0") + depends_on("py-tqdm@4.59.0") + depends_on("py-joblib@1.0.1") + depends_on("py-pandas@1.3.3") + depends_on("py-dill@0.3.4") def patch(self): filter_file("README_RAW.md", "README.md", "setup.py", string=True) diff --git a/var/spack/repos/builtin/packages/py-openslide-python/package.py b/var/spack/repos/builtin/packages/py-openslide-python/package.py index 304f7ec226b..ef3557add5d 100644 --- a/var/spack/repos/builtin/packages/py-openslide-python/package.py +++ b/var/spack/repos/builtin/packages/py-openslide-python/package.py @@ -14,7 +14,9 @@ class PyOpenslidePython(PythonPackage): license("LGPL-2.1-or-later") version("1.1.2", sha256="83e064ab4a29658e7ddf86bf1d3e54d2508cc19ece35d55b55519c826e45d83f") - version("1.1.1", sha256="33c390fe43e3d7d443fafdd66969392d3e9efd2ecd5d4af73c3dbac374485ed5") + + with default_args(deprecated=True): + version("1.1.1", sha256="33c390fe43e3d7d443fafdd66969392d3e9efd2ecd5d4af73c3dbac374485ed5") depends_on("c", type="build") # generated diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index f4e613c07e7..c7925064d03 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -42,51 +42,20 @@ class PyScipy(PythonPackage): version("1.7.2", sha256="fa2dbabaaecdb502641b0b3c00dec05fb475ae48655c66da16c9ed24eda1e711") version("1.7.1", sha256="6b47d5fa7ea651054362561a28b1ccc8da9368a39514c1bbf6c0977a1c376764") version("1.7.0", sha256="998c5e6ea649489302de2c0bc026ed34284f531df89d2bdc8df3a0d44d165739") - version("1.6.3", sha256="a75b014d3294fce26852a9d04ea27b5671d86736beb34acdfc05859246260707") - version("1.6.2", sha256="e9da33e21c9bc1b92c20b5328adb13e5f193b924c9b969cd700c8908f315aa59") - version("1.6.1", sha256="c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11") - version("1.6.0", sha256="cb6dc9f82dfd95f6b9032a8d7ea70efeeb15d5b5fd6ed4e8537bb3c673580566") - version("1.5.4", sha256="4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b") - version( - "1.5.3", - sha256="ddae76784574cc4c172f3d5edd7308be16078dd3b977e8746860c76c195fa707", - deprecated=True, - ) - version( - "1.5.2", - sha256="066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9", - deprecated=True, - ) - version( - "1.5.1", - sha256="039572f0ca9578a466683558c5bf1e65d442860ec6e13307d528749cfe6d07b8", - deprecated=True, - ) - version( - "1.5.0", - sha256="4ff72877d19b295ee7f7727615ea8238f2d59159df0bdd98f91754be4a2767f0", - deprecated=True, - ) - version( - "1.4.1", - sha256="dee1bbf3a6c8f73b6b218cb28eed8dd13347ea2f87d572ce19b289d6fd3fbc59", - deprecated=True, - ) - version( - "1.4.0", - sha256="31f7cfa93b01507c935c12b535e24812594002a02a56803d7cd063e9920d25e8", - deprecated=True, - ) - version( - "1.3.3", - sha256="64bf4e8ae0db2d42b58477817f648d81e77f0b381d0ea4427385bba3f959380a", - deprecated=True, - ) - version( - "1.3.2", - sha256="a03939b431994289f39373c57bbe452974a7da724ae7f9620a1beee575434da4", - deprecated=True, - ) + with default_args(deprecated=True): + version("1.6.3", sha256="a75b014d3294fce26852a9d04ea27b5671d86736beb34acdfc05859246260707") + version("1.6.2", sha256="e9da33e21c9bc1b92c20b5328adb13e5f193b924c9b969cd700c8908f315aa59") + version("1.6.1", sha256="c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11") + version("1.6.0", sha256="cb6dc9f82dfd95f6b9032a8d7ea70efeeb15d5b5fd6ed4e8537bb3c673580566") + version("1.5.4", sha256="4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b") + version("1.5.3", sha256="ddae76784574cc4c172f3d5edd7308be16078dd3b977e8746860c76c195fa707") + version("1.5.2", sha256="066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9") + version("1.5.1", sha256="039572f0ca9578a466683558c5bf1e65d442860ec6e13307d528749cfe6d07b8") + version("1.5.0", sha256="4ff72877d19b295ee7f7727615ea8238f2d59159df0bdd98f91754be4a2767f0") + version("1.4.1", sha256="dee1bbf3a6c8f73b6b218cb28eed8dd13347ea2f87d572ce19b289d6fd3fbc59") + version("1.4.0", sha256="31f7cfa93b01507c935c12b535e24812594002a02a56803d7cd063e9920d25e8") + version("1.3.3", sha256="64bf4e8ae0db2d42b58477817f648d81e77f0b381d0ea4427385bba3f959380a") + version("1.3.2", sha256="a03939b431994289f39373c57bbe452974a7da724ae7f9620a1beee575434da4") depends_on("c", type="build") depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 54b88684199..e925e1975ab 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -14,6 +14,8 @@ class PySetuptools(Package, PythonExtension): url = "https://files.pythonhosted.org/packages/py3/s/setuptools/setuptools-62.3.2-py3-none-any.whl" list_url = "https://pypi.org/simple/setuptools/" + maintainers("RobertMaaskant") + tags = ["build-tools"] # Requires railroad @@ -30,6 +32,7 @@ class PySetuptools(Package, PythonExtension): version("75.8.2", sha256="558e47c15f1811c1fa7adbd0096669bf76c1d3f433f58324df69f3f5ecac4e8f") version("75.8.1", sha256="3bc32c0b84c643299ca94e77f834730f126efd621de0cc1de64119e0e17dab1f") version("75.8.0", sha256="e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3") + # Last version supporting Python 3.8 version("75.3.2", sha256="90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9") version("75.3.1", sha256="ccd77cda9d3bc3d3e99036d221b91d15f86e53195139d643b5b5299d42463cd3") version("75.3.0", sha256="f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd") @@ -37,6 +40,7 @@ class PySetuptools(Package, PythonExtension): version("69.1.1", sha256="02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56") version("69.0.3", sha256="385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05") version("68.2.2", sha256="b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a") + # Last version supporting Python 3.7 version("68.0.0", sha256="11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f") version("67.6.0", sha256="b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2") version("65.5.0", sha256="f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356") @@ -47,21 +51,42 @@ class PySetuptools(Package, PythonExtension): version("62.6.0", sha256="c1848f654aea2e3526d17fc3ce6aeaa5e7e24e66e645b5be2171f3f6b4e5a178") version("62.4.0", sha256="5a844ad6e190dccc67d6d7411d119c5152ce01f7c76be4d8a1eaa314501bba77") version("62.3.2", sha256="68e45d17c9281ba25dc0104eadd2647172b3472d9e01f911efa57965e8d51a36") + # Last version supporting Python 3.6 version("59.4.0", sha256="feb5ff19b354cde9efd2344ef6d5e79880ce4be643037641b49508bbb850d060") version("58.2.0", sha256="2551203ae6955b9876741a26ab3e767bb3242dafe86a32a749ea0d78b6792f11") version("57.4.0", sha256="a49230977aa6cfb9d933614d2f7b79036e9945c4cdd7583163f4e920b83418d6") - version("57.1.0", sha256="ddae4c1b9220daf1e32ba9d4e3714df6019c5b583755559be84ff8199f7e1fe3") - version("51.0.0", sha256="8c177936215945c9a37ef809ada0fab365191952f7a123618432bbfac353c529") - version("50.3.2", sha256="2c242a0856fbad7efbe560df4a7add9324f340cf48df43651e9604924466794a") - version("50.1.0", sha256="4537c77e6e7dc170081f8547564551d4ff4e4999717434e1257600bbd3a23296") - version("49.6.0", sha256="4dd5bb0a0a0cff77b46ca5dd3a84857ee48c83e8223886b556613c724994073f") - version("49.2.0", sha256="272c7f48f5cddc5af5901f4265274c421c7eede5c8bc454ac2903d3f8fc365e9") - version("46.1.3", sha256="4fe404eec2738c20ab5841fa2d791902d2a645f32318a7850ef26f8d7215a8ee") - version("44.1.1", sha256="27a714c09253134e60a6fa68130f78c7037e5562c4f21f8f318f2ae900d152d5") - version("44.1.0", sha256="992728077ca19db6598072414fb83e0a284aca1253aaf2e24bb1e55ee6db1a30") - version("43.0.0", sha256="a67faa51519ef28cd8261aff0e221b6e4c370f8fb8bada8aa3e7ad8945199963") with default_args(deprecated=True): + version( + "57.1.0", sha256="ddae4c1b9220daf1e32ba9d4e3714df6019c5b583755559be84ff8199f7e1fe3" + ) + version( + "51.0.0", sha256="8c177936215945c9a37ef809ada0fab365191952f7a123618432bbfac353c529" + ) + version( + "50.3.2", sha256="2c242a0856fbad7efbe560df4a7add9324f340cf48df43651e9604924466794a" + ) + version( + "50.1.0", sha256="4537c77e6e7dc170081f8547564551d4ff4e4999717434e1257600bbd3a23296" + ) + version( + "49.6.0", sha256="4dd5bb0a0a0cff77b46ca5dd3a84857ee48c83e8223886b556613c724994073f" + ) + version( + "49.2.0", sha256="272c7f48f5cddc5af5901f4265274c421c7eede5c8bc454ac2903d3f8fc365e9" + ) + version( + "46.1.3", sha256="4fe404eec2738c20ab5841fa2d791902d2a645f32318a7850ef26f8d7215a8ee" + ) + version( + "44.1.1", sha256="27a714c09253134e60a6fa68130f78c7037e5562c4f21f8f318f2ae900d152d5" + ) + version( + "44.1.0", sha256="992728077ca19db6598072414fb83e0a284aca1253aaf2e24bb1e55ee6db1a30" + ) + version( + "43.0.0", sha256="a67faa51519ef28cd8261aff0e221b6e4c370f8fb8bada8aa3e7ad8945199963" + ) version( "41.4.0", sha256="8d01f7ee4191d9fdcd9cc5796f75199deccb25b154eba82d44d6a042cf873670" ) @@ -106,6 +131,9 @@ class PySetuptools(Package, PythonExtension): depends_on("python@3.8:", when="@68.1:") depends_on("python@3.7:", when="@59.7:") depends_on("python@3.6:", when="@51:") + depends_on("python@3.5:", when="@44:") + depends_on("python@3.4:", when="@40:") + depends_on("python@3.3:", when="@30:") # Uses HTMLParser.unescape depends_on("python@:3.8", when="@:41.0") diff --git a/var/spack/repos/builtin/packages/py-zope-interface/package.py b/var/spack/repos/builtin/packages/py-zope-interface/package.py index f36dd230b09..c17b83e0378 100644 --- a/var/spack/repos/builtin/packages/py-zope-interface/package.py +++ b/var/spack/repos/builtin/packages/py-zope-interface/package.py @@ -31,13 +31,16 @@ class PyZopeInterface(PythonPackage): version("5.5.0", sha256="700ebf9662cf8df70e2f0cb4988e078c53f65ee3eefd5c9d80cf988c4175c8e3") version("5.4.0", sha256="5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e") version("5.1.0", sha256="40e4c42bd27ed3c11b2c983fecfb03356fae1209de10686d03c02c8696a1d90e") - version("4.5.0", sha256="57c38470d9f57e37afb460c399eb254e7193ac7fb8042bd09bdc001981a9c74c") - depends_on("python@2.7:2.8,3.4:", type=("build", "run"), when="@4.5.0") - depends_on("python@2.7:2.8,3.5:", type=("build", "run"), when="@5.1.0:") - depends_on("python@3.7:", type=("build", "run"), when="@6:") - depends_on("python@3.8:", type=("build", "run"), when="@7:") + with default_args(deprecated=True): + version("4.5.0", sha256="57c38470d9f57e37afb460c399eb254e7193ac7fb8042bd09bdc001981a9c74c") - depends_on("py-setuptools", type=("build", "run")) - depends_on("py-setuptools@:73", type=("build", "run"), when="@7.1:") - depends_on("py-setuptools@:45", type=("build", "run"), when="@4.5.0") + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@7:") + depends_on("python@3.7:", when="@6:") + depends_on("python@2.7:2.8,3.5:", when="@5.1.0:") + depends_on("python@2.7:2.8,3.4:", when="@4.5.0") + + depends_on("py-setuptools@:73", when="@7.1:") + depends_on("py-setuptools@:45", when="@4.5.0") + depends_on("py-setuptools") From 46263a493e980e0b634c3553e7ed55d0746b2bc7 Mon Sep 17 00:00:00 2001 From: Jiakun Yan Date: Mon, 21 Apr 2025 02:13:55 -0500 Subject: [PATCH 200/317] lci: add v1.7.8, v1.7.9 (#50136) --- var/spack/repos/builtin/packages/lci/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/lci/package.py b/var/spack/repos/builtin/packages/lci/package.py index 7247f390c23..306fe4c94b3 100644 --- a/var/spack/repos/builtin/packages/lci/package.py +++ b/var/spack/repos/builtin/packages/lci/package.py @@ -24,6 +24,8 @@ class Lci(CMakePackage): license("MIT") version("master", branch="master") + version("1.7.9", sha256="49f212d034e7d0b63af29e76b17935a3221830090af02c0e0912cea8a7a58d91") + version("1.7.8", sha256="9d54dd669b54e715162c5184a0e5cc64fd479e9fda60b2a490197d901368afda") version("1.7.7", sha256="c310f699b7b4317a2f5c3557f85c240fe3c85d2d06618dd248434ef807d53779") version("1.7.6", sha256="c88ccea2ad277ed38fc23187771b52b6fb212ed4429114717bfa8887ed21665c") version("1.7.5", sha256="13e4084c9e7aaf55966ba5aa0423164b8fd21ee7526fc62017b3c9b3db99cb83") From 69edcc6d2f2118ae8c2aef37a7d2aeac9aa0b4f7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 21 Apr 2025 09:17:17 +0200 Subject: [PATCH 201/317] py-numpy: add v2.2.5 (#50129) --- var/spack/repos/builtin/packages/py-numpy/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index f5097210bd6..d889f172b09 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -21,6 +21,7 @@ class PyNumpy(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("2.2.5", sha256="a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291") version("2.2.4", sha256="9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f") version("2.2.3", sha256="dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020") version("2.2.2", sha256="ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f") From aee7455568faf14df657b393895f40eaa2561c6e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 21 Apr 2025 09:34:16 +0200 Subject: [PATCH 202/317] PyTorch: fix build with Apple Clang 17 (#50105) --- .../builtin/packages/py-torch/apple_clang_17.patch | 14 ++++++++++++++ .../repos/builtin/packages/py-torch/package.py | 8 ++++++++ 2 files changed, 22 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-torch/apple_clang_17.patch diff --git a/var/spack/repos/builtin/packages/py-torch/apple_clang_17.patch b/var/spack/repos/builtin/packages/py-torch/apple_clang_17.patch new file mode 100644 index 00000000000..6983c57f7f9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/apple_clang_17.patch @@ -0,0 +1,14 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 1813f4418a2..77211646f34 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -1151,6 +1151,9 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE) + # Tensorpipe uses cuda_add_library + torch_update_find_cuda_flags() + add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe) ++ # Suppress warning to unblock libnop comiplation by clang-17 ++ # See https://github.com/pytorch/pytorch/issues/151316 ++ target_compile_options_if_supported(tensorpipe -Wno-missing-template-arg-list-after-template-kw) + + list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe) + list(APPEND Caffe2_DEPENDENCY_LIBS nlohmann) diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 65a13d23628..698bf2fe30f 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -323,6 +323,14 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): conflicts("%gcc@:9.3", when="@2.2:", msg="C++17 support required") + # https://github.com/pytorch/pytorch/issues/151316 + patch( + "https://github.com/pytorch/pytorch/pull/151344.patch?full_index=1", + sha256="edaadfd5f8acee67fee1c77b34145640a1239c9546d77420f3887af24889799e", + when="@2.7.0", + ) + patch("apple_clang_17.patch", when="@1.12:2.6") + # https://github.com/pytorch/pytorch/issues/146239 patch( "https://github.com/pytorch/pytorch/pull/140275.patch?full_index=1", From a89c89a23ed7539ee8e4be714ab2ecb11badae9e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 21 Apr 2025 09:35:26 +0200 Subject: [PATCH 203/317] py-smp: add v0.5.0 (#50120) --- .../py-segmentation-models-pytorch/package.py | 18 +++++++++++------- .../builtin/packages/py-torchgeo/package.py | 6 ++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-segmentation-models-pytorch/package.py b/var/spack/repos/builtin/packages/py-segmentation-models-pytorch/package.py index bb0ee82d5d1..c2832e452ca 100644 --- a/var/spack/repos/builtin/packages/py-segmentation-models-pytorch/package.py +++ b/var/spack/repos/builtin/packages/py-segmentation-models-pytorch/package.py @@ -14,6 +14,7 @@ class PySegmentationModelsPytorch(PythonPackage): license("MIT") maintainers("adamjstewart") + version("0.5.0", sha256="cabba8aced6ef7bdcd6288dd9e1dc2840848aa819d539c455bd07aeceb2fdf96") version("0.4.0", sha256="8833e63f0846090667be6fce05a2bbebbd1537776d3dea72916aa3db9e22e55b") with default_args(deprecated=True): version("0.3.4", sha256="f4aee7f6add479bd3c3953e855b7055fc657dc6800bf7fc8ab733fd7f8acb163") @@ -29,18 +30,12 @@ class PySegmentationModelsPytorch(PythonPackage): depends_on("py-setuptools") with default_args(type=("build", "run")): - depends_on("py-efficientnet-pytorch@0.6.1:", when="@0.4:") - depends_on("py-efficientnet-pytorch@0.7.1", when="@0.3") - depends_on("py-efficientnet-pytorch@0.6.3", when="@:0.2") depends_on("py-huggingface-hub@0.24:", when="@0.4:") depends_on("py-huggingface-hub@0.24.6:", when="@0.3.4:0.3") depends_on("py-numpy@1.19.3:", when="@0.4:") depends_on("pil@8:", when="@0.4:") depends_on("pil", when="@0.3:") - depends_on("py-pretrainedmodels@0.7.1:", when="@0.4:") - depends_on("py-pretrainedmodels@0.7.4", when="@:0.3") - depends_on("py-six@1.5:", when="@0.4:") - depends_on("py-six", when="@0.3.4:") + depends_on("py-safetensors@0.3.1:", when="@0.5:") depends_on("py-timm@0.9:", when="@0.4:") depends_on("py-timm@0.9.7", when="@0.3.4") depends_on("py-timm@0.9.2", when="@0.3.3") @@ -51,3 +46,12 @@ class PySegmentationModelsPytorch(PythonPackage): depends_on("py-torchvision@0.5:") depends_on("py-tqdm@4.42.1:", when="@0.4:") depends_on("py-tqdm", when="@0.3:") + + # Historical dependencies + depends_on("py-efficientnet-pytorch@0.6.1:", when="@0.4") + depends_on("py-efficientnet-pytorch@0.7.1", when="@0.3") + depends_on("py-efficientnet-pytorch@0.6.3", when="@0.2") + depends_on("py-pretrainedmodels@0.7.1:", when="@0.4") + depends_on("py-pretrainedmodels@0.7.4", when="@:0.3") + depends_on("py-six@1.5:", when="@0.4") + depends_on("py-six", when="@0.3.4") diff --git a/var/spack/repos/builtin/packages/py-torchgeo/package.py b/var/spack/repos/builtin/packages/py-torchgeo/package.py index 7f9d344fb1f..0cc44c76820 100644 --- a/var/spack/repos/builtin/packages/py-torchgeo/package.py +++ b/var/spack/repos/builtin/packages/py-torchgeo/package.py @@ -94,8 +94,10 @@ class PyTorchgeo(PythonPackage): depends_on("py-rtree@1:", when="@0.3:") depends_on("py-rtree@0.9.4:", when="@0.2.1:") depends_on("py-rtree@0.5:") - depends_on("py-segmentation-models-pytorch@0.3.3:", when="@0.7:") - depends_on("py-segmentation-models-pytorch@0.2:") + depends_on("py-segmentation-models-pytorch@0.5:", when="@0.7.1:") + # https://github.com/microsoft/torchgeo/pull/2740 + depends_on("py-segmentation-models-pytorch@0.3.3:0.4", when="@0.7.0") + depends_on("py-segmentation-models-pytorch@0.2:0.4") depends_on("py-shapely@1.8.5:", when="@0.7:") depends_on("py-shapely@1.8:", when="@0.6:") depends_on("py-shapely@1.7.1:", when="@0.5:") From 3c576ca8c2ac3d93f8d0345cfc6db8e6b36b6e79 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 21 Apr 2025 09:36:07 +0200 Subject: [PATCH 204/317] yarn: add v4.9.0 and v4.9.1 (#50135) --- var/spack/repos/builtin/packages/yarn/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/yarn/package.py b/var/spack/repos/builtin/packages/yarn/package.py index 8e2a255df70..09cf6e61222 100644 --- a/var/spack/repos/builtin/packages/yarn/package.py +++ b/var/spack/repos/builtin/packages/yarn/package.py @@ -19,6 +19,8 @@ class Yarn(Package): license("BSD-2-Clause") + version("4.9.1", sha256="58df07bd582586c57d250a28817a0016382458d981c8d15e292b72a0ecfcd7a7") + version("4.9.0", sha256="933da2c124dd745404b996b3751481214e7cd34bd13978080111ded6ecdc5fb5") version("4.8.1", sha256="26eee1ff317c4a1ba40cb3c5a85bb3ca35b7feb23d4339509ce2b0fd112567e8") version("4.7.0", sha256="3e840034175d50254578c692f795cd79512869ad257f5b2269117b82c14fa0b1") version("4.6.0", sha256="c3a318af0deb9d284d7c46bf97a28f9d70b156142dcab8ec985481d5818dc651") From dcde4f9d5a5db0af36b5ab903ea5b07936420d2b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 21 Apr 2025 09:36:30 +0200 Subject: [PATCH 205/317] fish: add v4.0.2 (#50134) --- var/spack/repos/builtin/packages/fish/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index fff0b36eb0a..db93cd3d755 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -21,6 +21,7 @@ class Fish(CMakePackage): license("GPL-2.0-only") version("master", branch="master") + version("4.0.2", sha256="6e1ecdb164285fc057b2f35acbdc20815c1623099e7bb47bbfc011120adf7e83") version("4.0.1", sha256="4ed63a70207283e15cf21fc5f21db4230421e4f98d4826b5b1c8254d69c762b5") version("4.0.0", sha256="2fda5bd970357064d8d4c896e08285ba59965ca2a8c4829ca8a82bf3b89c69f3") version("3.7.1", sha256="614c9f5643cd0799df391395fa6bbc3649427bb839722ce3b114d3bbc1a3b250") From 1d369ba02d3a0785ae134053ea1284ab932be381 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 21 Apr 2025 09:37:05 +0200 Subject: [PATCH 206/317] gh: v2.70.0 (#50132) --- var/spack/repos/builtin/packages/gh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gh/package.py b/var/spack/repos/builtin/packages/gh/package.py index 583afa2cd66..21d9fd0dbcc 100644 --- a/var/spack/repos/builtin/packages/gh/package.py +++ b/var/spack/repos/builtin/packages/gh/package.py @@ -15,6 +15,7 @@ class Gh(GoPackage): license("MIT") + version("2.70.0", sha256="9e2247e5b31131fd4ac63916b9483a065fcfb861ebb93588cf2ff42952ae08c5") version("2.69.0", sha256="e2deb3759bbe4da8ad4f071ca604fda5c2fc803fef8b3b89896013e4b1c1fe65") version("2.63.2", sha256="2578a8b1f00cb292a8094793515743f2a86e02b8d0b18d6b95959ddbeebd6b8d") version("2.63.1", sha256="b9a90118dfb46204dbcc0d09c2073d48f35b6f640b4db33fbaa24892fed56c8d") From 9f4c677e46a301713a61eb24b4dad8685133d43f Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 21 Apr 2025 09:37:38 +0200 Subject: [PATCH 207/317] trivy: v0.61.1 (#50131) --- var/spack/repos/builtin/packages/trivy/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/trivy/package.py b/var/spack/repos/builtin/packages/trivy/package.py index 9b33b023a14..2bf541a6095 100644 --- a/var/spack/repos/builtin/packages/trivy/package.py +++ b/var/spack/repos/builtin/packages/trivy/package.py @@ -15,6 +15,7 @@ class Trivy(GoPackage): license("Apache-2.0", checked_by="RobertMaaskant") + version("0.61.1", sha256="f6ad43e008c008d67842c9e2b4af80c2e96854db8009fba48fc37b4f9b15f59b") version("0.61.0", sha256="1e97b1b67a4c3aee9c567534e60355033a58ce43a3705bdf198d7449d53b6979") depends_on("go@1.24:", type="build") From 2967bb5540cb784bb1c28326a2dfcf8042d9c517 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Mon, 21 Apr 2025 00:42:22 -0700 Subject: [PATCH 208/317] g2c: +utils requires +build_v2_api (#50114) --- var/spack/repos/builtin/packages/g2c/package.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index 658664a1c9a..dd139104d8a 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -38,22 +38,16 @@ class G2c(CMakePackage): when="@1.7:", ) variant( - "pthreads", - default=False, - description="Turn on thread-safety with pthreads", - when="@develop", + "pthreads", default=False, description="Turn on thread-safety with pthreads", when="@2:" ) variant( - "utils", - default=True, - description="Build and install some utility programs", - when="@develop", + "utils", default=True, description="Build and install some utility programs", when="@2:" ) variant( "build_v2_api", - default=False, + default=True, description="Build new g2c API, experimental until 2.0.0 release", - when="@develop", + when="@2:", ) depends_on("c", type="build") @@ -64,6 +58,7 @@ class G2c(CMakePackage): depends_on("openjpeg", when="+openjpeg") depends_on("libxml2@2.9:", when="+build_v2_api") + conflicts("+utils ~build_v2_api", msg="+utils requires G2C API") conflicts("+jasper +openjpeg", msg="Either Jasper or OpenJPEG should be used, not both") def cmake_args(self): From 796adb6b9b2d41a8468604bbd17fdf5773a45484 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 21 Apr 2025 09:54:31 +0200 Subject: [PATCH 209/317] py-pandas: arrow+parquet when +parquet (#50119) --- var/spack/repos/builtin/packages/py-pandas/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 381aa85c029..4d78ee0a465 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -209,3 +209,4 @@ class PyPandas(PythonPackage): with when("+parquet"): depends_on("py-pyarrow@10.0.1:") + depends_on("arrow+parquet") From a74ac87d341f546fc6ed464a3ad2d170e23a3081 Mon Sep 17 00:00:00 2001 From: "Garth N. Wells" Date: Mon, 21 Apr 2025 09:01:07 +0100 Subject: [PATCH 210/317] py-nanobind: add v2.6.1 (#50087) --- var/spack/repos/builtin/packages/py-nanobind/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-nanobind/package.py b/var/spack/repos/builtin/packages/py-nanobind/package.py index 0845225a146..840fb64a7f6 100644 --- a/var/spack/repos/builtin/packages/py-nanobind/package.py +++ b/var/spack/repos/builtin/packages/py-nanobind/package.py @@ -22,6 +22,9 @@ class PyNanobind(PythonPackage): license("BSD-3-Clause") version("master", branch="master", submodules=True) + version( + "2.6.1", tag="v2.6.1", commit="9b3afa9dbdc23641daf26fadef7743e7127ff92f", submodules=True + ) version( "2.5.0", tag="v2.5.0", commit="4ccbe6e005fc017652312305f280742da49d3dd5", submodules=True ) From 7b877ec9e2df17b8cde4477306e23f2464e4cd42 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Mon, 21 Apr 2025 04:02:14 -0400 Subject: [PATCH 211/317] arborx: add version 2.0 (#50112) --- var/spack/repos/builtin/packages/arborx/package.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index cfd16f08166..cfccaca5d02 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -22,6 +22,7 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version("2.0", sha256="5ea6d8f832a69aac77d66c1ae55f96c2ff227272b8a6ba694c7ebcdf3a2413d5") version("1.7", sha256="e3d9a57a1d7c1ad62f6bbb43fd29a366506f3a16cbbe801c04d10f5fb0dec201") version("1.6", sha256="c2230de185d62f1999d36c6b8b92825f19ab9fbf30bdae90595cab04e76561a4") version("1.5", sha256="c26f23c17e749ccf3e2d353a68969aa54d31b8e720dbfdbc2cef16c5d8477e9e") @@ -40,12 +41,13 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): # Allowed C++ standard variant( "cxxstd", - default="17", - values=("14", "17", "2a", "2b"), + default="20", + values=("14", "17", "20", "23"), multi=False, description="Use the specified C++ standard when building.", ) conflicts("cxxstd=14", when="@1.3:") + conflicts("cxxstd=17", when="@2.0:") # ArborX relies on Kokkos to provide devices, providing one-to-one matching # variants. The only way to disable those devices is to make sure Kokkos @@ -66,6 +68,7 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("cmake@3.12:", type="build") depends_on("cmake@3.16:", type="build", when="@1.0:") + depends_on("cmake@3.22:", type="build", when="@2.0:") depends_on("mpi", when="+mpi") depends_on("rocthrust", when="+rocm") patch("0001-update-major-version-required-for-rocm-6.0.patch", when="@:1.5+rocm ^hip@6.0:") @@ -77,7 +80,8 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): 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") - depends_on("kokkos@4.2.00:", when="@1.7:") + depends_on("kokkos@4.2.00:", when="@1.7") + depends_on("kokkos@4.5.00:", when="@2.0:") for backend in kokkos_backends: depends_on("kokkos+%s" % backend.lower(), when="~trilinos+%s" % backend.lower()) From 71b110e6c7be1c89ef11196740c9effebafa4aa6 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Mon, 21 Apr 2025 01:05:14 -0700 Subject: [PATCH 212/317] g2: update recipe (#49889) --- var/spack/repos/builtin/packages/g2/package.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/g2/package.py b/var/spack/repos/builtin/packages/g2/package.py index a6392e98e79..d607733dd5e 100644 --- a/var/spack/repos/builtin/packages/g2/package.py +++ b/var/spack/repos/builtin/packages/g2/package.py @@ -39,24 +39,28 @@ class G2(CMakePackage): ) variant("w3emc", default=True, description="Enable GRIB1 through w3emc", when="@3.4.6:") variant("shared", default=False, description="Build shared library", when="@3.4.7:") - variant("openmp", default=False, description="Use OpenMP multithreading", when="@develop") - variant("utils", default=False, description="Build grib utilities", when="@develop") + variant("aec", default=True, description="Use AEC library", when="@4:") + variant("openmp", default=False, description="Use OpenMP multithreading", when="@4:") + variant("utils", default=False, description="Build grib utilities", when="@4:") variant( "g2c_compare", default=False, description="Enable copygb2 tests using g2c_compare", - when="@develop", + when="@4:", ) + variant("use_g2c_api", default=False, description="Use new file-based API", when="@4:") depends_on("c", type="build") depends_on("fortran", type="build") depends_on("jasper@:2.0.32", when="@:3.4.7") depends_on("jasper") + depends_on("g2c@2:", when="@4:") + depends_on("g2c@2: +aec", when="+aec") depends_on("libpng") - depends_on("zlib-api", when="@develop") + depends_on("zlib-api", when="@4:") depends_on("bacio", when="@3.4.6:") - depends_on("ip", when="@develop") + depends_on("ip@3.3.3:", when="@4:") requires("^ip precision=d", when="^ip@4.1:") depends_on("sp", when="^ip@:4") requires("^sp precision=d", when="^ip@:4 ^sp@2.4:") @@ -73,10 +77,12 @@ def cmake_args(self): self.define_from_variant("OPENMP", "openmp"), self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), self.define_from_variant("BUILD_WITH_W3EMC", "w3emc"), + self.define_from_variant("USE_AEC", "aec"), self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define("BUILD_4", self.spec.satisfies("precision=4")), self.define("BUILD_D", self.spec.satisfies("precision=d")), self.define_from_variant("G2C_COMPARE", "g2c_compare"), + self.define_from_variant("USE_G2C_API", "use_g2c_api"), self.define_from_variant("BUILD_UTILS", "utils"), ] From c500200952c830d50f2be04ba7fd19114fc647c4 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Mon, 21 Apr 2025 09:08:36 +0100 Subject: [PATCH 213/317] verible: add v0.0.3967 (#50122) --- 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 21b8f8cbb51..f1d3faa52b8 100644 --- a/var/spack/repos/builtin/packages/verible/package.py +++ b/var/spack/repos/builtin/packages/verible/package.py @@ -33,6 +33,11 @@ class Verible(Package): version("master", branch="master") + version( + "0.0.3967", + sha256="499cabd69b7c456518550c5c136908d4c3e4d4e75e99a5fab8c5ecba9d2481f9", + url="https://github.com/chipsalliance/verible/archive/refs/tags/v0.0-3967-gd0f83bfd.tar.gz", + ) version( "0.0.3946", sha256="1454b8df8a978c11139b800b229b498c02bb22f8f2b97a21022b2a6f099604af", From be270f2311d1eedfe1b7a53f3490aa8a57b90cce Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 21 Apr 2025 10:07:43 -0500 Subject: [PATCH 214/317] py-zfit: add through v0.25.0 (#49349) * py-zfit: add through v0.24.3 * hep: add py-zfit to cloud pipeline * py-zfit: add v0.25.0 Co-authored-by: Jonas Eschle * py-zfit: depends_on py-tensorflow(-probability) when @0.25.0: Co-authored-by: Jonas Eschle * py-zfit: fix style (tab to spaces) * py-zfit: fix style * py-zfit: depends_on py-tensorflow-probability without +py-tensorflow * py-zfit: remove redundant type="run" --------- Co-authored-by: Jonas Eschle --- .../cloud_pipelines/stacks/hep/spack.yaml | 1 + .../repos/builtin/packages/py-zfit/package.py | 41 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml index 40d8bd81f4f..70d3c510273 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml @@ -100,6 +100,7 @@ spack: - py-uhi - py-uproot +lz4 +xrootd +zstd - py-vector + - py-zfit - pythia8 +evtgen +fastjet +hdf5 +hepmc +hepmc3 +lhapdf ~madgraph5amc +python +rivet ~root # pythia8 and root circularly depend - rivet - root ~cuda diff --git a/var/spack/repos/builtin/packages/py-zfit/package.py b/var/spack/repos/builtin/packages/py-zfit/package.py index a977544bd53..46d96f1c8c3 100644 --- a/var/spack/repos/builtin/packages/py-zfit/package.py +++ b/var/spack/repos/builtin/packages/py-zfit/package.py @@ -19,6 +19,19 @@ class PyZfit(PythonPackage): tags = ["likelihood", "statistics", "inference", "fitting", "hep"] + version("0.25.0", sha256="ac5a92bc284094eae55dd9afe1fe2c8f3f67a402dfc7a8ad6087a9ea29ff2b41") + version("0.24.3", sha256="0efe47a5c597f7c730ac25495625f8bb4460f2fa4a0f4c387f503339ac8e91b5") + version("0.24.2", sha256="6b83315e16e07d8472d92b142b377d8d7314411d27fe8033168037fd4583f5f6") + version("0.24.1", sha256="9a0423302ac5647e910feadce634b8b0a1806c1866f4f55795db64918cbdd2d8") + version("0.24.0", sha256="d2d30886c154a6583c615b68cd43bd156cb7f7576c584c48fb72f5ab89c9d94b") + version("0.23.0", sha256="19ec469e1703bd38f8b8957871851ee22fa2e68f0a57b7867cc40ea77df98cc5") + version("0.22.0", sha256="b88fe03ab91d1327fd1f23ba27d602fa8a4a82d74bd8ed5d7c08f167a6b223df") + version("0.21.1", sha256="7636c42c93d299bcc4346afe46df1ba615acedbc2380711e68a3e47a5445d4fa") + version("0.21.0", sha256="9d57f8210c5177df615de7f27d937cf0fc9237fb83360e291e2361604d7fe947") + version("0.20.3", sha256="c300ce5d4dd75d351184c4e10c1b1afb7969f99be1f803e8dd50b09ecc951406") + version("0.20.2", sha256="f822ff857346fe5b244e0a13f6fa2f2216c60d8c93f512405890289e2fbfac97") + version("0.20.1", sha256="c834953548be6e1a69ce48eb561b63a6ca8c6cee3bad2d33b98fa5c16001fc27") + version("0.20", sha256="ec39f0118fe8f918a488dacc633279321a06bb88fc0dc09207830516177ca4ff") version("0.18.2", sha256="099b111e135937966b4c6342c7738731f112aea33e1b9f4a9785d2eac9e530f1") version("0.18.1", sha256="fbc6b3a636d8dc74fb2e69dfec5855f534c4583ec18efac9e9107ad45b18eb43") version("0.18.0", sha256="21d9479480f74945c67707b715780693bd4e94062c551bf41fe04a2eddb47fab") @@ -27,7 +40,10 @@ class PyZfit(PythonPackage): version("0.15.5", sha256="00a1138429e8a7f830c9e229b9c0bcd6071b95dadd8c87eb81191079fb679225") version("0.14.1", sha256="66d1e349403f1d6c6350138d0f2b422046bcbdfb34fd95453dadae29a8b0c98a") - depends_on("python@3.9:3.11", type=("build", "run")) + depends_on("python@3.9:", type=("build", "run")) + depends_on("python@:3.11", type=("build", "run"), when="@:0.18") + depends_on("python@:3.12", type=("build", "run"), when="@0.20:") + depends_on("py-setuptools@42:", type="build") depends_on("py-setuptools-scm-git-archive", type="build") depends_on("py-setuptools-scm@3.4:+toml", type="build") @@ -37,9 +53,21 @@ class PyZfit(PythonPackage): # TODO: remove "build" once fixed in spack that tests need "run", not "build" with default_args(type=("build", "run")): + depends_on("py-tensorflow") + depends_on("py-tensorflow-probability") - depends_on("py-tensorflow@2.15", type=("run"), when="@0.18") - depends_on("py-tensorflow-probability@0.23", type=("run"), when="@0.18") + depends_on("py-tensorflow@2.16.2:2.19", when="@0.25.0:") + depends_on("py-tensorflow-probability@0.25:0.26", when="@0.25.0:") + + depends_on("py-tensorflow@2.16.2:2.18", when="@0.24.3:") + depends_on("py-tensorflow@2.18", when="@0.24:0.24.2") + depends_on("py-tensorflow-probability@0.25", when="@0.24:") + + depends_on("py-tensorflow@2.16", when="@0.20:") + depends_on("py-tensorflow-probability@0.24", when="@0.20:") + + depends_on("py-tensorflow@2.15", when="@0.18") + depends_on("py-tensorflow-probability@0.23", when="@0.18") depends_on("py-tensorflow@2.13", when="@0.15:0.17") depends_on("py-tensorflow-probability@0.21", when="@0.16:0.17") @@ -52,10 +80,10 @@ class PyZfit(PythonPackage): depends_on("nlopt@2.7.1: +python") with when("+hs3"): - depends_on("py-asdf") + depends_on("py-asdf@:3") depends_on("py-attrs", when="@0.15:") - depends_on("py-typing-extensions", when="^python@:3.8") + depends_on("py-typing-extensions", when="@:0.17 ^python@:3.8") depends_on("py-boost-histogram") depends_on("py-colorama") depends_on("py-colored") @@ -71,7 +99,8 @@ class PyZfit(PythonPackage): depends_on("py-numpy@1.16:") depends_on("py-ordered-set") depends_on("py-pandas") - depends_on("py-pydantic@:1") + depends_on("py-pydantic@:1", when="@:0.21") + depends_on("py-pydantic@2:", when="@0.22:") depends_on("py-pyyaml") depends_on("py-scipy@1.2:") depends_on("py-tabulate") From d39382bec8f4a153bbb126b9bdb90948a288df8c Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 21 Apr 2025 18:59:01 -0600 Subject: [PATCH 215/317] Env vars docs (#49346) --- lib/spack/docs/env_vars_yaml.rst | 34 ++++++++++++++++++++++++++++++++ lib/spack/docs/environments.rst | 22 +++++++++++++++++++++ lib/spack/docs/index.rst | 1 + 3 files changed, 57 insertions(+) create mode 100644 lib/spack/docs/env_vars_yaml.rst diff --git a/lib/spack/docs/env_vars_yaml.rst b/lib/spack/docs/env_vars_yaml.rst new file mode 100644 index 00000000000..3fd2a881538 --- /dev/null +++ b/lib/spack/docs/env_vars_yaml.rst @@ -0,0 +1,34 @@ +.. Copyright Spack Project Developers. See COPYRIGHT file for details. + + SPDX-License-Identifier: (Apache-2.0 OR MIT) + +.. _env-vars-yaml: + +============================================= +Environment Variable Settings (env_vars.yaml) +============================================= + +Spack allows you to include shell environment variable modifications +for a spack environment by including an ``env_vars.yaml``. Environment +varaibles can be modified by setting, unsetting, appending, and prepending +variables in the shell environment. +The changes to the shell environment will take effect when the spack +environment is activated. + +for example, + +.. code-block:: yaml + + env_vars: + set: + ENVAR_TO_SET_IN_ENV_LOAD: "FOO" + unset: + ENVAR_TO_UNSET_IN_ENV_LOAD: + prepend_path: + PATH_LIST: "path/to/prepend" + append_path: + PATH_LIST: "path/to/append" + remove_path: + PATH_LIST: "path/to/remove" + + diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst index 4ef3b67b63f..27f9a772e23 100644 --- a/lib/spack/docs/environments.rst +++ b/lib/spack/docs/environments.rst @@ -1000,6 +1000,28 @@ For example, the following environment has three root packages: This allows for a much-needed reduction in redundancy between packages and constraints. +------------------------------- +Modifying Environment Variables +------------------------------- + +Spack Environments can modify the active shell's environment variables when activated. The environment can be +configured to set, unset, prepend, or append using ``env_vars`` configuration in the ``spack.yaml`` or through config scopes +file: + +.. code-block:: yaml + + spack: + env_vars: + set: + ENVAR_TO_SET_IN_ENV_LOAD: "FOO" + unset: + ENVAR_TO_UNSET_IN_ENV_LOAD: + prepend_path: + PATH_LIST: "path/to/prepend" + append_path: + PATH_LIST: "path/to/append" + remove_path: + PATH_LIST: "path/to/remove" ----------------- Environment Views diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 077b1e11cbd..07209b35861 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -75,6 +75,7 @@ or refer to the full manual below. packages_yaml build_settings environments + env_vars_yaml containers mirrors module_file_support From 5e7925c50275fa6bbd4e25337c705f0eb8638024 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 22 Apr 2025 09:53:12 +0200 Subject: [PATCH 216/317] packages: minor improvements for compiler packages (#50111) Signed-off-by: Massimiliano Culpo --- etc/spack/defaults/darwin/packages.yaml | 2 ++ etc/spack/defaults/packages.yaml | 6 ++++++ etc/spack/defaults/windows/packages.yaml | 2 ++ .../repos/builtin/packages/cce/package.py | 2 ++ .../repos/builtin/packages/fj/package.py | 2 ++ .../repos/builtin/packages/msvc/package.py | 2 ++ .../repos/builtin/packages/nvhpc/package.py | 19 +++++++++++++++++++ .../repos/builtin/packages/xl/package.py | 2 ++ 8 files changed, 37 insertions(+) diff --git a/etc/spack/defaults/darwin/packages.yaml b/etc/spack/defaults/darwin/packages.yaml index 4b0607bb3b3..32a3b940409 100644 --- a/etc/spack/defaults/darwin/packages.yaml +++ b/etc/spack/defaults/darwin/packages.yaml @@ -25,6 +25,8 @@ packages: glu: [apple-glu] unwind: [apple-libunwind] uuid: [apple-libuuid] + apple-clang: + buildable: false apple-gl: buildable: false externals: diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 79a78df3e9d..6cc366511b5 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -72,6 +72,8 @@ packages: permissions: read: world write: user + cce: + buildable: false cray-fftw: buildable: false cray-libsci: @@ -86,6 +88,8 @@ packages: buildable: false essl: buildable: false + fj: + buildable: false fujitsu-mpi: buildable: false fujitsu-ssl2: @@ -102,3 +106,5 @@ packages: buildable: false spectrum-mpi: buildable: false + xl: + buildable: false diff --git a/etc/spack/defaults/windows/packages.yaml b/etc/spack/defaults/windows/packages.yaml index 7d478f767dc..f18ea28023f 100644 --- a/etc/spack/defaults/windows/packages.yaml +++ b/etc/spack/defaults/windows/packages.yaml @@ -23,3 +23,5 @@ packages: mpi: require: - one_of: [msmpi] + msvc: + buildable: false diff --git a/var/spack/repos/builtin/packages/cce/package.py b/var/spack/repos/builtin/packages/cce/package.py index 080bcf27234..e26980e71c4 100644 --- a/var/spack/repos/builtin/packages/cce/package.py +++ b/var/spack/repos/builtin/packages/cce/package.py @@ -12,6 +12,8 @@ class Cce(Package, CompilerPackage): homepage = "https://cpe.ext.hpe.com/docs/cce/index.html" url = "https://cpe.ext.hpe.com/docs/cce/index.html" + has_code = False + compiler_languages = ["c", "cxx", "fortran"] c_names = ["craycc"] cxx_names = ["crayCC"] diff --git a/var/spack/repos/builtin/packages/fj/package.py b/var/spack/repos/builtin/packages/fj/package.py index dd31eddac73..024749b2226 100644 --- a/var/spack/repos/builtin/packages/fj/package.py +++ b/var/spack/repos/builtin/packages/fj/package.py @@ -19,6 +19,8 @@ class Fj(Package, CompilerPackage): provides("c", "cxx") provides("fortran") + has_code = False + def install(self, spec, prefix): raise InstallError( "Fujitsu compilers are not installable yet, but can be " diff --git a/var/spack/repos/builtin/packages/msvc/package.py b/var/spack/repos/builtin/packages/msvc/package.py index 7140b321698..80678eb5bbd 100644 --- a/var/spack/repos/builtin/packages/msvc/package.py +++ b/var/spack/repos/builtin/packages/msvc/package.py @@ -31,6 +31,8 @@ class Msvc(Package, CompilerPackage): homepage = "https://visualstudio.microsoft.com/vs/features/cplusplus/" + has_code = False + def install(self, spec, prefix): raise InstallError( "MSVC compilers are not installable with Spack, but can be " diff --git a/var/spack/repos/builtin/packages/nvhpc/package.py b/var/spack/repos/builtin/packages/nvhpc/package.py index fb375af1fc8..08e990802d9 100644 --- a/var/spack/repos/builtin/packages/nvhpc/package.py +++ b/var/spack/repos/builtin/packages/nvhpc/package.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # # Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. +import glob import os.path import platform @@ -640,5 +641,23 @@ def libs(self): return find_libraries(libs, root=prefix, recursive=True) + def _cc_path(self): + candidates = glob.glob(f"{self.prefix}/**/{self.spec.version}/compilers/bin/nvc") + if not candidates: + return None + return candidates[0] + + def _cxx_path(self): + candidates = glob.glob(f"{self.prefix}/**/{self.spec.version}/compilers/bin/nvc++") + if not candidates: + return None + return candidates[0] + + def _fortran_path(self): + candidates = glob.glob(f"{self.prefix}/**/{self.spec.version}/compilers/bin/nvfortran") + if not candidates: + return None + return candidates[0] + # Avoid binding stub libraries by absolute path non_bindable_shared_objects = ["stubs"] diff --git a/var/spack/repos/builtin/packages/xl/package.py b/var/spack/repos/builtin/packages/xl/package.py index 6528946e364..afbdc2cbbaf 100644 --- a/var/spack/repos/builtin/packages/xl/package.py +++ b/var/spack/repos/builtin/packages/xl/package.py @@ -14,6 +14,8 @@ class Xl(Package, CompilerPackage): homepage = "https://www.ibm.com/support/knowledgecenter/SSXVZZ_16.1.1/com.ibm.compilers.linux.doc/welcome.html" + has_code = False + variant("r", default=True, description="The _r version of compilers") provides("c", "cxx") From 60f6f8d836b7cf31a82f49a58aa68123ef3af856 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 22 Apr 2025 09:53:34 +0200 Subject: [PATCH 217/317] python.py/r.py: fix type issues with classproperty/constant (#50059) --- lib/spack/docs/conf.py | 2 + lib/spack/llnl/util/lang.py | 33 ++++++++++++--- lib/spack/spack/build_systems/python.py | 49 +++++++++++++---------- lib/spack/spack/build_systems/r.py | 53 +++++++++++++++---------- lib/spack/spack/build_systems/racket.py | 16 ++++---- lib/spack/spack/package_base.py | 6 +-- 6 files changed, 98 insertions(+), 61 deletions(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index e3f0df9a4ba..277ece75f5b 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -225,8 +225,10 @@ def setup(sphinx): ("py:class", "llnl.util.lang.T"), ("py:class", "llnl.util.lang.KT"), ("py:class", "llnl.util.lang.VT"), + ("py:class", "llnl.util.lang.ClassPropertyType"), ("py:obj", "llnl.util.lang.KT"), ("py:obj", "llnl.util.lang.VT"), + ("py:obj", "llnl.util.lang.ClassPropertyType"), ] # The reST default role (used for this markup: `text`) to use for all documents. diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 05100e087be..ac44fe74937 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -15,7 +15,19 @@ import typing import warnings from datetime import datetime, timedelta -from typing import Callable, Dict, Iterable, List, Mapping, Optional, Tuple, TypeVar +from typing import ( + Any, + Callable, + Dict, + Generic, + Iterable, + List, + Mapping, + Optional, + Tuple, + TypeVar, + Union, +) # Ignore emacs backups when listing modules ignore_modules = r"^\.#|~$" @@ -1047,19 +1059,28 @@ def __exit__(self, exc_type, exc_value, tb): return True -class classproperty: +ClassPropertyType = TypeVar("ClassPropertyType") + + +class classproperty(Generic[ClassPropertyType]): """Non-data descriptor to evaluate a class-level property. The function that performs - the evaluation is injected at creation time and take an instance (could be None) and - an owner (i.e. the class that originated the instance) + the evaluation is injected at creation time and takes an owner (i.e., the class that + originated the instance). """ - def __init__(self, callback): + def __init__(self, callback: Callable[[Any], ClassPropertyType]) -> None: self.callback = callback - def __get__(self, instance, owner): + def __get__(self, instance, owner) -> ClassPropertyType: return self.callback(owner) +#: A type alias that represents either a classproperty descriptor or a constant value of the same +#: type. This allows derived classes to override a computed class-level property with a constant +#: value while retaining type compatibility. +ClassProperty = Union[ClassPropertyType, classproperty[ClassPropertyType]] + + class DeprecatedProperty: """Data descriptor to error or warn when a deprecated property is accessed. diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index eff00b6e8a6..a88927a8a72 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -13,9 +13,9 @@ import archspec import llnl.util.filesystem as fs -import llnl.util.lang as lang import llnl.util.tty as tty from llnl.util.filesystem import HeaderList, LibraryList, join_path +from llnl.util.lang import ClassProperty, classproperty, match_predicate import spack.builder import spack.config @@ -139,7 +139,7 @@ def view_file_conflicts(self, view, merge_map): ext_map = view.extensions_layout.extension_map(self.extendee_spec) namespaces = set(x.package.py_namespace for x in ext_map.values()) namespace_re = r"site-packages/{0}/__init__.py".format(self.py_namespace) - find_namespace = lang.match_predicate(namespace_re) + find_namespace = match_predicate(namespace_re) if self.py_namespace in namespaces: conflicts = list(x for x in conflicts if not find_namespace(x)) @@ -206,7 +206,7 @@ def remove_files_from_view(self, view, merge_map): spec.package.py_namespace for name, spec in ext_map.items() if name != self.name ) if self.py_namespace in remaining_namespaces: - namespace_init = lang.match_predicate( + namespace_init = match_predicate( r"site-packages/{0}/__init__.py".format(self.py_namespace) ) ignore_namespace = True @@ -324,6 +324,27 @@ def get_external_python_for_prefix(self): raise StopIteration("No external python could be detected for %s to depend on" % self.spec) +def _homepage(cls: "PythonPackage") -> Optional[str]: + """Get the homepage from PyPI if available.""" + if cls.pypi: + name = cls.pypi.split("/")[0] + return f"https://pypi.org/project/{name}/" + return None + + +def _url(cls: "PythonPackage") -> Optional[str]: + if cls.pypi: + return f"https://files.pythonhosted.org/packages/source/{cls.pypi[0]}/{cls.pypi}" + return None + + +def _list_url(cls: "PythonPackage") -> Optional[str]: + if cls.pypi: + name = cls.pypi.split("/")[0] + return f"https://pypi.org/simple/{name}/" + return None + + class PythonPackage(PythonExtension): """Specialized class for packages that are built using pip.""" @@ -351,25 +372,9 @@ class PythonPackage(PythonExtension): py_namespace: Optional[str] = None - @lang.classproperty - def homepage(cls) -> Optional[str]: # type: ignore[override] - if cls.pypi: - name = cls.pypi.split("/")[0] - return f"https://pypi.org/project/{name}/" - return None - - @lang.classproperty - def url(cls) -> Optional[str]: - if cls.pypi: - return f"https://files.pythonhosted.org/packages/source/{cls.pypi[0]}/{cls.pypi}" - return None - - @lang.classproperty - def list_url(cls) -> Optional[str]: # type: ignore[override] - if cls.pypi: - name = cls.pypi.split("/")[0] - return f"https://pypi.org/simple/{name}/" - return None + homepage: ClassProperty[Optional[str]] = classproperty(_homepage) + url: ClassProperty[Optional[str]] = classproperty(_url) + list_url: ClassProperty[Optional[str]] = classproperty(_list_url) @property def python_spec(self) -> Spec: diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index 1779acc1e05..87b1e104aeb 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -3,8 +3,8 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from typing import Optional, Tuple -import llnl.util.lang as lang from llnl.util.filesystem import mkdirp +from llnl.util.lang import ClassProperty, classproperty from spack.directives import extends @@ -54,6 +54,32 @@ def install(self, pkg, spec, prefix): pkg.module.R(*args) +def _homepage(cls: "RPackage") -> Optional[str]: + if cls.cran: + return f"https://cloud.r-project.org/package={cls.cran}" + elif cls.bioc: + return f"https://bioconductor.org/packages/{cls.bioc}" + return None + + +def _url(cls: "RPackage") -> Optional[str]: + if cls.cran: + return f"https://cloud.r-project.org/src/contrib/{cls.cran}_{str(list(cls.versions)[0])}.tar.gz" + return None + + +def _list_url(cls: "RPackage") -> Optional[str]: + if cls.cran: + return f"https://cloud.r-project.org/src/contrib/Archive/{cls.cran}/" + return None + + +def _git(cls: "RPackage") -> Optional[str]: + if cls.bioc: + return f"https://git.bioconductor.org/packages/{cls.bioc}" + return None + + class RPackage(Package): """Specialized class for packages that are built using R. @@ -77,24 +103,7 @@ class RPackage(Package): extends("r") - @lang.classproperty - def homepage(cls): - if cls.cran: - return f"https://cloud.r-project.org/package={cls.cran}" - elif cls.bioc: - return f"https://bioconductor.org/packages/{cls.bioc}" - - @lang.classproperty - def url(cls): - if cls.cran: - return f"https://cloud.r-project.org/src/contrib/{cls.cran}_{str(list(cls.versions)[0])}.tar.gz" - - @lang.classproperty - def list_url(cls): - if cls.cran: - return f"https://cloud.r-project.org/src/contrib/Archive/{cls.cran}/" - - @lang.classproperty - def git(cls): - if cls.bioc: - return f"https://git.bioconductor.org/packages/{cls.bioc}" + homepage: ClassProperty[Optional[str]] = classproperty(_homepage) + url: ClassProperty[Optional[str]] = classproperty(_url) + list_url: ClassProperty[Optional[str]] = classproperty(_list_url) + git: ClassProperty[Optional[str]] = classproperty(_git) diff --git a/lib/spack/spack/build_systems/racket.py b/lib/spack/spack/build_systems/racket.py index bd3988073e2..5ea5c9444d3 100644 --- a/lib/spack/spack/build_systems/racket.py +++ b/lib/spack/spack/build_systems/racket.py @@ -5,8 +5,8 @@ from typing import Optional, Tuple import llnl.util.filesystem as fs -import llnl.util.lang as lang import llnl.util.tty as tty +from llnl.util.lang import ClassProperty, classproperty import spack.builder import spack.spec @@ -19,6 +19,12 @@ from spack.util.executable import Executable, ProcessError +def _homepage(cls: "RacketPackage") -> Optional[str]: + if cls.racket_name: + return f"https://pkgs.racket-lang.org/package/{cls.racket_name}" + return None + + class RacketPackage(PackageBase): """Specialized class for packages that are built using Racket's `raco pkg install` and `raco setup` commands. @@ -37,13 +43,7 @@ class RacketPackage(PackageBase): extends("racket", when="build_system=racket") racket_name: Optional[str] = None - parallel = True - - @lang.classproperty - def homepage(cls): - if cls.racket_name: - return "https://pkgs.racket-lang.org/package/{0}".format(cls.racket_name) - return None + homepage: ClassProperty[Optional[str]] = classproperty(_homepage) @spack.builder.builder("racket") diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index d5b803b903f..54ba4bac32e 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -28,7 +28,7 @@ import llnl.util.filesystem as fsys import llnl.util.tty as tty -from llnl.util.lang import classproperty, memoized +from llnl.util.lang import ClassProperty, classproperty, memoized import spack.config import spack.dependency @@ -701,10 +701,10 @@ class PackageBase(WindowsRPath, PackageViewMixin, metaclass=PackageMeta): _verbose = None #: Package homepage where users can find more information about the package - homepage: Optional[str] = None + homepage: ClassProperty[Optional[str]] = None #: Default list URL (place to find available versions) - list_url: Optional[str] = None + list_url: ClassProperty[Optional[str]] = None #: Link depth to which list_url should be searched for new versions list_depth = 0 From 441ade58093a163f030a00db12fcc92e60e6b5af Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Tue, 22 Apr 2025 06:38:29 -0400 Subject: [PATCH 218/317] wrf-io: remove check() (#50151) --- var/spack/repos/builtin/packages/wrf-io/package.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/wrf-io/package.py b/var/spack/repos/builtin/packages/wrf-io/package.py index a9417a31293..8a76186f213 100644 --- a/var/spack/repos/builtin/packages/wrf-io/package.py +++ b/var/spack/repos/builtin/packages/wrf-io/package.py @@ -32,6 +32,3 @@ class WrfIo(CMakePackage): def cmake_args(self): args = [self.define_from_variant("OPENMP", "openmp")] return args - - def check(self): - make("test") From 41f99f81312ebf5f7b9ae9b0eb9accb73a26c02a Mon Sep 17 00:00:00 2001 From: Andrey Perestoronin Date: Tue, 22 Apr 2025 13:27:59 +0100 Subject: [PATCH 219/317] add new intel-oneapi-vtune package (#50159) --- .../repos/builtin/packages/intel-oneapi-vtune/package.py | 6 ++++++ 1 file changed, 6 insertions(+) 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 71a489d8e98..fdd02b18454 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py @@ -24,6 +24,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html" + version( + "2025.2.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c4c4ece5-c19f-43a9-99ad-3192164d8529/intel-vtune-2025.2.0.219_offline.sh", + sha256="d6e8bc3b4070cb876bcf035c0ba9ee800db0401e6a43f9d4062b0488bdea1260", + expand=False, + ) version( "2025.1.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/05b14253-a457-4472-bcf7-d98676542072/intel-vtune-2025.1.0.686_offline.sh", From 31c5c0b423916e5a25cfbed76a6e1a2cefff61e3 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 22 Apr 2025 17:08:14 +0200 Subject: [PATCH 220/317] directives_meta.py: remove global decl (#50162) silence flake8 --- lib/spack/spack/directives_meta.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/spack/spack/directives_meta.py b/lib/spack/spack/directives_meta.py index caa69bb6bf3..a02d11d6d40 100644 --- a/lib/spack/spack/directives_meta.py +++ b/lib/spack/spack/directives_meta.py @@ -144,7 +144,6 @@ class Foo(Package): Package class, and it's how Spack gets information from the packages to the core. """ - global directive_names if isinstance(dicts, str): dicts = (dicts,) From dbd745bdabdb2c64385e88c6cee65dbe414e1aae Mon Sep 17 00:00:00 2001 From: Jonathon Anderson <17242663+blue42u@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:18:15 -0500 Subject: [PATCH 221/317] hpctoolkit: fix smoke test to use compiler node (#50152) Signed-off-by: Jonathon Anderson --- var/spack/repos/builtin/packages/hpctoolkit/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index bd69978d307..15d25de0f06 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -281,7 +281,7 @@ def setup_run_environment(self, env): def test_sort(self): """build and run selection sort unit test""" exe = "tst-sort" - cxx = which(os.environ["CXX"]) + cxx = Executable(self["cxx"].cxx) cxx(self.test_suite.current_test_data_dir.join("sort.cpp"), "-o", exe) hpcrun = which("hpcrun") From 6085586407c8458ee57c7aa4748c5fc14dc25c33 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Tue, 22 Apr 2025 17:47:30 +0200 Subject: [PATCH 222/317] oneapi: Move temporary home directory to stage (#50160) When trying to use Spack to build Intel TBB on the EOS network file system we use at CERN, I am facing the following error: ``` Launching the installer... Installation directory is not empty. The product cannot be installed into nonempty directory '/eos/home-s/sswatman/spack/opt/spack/linux-x86_64_v2/... intel-oneapi-tbb-2021.12.0-3jlx6hlr3z6di42f3qy35eizcse7u2tk'. ``` This error appears to happen because Spack tries to set `$HOME` to the prefix of the package, into which the Intel installer is also trying to install it's software. I've found that an easy fix is to set `$HOME` to a directory in the build stage instead, as this can be guaranteed to remain empty. --- lib/spack/spack/build_systems/oneapi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_systems/oneapi.py b/lib/spack/spack/build_systems/oneapi.py index d107a395e27..b8be05d9795 100644 --- a/lib/spack/spack/build_systems/oneapi.py +++ b/lib/spack/spack/build_systems/oneapi.py @@ -106,8 +106,8 @@ def install_component(self, installer_path): bash = Executable("bash") - # Installer writes files in ~/intel set HOME so it goes to prefix - bash.add_default_env("HOME", self.prefix) + # Installer writes files in ~/intel set HOME so it goes to staging directory + bash.add_default_env("HOME", join_path(self.stage.path, "home")) # Installer checks $XDG_RUNTIME_DIR/.bootstrapper_lock_file as well bash.add_default_env("XDG_RUNTIME_DIR", join_path(self.stage.path, "runtime")) From 9010e6f55692129e267498419fa1b216fa7ed05c Mon Sep 17 00:00:00 2001 From: Chris Richardson Date: Tue, 22 Apr 2025 18:08:27 +0100 Subject: [PATCH 223/317] Make PETSc an optional dependency of `fenics-dolfinx` (#49837) * Make petsc optional * Add C dependency * Add to cmake args * Make petsc optional * Add C dependency * Add to cmake args * Update var/spack/repos/builtin/packages/fenics-dolfinx/package.py Co-authored-by: Alec Scott * Fix duplicate line --------- Co-authored-by: Alec Scott --- var/spack/repos/builtin/packages/fenics-dolfinx/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py index 25e1e2b3676..519198c6d82 100644 --- a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py @@ -30,6 +30,7 @@ class FenicsDolfinx(CMakePackage): multi=True, ) + # HDF5 dependency requires C in CMake depends_on("c", type="build") depends_on("cxx", type="build") # generated @@ -40,7 +41,9 @@ class FenicsDolfinx(CMakePackage): variant("slepc", default=False, description="slepc support") variant("adios2", default=False, description="adios2 support") + variant("petsc", default=False, description="PETSc support") + depends_on("petsc", when="+slepc") depends_on("cmake@3.21:", when="@0.9:", type="build") depends_on("cmake@3.19:", when="@:0.8", type="build") depends_on("pkgconfig", type="build") @@ -50,7 +53,7 @@ class FenicsDolfinx(CMakePackage): depends_on("pugixml") depends_on("spdlog", when="@0.9:") - depends_on("petsc+mpi+shared") + depends_on("petsc+mpi+shared", when="+petsc") depends_on("slepc", when="+slepc") depends_on("adios2@2.8.1:+mpi", when="@0.9: +adios2") @@ -76,6 +79,7 @@ class FenicsDolfinx(CMakePackage): def cmake_args(self): return [ self.define("DOLFINX_SKIP_BUILD_TESTS", True), + self.define_from_variant("DOLFINX_ENABLE_PETSC", "petsc"), self.define_from_variant("DOLFINX_ENABLE_SLEPC", "slepc"), self.define_from_variant("DOLFINX_ENABLE_ADIOS2", "adios2"), self.define("DOLFINX_UFCX_PYTHON", False), From 423548fc90ffaf341cbb8d59c011f4c685fc3177 Mon Sep 17 00:00:00 2001 From: Kyle Brindley <66965948+kbrindley@users.noreply.github.com> Date: Tue, 22 Apr 2025 11:28:35 -0600 Subject: [PATCH 224/317] py-salib: add v1.4.6 -> v1.5.1 (#49941) * MAINT: py-salib up to v1.5.1 * MAINT: black style requires trailing commas * WIP: make pathos an optional dependency at the same version where salib upstream made it optional * MAINT: fix run time requirements for older versions. Add build/run requirements for newere versions * MAINT: spack style specs * MAINT: spack package naming convention * MAINT: match dependency order to version order --- .../builtin/packages/py-salib/package.py | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-salib/package.py b/var/spack/repos/builtin/packages/py-salib/package.py index dfe04cb4189..257ea5b5d67 100644 --- a/var/spack/repos/builtin/packages/py-salib/package.py +++ b/var/spack/repos/builtin/packages/py-salib/package.py @@ -9,21 +9,50 @@ class PySalib(PythonPackage): """Python implementations of commonly used sensitivity analysis methods.""" homepage = "https://salib.readthedocs.org" - pypi = "SALib/SALib-1.4.0.1.tar.gz" + pypi = "salib/salib-1.4.6.tar.gz" maintainers("schmitts") license("MIT") - version("1.4.4", sha256="50a6459088700f55261a683752818530d14ede30cece2c324ac94d4b9e288b6d") - version("1.4.0.1", sha256="dbf6e865af9f3be82a79cf64889ed66d6d3b6803f0c22a242a112876789d49e7") + version("1.5.1", sha256="e4a9c319b8dd02995a8dc983f57c452cb7e5b6dbd43e7b7856c90cb6a332bb5f") + version("1.5.0", sha256="04367cbe7f63c5206ec0d793b80477bb4d61d50c0b8c76db1844fe8709f7a39c") + version("1.4.8", sha256="86e7cca79f73f3c52825101cacfb2d51d95adfb7771e7e0ebcd632bffa2cab82") + version("1.4.7", sha256="2e6cb19ec772d6cb7368feceae0f61e51f2d6afdbc4f8986a780b87d657b38cc") + version("1.4.6.1", sha256="dbb14bfc25debf24192feac98cd34c167fbed42743afbcd614cbeb625f310d69") + version("1.4.6", sha256="14337239f1e92960e8f53774c27b1d072253790b57edbbebd290057a5eeb3858") + version( + "1.4.4", + sha256="50a6459088700f55261a683752818530d14ede30cece2c324ac94d4b9e288b6d", + url="https://files.pythonhosted.org/packages/SALib/SALib-1.4.4.tar.gz", + ) + version( + "1.4.0.1", + sha256="dbf6e865af9f3be82a79cf64889ed66d6d3b6803f0c22a242a112876789d49e7", + url="https://files.pythonhosted.org/packages/source/s/SALib/SALib-1.4.0.1.tar.gz", + ) - depends_on("py-setuptools@38.3:", type=("build", "run")) + variant("distributed", default=False, description="Build with experimental distributed mode") + + depends_on("py-importlib-metadata", type="build", when="@1.4.4:1.4.5 ^python@:3.7") + depends_on("py-setuptools@38.3:", type="build", when="@:1.4.5") + depends_on("py-setuptools-scm", type="build", when="@1.4.4:1.4.5") + depends_on("py-wheel", type="build", when="@:1.4.5") + depends_on("py-hatchling@1.8.1:", type="build", when="@1.4.6:") + depends_on("py-hatch-vcs", type="build", when="@1.5.0:") + + depends_on("python@3.9:", type=("build", "run"), when="@1.5.0:") + depends_on("python@3.8:", type=("build", "run"), when="@1.4.6:") + depends_on("py-numpy@1.20.3:", type=("build", "run"), when="@1.4.6:") depends_on("py-numpy@1.16.5:", type=("build", "run")) + depends_on("py-scipy@1.9.3:", type=("build", "run"), when="@1.5.0:") + depends_on("py-scipy@1.7.3:", type=("build", "run"), when="@1.4.6:") depends_on("py-scipy@1.5.2:", type=("build", "run")) - depends_on("py-matplotlib@3.2.2:", type=("build", "run")) + depends_on("py-matplotlib@3.5:", type=("build", "run"), when="@1.5.0:") + depends_on("py-matplotlib@3.2.2:", type=("build", "run"), when="@:1.4.8") + depends_on("py-pandas@2.0:", type=("build", "run"), when="@1.5.0:") + depends_on("py-pandas@1.2:", type=("build", "run"), when="@1.4.8:") depends_on("py-pandas@1.1.2:", type=("build", "run")) - depends_on("py-pathos@0.2.5:", type=("build", "run")) - depends_on("py-importlib-metadata", type=("build", "run"), when="@1.4.4: ^python@:3.7") - depends_on("py-setuptools-scm", type=("build", "run"), when="@1.4.4:") - depends_on("py-wheel", type=("build", "run"), when="@1.4.4:") + depends_on("py-pathos@0.3.2:", type=("build", "run"), when="@1.5.0: +distributed") + depends_on("py-pathos@0.2.5:", type=("build", "run"), when="@1.4.6: +distributed") + depends_on("py-pathos@0.2.5:", type=("build", "run"), when="@:1.4.5") From c62cc6a45d96b49533e1a5fff51aa045af255ace Mon Sep 17 00:00:00 2001 From: Derek Ryan Strong Date: Tue, 22 Apr 2025 11:52:31 -0700 Subject: [PATCH 225/317] rsem: add zlib dependency (#50102) --- var/spack/repos/builtin/packages/rsem/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/rsem/package.py b/var/spack/repos/builtin/packages/rsem/package.py index c8a615e0c94..cda8706c462 100644 --- a/var/spack/repos/builtin/packages/rsem/package.py +++ b/var/spack/repos/builtin/packages/rsem/package.py @@ -18,15 +18,17 @@ class Rsem(MakefilePackage): version("1.3.1", sha256="93c749a03ac16e94b1aab94d032d4fd5687d3261316ce943ecb89d3ae3ec2e11") version("1.3.0", sha256="ecfbb79c23973e1c4134f05201f4bd89b0caf0ce4ae1ffd7c4ddc329ed4e05d2") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("r", type=("build", "run")) depends_on("perl", type=("build", "run")) depends_on("python", type=("build", "run")) depends_on("bowtie") depends_on("bowtie2") depends_on("star") + # The bundled samtools-1.3/htslib-1.3 is not compatible with zlib-ng + # https://github.com/samtools/htslib/issues/1257 + depends_on("zlib") def install(self, spec, prefix): make("install", "DESTDIR=%s" % prefix, "prefix=") From 3fd6066e54c06eb6c93bf1a7d5258878b1129012 Mon Sep 17 00:00:00 2001 From: Ryan Krattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:23:49 -0500 Subject: [PATCH 226/317] ci: copy logs from failed job stage dir (#49884) --- lib/spack/llnl/util/filesystem.py | 2 +- lib/spack/spack/ci/__init__.py | 48 ++++++++++++++--------- lib/spack/spack/ci/common.py | 64 +++++++++++++++++++++++++++---- lib/spack/spack/cmd/ci.py | 5 ++- 4 files changed, 91 insertions(+), 28 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 4fa86914094..a70babff496 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -764,7 +764,7 @@ def copy_tree( files = glob.glob(src) if not files: - raise OSError("No such file or directory: '{0}'".format(src)) + raise OSError("No such file or directory: '{0}'".format(src), errno.ENOENT) # For Windows hard-links and junctions, the source path must exist to make a symlink. Add # all symlinks to this list while traversing the tree, then when finished, make all diff --git a/lib/spack/spack/ci/__init__.py b/lib/spack/spack/ci/__init__.py index a4cec793862..14be3bf4ada 100644 --- a/lib/spack/spack/ci/__init__.py +++ b/lib/spack/spack/ci/__init__.py @@ -24,6 +24,7 @@ import spack import spack.binary_distribution as bindist +import spack.builder import spack.config as cfg import spack.environment as ev import spack.error @@ -613,32 +614,40 @@ def copy_stage_logs_to_artifacts(job_spec: spack.spec.Spec, job_log_dir: str) -> job_spec, and attempts to copy the files into the directory given by job_log_dir. - Args: + Parameters: job_spec: spec associated with spack install log job_log_dir: path into which build log should be copied """ tty.debug(f"job spec: {job_spec}") - - try: - package_metadata_root = pathlib.Path(spack.store.STORE.layout.metadata_path(job_spec)) - except spack.error.SpackError as e: - tty.error(f"Cannot copy logs: {str(e)}") + if not job_spec.concrete: + tty.warn("Cannot copy artifacts for non-concrete specs") return - # Get the package's archived files - archive_files = [] - archive_root = package_metadata_root / "archived-files" - if archive_root.is_dir(): - archive_files = [f for f in archive_root.rglob("*") if f.is_file()] - else: - msg = "Cannot copy package archived files: archived-files must be a directory" - tty.warn(msg) + package_metadata_root = pathlib.Path(spack.store.STORE.layout.metadata_path(job_spec)) + if not os.path.isdir(package_metadata_root): + # Fallback to using the stage directory + job_pkg = job_spec.package + package_metadata_root = pathlib.Path(job_pkg.stage.path) + archive_files = spack.builder.create(job_pkg).archive_files + tty.warn("Package not installed, falling back to use stage dir") + tty.debug(f"stage dir: {package_metadata_root}") + else: + # Get the package's archived files + archive_files = [] + archive_root = package_metadata_root / "archived-files" + if os.path.isdir(archive_root): + archive_files = [str(f) for f in archive_root.rglob("*") if os.path.isfile(f)] + else: + tty.debug(f"No archived files detected at {archive_root}") + + # Try zipped and unzipped versions of the build log build_log_zipped = package_metadata_root / "spack-build-out.txt.gz" + build_log = package_metadata_root / "spack-build-out.txt" build_env_mods = package_metadata_root / "spack-build-env.txt" - for f in [build_log_zipped, build_env_mods, *archive_files]: - copy_files_to_artifacts(str(f), job_log_dir) + for f in [build_log_zipped, build_log, build_env_mods, *archive_files]: + copy_files_to_artifacts(str(f), job_log_dir, compress_artifacts=True) def copy_test_logs_to_artifacts(test_stage, job_test_dir): @@ -651,11 +660,12 @@ def copy_test_logs_to_artifacts(test_stage, job_test_dir): """ tty.debug(f"test stage: {test_stage}") if not os.path.exists(test_stage): - msg = f"Cannot copy test logs: job test stage ({test_stage}) does not exist" - tty.error(msg) + tty.error(f"Cannot copy test logs: job test stage ({test_stage}) does not exist") return - copy_files_to_artifacts(os.path.join(test_stage, "*", "*.txt"), job_test_dir) + copy_files_to_artifacts( + os.path.join(test_stage, "*", "*.txt"), job_test_dir, compress_artifacts=True + ) def download_and_extract_artifacts(url, work_dir) -> str: diff --git a/lib/spack/spack/ci/common.py b/lib/spack/spack/ci/common.py index 68e0d91c17e..78caafcb2ab 100644 --- a/lib/spack/spack/ci/common.py +++ b/lib/spack/spack/ci/common.py @@ -2,9 +2,13 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) import copy +import errno +import glob +import gzip import json import os import re +import shutil import sys import time from collections import deque @@ -25,6 +29,7 @@ import spack.mirrors.mirror import spack.schema import spack.spec +import spack.util.compression as compression import spack.util.spack_yaml as syaml import spack.util.url as url_util import spack.util.web as web_util @@ -40,22 +45,67 @@ _urlopen = web_util.urlopen -def copy_files_to_artifacts(src, artifacts_dir): +def copy_gzipped(glob_or_path: str, dest: str) -> None: + """Copy all of the files in the source glob/path to the destination. + + Args: + glob_or_path: path to file to test + dest: destination path to copy to + """ + + files = glob.glob(glob_or_path) + if not files: + raise OSError("No such file or directory: '{0}'".format(glob_or_path), errno.ENOENT) + if len(files) > 1 and not os.path.isdir(dest): + raise ValueError( + "'{0}' matches multiple files but '{1}' is not a directory".format(glob_or_path, dest) + ) + + def is_gzipped(path): + with open(path, "rb") as fd: + return compression.GZipFileType().matches_magic(fd) + + for src in files: + if is_gzipped(src): + fs.copy(src, dest) + else: + # Compress and copy in one step + src_name = os.path.basename(src) + if os.path.isdir(dest): + zipped = os.path.join(dest, f"{src_name}.gz") + elif not dest.endswith(".gz"): + zipped = f"{dest}.gz" + else: + zipped = dest + + with open(src, "rb") as fin, gzip.open(zipped, "wb") as fout: + shutil.copyfileobj(fin, fout) + + +def copy_files_to_artifacts( + src: str, artifacts_dir: str, *, compress_artifacts: bool = False +) -> None: """ Copy file(s) to the given artifacts directory - Parameters: + Args: src (str): the glob-friendly path expression for the file(s) to copy artifacts_dir (str): the destination directory + compress_artifacts (bool): option to compress copied artifacts using Gzip """ try: - fs.copy(src, artifacts_dir) + + if compress_artifacts: + copy_gzipped(src, artifacts_dir) + else: + fs.copy(src, artifacts_dir) except Exception as err: - msg = ( - f"Unable to copy files ({src}) to artifacts {artifacts_dir} due to " - f"exception: {str(err)}" + tty.warn( + ( + f"Unable to copy files ({src}) to artifacts {artifacts_dir} due to " + f"exception: {str(err)}" + ) ) - tty.warn(msg) def win_quote(quote_str: str) -> str: diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index e18439a97ea..156cb9410ad 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -453,7 +453,7 @@ def ci_rebuild(args): # Arguments when installing the root from sources deps_install_args = install_args + ["--only=dependencies"] - root_install_args = install_args + ["--only=package"] + root_install_args = install_args + ["--keep-stage", "--only=package"] if cdash_handler: # Add additional arguments to `spack install` for CDash reporting. @@ -493,6 +493,9 @@ def ci_rebuild(args): # Copy logs and archived files from the install metadata (.spack) directory to artifacts now spack_ci.copy_stage_logs_to_artifacts(job_spec, job_log_dir) + # Clear the stage directory + spack.stage.purge() + # If the installation succeeded and we're running stand-alone tests for # the package, run them and copy the output. Failures of any kind should # *not* terminate the build process or preclude creating the build cache. From 76168292c3e77e43a2a12aff0da932d5b06abc9f Mon Sep 17 00:00:00 2001 From: etiennemlb Date: Tue, 22 Apr 2025 23:34:23 +0200 Subject: [PATCH 227/317] pdi: refactor version handling and update to 1.8.3 (#49276) * Refactor version handling * Pdi fixes # Conflicts: # var/spack/repos/builtin/packages/pdi/package.py * Details --- .../repos/builtin/packages/pdi/package.py | 43 ++++++++++++++----- .../packages/pdiplugin-decl-hdf5/package.py | 30 ++++++------- .../packages/pdiplugin-decl-netcdf/package.py | 28 ++++++------ .../builtin/packages/pdiplugin-mpi/package.py | 23 +++++----- .../packages/pdiplugin-pycall/package.py | 23 +++++----- .../packages/pdiplugin-serialize/package.py | 21 ++++----- .../packages/pdiplugin-set-value/package.py | 22 +++++----- .../packages/pdiplugin-trace/package.py | 20 +++++---- .../packages/pdiplugin-user-code/package.py | 23 +++++----- 9 files changed, 133 insertions(+), 100 deletions(-) diff --git a/var/spack/repos/builtin/packages/pdi/package.py b/var/spack/repos/builtin/packages/pdi/package.py index 276e43ae747..06bf5a06b42 100644 --- a/var/spack/repos/builtin/packages/pdi/package.py +++ b/var/spack/repos/builtin/packages/pdi/package.py @@ -17,14 +17,25 @@ class Pdi(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + version("1.8.3", sha256="df7200289a2a368ec874140039b417abdfe681b57fb1b9f4c52f924952226020") + version("1.8.2", sha256="bb4d1654c97f7ff379067adbff339f8b4117c0cf9432f41f1a5cb20a747cac1a") + version( + "1.8.1", + sha256="43f0c0b2bda5515ecf99da7be1600af2c1f669d6c73e3f309275b14940c7e35c", + deprecated=True, + ) + version( + "1.8.0", + sha256="5d353bfa64f45ee4715b88bd30330030f79f2020cd6bede0ad9b8f9beddadea9", + deprecated=True, + ) variant("benchs", default=False, description="Build benchmarks") variant("docs", default=False, description="Build documentation") @@ -36,15 +47,19 @@ class Pdi(CMakePackage): depends_on("cxx", type="build") depends_on("fortran", type="build", when="+fortran") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("doxygen@1.8.17:", type=("build"), when="@1.8: +docs") - depends_on("paraconf@1:", type=("link", "run"), when="@1.6:") + depends_on("cmake@3.16.3:", type=("build")) + depends_on("doxygen@1.8.17:", type=("build"), when="+docs") + depends_on("paraconf@1: +shared", type=("link", "run")) depends_on("paraconf +fortran", type=("link", "run"), when="+fortran") - depends_on("paraconf@0.4.14: +shared", type=("link", "run")) depends_on("pkgconfig", type=("build")) - depends_on("python@3.8.2:3.11.9", type=("build", "link", "run"), when="@1.8: +python") - depends_on("py-pybind11@2.3:2", type=("link"), when="+python") - depends_on("py-pybind11@2.4.3:", type=("link"), when="@1.8: +python") + depends_on("python@3.8.2:3", type=("build", "link", "run"), when="+python") + depends_on( + "python@3:3.11.9", type=("build", "link", "run"), when="@:1.8.2 +python" + ) # Needs distutils. + depends_on("py-pybind11@2.4.3:2", type=("link"), when="+python") + depends_on( + "py-setuptools", type=("build", "link"), when="@1.8.3: +python^python@3.12:" + ) # Needs distutils. depends_on("spdlog@1.5:", type=("link"), when="@1.5:") root_cmakelists_dir = "pdi" @@ -62,12 +77,18 @@ def patch(self): "vendor/zpp-1.0.16/bin/zpp.in", ) + @staticmethod + def version_url(version): + return f"https://github.com/pdidev/pdi/archive/refs/tags/{version}.tar.gz" + + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): - args = [ + return [ self.define_from_variant("BUILD_BENCHMARKING", "benchs"), self.define_from_variant("BUILD_DOCUMENTATION", "docs"), self.define_from_variant("BUILD_FORTRAN", "fortran"), self.define_from_variant("BUILD_PYTHON", "python"), self.define_from_variant("BUILD_TESTING", "tests"), ] - return args diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py index 8b8baf248af..2df3b9f1eab 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginDeclHdf5(CMakePackage): @@ -14,14 +15,14 @@ class PdipluginDeclHdf5(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("benchs", default=False, description="Build benchmarks") variant("fortran", default=True, description="Enable Fortran (for tests only)") @@ -32,26 +33,25 @@ class PdipluginDeclHdf5(CMakePackage): depends_on("cxx", type="build") depends_on("fortran", type="build", when="+fortran") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("hdf5@1.10.4:1 +shared", type=("build", "link", "run"), when="@1.8:") + depends_on("cmake@3.16.3:", type=("build")) + depends_on("hdf5@1.10.4:1 +shared", type=("build", "link", "run")) depends_on("hdf5 +mpi", type=("build", "link", "run"), when="+mpi") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/decl_hdf5" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): - args = [ - "-DBUILD_BENCHMARKING:BOOL={:s}".format("ON" if "+benchs" in self.spec else "OFF"), + return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_FORTRAN:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_HDF5_PARALLEL:BOOL={:s}".format("ON" if "+mpi" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_BENCHMARKING", "benchs"), + self.define_from_variant("BUILD_HDF5_PARALLEL", "mpi"), + self.define_from_variant("BUILD_TESTING", "tests"), ] - return args def setup_run_environment(self, env): env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py index 483817e0940..8038ad383c4 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginDeclNetcdf(CMakePackage): @@ -12,14 +13,14 @@ class PdipluginDeclNetcdf(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") variant("mpi", default=True, description="Enable parallel NetCDF") @@ -27,23 +28,24 @@ class PdipluginDeclNetcdf(CMakePackage): depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("netcdf-c@4.7.3:4", type=("link"), when="@1.8:") - depends_on("netcdf-c@4.6.2:4+mpi", type=("link"), when="+mpi") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + depends_on("netcdf-c@4.7.3:4", type=("link")) + depends_on("netcdf-c+mpi", type=("link"), when="+mpi") + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/decl_netcdf" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_HDF5_PARALLEL:BOOL={:s}".format("ON" if "+mpi" in self.spec else "OFF"), - "-DBUILD_NETCDF_PARALLEL:BOOL={:s}".format("ON" if "+mpi" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_HDF5_PARALLEL", "mpi"), + self.define_from_variant("BUILD_NETCDF_PARALLEL", "mpi"), + self.define_from_variant("BUILD_TESTING", "tests"), ] def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py index 1c6c4d3c6c9..c8e91261307 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginMpi(CMakePackage): @@ -11,36 +12,36 @@ class PdipluginMpi(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") + depends_on("cmake@3.16.3:", type=("build")) depends_on("mpi", type=("build", "link", "run")) - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/mpi" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): - args = [ + return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_TESTING", "tests"), ] - return args def setup_run_environment(self, env): env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py index cedf0116d9b..667f26dd4a0 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginPycall(CMakePackage): @@ -11,34 +12,36 @@ class PdipluginPycall(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("pdi+python@develop", type=("link", "run"), when="@develop") - depends_on("pdi+python@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi+python@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + for v in Pdi.versions: + depends_on("pdi+python@" + str(v), type=("link", "run"), when="@" + str(v)) + depends_on("py-setuptools", type=("build"), when="@1.8.3: ^python@3.12:") depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/pycall" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): - args = [ + return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), + self.define_from_variant("BUILD_TESTING", "tests"), ] - return args def setup_run_environment(self, env): env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py index 2fca2dfcac6..520f04a67fd 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginSerialize(CMakePackage): @@ -12,34 +13,34 @@ class PdipluginSerialize(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/serialize" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_FORTRAN:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_TESTING", "tests"), ] def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py index e3a2b158703..666c03a0796 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginSetValue(CMakePackage): @@ -12,34 +13,35 @@ class PdipluginSetValue(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) - depends_on("spdlog@1.5:", type=("link"), when="@1.5:") + depends_on("spdlog@1.5:", type=("link")) root_cmakelists_dir = "plugins/set_value" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_TESTING", "tests"), ] def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py index 4f582ae945e..a2aae1a4ec0 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginTrace(CMakePackage): @@ -12,33 +13,34 @@ class PdipluginTrace(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/trace" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_TESTING", "tests"), ] def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py index 10e8d2f1161..0f50159e54d 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py @@ -4,6 +4,7 @@ from spack import * from spack.package import * +from spack.pkg.builtin.pdi import Pdi class PdipluginUserCode(CMakePackage): @@ -13,35 +14,35 @@ class PdipluginUserCode(CMakePackage): homepage = "https://pdi.dev" git = "https://github.com/pdidev/pdi.git" + url = "https://github.com/pdidev/pdi/archive/refs/tags/1.8.0.tar.gz" license("BSD-3-Clause") maintainers("jbigot") - version("develop", branch="main", no_cache=True) - version("1.8.1", commit="105161d5c93431d674c73ef365dce3eb724b4fcb") - version("1.8.0", commit="edce72fc198475bab1541cc0b77a30ad02da91c5") + for v in Pdi.versions: + version(str(v), **Pdi.versions[v]) variant("tests", default=False, description="Build tests") depends_on("c", type="build") depends_on("cxx", type="build") - depends_on("cmake@3.16.3:", type=("build"), when="@1.8:") - depends_on("pdi@develop", type=("link", "run"), when="@develop") - depends_on("pdi@1.8.1", type=("link", "run"), when="@1.8.1") - depends_on("pdi@1.8.0", type=("link", "run"), when="@1.8.0") + depends_on("cmake@3.16.3:", type=("build")) + for v in Pdi.versions: + depends_on("pdi@" + str(v), type=("link", "run"), when="@" + str(v)) depends_on("pkgconfig", type=("build")) root_cmakelists_dir = "plugins/user_code" + def url_for_version(self, version): + return Pdi.version_url(version) + def cmake_args(self): - args = [ + return [ "-DINSTALL_PDIPLUGINDIR:PATH={:s}".format(self.prefix.lib), - "-DBUILD_TESTING:BOOL={:s}".format("ON" if "+tests" in self.spec else "OFF"), - "-DBUILD_CFG_VALIDATOR:BOOL=OFF", + self.define_from_variant("BUILD_TESTING", "tests"), ] - return args def setup_run_environment(self, env): env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) From 94719a55b49fcb8a511500572f89feaa15ed8b26 Mon Sep 17 00:00:00 2001 From: Vicente Bolea Date: Tue, 22 Apr 2025 17:38:26 -0400 Subject: [PATCH 228/317] viskores: new package (#50078) * viskores: add package * Update var/spack/repos/builtin/packages/viskores/package.py Co-authored-by: Kenneth Moreland * Apply suggestions from code review Co-authored-by: Kenneth Moreland * Update var/spack/repos/builtin/packages/viskores/package.py --------- Co-authored-by: Kenneth Moreland --- .../builtin/packages/viskores/package.py | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 var/spack/repos/builtin/packages/viskores/package.py diff --git a/var/spack/repos/builtin/packages/viskores/package.py b/var/spack/repos/builtin/packages/viskores/package.py new file mode 100644 index 00000000000..d0fdeed025b --- /dev/null +++ b/var/spack/repos/builtin/packages/viskores/package.py @@ -0,0 +1,215 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +import os +import sys + +from spack.build_systems.cmake import CMakeBuilder +from spack.package import * + + +class Viskores(CMakePackage, CudaPackage, ROCmPackage): + """Viskores is a toolkit of scientific visualization algorithms for emerging + processor architectures. Viskores supports the fine-grained concurrency for + data analysis and visualization algorithms required to drive extreme scale + computing by providing abstract models for data and execution that can be + applied to a variety of algorithms across many different processor + architectures.""" + + homepage = "https://github.com/Viskores/viskores" + maintainers("kmorel", "vicentebolea") + + url = "https://github.com/Viskores/Viskores/archive/refs/tags/v1.0.0.tar.gz" + git = "https://github.com/Viskores/Viskores.git" + tags = ["e4s"] + + test_requires_compiler = True + + version("master", branch="master") + version("release", branch="release") + version( + "1.0.0", + sha256="5bff5bbd747b7662bb4630889960371d06fcc5e5a962d974a898d1883f196eba", + preferred=True, + ) + + variant("shared", default=True, description="build shared libs") + variant("doubleprecision", default=True, description="enable double precision") + variant("logging", default=True, description="build logging support") + variant("mpi", default=True, description="build mpi support") + variant("rendering", default=True, description="build rendering support") + variant("64bitids", default=False, description="enable 64 bits ids") + variant("testlib", default=False, description="build test library") + variant("fpic", default=False, description="build fpic support") + variant("examples", default=False, description="Install builtin examples") + + # Device variants + # CudaPackage provides cuda variant + # ROCmPackage provides rocm variant + variant("kokkos", default=False, description="build using Kokkos backend") + variant( + "cuda_native", default=True, description="build using native cuda backend", when="+cuda" + ) + variant("openmp", default=(sys.platform != "darwin"), 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("c", type="build") + depends_on("cxx", type="build") + + depends_on("cmake@3.12:", type="build") # CMake >= 3.12 + depends_on("cmake@3.18:", when="+rocm", type="build") # CMake >= 3.18 + + conflicts("%gcc@:4.10", msg="viskores requires gcc >= 5. Please install a newer version") + + depends_on("cuda@10.1.0:", when="+cuda_native") + depends_on("tbb", when="+tbb") + depends_on("mpi", when="+mpi") + depends_on("llvm-openmp", when="+openmp %apple-clang") + + # Viskores uses the default Kokkos backend + depends_on("kokkos", when="+kokkos") + # Viskores native CUDA and Kokkos CUDA backends are not compatible + depends_on("kokkos ~cuda", when="+kokkos +cuda +cuda_native") + depends_on("kokkos +cuda", when="+kokkos +cuda ~cuda_native") + for cuda_arch in CudaPackage.cuda_arch_values: + depends_on( + "kokkos cuda_arch=%s" % cuda_arch, + when="+kokkos +cuda ~cuda_native cuda_arch=%s" % cuda_arch, + ) + # Viskores uses the Kokkos HIP backend. + # If Kokkos provides multiple backends, the HIP backend may or + # may not be used for Viskores depending on the default selected by Kokkos + depends_on("kokkos +rocm", when="+kokkos +rocm") + # Propagate AMD GPU target to kokkos for +rocm + for amdgpu_value in ROCmPackage.amdgpu_targets: + depends_on( + "kokkos amdgpu_target=%s" % amdgpu_value, + when="+kokkos +rocm amdgpu_target=%s" % amdgpu_value, + ) + + depends_on("hip@3.7:", when="+rocm") + # CUDA thrust is already include in the CUDA pkg + depends_on("rocthrust", when="+kokkos+rocm ^cmake@3.24:") + + # It would be better if this could be expressed as a when clause to disable the rocm variant, + # but that is not currently possible since when clauses are stacked, not overwritten. + conflicts("+rocm", when="+cuda") + conflicts("+rocm", when="~kokkos", msg="Viskores does not support HIP without Kokkos") + + # Viskores uses the Kokkos SYCL backend. + # If Kokkos provides multiple backends, the SYCL backend may or + # may not be used for Viskores depending on the default selected by Kokkos + depends_on("kokkos +sycl", when="+kokkos +sycl") + conflicts("+sycl", when="~kokkos", msg="Viskores does not support SYCL without Kokkos") + conflicts("+cuda~cuda_native~kokkos", msg="Cannot have +cuda without a cuda device") + conflicts("+cuda", when="cuda_arch=none", msg="viskores +cuda requires that cuda_arch be set") + + def cmake_args(self): + spec = self.spec + options = [] + gpu_name_table = { + "30": "kepler", + "32": "kepler", + "35": "kepler", + "50": "maxwell", + "52": "maxwell", + "53": "maxwell", + "60": "pascal", + "61": "pascal", + "62": "pascal", + "70": "volta", + "72": "turing", + "75": "turing", + "80": "ampere", + "86": "ampere", + } + with working_dir("spack-build", create=True): + is_release = spec.variants["build_type"].value == "Release" + options = [ + self.define("Viskores_ENABLE_TESTING", False), + self.define("Viskores_NO_ASSERT", is_release), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("Viskores_ENABLE_KOKKOS", "kokkos"), + self.define_from_variant("Viskores_ENABLE_LOGGING", "logging"), + self.define_from_variant("Viskores_ENABLE_MPI", "mpi"), + self.define_from_variant("Viskores_ENABLE_OPENMP", "openmp"), + self.define_from_variant("Viskores_ENABLE_RENDERING", "rendering"), + self.define_from_variant("Viskores_ENABLE_TBB", "tbb"), + self.define_from_variant("Viskores_ENABLE_TESTING_LIBRARY", "testlib"), + self.define_from_variant("Viskores_INSTALL_EXAMPLES", "examples"), + self.define_from_variant("Viskores_USE_64BIT_IDS", "64bitids"), + self.define_from_variant("Viskores_USE_DOUBLE_PRECISION", "doubleprecision"), + self.define( + "Viskores_USE_DEFAULT_TYPES_FOR_ASCENT", "~64bitids +doubleprecision" in spec + ), + ] + + if "+tbb" in spec: + # viskores detectes tbb via TBB_ROOT env var + os.environ["TBB_ROOT"] = spec["tbb"].prefix + + if "+kokkos" in spec and "+rocm" in spec and spec.satisfies("^kokkos@4:"): + options.append(f"-DCMAKE_CXX_COMPILER:FILEPATH={spec['hip'].prefix.bin.hipcc}") + + # Support for relocatable code + if "~shared" in spec and "+fpic" in spec: + options.append("-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON") + + # cuda support + if "+cuda_native" in spec: + options.append("-DViskores_ENABLE_CUDA:BOOL=ON") + options.append("-DCMAKE_CUDA_HOST_COMPILER={0}".format(env["SPACK_CXX"])) + + if spec.satisfies("^cmake@3.18:"): + options.append(CMakeBuilder.define_cuda_architectures(self)) + + else: + # Viskores_CUDA_Architecture only accepts a single CUDA arch + num_cuda_arch = spec.variants["cuda_arch"].value[0] + str_cuda_arch = str() + + try: + str_cuda_arch = gpu_name_table[num_cuda_arch] + except KeyError: + raise InstallError(f"cuda_arch={num_cuda_arch} needs cmake>=3.18") + options.append(f"-DViskores_CUDA_Architecture={str_cuda_arch}") + + else: + options.append("-DViskores_ENABLE_CUDA:BOOL=OFF") + + # hip support + if "+rocm" in spec: + options.append(CMakeBuilder.define_hip_architectures(self)) + + return options + + def test_smoke_test(self): + """Build and run ctests""" + if "+examples" not in self.spec: + raise SkipTest("Package must be installed with +examples") + + testdir = "smoke_test_build" + with working_dir(testdir, create=True): + cmake = Executable(self.spec["cmake"].prefix.bin.cmake) + ctest = Executable(self.spec["cmake"].prefix.bin.ctest) + + mpi_home = str() + if "+mpi" in self.spec: + mpi_home = self.spec["mpi"].prefix + cmake( + self.prefix.share.doc.Viskores.examples.smoke_test, + f"-DCMAKE_C_COMPILER={self.compiler.cc}", + f"-DCMAKE_CXX_COMPILER={self.compiler.cxx}", + f"-DMPI_HOME={mpi_home}", + f"-DViskores_ROOT={self.prefix}", + ) + cmake("--build", ".") + ctest("--verbose") + + @run_after("install") + @on_package_attributes(run_tests=True) + def build_test(self): + self.test_smoke_test() From ce654b68824ef1fcce780f0d0c49064a198cb7fc Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Tue, 22 Apr 2025 18:27:43 -0400 Subject: [PATCH 229/317] mapl: add cxx dependence (#50168) --- 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 6251e5a13d4..20a0f516937 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -285,6 +285,7 @@ class Mapl(CMakePackage): conflicts("+extdata2g", when="@:2.40.3 %intel@2021.7:") depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("fortran", type="build") depends_on("cmake@3.24:", type="build", when="@2.51:") From 42cd7c4f89c977f57722c6b124ec183274ea6fc9 Mon Sep 17 00:00:00 2001 From: Buldram Date: Tue, 22 Apr 2025 18:29:56 -0400 Subject: [PATCH 230/317] nim: add 2.2.4, 2.0.16 (#50166) https://nim-lang.org//blog/2025/04/22/nim-224-2016.html --- var/spack/repos/builtin/packages/nim/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/nim/package.py b/var/spack/repos/builtin/packages/nim/package.py index f5db59f3349..81a7ba1fec8 100644 --- a/var/spack/repos/builtin/packages/nim/package.py +++ b/var/spack/repos/builtin/packages/nim/package.py @@ -23,8 +23,10 @@ class Nim(Package): maintainers("Buldram") version("devel", branch="devel") + version("2.2.4", sha256="f82b419750fcce561f3f897a0486b180186845d76fb5d99f248ce166108189c7") version("2.2.2", sha256="7fcc9b87ac9c0ba5a489fdc26e2d8480ce96a3ca622100d6267ef92135fd8a1f") version("2.2.0", sha256="ce9842849c9760e487ecdd1cdadf7c0f2844cafae605401c7c72ae257644893c") + version("2.0.16", sha256="b2e70c6c011b5507093090a8887fa252773208fd047ee38f8562e2569e5c378a") version("2.0.14", sha256="d420b955833294b7861e3fb65021dac26d1c19c528c4d6e139ccd379e2c15a43") version("2.0.12", sha256="c4887949c5eb8d7f9a9f56f0aeb2bf2140fabf0aee0f0580a319e2a09815733a") version("2.0.4", sha256="71526bd07439dc8e378fa1a6eb407eda1298f1f3d4df4476dca0e3ca3cbe3f09") From 1934c8cf73595e96924438e972602e652e5660ac Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 22 Apr 2025 15:34:50 -0700 Subject: [PATCH 231/317] verible: update for best practices (#50154) --- var/spack/repos/builtin/packages/verible/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/verible/package.py b/var/spack/repos/builtin/packages/verible/package.py index f1d3faa52b8..ade08131246 100644 --- a/var/spack/repos/builtin/packages/verible/package.py +++ b/var/spack/repos/builtin/packages/verible/package.py @@ -29,6 +29,8 @@ class Verible(Package): homepage = "https://chipsalliance.github.io/verible" git = "https://github.com/chipsalliance/verible.git" + maintainers("davekeeshan") + license("BSD-3-Clause") version("master", branch="master") @@ -111,8 +113,6 @@ class Verible(Package): depends_on("cxx", type="build") # generated - maintainers("davekeeshan") - depends_on("flex", type="build") depends_on("bison", type="build") depends_on("bazel", type="build") @@ -121,11 +121,13 @@ class Verible(Package): @when("@:0.0.3841") def install(self, spec, prefix): + """Install method for versions up to 0.0.3841.""" bazel("build", "-c", "opt", "//...") bazel("run", "-c", "opt", ":install", "--", prefix.bin) @when("@0.0.3841:") def install(self, spec, prefix): + """Install method for versions 0.0.3841 and newer.""" mkdirp(prefix.bin) bash = which("bash") bazel("build", "-c", "opt", ":install-binaries") From 48ca9a5f3c1fac59a3fe697eb0b1a409e052012f Mon Sep 17 00:00:00 2001 From: SXS Bot <31972027+sxs-bot@users.noreply.github.com> Date: Tue, 22 Apr 2025 18:36:15 -0400 Subject: [PATCH 232/317] spectre: add v2025.04.21 (#50153) 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 9ecc18b771b..03c3d33be8d 100644 --- a/var/spack/repos/builtin/packages/spectre/package.py +++ b/var/spack/repos/builtin/packages/spectre/package.py @@ -30,6 +30,9 @@ class Spectre(CMakePackage): license("MIT") version("develop", branch="develop") + version( + "2025.04.21", sha256="09b8412abdbd3853b256b34669c27b0f0e69bf6fc5c48e9bb450a46221e62abd" + ) version( "2025.03.17", sha256="3b3187a6d0e0f0386ae9bf06b77485771b841886a6e71abb12516c2aa874ae65" ) From 7cab3e23833cd56a8cc9ec79ebb40acf06c82926 Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Tue, 22 Apr 2025 15:37:01 -0700 Subject: [PATCH 233/317] g2: update for best practices (#50155) --- .../repos/builtin/packages/g2/package.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/g2/package.py b/var/spack/repos/builtin/packages/g2/package.py index d607733dd5e..19cdb3c4d97 100644 --- a/var/spack/repos/builtin/packages/g2/package.py +++ b/var/spack/repos/builtin/packages/g2/package.py @@ -6,11 +6,13 @@ class G2(CMakePackage): - """Utilities for coding/decoding GRIB2 messages. This library contains - Fortran 90 decoder/encoder routines for GRIB edition 2, as well as - indexing/searching utility routines. + """Utilities for coding/decoding GRIB2 messages. - This is part of the NCEPLIBS project.""" + This library contains Fortran 90 decoder/encoder routines for GRIB edition 2, + as well as indexing/searching utility routines. + + This is part of the NCEPLIBS project. + """ homepage = "https://noaa-emc.github.io/NCEPLIBS-g2" url = "https://github.com/NOAA-EMC/NCEPLIBS-g2/archive/refs/tags/v3.4.3.tar.gz" @@ -18,6 +20,8 @@ class G2(CMakePackage): maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett") + license("LGPL-3.0") + version("develop", branch="develop") version("3.5.1", sha256="a9acdb5d23eca532838f21c4a917727ac85851fc9e1f100d65a6f27c1a563998") version("3.5.0", sha256="3ff59a705bedf56061bba2d667a04391d82701847f93ea5fa1c1d3bd335d07da") @@ -50,14 +54,16 @@ class G2(CMakePackage): ) variant("use_g2c_api", default=False, description="Use new file-based API", when="@4:") + # Build dependencies depends_on("c", type="build") depends_on("fortran", type="build") + # Required dependencies depends_on("jasper@:2.0.32", when="@:3.4.7") depends_on("jasper") + depends_on("libpng") depends_on("g2c@2:", when="@4:") depends_on("g2c@2: +aec", when="+aec") - depends_on("libpng") depends_on("zlib-api", when="@4:") depends_on("bacio", when="@3.4.6:") depends_on("ip@3.3.3:", when="@4:") @@ -65,6 +71,7 @@ class G2(CMakePackage): depends_on("sp", when="^ip@:4") requires("^sp precision=d", when="^ip@:4 ^sp@2.4:") depends_on("g2c@1.8: +utils", when="+g2c_compare") + with when("+w3emc"): depends_on("w3emc") depends_on("w3emc precision=4", when="precision=4") @@ -94,13 +101,13 @@ def setup_run_environment(self, env): ) for suffix in precisions: lib = find_libraries( - "libg2_" + suffix, + f"libg2_{suffix}", root=self.prefix, shared=self.spec.satisfies("+shared"), recursive=True, ) - env.set("G2_LIB" + suffix, lib[0]) - env.set("G2_INC" + suffix, join_path(self.prefix, "include_" + suffix)) + env.set(f"G2_LIB{suffix}", lib[0]) + env.set(f"G2_INC{suffix}", join_path(self.prefix, f"include_{suffix}")) def check(self): with working_dir(self.build_directory): From 2d212561fbd9fa183132c8f7005bb8b04e6b1041 Mon Sep 17 00:00:00 2001 From: Chris White Date: Tue, 22 Apr 2025 15:47:51 -0700 Subject: [PATCH 234/317] libcerf: Add new versions (#50089) * update libcerf to use new URL and CMake for new versions but keep old URL and autoconf for 1.3 * add maintainer * fix comment --------- Co-authored-by: white238 --- .../repos/builtin/packages/libcerf/package.py | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py index 02bc1dc8c66..3f1468f5297 100644 --- a/var/spack/repos/builtin/packages/libcerf/package.py +++ b/var/spack/repos/builtin/packages/libcerf/package.py @@ -3,24 +3,52 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.autotools import AutotoolsBuilder +from spack.build_systems.cmake import CMakeBuilder from spack.package import * -class Libcerf(AutotoolsPackage, SourceforgePackage): +class Libcerf(AutotoolsPackage, CMakePackage): """A self-contained C library providing complex error functions, based on Faddeeva's plasma dispersion function w(z). Also provides Dawson's - integral and Voigt's convolution of a Gaussian and a Lorentzian + integral and Voigt's convolution of a Gaussian and a Lorentzian""" - """ + homepage = "https://jugit.fz-juelich.de/mlz/libcerf/" + url = "https://jugit.fz-juelich.de/mlz/libcerf/-/archive/v2.4/libcerf-v2.4.tar.gz" - homepage = "https://sourceforge.net/projects/libcerf/" - sourceforge_mirror_path = "libcerf/libcerf-1.3.tgz" + license("MIT") - version("1.3", sha256="d7059e923d3f370c89fb4d19ed4f827d381bc3f0e36da5595a04aeaaf3e6a859") + maintainers("white238") - depends_on("c", type="build") # generated - depends_on("fortran", type="build") # generated + version("2.4", sha256="080b30ae564c3dabe3b89264522adaf5647ec754021572bee54929697b276cdc") + version("2.3", sha256="cceefee46e84ce88d075103390b4f9d04c34e4bc3b96d733292c36836d4f7065") + version( + "1.3", + sha256="d7059e923d3f370c89fb4d19ed4f827d381bc3f0e36da5595a04aeaaf3e6a859", + url="https://sourceforge.net/projects/libcerf/files/libcerf-1.3.tgz", + ) + variant("cpp", default=False, when="@2:", description="Compile source as C++") + + # Build system + build_system( + conditional("cmake", when="@2:"), conditional("autotools", when="@=1.3"), default="cmake" + ) + + depends_on("c", type="build") + depends_on("fortran", type="build") + + +class CMakeBuilder(CMakeBuilder): + def cmake_args(self): + args = [] + + args.append(self.define_from_variant("CERF_CPP", "cpp")) + + return args + + +class AutotoolsBuilder(AutotoolsBuilder): def configure_args(self): spec = self.spec options = [] From 6995010babaeba4a7152bddfb49ca6f2b05dd5ce Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 00:55:27 +0200 Subject: [PATCH 235/317] py-pyproject-metadata: add v0.9.1 (#50150) * py-pyproject-metadata: add v0.9.1 Changelog: https://github.com/pypa/pyproject-metadata/blob/0.9.1/docs/changelog.md#091-10-03-2024 Diff: https://github.com/pypa/pyproject-metadata/compare/0.7.1...0.9.1 * fixup! py-pyproject-metadata: add v0.9.1 --- .../packages/py-pyproject-metadata/package.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pyproject-metadata/package.py b/var/spack/repos/builtin/packages/py-pyproject-metadata/package.py index 0b29c4916a9..19ed7878b52 100644 --- a/var/spack/repos/builtin/packages/py-pyproject-metadata/package.py +++ b/var/spack/repos/builtin/packages/py-pyproject-metadata/package.py @@ -13,8 +13,21 @@ class PyPyprojectMetadata(PythonPackage): license("MIT") + version("0.9.1", sha256="b8b2253dd1b7062b78cf949a115f02ba7fa4114aabe63fa10528e9e1a954a816") version("0.7.1", sha256="0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67") version("0.6.1", sha256="b5fb09543a64a91165dfe85796759f9e415edc296beb4db33d1ecf7866a862bd") - depends_on("py-setuptools@42:", type="build") - depends_on("py-packaging@19:", type=("build", "run")) + with default_args(type="build"): + depends_on("py-typing-extensions", when="@0.9: ^python@:3.7") + depends_on("py-flit-core", when="@0.8:") + depends_on("py-setuptools@42:", when="@:0.7.1") + + with default_args(type=("build", "run")): + depends_on("python@3.7:") + depends_on("py-packaging@19:") + + def url_for_version(self, version): + if version >= Version("0.8.0"): + return f"https://files.pythonhosted.org/packages/source/p/pyproject_metadata/pyproject_metadata-{version}.tar.gz" + else: + return f"https://files.pythonhosted.org/packages/source/p/pyproject-metadata/pyproject-metadata-{version}.tar.gz" From f4c4b06a46544389ac2b94425ff8a8e979aabf81 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 01:06:40 +0200 Subject: [PATCH 236/317] py-hatch: add v1.13.0 (#50147) --- var/spack/repos/builtin/packages/py-hatch/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-hatch/package.py b/var/spack/repos/builtin/packages/py-hatch/package.py index f653f593942..31464d689ba 100644 --- a/var/spack/repos/builtin/packages/py-hatch/package.py +++ b/var/spack/repos/builtin/packages/py-hatch/package.py @@ -13,6 +13,7 @@ class PyHatch(PythonPackage): license("MIT") + version("1.13.0", sha256="5e1a75770cfe8f3ebae3abfded3a976238b0acefd19cdabc5245597525b8066f") version("1.12.0", sha256="ae80478d10312df2b44d659c93bc2ed4d33aecddce4b76378231bdf81c8bf6ad") depends_on("python@3.8:", type=("build", "run")) From b7d85e7694799bb2a4bf21705e052c42df97cf6b Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 01:58:31 +0200 Subject: [PATCH 237/317] py-packaging: add v25.0 (#50142) --- var/spack/repos/builtin/packages/py-packaging/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py index eb03c4415e5..31a409f5237 100644 --- a/var/spack/repos/builtin/packages/py-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -12,6 +12,8 @@ class PyPackaging(PythonPackage): pypi = "packaging/packaging-19.2.tar.gz" license("BSD-2-Clause") + + version("25.0", sha256="d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f") version("24.2", sha256="c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f") version("24.1", sha256="026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002") version("23.2", sha256="048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5") From dddbd944a408384afc295183f4e0742aeeae4180 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 02:04:25 +0200 Subject: [PATCH 238/317] py-tzdata: add v2025.2 (#50138) --- var/spack/repos/builtin/packages/py-tzdata/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-tzdata/package.py b/var/spack/repos/builtin/packages/py-tzdata/package.py index 651eced6078..cae9a7bb3fd 100644 --- a/var/spack/repos/builtin/packages/py-tzdata/package.py +++ b/var/spack/repos/builtin/packages/py-tzdata/package.py @@ -13,6 +13,7 @@ class PyTzdata(PythonPackage): license("Apache-2.0") + version("2025.2", sha256="b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9") version("2023.3", sha256="11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a") depends_on("py-setuptools@40.8:", type="build") From 67eb9cfccb12f2a1c6d400e633145231f6a36b52 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 02:07:10 +0200 Subject: [PATCH 239/317] py-setuptools: add v78.1.1 (#50133) --- var/spack/repos/builtin/packages/py-setuptools/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index e925e1975ab..7e249a5ece4 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -21,6 +21,7 @@ class PySetuptools(Package, PythonExtension): # Requires railroad skip_modules = ["setuptools._vendor", "pkg_resources._vendor"] + version("78.1.1", sha256="c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561") version("78.1.0", sha256="3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8") version("78.0.2", sha256="4a612c80e1f1d71b80e4906ce730152e8dec23df439f82731d9d0b608d7b700d") version("78.0.1", sha256="1cc9b32ee94f93224d6c80193cbb768004667aa2f2732a473d6949b0236c1d4e") From 47b71ba8ca9eddb89438fa9bea58a69d8e5974d6 Mon Sep 17 00:00:00 2001 From: Jonas Eschle Date: Wed, 23 Apr 2025 03:14:10 +0200 Subject: [PATCH 240/317] py-zfit-physics: new package (#43696) * Added package * Fix base class Co-authored-by: Adam J. Stewart * fix: copyright --------- Co-authored-by: Adam J. Stewart --- .../packages/py-zfit-physics/package.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-zfit-physics/package.py diff --git a/var/spack/repos/builtin/packages/py-zfit-physics/package.py b/var/spack/repos/builtin/packages/py-zfit-physics/package.py new file mode 100644 index 00000000000..f4b82e1ea3b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-zfit-physics/package.py @@ -0,0 +1,29 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyZfitPhysics(PythonPackage): + """Tools and models to extend zfit with physics specific content.""" + + homepage = "https://github.com/zfit/zfit-physics" + pypi = "zfit-physics/zfit_physics-0.7.0.tar.gz" + + maintainers("jonas-eschle", "ikrommyd") + license("BSD-3-Clause", checked_by="jonas-eschle") + + tags = ["likelihood", "statistics", "inference", "fitting", "hep"] + + version("0.7.0", sha256="5d65becff7265a12d9b62a8476c5359e75ec10d6ac0fd84dfa39eb82b6693cda") + + depends_on("py-setuptools@42:", type="build") + depends_on("py-setuptools-scm@3.4:+toml", type="build") + depends_on("py-setuptools-scm-git-archive", type="build") + + # TODO: remove "build" once fixed in spack that tests need "run", not "build" + with default_args(type=("build", "run")): + depends_on("python@3.9:", when="@0.7:") + depends_on("py-zfit@0.20:", when="@0.7:") From 3f063ace1db4d30c854eb68793ee5cbe4d4e9855 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 23 Apr 2025 15:41:22 +0200 Subject: [PATCH 241/317] Add type hints to all setup_*environment functions (#49985) --- .../docs/build_systems/makefilepackage.rst | 2 +- lib/spack/docs/module_file_support.rst | 4 ++-- lib/spack/spack/build_systems/autotools.py | 5 ++++- lib/spack/spack/build_systems/cargo.py | 5 ++++- lib/spack/spack/build_systems/go.py | 5 ++++- lib/spack/spack/build_systems/intel.py | 14 +++++++++--- lib/spack/spack/build_systems/lua.py | 5 ++++- lib/spack/spack/build_systems/octave.py | 5 ++++- lib/spack/spack/build_systems/oneapi.py | 2 +- lib/spack/spack/builder.py | 12 +++++++--- lib/spack/spack/test/data/unparse/grads.txt | 4 ++-- lib/spack/spack/test/data/unparse/llvm.txt | 4 ++-- lib/spack/spack/test/data/unparse/mfem.txt | 2 +- .../spack/test/data/unparse/py-torch.txt | 2 +- .../spack/test/data/unparse/trilinos.txt | 6 ++--- lib/spack/spack/test/util/package_hash.py | 18 +++++++-------- .../build-env-compiler-var-b/package.py | 2 +- .../builtin.mock/packages/callpath/package.py | 2 +- .../packages/cmake-client/package.py | 4 +++- .../builtin.mock/packages/cmake/package.py | 6 +++-- .../packages/conflict-parent/package.py | 2 +- .../builtin.mock/packages/conflict/package.py | 2 +- .../packages/hash-test1/package.py | 4 +++- .../packages/hash-test2/package.py | 4 +++- .../packages/hash-test3/package.py | 4 +++- .../packages/modifies-run-env/package.py | 2 +- .../packages/module-long-help/package.py | 2 +- .../packages/module-manpath-append/package.py | 2 +- .../module-manpath-prepend/package.py | 2 +- .../packages/module-manpath-setenv/package.py | 2 +- .../packages/module-path-separator/package.py | 2 +- .../packages/module-setenv-raw/package.py | 2 +- .../builtin.mock/packages/mpileaks/package.py | 2 +- .../builtin.mock/packages/zlib/package.py | 2 +- .../repos/builtin/packages/3dtk/package.py | 2 +- .../repos/builtin/packages/acct/package.py | 2 +- .../repos/builtin/packages/acfl/package.py | 2 +- .../builtin/packages/activeharmony/package.py | 4 ++-- .../repos/builtin/packages/adf/package.py | 2 +- .../repos/builtin/packages/adios/package.py | 2 +- .../repos/builtin/packages/adios2/package.py | 4 ++-- .../repos/builtin/packages/adlbx/package.py | 2 +- .../packages/adwaita-icon-theme/package.py | 12 ++++++---- .../repos/builtin/packages/amber/package.py | 4 ++-- .../builtin/packages/ambertools/package.py | 4 ++-- .../builtin/packages/amdlibflame/package.py | 4 +++- .../builtin/packages/amdscalapack/package.py | 4 +++- .../repos/builtin/packages/ampl/package.py | 2 +- .../builtin/packages/ampliconnoise/package.py | 2 +- .../builtin/packages/amr-wind/package.py | 2 +- .../builtin/packages/amrfinder/package.py | 2 +- .../repos/builtin/packages/amrvis/package.py | 2 +- .../builtin/packages/anaconda3/package.py | 2 +- .../repos/builtin/packages/angsd/package.py | 2 +- .../repos/builtin/packages/antlr/package.py | 2 +- .../packages/antlr4-complete/package.py | 2 +- .../repos/builtin/packages/ants/package.py | 2 +- .../repos/builtin/packages/aocl-da/package.py | 4 ++-- .../builtin/packages/aotriton/package.py | 2 +- .../repos/builtin/packages/apktool/package.py | 2 +- .../builtin/packages/apple-gl/package.py | 4 +++- .../builtin/packages/aqlprofile/package.py | 2 +- .../builtin/packages/arm-forge/package.py | 2 +- .../builtin/packages/armcimpi/package.py | 4 +++- .../packages/armcomputelibrary/package.py | 2 +- .../builtin/packages/armpl-gcc/package.py | 6 +++-- .../builtin/packages/arpack-ng/package.py | 2 +- .../repos/builtin/packages/ascent/package.py | 2 +- .../repos/builtin/packages/aspect/package.py | 2 +- .../repos/builtin/packages/aspell/package.py | 2 +- .../builtin/packages/aspera-cli/package.py | 2 +- .../repos/builtin/packages/astral/package.py | 2 +- .../builtin/packages/at-spi2-core/package.py | 12 ++++++---- .../repos/builtin/packages/athena/package.py | 2 +- .../repos/builtin/packages/atk/package.py | 6 +++-- .../repos/builtin/packages/atop/package.py | 2 +- .../builtin/packages/augustus/package.py | 4 ++-- .../repos/builtin/packages/authd/package.py | 2 +- .../packages/autoconf-archive/package.py | 4 +++- .../builtin/packages/autofact/package.py | 2 +- .../repos/builtin/packages/avizo/package.py | 2 +- .../builtin/packages/aws-ofi-nccl/package.py | 6 +++-- .../builtin/packages/aws-ofi-rccl/package.py | 6 +++-- .../builtin/packages/babelflow/package.py | 2 +- .../builtin/packages/babelstream/package.py | 2 +- .../repos/builtin/packages/babl/package.py | 8 +++++-- .../builtin/packages/backupninja/package.py | 2 +- .../builtin/packages/bam-readcount/package.py | 2 +- .../builtin/packages/bamaddrg/package.py | 2 +- .../repos/builtin/packages/bart/package.py | 2 +- .../builtin/packages/barvinok/package.py | 2 +- .../repos/builtin/packages/bazel/package.py | 2 +- .../repos/builtin/packages/bbmap/package.py | 2 +- .../builtin/packages/bcftools/package.py | 2 +- .../repos/builtin/packages/beast1/package.py | 2 +- .../repos/builtin/packages/beast2/package.py | 2 +- .../builtin/packages/biopieces/package.py | 2 +- .../builtin/packages/blackhat/package.py | 2 +- .../repos/builtin/packages/blat/package.py | 2 +- .../repos/builtin/packages/bml/package.py | 2 +- .../repos/builtin/packages/bohrium/package.py | 2 +- .../builtin/packages/bonniepp/package.py | 2 +- .../repos/builtin/packages/boost/package.py | 6 +++-- .../repos/builtin/packages/braker/package.py | 2 +- .../builtin/packages/breakdancer/package.py | 2 +- .../repos/builtin/packages/breseq/package.py | 2 +- .../repos/builtin/packages/bufr/package.py | 4 ++-- .../builtin/packages/cachefilesd/package.py | 2 +- .../repos/builtin/packages/caliper/package.py | 2 +- .../repos/builtin/packages/casper/package.py | 2 +- .../repos/builtin/packages/cbench/package.py | 2 +- .../repos/builtin/packages/cbflib/package.py | 2 +- .../packages/cbtf-argonavis-gui/package.py | 4 ++-- .../packages/cbtf-argonavis/package.py | 4 ++-- .../builtin/packages/cbtf-krell/package.py | 2 +- .../repos/builtin/packages/cdhit/package.py | 2 +- .../repos/builtin/packages/cgal/package.py | 2 +- .../repos/builtin/packages/changa/package.py | 2 +- .../repos/builtin/packages/chapel/package.py | 4 ++-- .../repos/builtin/packages/charmpp/package.py | 4 +++- .../builtin/packages/chez-scheme/package.py | 4 ++-- .../repos/builtin/packages/chlorop/package.py | 2 +- .../repos/builtin/packages/chrony/package.py | 2 +- .../repos/builtin/packages/cinch/package.py | 4 +++- .../repos/builtin/packages/citcoms/package.py | 2 +- .../packages/clingo-bootstrap/package.py | 2 +- .../repos/builtin/packages/cmake/package.py | 4 +++- .../repos/builtin/packages/cmdstan/package.py | 2 +- .../repos/builtin/packages/comgr/package.py | 2 +- .../packages/compiler-wrapper/package.py | 4 +++- .../packages/composable-kernel/package.py | 2 +- .../builtin/packages/conda4aarch64/package.py | 2 +- .../repos/builtin/packages/conduit/package.py | 2 +- .../builtin/packages/conserver/package.py | 2 +- .../repos/builtin/packages/corenlp/package.py | 4 ++-- .../repos/builtin/packages/cosign/package.py | 2 +- .../repos/builtin/packages/cosma/package.py | 2 +- .../repos/builtin/packages/costa/package.py | 2 +- .../repos/builtin/packages/cplex/package.py | 2 +- .../repos/builtin/packages/cppunit/package.py | 2 +- .../builtin/packages/cracklib/package.py | 2 +- .../builtin/packages/cray-mpich/package.py | 2 +- .../builtin/packages/cray-mvapich2/package.py | 2 +- .../repos/builtin/packages/cronie/package.py | 2 +- .../builtin/packages/crtm-fix/package.py | 2 +- .../builtin/packages/cryptsetup/package.py | 8 +++++-- .../repos/builtin/packages/cub/package.py | 4 +++- .../repos/builtin/packages/cuda/package.py | 8 ++++--- .../repos/builtin/packages/cudnn/package.py | 2 +- .../repos/builtin/packages/cupla/package.py | 6 +++-- .../repos/builtin/packages/curl/package.py | 4 +++- .../repos/builtin/packages/cutlass/package.py | 2 +- .../repos/builtin/packages/dalton/package.py | 2 +- .../packages/darshan-runtime/package.py | 2 +- .../builtin/packages/dataspaces/package.py | 2 +- .../repos/builtin/packages/dbxtool/package.py | 2 +- .../repos/builtin/packages/dd4hep/package.py | 2 +- .../repos/builtin/packages/ddt/package.py | 2 +- .../packages/dealii-parameter-gui/package.py | 2 +- .../repos/builtin/packages/dealii/package.py | 4 ++-- .../packages/deconseq-standalone/package.py | 2 +- .../repos/builtin/packages/delphes/package.py | 2 +- .../repos/builtin/packages/dialign/package.py | 2 +- .../builtin/packages/diffutils/package.py | 2 +- .../builtin/packages/dihydrogen/package.py | 2 +- .../repos/builtin/packages/dislin/package.py | 8 ++++--- .../repos/builtin/packages/distcc/package.py | 2 +- .../repos/builtin/packages/dmd/package.py | 2 +- .../builtin/packages/docbook-xml/package.py | 6 +++-- .../builtin/packages/docbook-xsl/package.py | 6 +++-- .../repos/builtin/packages/dock/package.py | 2 +- .../repos/builtin/packages/dorado/package.py | 2 +- .../builtin/packages/dosfstools/package.py | 2 +- .../packages/dotnet-core-sdk/package.py | 2 +- .../repos/builtin/packages/dray/package.py | 2 +- .../repos/builtin/packages/dtf/package.py | 2 +- .../repos/builtin/packages/duckdb/package.py | 2 +- .../builtin/packages/e2fsprogs/package.py | 2 +- .../builtin/packages/e3sm-scorpio/package.py | 2 +- .../repos/builtin/packages/easi/package.py | 2 +- .../repos/builtin/packages/ecflow/package.py | 2 +- .../repos/builtin/packages/eckit/package.py | 2 +- .../repos/builtin/packages/edm4hep/package.py | 2 +- .../repos/builtin/packages/eigen/package.py | 2 +- .../builtin/packages/eigenexa/package.py | 2 +- .../builtin/packages/elmerfem/package.py | 2 +- .../repos/builtin/packages/emacs/package.py | 2 +- .../repos/builtin/packages/enzyme/package.py | 4 +++- .../builtin/packages/epics-base/package.py | 8 ++++--- .../packages/epics-ca-gateway/package.py | 6 +++-- .../builtin/packages/epics-pcas/package.py | 6 +++-- .../builtin/packages/epics-snmp/package.py | 6 +++-- .../repos/builtin/packages/eq-r/package.py | 2 +- .../repos/builtin/packages/esmf/package.py | 8 ++++--- .../builtin/packages/esys-particle/package.py | 2 +- .../repos/builtin/packages/etcd/package.py | 2 +- .../repos/builtin/packages/evtgen/package.py | 2 +- .../repos/builtin/packages/exawind/package.py | 2 +- .../builtin/packages/exciting/package.py | 2 +- .../builtin/packages/exodusii/package.py | 2 +- .../repos/builtin/packages/express/package.py | 2 +- .../repos/builtin/packages/extrae/package.py | 6 +++-- .../repos/builtin/packages/eztrace/package.py | 2 +- .../repos/builtin/packages/f77-zmq/package.py | 2 +- .../repos/builtin/packages/faiss/package.py | 2 +- .../repos/builtin/packages/fenics/package.py | 4 ++-- .../repos/builtin/packages/ferret/package.py | 2 +- .../repos/builtin/packages/ffb/package.py | 2 +- .../repos/builtin/packages/ffmpeg/package.py | 2 +- .../repos/builtin/packages/fftw/package.py | 2 +- .../repos/builtin/packages/fftx/package.py | 10 ++++++--- .../repos/builtin/packages/fgsl/package.py | 2 +- .../repos/builtin/packages/fides/package.py | 2 +- .../builtin/packages/findutils/package.py | 4 ++-- .../builtin/packages/flamemaster/package.py | 2 +- .../repos/builtin/packages/flecsph/package.py | 2 +- .../repos/builtin/packages/fleur/package.py | 2 +- .../builtin/packages/flux-core/package.py | 4 ++-- .../builtin/packages/flux-pmix/package.py | 2 +- .../builtin/packages/flux-sched/package.py | 2 +- .../builtin/packages/foam-extend/package.py | 12 +++++----- .../builtin/packages/font-util/package.py | 2 +- .../repos/builtin/packages/fpm/package.py | 2 +- .../repos/builtin/packages/fpocket/package.py | 2 +- .../builtin/packages/freebayes/package.py | 2 +- .../builtin/packages/freesurfer/package.py | 2 +- .../repos/builtin/packages/fsl/package.py | 4 ++-- .../repos/builtin/packages/fstrack/package.py | 2 +- .../builtin/packages/fujitsu-mpi/package.py | 6 +++-- .../builtin/packages/fujitsu-ssl2/package.py | 4 +++- .../repos/builtin/packages/fzf/package.py | 2 +- .../repos/builtin/packages/g2/package.py | 2 +- .../repos/builtin/packages/g2c/package.py | 2 +- .../repos/builtin/packages/g4abla/package.py | 4 +++- .../builtin/packages/g4channeling/package.py | 4 +++- .../repos/builtin/packages/g4emlow/package.py | 4 +++- .../builtin/packages/g4ensdfstate/package.py | 4 +++- .../repos/builtin/packages/g4incl/package.py | 4 +++- .../repos/builtin/packages/g4ndl/package.py | 4 +++- .../builtin/packages/g4neutronxs/package.py | 4 +++- .../builtin/packages/g4nudexlib/package.py | 4 +++- .../builtin/packages/g4particlexs/package.py | 4 +++- .../packages/g4photonevaporation/package.py | 4 +++- .../repos/builtin/packages/g4pii/package.py | 4 +++- .../packages/g4radioactivedecay/package.py | 4 +++- .../builtin/packages/g4realsurface/package.py | 4 +++- .../builtin/packages/g4saiddata/package.py | 4 +++- .../repos/builtin/packages/g4tendl/package.py | 4 +++- .../repos/builtin/packages/g4urrpt/package.py | 4 +++- .../repos/builtin/packages/gadap/package.py | 2 +- .../repos/builtin/packages/gams/package.py | 2 +- .../repos/builtin/packages/garcon/package.py | 6 +++-- .../builtin/packages/garfieldpp/package.py | 6 +++-- .../repos/builtin/packages/gate/package.py | 4 ++-- .../repos/builtin/packages/gatk/package.py | 2 +- .../repos/builtin/packages/gaudi/package.py | 2 +- .../builtin/packages/gaussian-view/package.py | 4 ++-- .../builtin/packages/gaussian/package.py | 2 +- .../repos/builtin/packages/gcc/package.py | 8 +++---- .../repos/builtin/packages/gdal/package.py | 4 ++-- .../builtin/packages/gdk-pixbuf/package.py | 8 ++++--- .../repos/builtin/packages/gdrcopy/package.py | 2 +- .../repos/builtin/packages/geant3/package.py | 2 +- .../builtin/packages/geant4-vmc/package.py | 2 +- .../repos/builtin/packages/gegl/package.py | 8 +++++-- .../builtin/packages/genemark-et/package.py | 2 +- .../packages/generate-ninja/package.py | 2 +- .../repos/builtin/packages/genesis/package.py | 2 +- .../repos/builtin/packages/genie/package.py | 4 ++-- .../builtin/packages/genometools/package.py | 4 +++- .../builtin/packages/geopm-runtime/package.py | 2 +- .../builtin/packages/geopm-service/package.py | 2 +- .../builtin/packages/getorganelle/package.py | 2 +- .../repos/builtin/packages/gfsio/package.py | 2 +- .../repos/builtin/packages/ginkgo/package.py | 2 +- .../repos/builtin/packages/git/package.py | 4 ++-- .../repos/builtin/packages/glibc/package.py | 2 +- .../repos/builtin/packages/gluegen/package.py | 8 ++++--- .../builtin/packages/gmap-gsnap/package.py | 2 +- .../repos/builtin/packages/gmsh/package.py | 2 +- .../builtin/packages/gnuradio/package.py | 12 ++++++---- .../repos/builtin/packages/gnutls/package.py | 2 +- .../builtin/packages/go-bootstrap/package.py | 4 +++- .../repos/builtin/packages/go/package.py | 4 ++-- .../packages/gobject-introspection/package.py | 12 ++++++---- .../packages/google-cloud-cli/package.py | 4 ++-- .../repos/builtin/packages/gpgme/package.py | 2 +- .../repos/builtin/packages/gptune/package.py | 2 +- .../repos/builtin/packages/grace/package.py | 2 +- .../repos/builtin/packages/grads/package.py | 4 ++-- .../builtin/packages/graphviz/package.py | 2 +- .../builtin/packages/gridlab-d/package.py | 2 +- .../builtin/packages/grnboost/package.py | 2 +- .../repos/builtin/packages/groff/package.py | 2 +- .../repos/builtin/packages/gromacs/package.py | 4 ++-- .../gsettings-desktop-schemas/package.py | 12 ++++++---- .../repos/builtin/packages/gsl/package.py | 2 +- .../repos/builtin/packages/gsoap/package.py | 6 +++-- .../repos/builtin/packages/gtk-doc/package.py | 2 +- .../repos/builtin/packages/gtkplus/package.py | 10 ++++++--- .../builtin/packages/gtksourceview/package.py | 12 ++++++---- .../builtin/packages/guidance/package.py | 2 +- .../repos/builtin/packages/gurobi/package.py | 2 +- .../repos/builtin/packages/h5bench/package.py | 2 +- .../repos/builtin/packages/hal/package.py | 4 ++-- .../builtin/packages/harfbuzz/package.py | 10 ++++++--- .../repos/builtin/packages/hc/package.py | 2 +- .../builtin/packages/hdf-eos2/package.py | 2 +- .../builtin/packages/hdf5-blosc/package.py | 12 ++++++---- .../builtin/packages/hdf5-vfd-gds/package.py | 2 +- .../packages/hdf5-vol-async/package.py | 2 +- .../packages/hdf5-vol-cache/package.py | 2 +- .../builtin/packages/hdf5-vol-daos/package.py | 2 +- .../builtin/packages/hdf5-vol-log/package.py | 2 +- .../repos/builtin/packages/hdf5/package.py | 4 ++-- .../repos/builtin/packages/hdfview/package.py | 2 +- .../repos/builtin/packages/heasoft/package.py | 2 +- .../builtin/packages/heimdall/package.py | 2 +- .../repos/builtin/packages/helics/package.py | 2 +- .../builtin/packages/hepmcanalysis/package.py | 2 +- .../repos/builtin/packages/hermes/package.py | 16 ++++++++------ .../repos/builtin/packages/herwig3/package.py | 2 +- .../builtin/packages/herwigpp/package.py | 2 +- .../packages/hicolor-icon-theme/package.py | 12 ++++++---- .../repos/builtin/packages/hicops/package.py | 2 +- .../builtin/packages/hip-tensor/package.py | 2 +- .../builtin/packages/hip-tests/package.py | 2 +- .../repos/builtin/packages/hip/package.py | 12 ++++++---- .../repos/builtin/packages/hipblas/package.py | 2 +- .../builtin/packages/hipblaslt/package.py | 2 +- .../repos/builtin/packages/hipcub/package.py | 2 +- .../repos/builtin/packages/hipfft/package.py | 2 +- .../repos/builtin/packages/hipfort/package.py | 2 +- .../builtin/packages/hipify-clang/package.py | 2 +- .../repos/builtin/packages/hiprand/package.py | 2 +- .../builtin/packages/hipsolver/package.py | 2 +- .../builtin/packages/hipsparse/package.py | 2 +- .../builtin/packages/hipsparselt/package.py | 2 +- .../repos/builtin/packages/hiptt/package.py | 4 +++- .../builtin/packages/hpctoolkit/package.py | 2 +- .../builtin/packages/hpcx-mpi/package.py | 6 +++-- .../repos/builtin/packages/hping/package.py | 4 ++-- .../builtin/packages/hsa-rocr-dev/package.py | 2 +- .../builtin/packages/hybpiper/package.py | 2 +- .../builtin/packages/hybrid-lambda/package.py | 2 +- .../builtin/packages/hydrogen/package.py | 2 +- .../builtin/packages/hypre-cmake/package.py | 2 +- .../repos/builtin/packages/hypre/package.py | 2 +- .../repos/builtin/packages/icedtea/package.py | 10 ++++++--- .../repos/builtin/packages/icet/package.py | 4 +++- .../repos/builtin/packages/icu4c/package.py | 4 ++-- .../repos/builtin/packages/idl/package.py | 2 +- .../packages/improved-rdock/package.py | 2 +- .../builtin/packages/influxdb/package.py | 2 +- .../builtin/packages/intel-llvm/package.py | 4 ++-- .../intel-oneapi-compilers-classic/package.py | 6 +++-- .../intel-oneapi-compilers/package.py | 10 +++++---- .../packages/intel-oneapi-mkl/package.py | 4 +++- .../packages/intel-oneapi-mpi/package.py | 4 +++- .../builtin/packages/intel-tbb/package.py | 2 +- .../builtin/packages/intel-xed/package.py | 2 +- .../repos/builtin/packages/ip/package.py | 2 +- .../repos/builtin/packages/ip2/package.py | 2 +- .../repos/builtin/packages/ipcalc/package.py | 2 +- .../repos/builtin/packages/ipm/package.py | 2 +- .../builtin/packages/iproute2/package.py | 2 +- .../repos/builtin/packages/isescan/package.py | 2 +- .../repos/builtin/packages/ispc/package.py | 2 +- .../repos/builtin/packages/javafx/package.py | 2 +- .../repos/builtin/packages/jblob/package.py | 2 +- .../repos/builtin/packages/jdk/package.py | 10 ++++++--- .../repos/builtin/packages/jmol/package.py | 2 +- .../repos/builtin/packages/jogl/package.py | 8 ++++--- .../repos/builtin/packages/jube/package.py | 2 +- .../repos/builtin/packages/julia/package.py | 2 +- .../builtin/packages/justbuild/package.py | 2 +- .../builtin/packages/jxrlib-debian/package.py | 2 +- .../repos/builtin/packages/kadath/package.py | 2 +- .../repos/builtin/packages/kicad/package.py | 12 ++++++---- .../packages/kokkos-nvcc-wrapper/package.py | 4 +++- .../repos/builtin/packages/lammps/package.py | 4 ++-- .../builtin/packages/landsfcutil/package.py | 2 +- .../builtin/packages/launchmon/package.py | 2 +- .../repos/builtin/packages/lbann/package.py | 2 +- .../repos/builtin/packages/lcio/package.py | 2 +- .../repos/builtin/packages/lcms/package.py | 2 +- .../builtin/packages/ldc-bootstrap/package.py | 4 +++- .../repos/builtin/packages/lesstif/package.py | 2 +- .../repos/builtin/packages/lhapdf/package.py | 2 +- .../repos/builtin/packages/lhapdf5/package.py | 2 +- .../builtin/packages/lhapdfsets/package.py | 6 +++-- .../builtin/packages/libatasmart/package.py | 2 +- .../builtin/packages/libcap-ng/package.py | 2 +- .../builtin/packages/libcatalyst/package.py | 2 +- .../repos/builtin/packages/libcxi/package.py | 2 +- .../repos/builtin/packages/libdap4/package.py | 2 +- .../builtin/packages/libfabric/package.py | 8 ++++--- .../builtin/packages/libhugetlbfs/package.py | 2 +- .../repos/builtin/packages/libint/package.py | 2 +- .../builtin/packages/libmaus2/package.py | 2 +- .../repos/builtin/packages/libmesh/package.py | 4 +++- .../builtin/packages/libpressio/package.py | 2 +- .../builtin/packages/libproxy/package.py | 2 +- .../repos/builtin/packages/libpsm3/package.py | 2 +- .../repos/builtin/packages/librsb/package.py | 6 ++--- .../repos/builtin/packages/librsvg/package.py | 12 ++++++---- .../builtin/packages/libtermkey/package.py | 2 +- .../builtin/packages/libtheora/package.py | 2 +- .../repos/builtin/packages/libtool/package.py | 8 ++++--- .../repos/builtin/packages/libuser/package.py | 2 +- .../builtin/packages/libvterm/package.py | 2 +- .../repos/builtin/packages/libwnck/package.py | 6 +++-- .../repos/builtin/packages/libx11/package.py | 8 +++++-- .../repos/builtin/packages/libxc/package.py | 2 +- .../repos/builtin/packages/libxcb/package.py | 2 +- .../builtin/packages/libxfce4ui/package.py | 8 +++++-- .../builtin/packages/libxfce4util/package.py | 8 +++++-- .../repos/builtin/packages/ligra/package.py | 4 ++-- .../repos/builtin/packages/likwid/package.py | 2 +- .../builtin/packages/linaro-forge/package.py | 2 +- .../linux-external-modules/package.py | 2 +- .../builtin/packages/linux-headers/package.py | 2 +- .../builtin/packages/linux-perf/package.py | 2 +- .../builtin/packages/llvm-amdgpu/package.py | 10 ++++++--- .../builtin/packages/llvm-doe/package.py | 4 ++-- .../repos/builtin/packages/llvm/package.py | 4 ++-- .../repos/builtin/packages/lmbench/package.py | 2 +- .../repos/builtin/packages/lmod/package.py | 2 +- .../builtin/packages/logrotate/package.py | 2 +- .../builtin/packages/logstash/package.py | 2 +- .../repos/builtin/packages/lshw/package.py | 4 ++-- .../builtin/packages/ltr-retriever/package.py | 2 +- .../packages/lua-luajit-openresty/package.py | 2 +- .../repos/builtin/packages/lua/package.py | 10 ++++++--- .../repos/builtin/packages/lz4/package.py | 2 +- .../repos/builtin/packages/m4/package.py | 8 ++++--- .../repos/builtin/packages/macfuse/package.py | 4 +++- .../repos/builtin/packages/madis/package.py | 2 +- .../repos/builtin/packages/mapl/package.py | 2 +- .../repos/builtin/packages/mapnik/package.py | 2 +- .../repos/builtin/packages/masa/package.py | 2 +- .../repos/builtin/packages/masurca/package.py | 2 +- .../repos/builtin/packages/mbedtls/package.py | 2 +- .../repos/builtin/packages/mc/package.py | 2 +- .../repos/builtin/packages/mdsplus/package.py | 2 +- .../repos/builtin/packages/mefit/package.py | 2 +- .../builtin/packages/melissa-api/package.py | 2 +- .../builtin/packages/memsurfer/package.py | 2 +- .../builtin/packages/meraculous/package.py | 2 +- .../builtin/packages/mercurial/package.py | 8 +++---- .../repos/builtin/packages/meson/package.py | 4 +++- .../repos/builtin/packages/met/package.py | 4 ++-- .../repos/builtin/packages/metabat/package.py | 2 +- .../repos/builtin/packages/metall/package.py | 4 ++-- .../repos/builtin/packages/metis/package.py | 2 +- .../repos/builtin/packages/metplus/package.py | 2 +- .../repos/builtin/packages/mfem/package.py | 2 +- .../builtin/packages/mgcfd-op2/package.py | 2 +- .../packages/microbiomeutil/package.py | 2 +- .../builtin/packages/migraphx/package.py | 2 +- .../repos/builtin/packages/mii/package.py | 2 +- .../builtin/packages/minc-toolkit/package.py | 2 +- .../builtin/packages/miniconda2/package.py | 2 +- .../builtin/packages/miniconda3/package.py | 2 +- .../builtin/packages/miniforge3/package.py | 2 +- .../builtin/packages/miopen-hip/package.py | 2 +- .../builtin/packages/mitofates/package.py | 2 +- .../builtin/packages/mivisionx/package.py | 4 ++-- .../repos/builtin/packages/mixcr/package.py | 2 +- .../repos/builtin/packages/modylas/package.py | 2 +- .../repos/builtin/packages/mokutil/package.py | 2 +- .../repos/builtin/packages/mpest/package.py | 2 +- .../repos/builtin/packages/mpibind/package.py | 2 +- .../repos/builtin/packages/mpich/package.py | 10 +++++---- .../builtin/packages/mpitrampoline/package.py | 6 +++-- .../repos/builtin/packages/mpt/package.py | 6 +++-- .../repos/builtin/packages/mrtrix3/package.py | 2 +- .../repos/builtin/packages/msmpi/package.py | 2 +- .../repos/builtin/packages/msvc/package.py | 10 ++++++--- .../repos/builtin/packages/mujoco/package.py | 2 +- .../repos/builtin/packages/mumax/package.py | 2 +- .../builtin/packages/mutationpp/package.py | 6 +++-- .../builtin/packages/mvapich-plus/package.py | 10 +++++---- .../repos/builtin/packages/mvapich/package.py | 6 +++-- .../builtin/packages/mvapich2-gdr/package.py | 6 +++-- .../builtin/packages/mvapich2/package.py | 6 +++-- .../builtin/packages/mvapich2x/package.py | 6 +++-- .../repos/builtin/packages/mxnet/package.py | 2 +- .../repos/builtin/packages/mysql/package.py | 2 +- .../repos/builtin/packages/nag/package.py | 2 +- .../builtin/packages/nalu-wind/package.py | 6 +++-- .../repos/builtin/packages/nasm/package.py | 4 +++- .../packages/nccl-fastsocket/package.py | 4 ++-- .../builtin/packages/nccl-tests/package.py | 2 +- .../repos/builtin/packages/ncftp/package.py | 2 +- .../repos/builtin/packages/ncio/package.py | 2 +- .../repos/builtin/packages/ncl/package.py | 2 +- .../repos/builtin/packages/nco/package.py | 2 +- .../repos/builtin/packages/ncurses/package.py | 2 +- .../repos/builtin/packages/ncvis/package.py | 2 +- .../repos/builtin/packages/nekrs/package.py | 8 ++++--- .../repos/builtin/packages/nektar/package.py | 10 ++++++--- .../repos/builtin/packages/nest/package.py | 2 +- .../builtin/packages/netcdf-c/package.py | 6 +++-- .../repos/builtin/packages/netdata/package.py | 2 +- .../repos/builtin/packages/neuron/package.py | 2 +- .../builtin/packages/nfs-ganesha/package.py | 2 +- .../repos/builtin/packages/nginx/package.py | 2 +- .../repos/builtin/packages/ngspice/package.py | 2 +- .../repos/builtin/packages/ninja/package.py | 2 +- .../repos/builtin/packages/nnn/package.py | 2 +- .../repos/builtin/packages/node-js/package.py | 2 +- .../repos/builtin/packages/npm/package.py | 8 +++++-- .../repos/builtin/packages/nut/package.py | 2 +- .../repos/builtin/packages/nvhpc/package.py | 8 ++++--- .../repos/builtin/packages/nvshmem/package.py | 2 +- .../repos/builtin/packages/nwchem/package.py | 2 +- .../repos/builtin/packages/occa/package.py | 8 ++++--- .../builtin/packages/octave-gsl/package.py | 2 +- .../builtin/packages/of-precice/package.py | 2 +- .../repos/builtin/packages/ollama/package.py | 2 +- .../builtin/packages/omnitrace/package.py | 2 +- .../repos/builtin/packages/onednn/package.py | 2 +- .../repos/builtin/packages/oommf/package.py | 2 +- .../builtin/packages/opa-psm2/package.py | 2 +- .../repos/builtin/packages/opam/package.py | 2 +- .../builtin/packages/open-iscsi/package.py | 4 ++-- .../builtin/packages/openblas/package.py | 2 +- .../packages/opendatadetector/package.py | 2 +- .../builtin/packages/openfoam-org/package.py | 10 ++++++--- .../builtin/packages/openfoam/package.py | 20 ++++++++++------- .../repos/builtin/packages/openjdk/package.py | 10 ++++++--- .../builtin/packages/openloops/package.py | 4 ++-- .../repos/builtin/packages/openmm/package.py | 12 ++++++---- .../builtin/packages/openmolcas/package.py | 4 ++-- .../repos/builtin/packages/openmpi/package.py | 12 +++++----- .../builtin/packages/openpmd-api/package.py | 6 +++-- .../packages/openradioss-engine/package.py | 2 +- .../packages/openradioss-starter/package.py | 2 +- .../builtin/packages/openrasmol/package.py | 2 +- .../packages/openspeedshop-utils/package.py | 2 +- .../builtin/packages/openspeedshop/package.py | 2 +- .../repos/builtin/packages/openssh/package.py | 4 ++-- .../repos/builtin/packages/openssl/package.py | 2 +- .../repos/builtin/packages/oras/package.py | 2 +- .../builtin/packages/orca-faccts/package.py | 2 +- .../repos/builtin/packages/orca/package.py | 2 +- .../builtin/packages/orthofinder/package.py | 2 +- .../builtin/packages/orthomcl/package.py | 2 +- .../builtin/packages/osg-ca-certs/package.py | 4 ++-- .../packages/osu-micro-benchmarks/package.py | 2 +- .../repos/builtin/packages/pagit/package.py | 2 +- .../builtin/packages/pandorapfa/package.py | 6 +++-- .../repos/builtin/packages/pango/package.py | 10 ++++++--- .../repos/builtin/packages/papi/package.py | 2 +- .../repos/builtin/packages/papyrus/package.py | 2 +- .../builtin/packages/parallelio/package.py | 2 +- .../packages/parallelmergetree/package.py | 2 +- .../builtin/packages/paraview/package.py | 6 +++-- .../repos/builtin/packages/parflow/package.py | 2 +- .../repos/builtin/packages/pass/package.py | 2 +- .../repos/builtin/packages/pasta/package.py | 4 ++-- .../repos/builtin/packages/pbbam/package.py | 6 +++-- .../builtin/packages/pciutils/package.py | 2 +- .../packages/pdiplugin-decl-hdf5/package.py | 2 +- .../packages/pdiplugin-decl-netcdf/package.py | 2 +- .../builtin/packages/pdiplugin-mpi/package.py | 2 +- .../packages/pdiplugin-pycall/package.py | 2 +- .../packages/pdiplugin-serialize/package.py | 2 +- .../packages/pdiplugin-set-value/package.py | 2 +- .../packages/pdiplugin-trace/package.py | 2 +- .../packages/pdiplugin-user-code/package.py | 2 +- .../packages/perl-alien-svn/package.py | 4 ++-- .../packages/perl-bio-bigfile/package.py | 2 +- .../perl-bio-ensembl-variation/package.py | 2 +- .../packages/perl-compress-bzip2/package.py | 2 +- .../packages/perl-dbd-oracle/package.py | 2 +- .../builtin/packages/perl-forks/package.py | 2 +- .../builtin/packages/perl-fth/package.py | 6 +++-- .../builtin/packages/perl-json-xs/package.py | 2 +- .../packages/perl-sereal-decoder/package.py | 2 +- .../packages/perl-sereal-encoder/package.py | 2 +- .../repos/builtin/packages/perl/package.py | 16 +++++++++----- .../repos/builtin/packages/petsc/package.py | 8 ++++--- .../repos/builtin/packages/pfind/package.py | 2 +- .../repos/builtin/packages/pfunit/package.py | 2 +- .../repos/builtin/packages/pgplot/package.py | 8 ++++--- .../builtin/packages/ph5concat/package.py | 2 +- .../repos/builtin/packages/phist/package.py | 2 +- .../repos/builtin/packages/picard/package.py | 2 +- .../builtin/packages/pkg-config/package.py | 4 +++- .../repos/builtin/packages/pkgconf/package.py | 4 +++- .../packages/planck-likelihood/package.py | 6 +++-- .../builtin/packages/plantuml/package.py | 2 +- .../builtin/packages/plink-ng/package.py | 2 +- .../repos/builtin/packages/plink/package.py | 2 +- .../builtin/packages/ploticus/package.py | 2 +- .../repos/builtin/packages/podio/package.py | 6 +++-- .../repos/builtin/packages/postgis/package.py | 4 ++-- .../builtin/packages/postgresql/package.py | 10 ++++++--- .../builtin/packages/powertop/package.py | 2 +- .../repos/builtin/packages/preseq/package.py | 2 +- .../repos/builtin/packages/prism/package.py | 2 +- .../builtin/packages/procps-ng/package.py | 2 +- .../builtin/packages/prodigal/package.py | 2 +- .../builtin/packages/professor/package.py | 2 +- .../repos/builtin/packages/proj/package.py | 4 ++-- .../repos/builtin/packages/pscmc/package.py | 2 +- .../repos/builtin/packages/psmc/package.py | 2 +- .../repos/builtin/packages/purify/package.py | 2 +- .../repos/builtin/packages/pvm/package.py | 4 ++-- .../builtin/packages/py-amici/package.py | 4 ++-- .../repos/builtin/packages/py-amqp/package.py | 4 ++-- .../builtin/packages/py-antspyx/package.py | 2 +- .../builtin/packages/py-anuga/package.py | 2 +- .../builtin/packages/py-arm-pyart/package.py | 2 +- .../builtin/packages/py-awkward/package.py | 2 +- .../builtin/packages/py-awscrt/package.py | 4 ++-- .../packages/py-ax-platform/package.py | 4 ++-- .../builtin/packages/py-basemap/package.py | 2 +- .../builtin/packages/py-bitshuffle/package.py | 2 +- .../repos/builtin/packages/py-blis/package.py | 2 +- .../builtin/packages/py-blosc/package.py | 4 ++-- .../builtin/packages/py-blosc2/package.py | 2 +- .../builtin/packages/py-bluepyopt/package.py | 2 +- .../builtin/packages/py-botorch/package.py | 4 ++-- .../builtin/packages/py-cartopy/package.py | 6 +++-- .../repos/builtin/packages/py-cdo/package.py | 2 +- .../repos/builtin/packages/py-cffi/package.py | 2 +- .../packages/py-chainforgecodegen/package.py | 2 +- .../builtin/packages/py-charm4py/package.py | 2 +- .../packages/py-cryptography/package.py | 2 +- .../repos/builtin/packages/py-cupy/package.py | 6 ++--- .../builtin/packages/py-cvxopt/package.py | 16 +++++++------- .../builtin/packages/py-cython/package.py | 4 +++- .../packages/py-deepsig-biocomp/package.py | 2 +- .../builtin/packages/py-devito/package.py | 2 +- .../repos/builtin/packages/py-dgl/package.py | 2 +- .../packages/py-dlio-profiler-py/package.py | 2 +- .../builtin/packages/py-eccodes/package.py | 12 ++++++---- .../builtin/packages/py-fastavro/package.py | 4 ++-- .../builtin/packages/py-flash-attn/package.py | 4 ++-- .../repos/builtin/packages/py-flye/package.py | 2 +- .../builtin/packages/py-frozendict/package.py | 2 +- .../builtin/packages/py-gemmforge/package.py | 2 +- .../builtin/packages/py-gensim/package.py | 2 +- .../builtin/packages/py-geopmdpy/package.py | 2 +- .../builtin/packages/py-geopmpy/package.py | 2 +- .../builtin/packages/py-git-review/package.py | 2 +- .../builtin/packages/py-gmxapi/package.py | 2 +- .../packages/py-google-crc32c/package.py | 2 +- .../builtin/packages/py-gosam/package.py | 2 +- .../packages/py-grpcio-tools/package.py | 12 +++++----- .../builtin/packages/py-grpcio/package.py | 12 +++++----- .../repos/builtin/packages/py-h5py/package.py | 2 +- .../builtin/packages/py-horovod/package.py | 22 +++++++++---------- .../builtin/packages/py-htgettoken/package.py | 2 +- .../packages/py-huggingface-hub/package.py | 4 ++-- .../builtin/packages/py-igraph/package.py | 2 +- .../repos/builtin/packages/py-isal/package.py | 2 +- .../builtin/packages/py-jaxlib/package.py | 2 +- .../packages/py-jupyter-core/package.py | 4 +++- .../builtin/packages/py-jupyterlab/package.py | 2 +- .../builtin/packages/py-keras/package.py | 2 +- .../builtin/packages/py-liblas/package.py | 2 +- .../builtin/packages/py-llvmlite/package.py | 2 +- .../repos/builtin/packages/py-lmdb/package.py | 2 +- .../repos/builtin/packages/py-lws/package.py | 4 ++-- .../builtin/packages/py-matplotlib/package.py | 2 +- .../builtin/packages/py-meldmd/package.py | 2 +- .../builtin/packages/py-mo-pack/package.py | 2 +- .../builtin/packages/py-modin/package.py | 2 +- .../builtin/packages/py-mpi4jax/package.py | 2 +- .../builtin/packages/py-mpi4py/package.py | 2 +- .../builtin/packages/py-nbconvert/package.py | 10 ++++++--- .../builtin/packages/py-netcdf4/package.py | 2 +- .../repos/builtin/packages/py-nltk/package.py | 2 +- .../builtin/packages/py-numba/package.py | 2 +- .../builtin/packages/py-numcodecs/package.py | 2 +- .../builtin/packages/py-numpy/package.py | 4 ++-- .../repos/builtin/packages/py-onnx/package.py | 2 +- .../packages/py-onnxruntime/package.py | 4 ++-- .../py-pennylane-lightning-kokkos/package.py | 2 +- .../py-pennylane-lightning/package.py | 2 +- .../builtin/packages/py-pillow/package.py | 4 ++-- .../builtin/packages/py-pipits/package.py | 2 +- .../packages/py-poetry-core/package.py | 6 +++-- .../builtin/packages/py-psana/package.py | 2 +- .../builtin/packages/py-pspamm/package.py | 2 +- .../builtin/packages/py-psyclone/package.py | 2 +- .../builtin/packages/py-pyarrow/package.py | 10 ++++----- .../builtin/packages/py-pybind11/package.py | 4 ++-- .../builtin/packages/py-pydftracer/package.py | 2 +- .../builtin/packages/py-pyfftw/package.py | 2 +- .../repos/builtin/packages/py-pyfr/package.py | 2 +- .../builtin/packages/py-pygit2/package.py | 2 +- .../builtin/packages/py-pyhdf/package.py | 2 +- .../builtin/packages/py-pylikwid/package.py | 2 +- .../packages/py-pylint-gitlab/package.py | 2 +- .../builtin/packages/py-pynio/package.py | 2 +- .../builtin/packages/py-pynucleus/package.py | 4 ++-- .../builtin/packages/py-pyopengl/package.py | 6 +++-- .../builtin/packages/py-pyproj/package.py | 2 +- .../builtin/packages/py-pyqt6/package.py | 2 +- .../builtin/packages/py-pysam/package.py | 2 +- .../builtin/packages/py-pyscf/package.py | 2 +- .../builtin/packages/py-pyside2/package.py | 2 +- .../builtin/packages/py-pyspark/package.py | 2 +- .../packages/py-python-mapnik/package.py | 2 +- .../builtin/packages/py-pythran/package.py | 12 ++++++---- .../builtin/packages/py-qiskit-aer/package.py | 2 +- .../repos/builtin/packages/py-qtpy/package.py | 2 +- .../repos/builtin/packages/py-ray/package.py | 2 +- .../builtin/packages/py-rtree/package.py | 4 ++-- .../packages/py-scikit-learn/package.py | 2 +- .../packages/py-scikits-odes/package.py | 2 +- .../builtin/packages/py-scipy/package.py | 2 +- .../builtin/packages/py-shapely/package.py | 8 ++++--- .../builtin/packages/py-smartredis/package.py | 2 +- .../builtin/packages/py-smartsim/package.py | 4 ++-- .../packages/py-sphinx-rtd-theme/package.py | 4 ++-- .../builtin/packages/py-tables/package.py | 2 +- .../py-tensorboard-data-server/package.py | 2 +- .../py-tensorflow-metadata/package.py | 2 +- .../builtin/packages/py-tensorflow/package.py | 2 +- .../builtin/packages/py-tfdlpack/package.py | 2 +- .../packages/py-torch-cluster/package.py | 14 ++++++------ .../packages/py-torch-nvidia-apex/package.py | 4 ++-- .../packages/py-torch-scatter/package.py | 14 ++++++------ .../packages/py-torch-sparse/package.py | 22 +++++++++---------- .../packages/py-torch-spline-conv/package.py | 14 ++++++------ .../builtin/packages/py-torch/package.py | 10 ++++----- .../builtin/packages/py-torchaudio/package.py | 12 +++++----- .../builtin/packages/py-torchdata/package.py | 2 +- .../packages/py-torchvision/package.py | 10 ++++----- .../packages/py-transformer-engine/package.py | 2 +- .../builtin/packages/py-triton/package.py | 2 +- .../repos/builtin/packages/py-uv/package.py | 2 +- .../repos/builtin/packages/py-wand/package.py | 2 +- .../builtin/packages/py-waves/package.py | 2 +- .../builtin/packages/py-wxpython/package.py | 2 +- .../repos/builtin/packages/py-xdot/package.py | 2 +- .../builtin/packages/py-xxhash/package.py | 2 +- .../repos/builtin/packages/py-yt/package.py | 2 +- .../repos/builtin/packages/pypy/package.py | 2 +- .../repos/builtin/packages/pythia6/package.py | 2 +- .../repos/builtin/packages/pythia8/package.py | 8 +++++-- .../builtin/packages/python-venv/package.py | 4 +++- .../repos/builtin/packages/python/package.py | 10 ++++++--- .../repos/builtin/packages/qbank/package.py | 2 +- .../repos/builtin/packages/qd/package.py | 2 +- .../repos/builtin/packages/qgis/package.py | 2 +- .../repos/builtin/packages/qmcpack/package.py | 4 ++-- .../builtin/packages/qscintilla/package.py | 4 ++-- .../repos/builtin/packages/qt-base/package.py | 6 +++-- .../builtin/packages/qt-creator/package.py | 2 +- .../repos/builtin/packages/qt/package.py | 8 ++++--- .../repos/builtin/packages/qtgraph/package.py | 4 ++-- .../builtin/packages/qualimap/package.py | 2 +- .../repos/builtin/packages/quota/package.py | 2 +- .../builtin/packages/r-asreml/package.py | 2 +- .../r-phantompeakqualtools/package.py | 2 +- .../repos/builtin/packages/r-proj/package.py | 2 +- .../builtin/packages/r-rhtslib/package.py | 2 +- .../repos/builtin/packages/r-rjava/package.py | 2 +- .../repos/builtin/packages/r-v8/package.py | 2 +- var/spack/repos/builtin/packages/r/package.py | 10 ++++++--- .../builtin/packages/rasdaemon/package.py | 2 +- .../builtin/packages/rayleigh/package.py | 2 +- .../repos/builtin/packages/rccl/package.py | 2 +- .../builtin/packages/redis-ai/package.py | 2 +- .../repos/builtin/packages/reframe/package.py | 2 +- .../repos/builtin/packages/rempi/package.py | 2 +- .../builtin/packages/reprimand/package.py | 2 +- .../repos/builtin/packages/rinetd/package.py | 2 +- .../repos/builtin/packages/rivet/package.py | 2 +- .../builtin/packages/rnaquast/package.py | 2 +- .../repos/builtin/packages/roary/package.py | 2 +- .../builtin/packages/rocalution/package.py | 2 +- .../repos/builtin/packages/rocblas/package.py | 2 +- .../repos/builtin/packages/rocfft/package.py | 2 +- .../builtin/packages/rocm-core/package.py | 2 +- .../builtin/packages/rocm-dbgapi/package.py | 2 +- .../packages/rocm-debug-agent/package.py | 2 +- .../builtin/packages/rocm-opencl/package.py | 4 ++-- .../packages/rocm-openmp-extras/package.py | 4 ++-- .../builtin/packages/rocm-smi-lib/package.py | 2 +- .../builtin/packages/rocm-tensile/package.py | 2 +- .../packages/rocm-validation-suite/package.py | 4 ++-- .../repos/builtin/packages/rocprim/package.py | 2 +- .../packages/rocprofiler-systems/package.py | 2 +- .../repos/builtin/packages/rocrand/package.py | 2 +- .../builtin/packages/rocsolver/package.py | 2 +- .../builtin/packages/rocsparse/package.py | 2 +- .../builtin/packages/rocthrust/package.py | 2 +- .../builtin/packages/roctracer-dev/package.py | 2 +- .../repos/builtin/packages/rocwmma/package.py | 2 +- .../repos/builtin/packages/roms/package.py | 10 ++++----- .../repos/builtin/packages/root/package.py | 4 ++-- .../repos/builtin/packages/rosco/package.py | 2 +- .../repos/builtin/packages/rose/package.py | 2 +- .../repos/builtin/packages/rpp/package.py | 4 ++-- .../repos/builtin/packages/rstudio/package.py | 2 +- .../repos/builtin/packages/rsyslog/package.py | 2 +- .../repos/builtin/packages/ruby/package.py | 8 +++++-- .../repos/builtin/packages/rust/package.py | 2 +- .../builtin/packages/saga-gis/package.py | 2 +- .../packages/salome-configuration/package.py | 4 +++- .../builtin/packages/salome-med/package.py | 4 +++- .../packages/salome-medcoupling/package.py | 4 ++-- .../repos/builtin/packages/samrai/package.py | 4 +++- .../repos/builtin/packages/samurai/package.py | 6 +++-- .../repos/builtin/packages/scale/package.py | 4 ++-- .../builtin/packages/scitokens-cpp/package.py | 2 +- .../repos/builtin/packages/scons/package.py | 10 ++++++--- .../repos/builtin/packages/scotch/package.py | 2 +- .../repos/builtin/packages/seacas/package.py | 2 +- .../repos/builtin/packages/seissol/package.py | 2 +- .../repos/builtin/packages/selalib/package.py | 2 +- .../repos/builtin/packages/seqfu/package.py | 2 +- .../builtin/packages/serenity/package.py | 2 +- .../builtin/packages/serialbox/package.py | 2 +- .../repos/builtin/packages/sfcio/package.py | 2 +- .../builtin/packages/shapemapper/package.py | 2 +- .../packages/shared-mime-info/package.py | 8 +++++-- .../builtin/packages/shortbred/package.py | 2 +- .../repos/builtin/packages/sigio/package.py | 2 +- .../repos/builtin/packages/signalp/package.py | 2 +- .../repos/builtin/packages/signify/package.py | 2 +- .../packages/simmetrix-simmodsuite/package.py | 6 +++-- .../packages/singularity-eos/package.py | 2 +- .../builtin/packages/singularityce/package.py | 2 +- .../repos/builtin/packages/slepc/package.py | 6 +++-- .../builtin/packages/smartmontools/package.py | 2 +- .../builtin/packages/snap-korf/package.py | 2 +- .../repos/builtin/packages/snphylo/package.py | 2 +- .../repos/builtin/packages/sollve/package.py | 4 ++-- .../repos/builtin/packages/sonlib/package.py | 2 +- .../repos/builtin/packages/sopt/package.py | 2 +- .../repos/builtin/packages/sos/package.py | 4 +++- .../repos/builtin/packages/sosflow/package.py | 9 ++++---- .../repos/builtin/packages/sp/package.py | 2 +- .../repos/builtin/packages/spack/package.py | 2 +- .../repos/builtin/packages/spark/package.py | 2 +- .../builtin/packages/spectrum-mpi/package.py | 6 +++-- .../repos/builtin/packages/spindle/package.py | 2 +- .../packages/spiral-software/package.py | 10 ++++++--- .../repos/builtin/packages/srilm/package.py | 2 +- .../repos/builtin/packages/ssmtp/package.py | 2 +- .../packages/sspace-standard/package.py | 2 +- .../builtin/packages/sst-elements/package.py | 2 +- .../builtin/packages/star-ccm-plus/package.py | 2 +- .../repos/builtin/packages/stata/package.py | 2 +- .../repos/builtin/packages/steps/package.py | 2 +- .../builtin/packages/stripack/package.py | 2 +- .../repos/builtin/packages/su2/package.py | 2 +- .../repos/builtin/packages/sumo/package.py | 2 +- .../builtin/packages/supernova/package.py | 2 +- .../repos/builtin/packages/survey/package.py | 2 +- .../repos/builtin/packages/sw4/package.py | 2 +- .../builtin/packages/swiftsim/package.py | 4 ++-- .../repos/builtin/packages/sympack/package.py | 2 +- .../repos/builtin/packages/sysstat/package.py | 2 +- .../repos/builtin/packages/sz/package.py | 2 +- .../repos/builtin/packages/sz3/package.py | 2 +- .../repos/builtin/packages/tandem/package.py | 2 +- .../repos/builtin/packages/targetp/package.py | 2 +- .../builtin/packages/tasmanian/package.py | 2 +- .../repos/builtin/packages/tassel/package.py | 2 +- .../repos/builtin/packages/tau/package.py | 4 ++-- .../repos/builtin/packages/tb-lmto/package.py | 2 +- .../repos/builtin/packages/tcl/package.py | 12 ++++++---- .../repos/builtin/packages/tecplot/package.py | 2 +- .../builtin/packages/templight/package.py | 4 ++-- .../repos/builtin/packages/tempo/package.py | 10 ++++++--- .../repos/builtin/packages/tengine/package.py | 2 +- .../builtin/packages/tesseract/package.py | 2 +- .../builtin/packages/tests-sos/package.py | 2 +- .../repos/builtin/packages/texinfo/package.py | 2 +- .../repos/builtin/packages/texlive/package.py | 4 ++-- .../repos/builtin/packages/tfel/package.py | 2 +- .../repos/builtin/packages/thrift/package.py | 2 +- .../repos/builtin/packages/thunar/package.py | 2 +- .../repos/builtin/packages/tix/package.py | 6 +++-- .../repos/builtin/packages/tixi/package.py | 2 +- .../repos/builtin/packages/tk/package.py | 6 +++-- .../repos/builtin/packages/tophat/package.py | 2 +- .../builtin/packages/totalview/package.py | 2 +- .../repos/builtin/packages/toybox/package.py | 6 ++--- .../builtin/packages/tpm2-tss/package.py | 4 ++-- .../builtin/packages/transdecoder/package.py | 2 +- .../trilinos-catalyst-ioss-adapter/package.py | 2 +- .../builtin/packages/trilinos/package.py | 8 ++++--- .../repos/builtin/packages/trinity/package.py | 4 ++-- .../repos/builtin/packages/turbine/package.py | 2 +- .../builtin/packages/turbomole/package.py | 2 +- .../repos/builtin/packages/typhon/package.py | 2 +- .../builtin/packages/ucsc-bedclip/package.py | 2 +- .../packages/ucsc-bedgraphtobigwig/package.py | 2 +- .../builtin/packages/ufs-utils/package.py | 2 +- .../packages/ufs-weather-model/package.py | 2 +- .../repos/builtin/packages/umpire/package.py | 2 +- .../repos/builtin/packages/unifyfs/package.py | 2 +- .../repos/builtin/packages/upcxx/package.py | 6 +++-- .../repos/builtin/packages/uqtk/package.py | 2 +- .../builtin/packages/util-macros/package.py | 4 +++- .../repos/builtin/packages/varscan/package.py | 2 +- .../repos/builtin/packages/vasp/package.py | 4 ++-- .../repos/builtin/packages/vbfnlo/package.py | 2 +- .../builtin/packages/vcftools/package.py | 2 +- .../repos/builtin/packages/vecmem/package.py | 2 +- .../builtin/packages/vep-cache/package.py | 2 +- .../repos/builtin/packages/vep/package.py | 2 +- .../builtin/packages/verilator/package.py | 2 +- .../repos/builtin/packages/vesta/package.py | 2 +- .../repos/builtin/packages/vmc/package.py | 2 +- .../repos/builtin/packages/vmd/package.py | 4 ++-- .../repos/builtin/packages/voms/package.py | 2 +- .../repos/builtin/packages/vtk/package.py | 2 +- .../repos/builtin/packages/w3emc/package.py | 2 +- .../repos/builtin/packages/w3m/package.py | 2 +- .../builtin/packages/wannier90/package.py | 2 +- .../builtin/packages/webbench/package.py | 2 +- .../repos/builtin/packages/wgrib2/package.py | 2 +- .../repos/builtin/packages/whizard/package.py | 2 +- .../repos/builtin/packages/wi4mpi/package.py | 2 +- .../repos/builtin/packages/win-wdk/package.py | 6 +++-- .../repos/builtin/packages/wordnet/package.py | 2 +- .../repos/builtin/packages/wps/package.py | 4 ++-- .../repos/builtin/packages/wrf/package.py | 10 ++++----- .../repos/builtin/packages/xcdf/package.py | 2 +- .../builtin/packages/xfce4-session/package.py | 4 +++- .../repos/builtin/packages/xfsdump/package.py | 2 +- .../builtin/packages/xfsprogs/package.py | 4 ++-- .../repos/builtin/packages/xfwp/package.py | 2 +- .../packages/xkeyboard-config/package.py | 8 +++++-- .../repos/builtin/packages/xnedit/package.py | 2 +- .../builtin/packages/xorg-server/package.py | 2 +- .../repos/builtin/packages/xrootd/package.py | 2 +- .../repos/builtin/packages/xsd/package.py | 2 +- .../repos/builtin/packages/yorick/package.py | 2 +- .../repos/builtin/packages/yosys/package.py | 2 +- .../repos/builtin/packages/zabbix/package.py | 2 +- .../repos/builtin/packages/zfs/package.py | 2 +- .../repos/builtin/packages/zlib/package.py | 2 +- .../builtin/packages/zookeeper/package.py | 2 +- .../repos/builtin/packages/zuo/package.py | 4 ++-- .../repos/tutorial/packages/elpa/package.py | 2 +- .../repos/tutorial/packages/hdf5/package.py | 2 +- .../repos/tutorial/packages/mpich/package.py | 4 +++- 950 files changed, 1845 insertions(+), 1367 deletions(-) diff --git a/lib/spack/docs/build_systems/makefilepackage.rst b/lib/spack/docs/build_systems/makefilepackage.rst index b73112abcc3..d0363336583 100644 --- a/lib/spack/docs/build_systems/makefilepackage.rst +++ b/lib/spack/docs/build_systems/makefilepackage.rst @@ -91,7 +91,7 @@ there are any other variables you need to set, you can do this in the .. code-block:: python - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", prefix) env.set("BLASLIB", spec["blas"].libs.ld_flags) diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index 7ed4cc5c3a5..cfc32802938 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -128,7 +128,7 @@ depend on the spec: .. code-block:: python - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+foo"): env.set("FOO", "bar") @@ -142,7 +142,7 @@ For example, a simplified version of the ``python`` package could look like this .. code-block:: python - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment(self, env: EnvironmentModifications, dependent_spec: Spec) -> None: if dependent_spec.package.extends(self.spec): env.prepend_path("PYTHONPATH", dependent_spec.prefix.lib.python) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index ebac028d93d..b98f889c9d4 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -16,6 +16,7 @@ import spack.package_base import spack.phase_callbacks import spack.spec +import spack.util.environment import spack.util.prefix from spack.directives import build_system, conflicts, depends_on from spack.multimethod import when @@ -846,7 +847,9 @@ def _remove_libtool_archives(self) -> None: with open(self._removed_la_files_log, mode="w", encoding="utf-8") as f: f.write("\n".join(libtool_files)) - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: if self.spec.platform == "darwin" and macos_version() >= Version("11"): # Many configure files rely on matching '10.*' for macOS version # detection and fail to add flags if it shows as version 11. diff --git a/lib/spack/spack/build_systems/cargo.py b/lib/spack/spack/build_systems/cargo.py index b94d1e87b25..5cfed66063b 100644 --- a/lib/spack/spack/build_systems/cargo.py +++ b/lib/spack/spack/build_systems/cargo.py @@ -8,6 +8,7 @@ import spack.package_base import spack.phase_callbacks import spack.spec +import spack.util.environment import spack.util.prefix from spack.directives import build_system, depends_on from spack.multimethod import when @@ -86,7 +87,9 @@ def check_args(self): """Argument for ``cargo test`` during check phase""" return [] - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: env.set("CARGO_HOME", self.stage.path) def build( diff --git a/lib/spack/spack/build_systems/go.py b/lib/spack/spack/build_systems/go.py index 981b548d4f8..1c510679199 100644 --- a/lib/spack/spack/build_systems/go.py +++ b/lib/spack/spack/build_systems/go.py @@ -8,6 +8,7 @@ import spack.package_base import spack.phase_callbacks import spack.spec +import spack.util.environment import spack.util.prefix from spack.directives import build_system, depends_on from spack.multimethod import when @@ -68,7 +69,9 @@ class GoBuilder(BuilderWithDefaults): #: Callback names for install-time test install_time_test_callbacks = ["check"] - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: env.set("GO111MODULE", "on") env.set("GOTOOLCHAIN", "local") env.set("GOPATH", fs.join_path(self.pkg.stage.path, "go")) diff --git a/lib/spack/spack/build_systems/intel.py b/lib/spack/spack/build_systems/intel.py index 2d012d983e6..9d097b82193 100644 --- a/lib/spack/spack/build_systems/intel.py +++ b/lib/spack/spack/build_systems/intel.py @@ -23,6 +23,7 @@ import spack.error import spack.phase_callbacks +import spack.spec from spack.build_environment import dso_suffix from spack.error import InstallError from spack.util.environment import EnvironmentModifications @@ -1016,7 +1017,7 @@ def libs(self): debug_print(result) return result - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Adds environment variables to the generated module file. These environment variables come from running: @@ -1049,7 +1050,9 @@ def setup_run_environment(self, env): env.set("F77", self.prefix.bin.ifort) env.set("F90", self.prefix.bin.ifort) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: spack.spec.Spec + ) -> None: # NB: This function is overwritten by 'mpi' provider packages: # # var/spack/repos/builtin/packages/intel-mpi/package.py @@ -1061,7 +1064,12 @@ def setup_dependent_build_environment(self, env, dependent_spec): # Handle everything in a callback version. self._setup_dependent_env_callback(env, dependent_spec) - def _setup_dependent_env_callback(self, env, dependent_spec, compilers_of_client={}): + def _setup_dependent_env_callback( + self, + env: EnvironmentModifications, + dependent_spec: spack.spec.Spec, + compilers_of_client={}, + ) -> None: # Expected to be called from a client's # setup_dependent_build_environment(), # with args extended to convey the client's compilers as needed. diff --git a/lib/spack/spack/build_systems/lua.py b/lib/spack/spack/build_systems/lua.py index e8b1698f297..e9d05b2c75c 100644 --- a/lib/spack/spack/build_systems/lua.py +++ b/lib/spack/spack/build_systems/lua.py @@ -8,6 +8,7 @@ import spack.builder import spack.package_base import spack.spec +import spack.util.environment import spack.util.executable import spack.util.prefix from spack.directives import build_system, depends_on, extends @@ -114,5 +115,7 @@ def install( def _luarocks_config_path(self): return os.path.join(self.pkg.stage.source_path, "spack_luarocks.lua") - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: env.set("LUAROCKS_CONFIG", self._luarocks_config_path()) diff --git a/lib/spack/spack/build_systems/octave.py b/lib/spack/spack/build_systems/octave.py index 9e5eabe5dec..79e9bfd5708 100644 --- a/lib/spack/spack/build_systems/octave.py +++ b/lib/spack/spack/build_systems/octave.py @@ -4,6 +4,7 @@ import spack.builder import spack.package_base import spack.spec +import spack.util.environment import spack.util.prefix from spack.directives import build_system, extends from spack.multimethod import when @@ -57,7 +58,9 @@ def install( "pkg prefix %s; pkg install %s" % (prefix, self.pkg.stage.archive_file), ) - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: # octave does not like those environment variables to be set: env.unset("CC") env.unset("CXX") diff --git a/lib/spack/spack/build_systems/oneapi.py b/lib/spack/spack/build_systems/oneapi.py index b8be05d9795..77e0a6e5730 100644 --- a/lib/spack/spack/build_systems/oneapi.py +++ b/lib/spack/spack/build_systems/oneapi.py @@ -132,7 +132,7 @@ def install_component(self, installer_path): if not isdir(install_dir): raise RuntimeError("install failed to directory: {0}".format(install_dir)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Adds environment variables to the generated module file. These environment variables come from running: diff --git a/lib/spack/spack/builder.py b/lib/spack/spack/builder.py index 43f9423038b..1ff2f777c0a 100644 --- a/lib/spack/spack/builder.py +++ b/lib/spack/spack/builder.py @@ -185,10 +185,16 @@ def __init__(self, pkg): # These two methods don't follow the (self, spec, prefix) signature of phases nor # the (self) signature of methods, so they are added explicitly to avoid using a # catch-all (*args, **kwargs) - def setup_build_environment(self, env): + def setup_build_environment( + self, env: spack.util.environment.EnvironmentModifications + ) -> None: return self.pkg_with_dispatcher.setup_build_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, + env: spack.util.environment.EnvironmentModifications, + dependent_spec: spack.spec.Spec, + ) -> None: return self.pkg_with_dispatcher.setup_dependent_build_environment(env, dependent_spec) return Adapter(pkg) @@ -402,7 +408,7 @@ def fixup_install(self): # do something after the package is installed pass - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MY_ENV_VAR", "my_value") class CMakeBuilder(cmake.CMakeBuilder, AnyBuilder): diff --git a/lib/spack/spack/test/data/unparse/grads.txt b/lib/spack/spack/test/data/unparse/grads.txt index 5075803828d..7a122a4f175 100644 --- a/lib/spack/spack/test/data/unparse/grads.txt +++ b/lib/spack/spack/test/data/unparse/grads.txt @@ -47,10 +47,10 @@ class Grads(AutotoolsPackage): depends_on('readline') depends_on('pkgconfig', type='build') - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set('SUPPLIBS', '/') - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set('GADDIR', self.prefix.data) @run_after('install') diff --git a/lib/spack/spack/test/data/unparse/llvm.txt b/lib/spack/spack/test/data/unparse/llvm.txt index fadabb2377c..ac747bbcff9 100644 --- a/lib/spack/spack/test/data/unparse/llvm.txt +++ b/lib/spack/spack/test/data/unparse/llvm.txt @@ -517,7 +517,7 @@ class Llvm(CMakePackage, CudaPackage): return (None, flags, None) return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """When using %clang, add only its ld.lld-$ver and/or ld.lld to our PATH""" if self.compiler.name in ["clang", "apple-clang"]: for lld in "ld.lld-{0}".format(self.compiler.version.version[0]), "ld.lld": @@ -528,7 +528,7 @@ class Llvm(CMakePackage, CudaPackage): os.symlink(bin, sym) env.prepend_path("PATH", self.stage.path) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+clang" in self.spec: env.set("CC", join_path(self.spec.prefix.bin, "clang")) env.set("CXX", join_path(self.spec.prefix.bin, "clang++")) diff --git a/lib/spack/spack/test/data/unparse/mfem.txt b/lib/spack/spack/test/data/unparse/mfem.txt index 22f06e460f5..e52f1758dd4 100644 --- a/lib/spack/spack/test/data/unparse/mfem.txt +++ b/lib/spack/spack/test/data/unparse/mfem.txt @@ -318,7 +318,7 @@ class Mfem(Package, CudaPackage, ROCmPackage): patch('mfem-4.0.0-makefile-syntax-fix.patch', when='@4.0.0') phases = ['configure', 'build', 'install'] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset('MFEM_DIR') env.unset('MFEM_BUILD_DIR') diff --git a/lib/spack/spack/test/data/unparse/py-torch.txt b/lib/spack/spack/test/data/unparse/py-torch.txt index 6d627cdfae7..0c2468d4f7c 100644 --- a/lib/spack/spack/test/data/unparse/py-torch.txt +++ b/lib/spack/spack/test/data/unparse/py-torch.txt @@ -281,7 +281,7 @@ class PyTorch(PythonPackage, CudaPackage): "caffe2/CMakeLists.txt", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set environment variables used to control the build. PyTorch's ``setup.py`` is a thin wrapper around ``cmake``. diff --git a/lib/spack/spack/test/data/unparse/trilinos.txt b/lib/spack/spack/test/data/unparse/trilinos.txt index 4b2a2a318ed..ac35d884850 100644 --- a/lib/spack/spack/test/data/unparse/trilinos.txt +++ b/lib/spack/spack/test/data/unparse/trilinos.txt @@ -440,7 +440,7 @@ class Trilinos(CMakePackage, CudaPackage): url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz" return url.format(version.dashed) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment(self, env: EnvironmentModifications, dependent_spec: Spec) -> None: if "+cuda" in self.spec: # currently Trilinos doesn't perform the memory fence so # it relies on blocking CUDA kernel launch. This is needed @@ -453,7 +453,7 @@ class Trilinos(CMakePackage, CudaPackage): else: self.spec.kokkos_cxx = spack_cxx - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+cuda" in spec and "+wrapper" in spec: if "+mpi" in spec: @@ -847,7 +847,7 @@ class Trilinos(CMakePackage, CudaPackage): ) filter_file(r"-lpytrilinos", "", "%s/Makefile.export.Trilinos" % self.prefix.include) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+exodus" in self.spec: env.prepend_path("PYTHONPATH", self.prefix.lib) diff --git a/lib/spack/spack/test/util/package_hash.py b/lib/spack/spack/test/util/package_hash.py index ad35b66a868..72ad61e9719 100644 --- a/lib/spack/spack/test/util/package_hash.py +++ b/lib/spack/spack/test/util/package_hash.py @@ -334,20 +334,20 @@ def test_remove_complex_package_logic_filtered(): "package_spec,expected_hash", [ ("amdfftw", "tivb752zddjgvfkogfs7cnnvp5olj6co"), - ("grads", "rrlmwml3f2frdnqavmro3ias66h5b2ce"), - ("llvm", "nufffum5dabmaf4l5tpfcblnbfjknvd3"), + ("grads", "lomrsppasfxegyamz4r33zgwiqkveftv"), + ("llvm", "paicamlvy5jkgxw4xnacaxahrixe3f3i"), # has @when("@4.1.0") and raw unicode literals - ("mfem", "whwftpqbjvzncmb52oz6izkanbha2uji"), - ("mfem@4.0.0", "whwftpqbjvzncmb52oz6izkanbha2uji"), - ("mfem@4.1.0", "bpi7of3xelo7fr3ta2lm6bmiruijnxcg"), + ("mfem", "slf5qyyyhuj66mo5lpuhkrs35akh2zck"), + ("mfem@4.0.0", "slf5qyyyhuj66mo5lpuhkrs35akh2zck"), + ("mfem@4.1.0", "yo3ymaulytctas67zjn663ixw5cfyh5u"), # has @when("@1.5.0:") - ("py-torch", "qs7djgqn7dy7r3ps4g7hv2pjvjk4qkhd"), - ("py-torch@1.0", "qs7djgqn7dy7r3ps4g7hv2pjvjk4qkhd"), - ("py-torch@1.6", "p4ine4hc6f2ik2f2wyuwieslqbozll5w"), + ("py-torch", "m3ucsddqr7hjevtgx4cad34nrtqgyjfg"), + ("py-torch@1.0", "m3ucsddqr7hjevtgx4cad34nrtqgyjfg"), + ("py-torch@1.6", "insaxs6bq34rvyhajdbyr4wddqeqb2t3"), # has a print with multiple arguments ("legion", "bq2etsik5l6pbryxmbhfhzynci56ruy4"), # has nested `with when()` blocks and loops - ("trilinos", "vqrgscjrla4hi7bllink7v6v6dwxgc2p"), + ("trilinos", "ojbtbu3p6gpa42sbilblo2ioanvhouxu"), ], ) def test_package_hash_consistency(package_spec, expected_hash): diff --git a/var/spack/repos/builtin.mock/packages/build-env-compiler-var-b/package.py b/var/spack/repos/builtin.mock/packages/build-env-compiler-var-b/package.py index 0e797aed0de..5d3879f2818 100644 --- a/var/spack/repos/builtin.mock/packages/build-env-compiler-var-b/package.py +++ b/var/spack/repos/builtin.mock/packages/build-env-compiler-var-b/package.py @@ -11,7 +11,7 @@ class BuildEnvCompilerVarB(Package): url = "https://www.example.com" version("1.0", md5="0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CC", "this-should-be-dropped") env.set("CXX", "this-should-be-dropped") env.set("FC", "this-should-be-dropped") diff --git a/var/spack/repos/builtin.mock/packages/callpath/package.py b/var/spack/repos/builtin.mock/packages/callpath/package.py index cf3d52707f7..9ad90f14ac1 100644 --- a/var/spack/repos/builtin.mock/packages/callpath/package.py +++ b/var/spack/repos/builtin.mock/packages/callpath/package.py @@ -22,5 +22,5 @@ def install(self, spec, prefix): mkdirp(prefix) touch(join_path(prefix, "dummyfile")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOOBAR", self.name) diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py index c9bf018e960..c9c6e30da72 100644 --- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py @@ -67,7 +67,9 @@ def setup_build_environment(self, spack_env): "link arg on dependency spec not readable from " "setup_build_environment.", ) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spack_cc # Ensure spack module-scope variable is avaiable check( from_cmake == "from_cmake", diff --git a/var/spack/repos/builtin.mock/packages/cmake/package.py b/var/spack/repos/builtin.mock/packages/cmake/package.py index 1c34499a3bd..d33ec83a5fe 100644 --- a/var/spack/repos/builtin.mock/packages/cmake/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake/package.py @@ -36,11 +36,13 @@ class Cmake(Package): url="https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spack_cc # Ensure spack module-scope variable is avaiable env.set("for_install", "for_install") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spack_cc # Ensure spack module-scope variable is avaiable env.set("from_cmake", "from_cmake") diff --git a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py index 6dc3240c24c..17ec0e57058 100644 --- a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py @@ -23,5 +23,5 @@ def install(self, spec, prefix): make() make("install") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOOBAR", self.name) diff --git a/var/spack/repos/builtin.mock/packages/conflict/package.py b/var/spack/repos/builtin.mock/packages/conflict/package.py index 1b36c351518..2143f226484 100644 --- a/var/spack/repos/builtin.mock/packages/conflict/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict/package.py @@ -24,5 +24,5 @@ def install(self, spec, prefix): make() make("install") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOOBAR", self.name) diff --git a/var/spack/repos/builtin.mock/packages/hash-test1/package.py b/var/spack/repos/builtin.mock/packages/hash-test1/package.py index 00cc138061e..bf00f3cf1bb 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test1/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test1/package.py @@ -27,7 +27,9 @@ class HashTest1(Package): variant("variantx", default=False, description="Test variant X") variant("varianty", default=False, description="Test variant Y") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: pass @when("@:1.4") diff --git a/var/spack/repos/builtin.mock/packages/hash-test2/package.py b/var/spack/repos/builtin.mock/packages/hash-test2/package.py index 7141410f924..842b6622874 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test2/package.py @@ -23,7 +23,9 @@ class HashTest2(Package): variant("variantx", default=False, description="Test variant X") variant("varianty", default=False, description="Test variant Y") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: pass def install(self, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/hash-test3/package.py b/var/spack/repos/builtin.mock/packages/hash-test3/package.py index d72b4f819ad..8d55eb127c9 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test3/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test3/package.py @@ -22,7 +22,9 @@ class HashTest3(Package): variant("variantx", default=False, description="Test variant X") variant("varianty", default=False, description="Test variant Y") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: pass @when("@:1.4") diff --git a/var/spack/repos/builtin.mock/packages/modifies-run-env/package.py b/var/spack/repos/builtin.mock/packages/modifies-run-env/package.py index 491e78fe727..89b3164d03c 100644 --- a/var/spack/repos/builtin.mock/packages/modifies-run-env/package.py +++ b/var/spack/repos/builtin.mock/packages/modifies-run-env/package.py @@ -13,7 +13,7 @@ class ModifiesRunEnv(Package): version("1.0", md5="0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DEPENDENCY_ENV_VAR", "1") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/module-long-help/package.py b/var/spack/repos/builtin.mock/packages/module-long-help/package.py index eaace9f8f27..0362d3ccf4e 100644 --- a/var/spack/repos/builtin.mock/packages/module-long-help/package.py +++ b/var/spack/repos/builtin.mock/packages/module-long-help/package.py @@ -14,5 +14,5 @@ class ModuleLongHelp(Package): version("1.0", "0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOO", "bar") diff --git a/var/spack/repos/builtin.mock/packages/module-manpath-append/package.py b/var/spack/repos/builtin.mock/packages/module-manpath-append/package.py index eed270cbe06..8db25f467cf 100644 --- a/var/spack/repos/builtin.mock/packages/module-manpath-append/package.py +++ b/var/spack/repos/builtin.mock/packages/module-manpath-append/package.py @@ -11,5 +11,5 @@ class ModuleManpathAppend(Package): version("1.0", "0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("MANPATH", "/path/to/man") diff --git a/var/spack/repos/builtin.mock/packages/module-manpath-prepend/package.py b/var/spack/repos/builtin.mock/packages/module-manpath-prepend/package.py index 78874d9b326..b2ab7c600fa 100644 --- a/var/spack/repos/builtin.mock/packages/module-manpath-prepend/package.py +++ b/var/spack/repos/builtin.mock/packages/module-manpath-prepend/package.py @@ -11,6 +11,6 @@ class ModuleManpathPrepend(Package): version("1.0", "0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("MANPATH", "/path/to/man") env.prepend_path("MANPATH", "/path/to/share/man") diff --git a/var/spack/repos/builtin.mock/packages/module-manpath-setenv/package.py b/var/spack/repos/builtin.mock/packages/module-manpath-setenv/package.py index f4f6368a580..dc37c438a3c 100644 --- a/var/spack/repos/builtin.mock/packages/module-manpath-setenv/package.py +++ b/var/spack/repos/builtin.mock/packages/module-manpath-setenv/package.py @@ -11,5 +11,5 @@ class ModuleManpathSetenv(Package): version("1.0", "0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MANPATH", "/path/to/man") diff --git a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py index 0aadd1029fb..e7978b553f6 100644 --- a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py +++ b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py @@ -11,7 +11,7 @@ class ModulePathSeparator(Package): version("1.0", md5="0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("COLON", "foo") env.prepend_path("COLON", "foo") env.remove_path("COLON", "foo") diff --git a/var/spack/repos/builtin.mock/packages/module-setenv-raw/package.py b/var/spack/repos/builtin.mock/packages/module-setenv-raw/package.py index 767d222a72c..29f803b31c5 100644 --- a/var/spack/repos/builtin.mock/packages/module-setenv-raw/package.py +++ b/var/spack/repos/builtin.mock/packages/module-setenv-raw/package.py @@ -11,5 +11,5 @@ class ModuleSetenvRaw(Package): version("1.0", "0123456789abcdef0123456789abcdef") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOO", "{{name}}, {name}, {{}}, {}", raw=True) diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index 587a615cdde..be9fe17fb0a 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -33,5 +33,5 @@ def install(self, spec, prefix): touch(prefix.mpileaks) mkdirp(prefix.man) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FOOBAR", self.name) diff --git a/var/spack/repos/builtin.mock/packages/zlib/package.py b/var/spack/repos/builtin.mock/packages/zlib/package.py index 32c96637e1e..71ee76da599 100644 --- a/var/spack/repos/builtin.mock/packages/zlib/package.py +++ b/var/spack/repos/builtin.mock/packages/zlib/package.py @@ -35,7 +35,7 @@ def libs(self): shared = "+shared" in self.spec return find_libraries(["libz"], root=self.prefix, recursive=True, shared=shared) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+pic" in self.spec: env.append_flags("CFLAGS", self.compiler.cc_pic_flag) if "+optimize" in self.spec: diff --git a/var/spack/repos/builtin/packages/3dtk/package.py b/var/spack/repos/builtin/packages/3dtk/package.py index 62effbb4afd..121bce064d1 100644 --- a/var/spack/repos/builtin/packages/3dtk/package.py +++ b/var/spack/repos/builtin/packages/3dtk/package.py @@ -68,7 +68,7 @@ class _3dtk(CMakePackage): patch("homebrew.patch", when="platform=darwin") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["eigen"].prefix.include) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/acct/package.py b/var/spack/repos/builtin/packages/acct/package.py index 4b63ee9ffcd..4b96b3d174a 100644 --- a/var/spack/repos/builtin/packages/acct/package.py +++ b/var/spack/repos/builtin/packages/acct/package.py @@ -20,7 +20,7 @@ class Acct(AutotoolsPackage, GNUMirrorPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def installcheck(self): diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index a6f86997462..d57482a94db 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -458,7 +458,7 @@ def headers(self): hlist.directories = [incdir] return hlist - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: arm_dir = get_acfl_prefix(self.spec) armpl_dir = get_armpl_prefix(self.spec) diff --git a/var/spack/repos/builtin/packages/activeharmony/package.py b/var/spack/repos/builtin/packages/activeharmony/package.py index cbdc7eee387..6928cba9996 100644 --- a/var/spack/repos/builtin/packages/activeharmony/package.py +++ b/var/spack/repos/builtin/packages/activeharmony/package.py @@ -25,8 +25,8 @@ class Activeharmony(MakefilePackage): cflags = ["-O3", "-fPIC"] - def setup_build_environment(self, spack_env): - spack_env.set("CFLAGS", " ".join(self.cflags)) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("CFLAGS", " ".join(self.cflags)) @when("@:4.5") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/adf/package.py b/var/spack/repos/builtin/packages/adf/package.py index 3c0211ff075..8874139f81b 100644 --- a/var/spack/repos/builtin/packages/adf/package.py +++ b/var/spack/repos/builtin/packages/adf/package.py @@ -25,7 +25,7 @@ def url_for_version(self, version): license_files = ["license.txt"] license_vars = ["SCMLICENSE"] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ADFHOME", self.prefix) env.set("ADFBIN", self.prefix.bin) env.set("ADFRESOURCES", self.prefix.atomicdata) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index d2f788cb105..40c28e69513 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -113,7 +113,7 @@ def with_or_without_hdf5(self, activated): return "--without-phdf5" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://github.com/ornladios/ADIOS/issues/206 if self.spec.satisfies("+fortran %gcc@10:"): env.set("FCFLAGS", "-fallow-argument-mismatch") diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index 486295a8dd2..2612c163b73 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -257,7 +257,7 @@ def patch(self): filter_file("mpc++_r)", "mpcc_r mpiFCC)", f, string=True) filter_file("mpf77_r", "mpf77_r mpifrt", f, string=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://github.com/ornladios/ADIOS2/issues/2228 if self.spec.satisfies("+fortran %gcc@10:"): env.set("FFLAGS", "-fallow-argument-mismatch") @@ -358,7 +358,7 @@ def libs(self): list(libs_to_seek), root=self.spec.prefix, shared=("+shared" in spec), recursive=True ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: try: all_libs = self.libs idx = all_libs.basenames.index("libadios2_h5vol.so") diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py index 2e0c4d12f07..358a3f42fc0 100644 --- a/var/spack/repos/builtin/packages/adlbx/package.py +++ b/var/spack/repos/builtin/packages/adlbx/package.py @@ -29,7 +29,7 @@ class Adlbx(AutotoolsPackage): depends_on("m4", type="build", when="@master") depends_on("mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("CC", spec["mpi"].mpicc) env.set("CXX", spec["mpi"].mpicxx) diff --git a/var/spack/repos/builtin/packages/adwaita-icon-theme/package.py b/var/spack/repos/builtin/packages/adwaita-icon-theme/package.py index f810b4665b2..4019dc3a2ca 100644 --- a/var/spack/repos/builtin/packages/adwaita-icon-theme/package.py +++ b/var/spack/repos/builtin/packages/adwaita-icon-theme/package.py @@ -18,14 +18,18 @@ class AdwaitaIconTheme(AutotoolsPackage): depends_on("gdk-pixbuf", type="build") depends_on("librsvg", type="build") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/amber/package.py b/var/spack/repos/builtin/packages/amber/package.py index 4a5ffbecc87..760a50329dd 100644 --- a/var/spack/repos/builtin/packages/amber/package.py +++ b/var/spack/repos/builtin/packages/amber/package.py @@ -153,7 +153,7 @@ def url_for_version(self, version): url = "file://{0}/Amber{1}.tar.bz2".format(os.getcwd(), version) return url - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: amber_src = self.stage.source_path env.set("AMBERHOME", amber_src) @@ -242,7 +242,7 @@ def install(self, spec, prefix): # just install everything that was built install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("AMBER_PREFIX", self.prefix) env.set("AMBERHOME", self.prefix) # CUDA diff --git a/var/spack/repos/builtin/packages/ambertools/package.py b/var/spack/repos/builtin/packages/ambertools/package.py index 9964e4978f0..ebad34d8b2f 100644 --- a/var/spack/repos/builtin/packages/ambertools/package.py +++ b/var/spack/repos/builtin/packages/ambertools/package.py @@ -63,11 +63,11 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("AMBER_PREFIX", self.prefix) env.set("AMBERHOME", self.prefix) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("AMBER_PREFIX", self.prefix) env.set("AMBERHOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py index 26876c882a5..f6d9220dc78 100644 --- a/var/spack/repos/builtin/packages/amdlibflame/package.py +++ b/var/spack/repos/builtin/packages/amdlibflame/package.py @@ -250,6 +250,8 @@ def install(self, pkg, spec, prefix): # make install in parallel fails with message 'File already exists' make("install", parallel=False) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.external: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py index faeaa9acd8b..5dc17d370e3 100644 --- a/var/spack/repos/builtin/packages/amdscalapack/package.py +++ b/var/spack/repos/builtin/packages/amdscalapack/package.py @@ -135,6 +135,8 @@ def cmake_args(self): return args - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.external: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/ampl/package.py b/var/spack/repos/builtin/packages/ampl/package.py index 2213e8341b1..0c019eb64eb 100644 --- a/var/spack/repos/builtin/packages/ampl/package.py +++ b/var/spack/repos/builtin/packages/ampl/package.py @@ -85,7 +85,7 @@ class Ampl(Package): def url_for_version(self, version): return "file://{0}/ampl.linux-intel64.{1}.tgz".format(os.getcwd(), version) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) if self.spec.satisfies("+ide"): env.prepend_path("PATH", join_path(self.prefix, "amplide")) diff --git a/var/spack/repos/builtin/packages/ampliconnoise/package.py b/var/spack/repos/builtin/packages/ampliconnoise/package.py index cb20ccc542c..05cd420f8ac 100644 --- a/var/spack/repos/builtin/packages/ampliconnoise/package.py +++ b/var/spack/repos/builtin/packages/ampliconnoise/package.py @@ -23,7 +23,7 @@ class Ampliconnoise(MakefilePackage): patch("Fix-return-type.patch") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.Scripts) env.set("PYRO_LOOKUP_FILE", os.path.join(self.prefix, "Data", "LookUp_E123.dat")) env.set("SEQ_LOOKUP_FILE", os.path.join(self.prefix, "Data", "Tran.dat")) diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index 3a16d2eb546..4d21bc545fc 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -276,7 +276,7 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage): "openfast@4.0.0:4.0.1", msg="OpenFAST 4.0.0:4.0.1 contains a bug. Use OpenFAST >= 4.0.2." ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Avoid compile errors with Intel interprocedural optimization if self.spec.satisfies("%intel"): env.append_flags("CXXFLAGS", "-no-ipo") diff --git a/var/spack/repos/builtin/packages/amrfinder/package.py b/var/spack/repos/builtin/packages/amrfinder/package.py index ff11c4bc328..ea5b11bfc3c 100644 --- a/var/spack/repos/builtin/packages/amrfinder/package.py +++ b/var/spack/repos/builtin/packages/amrfinder/package.py @@ -29,7 +29,7 @@ class Amrfinder(MakefilePackage): depends_on("hmmer") depends_on("curl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("INSTALL_DIR", prefix.bin) env.set("DEFAULT_DB_DIR", prefix.share) diff --git a/var/spack/repos/builtin/packages/amrvis/package.py b/var/spack/repos/builtin/packages/amrvis/package.py index e44af96aac4..a71ee642f6e 100644 --- a/var/spack/repos/builtin/packages/amrvis/package.py +++ b/var/spack/repos/builtin/packages/amrvis/package.py @@ -143,7 +143,7 @@ def edit(self, spec, prefix): with open("GNUmakefile", "w") as file: file.writelines(contents) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # We don't want an AMREX_HOME the user may have set already env.unset("AMREX_HOME") # Help force Amrvis to not pick up random system compilers diff --git a/var/spack/repos/builtin/packages/anaconda3/package.py b/var/spack/repos/builtin/packages/anaconda3/package.py index 06cdd527f8f..f3af10fe7fd 100644 --- a/var/spack/repos/builtin/packages/anaconda3/package.py +++ b/var/spack/repos/builtin/packages/anaconda3/package.py @@ -220,6 +220,6 @@ def install(self, spec, prefix): bash = which("bash") bash(anaconda_script, "-b", "-f", "-p", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/angsd/package.py b/var/spack/repos/builtin/packages/angsd/package.py index 99139c2408a..0edd95359b3 100644 --- a/var/spack/repos/builtin/packages/angsd/package.py +++ b/var/spack/repos/builtin/packages/angsd/package.py @@ -35,7 +35,7 @@ class Angsd(MakefilePackage): depends_on("r", type="run", when="+r") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("R_LIBS", self.prefix.R) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index 45e976bbd7d..3b77bd08146 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -33,7 +33,7 @@ class Antlr(AutotoolsPackage): extends("python", when="+python") depends_on("java", type=("build", "run"), when="+java") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+pic"): env.set("CXXFLAGS", "-fPIC") diff --git a/var/spack/repos/builtin/packages/antlr4-complete/package.py b/var/spack/repos/builtin/packages/antlr4-complete/package.py index 3e2bc105087..70b69bef86f 100644 --- a/var/spack/repos/builtin/packages/antlr4-complete/package.py +++ b/var/spack/repos/builtin/packages/antlr4-complete/package.py @@ -56,7 +56,7 @@ def install(self, spec, prefix): rename(glob.glob("antlr-*-complete.jar")[0], "antlr-complete.jar") install("antlr-complete.jar", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ANTLR4_JAR_LOCATION", join_path(self.prefix.bin, "antlr-complete.jar")) env.set("ANTLR_JAR_LOCATION", join_path(self.prefix.bin, "antlr-complete.jar")) env.set("ANTLR_EXECUTABLE", join_path(self.prefix.bin, "antlr-complete.jar")) diff --git a/var/spack/repos/builtin/packages/ants/package.py b/var/spack/repos/builtin/packages/ants/package.py index c2c8ff322a3..25159e4f222 100644 --- a/var/spack/repos/builtin/packages/ants/package.py +++ b/var/spack/repos/builtin/packages/ants/package.py @@ -42,5 +42,5 @@ def install(self, spec, prefix): make("install") install_tree("Scripts", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ANTSPATH", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/aocl-da/package.py b/var/spack/repos/builtin/packages/aocl-da/package.py index 9ebaab2f76c..edc6f956771 100644 --- a/var/spack/repos/builtin/packages/aocl-da/package.py +++ b/var/spack/repos/builtin/packages/aocl-da/package.py @@ -86,13 +86,13 @@ class AoclDa(CMakePackage): depends_on("py-pytest", type="test") depends_on("py-scikit-learn", type=("test", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: 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): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", join_path(self.prefix, "python_package")) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/aotriton/package.py b/var/spack/repos/builtin/packages/aotriton/package.py index ce8a53b48c2..0b700f200f5 100644 --- a/var/spack/repos/builtin/packages/aotriton/package.py +++ b/var/spack/repos/builtin/packages/aotriton/package.py @@ -55,7 +55,7 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set environment variables used to control the build""" if self.spec.satisfies("%clang"): env.set("TRITON_HIP_LLD_PATH", self.spec["llvm-amdgpu"].prefix / bin / ld.lld) diff --git a/var/spack/repos/builtin/packages/apktool/package.py b/var/spack/repos/builtin/packages/apktool/package.py index a1e89400785..c51d48c94d7 100644 --- a/var/spack/repos/builtin/packages/apktool/package.py +++ b/var/spack/repos/builtin/packages/apktool/package.py @@ -20,7 +20,7 @@ class Apktool(Package): depends_on("java@8:", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LC_ALL", "en_US.UTF-8") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/apple-gl/package.py b/var/spack/repos/builtin/packages/apple-gl/package.py index 1da7fcd7233..8040b619a94 100644 --- a/var/spack/repos/builtin/packages/apple-gl/package.py +++ b/var/spack/repos/builtin/packages/apple-gl/package.py @@ -9,7 +9,9 @@ class AppleGlBase(BundlePackage): maintainers("aphecetche") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # we try to setup a build environment with enough hints # for the build system to pick up on the Apple framework version # of OpenGL. diff --git a/var/spack/repos/builtin/packages/aqlprofile/package.py b/var/spack/repos/builtin/packages/aqlprofile/package.py index e7dc8d568ed..589b9732a03 100644 --- a/var/spack/repos/builtin/packages/aqlprofile/package.py +++ b/var/spack/repos/builtin/packages/aqlprofile/package.py @@ -322,7 +322,7 @@ def install(self, spec, prefix): install_tree(f"opt/rocm-{spec.version}/share/", prefix.share) install_tree(f"opt/rocm-{spec.version}/lib/", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["hsa-rocr-dev"].prefix.lib) # This package is installed from binaries, and we haven't patched rpaths. diff --git a/var/spack/repos/builtin/packages/arm-forge/package.py b/var/spack/repos/builtin/packages/arm-forge/package.py index c325bd76beb..60b00daf7ea 100644 --- a/var/spack/repos/builtin/packages/arm-forge/package.py +++ b/var/spack/repos/builtin/packages/arm-forge/package.py @@ -205,7 +205,7 @@ def install(self, spec, prefix): probe = join_path(prefix, "bin", "forge-probe") subprocess.call([probe, "--install", "global"]) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Only PATH is needed for Forge. # Adding lib to LD_LIBRARY_PATH can cause conflicts with Forge's internal libs. env.clear() diff --git a/var/spack/repos/builtin/packages/armcimpi/package.py b/var/spack/repos/builtin/packages/armcimpi/package.py index fdd3cb1496b..8c5fb2b8420 100644 --- a/var/spack/repos/builtin/packages/armcimpi/package.py +++ b/var/spack/repos/builtin/packages/armcimpi/package.py @@ -46,5 +46,7 @@ def configure_args(self): args.extend(self.with_or_without("progress")) return args - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("ARMCIMPI_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/armcomputelibrary/package.py b/var/spack/repos/builtin/packages/armcomputelibrary/package.py index 1cdc8404a68..f2f7169ed66 100644 --- a/var/spack/repos/builtin/packages/armcomputelibrary/package.py +++ b/var/spack/repos/builtin/packages/armcomputelibrary/package.py @@ -121,7 +121,7 @@ def build_args(self, spec, prefix): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Spack compiler wrapper inject -mcpu flag for some targets. # This can conflict with -march set in scons script, so override it here. env.set("SPACK_TARGET_ARGS", "") diff --git a/var/spack/repos/builtin/packages/armpl-gcc/package.py b/var/spack/repos/builtin/packages/armpl-gcc/package.py index 77cf566d72a..bef185ce28f 100644 --- a/var/spack/repos/builtin/packages/armpl-gcc/package.py +++ b/var/spack/repos/builtin/packages/armpl-gcc/package.py @@ -495,7 +495,7 @@ def headers(self): hlist.directories = [incdir] return hlist - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: armpl_dir = get_armpl_prefix(self.spec) if self.spec.platform == "darwin": env.prepend_path("DYLD_LIBRARY_PATH", join_path(armpl_dir, "lib")) @@ -526,7 +526,9 @@ def make_pkgconfig_files(self): for f in find(join_path(armpl_dir, "pkgconfig"), "*"): symlink(f, f + ".pc") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: armpl_dir = get_armpl_prefix(self.spec) if self.spec.satisfies("@:22"): # pkgconfig directory is not in standard ("lib", "lib64", "share") location diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 47120520964..71350a0e6b7 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -149,7 +149,7 @@ def configure_args(self): return options @when("@:3.7.0 %gcc@10:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # version up to and including 3.7.0 are not ported to gcc 10 # https://github.com/opencollab/arpack-ng/issues/242 env.set("FFLAGS", "-fallow-argument-mismatch") diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py index 2edfee726ac..4e0589f6c02 100644 --- a/var/spack/repos/builtin/packages/ascent/package.py +++ b/var/spack/repos/builtin/packages/ascent/package.py @@ -350,7 +350,7 @@ def patch(self): $<$,$>:-std=c++17>)""" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CTEST_OUTPUT_ON_FAILURE", "1") #################################################################### diff --git a/var/spack/repos/builtin/packages/aspect/package.py b/var/spack/repos/builtin/packages/aspect/package.py index 9f271669c3c..364e1084bec 100644 --- a/var/spack/repos/builtin/packages/aspect/package.py +++ b/var/spack/repos/builtin/packages/aspect/package.py @@ -49,5 +49,5 @@ class Aspect(CMakePackage): def cmake_args(self): return [self.define_from_variant("ASPECT_USE_FP_EXCEPTIONS", "fpe")] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("Aspect_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/aspell/package.py b/var/spack/repos/builtin/packages/aspell/package.py index a026296ecf5..ee4759bffff 100644 --- a/var/spack/repos/builtin/packages/aspell/package.py +++ b/var/spack/repos/builtin/packages/aspell/package.py @@ -33,5 +33,5 @@ def make_missing_files(self): make("gen/dirs.h") make("gen/static_filters.src.cpp") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ASPELL_CONF", f"prefix {self.prefix}") diff --git a/var/spack/repos/builtin/packages/aspera-cli/package.py b/var/spack/repos/builtin/packages/aspera-cli/package.py index deb31d85ca2..af8eda52f90 100644 --- a/var/spack/repos/builtin/packages/aspera-cli/package.py +++ b/var/spack/repos/builtin/packages/aspera-cli/package.py @@ -20,7 +20,7 @@ class AsperaCli(Package): expand=False, ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.cli.bin) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/astral/package.py b/var/spack/repos/builtin/packages/astral/package.py index 789ab126cab..1500b5a3351 100644 --- a/var/spack/repos/builtin/packages/astral/package.py +++ b/var/spack/repos/builtin/packages/astral/package.py @@ -46,5 +46,5 @@ def install(self, spec, prefix): filter_file("^java", java, script, **kwargs) filter_file("astral.jar", join_path(prefix.tools, jar_file), script, **kwargs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ASTRAL_HOME", self.prefix.tools) diff --git a/var/spack/repos/builtin/packages/at-spi2-core/package.py b/var/spack/repos/builtin/packages/at-spi2-core/package.py index 204140c055a..5d688374b55 100644 --- a/var/spack/repos/builtin/packages/at-spi2-core/package.py +++ b/var/spack/repos/builtin/packages/at-spi2-core/package.py @@ -56,15 +56,19 @@ def url_for_version(self, version): url = "http://ftp.gnome.org/pub/gnome/sources/at-spi2-core" return url + f"/{version.up_to(2)}/at-spi2-core-{version}.tar.xz" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: 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_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # this avoids an "import site" error in the build env.unset("PYTHONHOME") diff --git a/var/spack/repos/builtin/packages/athena/package.py b/var/spack/repos/builtin/packages/athena/package.py index e7879274c49..914107b074c 100644 --- a/var/spack/repos/builtin/packages/athena/package.py +++ b/var/spack/repos/builtin/packages/athena/package.py @@ -179,7 +179,7 @@ class Athena(AutotoolsPackage): patch("missing-separator.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("OPT", "-O3") diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index faeafadbf8e..79137621444 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -39,10 +39,12 @@ def url_for_version(self, version): f"{version.up_to(2)}/atk-{version}.tar.xz" ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: 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_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/atop/package.py b/var/spack/repos/builtin/packages/atop/package.py index 46502959fa1..be74988bf0f 100644 --- a/var/spack/repos/builtin/packages/atop/package.py +++ b/var/spack/repos/builtin/packages/atop/package.py @@ -25,7 +25,7 @@ class Atop(Package): depends_on("ncurses") depends_on("gmake", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("LDFLAGS", "-ltinfo") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py index 6eba45c88c9..4b863369a95 100644 --- a/var/spack/repos/builtin/packages/augustus/package.py +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -173,7 +173,7 @@ def filter_sbang(self): files = glob.glob("*.py") filter_file(pattern, repl, *files, backup=False) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: htslib = self.spec["htslib"].prefix bamtools = self.spec["bamtools"].prefix @@ -184,6 +184,6 @@ def setup_build_environment(self, env): env.set("HTSLIB_INSTALL_DIR", htslib) env.set("BAMTOOLS_INSTALL_DIR", bamtools) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("AUGUSTUS_CONFIG_PATH", join_path(self.prefix, "config")) env.prepend_path("PATH", join_path(self.prefix, "scripts")) diff --git a/var/spack/repos/builtin/packages/authd/package.py b/var/spack/repos/builtin/packages/authd/package.py index 0f52ad1a548..38649f73869 100644 --- a/var/spack/repos/builtin/packages/authd/package.py +++ b/var/spack/repos/builtin/packages/authd/package.py @@ -19,7 +19,7 @@ class Authd(MakefilePackage): depends_on("c", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/autoconf-archive/package.py b/var/spack/repos/builtin/packages/autoconf-archive/package.py index d74e4cd973a..983e227da18 100644 --- a/var/spack/repos/builtin/packages/autoconf-archive/package.py +++ b/var/spack/repos/builtin/packages/autoconf-archive/package.py @@ -34,6 +34,8 @@ class AutoconfArchive(AutotoolsPackage, GNUMirrorPackage): # The package does not produce any libraries and does not use libtool: patch_libtool = False - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Adds the ACLOCAL path for autotools.""" env.append_path("ACLOCAL_PATH", self.prefix.share.aclocal) diff --git a/var/spack/repos/builtin/packages/autofact/package.py b/var/spack/repos/builtin/packages/autofact/package.py index e3c427e44a6..0c1c860538a 100644 --- a/var/spack/repos/builtin/packages/autofact/package.py +++ b/var/spack/repos/builtin/packages/autofact/package.py @@ -31,6 +31,6 @@ def patch(self): def install(self, spec, prefix): install_tree(self.stage.source_path, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.scripts) env.set("PATH2AUTOFACT", self.prefix) diff --git a/var/spack/repos/builtin/packages/avizo/package.py b/var/spack/repos/builtin/packages/avizo/package.py index 06381bcacb2..1413cb3dc8a 100644 --- a/var/spack/repos/builtin/packages/avizo/package.py +++ b/var/spack/repos/builtin/packages/avizo/package.py @@ -62,7 +62,7 @@ class Avizo(Package): license_files = ["share/license/password.dat"] license_vars = ["MCSLMD_LICENSE_FILE"] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MCSLMD_LICENSE_FILE", join_path(self.prefix.share.license, "password.dat")) def install(self, spec, prefix): 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 1c2dcbefbe5..0cf2e86fccc 100644 --- a/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py +++ b/var/spack/repos/builtin/packages/aws-ofi-nccl/package.py @@ -55,11 +55,13 @@ def url_for_version(self, version): return url_fmt.format(version) # To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("LD_LIBRARY_PATH", self.prefix.lib) # To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.append_path("LD_LIBRARY_PATH", self.prefix.lib) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/aws-ofi-rccl/package.py b/var/spack/repos/builtin/packages/aws-ofi-rccl/package.py index f91e02a7e5e..a74726b443c 100644 --- a/var/spack/repos/builtin/packages/aws-ofi-rccl/package.py +++ b/var/spack/repos/builtin/packages/aws-ofi-rccl/package.py @@ -36,11 +36,13 @@ class AwsOfiRccl(AutotoolsPackage): depends_on("libtool", type="build") # To enable this plug-in to work with RCCL add it to the LD_LIBRARY_PATH - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) # To enable this plug-in to work with RCCL add it to the LD_LIBRARY_PATH - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/babelflow/package.py b/var/spack/repos/builtin/packages/babelflow/package.py index 25c0d53ba24..c5aef384b17 100644 --- a/var/spack/repos/builtin/packages/babelflow/package.py +++ b/var/spack/repos/builtin/packages/babelflow/package.py @@ -30,7 +30,7 @@ class Babelflow(CMakePackage): # Fix missing implicit includes @when("%gcc@7:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-include limits") def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/babelstream/package.py b/var/spack/repos/builtin/packages/babelstream/package.py index d6aa03032da..09a96ebf1f7 100644 --- a/var/spack/repos/builtin/packages/babelstream/package.py +++ b/var/spack/repos/builtin/packages/babelstream/package.py @@ -831,7 +831,7 @@ def edit(self, pkg, spec, prefix): for key in config: inc.write("{0} = {1}\n".format(key, config[key])) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: ###################################### # Build and Installation Directories # ###################################### diff --git a/var/spack/repos/builtin/packages/babl/package.py b/var/spack/repos/builtin/packages/babl/package.py index ca2a45a8505..d19cf4eb06f 100644 --- a/var/spack/repos/builtin/packages/babl/package.py +++ b/var/spack/repos/builtin/packages/babl/package.py @@ -36,8 +36,12 @@ class Babl(MesonPackage): depends_on("lcms") depends_on("gobject-introspection") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/backupninja/package.py b/var/spack/repos/builtin/packages/backupninja/package.py index 461f5f4ebd0..fc172d1716b 100644 --- a/var/spack/repos/builtin/packages/backupninja/package.py +++ b/var/spack/repos/builtin/packages/backupninja/package.py @@ -22,5 +22,5 @@ class Backupninja(AutotoolsPackage): depends_on("bash", type="build") depends_on("gawk", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/bam-readcount/package.py b/var/spack/repos/builtin/packages/bam-readcount/package.py index cb3246d3f86..d8924c944fa 100644 --- a/var/spack/repos/builtin/packages/bam-readcount/package.py +++ b/var/spack/repos/builtin/packages/bam-readcount/package.py @@ -19,5 +19,5 @@ class BamReadcount(CMakePackage): depends_on("c", type="build") depends_on("cxx", type="build") # generated - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CFLAGS", self.compiler.cc_pic_flag) diff --git a/var/spack/repos/builtin/packages/bamaddrg/package.py b/var/spack/repos/builtin/packages/bamaddrg/package.py index 80a4faeeef1..e3a2cd1d870 100644 --- a/var/spack/repos/builtin/packages/bamaddrg/package.py +++ b/var/spack/repos/builtin/packages/bamaddrg/package.py @@ -19,6 +19,6 @@ class Bamaddrg(MakefilePackage): depends_on("bamtools", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BAMTOOLS_ROOT", self.spec["bamtools"].prefix) env.set("PREFIX", self.prefix) diff --git a/var/spack/repos/builtin/packages/bart/package.py b/var/spack/repos/builtin/packages/bart/package.py index d4d87205f70..c2fc44d1231 100644 --- a/var/spack/repos/builtin/packages/bart/package.py +++ b/var/spack/repos/builtin/packages/bart/package.py @@ -85,5 +85,5 @@ def install(self, spec, prefix): install("python/bartview.py", join_path(prefix.bin, "bartview")) filter_file(r"#!/usr/bin/python", "#!/usr/bin/env python", prefix.bin.bartview) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("TOOLBOX_PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/barvinok/package.py b/var/spack/repos/builtin/packages/barvinok/package.py index 3374547a06d..dee7e7119fa 100644 --- a/var/spack/repos/builtin/packages/barvinok/package.py +++ b/var/spack/repos/builtin/packages/barvinok/package.py @@ -25,7 +25,7 @@ class Barvinok(AutotoolsPackage): depends_on("llvm +clang", when="+pet") depends_on("libyaml", when="+pet") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CFLAGS", "-pthread") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index bdb980cc63b..6b71b38fb19 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -256,7 +256,7 @@ def determine_version(cls, exe): match = re.search(r"Build label: ([\d.]+)", output) return match.group(1) if match else None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # fix the broken linking (on power9) # https://github.com/bazelbuild/bazel/issues/10327 env.set("BAZEL_LINKOPTS", "") diff --git a/var/spack/repos/builtin/packages/bbmap/package.py b/var/spack/repos/builtin/packages/bbmap/package.py index 624aa7e8419..c1f9ab6fdac 100644 --- a/var/spack/repos/builtin/packages/bbmap/package.py +++ b/var/spack/repos/builtin/packages/bbmap/package.py @@ -25,6 +25,6 @@ class Bbmap(Package, SourceforgePackage): def install(self, spec, prefix): install_tree(".", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BBMAP_CONFIG", self.prefix.bin.config) env.set("BBMAP_RESOURCES", self.prefix.bin.resources) diff --git a/var/spack/repos/builtin/packages/bcftools/package.py b/var/spack/repos/builtin/packages/bcftools/package.py index d3f0d393b71..4a006a4416f 100644 --- a/var/spack/repos/builtin/packages/bcftools/package.py +++ b/var/spack/repos/builtin/packages/bcftools/package.py @@ -133,5 +133,5 @@ def install(self, spec, prefix): install("plugins/*.so", self.prefix.libexec.bcftools) @when("@1.2") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BCFTOOLS_PLUGINS", self.prefix.libexec.bcftools) diff --git a/var/spack/repos/builtin/packages/beast1/package.py b/var/spack/repos/builtin/packages/beast1/package.py index a132896332c..43b30a463d8 100644 --- a/var/spack/repos/builtin/packages/beast1/package.py +++ b/var/spack/repos/builtin/packages/beast1/package.py @@ -25,7 +25,7 @@ def url_for_version(self, ver): base = "https://github.com/beast-dev/beast-mcmc/releases/download" return "{0}/v{1}/BEASTv{1}.tgz".format(base, ver.dotted) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BEAST1", self.prefix) env.set("BEAST_LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/beast2/package.py b/var/spack/repos/builtin/packages/beast2/package.py index 5560b5a057e..4ec7a167452 100644 --- a/var/spack/repos/builtin/packages/beast2/package.py +++ b/var/spack/repos/builtin/packages/beast2/package.py @@ -49,7 +49,7 @@ def patch(self): r"(beast\.pkgmgmt.*\b)|(viz.*\b)", "{0} {1} \\1".format(javafx, modules), i ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BEAST", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/biopieces/package.py b/var/spack/repos/builtin/packages/biopieces/package.py index c4f1e17f794..3f8e4242150 100644 --- a/var/spack/repos/builtin/packages/biopieces/package.py +++ b/var/spack/repos/builtin/packages/biopieces/package.py @@ -63,7 +63,7 @@ class Biopieces(Package): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Note: user will need to set environment variables on their own, # dependent on where they will want data to be located: # BP_DATA - Contains genomic data etc. diff --git a/var/spack/repos/builtin/packages/blackhat/package.py b/var/spack/repos/builtin/packages/blackhat/package.py index ee7a4aac80a..7228dab768a 100644 --- a/var/spack/repos/builtin/packages/blackhat/package.py +++ b/var/spack/repos/builtin/packages/blackhat/package.py @@ -30,5 +30,5 @@ def patch(self): def configure_args(self): return ["--with-QDpath=" + self.spec["qd"].prefix, "--enable-pythoninterface=no"] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-Wno-deprecated") diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py index 1bc10b4a091..30acecfdd49 100644 --- a/var/spack/repos/builtin/packages/blat/package.py +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -32,7 +32,7 @@ def flag_handler(self, name, flags): flags.append("-fcommon") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MACHTYPE", "x86_64") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index 5c234fb8439..861335b536d 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -55,7 +55,7 @@ class Bml(CMakePackage): ) depends_on("cuda", when="+cusolver") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+magma" in self.spec: env.set("MAGMA_ROOT", self.spec["magma"].prefix) diff --git a/var/spack/repos/builtin/packages/bohrium/package.py b/var/spack/repos/builtin/packages/bohrium/package.py index 834060e5b20..6a5793a38bd 100644 --- a/var/spack/repos/builtin/packages/bohrium/package.py +++ b/var/spack/repos/builtin/packages/bohrium/package.py @@ -199,7 +199,7 @@ def cmake_args(self): # # Environment setup # - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Bohrium needs an extra include dir apart from # the self.prefix.include dir env.prepend_path("CPATH", self.prefix.include.bohrium) diff --git a/var/spack/repos/builtin/packages/bonniepp/package.py b/var/spack/repos/builtin/packages/bonniepp/package.py index 405aaaece44..b3e1e28804e 100644 --- a/var/spack/repos/builtin/packages/bonniepp/package.py +++ b/var/spack/repos/builtin/packages/bonniepp/package.py @@ -21,6 +21,6 @@ def configure_args(self): configure_args.append("--enable-debug") return configure_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Prepend the sbin directory to PATH.""" env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 41bcd02458c..d673899eece 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -831,10 +831,12 @@ def is_64bit(): if (sys.platform == "darwin") and ("+shared" in spec): fix_darwin_install_name(prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BOOST_ROOT", self.prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if "+context" in self.spec and "context-impl" in self.spec.variants: context_impl = self.spec.variants["context-impl"].value # fcontext, as the default, has no corresponding macro diff --git a/var/spack/repos/builtin/packages/braker/package.py b/var/spack/repos/builtin/packages/braker/package.py index 2245b55f876..012484ec6b9 100644 --- a/var/spack/repos/builtin/packages/braker/package.py +++ b/var/spack/repos/builtin/packages/braker/package.py @@ -64,5 +64,5 @@ def filter_sbang(self): files = glob.iglob("*.pl") filter_file(pattern, repl, *files, backup=False) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/breakdancer/package.py b/var/spack/repos/builtin/packages/breakdancer/package.py index cccf69c740a..e14f128e818 100644 --- a/var/spack/repos/builtin/packages/breakdancer/package.py +++ b/var/spack/repos/builtin/packages/breakdancer/package.py @@ -44,7 +44,7 @@ class Breakdancer(CMakePackage): parallel = False - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # get the perl tools in the path env.prepend_path("PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/breseq/package.py b/var/spack/repos/builtin/packages/breseq/package.py index 209ffbf1f06..35919a0fefb 100644 --- a/var/spack/repos/builtin/packages/breseq/package.py +++ b/var/spack/repos/builtin/packages/breseq/package.py @@ -35,6 +35,6 @@ class Breseq(AutotoolsPackage): conflicts("%gcc@:4.8") conflicts("%clang@:3.3") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LDFLAGS", "-L{0}".format(self.spec["zlib-api"].prefix.lib)) env.set("CFLAGS", "-I{0}".format(self.spec["zlib-api"].prefix.include)) diff --git a/var/spack/repos/builtin/packages/bufr/package.py b/var/spack/repos/builtin/packages/bufr/package.py index 9fb596e9f10..85fbd973891 100644 --- a/var/spack/repos/builtin/packages/bufr/package.py +++ b/var/spack/repos/builtin/packages/bufr/package.py @@ -137,7 +137,7 @@ def _setup_bufr_environment(self, env, suffix): pydir = join_path(os.path.dirname(lib[0]), f"python{pyver}", "site-packages") env.prepend_path("PYTHONPATH", pydir) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: suffixes = ["4"] if not self.spec.satisfies("@12:"): suffixes += ["8", "d"] @@ -145,7 +145,7 @@ def setup_run_environment(self, env): self._setup_bufr_environment(env, suffix) @on_package_attributes(run_tests=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_path("LD_LIBRARY_PATH", join_path(self.build_directory, "src")) def check(self): diff --git a/var/spack/repos/builtin/packages/cachefilesd/package.py b/var/spack/repos/builtin/packages/cachefilesd/package.py index 1d1e46c0e2e..09ab9322bb8 100644 --- a/var/spack/repos/builtin/packages/cachefilesd/package.py +++ b/var/spack/repos/builtin/packages/cachefilesd/package.py @@ -29,5 +29,5 @@ def edit(self, spec, prefix): def install(self, spec, prefix): make("DESTDIR={0}".format(prefix), "install") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index d133d62247f..ab829f6f614 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -263,7 +263,7 @@ def initconfig_package_entries(self): def cmake_args(self): return [] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: 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)) diff --git a/var/spack/repos/builtin/packages/casper/package.py b/var/spack/repos/builtin/packages/casper/package.py index cbac62cf2f8..f1ffb694e6d 100644 --- a/var/spack/repos/builtin/packages/casper/package.py +++ b/var/spack/repos/builtin/packages/casper/package.py @@ -38,5 +38,5 @@ def flag_handler(self, name, flags): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/cbench/package.py b/var/spack/repos/builtin/packages/cbench/package.py index 872408cf0e3..19d72697602 100644 --- a/var/spack/repos/builtin/packages/cbench/package.py +++ b/var/spack/repos/builtin/packages/cbench/package.py @@ -35,7 +35,7 @@ class Cbench(MakefilePackage): conflicts("%xl") conflicts("%xl_r") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # The location of the Cbench source tree env.set("CBENCHOME", self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/cbflib/package.py b/var/spack/repos/builtin/packages/cbflib/package.py index e3f0169d528..6c36416deaa 100644 --- a/var/spack/repos/builtin/packages/cbflib/package.py +++ b/var/spack/repos/builtin/packages/cbflib/package.py @@ -30,7 +30,7 @@ class Cbflib(MakefilePackage): patch("cbf_f16.patch") patch("cbf_int.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: ce = Executable(self.compiler.cc) ce( "-E", diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py index 1fe117f2b10..e5eb6024b7c 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py @@ -62,7 +62,7 @@ class CbtfArgonavisGui(QMakePackage): parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set up the build environment for this package.""" env.set("BOOSTROOT", self.spec["boost"].prefix) env.set("CBTF_ROOT", self.spec["cbtf"].prefix) @@ -75,7 +75,7 @@ def setup_build_environment(self, env): env.set("KRELL_ROOT_XERCES", self.spec["xerces-c"].prefix) env.set("INSTALL_ROOT", self.spec.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the runtime environment for this package.""" # The implementor of qtgraph has set up the library and include diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index 2057335cf9c..b5b3e64a79a 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -119,12 +119,12 @@ def cmake_args(self): return cmake_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" env.prepend_path("LD_LIBRARY_PATH", self.spec["cuda"].prefix + "/extras/CUPTI/lib64") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" env.prepend_path("LD_LIBRARY_PATH", self.spec["cuda"].prefix + "/extras/CUPTI/lib64") diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 93140098aa8..aa9e001c046 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -225,7 +225,7 @@ def cmake_args(self): return cmake_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" # Environment settings for cbtf-krell, bin is automatically diff --git a/var/spack/repos/builtin/packages/cdhit/package.py b/var/spack/repos/builtin/packages/cdhit/package.py index b41b12c5208..5b5110ca80d 100644 --- a/var/spack/repos/builtin/packages/cdhit/package.py +++ b/var/spack/repos/builtin/packages/cdhit/package.py @@ -43,5 +43,5 @@ def build(self, spec, prefix): make_args.append("zlib=no") make(*make_args) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 1960dd6f49d..d11d321739c 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -143,7 +143,7 @@ def url_for_version(self, version): return url.format(version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("BOOST_INCLUDEDIR", spec["boost"].headers.directories[0]) diff --git a/var/spack/repos/builtin/packages/changa/package.py b/var/spack/repos/builtin/packages/changa/package.py index c36de02f1d0..92b54a05453 100644 --- a/var/spack/repos/builtin/packages/changa/package.py +++ b/var/spack/repos/builtin/packages/changa/package.py @@ -52,7 +52,7 @@ class Changa(AutotoolsPackage, CudaPackage): parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CHARM_DIR", self.spec["charmpp"].prefix) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/chapel/package.py b/var/spack/repos/builtin/packages/chapel/package.py index ab098df9f59..0592547faef 100644 --- a/var/spack/repos/builtin/packages/chapel/package.py +++ b/var/spack/repos/builtin/packages/chapel/package.py @@ -749,11 +749,11 @@ def setup_env_vars(self, env): self.update_lib_path(env, self.spec["hsa-rocr-dev"].prefix) self.setup_chpl_comm(env, self.spec) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: self.unset_chpl_env_vars(env) self.setup_env_vars(env) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_env_vars(env) chpl_home = join_path(self.prefix.share, "chapel", self._output_version_short) env.prepend_path("PATH", join_path(chpl_home, "util")) diff --git a/var/spack/repos/builtin/packages/charmpp/package.py b/var/spack/repos/builtin/packages/charmpp/package.py index 705063d82f9..b382bde6b04 100644 --- a/var/spack/repos/builtin/packages/charmpp/package.py +++ b/var/spack/repos/builtin/packages/charmpp/package.py @@ -423,7 +423,9 @@ def check_build(self): parallel=False, ) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if not self.spec.satisfies("backend=mpi"): env.set("MPICC", self.prefix.bin.ampicc) env.set("MPICXX", self.prefix.bin.ampicxx) diff --git a/var/spack/repos/builtin/packages/chez-scheme/package.py b/var/spack/repos/builtin/packages/chez-scheme/package.py index 11adcfab0e6..b551cf8e515 100644 --- a/var/spack/repos/builtin/packages/chez-scheme/package.py +++ b/var/spack/repos/builtin/packages/chez-scheme/package.py @@ -41,8 +41,8 @@ class ChezScheme(AutotoolsPackage): conflicts("+iconv", when="platform=windows") conflicts("+curses", when="platform=windows") - def setup_build_environment(self, env): - env.set("ZUO_JOBS", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("ZUO_JOBS", str(make_jobs)) def patch(self): true = which_string("true", required=True) diff --git a/var/spack/repos/builtin/packages/chlorop/package.py b/var/spack/repos/builtin/packages/chlorop/package.py index 633308d60ee..cb7abebbefb 100644 --- a/var/spack/repos/builtin/packages/chlorop/package.py +++ b/var/spack/repos/builtin/packages/chlorop/package.py @@ -30,5 +30,5 @@ def install(self, spec, prefix): os.rename("chlorop", "bin/chlorop") install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CHLOROP", self.prefix) diff --git a/var/spack/repos/builtin/packages/chrony/package.py b/var/spack/repos/builtin/packages/chrony/package.py index d016e9b5287..b493734802c 100644 --- a/var/spack/repos/builtin/packages/chrony/package.py +++ b/var/spack/repos/builtin/packages/chrony/package.py @@ -26,5 +26,5 @@ class Chrony(AutotoolsPackage): depends_on("ruby-asciidoctor") depends_on("bison", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/cinch/package.py b/var/spack/repos/builtin/packages/cinch/package.py index f2293968f11..dc438c40165 100644 --- a/var/spack/repos/builtin/packages/cinch/package.py +++ b/var/spack/repos/builtin/packages/cinch/package.py @@ -24,6 +24,8 @@ def install(self, spec, prefix): # (CMake) Header Only library so just copy install_tree(self.stage.source_path, prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("CMAKE_PREFIX_PATH", self.prefix) env.set("CINCH_SOURCE_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/citcoms/package.py b/var/spack/repos/builtin/packages/citcoms/package.py index 7b872301956..90242305487 100644 --- a/var/spack/repos/builtin/packages/citcoms/package.py +++ b/var/spack/repos/builtin/packages/citcoms/package.py @@ -41,7 +41,7 @@ class Citcoms(AutotoolsPackage): depends_on("cuda", when="+cuda") depends_on("hdf5+mpi", when="+hdf5") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+ggrd"): env.set("HC_HOME", self.spec["hc"].prefix) diff --git a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py index 6e679e20ee9..e9c588fbd68 100644 --- a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py @@ -134,7 +134,7 @@ def pgo_train(self): use_mods.append_flags("LDFLAGS", use_flag) cmake.add_default_envmod(use_mods) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if ( self.spec.satisfies("%gcc") or self.spec.satisfies("%clang") ) and "+static_libstdcpp" in self.spec: diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 1d43f966d07..8a1890f4b77 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -355,7 +355,9 @@ def install(self, spec, prefix): filter_file("mpc++_r)", "mpc++_r mpiFCC)", f, string=True) filter_file("mpifc)", "mpifc mpifrt)", f, string=True) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # CMake 4.0.0 breaks compatibility with CMake projects requiring a CMake # < 3.5. However, many projects that specify a minimum requirement for # versions older than 3.5 are actually compatible with newer CMake diff --git a/var/spack/repos/builtin/packages/cmdstan/package.py b/var/spack/repos/builtin/packages/cmdstan/package.py index 9e6102c1a94..54c01714240 100644 --- a/var/spack/repos/builtin/packages/cmdstan/package.py +++ b/var/spack/repos/builtin/packages/cmdstan/package.py @@ -84,5 +84,5 @@ def install(self, spec, prefix): install("stanc", prefix.bin) install("stansummary", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CMDSTAN", self.prefix) diff --git a/var/spack/repos/builtin/packages/comgr/package.py b/var/spack/repos/builtin/packages/comgr/package.py index fca124394f5..fb29081675c 100644 --- a/var/spack/repos/builtin/packages/comgr/package.py +++ b/var/spack/repos/builtin/packages/comgr/package.py @@ -139,7 +139,7 @@ def cmake_args(self): args.append(self.define_from_variant("ADDRESS_SANITIZER", "asan")) return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@5.7: +asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/compiler-wrapper/package.py b/var/spack/repos/builtin/packages/compiler-wrapper/package.py index e4a5e77abcd..7bc4d7a0251 100644 --- a/var/spack/repos/builtin/packages/compiler-wrapper/package.py +++ b/var/spack/repos/builtin/packages/compiler-wrapper/package.py @@ -141,7 +141,9 @@ def install(self, spec, prefix): (cray_dir / "crayCC").symlink_to(installed_script) (cray_dir / "CC").symlink_to(installed_script) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if sys.platform == "win32": return diff --git a/var/spack/repos/builtin/packages/composable-kernel/package.py b/var/spack/repos/builtin/packages/composable-kernel/package.py index 893dfa18886..f071f0e295f 100644 --- a/var/spack/repos/builtin/packages/composable-kernel/package.py +++ b/var/spack/repos/builtin/packages/composable-kernel/package.py @@ -91,7 +91,7 @@ class ComposableKernel(CMakePackage): # https://github.com/ROCm/composable_kernel/commit/959073842c0db839d45d565eb260fd018c996ce4 patch("0001-mark-kernels-maybe-unused.patch", when="@6.2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/conda4aarch64/package.py b/var/spack/repos/builtin/packages/conda4aarch64/package.py index dc0f0e79c2d..ecb55006c8a 100644 --- a/var/spack/repos/builtin/packages/conda4aarch64/package.py +++ b/var/spack/repos/builtin/packages/conda4aarch64/package.py @@ -26,6 +26,6 @@ def install(self, spec, prefix): bash = which("bash") bash(conda_script, "-b", "-f", "-p", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 3029cecfa92..18d544dbd85 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -218,7 +218,7 @@ class Conduit(CMakePackage): sha256="784d74942a63acf698c31b39848b46b4b755bf06faa6aa6fb81be61783ec0c30", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CTEST_OUTPUT_ON_FAILURE", "1") # conduit uses a <=1.10 api version before 0.8 if "@:0.7 +hdf5" in self.spec and "@1.10:" in self.spec["hdf5"]: diff --git a/var/spack/repos/builtin/packages/conserver/package.py b/var/spack/repos/builtin/packages/conserver/package.py index b644af2d8fd..03bab5dfb8b 100644 --- a/var/spack/repos/builtin/packages/conserver/package.py +++ b/var/spack/repos/builtin/packages/conserver/package.py @@ -23,5 +23,5 @@ class Conserver(AutotoolsPackage): depends_on("c", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/corenlp/package.py b/var/spack/repos/builtin/packages/corenlp/package.py index 833a6ce240c..0f43520841f 100644 --- a/var/spack/repos/builtin/packages/corenlp/package.py +++ b/var/spack/repos/builtin/packages/corenlp/package.py @@ -65,8 +65,8 @@ def install(self, spec, prefix): kwargs = {"ignore_absent": False, "backup": False, "string": False} filter_file("^java", java, script, **kwargs) - def setup_run_environment(self, run_env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: class_paths = [] class_paths.extend(find(prefix.lib, "*.jar")) classpath = os.pathsep.join(class_paths) - run_env.prepend_path("CLASSPATH", classpath) + env.prepend_path("CLASSPATH", classpath) diff --git a/var/spack/repos/builtin/packages/cosign/package.py b/var/spack/repos/builtin/packages/cosign/package.py index 57f6883259c..c047d8a8f68 100644 --- a/var/spack/repos/builtin/packages/cosign/package.py +++ b/var/spack/repos/builtin/packages/cosign/package.py @@ -25,7 +25,7 @@ class Cosign(Package): depends_on("go", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Point GOPATH at the top of the staging dir for the build step. env.prepend_path("GOPATH", self.stage.path) diff --git a/var/spack/repos/builtin/packages/cosma/package.py b/var/spack/repos/builtin/packages/cosma/package.py index db5e8ef817a..c866a065958 100644 --- a/var/spack/repos/builtin/packages/cosma/package.py +++ b/var/spack/repos/builtin/packages/cosma/package.py @@ -81,7 +81,7 @@ class Cosma(CMakePackage): patch("fj-ssl2.patch", when="^fujitsu-ssl2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda"): env.set("CUDA_PATH", self.spec["cuda"].prefix) diff --git a/var/spack/repos/builtin/packages/costa/package.py b/var/spack/repos/builtin/packages/costa/package.py index c9ce1f123d3..ad821aa2efe 100644 --- a/var/spack/repos/builtin/packages/costa/package.py +++ b/var/spack/repos/builtin/packages/costa/package.py @@ -50,7 +50,7 @@ def url_for_version(self, version): ) return "https://github.com/eth-cscs/COSTA/archive/refs/tags/v{0}.tar.gz".format(version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: return def costa_scalapack_cmake_arg(self): diff --git a/var/spack/repos/builtin/packages/cplex/package.py b/var/spack/repos/builtin/packages/cplex/package.py index 8d32543575a..9da64331607 100644 --- a/var/spack/repos/builtin/packages/cplex/package.py +++ b/var/spack/repos/builtin/packages/cplex/package.py @@ -52,7 +52,7 @@ def configure(self, spec, prefix): for key in config: input_file.write("{0}={1}\n".format(key, config[key])) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(self.prefix, "cplex/bin/x86-64_linux")) env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "cplex/bin/x86-64_linux")) env.prepend_path("MATLABPATH", join_path(self.prefix, "cplex/matlab/x86-64_linux")) diff --git a/var/spack/repos/builtin/packages/cppunit/package.py b/var/spack/repos/builtin/packages/cppunit/package.py index 905c9af06bb..4432407e192 100644 --- a/var/spack/repos/builtin/packages/cppunit/package.py +++ b/var/spack/repos/builtin/packages/cppunit/package.py @@ -47,7 +47,7 @@ class Cppunit(AutotoolsPackage): depends_on("automake", type="build", when="@master,1.15_20220904") depends_on("libtool", type="build", when="@master,1.15_20220904") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: cxxstd = self.spec.variants["cxxstd"].value cxxstdflag = ( "" if cxxstd == "default" else getattr(self.compiler, "cxx{0}_flag".format(cxxstd)) diff --git a/var/spack/repos/builtin/packages/cracklib/package.py b/var/spack/repos/builtin/packages/cracklib/package.py index 0fee6139b8e..ccb37a24d49 100644 --- a/var/spack/repos/builtin/packages/cracklib/package.py +++ b/var/spack/repos/builtin/packages/cracklib/package.py @@ -35,5 +35,5 @@ def autoreconf(self, spec, prefix): sh = which("sh") sh("./autogen.sh") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/cray-mpich/package.py b/var/spack/repos/builtin/packages/cray-mpich/package.py index 8be3e5ae2dd..a427df13967 100644 --- a/var/spack/repos/builtin/packages/cray-mpich/package.py +++ b/var/spack/repos/builtin/packages/cray-mpich/package.py @@ -74,7 +74,7 @@ def external_prefix(self): libdir = get_path_args_from_module_line(line)[0] return os.path.dirname(os.path.normpath(libdir)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+wrappers"): self.setup_mpi_wrapper_variables(env) return diff --git a/var/spack/repos/builtin/packages/cray-mvapich2/package.py b/var/spack/repos/builtin/packages/cray-mvapich2/package.py index 265e9ef5015..0a73a07d818 100644 --- a/var/spack/repos/builtin/packages/cray-mvapich2/package.py +++ b/var/spack/repos/builtin/packages/cray-mvapich2/package.py @@ -28,7 +28,7 @@ class CrayMvapich2(MpichEnvironmentModifications, Package): requires("platform=linux", msg="Cray MVAPICH2 is only available on Cray") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.has_virtual_dependency("c"): env.set("MPICC", self["c"].cc) diff --git a/var/spack/repos/builtin/packages/cronie/package.py b/var/spack/repos/builtin/packages/cronie/package.py index 9003ac64bb9..541894b2378 100644 --- a/var/spack/repos/builtin/packages/cronie/package.py +++ b/var/spack/repos/builtin/packages/cronie/package.py @@ -24,5 +24,5 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./autogen.sh") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/crtm-fix/package.py b/var/spack/repos/builtin/packages/crtm-fix/package.py index 6a19bcc7b8f..95c517a60f1 100644 --- a/var/spack/repos/builtin/packages/crtm-fix/package.py +++ b/var/spack/repos/builtin/packages/crtm-fix/package.py @@ -88,5 +88,5 @@ def install(self, spec, prefix): for f in fix_files: install(f, self.prefix.fix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CRTM_FIX", self.prefix.fix) diff --git a/var/spack/repos/builtin/packages/cryptsetup/package.py b/var/spack/repos/builtin/packages/cryptsetup/package.py index 4652b9f394a..d7da4e81f59 100644 --- a/var/spack/repos/builtin/packages/cryptsetup/package.py +++ b/var/spack/repos/builtin/packages/cryptsetup/package.py @@ -58,10 +58,14 @@ def configure_args(self): ] return args - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Prepend the sbin directory to PATH.""" env.prepend_path("PATH", self.prefix.sbin) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Prepend the sbin directory to PATH.""" env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 71d016b6fbb..8588bf474d8 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -41,7 +41,9 @@ class Cub(Package): version("1.7.1", sha256="50b8777b83093fdfdab429a61fccdbfbbb991b3bbc08385118e5ad58e8f62e1d") version("1.4.1", sha256="7c3784cf59f02d4a88099d6a11e357032bac9eac2b9c78aaec947d1270e21871") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("CUB_DIR", self.prefix.include.cub.cmake) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index 3860a0f5eee..87929b4e14c 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -718,7 +718,7 @@ def determine_version(cls, exe): match = re.search(r"Cuda compilation tools, release .*?, V(\S+)", output) return match.group(1) if match else None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:8.0.61"): # Perl 5.26 removed current directory from module search path, # CUDA 9 has a fix for this, but CUDA 8 and lower don't. @@ -729,7 +729,9 @@ def setup_build_environment(self, env): env.set("LIBXML2HOME", libxml2_home) env.append_path("LD_LIBRARY_PATH", libxml2_home.lib) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if "cxx" in dependent_spec: env.set("CUDAHOSTCXX", dependent_spec["cxx"].package.cxx) env.set("CUDA_HOME", self.prefix) @@ -743,7 +745,7 @@ def cmake_prefix_paths(self): cmake_prefix_paths.append(cub_path) return cmake_prefix_paths - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CUDA_HOME", self.prefix) env.set("NVHPC_CUDA_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index 3b45c386ae4..b4049083426 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -424,7 +424,7 @@ def url_for_version(self, version): url = "https://developer.download.nvidia.com/compute/redist/cudnn/v{0}/cudnn-{1}-{2}-v{3}.tgz" return url.format(directory, cuda, sys_key, ver) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Package is not compiled, and does not work unless LD_LIBRARY_PATH is set env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/cupla/package.py b/var/spack/repos/builtin/packages/cupla/package.py index 07384bdf00a..43d0d1c86a9 100644 --- a/var/spack/repos/builtin/packages/cupla/package.py +++ b/var/spack/repos/builtin/packages/cupla/package.py @@ -32,12 +32,14 @@ def install(self, spec, prefix): install("Findcupla.cmake", self.prefix) install("cuplaConfig.cmake", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CUPLA_ROOT", self.prefix) env.prepend_path("CMAKE_PREFIX_PATH", self.prefix) env.set("CUPLA", self.prefix.share.cupla) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("CUPLA_ROOT", self.prefix) env.prepend_path("CMAKE_PREFIX_PATH", self.prefix) env.set("CUPLA", self.prefix.share.cupla) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index efd3e2ab1c4..9d3dd5f2d60 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -208,7 +208,9 @@ def flag_handler(self, name, flags): class BuildEnvironment: - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.satisfies("libs=static"): env.append_flags("CFLAGS", "-DCURL_STATICLIB") env.append_flags("CXXFLAGS", "-DCURL_STATICLIB") diff --git a/var/spack/repos/builtin/packages/cutlass/package.py b/var/spack/repos/builtin/packages/cutlass/package.py index 058041a39e9..0a59aaefc95 100644 --- a/var/spack/repos/builtin/packages/cutlass/package.py +++ b/var/spack/repos/builtin/packages/cutlass/package.py @@ -53,7 +53,7 @@ class Cutlass(CMakePackage, CudaPackage): "https://developer.nvidia.com/cuda-gpus", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CUDACXX", self.spec["cuda"].prefix.bin.nvcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/dalton/package.py b/var/spack/repos/builtin/packages/dalton/package.py index 82f83efc0a1..d853957cbc9 100644 --- a/var/spack/repos/builtin/packages/dalton/package.py +++ b/var/spack/repos/builtin/packages/dalton/package.py @@ -73,7 +73,7 @@ class Dalton(CMakePackage): " version or a different compiler suite.", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix.join("dalton")) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index 08267d42dbb..81a4a2cd3b5 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -156,7 +156,7 @@ def configure_args(self): return extra_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.variants["log_path"].value == "none": # set a default path for log file that can be overrode by user darshan_log_dir = os.environ["HOME"] diff --git a/var/spack/repos/builtin/packages/dataspaces/package.py b/var/spack/repos/builtin/packages/dataspaces/package.py index d891a640240..852881b96de 100644 --- a/var/spack/repos/builtin/packages/dataspaces/package.py +++ b/var/spack/repos/builtin/packages/dataspaces/package.py @@ -46,7 +46,7 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./autogen.sh") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+mpi"): env.set("CC", self.spec["mpi"].mpicc) env.set("FC", self.spec["mpi"].mpifc) diff --git a/var/spack/repos/builtin/packages/dbxtool/package.py b/var/spack/repos/builtin/packages/dbxtool/package.py index d9047005135..226b30a8dac 100644 --- a/var/spack/repos/builtin/packages/dbxtool/package.py +++ b/var/spack/repos/builtin/packages/dbxtool/package.py @@ -21,7 +21,7 @@ class Dbxtool(MakefilePackage): depends_on("efivar") depends_on("popt") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["efivar"].prefix.include.efivar) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/dd4hep/package.py b/var/spack/repos/builtin/packages/dd4hep/package.py index ab1845e4017..51386e589e7 100644 --- a/var/spack/repos/builtin/packages/dd4hep/package.py +++ b/var/spack/repos/builtin/packages/dd4hep/package.py @@ -216,7 +216,7 @@ def cmake_args(self): args.append(self.define("DD4HEP_BUILD_PACKAGES", " ".join(enabled_packages))) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # used p.ex. in ddsim to find DDDetectors dir env.set("DD4hepINSTALL", self.prefix) env.set("DD4HEP", self.prefix.examples) diff --git a/var/spack/repos/builtin/packages/ddt/package.py b/var/spack/repos/builtin/packages/ddt/package.py index b50215af135..3d39842bcc6 100644 --- a/var/spack/repos/builtin/packages/ddt/package.py +++ b/var/spack/repos/builtin/packages/ddt/package.py @@ -48,7 +48,7 @@ def url_for_version(self, version): else: return f"https://downloads.linaroforge.com/{version}/linaro-forge-{version}-linux-x86_64.tar" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(self.prefix, "bin")) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/dealii-parameter-gui/package.py b/var/spack/repos/builtin/packages/dealii-parameter-gui/package.py index c4cc40ec275..c418eb40c83 100644 --- a/var/spack/repos/builtin/packages/dealii-parameter-gui/package.py +++ b/var/spack/repos/builtin/packages/dealii-parameter-gui/package.py @@ -20,5 +20,5 @@ class DealiiParameterGui(CMakePackage): depends_on("qt") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PARAMETER_GUI_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index b266a8578e7..5e68acb860c 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -686,10 +686,10 @@ def cmake_args(self): return options - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DEAL_II_DIR", self.prefix) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+cuda") and spec.satisfies("+mpi"): env.set("CUDAHOSTCXX", spec["mpi"].mpicxx) diff --git a/var/spack/repos/builtin/packages/deconseq-standalone/package.py b/var/spack/repos/builtin/packages/deconseq-standalone/package.py index 5908dd7d41f..b616a8f6777 100644 --- a/var/spack/repos/builtin/packages/deconseq-standalone/package.py +++ b/var/spack/repos/builtin/packages/deconseq-standalone/package.py @@ -37,5 +37,5 @@ def install(self, spec, prefix): chmod("+x", join_path(prefix.bin, "deconseq.pl")) chmod("+x", join_path(prefix.bin, "splitFasta.pl")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PERL5LIB", self.prefix) diff --git a/var/spack/repos/builtin/packages/delphes/package.py b/var/spack/repos/builtin/packages/delphes/package.py index a6c53233d83..7cbfb52151f 100644 --- a/var/spack/repos/builtin/packages/delphes/package.py +++ b/var/spack/repos/builtin/packages/delphes/package.py @@ -56,7 +56,7 @@ def cmake_args(self): args.append(f"-DCMAKE_CXX_STANDARD={self.spec['root'].variants['cxxstd'].value}") return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # make the cards distributed with delphes more easily accessible env.set("DELPHES_DIR", self.prefix) env.set("DELPHES", self.prefix) diff --git a/var/spack/repos/builtin/packages/dialign/package.py b/var/spack/repos/builtin/packages/dialign/package.py index 3a2fb077355..477a58d03f1 100644 --- a/var/spack/repos/builtin/packages/dialign/package.py +++ b/var/spack/repos/builtin/packages/dialign/package.py @@ -27,5 +27,5 @@ def install(self, spec, prefix): mkdirp(prefix.share) install_tree("dialign2_dir", prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DIALIGN2_DIR", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/diffutils/package.py b/var/spack/repos/builtin/packages/diffutils/package.py index e258cae6ee2..efaca998923 100644 --- a/var/spack/repos/builtin/packages/diffutils/package.py +++ b/var/spack/repos/builtin/packages/diffutils/package.py @@ -41,7 +41,7 @@ class Diffutils(AutotoolsPackage, GNUMirrorPackage): depends_on("iconv") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%fj"): env.append_flags("CFLAGS", "-Qunused-arguments") diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py index e8a0ec8699d..2e5f4b0a936 100644 --- a/var/spack/repos/builtin/packages/dihydrogen/package.py +++ b/var/spack/repos/builtin/packages/dihydrogen/package.py @@ -348,7 +348,7 @@ def initconfig_package_entries(self): entries.extend(get_blas_entries(spec)) return entries - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+openmp %apple-clang"): env.append_flags("CPPFLAGS", self.compiler.openmp_flag) env.append_flags("CFLAGS", self.spec["llvm-openmp"].headers.include_flags) diff --git a/var/spack/repos/builtin/packages/dislin/package.py b/var/spack/repos/builtin/packages/dislin/package.py index 89765aa7d25..a8b964d6655 100644 --- a/var/spack/repos/builtin/packages/dislin/package.py +++ b/var/spack/repos/builtin/packages/dislin/package.py @@ -36,17 +36,19 @@ def libs(self): return find_libraries(libraries, root=self.prefix, shared=True, recursive=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DISLIN", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DISLIN", self.prefix) env.prepend_path("PATH", self.prefix) env.prepend_path("LD_LIBRARY_PATH", self.prefix) env.prepend_path("LD_LIBRARY_PATH", self.spec["motif"].prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.spec["mesa"].prefix.lib) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/distcc/package.py b/var/spack/repos/builtin/packages/distcc/package.py index 51b029cf4a4..9d937130b7c 100644 --- a/var/spack/repos/builtin/packages/distcc/package.py +++ b/var/spack/repos/builtin/packages/distcc/package.py @@ -27,5 +27,5 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./autogen.sh") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/dmd/package.py b/var/spack/repos/builtin/packages/dmd/package.py index 0702c760545..2aa1667b141 100644 --- a/var/spack/repos/builtin/packages/dmd/package.py +++ b/var/spack/repos/builtin/packages/dmd/package.py @@ -44,7 +44,7 @@ class Dmd(MakefilePackage): placement="tools", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.linux.bin64) env.prepend_path("LIBRARY_PATH", self.prefix.linux.lib64) env.prepend_path("LD_LIBRARY_PATH", self.prefix.linux.lib64) diff --git a/var/spack/repos/builtin/packages/docbook-xml/package.py b/var/spack/repos/builtin/packages/docbook-xml/package.py index 8a66805e3f9..7b7025c414e 100644 --- a/var/spack/repos/builtin/packages/docbook-xml/package.py +++ b/var/spack/repos/builtin/packages/docbook-xml/package.py @@ -379,10 +379,12 @@ def config_docbook(self): catalog, ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: catalog = self.catalog env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: catalog = self.catalog env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ") diff --git a/var/spack/repos/builtin/packages/docbook-xsl/package.py b/var/spack/repos/builtin/packages/docbook-xsl/package.py index 152145c8a4d..dd68dae5a07 100644 --- a/var/spack/repos/builtin/packages/docbook-xsl/package.py +++ b/var/spack/repos/builtin/packages/docbook-xsl/package.py @@ -67,10 +67,12 @@ def config_docbook(self): catalog, ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: catalog = self.catalog env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: catalog = self.catalog env.prepend_path("XML_CATALOG_FILES", catalog, separator=" ") diff --git a/var/spack/repos/builtin/packages/dock/package.py b/var/spack/repos/builtin/packages/dock/package.py index b41054c0110..302784b0dd3 100644 --- a/var/spack/repos/builtin/packages/dock/package.py +++ b/var/spack/repos/builtin/packages/dock/package.py @@ -27,7 +27,7 @@ class Dock(Package): depends_on("flex", type="build") depends_on("mpi", when="+mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+mpi"): env.set("MPICH_HOME", self.spec["mpi"].prefix) diff --git a/var/spack/repos/builtin/packages/dorado/package.py b/var/spack/repos/builtin/packages/dorado/package.py index 0ed5e4dfd78..c84978660b9 100644 --- a/var/spack/repos/builtin/packages/dorado/package.py +++ b/var/spack/repos/builtin/packages/dorado/package.py @@ -38,7 +38,7 @@ class Dorado(CMakePackage, CudaPackage): patch("cmake-htslib.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["libdeflate"].prefix.lib64) env.prepend_path("LIBRARY_PATH", self.spec["libdeflate"].prefix.lib64) diff --git a/var/spack/repos/builtin/packages/dosfstools/package.py b/var/spack/repos/builtin/packages/dosfstools/package.py index 1d3199abb6c..c77ec38e7ad 100644 --- a/var/spack/repos/builtin/packages/dosfstools/package.py +++ b/var/spack/repos/builtin/packages/dosfstools/package.py @@ -30,5 +30,5 @@ class Dosfstools(AutotoolsPackage): def autoreconf(self, spec, prefix): Executable("./autogen.sh")() - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py index deb974b5428..cadd2e9c38f 100644 --- a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py +++ b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py @@ -85,7 +85,7 @@ class DotnetCoreSdk(Package): variant("telemetry", default=False, description="allow collection of telemetry data") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("~telemetry"): env.set("DOTNET_CLI_TELEMETRY_OPTOUT", "1") diff --git a/var/spack/repos/builtin/packages/dray/package.py b/var/spack/repos/builtin/packages/dray/package.py index 6c0f1df457c..e15eb805df4 100644 --- a/var/spack/repos/builtin/packages/dray/package.py +++ b/var/spack/repos/builtin/packages/dray/package.py @@ -110,7 +110,7 @@ class Dray(Package, CudaPackage): depends_on("mfem~shared", when="~shared") depends_on("gmake", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CTEST_OUTPUT_ON_FAILURE", "1") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/dtf/package.py b/var/spack/repos/builtin/packages/dtf/package.py index 0f7e18090e1..a4ac0861bdd 100644 --- a/var/spack/repos/builtin/packages/dtf/package.py +++ b/var/spack/repos/builtin/packages/dtf/package.py @@ -36,7 +36,7 @@ class Dtf(AutotoolsPackage): configure_directory = "pnetcdf" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: dtf_srcdir = join_path(self.stage.source_path, "libdtf") env.append_path("LD_LIBRARY_PATH", self.prefix.lib) env.append_path("LD_LIBRARY_PATH", dtf_srcdir) diff --git a/var/spack/repos/builtin/packages/duckdb/package.py b/var/spack/repos/builtin/packages/duckdb/package.py index 9e86bf8f5f3..a96bbd8ad4e 100644 --- a/var/spack/repos/builtin/packages/duckdb/package.py +++ b/var/spack/repos/builtin/packages/duckdb/package.py @@ -104,7 +104,7 @@ class Duckdb(MakefilePackage): def duckdb_extension_prefix(self): return self.prefix.lib.duckdb - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: cmake_args = [] # Future use if self.spec.satisfies("+ninjabuild"): env.set("GEN", "ninja") diff --git a/var/spack/repos/builtin/packages/e2fsprogs/package.py b/var/spack/repos/builtin/packages/e2fsprogs/package.py index 81f7152d62a..db3c926bff0 100644 --- a/var/spack/repos/builtin/packages/e2fsprogs/package.py +++ b/var/spack/repos/builtin/packages/e2fsprogs/package.py @@ -45,7 +45,7 @@ class E2fsprogs(AutotoolsPackage): when="@:1.47.0 +fuse2fs", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/e3sm-scorpio/package.py b/var/spack/repos/builtin/packages/e3sm-scorpio/package.py index 58e3deec336..ca1d7bd6b9f 100644 --- a/var/spack/repos/builtin/packages/e3sm-scorpio/package.py +++ b/var/spack/repos/builtin/packages/e3sm-scorpio/package.py @@ -50,7 +50,7 @@ def cmake_args(self): return opts - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("NetCDF_C_PATH", self.spec["netcdf-c"].prefix) env.set("NetCDF_Fortran_PATH", self.spec["netcdf-fortran"].prefix) if self.spec.satisfies("+mpi"): diff --git a/var/spack/repos/builtin/packages/easi/package.py b/var/spack/repos/builtin/packages/easi/package.py index 34585b90d5e..a52f8e4a356 100644 --- a/var/spack/repos/builtin/packages/easi/package.py +++ b/var/spack/repos/builtin/packages/easi/package.py @@ -85,7 +85,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+python"): full_path = os.path.join(python_platlib, "easilib/cmake/easi/python_wrapper") env.prepend_path("PYTHONPATH", full_path) diff --git a/var/spack/repos/builtin/packages/ecflow/package.py b/var/spack/repos/builtin/packages/ecflow/package.py index 16bafe32dbf..0f47ce073d7 100644 --- a/var/spack/repos/builtin/packages/ecflow/package.py +++ b/var/spack/repos/builtin/packages/ecflow/package.py @@ -87,7 +87,7 @@ def patch(self): ) @when("+ssl ^openssl~shared") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LIBS", self.spec["zlib"].libs.search_flags) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/eckit/package.py b/var/spack/repos/builtin/packages/eckit/package.py index fa1e27f91b8..3e60b63dda5 100644 --- a/var/spack/repos/builtin/packages/eckit/package.py +++ b/var/spack/repos/builtin/packages/eckit/package.py @@ -183,7 +183,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Bug fix for macOS - cmake's find_package doesn't add "libtinfo.dylib" to the # ncurses libraries, but the ncurses pkgconfig explicitly sets it. We need to # add the correct spec['ncurses'].libs.ld_flags to LDFLAGS to compile eckit diff --git a/var/spack/repos/builtin/packages/edm4hep/package.py b/var/spack/repos/builtin/packages/edm4hep/package.py index e7cca567dd0..a672b1d760b 100644 --- a/var/spack/repos/builtin/packages/edm4hep/package.py +++ b/var/spack/repos/builtin/packages/edm4hep/package.py @@ -109,7 +109,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["edm4hep"].libs.directories[0]) if self.spec.satisfies("@:0.10.5"): env.prepend_path("PYTHONPATH", self.prefix.python) diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index f4e0dc00773..e2e7d6923d8 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -80,7 +80,7 @@ class Eigen(CMakePackage, ROCmPackage): # TODO: latex and doxygen needed to produce docs with make doc # TODO: Other dependencies might be needed to test this package - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.prefix.include.eigen3) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/eigenexa/package.py b/var/spack/repos/builtin/packages/eigenexa/package.py index f716c4c97e0..5a0aa4d06b8 100644 --- a/var/spack/repos/builtin/packages/eigenexa/package.py +++ b/var/spack/repos/builtin/packages/eigenexa/package.py @@ -44,7 +44,7 @@ def url_for_version(self, version): version, "tar.gz" if version >= Version("2.7") else ".tgz" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("FC", self.spec["mpi"].mpifc, force=True) env.set("F77", self.spec["mpi"].mpif77, force=True) env.set("CC", self.spec["mpi"].mpicc, force=True) diff --git a/var/spack/repos/builtin/packages/elmerfem/package.py b/var/spack/repos/builtin/packages/elmerfem/package.py index 2577c028410..d09a018031a 100644 --- a/var/spack/repos/builtin/packages/elmerfem/package.py +++ b/var/spack/repos/builtin/packages/elmerfem/package.py @@ -128,7 +128,7 @@ def patch(self): string=True, ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ELMER_HOME", self.prefix) env.set("ELMER_Fortran_COMPILER", self.compiler.fc) if self.spec.satisfies("+gui"): diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 5f7d4130e80..49c92f12609 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -126,7 +126,7 @@ def configure_args(self): return args @when("platform=darwin") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("^ncurses+termlib"): env.append_flags("LDFLAGS", "-ltinfo") diff --git a/var/spack/repos/builtin/packages/enzyme/package.py b/var/spack/repos/builtin/packages/enzyme/package.py index 1497da1a884..36a30fa33ce 100644 --- a/var/spack/repos/builtin/packages/enzyme/package.py +++ b/var/spack/repos/builtin/packages/enzyme/package.py @@ -61,7 +61,9 @@ def libs(self): return find_libraries(libs, root=self.prefix, recursive=True) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Get the LLVMEnzyme and ClangEnzyme lib paths llvm, clang = self.libs diff --git a/var/spack/repos/builtin/packages/epics-base/package.py b/var/spack/repos/builtin/packages/epics-base/package.py index 9e4f335d767..90b0d0c7b53 100644 --- a/var/spack/repos/builtin/packages/epics-base/package.py +++ b/var/spack/repos/builtin/packages/epics-base/package.py @@ -38,15 +38,17 @@ def get_epics_host_arch(self): perl = which("perl", required=True) return perl("%s/perl/EpicsHostArch.pl" % self.prefix.lib, output=str, error=str).strip() - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("EPICS_BASE", self.prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: epics_host_arch = self.get_epics_host_arch() env.set("EPICS_HOST_ARCH", epics_host_arch) env.set("EPICS_BASE", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: epics_host_arch = self.get_epics_host_arch() env.set("EPICS_HOST_ARCH", epics_host_arch) env.set("EPICS_BASE", self.prefix) diff --git a/var/spack/repos/builtin/packages/epics-ca-gateway/package.py b/var/spack/repos/builtin/packages/epics-ca-gateway/package.py index a79ea8a1877..90bd41f276b 100644 --- a/var/spack/repos/builtin/packages/epics-ca-gateway/package.py +++ b/var/spack/repos/builtin/packages/epics-ca-gateway/package.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.package import * @@ -34,5 +36,5 @@ def edit(self, spec, prefix): release_file.write("EPICS_BASE = " + env["EPICS_BASE"] + "\n") release_file.write("PCAS = " + spec["epics-pcas"].prefix) - def setup_run_environment(self, envmod): - envmod.prepend_path("PATH", join_path(self.prefix.bin, env["EPICS_HOST_ARCH"])) + def setup_run_environment(self, env: EnvironmentModifications) -> None: + env.prepend_path("PATH", join_path(self.prefix.bin, os.environ["EPICS_HOST_ARCH"])) diff --git a/var/spack/repos/builtin/packages/epics-pcas/package.py b/var/spack/repos/builtin/packages/epics-pcas/package.py index cb22d6256a1..fb32a8d0a65 100644 --- a/var/spack/repos/builtin/packages/epics-pcas/package.py +++ b/var/spack/repos/builtin/packages/epics-pcas/package.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.package import * @@ -30,5 +32,5 @@ def edit(self, spec, prefix): with open("configure/RELEASE.local", "w") as release_file: release_file.write("EPICS_BASE = " + env["EPICS_BASE"] + "\n") - def setup_run_environment(self, envmod): - envmod.prepend_path("PATH", join_path(self.prefix.bin, env["EPICS_HOST_ARCH"])) + def setup_run_environment(self, env: EnvironmentModifications) -> None: + env.prepend_path("PATH", join_path(self.prefix.bin, os.environ["EPICS_HOST_ARCH"])) diff --git a/var/spack/repos/builtin/packages/epics-snmp/package.py b/var/spack/repos/builtin/packages/epics-snmp/package.py index bdb9728beef..4b8605ac71c 100644 --- a/var/spack/repos/builtin/packages/epics-snmp/package.py +++ b/var/spack/repos/builtin/packages/epics-snmp/package.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.package import * @@ -32,5 +34,5 @@ def edit(self, spec, prefix): makefile = FileFilter("snmpApp/src/Makefile") makefile.filter("USR_CPPFLAGS", "USR_CPPFLAGS += `net-snmp-config --cflags`\nUSR_CPPFLAGS") - def setup_run_environment(self, envmod): - envmod.prepend_path("PATH", join_path(self.prefix.bin, env["EPICS_HOST_ARCH"])) + def setup_run_environment(self, env: EnvironmentModifications) -> None: + env.prepend_path("PATH", join_path(self.prefix.bin, os.environ["EPICS_HOST_ARCH"])) diff --git a/var/spack/repos/builtin/packages/eq-r/package.py b/var/spack/repos/builtin/packages/eq-r/package.py index 38ff94cd4de..da242c8f5f1 100644 --- a/var/spack/repos/builtin/packages/eq-r/package.py +++ b/var/spack/repos/builtin/packages/eq-r/package.py @@ -36,7 +36,7 @@ class EqR(AutotoolsPackage): configure_directory = "src" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("CC", spec["mpi"].mpicc) env.set("CXX", spec["mpi"].mpicxx) diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index e566f904f0c..f44c2a634d7 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -161,7 +161,7 @@ def patch(self): os.path.join("src/addon/esmpy/pyproject.toml"), ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ESMFMKFILE", os.path.join(self.prefix.lib, "esmf.mk")) @@ -193,7 +193,7 @@ def url_for_version(self, version): version.dotted ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # Installation instructions can be found at: # http://www.earthsystemmodeling.org/esmf_releases/last_built/ESMF_usrdoc/node9.html @@ -439,7 +439,9 @@ def post_install(self): def check(self): make("check", parallel=False) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("ESMFMKFILE", os.path.join(self.prefix.lib, "esmf.mk")) def install(self, pkg, spec, prefix): diff --git a/var/spack/repos/builtin/packages/esys-particle/package.py b/var/spack/repos/builtin/packages/esys-particle/package.py index 8f2bef156b5..e59be717425 100644 --- a/var/spack/repos/builtin/packages/esys-particle/package.py +++ b/var/spack/repos/builtin/packages/esys-particle/package.py @@ -33,7 +33,7 @@ def patch(self): for file in files: filter_file("PYTHON_LIBRARIES", "Python_LIBRARIES", file, string=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: pylibpath = join_path( self.prefix.lib, "python{0}".format(self.spec["python"].version.up_to(2)) ) diff --git a/var/spack/repos/builtin/packages/etcd/package.py b/var/spack/repos/builtin/packages/etcd/package.py index b9ba3503377..6db0ccfb616 100644 --- a/var/spack/repos/builtin/packages/etcd/package.py +++ b/var/spack/repos/builtin/packages/etcd/package.py @@ -22,7 +22,7 @@ class Etcd(Package): depends_on("go@1.19:") depends_on("gmake", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Point GOPATH at the top of the staging dir for the build step. env.prepend_path("GOPATH", self.stage.path) diff --git a/var/spack/repos/builtin/packages/evtgen/package.py b/var/spack/repos/builtin/packages/evtgen/package.py index 736b4230390..515aa3358a1 100644 --- a/var/spack/repos/builtin/packages/evtgen/package.py +++ b/var/spack/repos/builtin/packages/evtgen/package.py @@ -84,5 +84,5 @@ def patch(self): filter_file("-shared", "-dynamiclib -undefined dynamic_lookup", "make.inc") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("EVTGEN", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/exawind/package.py b/var/spack/repos/builtin/packages/exawind/package.py index 2a9040bd13f..213209bfb6a 100644 --- a/var/spack/repos/builtin/packages/exawind/package.py +++ b/var/spack/repos/builtin/packages/exawind/package.py @@ -122,7 +122,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-DUSE_STK_SIMD_NONE") if self.spec.satisfies("+rocm+amr_wind_gpu~nalu_wind_gpu"): # Manually turn off device self.defines to solve Kokkos issues in Nalu-Wind headers diff --git a/var/spack/repos/builtin/packages/exciting/package.py b/var/spack/repos/builtin/packages/exciting/package.py index c9d9f4e8d94..522b34a5d8d 100644 --- a/var/spack/repos/builtin/packages/exciting/package.py +++ b/var/spack/repos/builtin/packages/exciting/package.py @@ -147,7 +147,7 @@ def install(self, spec, prefix): install_tree("species", prefix.species) install_tree("tools", prefix.tools) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("WNHOME", self.prefix) env.set("EXCITINGROOT", self.prefix) env.set("EXCITINGBIN", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py index 4cc3aeeacf5..d09fb90b619 100644 --- a/var/spack/repos/builtin/packages/exodusii/package.py +++ b/var/spack/repos/builtin/packages/exodusii/package.py @@ -138,7 +138,7 @@ class Exodusii(CMakePackage): depends_on("python@3.0:") conflicts("+shared", when="platform=windows") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/express/package.py b/var/spack/repos/builtin/packages/express/package.py index 099f1d54863..82301bab13e 100644 --- a/var/spack/repos/builtin/packages/express/package.py +++ b/var/spack/repos/builtin/packages/express/package.py @@ -52,5 +52,5 @@ def patch(self): "%s" % self.spec["bamtools"].libs, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["bamtools"].prefix.include.bamtools) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index 11f151b6364..74d2c1b93a2 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -210,10 +210,12 @@ def install(self, spec, prefix): else: make("install", parallel=False) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # set EXTRAE_HOME in the module file env.set("EXTRAE_HOME", self.prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # set EXTRAE_HOME for everyone using the Extrae package env.set("EXTRAE_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/eztrace/package.py b/var/spack/repos/builtin/packages/eztrace/package.py index 0b4bf1a72b4..905838aaf6f 100644 --- a/var/spack/repos/builtin/packages/eztrace/package.py +++ b/var/spack/repos/builtin/packages/eztrace/package.py @@ -105,7 +105,7 @@ def cmake_args(self): class AutotoolsBuilder(autotools.AutotoolsBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LDFLAGS", "--linkfortran") def autoreconf(self, pkg, spec, prefix): diff --git a/var/spack/repos/builtin/packages/f77-zmq/package.py b/var/spack/repos/builtin/packages/f77-zmq/package.py index 52e93bdb609..09a3377b93f 100644 --- a/var/spack/repos/builtin/packages/f77-zmq/package.py +++ b/var/spack/repos/builtin/packages/f77-zmq/package.py @@ -27,7 +27,7 @@ class F77Zmq(MakefilePackage): depends_on("python@3:", type="build", when="@:4.3.1") depends_on("python", type="build", when="@4.3.2:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CFLAGS", "-O3") env.append_flags("CFLAGS", "-g") diff --git a/var/spack/repos/builtin/packages/faiss/package.py b/var/spack/repos/builtin/packages/faiss/package.py index 1a207719d59..21b4f38b207 100644 --- a/var/spack/repos/builtin/packages/faiss/package.py +++ b/var/spack/repos/builtin/packages/faiss/package.py @@ -80,7 +80,7 @@ class Faiss(AutotoolsPackage, CMakePackage, CudaPackage): # https://github.com/facebookresearch/faiss/issues/2300 patch("fixes-in-v1.7.2.patch", when="@1.7.2") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+python"): env.prepend_path("PYTHONPATH", python_platlib) if self.spec.satisfies("platform=darwin"): diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 247772cd545..db3bc654c0f 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -182,10 +182,10 @@ def cmake_args(self): ] # set environment for bulding python interface - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DOLFIN_DIR", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DOLFIN_DIR", self.prefix) # build python interface of dolfin diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 620470b5ad8..f09897ee550 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -187,7 +187,7 @@ def install(self, spec, prefix): mkdir(self.prefix.fer_dsets) install_tree("fer_dsets", self.prefix.fer_dsets) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FER_DIR", self.prefix) env.set( "FER_GO", " ".join([".", self.prefix.go, self.prefix.examples, self.prefix.contrib]) diff --git a/var/spack/repos/builtin/packages/ffb/package.py b/var/spack/repos/builtin/packages/ffb/package.py index 37d633b3065..c747abd8d39 100644 --- a/var/spack/repos/builtin/packages/ffb/package.py +++ b/var/spack/repos/builtin/packages/ffb/package.py @@ -171,5 +171,5 @@ def install(self, spec, prefix): install_tree("bin", prefix.bin) install_tree("macro", prefix.macro) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix.macro) diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py index 46faed21a7b..99d83961d9a 100644 --- a/var/spack/repos/builtin/packages/ffmpeg/package.py +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -180,7 +180,7 @@ def headers(self): return headers @when("@:6.0 %apple-clang@15:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:3"): env.append_flags("CFLAGS", "-Wno-error=incompatible-function-pointer-types") diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index e2f2d12180a..70d5c874914 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -86,7 +86,7 @@ def selected_precisions(self): """Precisions that have been selected in this build""" return self.spec.variants["precision"].value - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+openmp %apple-clang"): env.append_flags("CPPFLAGS", self.compiler.openmp_flag) env.append_flags("CFLAGS", self.spec["llvm-openmp"].headers.include_flags) diff --git a/var/spack/repos/builtin/packages/fftx/package.py b/var/spack/repos/builtin/packages/fftx/package.py index 4477a965284..cecf2f21626 100644 --- a/var/spack/repos/builtin/packages/fftx/package.py +++ b/var/spack/repos/builtin/packages/fftx/package.py @@ -81,11 +81,15 @@ def install(self, spec, prefix): if os.path.isdir(dir): install_tree("cache_jit_files", prefix.cache_jit_files) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("FFTX_HOME", self.prefix) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("FFTX_HOME", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("FFTX_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/fgsl/package.py b/var/spack/repos/builtin/packages/fgsl/package.py index fedebc94acb..84bfef13a15 100644 --- a/var/spack/repos/builtin/packages/fgsl/package.py +++ b/var/spack/repos/builtin/packages/fgsl/package.py @@ -47,6 +47,6 @@ class Fgsl(AutotoolsPackage): def create_m4_dir(self): mkdir("m4") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.compiler.name == "gcc": env.append_flags("FCFLAGS", "-ffree-line-length-none") diff --git a/var/spack/repos/builtin/packages/fides/package.py b/var/spack/repos/builtin/packages/fides/package.py index 62aefff58ee..e8bfacb2e60 100644 --- a/var/spack/repos/builtin/packages/fides/package.py +++ b/var/spack/repos/builtin/packages/fides/package.py @@ -39,7 +39,7 @@ class Fides(CMakePackage): # Fix missing implicit includes @when("%gcc@7:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-include limits -include numeric") def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/findutils/package.py b/var/spack/repos/builtin/packages/findutils/package.py index d0ea0026df2..aa4d5f53a1c 100644 --- a/var/spack/repos/builtin/packages/findutils/package.py +++ b/var/spack/repos/builtin/packages/findutils/package.py @@ -74,9 +74,9 @@ def url_for_version(self, version): # Taken from here to build 4.8.0 with apple-clang: # https://github.com/Homebrew/homebrew-core/blob/master/Formula/findutils.rb - def setup_build_environment(self, spack_env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@4.8.0 %apple-clang"): - spack_env.set("CFLAGS", "-D__nonnull\\(params\\)=") + env.set("CFLAGS", "-D__nonnull\\(params\\)=") @classmethod def determine_version(cls, exe): diff --git a/var/spack/repos/builtin/packages/flamemaster/package.py b/var/spack/repos/builtin/packages/flamemaster/package.py index 7bdb3fc69a7..b5062cf4c70 100644 --- a/var/spack/repos/builtin/packages/flamemaster/package.py +++ b/var/spack/repos/builtin/packages/flamemaster/package.py @@ -138,7 +138,7 @@ class Flamemaster(CMakePackage): root_cmakelists_dir = "Repository" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LAPACK_HOME", self.spec["lapack"].prefix) env.set("BLIS_HOME", self.spec["blas"].prefix) diff --git a/var/spack/repos/builtin/packages/flecsph/package.py b/var/spack/repos/builtin/packages/flecsph/package.py index e220bb50083..3267124e42c 100644 --- a/var/spack/repos/builtin/packages/flecsph/package.py +++ b/var/spack/repos/builtin/packages/flecsph/package.py @@ -32,7 +32,7 @@ class Flecsph(CMakePackage): depends_on("googletest", type="test") depends_on("pkgconfig", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5_ROOT", self.spec["hdf5"].prefix) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/fleur/package.py b/var/spack/repos/builtin/packages/fleur/package.py index f70e1fe7309..789c356a249 100644 --- a/var/spack/repos/builtin/packages/fleur/package.py +++ b/var/spack/repos/builtin/packages/fleur/package.py @@ -75,7 +75,7 @@ class Fleur(Package): conflicts("@:4.0", when="+spfft", msg="SpFFT is supported from Fleur v4.0") conflicts("@:4.0", when="+external_libxc", msg="External libxc is supported from Fleur v4.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+mpi"): diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py index c96d323131e..043c9f7626e 100644 --- a/var/spack/repos/builtin/packages/flux-core/package.py +++ b/var/spack/repos/builtin/packages/flux-core/package.py @@ -188,11 +188,11 @@ def lua_share_dir(self): def lua_lib_dir(self): return os.path.join("lib", "lua", str(self.lua_version)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Ensure ./fluxometer.lua can be found during flux's make check env.append_path("LUA_PATH", "./?.lua", separator=";") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # If this package is external, we expect the external provider to set things # like LUA paths. So, we early return. If the package is not external, # properly set these environment variables to make sure the user environment diff --git a/var/spack/repos/builtin/packages/flux-pmix/package.py b/var/spack/repos/builtin/packages/flux-pmix/package.py index f1b50972af6..f4e74baa0e7 100644 --- a/var/spack/repos/builtin/packages/flux-pmix/package.py +++ b/var/spack/repos/builtin/packages/flux-pmix/package.py @@ -55,7 +55,7 @@ def add_pluginpath(self): with open(rcfile, "w") as fp: fp.write('plugin.load("' + pluginpath + '")') - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.prepend_path("FLUX_SHELL_RC_PATH", join_path(self.prefix.etc, "flux/shell/lua.d")) if spec.satisfies("@0.3.0:"): diff --git a/var/spack/repos/builtin/packages/flux-sched/package.py b/var/spack/repos/builtin/packages/flux-sched/package.py index fd3e8ce6a59..252bec90c36 100644 --- a/var/spack/repos/builtin/packages/flux-sched/package.py +++ b/var/spack/repos/builtin/packages/flux-sched/package.py @@ -182,7 +182,7 @@ def lua_share_dir(self): def lua_lib_dir(self): return os.path.join("lib", "lua", str(self.lua_version)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # If this package is external, we expect the external provider to set # things like LUA paths. So, we early return. If the package is not # external, properly set these environment variables to make sure the diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index d64dc78969b..62a203319f3 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -115,7 +115,7 @@ class FoamExtend(Package): # - End of definitions / setup - # - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Add environment variables to the generated module file. These environment variables come from running: @@ -155,10 +155,10 @@ def setup_run_environment(self, env): "FOAM_RUN", "(FOAM|WM)_.*USER_.*", ], - whitelist=[ # Whitelist these - "MPI_ARCH_PATH", # Can be needed for compilation + whitelist=[ + "MPI_ARCH_PATH", "PYTHON_BIN_DIR", - ], + ], # Whitelist these # Can be needed for compilation ) env.extend(mods) @@ -176,7 +176,9 @@ def setup_run_environment(self, env): for d in ["wmake", self.archbin]: # bin added automatically env.prepend_path("PATH", join_path(self.projectdir, d)) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Location of the OpenFOAM project. This is identical to the WM_PROJECT_DIR value, but we avoid that variable since it would mask the normal OpenFOAM cleanup of diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py index 7fb9a8d6a60..f9a1d438ec4 100644 --- a/var/spack/repos/builtin/packages/font-util/package.py +++ b/var/spack/repos/builtin/packages/font-util/package.py @@ -237,7 +237,7 @@ class FontUtil(AutotoolsPackage, XorgPackage): multi=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.bin) env.prepend_path("PKG_CONFIG_PATH", self.prefix.lib.pkgconfig) diff --git a/var/spack/repos/builtin/packages/fpm/package.py b/var/spack/repos/builtin/packages/fpm/package.py index e9f3b25c598..991eada138f 100644 --- a/var/spack/repos/builtin/packages/fpm/package.py +++ b/var/spack/repos/builtin/packages/fpm/package.py @@ -43,7 +43,7 @@ class Fpm(Package): depends_on("c", type="build") depends_on("fortran", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@0.4.0"): env.set("FPM_C_COMPILER", self.compiler.cc) diff --git a/var/spack/repos/builtin/packages/fpocket/package.py b/var/spack/repos/builtin/packages/fpocket/package.py index 64fd59fb380..a7f94016bbd 100644 --- a/var/spack/repos/builtin/packages/fpocket/package.py +++ b/var/spack/repos/builtin/packages/fpocket/package.py @@ -28,7 +28,7 @@ class Fpocket(MakefilePackage): class MakefileBuilder(makefile.MakefileBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.pkg.compiler.name == "gcc": env.set("CXX", "g++") diff --git a/var/spack/repos/builtin/packages/freebayes/package.py b/var/spack/repos/builtin/packages/freebayes/package.py index 3ce21fee896..dc3f4c0ef0a 100644 --- a/var/spack/repos/builtin/packages/freebayes/package.py +++ b/var/spack/repos/builtin/packages/freebayes/package.py @@ -75,7 +75,7 @@ def vcflib_builddir(self): return join_path(self.build_directory, "vcflib") @when("@1.3.4:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.run_tests: env.prepend_path("PATH", self.vcflib_builddir) env.prepend_path("PATH", self.build_directory) diff --git a/var/spack/repos/builtin/packages/freesurfer/package.py b/var/spack/repos/builtin/packages/freesurfer/package.py index 1d9be48082a..12fe0a43f0d 100644 --- a/var/spack/repos/builtin/packages/freesurfer/package.py +++ b/var/spack/repos/builtin/packages/freesurfer/package.py @@ -38,7 +38,7 @@ def url_for_version(self, version): version, version ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: source_file = join_path(self.prefix, "SetUpFreeSurfer.sh") env.prepend_path("PATH", self.prefix.bin) env.set("FREESURFER_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/fsl/package.py b/var/spack/repos/builtin/packages/fsl/package.py index a9183efe3ab..c1f4d04bc88 100644 --- a/var/spack/repos/builtin/packages/fsl/package.py +++ b/var/spack/repos/builtin/packages/fsl/package.py @@ -189,7 +189,7 @@ def postinstall(self): script = Executable(join_path(prefix, "etc", "fslconf", "post_install.sh")) script("-f", prefix) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if not self.stage.source_path: self.stage.fetch() self.stage.expand_archive() @@ -202,7 +202,7 @@ def setup_build_environment(self, env): if os.path.isfile(fslsetup): env.extend(EnvironmentModifications.from_sourcing_file(fslsetup)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Set the environment variables after copying tree env.set("FSLDIR", self.prefix) fslsetup = join_path(self.prefix, "etc", "fslconf", "fsl.sh") diff --git a/var/spack/repos/builtin/packages/fstrack/package.py b/var/spack/repos/builtin/packages/fstrack/package.py index e326c69c561..fed6d437276 100644 --- a/var/spack/repos/builtin/packages/fstrack/package.py +++ b/var/spack/repos/builtin/packages/fstrack/package.py @@ -30,7 +30,7 @@ class Fstrack(MakefilePackage): parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Compilers env.set("F90", spack_fc) diff --git a/var/spack/repos/builtin/packages/fujitsu-mpi/package.py b/var/spack/repos/builtin/packages/fujitsu-mpi/package.py index a4b39b110fe..c22a9784fb5 100644 --- a/var/spack/repos/builtin/packages/fujitsu-mpi/package.py +++ b/var/spack/repos/builtin/packages/fujitsu-mpi/package.py @@ -54,7 +54,9 @@ def setup_dependent_package(self, module, dependent_spec): self.spec.mpif77 = self.prefix.bin.mpifrt self.spec.mpifc = self.prefix.bin.mpifrt - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Use the spack compiler wrappers under MPI dependent_module = dependent_spec.package.module env.set("OMPI_CC", dependent_module.spack_cc) @@ -70,7 +72,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set("MPI_CXX_COMPILER", self.prefix.bin.mpiFCC) env.set("MPI_Fortran_COMPILER", self.prefix.bin.mpifrt) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Because MPI are both compilers and runtimes, we set up the compilers # as part of run environment if self.spec.satisfies("%gcc"): diff --git a/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py b/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py index be72a3814ff..1dd60250b2f 100644 --- a/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py +++ b/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py @@ -122,7 +122,9 @@ def scalapack_libs(self): return libs - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: path = self.prefix.include env.append_flags("fcc_ENV", "-idirafter " + path) env.append_flags("FCC_ENV", "-idirafter " + path) diff --git a/var/spack/repos/builtin/packages/fzf/package.py b/var/spack/repos/builtin/packages/fzf/package.py index 0dc8883f500..c17b99d0652 100644 --- a/var/spack/repos/builtin/packages/fzf/package.py +++ b/var/spack/repos/builtin/packages/fzf/package.py @@ -63,7 +63,7 @@ def url_for_version(self, version): base = "refs/tags/v" if self.spec.satisfies("@:0.53.0") else "" return f"https://github.com/junegunn/fzf/archive/{base}{version}.tar.gz" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set up the build environment for fzf.""" # Setup build env from GoPackage builder super().setup_build_environment(env) diff --git a/var/spack/repos/builtin/packages/g2/package.py b/var/spack/repos/builtin/packages/g2/package.py index 19cdb3c4d97..fe06beb25b8 100644 --- a/var/spack/repos/builtin/packages/g2/package.py +++ b/var/spack/repos/builtin/packages/g2/package.py @@ -95,7 +95,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: precisions = ( self.spec.variants["precision"].value if self.spec.satisfies("@3.4.6:") else ("4", "d") ) diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index dd139104d8a..ff3b01f80c8 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -78,7 +78,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:1.6"): shared = False else: diff --git a/var/spack/repos/builtin/packages/g4abla/package.py b/var/spack/repos/builtin/packages/g4abla/package.py index d831848d85e..0ec4604b6e7 100644 --- a/var/spack/repos/builtin/packages/g4abla/package.py +++ b/var/spack/repos/builtin/packages/g4abla/package.py @@ -26,7 +26,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ABLADATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4channeling/package.py b/var/spack/repos/builtin/packages/g4channeling/package.py index a579faa130a..4943130d2cc 100644 --- a/var/spack/repos/builtin/packages/g4channeling/package.py +++ b/var/spack/repos/builtin/packages/g4channeling/package.py @@ -24,7 +24,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4CHANNELINGDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py index 19b35718376..59d25630264 100644 --- a/var/spack/repos/builtin/packages/g4emlow/package.py +++ b/var/spack/repos/builtin/packages/g4emlow/package.py @@ -38,7 +38,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4ensdfstate/package.py b/var/spack/repos/builtin/packages/g4ensdfstate/package.py index 3c73c8d9885..f42d5ac044b 100644 --- a/var/spack/repos/builtin/packages/g4ensdfstate/package.py +++ b/var/spack/repos/builtin/packages/g4ensdfstate/package.py @@ -28,7 +28,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ENSDFSTATEDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4incl/package.py b/var/spack/repos/builtin/packages/g4incl/package.py index 75a5f2e3e79..46ef09c61bb 100644 --- a/var/spack/repos/builtin/packages/g4incl/package.py +++ b/var/spack/repos/builtin/packages/g4incl/package.py @@ -27,7 +27,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4INCLDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4ndl/package.py b/var/spack/repos/builtin/packages/g4ndl/package.py index 4c0559dfac0..8943aba1949 100644 --- a/var/spack/repos/builtin/packages/g4ndl/package.py +++ b/var/spack/repos/builtin/packages/g4ndl/package.py @@ -27,7 +27,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONHPDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4neutronxs/package.py b/var/spack/repos/builtin/packages/g4neutronxs/package.py index 90d89cab670..2ba675286a0 100644 --- a/var/spack/repos/builtin/packages/g4neutronxs/package.py +++ b/var/spack/repos/builtin/packages/g4neutronxs/package.py @@ -26,7 +26,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONXSDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4nudexlib/package.py b/var/spack/repos/builtin/packages/g4nudexlib/package.py index eb48a6a4480..0a7ca8be5e3 100644 --- a/var/spack/repos/builtin/packages/g4nudexlib/package.py +++ b/var/spack/repos/builtin/packages/g4nudexlib/package.py @@ -25,7 +25,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NUDEXLIBDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4particlexs/package.py b/var/spack/repos/builtin/packages/g4particlexs/package.py index 87ee6336a42..76ed7c2c5fc 100644 --- a/var/spack/repos/builtin/packages/g4particlexs/package.py +++ b/var/spack/repos/builtin/packages/g4particlexs/package.py @@ -30,7 +30,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEXSDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4photonevaporation/package.py b/var/spack/repos/builtin/packages/g4photonevaporation/package.py index 095721d5603..22af6b877b6 100644 --- a/var/spack/repos/builtin/packages/g4photonevaporation/package.py +++ b/var/spack/repos/builtin/packages/g4photonevaporation/package.py @@ -30,7 +30,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEVELGAMMADATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4pii/package.py b/var/spack/repos/builtin/packages/g4pii/package.py index ebffa8730da..981d3ea0d04 100644 --- a/var/spack/repos/builtin/packages/g4pii/package.py +++ b/var/spack/repos/builtin/packages/g4pii/package.py @@ -24,7 +24,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PIIDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py index 3281e9a9e5f..748cbf54394 100644 --- a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py +++ b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py @@ -30,7 +30,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4RADIOACTIVEDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4realsurface/package.py b/var/spack/repos/builtin/packages/g4realsurface/package.py index c5b47f786cf..6308dd21162 100644 --- a/var/spack/repos/builtin/packages/g4realsurface/package.py +++ b/var/spack/repos/builtin/packages/g4realsurface/package.py @@ -27,7 +27,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4REALSURFACEDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4saiddata/package.py b/var/spack/repos/builtin/packages/g4saiddata/package.py index cd8455027a3..829e3745095 100644 --- a/var/spack/repos/builtin/packages/g4saiddata/package.py +++ b/var/spack/repos/builtin/packages/g4saiddata/package.py @@ -25,7 +25,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4SAIDXSDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4tendl/package.py b/var/spack/repos/builtin/packages/g4tendl/package.py index b7116fb716d..14c76adf4f2 100644 --- a/var/spack/repos/builtin/packages/g4tendl/package.py +++ b/var/spack/repos/builtin/packages/g4tendl/package.py @@ -26,7 +26,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEHPDATA", install_path) diff --git a/var/spack/repos/builtin/packages/g4urrpt/package.py b/var/spack/repos/builtin/packages/g4urrpt/package.py index 7f73868932f..dae5236fb7f 100644 --- a/var/spack/repos/builtin/packages/g4urrpt/package.py +++ b/var/spack/repos/builtin/packages/g4urrpt/package.py @@ -26,7 +26,9 @@ def install(self, spec, prefix): 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4URRPTDATA", install_path) diff --git a/var/spack/repos/builtin/packages/gadap/package.py b/var/spack/repos/builtin/packages/gadap/package.py index 59961c668ff..bb50836fa95 100644 --- a/var/spack/repos/builtin/packages/gadap/package.py +++ b/var/spack/repos/builtin/packages/gadap/package.py @@ -26,6 +26,6 @@ class Gadap(AutotoolsPackage): # libdap uses namespacing in recent versions, so we need to patch this source patch("cxx-updates.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CFLAGS", "-fPIC") env.set("CXXFLAGS", "-fPIC") diff --git a/var/spack/repos/builtin/packages/gams/package.py b/var/spack/repos/builtin/packages/gams/package.py index fc7b444f946..931615d8417 100644 --- a/var/spack/repos/builtin/packages/gams/package.py +++ b/var/spack/repos/builtin/packages/gams/package.py @@ -20,7 +20,7 @@ class Gams(Package): def url_for_version(self, version): return "file://{0}/linux_x64_64_sfx.exe".format(os.getcwd()) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "PATH", join_path(self.prefix, "gams{0}_linux_x64_64_sfx".format(self.version)) ) diff --git a/var/spack/repos/builtin/packages/garcon/package.py b/var/spack/repos/builtin/packages/garcon/package.py index a18839ddec4..12131969462 100644 --- a/var/spack/repos/builtin/packages/garcon/package.py +++ b/var/spack/repos/builtin/packages/garcon/package.py @@ -45,6 +45,8 @@ def configure_args(self): args += self.enable_or_disable("introspection") return args - def setup_dependent_build_environment(self, env, dep_spec): - if self.spec.satisfies("+introspection") and dep_spec.satisfies("+introspection"): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + if self.spec.satisfies("+introspection") and dependent_spec.satisfies("+introspection"): env.append_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/garfieldpp/package.py b/var/spack/repos/builtin/packages/garfieldpp/package.py index cd4adc763f9..9248a9165bf 100644 --- a/var/spack/repos/builtin/packages/garfieldpp/package.py +++ b/var/spack/repos/builtin/packages/garfieldpp/package.py @@ -44,7 +44,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GARFIELD_INSTALL", self.prefix) env.set("HEED_DATABASE", self.prefix.share.Heed.database) @@ -56,6 +56,8 @@ def setup_run_environment(self, env): env.prepend_path("LD_LIBRARY_PATH", self.spec["root"].prefix.lib.root) env.prepend_path("LD_LIBRARY_PATH", self.spec["gsl"].prefix.lib.root) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("GARFIELD_INSTALL", self.prefix) env.set("HEED_DATABASE", self.prefix.share.Heed.database) diff --git a/var/spack/repos/builtin/packages/gate/package.py b/var/spack/repos/builtin/packages/gate/package.py index 4bfa2ee5bae..4e005728d3a 100644 --- a/var/spack/repos/builtin/packages/gate/package.py +++ b/var/spack/repos/builtin/packages/gate/package.py @@ -61,11 +61,11 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: gc_default_platform = self.spec.variants["default_platform"].value env.set("GC_DEFAULT_PLATFORM", gc_default_platform) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GC_GATE_EXE_DIR", self.prefix.bin) env.set( "GC_CONDOR_SCRIPT", join_path(self.prefix, "share", "jobsplitter", "condor.script") diff --git a/var/spack/repos/builtin/packages/gatk/package.py b/var/spack/repos/builtin/packages/gatk/package.py index fb2c1b0a59b..ae2e0e98f9c 100644 --- a/var/spack/repos/builtin/packages/gatk/package.py +++ b/var/spack/repos/builtin/packages/gatk/package.py @@ -101,5 +101,5 @@ def install(self, spec, prefix): **kwargs, ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("GATK", join_path(self.prefix.bin, "GenomeAnalysisTK.jar")) diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index 6f634f84c04..dd35ff2c949 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -181,7 +181,7 @@ def cmake_args(self): args.append(self.define("GAUDI_CXX_STANDARD", "20")) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # environment as in Gaudi.xenv env.prepend_path("PATH", self.prefix.scripts) env.prepend_path("PYTHONPATH", self.prefix.python) diff --git a/var/spack/repos/builtin/packages/gaussian-view/package.py b/var/spack/repos/builtin/packages/gaussian-view/package.py index dc66ef07799..d0d89f51de9 100644 --- a/var/spack/repos/builtin/packages/gaussian-view/package.py +++ b/var/spack/repos/builtin/packages/gaussian-view/package.py @@ -95,7 +95,7 @@ def caveats(self): ) @when("@:6.0") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GV_DIR", self.prefix) env.set("GV_LIB_PATH", self.prefix.lib) @@ -106,7 +106,7 @@ def setup_run_environment(self, env): env.prepend_path("QT_PLUGIN_PATH", self.prefix.plugins) @when("@6.1:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GV_DIR", self.prefix) # the wrappers in gv/exec setup everything just nicely diff --git a/var/spack/repos/builtin/packages/gaussian/package.py b/var/spack/repos/builtin/packages/gaussian/package.py index 07528f9899a..cf9766f81bb 100644 --- a/var/spack/repos/builtin/packages/gaussian/package.py +++ b/var/spack/repos/builtin/packages/gaussian/package.py @@ -52,7 +52,7 @@ def bsd_install(self): bsd_install = Executable(join_path("bsd", "install")) bsd_install() - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("g" + self.ver + "root", self.prefix) env.prepend_path("GAUSS_EXEDIR", self.g_root) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index c0229346aa4..d89bd936ddf 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -1047,14 +1047,14 @@ def write_specs_file(self): set_install_permissions(specs_file) tty.info(f"Wrote new spec file to {specs_file}") - def setup_run_environment(self, env): - if self.spec.satisfies("languages=c"): + def setup_run_environment(self, env: EnvironmentModifications) -> None: + if self.cc and self.spec.satisfies("languages=c"): env.set("CC", self.cc) - if self.spec.satisfies("languages=c++"): + if self.cxx and self.spec.satisfies("languages=c++"): env.set("CXX", self.cxx) - if self.spec.satisfies("languages=fortran"): + if self.fortran and self.spec.satisfies("languages=fortran"): env.set("FC", self.fortran) env.set("F77", self.fortran) diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 344d6a9f4d0..9ee2f3b399d 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -512,7 +512,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): def determine_version(cls, exe): return Executable(exe)("--version", output=str, error=str).rstrip() - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+java"): class_paths = find(self.prefix, "*.jar") classpath = os.pathsep.join(class_paths) @@ -639,7 +639,7 @@ def cmake_args(self): class AutotoolsBuilder(AutotoolsBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Needed to install Python bindings to GDAL installation # prefix instead of Python installation prefix. # See swig/python/GNUmakefile for more details. diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index aaf25a0d57f..b4edd503a87 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -69,11 +69,13 @@ def url_for_version(self, version): url = "https://download.gnome.org/sources/gdk-pixbuf/{0}/gdk-pixbuf-{1}.tar.xz" return url.format(version.up_to(2), version) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: 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_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) @@ -83,7 +85,7 @@ def meson_args(self): args.append(f"-Dtests={'true' if self.run_tests else 'false'}") return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # The "post-install.sh" script uses gdk-pixbuf-query-loaders, # which was installed earlier. env.prepend_path("PATH", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/gdrcopy/package.py b/var/spack/repos/builtin/packages/gdrcopy/package.py index 285ab7b3194..2daad61116d 100644 --- a/var/spack/repos/builtin/packages/gdrcopy/package.py +++ b/var/spack/repos/builtin/packages/gdrcopy/package.py @@ -40,7 +40,7 @@ class Gdrcopy(MakefilePackage, CudaPackage): depends_on("check") requires("+cuda") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CUDA", self.spec["cuda"].prefix) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/geant3/package.py b/var/spack/repos/builtin/packages/geant3/package.py index b4558e7228c..7c9cca3e14d 100644 --- a/var/spack/repos/builtin/packages/geant3/package.py +++ b/var/spack/repos/builtin/packages/geant3/package.py @@ -41,6 +41,6 @@ def cmake_args(self): args.append(self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd")) return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("platform=darwin"): env.unset("MACOSX_DEPLOYMENT_TARGET") diff --git a/var/spack/repos/builtin/packages/geant4-vmc/package.py b/var/spack/repos/builtin/packages/geant4-vmc/package.py index 65ed2d67a8c..0c5e9a0e80d 100644 --- a/var/spack/repos/builtin/packages/geant4-vmc/package.py +++ b/var/spack/repos/builtin/packages/geant4-vmc/package.py @@ -40,6 +40,6 @@ class Geant4Vmc(CMakePackage): depends_on("geant4") depends_on("vmc") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("platform=darwin"): env.unset("MACOSX_DEPLOYMENT_TARGET") diff --git a/var/spack/repos/builtin/packages/gegl/package.py b/var/spack/repos/builtin/packages/gegl/package.py index d9a479ae38e..9de8ec59c28 100644 --- a/var/spack/repos/builtin/packages/gegl/package.py +++ b/var/spack/repos/builtin/packages/gegl/package.py @@ -37,10 +37,14 @@ class Gegl(MesonPackage): depends_on("gobject-introspection") depends_on("json-glib") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: 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_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/genemark-et/package.py b/var/spack/repos/builtin/packages/genemark-et/package.py index 658c69e8a53..f6580939b5d 100644 --- a/var/spack/repos/builtin/packages/genemark-et/package.py +++ b/var/spack/repos/builtin/packages/genemark-et/package.py @@ -63,5 +63,5 @@ def filter_sbang(self): files = glob.iglob("*.pl") filter_file(pattern, repl, *files, backup=False) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/generate-ninja/package.py b/var/spack/repos/builtin/packages/generate-ninja/package.py index cad66cf067b..02b0b5a0320 100644 --- a/var/spack/repos/builtin/packages/generate-ninja/package.py +++ b/var/spack/repos/builtin/packages/generate-ninja/package.py @@ -29,7 +29,7 @@ class GenerateNinja(Package): depends_on("python", type="build") depends_on("llvm+clang", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DEPLOY", "1") env.set("CC", self.spec["llvm"].home.bin.clang) env.set("CXX", self.spec["llvm"].home.bin.join("clang++")) diff --git a/var/spack/repos/builtin/packages/genesis/package.py b/var/spack/repos/builtin/packages/genesis/package.py index 233093cb5eb..8fb16392484 100644 --- a/var/spack/repos/builtin/packages/genesis/package.py +++ b/var/spack/repos/builtin/packages/genesis/package.py @@ -92,7 +92,7 @@ def configure_args(self): options.append("--host=Fugaku") return options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("FC", self.spec["mpi"].mpifc, force=True) env.set("F77", self.spec["mpi"].mpif77, force=True) env.set("CC", self.spec["mpi"].mpicc, force=True) diff --git a/var/spack/repos/builtin/packages/genie/package.py b/var/spack/repos/builtin/packages/genie/package.py index a49736dee66..53b4d177d9b 100644 --- a/var/spack/repos/builtin/packages/genie/package.py +++ b/var/spack/repos/builtin/packages/genie/package.py @@ -92,10 +92,10 @@ def url_for_version(self, version): else: return url.format(version.underscored) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GENIE", self.stage.source_path) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GENIE", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/genometools/package.py b/var/spack/repos/builtin/packages/genometools/package.py index 8bc86886774..26c1e28df1c 100644 --- a/var/spack/repos/builtin/packages/genometools/package.py +++ b/var/spack/repos/builtin/packages/genometools/package.py @@ -34,5 +34,7 @@ class Genometools(MakefilePackage): def install(self, spec, prefix): make("install", f"prefix={prefix}") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("CPATH", self.prefix.include.genometools) diff --git a/var/spack/repos/builtin/packages/geopm-runtime/package.py b/var/spack/repos/builtin/packages/geopm-runtime/package.py index 20dd20dd6ea..4560864af01 100644 --- a/var/spack/repos/builtin/packages/geopm-runtime/package.py +++ b/var/spack/repos/builtin/packages/geopm-runtime/package.py @@ -152,7 +152,7 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Required to ensure libgeopm.so # can be used with LD_PRELOAD if os.path.isdir(self.prefix.lib64): diff --git a/var/spack/repos/builtin/packages/geopm-service/package.py b/var/spack/repos/builtin/packages/geopm-service/package.py index 6b0057d52e5..3c7f33259f9 100644 --- a/var/spack/repos/builtin/packages/geopm-service/package.py +++ b/var/spack/repos/builtin/packages/geopm-service/package.py @@ -153,7 +153,7 @@ def configure_args(self): args.append("--disable-cpuid") return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Required to ensure geopmdpy can load # libgeopmd.so.2 via CFFI if os.path.isdir(self.prefix.lib64): diff --git a/var/spack/repos/builtin/packages/getorganelle/package.py b/var/spack/repos/builtin/packages/getorganelle/package.py index 242874f4c5c..4a125a156d4 100644 --- a/var/spack/repos/builtin/packages/getorganelle/package.py +++ b/var/spack/repos/builtin/packages/getorganelle/package.py @@ -30,6 +30,6 @@ class Getorganelle(PythonPackage): # Allow access to relevant runtime scripts # I.e. get_organelle_config.py, get_organelle_from_reads.py, etc. - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix) env.prepend_path("PATH", prefix.Utilities) diff --git a/var/spack/repos/builtin/packages/gfsio/package.py b/var/spack/repos/builtin/packages/gfsio/package.py index 47a061fb85a..87bf6a03773 100644 --- a/var/spack/repos/builtin/packages/gfsio/package.py +++ b/var/spack/repos/builtin/packages/gfsio/package.py @@ -31,7 +31,7 @@ def cmake_args(self): args = [self.define("ENABLE_TESTS", self.run_tests)] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: lib = find_libraries("libgfsio", root=self.prefix, shared=False, recursive=True) # Only one library version, but still need to set _4 to make NCO happy for suffix in ("4", ""): diff --git a/var/spack/repos/builtin/packages/ginkgo/package.py b/var/spack/repos/builtin/packages/ginkgo/package.py index 4fe0cf239cf..401ae2549a6 100644 --- a/var/spack/repos/builtin/packages/ginkgo/package.py +++ b/var/spack/repos/builtin/packages/ginkgo/package.py @@ -132,7 +132,7 @@ class Ginkgo(CMakePackage, CudaPackage, ROCmPackage): when="+rocm @1.8.0", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+sycl"): env.set("MKLROOT", join_path(spec["intel-oneapi-mkl"].prefix, "mkl", "latest")) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index cebb08a14b0..5a43e4e330a 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -195,7 +195,7 @@ def determine_variants(cls, exes, version_str): def patch(self): filter_file(r"^EXTLIBS =$", "#EXTLIBS =", "Makefile") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # We use EXTLIBS rather than LDFLAGS so that git's Makefile # inserts the information into the proper place in the link commands # (alongside the # other libraries/paths that configure discovers). @@ -325,7 +325,7 @@ def install_subtree(self): make(" ".join(install_args)) install("git-subtree", self.prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Setup run environment if using SVN extension # Libs from perl-alien-svn and apr-util are required in # LD_LIBRARY_PATH diff --git a/var/spack/repos/builtin/packages/glibc/package.py b/var/spack/repos/builtin/packages/glibc/package.py index 46d851c5d5f..5863cd96183 100644 --- a/var/spack/repos/builtin/packages/glibc/package.py +++ b/var/spack/repos/builtin/packages/glibc/package.py @@ -113,7 +113,7 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage): conflicts("musl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:2.21"): env.append_flags("LDFLAGS", "-no-pie") if self.spec.satisfies("@:2.16"): diff --git a/var/spack/repos/builtin/packages/gluegen/package.py b/var/spack/repos/builtin/packages/gluegen/package.py index d2503edf8b5..52c373ceead 100644 --- a/var/spack/repos/builtin/packages/gluegen/package.py +++ b/var/spack/repos/builtin/packages/gluegen/package.py @@ -65,17 +65,19 @@ def install(self, spec, prefix): install_tree("make", prefix.make) filter_file("..", prefix, join_path(prefix.make, "build.xml"), string=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "CLASSPATH", join_path(self.stage.source_path, "ant-optional", "optional-1.5.4.jar") ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: class_paths = find(prefix.build, "*.jar") classpath = os.pathsep.join(class_paths) env.prepend_path("CLASSPATH", classpath) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: class_paths = find(prefix.build, "*.jar") classpath = os.pathsep.join(class_paths) env.prepend_path("CLASSPATH", classpath) diff --git a/var/spack/repos/builtin/packages/gmap-gsnap/package.py b/var/spack/repos/builtin/packages/gmap-gsnap/package.py index 07c5a40c85b..e725bb9206f 100644 --- a/var/spack/repos/builtin/packages/gmap-gsnap/package.py +++ b/var/spack/repos/builtin/packages/gmap-gsnap/package.py @@ -102,5 +102,5 @@ def install(self, spec, prefix): with working_dir(simd): make("install") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PERL", self.spec["perl"].prefix.bin.perl) diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index a1b4dce28f0..7f2392c5746 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -195,5 +195,5 @@ def cmake_args(self): return options - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/gnuradio/package.py b/var/spack/repos/builtin/packages/gnuradio/package.py index 1f48d7cf892..d7eb86e39f0 100644 --- a/var/spack/repos/builtin/packages/gnuradio/package.py +++ b/var/spack/repos/builtin/packages/gnuradio/package.py @@ -68,14 +68,18 @@ class Gnuradio(CMakePackage): def cmake_args(self): return ["-DENABLE_INTERNAL_VOLK=OFF"] - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 26fb32edacb..731345287ac 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -90,7 +90,7 @@ def url_for_version(self, version): url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v{0}/gnutls-{1}.tar.xz" return url.format(version.up_to(2), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+guile"): env.set("GUILE", self.spec["guile"].prefix.bin.guile) diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index a59ff36ecf7..c729d3825e6 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -116,7 +116,9 @@ def url_for_version(self, version): def install(self, spec, prefix): install_tree(".", prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set GOROOT_BOOTSTRAP: When using an external compiler, get its GOROOT env""" if self.spec.external: # Use the go compiler added by ``spack external find go-bootstrap``: diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 6c3e3203342..d4cd1e4c99c 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -101,12 +101,12 @@ def determine_version(cls, exe): match = re.search(r"go version go(\S+)", output) return match.group(1) if match else None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # We need to set CC/CXX_FOR_TARGET, otherwise cgo will use the # internal Spack wrappers and fail. env.set("CC_FOR_TARGET", self["c"].cc) env.set("CXX_FOR_TARGET", self["cxx"].cxx) - env.set("GOMAXPROCS", make_jobs) + env.set("GOMAXPROCS", str(make_jobs)) def build(self, spec, prefix): # Build script depend on bash diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index a8ed96afa9f..7e75b3a7e03 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -115,21 +115,25 @@ def url_for_version(self, version): url = "https://download.gnome.org/sources/gobject-introspection/{0}/gobject-introspection-{1}.tar.xz" return url.format(version.up_to(2), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # 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): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/google-cloud-cli/package.py b/var/spack/repos/builtin/packages/google-cloud-cli/package.py index c4284a34716..e3551369401 100644 --- a/var/spack/repos/builtin/packages/google-cloud-cli/package.py +++ b/var/spack/repos/builtin/packages/google-cloud-cli/package.py @@ -77,13 +77,13 @@ class GoogleCloudCli(Package): def url_for_version(self, version): return f"https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-{version}-{self.system}-{self.machine}.{self.ext}" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://cloud.google.com/sdk/gcloud/reference/topic/startup env.set("CLOUDSDK_PYTHON", self.spec["python"].command.path) # ~70 dependencies with no hints as to what versions are supported, just use bundled deps env.set("CLOUDSDK_PYTHON_SITEPACKAGES", "0") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_build_environment(env) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/gpgme/package.py b/var/spack/repos/builtin/packages/gpgme/package.py index 7c32fe2b86e..8ebe0b86f33 100644 --- a/var/spack/repos/builtin/packages/gpgme/package.py +++ b/var/spack/repos/builtin/packages/gpgme/package.py @@ -42,7 +42,7 @@ def configure_args(self): """Fix the build when incompatible Qt libraries are installed on the host""" return ["--enable-languages=cpp"] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Build tests create a public keyring in ~/.gnupg if $HOME is not redirected""" if self.run_tests: env.set("HOME", self.build_directory) diff --git a/var/spack/repos/builtin/packages/gptune/package.py b/var/spack/repos/builtin/packages/gptune/package.py index 17d584ee9e5..c0671e6a58a 100644 --- a/var/spack/repos/builtin/packages/gptune/package.py +++ b/var/spack/repos/builtin/packages/gptune/package.py @@ -195,7 +195,7 @@ def cache_test_sources(self): cp = which("cp") cp(script_path, join_path(python_platlib, "gptune")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GPTUNE_INSTALL_PATH", python_platlib) cmd = {"bash": which("bash"), "cp": which("cp"), "git": which("git"), "rm": which("rm")} diff --git a/var/spack/repos/builtin/packages/grace/package.py b/var/spack/repos/builtin/packages/grace/package.py index 97434a28326..8907575f539 100644 --- a/var/spack/repos/builtin/packages/grace/package.py +++ b/var/spack/repos/builtin/packages/grace/package.py @@ -63,7 +63,7 @@ def configure_args(self): args.append("--enable-netcdf") return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Grace installs a subfolder in the prefix directory # so we account for that... env.prepend_path("PATH", self.prefix.grace.bin) diff --git a/var/spack/repos/builtin/packages/grads/package.py b/var/spack/repos/builtin/packages/grads/package.py index 2e9a077a933..6c2353b0eec 100644 --- a/var/spack/repos/builtin/packages/grads/package.py +++ b/var/spack/repos/builtin/packages/grads/package.py @@ -83,7 +83,7 @@ def flag_handler(self, name, flags): return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SUPPLIBS", "/") # Recent versions configure scripts break without PKG_CONFIG set @@ -92,7 +92,7 @@ def setup_build_environment(self, env): if "+hdf4" in self.spec and "~shared" in self.spec["hdf"]: env.set("LIBS", self.spec["hdf:transitive"].libs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GADDIR", self.prefix.data) @run_after("install") diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 8813ec798c9..a5ace891c51 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -159,7 +159,7 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./autogen.sh", "NOCONFIG") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Set MACOSX_DEPLOYMENT_TARGET to 10.x due to old configure super().setup_build_environment(env) diff --git a/var/spack/repos/builtin/packages/gridlab-d/package.py b/var/spack/repos/builtin/packages/gridlab-d/package.py index eed224b21f4..a030caf9eae 100644 --- a/var/spack/repos/builtin/packages/gridlab-d/package.py +++ b/var/spack/repos/builtin/packages/gridlab-d/package.py @@ -52,7 +52,7 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Need to add GLPATH otherwise Gridlab-D will not run. env.set("GLPATH", join_path(self.prefix, "lib", "gridlabd")) env.prepend_path("GLPATH", join_path(self.prefix, "share", "gridlabd")) diff --git a/var/spack/repos/builtin/packages/grnboost/package.py b/var/spack/repos/builtin/packages/grnboost/package.py index 3d3e4edd07d..5fec1640d55 100644 --- a/var/spack/repos/builtin/packages/grnboost/package.py +++ b/var/spack/repos/builtin/packages/grnboost/package.py @@ -29,7 +29,7 @@ class Grnboost(Package): depends_on("xgboost", type="run") depends_on("spark+hadoop", type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: grnboost_jar = join_path(self.prefix, "target", "scala-2.11", "GRNBoost.jar") xgboost_version = self.spec["xgboost"].version.string xgboost_jar = join_path( diff --git a/var/spack/repos/builtin/packages/groff/package.py b/var/spack/repos/builtin/packages/groff/package.py index 16972d917c5..297eee85379 100644 --- a/var/spack/repos/builtin/packages/groff/package.py +++ b/var/spack/repos/builtin/packages/groff/package.py @@ -89,7 +89,7 @@ def configure_args(self): args.append("--without-libiconv-prefix") return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+x"): dir = join_path(self.prefix.lib, "X11", "app-defaults") env.prepend_path("XFILESEARCHPATH", dir) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 42c7daa067e..3a4f44c2491 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -625,7 +625,7 @@ def patch(self): r"-gencode;arch=compute_20,code=sm_21;?", "", "cmake/gmxManageNvccConfig.cmake" ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cufftmp"): env.append_path( "LD_LIBRARY_PATH", @@ -952,7 +952,7 @@ def cmake_args(self): options.append("-DGMX_VERSION_STRING_OF_FORK=spack") return options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cufftmp"): env.append_path( "LD_LIBRARY_PATH", diff --git a/var/spack/repos/builtin/packages/gsettings-desktop-schemas/package.py b/var/spack/repos/builtin/packages/gsettings-desktop-schemas/package.py index 776aded4177..f46e66bcec4 100644 --- a/var/spack/repos/builtin/packages/gsettings-desktop-schemas/package.py +++ b/var/spack/repos/builtin/packages/gsettings-desktop-schemas/package.py @@ -25,14 +25,18 @@ class GsettingsDesktopSchemas(MesonPackage): depends_on("gettext", type="build") depends_on("pkgconfig", type="build") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py index 1b745936dd8..b92aa764d06 100644 --- a/var/spack/repos/builtin/packages/gsl/package.py +++ b/var/spack/repos/builtin/packages/gsl/package.py @@ -71,7 +71,7 @@ def configure_args(self): return configure_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # cmake looks for GSL_ROOT_DIR to find GSL so this helps pick the spack one # when there are multiple installations (e.g. a system one and a spack one) env.set("GSL_ROOT_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/gsoap/package.py b/var/spack/repos/builtin/packages/gsoap/package.py index 3521945c316..0b8ce7cb9c1 100644 --- a/var/spack/repos/builtin/packages/gsoap/package.py +++ b/var/spack/repos/builtin/packages/gsoap/package.py @@ -55,8 +55,10 @@ class Gsoap(AutotoolsPackage, SourceforgePackage): def configure_args(self): return ["--enable-ipv6"] - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): - spack_env.prepend_path("PKG_CONFIG_PATH", "%s/lib/ldconfig" % self.prefix) + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + env.prepend_path("PKG_CONFIG_PATH", "%s/lib/ldconfig" % self.prefix) def flag_handler(self, name, flags): if name in ["cflags", "cxxflags", "cppflags"]: diff --git a/var/spack/repos/builtin/packages/gtk-doc/package.py b/var/spack/repos/builtin/packages/gtk-doc/package.py index 190fe77853f..b0fb47ed3b7 100644 --- a/var/spack/repos/builtin/packages/gtk-doc/package.py +++ b/var/spack/repos/builtin/packages/gtk-doc/package.py @@ -49,7 +49,7 @@ class GtkDoc(AutotoolsPackage): patch("build.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """If test/tools.sh does not find gtkdocize it starts a sh which blocks""" env.prepend_path("PATH", join_path(self.stage.source_path, "buildsystems", "autotools")) diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 6c537dd55e3..9b951c46b23 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -107,17 +107,21 @@ def patch(self): if self.spec.satisfies("@3.24:%gcc@11:"): filter_file(" '-Werror=array-bounds',", "", "meson.build", string=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: 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_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) class BuildEnvironment: - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/gtksourceview/package.py b/var/spack/repos/builtin/packages/gtksourceview/package.py index 2fa15260c05..517ccf17362 100644 --- a/var/spack/repos/builtin/packages/gtksourceview/package.py +++ b/var/spack/repos/builtin/packages/gtksourceview/package.py @@ -47,16 +47,20 @@ def url_for_version(self, version): url += "{0}/gtksourceview-{1}.tar.xz" return url.format(version.up_to(2), version) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) # TODO: If https://github.com/spack/spack/pull/12344 is merged, this diff --git a/var/spack/repos/builtin/packages/guidance/package.py b/var/spack/repos/builtin/packages/guidance/package.py index 11f30b84652..e6e8722690a 100644 --- a/var/spack/repos/builtin/packages/guidance/package.py +++ b/var/spack/repos/builtin/packages/guidance/package.py @@ -42,5 +42,5 @@ def install(self, spac, prefix): with working_dir(join_path("www", "Guidance")): # copy without suffix install("guidance.pl", join_path(prefix.bin.www.Guidance, "guidance")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix.bin.www.Guidance) diff --git a/var/spack/repos/builtin/packages/gurobi/package.py b/var/spack/repos/builtin/packages/gurobi/package.py index aa6c46e936c..353bb42e750 100644 --- a/var/spack/repos/builtin/packages/gurobi/package.py +++ b/var/spack/repos/builtin/packages/gurobi/package.py @@ -50,7 +50,7 @@ def patch(self): gurobi_shell = join_path("linux64", "bin", "gurobi.sh") filter_file(r":\$PYTHONPATH", "", gurobi_shell) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("GUROBI_HOME", self.prefix) env.set("GRB_LICENSE_FILE", join_path(self.prefix, "gurobi.lic")) env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/h5bench/package.py b/var/spack/repos/builtin/packages/h5bench/package.py index a1f6f41860f..c086c7c5dab 100644 --- a/var/spack/repos/builtin/packages/h5bench/package.py +++ b/var/spack/repos/builtin/packages/h5bench/package.py @@ -51,7 +51,7 @@ class H5bench(CMakePackage): depends_on("parallel-netcdf", when="+e3sm") depends_on("parallel-netcdf", when="+all") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5_HOME", self.spec["hdf5"].prefix) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/hal/package.py b/var/spack/repos/builtin/packages/hal/package.py index c5a71dc0fb0..5c849f05e1c 100644 --- a/var/spack/repos/builtin/packages/hal/package.py +++ b/var/spack/repos/builtin/packages/hal/package.py @@ -42,7 +42,7 @@ def patch(self): r"^include \$\{sonLibRootDir\}/include\.mk", "# include ${sonLibRootDir}/include.mk" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("sonLibRootDir", self.spec["sonlib"].prefix) def install(self, spec, prefix): @@ -102,5 +102,5 @@ def install(self, spec, prefix): # The hal directory is a python library so we set the path # to be the installation root - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 22f28373c5e..e11df8f692a 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -125,10 +125,12 @@ def flag_handler(self, name, flags): flags.append("-std=gnu99") return None, None, flags - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: 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_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) @@ -138,7 +140,9 @@ def patch(self): class SetupEnvironment: - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/hc/package.py b/var/spack/repos/builtin/packages/hc/package.py index a77595ff77b..d02a4709d6b 100644 --- a/var/spack/repos/builtin/packages/hc/package.py +++ b/var/spack/repos/builtin/packages/hc/package.py @@ -26,7 +26,7 @@ class Hc(MakefilePackage): # /usr/bin/ld: cannot find -lggrd parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GMTHOME", self.spec["gmt"].prefix) env.set("NETCDFHOME", self.spec["netcdf-c"].prefix) env.set("HC_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/hdf-eos2/package.py b/var/spack/repos/builtin/packages/hdf-eos2/package.py index 22c52796959..40de73c4727 100644 --- a/var/spack/repos/builtin/packages/hdf-eos2/package.py +++ b/var/spack/repos/builtin/packages/hdf-eos2/package.py @@ -129,7 +129,7 @@ def flag_handler(self, name, flags): return flags, None, None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Add flags to LDFLAGS for any dependencies that need it extra_ldflags = [] # hdf might have link dependency on rpc, if so need to add flags diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 66d817817d4..10c2a348c30 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -201,14 +201,18 @@ def check_install(self, spec): raise RuntimeError("HDF5 Blosc plugin check failed") shutil.rmtree(checkdir) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.append_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.append_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) diff --git a/var/spack/repos/builtin/packages/hdf5-vfd-gds/package.py b/var/spack/repos/builtin/packages/hdf5-vfd-gds/package.py index 79579fbb106..e892f03eff1 100644 --- a/var/spack/repos/builtin/packages/hdf5-vfd-gds/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vfd-gds/package.py @@ -38,5 +38,5 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) diff --git a/var/spack/repos/builtin/packages/hdf5-vol-async/package.py b/var/spack/repos/builtin/packages/hdf5-vol-async/package.py index ca319f8228e..bc25b6f9ba0 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-async/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-async/package.py @@ -41,7 +41,7 @@ class Hdf5VolAsync(CMakePackage): depends_on("openmpi +thread_multiple", when="^[virtuals=mpi] openmpi@:2") depends_on("mvapich2 threads=multiple", when="^[virtuals=mpi] mvapich2") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) env.set("MPICH_MAX_THREAD_SAFETY", "multiple") 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 d741663b238..b8f724aa8a6 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py @@ -30,7 +30,7 @@ def flag_handler(self, name, flags): flags.append("-Wno-error=incompatible-function-pointer-types") return (flags, None, None) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py b/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py index 3a5d7f03286..be8ea50bdb6 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py @@ -41,7 +41,7 @@ def cmake_args(self): return cmake_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib) def check(self): diff --git a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py index 6fff746f084..a32a433af44 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py @@ -28,7 +28,7 @@ class Hdf5VolLog(AutotoolsPackage): depends_on("libtool", type="build") depends_on("m4", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index cca72214e6a..ed206beced0 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -507,10 +507,10 @@ def is_enabled(text): return results @when("@:1.8.21,1.10.0:1.10.5+szip") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SZIP_INSTALL", self.spec["szip"].prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # According to related github posts and problems running test_install # as a stand-alone test, it appears the lib path must be added to # LD_LIBRARY_PATH. diff --git a/var/spack/repos/builtin/packages/hdfview/package.py b/var/spack/repos/builtin/packages/hdfview/package.py index 4b824014576..3441594b4a8 100644 --- a/var/spack/repos/builtin/packages/hdfview/package.py +++ b/var/spack/repos/builtin/packages/hdfview/package.py @@ -51,7 +51,7 @@ def install(self, spec, prefix): chmod("+x", self.prefix.bin.hdfview) install_tree(path, prefix) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5LIBS", self.spec["hdf5"].prefix) env.set("HDFLIBS", self.spec["hdf"].prefix) env.set("ANT_HOME", self.spec["ant"].prefix) diff --git a/var/spack/repos/builtin/packages/heasoft/package.py b/var/spack/repos/builtin/packages/heasoft/package.py index 08f9198d126..706b6a8611f 100644 --- a/var/spack/repos/builtin/packages/heasoft/package.py +++ b/var/spack/repos/builtin/packages/heasoft/package.py @@ -138,7 +138,7 @@ def generate_environment(self): headas_setup = Executable(headas_setup_file) headas_setup("sh") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: try: env.extend( EnvironmentModifications.from_sourcing_file( diff --git a/var/spack/repos/builtin/packages/heimdall/package.py b/var/spack/repos/builtin/packages/heimdall/package.py index 7b76a16d20b..fd35934e972 100644 --- a/var/spack/repos/builtin/packages/heimdall/package.py +++ b/var/spack/repos/builtin/packages/heimdall/package.py @@ -32,7 +32,7 @@ class Heimdall(AutotoolsPackage, CudaPackage): depends_on(f"psrdada cuda_arch={arch}", when=f"cuda_arch={arch}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec["psrdada"].prefix.bin) env.prepend_path("PATH", self.prefix.bin) env.prepend_path("LD_LIBRARY_PATH", self.spec["dedisp"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/helics/package.py b/var/spack/repos/builtin/packages/helics/package.py index 85c891f3e4e..38361683385 100644 --- a/var/spack/repos/builtin/packages/helics/package.py +++ b/var/spack/repos/builtin/packages/helics/package.py @@ -197,7 +197,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+python"): env.prepend_path("PYTHONPATH", self.prefix.python) diff --git a/var/spack/repos/builtin/packages/hepmcanalysis/package.py b/var/spack/repos/builtin/packages/hepmcanalysis/package.py index 9a6314303ea..769cb54ffda 100644 --- a/var/spack/repos/builtin/packages/hepmcanalysis/package.py +++ b/var/spack/repos/builtin/packages/hepmcanalysis/package.py @@ -34,7 +34,7 @@ def patch(self): "config.mk", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HepMCdir", self.spec["hepmc"].prefix) env.set("FastJetdir", self.spec["fastjet"].prefix) env.set("CLHEPdir", self.spec["clhep"].prefix) diff --git a/var/spack/repos/builtin/packages/hermes/package.py b/var/spack/repos/builtin/packages/hermes/package.py index 49fdb7d65a5..bf0fce1b2c7 100644 --- a/var/spack/repos/builtin/packages/hermes/package.py +++ b/var/spack/repos/builtin/packages/hermes/package.py @@ -84,19 +84,19 @@ def cmake_args(self): args.append(self.define("HERMES_ENABLE_PYTHON", "ON")) return args - def set_include(self, env, path): + def set_include(self, env: EnvironmentModifications, path: str): 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): + def set_lib(self, env: EnvironmentModifications, path: str): 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): + def set_flags(self, env: EnvironmentModifications, path: str): self.set_include(env, "{}/include".format(self.prefix)) self.set_include(env, "{}/include".format(self.prefix)) self.set_lib(env, "{}/lib".format(self.prefix)) @@ -104,8 +104,10 @@ def set_flags(self, env): 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): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + self.set_flags(env) + + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.set_flags(env) diff --git a/var/spack/repos/builtin/packages/herwig3/package.py b/var/spack/repos/builtin/packages/herwig3/package.py index 684b76cb948..ab409becfa9 100644 --- a/var/spack/repos/builtin/packages/herwig3/package.py +++ b/var/spack/repos/builtin/packages/herwig3/package.py @@ -91,7 +91,7 @@ def flag_handler(self, name, flags): return (flags, None, None) return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: thepeg_home = self.spec["thepeg"].prefix env.prepend_path("LD_LIBRARY_PATH", thepeg_home.lib.ThePEG) env.set("HERWIGINCLUDE", "-I" + self.prefix.include) diff --git a/var/spack/repos/builtin/packages/herwigpp/package.py b/var/spack/repos/builtin/packages/herwigpp/package.py index f81b417802f..5591939fcdf 100644 --- a/var/spack/repos/builtin/packages/herwigpp/package.py +++ b/var/spack/repos/builtin/packages/herwigpp/package.py @@ -33,7 +33,7 @@ class Herwigpp(AutotoolsPackage): depends_on("fastjet") depends_on("thepeg@1.9.2", when="@2.7.1") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["thepeg"].prefix.lib.ThePEG) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/hicolor-icon-theme/package.py b/var/spack/repos/builtin/packages/hicolor-icon-theme/package.py index f119eff1901..ff100a76f6f 100644 --- a/var/spack/repos/builtin/packages/hicolor-icon-theme/package.py +++ b/var/spack/repos/builtin/packages/hicolor-icon-theme/package.py @@ -17,14 +17,18 @@ class HicolorIconTheme(AutotoolsPackage): version("0.17", sha256="317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/hicops/package.py b/var/spack/repos/builtin/packages/hicops/package.py index 7f45ddcb3a8..95dd1d9cada 100644 --- a/var/spack/repos/builtin/packages/hicops/package.py +++ b/var/spack/repos/builtin/packages/hicops/package.py @@ -109,7 +109,7 @@ class Hicops(CMakePackage): conflicts("+mpip -timemory") conflicts("+mpip -mpi") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.tools) env.prepend_path("PATH", self.prefix.bin.tools) env.set("HICOPS_INSTALL", self.prefix) diff --git a/var/spack/repos/builtin/packages/hip-tensor/package.py b/var/spack/repos/builtin/packages/hip-tensor/package.py index 8a25a8d5f7b..2b479d37c40 100644 --- a/var/spack/repos/builtin/packages/hip-tensor/package.py +++ b/var/spack/repos/builtin/packages/hip-tensor/package.py @@ -69,7 +69,7 @@ class HipTensor(CMakePackage, ROCmPackage): ]: depends_on(f"hipcc@{ver}", when=f"@{ver}") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@6.1"): env.set("CXX", self.spec["hipcc"].prefix.bin.hipcc) else: diff --git a/var/spack/repos/builtin/packages/hip-tests/package.py b/var/spack/repos/builtin/packages/hip-tests/package.py index 4d7ba5d2f56..d794b07a412 100644 --- a/var/spack/repos/builtin/packages/hip-tests/package.py +++ b/var/spack/repos/builtin/packages/hip-tests/package.py @@ -83,7 +83,7 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index b44122f56ed..03b7e9f30de 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -532,13 +532,15 @@ def set_variables(self, env): # This is picked up by CMake when using HIP as a CMake language. env.append_path("HIPFLAGS", f"--gcc-toolchain={self.compiler.prefix}", separator=" ") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: self.set_variables(env) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.set_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.set_variables(env) if "amdgpu_target" in dependent_spec.variants: @@ -546,7 +548,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): if "none" not in arch and "auto" not in arch: env.set("HCC_AMDGPU_TARGET", ",".join(arch.value)) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_dependent_build_environment(env, dependent_spec) def setup_dependent_package(self, module, dependent_spec): diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index 2cb24b08d61..b8c38fa6497 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -147,7 +147,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/hipblaslt/package.py b/var/spack/repos/builtin/packages/hipblaslt/package.py index 54c45b5dcad..90c306b3a07 100644 --- a/var/spack/repos/builtin/packages/hipblaslt/package.py +++ b/var/spack/repos/builtin/packages/hipblaslt/package.py @@ -82,7 +82,7 @@ class Hipblaslt(CMakePackage): patch("0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch", when="@6.1:6.2") patch("0001-Set-LLVM-Path-6.3.Patch", when="@6.3:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("@6.3.0:"): env.set( diff --git a/var/spack/repos/builtin/packages/hipcub/package.py b/var/spack/repos/builtin/packages/hipcub/package.py index f2c3d4dd2e2..cafe568b849 100644 --- a/var/spack/repos/builtin/packages/hipcub/package.py +++ b/var/spack/repos/builtin/packages/hipcub/package.py @@ -96,7 +96,7 @@ class Hipcub(CMakePackage, CudaPackage, ROCmPackage): # fix hardcoded search in /opt/rocm and broken config mode search patch("find-hip-cuda-rocm-5.3.patch", when="@5.3: +cuda") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+rocm"): env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): diff --git a/var/spack/repos/builtin/packages/hipfft/package.py b/var/spack/repos/builtin/packages/hipfft/package.py index 2a46dfebc97..e6ab3069707 100644 --- a/var/spack/repos/builtin/packages/hipfft/package.py +++ b/var/spack/repos/builtin/packages/hipfft/package.py @@ -105,7 +105,7 @@ class Hipfft(CMakePackage, CudaPackage, ROCmPackage): # https://github.com/ROCm/rocFFT/pull/85) patch("001-remove-submodule-and-sync-shared-files-from-rocFFT.patch", when="@6.0.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/hipfort/package.py b/var/spack/repos/builtin/packages/hipfort/package.py index 2f8b4c06735..eca0015408b 100644 --- a/var/spack/repos/builtin/packages/hipfort/package.py +++ b/var/spack/repos/builtin/packages/hipfort/package.py @@ -75,7 +75,7 @@ class Hipfort(CMakePackage): ]: depends_on(f"hip@{ver}", type="build", when=f"@{ver}") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/hipify-clang/package.py b/var/spack/repos/builtin/packages/hipify-clang/package.py index e7e7eede928..8d6f7423bd2 100644 --- a/var/spack/repos/builtin/packages/hipify-clang/package.py +++ b/var/spack/repos/builtin/packages/hipify-clang/package.py @@ -106,7 +106,7 @@ class HipifyClang(CMakePackage): ]: depends_on(f"rocm-core@{ver}", when=f"@{ver}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # The installer puts the binaries directly into the prefix # instead of prefix/bin, so add prefix to the PATH env.prepend_path("PATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/hiprand/package.py b/var/spack/repos/builtin/packages/hiprand/package.py index 1a9481f3056..b95939d53c4 100644 --- a/var/spack/repos/builtin/packages/hiprand/package.py +++ b/var/spack/repos/builtin/packages/hiprand/package.py @@ -118,7 +118,7 @@ class Hiprand(CMakePackage, CudaPackage, ROCmPackage): "rocrand amdgpu_target={0}".format(tgt), when="+rocm amdgpu_target={0}".format(tgt) ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 6219fdf61fb..38a6382d247 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -144,7 +144,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/hipsparse/package.py b/var/spack/repos/builtin/packages/hipsparse/package.py index 22d2ef1b6db..071ca4df56f 100644 --- a/var/spack/repos/builtin/packages/hipsparse/package.py +++ b/var/spack/repos/builtin/packages/hipsparse/package.py @@ -115,7 +115,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/hipsparselt/package.py b/var/spack/repos/builtin/packages/hipsparselt/package.py index 3fca3d9074f..047ac36ff98 100644 --- a/var/spack/repos/builtin/packages/hipsparselt/package.py +++ b/var/spack/repos/builtin/packages/hipsparselt/package.py @@ -91,7 +91,7 @@ class Hipsparselt(CMakePackage, ROCmPackage): patch("0001-update-llvm-path-add-hipsparse-include-dir-for-spack-6.2.patch", when="@6.2") patch("0001-update-llvm-path-add-hipsparse-include-dir-for-spack-6.3.patch", when="@6.3") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/hiptt/package.py b/var/spack/repos/builtin/packages/hiptt/package.py index fa60f5e5b12..e41969ba1c1 100644 --- a/var/spack/repos/builtin/packages/hiptt/package.py +++ b/var/spack/repos/builtin/packages/hiptt/package.py @@ -24,7 +24,9 @@ class Hiptt(MakefilePackage, ROCmPackage): patch("bugfix_make.patch") # To enable this package add it to the LD_LIBRARY_PATH - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: hiptt_home = self.prefix env.prepend_path("cuTT_ROOT", hiptt_home) env.prepend_path("cuTT_LIBRARY", hiptt_home.lib) diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 15d25de0f06..04f21fb464e 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -267,7 +267,7 @@ def patch(self): # module file. The run dependencies are all curried into hpctoolkit # and we don't want to risk exposing a package if the application # uses a different version of the same package. - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.clear() env.prepend_path("PATH", spec.prefix.bin) diff --git a/var/spack/repos/builtin/packages/hpcx-mpi/package.py b/var/spack/repos/builtin/packages/hpcx-mpi/package.py index 004e509d94a..e5f7c5219fb 100644 --- a/var/spack/repos/builtin/packages/hpcx-mpi/package.py +++ b/var/spack/repos/builtin/packages/hpcx-mpi/package.py @@ -38,8 +38,10 @@ def make_base_environment(self, prefix, env): env.prepend_path("LD_LIBRARY_PATH", prefix.lib) env.set("OPAL_PREFIX", prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.make_base_environment(self.prefix, env) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.make_base_environment(self.prefix, env) diff --git a/var/spack/repos/builtin/packages/hping/package.py b/var/spack/repos/builtin/packages/hping/package.py index d186867825d..89862e860ed 100644 --- a/var/spack/repos/builtin/packages/hping/package.py +++ b/var/spack/repos/builtin/packages/hping/package.py @@ -22,7 +22,7 @@ class Hping(AutotoolsPackage): depends_on("libpcap") depends_on("tcl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("TCLSH", self.spec["tcl"].prefix.bin.tclsh) @run_before("configure") @@ -37,5 +37,5 @@ def install(self, spec, prefix): mkdirp(prefix.sbin) make("install") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) 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 a268920448b..3e337e7f90b 100644 --- a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py @@ -158,7 +158,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@5.7: +asan"): numa_inc = self.spec["numactl"].prefix.include numa_lib = self.spec["numactl"].prefix.lib diff --git a/var/spack/repos/builtin/packages/hybpiper/package.py b/var/spack/repos/builtin/packages/hybpiper/package.py index 5b0e23e8aa2..d8631404a0c 100644 --- a/var/spack/repos/builtin/packages/hybpiper/package.py +++ b/var/spack/repos/builtin/packages/hybpiper/package.py @@ -57,7 +57,7 @@ class Hybpiper(PythonPackage, Package): depends_on("spades") depends_on("spades@3.15.4:", when="@2.1:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("HYBPIPER_HOME", self.prefix) @when("@:1.3.1") diff --git a/var/spack/repos/builtin/packages/hybrid-lambda/package.py b/var/spack/repos/builtin/packages/hybrid-lambda/package.py index 0a06b51dbf5..4f7cdb49ea8 100644 --- a/var/spack/repos/builtin/packages/hybrid-lambda/package.py +++ b/var/spack/repos/builtin/packages/hybrid-lambda/package.py @@ -44,6 +44,6 @@ def change_install_option_in_makefile(self): filter_file(r"INSTALL = /bin/install -c", "INSTALL = /bin/install -C", "Makefile") @on_package_attributes(run_tests=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # build testcases with cppunit env.prepend_path("LD_LIBRARY_PATH", self.spec["cppunit"].libs.directories[0]) diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py index fd7fa7878b0..1a04f5daa03 100644 --- a/var/spack/repos/builtin/packages/hydrogen/package.py +++ b/var/spack/repos/builtin/packages/hydrogen/package.py @@ -279,7 +279,7 @@ def initconfig_package_entries(self): return entries - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+openmp %apple-clang"): env.append_flags("CPPFLAGS", self.compiler.openmp_flag) env.append_flags("CFLAGS", self.spec["llvm-openmp"].headers.include_flags) diff --git a/var/spack/repos/builtin/packages/hypre-cmake/package.py b/var/spack/repos/builtin/packages/hypre-cmake/package.py index 4be4034190e..49534684c29 100644 --- a/var/spack/repos/builtin/packages/hypre-cmake/package.py +++ b/var/spack/repos/builtin/packages/hypre-cmake/package.py @@ -80,7 +80,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda"): env.set("CUDA_HOME", self.spec["cuda"].prefix) env.set("CUDA_PATH", self.spec["cuda"].prefix) diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 92d3221dd8a..6933cefdf4f 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -347,7 +347,7 @@ def configure_args(self): return configure_args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+mpi"): env.set("CC", spec["mpi"].mpicc) diff --git a/var/spack/repos/builtin/packages/icedtea/package.py b/var/spack/repos/builtin/packages/icedtea/package.py index 70ab9bab077..460de022236 100644 --- a/var/spack/repos/builtin/packages/icedtea/package.py +++ b/var/spack/repos/builtin/packages/icedtea/package.py @@ -189,12 +189,14 @@ def configure_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set JAVA_HOME.""" env.set("JAVA_HOME", self.home) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set JAVA_HOME and CLASSPATH. CLASSPATH contains the installation prefix for the extension and any @@ -210,7 +212,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): classpath = os.pathsep.join(class_paths) env.set("CLASSPATH", classpath) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set CLASSPATH. CLASSPATH contains the installation prefix for the extension and any diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index 9cd69ac8586..6bd028fa61e 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -30,6 +30,8 @@ def cmake_args(self): self.define_from_variant("BUILD_SHARED_LIBS", "shared"), ] - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Work-around for ill-placed CMake modules""" env.prepend_path("CMAKE_PREFIX_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 93de1b824a1..0e83737c6d3 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -92,7 +92,7 @@ class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): # Need to make sure that locale is UTF-8 in order to process source files in UTF-8. @when("@59:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LC_ALL", "en_US.UTF-8") def configure_args(self): @@ -114,7 +114,7 @@ def configure_args(self): class MSBuildBuilder(spack.build_systems.msbuild.MSBuildBuilder): # Need to make sure that locale is UTF-8 in order to process source files in UTF-8. @when("@59:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LC_ALL", "en_US.UTF-8") def msbuild_args(self): diff --git a/var/spack/repos/builtin/packages/idl/package.py b/var/spack/repos/builtin/packages/idl/package.py index 556b604c738..1cdf2f538e4 100644 --- a/var/spack/repos/builtin/packages/idl/package.py +++ b/var/spack/repos/builtin/packages/idl/package.py @@ -30,7 +30,7 @@ def install(self, spec, prefix): install_script = Executable("./install.sh") install_script("-s", input="silent/idl_answer_file") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # set necessary environment variables env.prepend_path("EXELIS_DIR", self.prefix) env.prepend_path("IDL_DIR", self.prefix.idl) diff --git a/var/spack/repos/builtin/packages/improved-rdock/package.py b/var/spack/repos/builtin/packages/improved-rdock/package.py index 9a4d793bd15..48f964e5be9 100644 --- a/var/spack/repos/builtin/packages/improved-rdock/package.py +++ b/var/spack/repos/builtin/packages/improved-rdock/package.py @@ -60,7 +60,7 @@ def install(self, spec, prefix): set_executable(shfile) install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("RBT_ROOT", self.prefix) def test_rdock(self): diff --git a/var/spack/repos/builtin/packages/influxdb/package.py b/var/spack/repos/builtin/packages/influxdb/package.py index 2bb6761894c..92e88294fee 100644 --- a/var/spack/repos/builtin/packages/influxdb/package.py +++ b/var/spack/repos/builtin/packages/influxdb/package.py @@ -42,7 +42,7 @@ class Influxdb(Package): if pkg: version(ver, sha256=pkg[0], url=pkg[1]) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.usr.bin) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/intel-llvm/package.py b/var/spack/repos/builtin/packages/intel-llvm/package.py index 67452de9bcc..f2d715c0ec8 100644 --- a/var/spack/repos/builtin/packages/intel-llvm/package.py +++ b/var/spack/repos/builtin/packages/intel-llvm/package.py @@ -27,10 +27,10 @@ class IntelLlvm(CMakePackage): # conflicts('target != x86_64', # msg='Intel LLVM compiler currently only works for x86') - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", self.compiler.cxx11_flag) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+clang"): env.set("CC", join_path(self.spec.prefix.bin, "clang")) env.set("CXX", join_path(self.spec.prefix.bin, "clang++")) diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py index 0755331d973..c5081eef589 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers-classic/package.py @@ -81,7 +81,7 @@ def oneapi_compiler_prefix(self): oneapi_version = self.spec["intel-oneapi-compilers"].version return self.spec["intel-oneapi-compilers"].prefix.compiler.join(str(oneapi_version)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Adds environment variables to the generated module file. These environment variables come from running: @@ -99,7 +99,9 @@ def setup_run_environment(self, env): env.set("F77", bin_prefix.ifort) env.set("FC", bin_prefix.ifort) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: super().setup_dependent_build_environment(env, dependent_spec) # Edge cases for Intel's oneAPI compilers when using the legacy classic compilers: # Always pass flags to disable deprecation warnings, since these warnings can 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 eb70fef136d..21b2e73010c 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -444,7 +444,7 @@ def _classic_bin(self): def compiler_search_prefix(self): return self._llvm_bin - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Adds environment variables to the generated module file. These environment variables come from running: @@ -470,7 +470,9 @@ def setup_run_environment(self, env): env.set("F77", self._llvm_bin.ifx) env.set("FC", self._llvm_bin.ifx) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: super().setup_dependent_build_environment(env, dependent_spec) # 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: @@ -479,9 +481,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): # also ensures that shared objects and libraries required by the compiler, # e.g. libonnx, can be found succesfully # due to a fix, this is no longer required for OneAPI versions >= 2024.2 - bin_dir = os.path.dirname(self.cxx) - lib_dir = os.path.join(os.path.dirname(bin_dir), "lib") if self.cxx and self.spec.satisfies("%oneapi@:2024.1"): + bin_dir = os.path.dirname(self.cxx) + lib_dir = os.path.join(os.path.dirname(bin_dir), "lib") env.prepend_path("PATH", bin_dir) env.prepend_path("LD_LIBRARY_PATH", lib_dir) 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 fb02255bd86..edf412dc855 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py @@ -233,7 +233,9 @@ def libs(self): else: return IntelOneApiStaticLibraryList(libs, system_libs) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Only if environment modifications are desired (default is +envmods) if self.spec.satisfies("+envmods"): env.set("MKLROOT", self.component_prefix) 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 573b520b0ab..d4b8e856ddd 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py @@ -204,7 +204,9 @@ def setup_dependent_package(self, module, dep_spec): # no self.spec.mpif90 self.spec.mpifc = wrappers[4] - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: dependent_module = dependent_spec.package.module for var_name, attr_name in ( ("I_MPI_CC", "spack_cc"), diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 567a22e1dda..bcc5871fc8d 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -195,7 +195,7 @@ def libs(self): class SetupEnvironment: # We set OS here in case the user has it set to something else # that TBB doesn't expect. - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("OS", platform.system()) diff --git a/var/spack/repos/builtin/packages/intel-xed/package.py b/var/spack/repos/builtin/packages/intel-xed/package.py index a15f56bfce9..783fccba00f 100644 --- a/var/spack/repos/builtin/packages/intel-xed/package.py +++ b/var/spack/repos/builtin/packages/intel-xed/package.py @@ -102,7 +102,7 @@ def patch(self): except OSError: pass - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # XED needs PYTHONPATH to find the mbuild directory. env.prepend_path("PYTHONPATH", self.mdir) diff --git a/var/spack/repos/builtin/packages/ip/package.py b/var/spack/repos/builtin/packages/ip/package.py index 5ee1f20ed29..47743f813cd 100644 --- a/var/spack/repos/builtin/packages/ip/package.py +++ b/var/spack/repos/builtin/packages/ip/package.py @@ -105,7 +105,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: suffixes = ( self.spec.variants["precision"].value if self.spec.satisfies("@4.1:") diff --git a/var/spack/repos/builtin/packages/ip2/package.py b/var/spack/repos/builtin/packages/ip2/package.py index 69c5b7262c2..aeca5d08fab 100644 --- a/var/spack/repos/builtin/packages/ip2/package.py +++ b/var/spack/repos/builtin/packages/ip2/package.py @@ -30,7 +30,7 @@ class Ip2(CMakePackage): depends_on("sp") requires("^sp precision=4,8,d", when="^sp@2.4:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: for suffix in ("4", "8", "d"): lib = find_libraries( "libip2_" + suffix, root=self.prefix, shared=False, recursive=True diff --git a/var/spack/repos/builtin/packages/ipcalc/package.py b/var/spack/repos/builtin/packages/ipcalc/package.py index 436f7800c44..5df8d32077f 100644 --- a/var/spack/repos/builtin/packages/ipcalc/package.py +++ b/var/spack/repos/builtin/packages/ipcalc/package.py @@ -24,7 +24,7 @@ class Ipcalc(MakefilePackage): depends_on("geoip-api-c") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LIBPATH", self.spec["geoip-api-c"].prefix.lib) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/ipm/package.py b/var/spack/repos/builtin/packages/ipm/package.py index d7d4c4debbc..147ef9465b6 100644 --- a/var/spack/repos/builtin/packages/ipm/package.py +++ b/var/spack/repos/builtin/packages/ipm/package.py @@ -63,7 +63,7 @@ class Ipm(AutotoolsPackage): def patch(self): filter_file(r"#!/usr/bin/perl", "#!/usr/bin/env perl", "bin/ipm_parse") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("MPICC", spec["mpi"].mpicc) env.set("MPIFC", spec["mpi"].mpifc) diff --git a/var/spack/repos/builtin/packages/iproute2/package.py b/var/spack/repos/builtin/packages/iproute2/package.py index 1c17bc6c9f6..656a4474182 100644 --- a/var/spack/repos/builtin/packages/iproute2/package.py +++ b/var/spack/repos/builtin/packages/iproute2/package.py @@ -37,5 +37,5 @@ class Iproute2(AutotoolsPackage): def install(self, spec, prefix): make("install", "DESTDIR={0}".format(prefix), "PREFIX=") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/isescan/package.py b/var/spack/repos/builtin/packages/isescan/package.py index 749f860d1f9..b5e3ae68023 100644 --- a/var/spack/repos/builtin/packages/isescan/package.py +++ b/var/spack/repos/builtin/packages/isescan/package.py @@ -28,7 +28,7 @@ class Isescan(Package): depends_on("fraggenescan@:1.30", type="run") depends_on("hmmer@3.1b2:", type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "ssw201507")) diff --git a/var/spack/repos/builtin/packages/ispc/package.py b/var/spack/repos/builtin/packages/ispc/package.py index cccf093aa86..0a54b6abb0d 100644 --- a/var/spack/repos/builtin/packages/ispc/package.py +++ b/var/spack/repos/builtin/packages/ispc/package.py @@ -93,7 +93,7 @@ class Ispc(CMakePackage): sha256="3f7dae8d4a683fca2a6157bbcb7cbe9692ff2094b0f4afaf29be121c02b0b3ad", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@1.18.0:"): env.append_flags("LDFLAGS", "-lz") diff --git a/var/spack/repos/builtin/packages/javafx/package.py b/var/spack/repos/builtin/packages/javafx/package.py index 74e11a82fd1..2811a2c002b 100644 --- a/var/spack/repos/builtin/packages/javafx/package.py +++ b/var/spack/repos/builtin/packages/javafx/package.py @@ -61,5 +61,5 @@ def install(self, spec, prefix): install_tree("legal", prefix.legal) install_tree("lib", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("JAVAFX_HOME", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/jblob/package.py b/var/spack/repos/builtin/packages/jblob/package.py index f1c2f410661..0fe6463af61 100644 --- a/var/spack/repos/builtin/packages/jblob/package.py +++ b/var/spack/repos/builtin/packages/jblob/package.py @@ -22,7 +22,7 @@ class Jblob(Package): depends_on("java@8:", type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("JAVA_HOME", self.spec["java"].prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index be4d8ccbc69..23c783308bb 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -96,12 +96,14 @@ def libs(self): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set JAVA_HOME.""" env.set("JAVA_HOME", self.home) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set JAVA_HOME and CLASSPATH. CLASSPATH contains the installation prefix for the extension and any @@ -117,7 +119,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): classpath = os.pathsep.join(class_paths) env.set("CLASSPATH", classpath) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set CLASSPATH. CLASSPATH contains the installation prefix for the extension and any diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py index e0c87d5a8fc..07e1e3b27eb 100644 --- a/var/spack/repos/builtin/packages/jmol/package.py +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -33,7 +33,7 @@ def install(self, spec, prefix): # no subdirs - tarball was unpacked in spack-src install_tree("./", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) env.set("JMOL_HOME", self.prefix) env.prepend_path("PATH", self.spec["java"].prefix.bin) diff --git a/var/spack/repos/builtin/packages/jogl/package.py b/var/spack/repos/builtin/packages/jogl/package.py index 7e7330a7213..fbb28a255ef 100644 --- a/var/spack/repos/builtin/packages/jogl/package.py +++ b/var/spack/repos/builtin/packages/jogl/package.py @@ -58,15 +58,17 @@ def install(self, spec, prefix): with working_dir(join_path("build", "lib")): install("*.so", prefix.lib) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("CLASSPATH") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: class_paths = find(prefix.lib, "*.jar") classpath = os.pathsep.join(class_paths) env.prepend_path("CLASSPATH", classpath) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: class_paths = find(prefix.lib, "*.jar") classpath = os.pathsep.join(class_paths) env.prepend_path("CLASSPATH", classpath) diff --git a/var/spack/repos/builtin/packages/jube/package.py b/var/spack/repos/builtin/packages/jube/package.py index 16789ed3fd8..028ae6d81b1 100644 --- a/var/spack/repos/builtin/packages/jube/package.py +++ b/var/spack/repos/builtin/packages/jube/package.py @@ -138,7 +138,7 @@ class Jube(PythonPackage): depends_on("py-setuptools", type="build") depends_on("py-pyyaml", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if not self.spec.variants["resource_manager"].value == "none": env.prepend_path( "JUBE_INCLUDE_PATH", diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index d1212158d7c..13ad1f22016 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -331,7 +331,7 @@ def patch(self): time = (os.path.getatime(f), os.path.getmtime(f)) os.utime(os.path.join("base", "Makefile"), time) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # this is a bit ridiculous, but we are setting runtime linker paths to # dependencies so that libwhich can locate them. if self.spec.satisfies("platform=linux"): diff --git a/var/spack/repos/builtin/packages/justbuild/package.py b/var/spack/repos/builtin/packages/justbuild/package.py index 619c8df9896..1640745f70c 100644 --- a/var/spack/repos/builtin/packages/justbuild/package.py +++ b/var/spack/repos/builtin/packages/justbuild/package.py @@ -48,7 +48,7 @@ class Justbuild(Package): sanity_check_is_file = [join_path("bin", "just"), join_path("bin", "just-mr")] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: ar = which("ar") if self.spec.version < Version("1.2.1"): family = ', "COMPILER_FAMILY":"unknown"' diff --git a/var/spack/repos/builtin/packages/jxrlib-debian/package.py b/var/spack/repos/builtin/packages/jxrlib-debian/package.py index 5edd67ca0bb..430b809cca7 100644 --- a/var/spack/repos/builtin/packages/jxrlib-debian/package.py +++ b/var/spack/repos/builtin/packages/jxrlib-debian/package.py @@ -25,7 +25,7 @@ class JxrlibDebian(MakefilePackage): depends_on("c", type="build") # generated - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DIR_INSTALL", self.prefix) if self.spec.satisfies("+shared"): env.set("SHARED", "True") diff --git a/var/spack/repos/builtin/packages/kadath/package.py b/var/spack/repos/builtin/packages/kadath/package.py index 8e7fe96adf4..454fab03cc2 100644 --- a/var/spack/repos/builtin/packages/kadath/package.py +++ b/var/spack/repos/builtin/packages/kadath/package.py @@ -61,7 +61,7 @@ def patch(self): join_path("codes", code, "CMakeLists.txt"), ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HOME_KADATH", self.stage.source_path) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/kicad/package.py b/var/spack/repos/builtin/packages/kicad/package.py index 9fa9812699a..dc9c7d0b7da 100644 --- a/var/spack/repos/builtin/packages/kicad/package.py +++ b/var/spack/repos/builtin/packages/kicad/package.py @@ -102,16 +102,20 @@ class Kicad(CMakePackage): destination="", ) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py b/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py index b8535a8697f..34dee3cc381 100644 --- a/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py +++ b/var/spack/repos/builtin/packages/kokkos-nvcc-wrapper/package.py @@ -151,7 +151,9 @@ def install(self, spec, prefix): mkdir(prefix.bin) install(src, prefix.bin) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: wrapper = join_path(self.prefix.bin, "nvcc_wrapper") env.set("CUDA_ROOT", dependent_spec["cuda"].prefix) env.set("NVCC_WRAPPER_DEFAULT_COMPILER", self.compiler.cxx) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 006665fc03a..c191f608d09 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -1033,11 +1033,11 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+intel %aocc"): env.append_flags("LDFLAGS", "-lalm -lm") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("LAMMPS_POTENTIALS", self.prefix.share.lammps.potentials) if self.spec.satisfies("+python"): if self.spec.platform == "darwin": diff --git a/var/spack/repos/builtin/packages/landsfcutil/package.py b/var/spack/repos/builtin/packages/landsfcutil/package.py index faae7a868b9..2ff397b9dd5 100644 --- a/var/spack/repos/builtin/packages/landsfcutil/package.py +++ b/var/spack/repos/builtin/packages/landsfcutil/package.py @@ -31,7 +31,7 @@ def cmake_args(self): args = [self.define("ENABLE_TESTS", self.run_tests)] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: for suffix in ("4", "d"): lib = find_libraries( "liblandsfcutil_" + suffix, root=self.prefix, shared=False, recursive=True diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index 67540265e9e..8dcbd674c87 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -38,7 +38,7 @@ class Launchmon(AutotoolsPackage): patch("launchmon-char-conv.patch", when="@1.0.2") patch("for_aarch64.patch", when="@:1.0.2 target=aarch64:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@master"): # automake for launchmon requires the AM_PATH_LIBGCRYPT macro # which is defined in libgcrypt.m4 diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 95ce745e60a..fcef5a17032 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -250,7 +250,7 @@ class Lbann(CachedCMakePackage, CudaPackage, ROCmPackage): generator("ninja") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-fno-omit-frame-pointer") if self.spec.satisfies("%apple-clang"): env.append_flags("CPPFLAGS", self.compiler.openmp_flag) diff --git a/var/spack/repos/builtin/packages/lcio/package.py b/var/spack/repos/builtin/packages/lcio/package.py index ad443ec4a6f..2dab7610f5b 100644 --- a/var/spack/repos/builtin/packages/lcio/package.py +++ b/var/spack/repos/builtin/packages/lcio/package.py @@ -116,7 +116,7 @@ def url_for_version(self, version): return return url - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("LCIO", self.prefix) env.prepend_path("PYTHONPATH", self.prefix.python) # needed for the python bindings to find "Exceptions.h" diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index 71125644224..5fd47c6933a 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -53,7 +53,7 @@ def build_directory(self): / f"VC{self.pkg.compiler.visual_studio_version}" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "INCLUDE", ";".join([dep.prefix.include for dep in self.spec.dependencies(deptype="link")]), diff --git a/var/spack/repos/builtin/packages/ldc-bootstrap/package.py b/var/spack/repos/builtin/packages/ldc-bootstrap/package.py index 1662dc809de..557765add63 100644 --- a/var/spack/repos/builtin/packages/ldc-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/ldc-bootstrap/package.py @@ -35,7 +35,9 @@ class LdcBootstrap(CMakePackage): depends_on("libedit") depends_on("binutils") - def setup_dependent_build_environment(self, env, dep_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # The code below relies on this function being executed after the # environment has been sanitized (because LD_LIBRARY_PATH is among # the variables that get unset) diff --git a/var/spack/repos/builtin/packages/lesstif/package.py b/var/spack/repos/builtin/packages/lesstif/package.py index 689f9150e04..6d21cb84ade 100644 --- a/var/spack/repos/builtin/packages/lesstif/package.py +++ b/var/spack/repos/builtin/packages/lesstif/package.py @@ -28,7 +28,7 @@ class Lesstif(AutotoolsPackage): def patch(self): filter_file("ACLOCALDIR=.*", "ACLOCALDIR='${datarootdir}/aclocal'", "configure") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # 'sed' fails if LANG=en_US.UTF-8 as is often the case on Macs. # The configure script finds our superenv sed wrapper, sets # SED, but then doesn't use that variable. diff --git a/var/spack/repos/builtin/packages/lhapdf/package.py b/var/spack/repos/builtin/packages/lhapdf/package.py index d5385f8673c..3faf2b27d38 100644 --- a/var/spack/repos/builtin/packages/lhapdf/package.py +++ b/var/spack/repos/builtin/packages/lhapdf/package.py @@ -49,7 +49,7 @@ class Lhapdf(AutotoolsPackage): depends_on("py-setuptools", type="build", when="+python") depends_on("gettext", type="build", when="+python") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Add -lintl if provided by gettext, otherwise libintl is provided by the system's glibc: if ( self.spec.satisfies("+python") diff --git a/var/spack/repos/builtin/packages/lhapdf5/package.py b/var/spack/repos/builtin/packages/lhapdf5/package.py index 682b0e2fcae..23939417534 100644 --- a/var/spack/repos/builtin/packages/lhapdf5/package.py +++ b/var/spack/repos/builtin/packages/lhapdf5/package.py @@ -32,7 +32,7 @@ class Lhapdf5(AutotoolsPackage): depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("FFLAGS", "-std=legacy") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/lhapdfsets/package.py b/var/spack/repos/builtin/packages/lhapdfsets/package.py index 807d21a1428..a044805f6d5 100644 --- a/var/spack/repos/builtin/packages/lhapdfsets/package.py +++ b/var/spack/repos/builtin/packages/lhapdfsets/package.py @@ -64,10 +64,12 @@ def install(self, spec, prefix): tar("xfz", _filename) os.remove(_filename) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("LHAPDF_DATA_PATH", self.prefix.share.lhapdfsets) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("LHAPDF_DATA_PATH", self.prefix.share.lhapdfsets) @classmethod diff --git a/var/spack/repos/builtin/packages/libatasmart/package.py b/var/spack/repos/builtin/packages/libatasmart/package.py index 2c901ae0631..84921f79908 100644 --- a/var/spack/repos/builtin/packages/libatasmart/package.py +++ b/var/spack/repos/builtin/packages/libatasmart/package.py @@ -25,5 +25,5 @@ class Libatasmart(AutotoolsPackage): depends_on("libtool", type="build") depends_on("m4", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/libcap-ng/package.py b/var/spack/repos/builtin/packages/libcap-ng/package.py index e9c7d25f0c1..0ef9f270cd3 100644 --- a/var/spack/repos/builtin/packages/libcap-ng/package.py +++ b/var/spack/repos/builtin/packages/libcap-ng/package.py @@ -32,7 +32,7 @@ class LibcapNg(AutotoolsPackage): extends("python", when="+python") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+python"): env.set("PYTHON", python.path) diff --git a/var/spack/repos/builtin/packages/libcatalyst/package.py b/var/spack/repos/builtin/packages/libcatalyst/package.py index 6a5c34e165e..8d6d90ad739 100644 --- a/var/spack/repos/builtin/packages/libcatalyst/package.py +++ b/var/spack/repos/builtin/packages/libcatalyst/package.py @@ -53,7 +53,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+conduit"): env.prepend_path("CMAKE_PREFIX_PATH", spec["conduit"].prefix) diff --git a/var/spack/repos/builtin/packages/libcxi/package.py b/var/spack/repos/builtin/packages/libcxi/package.py index 0ec4ea93e5c..b3a3ba5c25b 100644 --- a/var/spack/repos/builtin/packages/libcxi/package.py +++ b/var/spack/repos/builtin/packages/libcxi/package.py @@ -60,7 +60,7 @@ def autoreconf(self, spec, prefix): sh = which("sh") sh("autogen.sh") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CFLAGS", f"-I{self.spec['cassini-headers'].prefix.include}") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/libdap4/package.py b/var/spack/repos/builtin/packages/libdap4/package.py index 1cee469517d..47ef022722d 100644 --- a/var/spack/repos/builtin/packages/libdap4/package.py +++ b/var/spack/repos/builtin/packages/libdap4/package.py @@ -39,7 +39,7 @@ class Libdap4(AutotoolsPackage): depends_on("uuid") depends_on("rpc") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Configure script will search for RPC library, but not actually add RPC library references # during configure tests. This can cause a failure with libtirpc if the following variable # is not set. diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py index 6584d351aa9..c6b18cd18f8 100644 --- a/var/spack/repos/builtin/packages/libfabric/package.py +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -175,17 +175,19 @@ def determine_variants(cls, exes, version): results.append(" ".join(variants)) return results - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.run_tests: env.prepend_path("PATH", self.prefix.bin) # To enable this package add it to the LD_LIBRARY_PATH - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64) # To enable this package add it to the LD_LIBRARY_PATH - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64) diff --git a/var/spack/repos/builtin/packages/libhugetlbfs/package.py b/var/spack/repos/builtin/packages/libhugetlbfs/package.py index de5734e25da..851c07cffcc 100644 --- a/var/spack/repos/builtin/packages/libhugetlbfs/package.py +++ b/var/spack/repos/builtin/packages/libhugetlbfs/package.py @@ -26,7 +26,7 @@ class Libhugetlbfs(AutotoolsPackage): install_targets = ["-e", "install"] parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BUILDTYPE", "NATIVEONLY") env.set("PREFIX", self.prefix) env.set("V", "1") diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 093b32e343e..bcc856e0eb8 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -117,7 +117,7 @@ def optflags(self): return flags - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Set optimization flags env.set("CFLAGS", self.optflags) env.set("CXXFLAGS", self.optflags) diff --git a/var/spack/repos/builtin/packages/libmaus2/package.py b/var/spack/repos/builtin/packages/libmaus2/package.py index 3af59d51db0..ea8330a39aa 100644 --- a/var/spack/repos/builtin/packages/libmaus2/package.py +++ b/var/spack/repos/builtin/packages/libmaus2/package.py @@ -33,6 +33,6 @@ class Libmaus2(AutotoolsPackage): ), ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%gcc@8.0:8.9") or self.spec.satisfies("%fj"): env.append_flags("LDFLAGS", "-lstdc++fs") diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py index d8072bd3dd5..18f85925d7d 100644 --- a/var/spack/repos/builtin/packages/libmesh/package.py +++ b/var/spack/repos/builtin/packages/libmesh/package.py @@ -324,5 +324,7 @@ def configure_args(self): return options - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.append_flags("PERL", self.spec["perl"].command.path) diff --git a/var/spack/repos/builtin/packages/libpressio/package.py b/var/spack/repos/builtin/packages/libpressio/package.py index 18f8f7cbaf8..4c1df1e11f2 100644 --- a/var/spack/repos/builtin/packages/libpressio/package.py +++ b/var/spack/repos/builtin/packages/libpressio/package.py @@ -395,7 +395,7 @@ def cmake_args(self): args.append("-DHDF5_ROOT=" + self.spec["hdf5"].prefix) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+hdf5") and self.spec.satisfies("+json"): env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) diff --git a/var/spack/repos/builtin/packages/libproxy/package.py b/var/spack/repos/builtin/packages/libproxy/package.py index a1a67bd28e4..41496f5e4cd 100644 --- a/var/spack/repos/builtin/packages/libproxy/package.py +++ b/var/spack/repos/builtin/packages/libproxy/package.py @@ -43,7 +43,7 @@ def cmake_args(self): args.append(self.define("PYTHON3_SITEPKG_DIR", python_platlib)) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+python"): libs = self.spec["libproxy"].libs.directories[0] if self.spec.satisfies("platform=darwin"): diff --git a/var/spack/repos/builtin/packages/libpsm3/package.py b/var/spack/repos/builtin/packages/libpsm3/package.py index 921fb3af1f9..b2f47514fb1 100644 --- a/var/spack/repos/builtin/packages/libpsm3/package.py +++ b/var/spack/repos/builtin/packages/libpsm3/package.py @@ -51,7 +51,7 @@ def install(self, spec, prefix): os.unlink("%s/libpsm3-fi.la" % prefix.lib) install("src/libpsm3-fi.la", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("FI_PROVIDER_PATH", self.prefix.lib) env.set("FI_PROVIDER", "psm3") env.set("PSM3_ALLOW_ROUTERS", "1") diff --git a/var/spack/repos/builtin/packages/librsb/package.py b/var/spack/repos/builtin/packages/librsb/package.py index 74674829e4a..e8a8f4cd6b8 100644 --- a/var/spack/repos/builtin/packages/librsb/package.py +++ b/var/spack/repos/builtin/packages/librsb/package.py @@ -42,10 +42,10 @@ class Librsb(AutotoolsPackage): variant("serial", default=False, description="Disable OpenMP support.") variant("verbose", default=False, description="Extra Library Verbosity. Good for learning.") - def setup_build_environment(self, spack_env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): - spack_env.set("LSAN_OPTIONS", "verbosity=1:log_threads=1") - spack_env.set("ASAN_OPTS", "detect_leaks=0") + env.set("LSAN_OPTIONS", "verbosity=1:log_threads=1") + env.set("ASAN_OPTS", "detect_leaks=0") def configure_args(self): args = [ diff --git a/var/spack/repos/builtin/packages/librsvg/package.py b/var/spack/repos/builtin/packages/librsvg/package.py index 80a2e692233..3d02aedabd9 100644 --- a/var/spack/repos/builtin/packages/librsvg/package.py +++ b/var/spack/repos/builtin/packages/librsvg/package.py @@ -67,18 +67,22 @@ def url_for_version(self, version): url += "{0}/librsvg-{1}.tar.xz" return url.format(version.up_to(2), version) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) # librsvg uses pthread_atfork() but does not use -pthread on Ubuntu 18.04 %gcc@8 env.append_flags("LDFLAGS", "-pthread") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/libtermkey/package.py b/var/spack/repos/builtin/packages/libtermkey/package.py index 43008217338..642f2e4a3ec 100644 --- a/var/spack/repos/builtin/packages/libtermkey/package.py +++ b/var/spack/repos/builtin/packages/libtermkey/package.py @@ -27,7 +27,7 @@ class Libtermkey(MakefilePackage): depends_on("pkgconfig", type="build") depends_on("unibilium") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LIBTOOL", self.spec["libtool"].prefix.bin.join("libtool")) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/libtheora/package.py b/var/spack/repos/builtin/packages/libtheora/package.py index 5aa73497d5d..ee3daed1e39 100644 --- a/var/spack/repos/builtin/packages/libtheora/package.py +++ b/var/spack/repos/builtin/packages/libtheora/package.py @@ -82,7 +82,7 @@ class MSBuildBuilder(MSBuildBuilder): def is_64bit(self): return "64" in str(self.pkg.spec.target.family) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.pkg.spec env.set("SPACK_OGG_PREFIX", spec["libogg"].prefix) # devenv is needed to convert ancient MSbuild project to modern diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index d9d014fbcc4..3dd76852bd9 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -89,7 +89,9 @@ def patch(self): filter_file("-fno-builtin", "-Mnobuiltin", "configure") filter_file("-fno-builtin", "-Mnobuiltin", "libltdl/configure") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.append_path("ACLOCAL_PATH", self.prefix.share.aclocal) def setup_dependent_package(self, module, dependent_spec): @@ -116,12 +118,12 @@ def post_install(self): join_path(self.prefix.bin, "libtoolize"), join_path(self.prefix.bin, "glibtoolize") ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Wrapper until spack has a real implementation of setup_test_environment()""" if self.run_tests: self.setup_test_environment(env) - def setup_test_environment(self, env): + def setup_test_environment(self, env: EnvironmentModifications): """When Fortran is not provided, a few tests need to be skipped""" if self.compiler.f77 is None: env.set("F77", "no") diff --git a/var/spack/repos/builtin/packages/libuser/package.py b/var/spack/repos/builtin/packages/libuser/package.py index f0feed6a98b..d4503d8ceee 100644 --- a/var/spack/repos/builtin/packages/libuser/package.py +++ b/var/spack/repos/builtin/packages/libuser/package.py @@ -23,5 +23,5 @@ class Libuser(AutotoolsPackage): depends_on("linux-pam") depends_on("popt") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/libvterm/package.py b/var/spack/repos/builtin/packages/libvterm/package.py index 45ad96db84c..3f432fb9545 100644 --- a/var/spack/repos/builtin/packages/libvterm/package.py +++ b/var/spack/repos/builtin/packages/libvterm/package.py @@ -30,7 +30,7 @@ def url_for_version(self, version): url = "https://launchpad.net/libvterm/trunk/v{0}/+download/libvterm-{1}.tar.gz" return url.format(version.up_to(2), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LIBTOOL", self.spec["libtool"].prefix.bin.join("libtool")) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/libwnck/package.py b/var/spack/repos/builtin/packages/libwnck/package.py index ac595cb8cd4..d7deccfcff3 100644 --- a/var/spack/repos/builtin/packages/libwnck/package.py +++ b/var/spack/repos/builtin/packages/libwnck/package.py @@ -71,6 +71,8 @@ def configure_args(self): return args - def setup_dependent_build_environment(self, env, dep_spec): - if self.spec.satisfies("+introspection") and dep_spec.satisfies("+introspection"): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + if self.spec.satisfies("+introspection") and dependent_spec.satisfies("+introspection"): env.append_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py index 7f6e677780f..a602cb9dcb4 100644 --- a/var/spack/repos/builtin/packages/libx11/package.py +++ b/var/spack/repos/builtin/packages/libx11/package.py @@ -63,10 +63,14 @@ def configure_args(self): return config_args - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XLOCALEDIR", self.prefix.share.X11.locale) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XLOCALEDIR", self.prefix.share.X11.locale) @property diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index 4c6e66b5dd7..234a9ab1973 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -104,7 +104,7 @@ def libs(self): class AutotoolsBuilder(autotools.AutotoolsBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # microarchitecture-specific optimization flags should be controlled # by Spack, otherwise we may end up with contradictory or invalid flags # see https://github.com/spack/spack/issues/17794 diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py index 59e4b8d6489..8e05dbb05c5 100644 --- a/var/spack/repos/builtin/packages/libxcb/package.py +++ b/var/spack/repos/builtin/packages/libxcb/package.py @@ -69,5 +69,5 @@ def patch(self): # If a newer release can be verified to build with LC_ALL=en_US.ISO-8859-1, # then we can limit the following function, e.g. # when("@:1.17") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LC_ALL", "C.UTF-8") diff --git a/var/spack/repos/builtin/packages/libxfce4ui/package.py b/var/spack/repos/builtin/packages/libxfce4ui/package.py index 04dd61ff01a..64a8a7ae975 100644 --- a/var/spack/repos/builtin/packages/libxfce4ui/package.py +++ b/var/spack/repos/builtin/packages/libxfce4ui/package.py @@ -58,8 +58,12 @@ def configure_args(self): return args - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/libxfce4util/package.py b/var/spack/repos/builtin/packages/libxfce4util/package.py index a1d4b47f4ac..ef03ed1b6c1 100644 --- a/var/spack/repos/builtin/packages/libxfce4util/package.py +++ b/var/spack/repos/builtin/packages/libxfce4util/package.py @@ -48,8 +48,12 @@ def configure_args(self): return args - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/ligra/package.py b/var/spack/repos/builtin/packages/ligra/package.py index e6e31259f4a..bdf11729547 100644 --- a/var/spack/repos/builtin/packages/ligra/package.py +++ b/var/spack/repos/builtin/packages/ligra/package.py @@ -28,11 +28,11 @@ class Ligra(MakefilePackage): depends_on("mkl", when="+mkl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+openmp"): env.set("OPENMP", "1") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.apps) env.prepend_path("PATH", self.prefix.utils) diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index 81d51e6d362..16e58665150 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -113,7 +113,7 @@ def patch(self): filter_file("^#!/usr/bin/perl -w", "#!/usr/bin/env perl", *files) filter_file("^#!/usr/bin/perl", "#!/usr/bin/env perl", *files) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda"): libs = find_libraries( "libcupti", root=self.spec["cuda"].prefix, shared=True, recursive=True diff --git a/var/spack/repos/builtin/packages/linaro-forge/package.py b/var/spack/repos/builtin/packages/linaro-forge/package.py index 81e712b0871..cd283056530 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -200,7 +200,7 @@ def install(self, spec, prefix): probe = join_path(prefix, "bin", "forge-probe") subprocess.call([probe, "--install", "global"]) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Only PATH is needed for Forge. # Adding lib to LD_LIBRARY_PATH can cause conflicts with Forge's internal libs. env.clear() diff --git a/var/spack/repos/builtin/packages/linux-external-modules/package.py b/var/spack/repos/builtin/packages/linux-external-modules/package.py index a1434ec5db8..0b898586841 100644 --- a/var/spack/repos/builtin/packages/linux-external-modules/package.py +++ b/var/spack/repos/builtin/packages/linux-external-modules/package.py @@ -323,7 +323,7 @@ class LinuxExternalModules(MakefilePackage): depends_on("binutils@2.25:", when="@6.2:") depends_on("binutils@2.23:", when="@6.0:6.2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("KBUILD_OUTPUT", self.prefix) @run_before("build") diff --git a/var/spack/repos/builtin/packages/linux-headers/package.py b/var/spack/repos/builtin/packages/linux-headers/package.py index 6969e87f382..f4cfb4abb4c 100644 --- a/var/spack/repos/builtin/packages/linux-headers/package.py +++ b/var/spack/repos/builtin/packages/linux-headers/package.py @@ -31,7 +31,7 @@ def url_for_version(self, version): url = "https://www.kernel.org/pub/linux/kernel/v{0}.x/linux-{1}.tar.xz" return url.format(version.up_to(1), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # This variable is used in the Makefile. If it is defined on the # system, it can break the build if there is no build recipe for # that specific ARCH diff --git a/var/spack/repos/builtin/packages/linux-perf/package.py b/var/spack/repos/builtin/packages/linux-perf/package.py index 71e5a08d7f8..aff3eb305c8 100644 --- a/var/spack/repos/builtin/packages/linux-perf/package.py +++ b/var/spack/repos/builtin/packages/linux-perf/package.py @@ -99,7 +99,7 @@ class LinuxPerf(Package): def url_for_version(self, version): return f"https://cdn.kernel.org/pub/linux/kernel/v{version[0]}.x/linux-{version}.tar.xz" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # This variable is used in the Makefile. If it is defined on the # system, it can break the build if there is no build recipe for # that specific ARCH diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index 62af6b51ba6..a83ec931b42 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -329,11 +329,13 @@ def cmake_args(self): compiler_version_regex = r"roc-(\d+[._]\d+[._]\d+)" # Make sure that the compiler paths are in the LD_LIBRARY_PATH - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) # Make sure that the compiler paths are in the LD_LIBRARY_PATH - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) # Required for enabling asan on dependent packages for root, _, files in os.walk(self.prefix): @@ -358,7 +360,9 @@ def post_install(self): ) # Required for enabling asan on dependent packages - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: for root, _, files in os.walk(self.prefix): if "libclang_rt.asan-x86_64.so" in files: env.prepend_path("LD_LIBRARY_PATH", root) diff --git a/var/spack/repos/builtin/packages/llvm-doe/package.py b/var/spack/repos/builtin/packages/llvm-doe/package.py index 84e17efcfbe..47a06b82e55 100644 --- a/var/spack/repos/builtin/packages/llvm-doe/package.py +++ b/var/spack/repos/builtin/packages/llvm-doe/package.py @@ -375,7 +375,7 @@ def flag_handler(self, name, flags): return (None, flags, None) return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """When using %clang, add only its ld.lld-$ver and/or ld.lld to our PATH""" if self.compiler.name in ["clang", "apple-clang"]: for lld in "ld.lld-{0}".format(self.compiler.version.version[0]), "ld.lld": @@ -386,7 +386,7 @@ def setup_build_environment(self, env): os.symlink(bin, sym) env.prepend_path("PATH", self.stage.path) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+clang"): env.set("CC", join_path(self.spec.prefix.bin, "clang")) env.set("CXX", join_path(self.spec.prefix.bin, "clang++")) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 394dd852af8..352ce0e58d0 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -933,7 +933,7 @@ def flag_handler(self, name, flags): return (None, flags, None) return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """When using %clang, add only its ld.lld-$ver and/or ld.lld to our PATH""" if self.compiler.name in ["clang", "apple-clang"]: for lld in "ld.lld-{0}".format(self.compiler.version.version[0]), "ld.lld": @@ -948,7 +948,7 @@ def setup_build_environment(self, env): # set the SDKROOT so the bootstrap compiler finds its C++ headers env.set("SDKROOT", macos_sdk_path()) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+clang"): env.set("CC", join_path(self.spec.prefix.bin, "clang")) env.set("CXX", join_path(self.spec.prefix.bin, "clang++")) diff --git a/var/spack/repos/builtin/packages/lmbench/package.py b/var/spack/repos/builtin/packages/lmbench/package.py index 6bd97c4867e..0195181be1c 100644 --- a/var/spack/repos/builtin/packages/lmbench/package.py +++ b/var/spack/repos/builtin/packages/lmbench/package.py @@ -28,7 +28,7 @@ class Lmbench(MakefilePackage): when="target=aarch64:", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["libtirpc"].prefix.include.tirpc) env.append_flags("LDFLAGS", "-ltirpc") diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index ef5259eb6c0..78d00e1b6fc 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -77,7 +77,7 @@ class Lmod(AutotoolsPackage): parallel = False - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: stage_lua_path = join_path(self.stage.source_path, "src", "?.lua") env.append_path("LUA_PATH", stage_lua_path.format(version=self.version), separator=";") diff --git a/var/spack/repos/builtin/packages/logrotate/package.py b/var/spack/repos/builtin/packages/logrotate/package.py index 54e2be01a75..f05b761a5a4 100644 --- a/var/spack/repos/builtin/packages/logrotate/package.py +++ b/var/spack/repos/builtin/packages/logrotate/package.py @@ -28,5 +28,5 @@ class Logrotate(AutotoolsPackage): depends_on("popt") depends_on("acl") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/logstash/package.py b/var/spack/repos/builtin/packages/logstash/package.py index e2630f780c7..6a86fb93b67 100644 --- a/var/spack/repos/builtin/packages/logstash/package.py +++ b/var/spack/repos/builtin/packages/logstash/package.py @@ -32,6 +32,6 @@ def url_for_version(self, version): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # do not use the bundled jdk env.set("LS_JAVA_HOME", self.spec["java"].home) diff --git a/var/spack/repos/builtin/packages/lshw/package.py b/var/spack/repos/builtin/packages/lshw/package.py index 421cc241e1d..af865502dac 100644 --- a/var/spack/repos/builtin/packages/lshw/package.py +++ b/var/spack/repos/builtin/packages/lshw/package.py @@ -29,8 +29,8 @@ class Lshw(MakefilePackage): depends_on("c", type="build") depends_on("cxx", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/ltr-retriever/package.py b/var/spack/repos/builtin/packages/ltr-retriever/package.py index 91dfdfe2d35..df30cbc47f8 100644 --- a/var/spack/repos/builtin/packages/ltr-retriever/package.py +++ b/var/spack/repos/builtin/packages/ltr-retriever/package.py @@ -41,5 +41,5 @@ def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/lua-luajit-openresty/package.py b/var/spack/repos/builtin/packages/lua-luajit-openresty/package.py index b1b9dc0ab5a..5e3046b8a07 100644 --- a/var/spack/repos/builtin/packages/lua-luajit-openresty/package.py +++ b/var/spack/repos/builtin/packages/lua-luajit-openresty/package.py @@ -65,7 +65,7 @@ def edit(self, spec, prefix): # on some platforms for the final link stage to work src_makefile.filter("^TARGET_LD = .*", f"TARGET_LD = {spack_cxx}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "LUA_PATH", os.path.join(self.spec.prefix, "share", f"luajit-{self.version[0:2]}", "?.lua"), diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index e715bf522f6..a65ee27d585 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -154,13 +154,17 @@ def _setup_dependent_env_helper(self, env, dependent_spec): return lua_patterns, lua_cpatterns - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: lua_patterns, lua_cpatterns = self._setup_dependent_env_helper(env, dependent_spec) env.prepend_path("LUA_PATH", ";".join(lua_patterns), separator=";") env.prepend_path("LUA_CPATH", ";".join(lua_cpatterns), separator=";") - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # For run time environment set only the path for dependent_spec and # prepend it to LUAPATH lua_patterns, lua_cpatterns = self._setup_dependent_env_helper(env, dependent_spec) @@ -169,7 +173,7 @@ def setup_dependent_run_environment(self, env, dependent_spec): env.prepend_path("LUA_PATH", ";".join(lua_patterns), separator=";") env.prepend_path("LUA_CPATH", ";".join(lua_cpatterns), separator=";") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "LUA_PATH", os.path.join(self.spec.prefix, self.lua_share_dir, "?.lua"), separator=";" ) diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index 4f31c02bd74..a98fdffbac9 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -87,7 +87,7 @@ def cmake_args(self): class MakefileBuilder(MakefileBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+pic"): env.set("CFLAGS", self.pkg.compiler.cc_pic_flag) diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index a77517282a7..3d0dbbb9504 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -76,20 +76,22 @@ def determine_version(cls, exe): match = re.search(r"GNU M4\)?\s+(\S+)", output) return match.group(1) if match else None - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Inform autom4te if it wasn't built correctly (some external # installations such as homebrew). See # https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/autom4te-Invocation.html env.set("M4", self.prefix.bin.m4) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # The default optimization level for icx/icpx is "-O2", # but building m4 with this level breaks the build of dependents. # So we set it explicitely to "-O0". if self.spec.satisfies("%intel") or self.spec.satisfies("%oneapi"): env.append_flags("CFLAGS", "-O0") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("M4", self.prefix.bin.m4) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/macfuse/package.py b/var/spack/repos/builtin/packages/macfuse/package.py index be69d9e5f46..35a1dd8627b 100644 --- a/var/spack/repos/builtin/packages/macfuse/package.py +++ b/var/spack/repos/builtin/packages/macfuse/package.py @@ -40,5 +40,7 @@ def install(self, spec, prefix): raise InstallError(msg) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("FUSE_LIBRARY_PATH", self.prefix.macFUSE) diff --git a/var/spack/repos/builtin/packages/madis/package.py b/var/spack/repos/builtin/packages/madis/package.py index f970898a40c..d0b910f5b74 100644 --- a/var/spack/repos/builtin/packages/madis/package.py +++ b/var/spack/repos/builtin/packages/madis/package.py @@ -30,7 +30,7 @@ class Madis(MakefilePackage): depends_on("netcdf-fortran") depends_on("parallel-netcdf", when="+pnetcdf") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: fflags = [] if self.spec.satisfies("%gcc@10:"): fflags += ["-fallow-argument-mismatch"] diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index 20a0f516937..21ee7ed89fc 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -444,7 +444,7 @@ def patch(self): "(target_link_libraries[^)]+PUBLIC )", r"\1 %s " % nc_flags, "pfio/CMakeLists.txt" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # esma_cmake, an internal dependency of mapl, is # looking for the cmake argument -DBASEDIR, and # if it doesn't find it, it's looking for an diff --git a/var/spack/repos/builtin/packages/mapnik/package.py b/var/spack/repos/builtin/packages/mapnik/package.py index 6a8c4e314fe..314a6cb7a4a 100644 --- a/var/spack/repos/builtin/packages/mapnik/package.py +++ b/var/spack/repos/builtin/packages/mapnik/package.py @@ -47,7 +47,7 @@ class Mapnik(AutotoolsPackage): depends_on("sqlite+rtree", type=("build", "link", "run")) depends_on("libwebp") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("GDAL_DATA", spec["gdal"].prefix.share.gdal) diff --git a/var/spack/repos/builtin/packages/masa/package.py b/var/spack/repos/builtin/packages/masa/package.py index a0e1ad76c7a..de8b9515960 100644 --- a/var/spack/repos/builtin/packages/masa/package.py +++ b/var/spack/repos/builtin/packages/masa/package.py @@ -53,7 +53,7 @@ def configure_args(self): return options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Unfortunately can't use this because MASA overwrites it # env.set('CXXFLAGS', self.compiler.cxx11_flag) env.set("CXX", "{0} {1}".format(self.compiler.cxx, self.compiler.cxx11_flag)) diff --git a/var/spack/repos/builtin/packages/masurca/package.py b/var/spack/repos/builtin/packages/masurca/package.py index 50bfe0fbf6c..e3c686579c3 100644 --- a/var/spack/repos/builtin/packages/masurca/package.py +++ b/var/spack/repos/builtin/packages/masurca/package.py @@ -41,7 +41,7 @@ def patch(self): m = join_path("global-1", makefile) filter_file("-minline-all-stringops", "", m) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@4:"): env.set("DEST", self.prefix) diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 9918bff1b28..f81671ba6c2 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -98,7 +98,7 @@ def flag_handler(self, name, flags): return (None, flags, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "shared" in self.spec.variants["libs"].value: env.set("SHARED", "yes") diff --git a/var/spack/repos/builtin/packages/mc/package.py b/var/spack/repos/builtin/packages/mc/package.py index 0b6438a84aa..dd2a7ac5226 100644 --- a/var/spack/repos/builtin/packages/mc/package.py +++ b/var/spack/repos/builtin/packages/mc/package.py @@ -27,7 +27,7 @@ class Mc(AutotoolsPackage): depends_on("glib@2.14:") depends_on("libssh2@1.2.5:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Fix compilation bug on macOS by pretending we don't have utimensat() # https://github.com/MidnightCommander/mc/pull/130 if "darwin" in self.spec.architecture: diff --git a/var/spack/repos/builtin/packages/mdsplus/package.py b/var/spack/repos/builtin/packages/mdsplus/package.py index 41d3f3d04a0..cd109d1965f 100644 --- a/var/spack/repos/builtin/packages/mdsplus/package.py +++ b/var/spack/repos/builtin/packages/mdsplus/package.py @@ -57,7 +57,7 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./bootstrap") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MDSPLUS_DIR", self.prefix) if "+python" in self.spec: env.prepend_path("PYTHONPATH", "{0}/python".format(self.prefix)) diff --git a/var/spack/repos/builtin/packages/mefit/package.py b/var/spack/repos/builtin/packages/mefit/package.py index b17ff4e6e37..00128dbc047 100644 --- a/var/spack/repos/builtin/packages/mefit/package.py +++ b/var/spack/repos/builtin/packages/mefit/package.py @@ -22,5 +22,5 @@ class Mefit(Package): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/melissa-api/package.py b/var/spack/repos/builtin/packages/melissa-api/package.py index 6143a50cbba..fb931697225 100644 --- a/var/spack/repos/builtin/packages/melissa-api/package.py +++ b/var/spack/repos/builtin/packages/melissa-api/package.py @@ -27,5 +27,5 @@ class MelissaApi(CMakePackage): depends_on("libzmq@4.1.5:") depends_on("mpi") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/memsurfer/package.py b/var/spack/repos/builtin/packages/memsurfer/package.py index 231da247d37..8569ee20575 100644 --- a/var/spack/repos/builtin/packages/memsurfer/package.py +++ b/var/spack/repos/builtin/packages/memsurfer/package.py @@ -37,7 +37,7 @@ class Memsurfer(PythonPackage): depends_on("vtk@8.1.2 ~ffmpeg~mpi+opengl2~qt~xdmf+python") # memsurfer's setup needs path to these deps to build extension modules - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("VTK_ROOT", self.spec["vtk"].prefix) env.set("CGAL_ROOT", self.spec["cgal"].prefix) env.set("BOOST_ROOT", self.spec["boost"].prefix) diff --git a/var/spack/repos/builtin/packages/meraculous/package.py b/var/spack/repos/builtin/packages/meraculous/package.py index 2ecc7d7081f..386edd421e7 100644 --- a/var/spack/repos/builtin/packages/meraculous/package.py +++ b/var/spack/repos/builtin/packages/meraculous/package.py @@ -38,6 +38,6 @@ def patch(self): edit = FileFilter("CMakeLists.txt") edit.filter(r"-static-libstdc\+\+", "") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MERACULOUS_ROOT", self.prefix) env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index c548001b4a4..966aaadc1f6 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -42,12 +42,12 @@ class Mercurial(PythonPackage): depends_on("py-pygments", type=("build", "run")) depends_on("py-certifi", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Python 3 support is still experimental, explicitly allow - env.set("HGALLOWPYTHON3", True) - env.set("HGPYTHON3", True) + env.set("HGALLOWPYTHON3", "True") + env.set("HGPYTHON3", "True") # Setuptools is still opt-in, explicitly enable - env.set("FORCE_SETUPTOOLS", True) + env.set("FORCE_SETUPTOOLS", "True") @run_after("install") def post_install(self): diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py index bf75e07a79e..a99aec22859 100644 --- a/var/spack/repos/builtin/packages/meson/package.py +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -178,7 +178,9 @@ class Meson(PythonPackage): def determine_version(cls, exe): return Executable(exe)("--version", output=str, error=str).rstrip() - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # https://github.com/pybind/pybind11/issues/595 if self.spec.satisfies("platform=darwin"): env.set("STRIP", "strip -x") diff --git a/var/spack/repos/builtin/packages/met/package.py b/var/spack/repos/builtin/packages/met/package.py index a39d16baba9..8b48266353e 100644 --- a/var/spack/repos/builtin/packages/met/package.py +++ b/var/spack/repos/builtin/packages/met/package.py @@ -87,7 +87,7 @@ def url_for_version(self, version): url = "https://github.com/dtcenter/MET/archive/refs/tags/v{0}.tar.gz" return url.format(version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec cppflags = [] ldflags = [] @@ -181,5 +181,5 @@ def configure_args(self): return args -# def setup_run_environment(self, env): +# def setup_run_environment(self, env: EnvironmentModifications) -> None: # env.set('MET_BASE', self.prefix) diff --git a/var/spack/repos/builtin/packages/metabat/package.py b/var/spack/repos/builtin/packages/metabat/package.py index 81686ce792a..cd1a977883e 100644 --- a/var/spack/repos/builtin/packages/metabat/package.py +++ b/var/spack/repos/builtin/packages/metabat/package.py @@ -43,7 +43,7 @@ class Metabat(CMakePackage): depends_on("zlib-api", type="link") depends_on("ncurses", type="link") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BOOST_ROOT", self.spec["boost"].prefix) def install_args(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/metall/package.py b/var/spack/repos/builtin/packages/metall/package.py index e920e35f8ed..ca0ee6b8c0f 100644 --- a/var/spack/repos/builtin/packages/metall/package.py +++ b/var/spack/repos/builtin/packages/metall/package.py @@ -71,11 +71,11 @@ def cmake_args(self): args = ["-DINSTALL_HEADER_ONLY=ON"] return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Configure the directories for test if self.run_tests: env.set("METALL_TEST_DIR", join_path(self.build_directory, "build_test")) # 'spack load metall' sets METALL_ROOT environmental variable - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("METALL_ROOT", self.prefix) diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 58e2cb9ff70..e3c139c3e9b 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -88,7 +88,7 @@ def patch(self): class SetupEnvironment: - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Ignore warnings/errors re unrecognized omp pragmas on %intel if "%intel@14:" in self.spec: env.append_flags("CFLAGS", "-diag-disable 3180") diff --git a/var/spack/repos/builtin/packages/metplus/package.py b/var/spack/repos/builtin/packages/metplus/package.py index b56551bc91e..ac8faf5ca43 100644 --- a/var/spack/repos/builtin/packages/metplus/package.py +++ b/var/spack/repos/builtin/packages/metplus/package.py @@ -68,5 +68,5 @@ def install(self, spec, prefix): install_tree(self.stage.source_path, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.ush) diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 707962fc798..33d26d83d9f 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -516,7 +516,7 @@ class Mfem(Package, CudaPackage, ROCmPackage): phases = ["configure", "build", "install"] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("MFEM_DIR") env.unset("MFEM_BUILD_DIR") # Workaround for changes made by the 'kokkos-nvcc-wrapper' package diff --git a/var/spack/repos/builtin/packages/mgcfd-op2/package.py b/var/spack/repos/builtin/packages/mgcfd-op2/package.py index 00d0dff76b0..ecdf3154b6c 100644 --- a/var/spack/repos/builtin/packages/mgcfd-op2/package.py +++ b/var/spack/repos/builtin/packages/mgcfd-op2/package.py @@ -34,7 +34,7 @@ class MgcfdOp2(MakefilePackage): depends_on("op2-dsl+mpi", when="+mpi") depends_on("op2-dsl~mpi", when="~mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: compiler_map = {"gcc": "gnu", "arm": "clang", "cce": "cray", "nvhpc": "pgi"} if self.spec.compiler.name in compiler_map: env.set("COMPILER", compiler_map[self.spec.compiler.name]) diff --git a/var/spack/repos/builtin/packages/microbiomeutil/package.py b/var/spack/repos/builtin/packages/microbiomeutil/package.py index 9d91153aa88..cf0f45cf8e9 100644 --- a/var/spack/repos/builtin/packages/microbiomeutil/package.py +++ b/var/spack/repos/builtin/packages/microbiomeutil/package.py @@ -28,7 +28,7 @@ def install(self, spec, prefix): install_tree("RESOURCES", prefix.resources) install_tree("AmosCmp16Spipeline", prefix.AmosCmp16Spipeline) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.ChimeraSlayer) env.prepend_path("PATH", join_path(self.prefix, "NAST-iEr")) env.prepend_path("PATH", self.prefix.TreeChopper) diff --git a/var/spack/repos/builtin/packages/migraphx/package.py b/var/spack/repos/builtin/packages/migraphx/package.py index 795551cd3a9..80db312395b 100644 --- a/var/spack/repos/builtin/packages/migraphx/package.py +++ b/var/spack/repos/builtin/packages/migraphx/package.py @@ -149,7 +149,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/mii/package.py b/var/spack/repos/builtin/packages/mii/package.py index 1010302e58b..77ceaf8457c 100644 --- a/var/spack/repos/builtin/packages/mii/package.py +++ b/var/spack/repos/builtin/packages/mii/package.py @@ -24,5 +24,5 @@ class Mii(MakefilePackage): depends_on("c", type="build") # generated - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) diff --git a/var/spack/repos/builtin/packages/minc-toolkit/package.py b/var/spack/repos/builtin/packages/minc-toolkit/package.py index 63a4a21c790..18b06b3714d 100644 --- a/var/spack/repos/builtin/packages/minc-toolkit/package.py +++ b/var/spack/repos/builtin/packages/minc-toolkit/package.py @@ -48,5 +48,5 @@ def cmake_args(self): "-DMT_BUILD_ELASTIX=OFF", ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MINC_TOOLKIT", self.prefix) diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py index e9d7c632965..0e6214b5d07 100644 --- a/var/spack/repos/builtin/packages/miniconda2/package.py +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -63,6 +63,6 @@ def install(self, spec, prefix): bash = which("bash") bash(script, "-b", "-f", "-p", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py index 0bf8099bc43..eda58344474 100644 --- a/var/spack/repos/builtin/packages/miniconda3/package.py +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -171,6 +171,6 @@ def install(self, spec, prefix): bash = which("bash") bash(script, "-b", "-f", "-p", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/miniforge3/package.py b/var/spack/repos/builtin/packages/miniforge3/package.py index e4157bf13ae..32486b2cf65 100644 --- a/var/spack/repos/builtin/packages/miniforge3/package.py +++ b/var/spack/repos/builtin/packages/miniforge3/package.py @@ -69,7 +69,7 @@ def patch_sbang(self): r"#!/usr/bin/env python", rf"#!{self.prefix.bin.python}", self.prefix.bin.mamba ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index 33a45ce096f..f17f9f2c227 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -178,7 +178,7 @@ class MiopenHip(CMakePackage): depends_on("nlohmann-json", type="link") depends_on("googletest", when="@6.1:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: lib_dir = self.spec["zlib-api"].libs.directories[0] env.prepend_path("LIBRARY_PATH", lib_dir) if self.spec.satisfies("+asan"): diff --git a/var/spack/repos/builtin/packages/mitofates/package.py b/var/spack/repos/builtin/packages/mitofates/package.py index 316dcada374..45b165c0ed0 100644 --- a/var/spack/repos/builtin/packages/mitofates/package.py +++ b/var/spack/repos/builtin/packages/mitofates/package.py @@ -44,6 +44,6 @@ def install(self, spec, prefix): chmod = which("chmod") chmod("+x", join_path(prefix, "MitoFates.pl")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # We want the main MitoFates.pl script in the path env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index bd17800e396..c47e8e29d09 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -311,12 +311,12 @@ def patch(self): ]: depends_on(f"rpp@{ver}", when=f"@{ver}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MIVISIONX_MODEL_COMPILER_PATH", self.spec.prefix.libexec.mivisionx.model_compiler) if self.spec.satisfies("@6.1:"): env.prepend_path("LD_LIBRARY_PATH", self.spec["hsa-rocr-dev"].prefix.lib) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@6.1:"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/mixcr/package.py b/var/spack/repos/builtin/packages/mixcr/package.py index 6e41088bf8e..f9891eb5fb7 100644 --- a/var/spack/repos/builtin/packages/mixcr/package.py +++ b/var/spack/repos/builtin/packages/mixcr/package.py @@ -26,5 +26,5 @@ class Mixcr(Package): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/modylas/package.py b/var/spack/repos/builtin/packages/modylas/package.py index df1bff55784..3ee16d747e3 100644 --- a/var/spack/repos/builtin/packages/modylas/package.py +++ b/var/spack/repos/builtin/packages/modylas/package.py @@ -35,7 +35,7 @@ class Modylas(AutotoolsPackage): build_directory = "source" configure_directory = "source" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+mpi"): env.set("FC", self.spec["mpi"].mpifc, force=True) fflags = ["-O3", self.compiler.openmp_flag] diff --git a/var/spack/repos/builtin/packages/mokutil/package.py b/var/spack/repos/builtin/packages/mokutil/package.py index 690b8e61e71..82fcce9d04b 100644 --- a/var/spack/repos/builtin/packages/mokutil/package.py +++ b/var/spack/repos/builtin/packages/mokutil/package.py @@ -25,7 +25,7 @@ class Mokutil(AutotoolsPackage): depends_on("m4", type="build") depends_on("efivar") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("C_INCLUDE_PATH", self.spec["efivar"].prefix.include.efivar) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/mpest/package.py b/var/spack/repos/builtin/packages/mpest/package.py index 861bc8aa3ef..8c95828ddfe 100644 --- a/var/spack/repos/builtin/packages/mpest/package.py +++ b/var/spack/repos/builtin/packages/mpest/package.py @@ -23,7 +23,7 @@ def install(self, spec, prefix): mkdirp(prefix.bin) install("mpest", prefix.bin) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("platform=darwin"): env.set("ARCHITECTURE", "mac") else: diff --git a/var/spack/repos/builtin/packages/mpibind/package.py b/var/spack/repos/builtin/packages/mpibind/package.py index e5b99a52a15..104ecc8a5f1 100644 --- a/var/spack/repos/builtin/packages/mpibind/package.py +++ b/var/spack/repos/builtin/packages/mpibind/package.py @@ -59,7 +59,7 @@ def autoreconf(self, spec, prefix): autoreconf("--install", "--verbose", "--force") @when("+flux") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Load the mpibind plugin into Flux""" env.prepend_path("FLUX_SHELL_RC_PATH", join_path(self.prefix, "share", "mpibind")) diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index a6359052ac3..9b75f4ae4bf 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -16,7 +16,9 @@ class MpichEnvironmentModifications(spack.package_base.PackageBase): MPICH, and derivatives. """ - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: dependent_module = dependent_spec.package.module for var_name, attr_name in ( ("MPICH_CC", "spack_cc"), @@ -28,11 +30,11 @@ def setup_dependent_build_environment(self, env, dependent_spec): if hasattr(dependent_module, attr_name): env.set(var_name, getattr(dependent_module, attr_name)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("F90") env.unset("F90FLAGS") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_mpi_wrapper_variables(env) def setup_dependent_package(self, module, dependent_spec): @@ -493,7 +495,7 @@ def flag_handler(self, name, flags): return flags, None, None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: MpichEnvironmentModifications.setup_build_environment(self, env) if "pmi=cray" in self.spec: env.set("CRAY_PMI_INCLUDE_OPTS", "-I" + self.spec["cray-pmi"].headers.directories[0]) diff --git a/var/spack/repos/builtin/packages/mpitrampoline/package.py b/var/spack/repos/builtin/packages/mpitrampoline/package.py index ca762c8bf9d..a8825d34598 100644 --- a/var/spack/repos/builtin/packages/mpitrampoline/package.py +++ b/var/spack/repos/builtin/packages/mpitrampoline/package.py @@ -81,7 +81,7 @@ def libs(self): libraries = ["libmpitrampoline"] return find_libraries(libraries, root=self.prefix.lib, shared=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Because MPI implementations provide compilers, they have to add to # their run environments the code to make the compilers available. env.set("MPITRAMPOLINE_CC", self.compiler.cc) @@ -92,7 +92,9 @@ def setup_run_environment(self, env): env.set("MPIF77", join_path(self.prefix.bin, "mpifc")) env.set("MPIF90", join_path(self.prefix.bin, "mpifc")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: dependent_module = dependent_spec.package.module # Use the Spack compiler wrappers under MPI env.set("MPITRAMPOLINE_CC", dependent_module.spack_cc) diff --git a/var/spack/repos/builtin/packages/mpt/package.py b/var/spack/repos/builtin/packages/mpt/package.py index 14b03a55e70..133ebf770f5 100644 --- a/var/spack/repos/builtin/packages/mpt/package.py +++ b/var/spack/repos/builtin/packages/mpt/package.py @@ -33,14 +33,16 @@ def libs(self): return find_libraries(libraries, root=self.prefix, shared=True, recursive=True) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # use the Spack compiler wrappers under MPI dependent_module = dependent_spec.package.module env.set("MPICC_CC", dependent_module.spack_cc) env.set("MPICXX_CXX", dependent_module.spack_cxx) env.set("MPIF90_F90", dependent_module.spack_fc) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Because MPI is both runtime and compiler, we have to setup the mpi # compilers as part of the run environment. env.set("MPICC", self.prefix.bin.mpicc) diff --git a/var/spack/repos/builtin/packages/mrtrix3/package.py b/var/spack/repos/builtin/packages/mrtrix3/package.py index e664ae58e55..49f657a40b5 100644 --- a/var/spack/repos/builtin/packages/mrtrix3/package.py +++ b/var/spack/repos/builtin/packages/mrtrix3/package.py @@ -49,5 +49,5 @@ def install(self, spec, prefix): build() install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/msmpi/package.py b/var/spack/repos/builtin/packages/msmpi/package.py index 988b95a603f..57714de4563 100644 --- a/var/spack/repos/builtin/packages/msmpi/package.py +++ b/var/spack/repos/builtin/packages/msmpi/package.py @@ -58,7 +58,7 @@ def setup_dependent_package(self, module, dependent_spec): class GenericBuilder(GenericBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: ifort_root = os.path.join(*self.pkg.compiler.fc.split(os.path.sep)[:-2]) env.set("SPACK_IFORT", ifort_root) diff --git a/var/spack/repos/builtin/packages/msvc/package.py b/var/spack/repos/builtin/packages/msvc/package.py index 80678eb5bbd..ae24fde197d 100644 --- a/var/spack/repos/builtin/packages/msvc/package.py +++ b/var/spack/repos/builtin/packages/msvc/package.py @@ -99,7 +99,9 @@ def setup_dependent_package(self, module, dependent_spec): module.nmake = Executable("nmake") module.msbuild = Executable("msbuild") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.init_msvc() # Set the build environment variables for spack. Just using # subprocess.call() doesn't work since that operates in its own @@ -126,8 +128,10 @@ def setup_dependent_build_environment(self, env, dependent_spec): else: env.set_path(env_var, int_env[env_var].split(os.pathsep)) - env.set("CC", self.cc) - env.set("CXX", self.cxx) + if self.cc: + env.set("CC", self.cc) + if self.cxx: + env.set("CXX", self.cxx) if self.fortran: env.set("FC", self.fortran) env.set("F77", self.fortran) diff --git a/var/spack/repos/builtin/packages/mujoco/package.py b/var/spack/repos/builtin/packages/mujoco/package.py index abd38eed2d4..9c825512d1e 100644 --- a/var/spack/repos/builtin/packages/mujoco/package.py +++ b/var/spack/repos/builtin/packages/mujoco/package.py @@ -40,7 +40,7 @@ def url_for_version(self, version): def install(self, spec, prefix): copy_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", prefix.include) env.prepend_path("LD_LIBRARY_PATH", prefix.bin) if platform.system() == "Darwin": diff --git a/var/spack/repos/builtin/packages/mumax/package.py b/var/spack/repos/builtin/packages/mumax/package.py index 8033305bc14..82f3577af7d 100644 --- a/var/spack/repos/builtin/packages/mumax/package.py +++ b/var/spack/repos/builtin/packages/mumax/package.py @@ -77,7 +77,7 @@ def edit(self, spec, prefix): filter_file(r"(^\(cd test)", r"#\1", "make.bash") filter_file(r"(for cc in ).*(; do)", r"\1{0}\2".format(self.cuda_arch), "cuda/make.bash") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("GOPATH", self.gopath) env.set("CUDA_CC", self.cuda_arch) env.set("NVCC_CCBIN", spack_cc) diff --git a/var/spack/repos/builtin/packages/mutationpp/package.py b/var/spack/repos/builtin/packages/mutationpp/package.py index 0050cde2000..2548e5f9d04 100644 --- a/var/spack/repos/builtin/packages/mutationpp/package.py +++ b/var/spack/repos/builtin/packages/mutationpp/package.py @@ -47,12 +47,14 @@ def install_examples(self): if "+examples" in self.spec and os.path.isdir("examples"): install_tree("examples", self.prefix.examples) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MPP_DIRECTORY", self.prefix) if os.path.isdir(self.prefix.data): env.set("MPP_DATA_DIRECTORY", self.prefix.data) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("MPP_DIRECTORY", self.prefix) if os.path.isdir(self.prefix.data): env.set("MPP_DATA_DIRECTORY", self.prefix.data) diff --git a/var/spack/repos/builtin/packages/mvapich-plus/package.py b/var/spack/repos/builtin/packages/mvapich-plus/package.py index 4c4b6690f2f..61d915bd6c2 100644 --- a/var/spack/repos/builtin/packages/mvapich-plus/package.py +++ b/var/spack/repos/builtin/packages/mvapich-plus/package.py @@ -199,7 +199,7 @@ def flag_handler(self, name, flags): flags.append("-fallow-argument-mismatch") return (None, flags, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # mvapich2 configure fails when F90 and F90FLAGS are set env.unset("F90") env.unset("F90FLAGS") @@ -226,14 +226,16 @@ def setup_build_environment(self, env): env.set("CUDA_HOME", self.spec["hip"].prefix) env.set("CUDA_ROOT", self.spec["hip"].prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MPI_ROOT", self.prefix) # Because MPI functions as a compiler, we need to treat it as one and # add its compiler paths to the run environment. self.setup_compiler_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_compiler_environment(env) # use the Spack compiler wrappers under MPI @@ -243,7 +245,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set("MPICH_F90", spack_fc) env.set("MPICH_FC", spack_fc) - def setup_compiler_environment(self, env): + def setup_compiler_environment(self, env: EnvironmentModifications): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mvapich" if self.spec.satisfies("platform=cray"): diff --git a/var/spack/repos/builtin/packages/mvapich/package.py b/var/spack/repos/builtin/packages/mvapich/package.py index c0adb6b9044..0bc559427bc 100644 --- a/var/spack/repos/builtin/packages/mvapich/package.py +++ b/var/spack/repos/builtin/packages/mvapich/package.py @@ -207,13 +207,15 @@ def flag_handler(self, name, flags): return (flags, None, None) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MPI_ROOT", self.prefix) # Because MPI functions as a compiler, we need to treat it as one and # add its compiler paths to the run environment. self.setup_mpi_wrapper_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_mpi_wrapper_variables(env) MpichEnvironmentModifications.setup_dependent_build_environment(self, env, dependent_spec) diff --git a/var/spack/repos/builtin/packages/mvapich2-gdr/package.py b/var/spack/repos/builtin/packages/mvapich2-gdr/package.py index dcce00f1364..9a1bfd74adb 100755 --- a/var/spack/repos/builtin/packages/mvapich2-gdr/package.py +++ b/var/spack/repos/builtin/packages/mvapich2-gdr/package.py @@ -146,7 +146,7 @@ def process_manager_options(self): ) return opts - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "pmi_version=pmi1" in self.spec: env.set("SLURM_MPI_TYPE", "pmi1") if "pmi_version=pmi2" in self.spec: @@ -158,7 +158,9 @@ def setup_run_environment(self, env): # add its compiler paths to the run environment. self.setup_mpi_wrapper_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_mpi_wrapper_variables(env) MpichEnvironmentModifications.setup_dependent_build_environment(self, env, dependent_spec) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 1059df5bd3c..b32ec63a662 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -358,7 +358,7 @@ def flag_handler(self, name, flags): return (flags, None, None) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "process_managers=slurm" in self.spec: if "pmi_version=pmi1" in self.spec: env.set("SLURM_MPI_TYPE", "pmi1") @@ -372,7 +372,9 @@ def setup_run_environment(self, env): # add its compiler paths to the run environment. self.setup_mpi_wrapper_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_mpi_wrapper_variables(env) MpichEnvironmentModifications.setup_dependent_build_environment(self, env, dependent_spec) diff --git a/var/spack/repos/builtin/packages/mvapich2x/package.py b/var/spack/repos/builtin/packages/mvapich2x/package.py index 88068d0c5f3..aacc96943cc 100644 --- a/var/spack/repos/builtin/packages/mvapich2x/package.py +++ b/var/spack/repos/builtin/packages/mvapich2x/package.py @@ -198,7 +198,7 @@ def construct_cflags(self): cflags = cflags + "-I/opt/xpmem/include" return cflags - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "pmi_version=pmi1" in self.spec: env.set("SLURM_MPI_TYPE", "pmi1") if "pmi_version=pmi2" in self.spec: @@ -210,7 +210,9 @@ def setup_run_environment(self, env): # add its compiler paths to the run environment. self.setup_mpi_wrapper_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_mpi_wrapper_variables(env) MpichEnvironmentModifications.setup_dependent_build_environment(self, env, dependent_spec) diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py index 6300f288281..d3ee9c127e7 100644 --- a/var/spack/repos/builtin/packages/mxnet/package.py +++ b/var/spack/repos/builtin/packages/mxnet/package.py @@ -75,7 +75,7 @@ class Mxnet(CMakePackage, CudaPackage, PythonExtension): # python/setup.py assumes libs can be found in build directory build_directory = "build" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MXNET_LIBRARY_PATH", self.spec["mxnet"].libs[0]) if self.spec.satisfies("+nccl ^nccl@2.1:"): diff --git a/var/spack/repos/builtin/packages/mysql/package.py b/var/spack/repos/builtin/packages/mysql/package.py index 46a1006f510..cc049ffdf76 100644 --- a/var/spack/repos/builtin/packages/mysql/package.py +++ b/var/spack/repos/builtin/packages/mysql/package.py @@ -212,7 +212,7 @@ def _fix_dtrace_shebang(self, env): # prepend to PATH the temporary folder where it resides. env.prepend_path("PATH", dtrace_copy_path) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: cxxstd = self.spec.variants["cxxstd"].value flag = getattr(self.compiler, "cxx{0}_flag".format(cxxstd)) if flag: diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index 8eba3d8412b..4381be5ed9f 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -65,7 +65,7 @@ def install(self, spec, prefix): # Run install script os.system("./INSTALLU.sh") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("F77", self.prefix.bin.nagfor) env.set("FC", self.prefix.bin.nagfor) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index 7b66312a967..9371c042583 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -142,7 +142,9 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): "openfast@4.0.0:4.0.1", msg="OpenFAST 4.0.0:4.0.1 contains a bug. Use OpenFAST >= 4.0.2." ) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec if spec.satisfies("+cuda") or spec.satisfies("+rocm"): env.set("CUDA_LAUNCH_BLOCKING", "1") @@ -150,7 +152,7 @@ def setup_dependent_run_environment(self, env, dependent_spec): env.set("HIP_LAUNCH_BLOCKING", "1") env.set("HIP_MANAGED_FORCE_DEVICE_ALLOC", "1") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.append_flags("CXXFLAGS", "-DUSE_STK_SIMD_NONE") if spec.satisfies("+cuda"): diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index 78499b8fbeb..1ff483071f4 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -87,7 +87,9 @@ def install(self, pkg, spec, prefix): for file in rdoff: install(file, self.prefix.rdoff) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # This is required as NASM installs its binaries into an # atypical location (i.e. flat in the prefix) env.prepend_path("PATH", self.pkg.prefix) diff --git a/var/spack/repos/builtin/packages/nccl-fastsocket/package.py b/var/spack/repos/builtin/packages/nccl-fastsocket/package.py index 0b03798a6ec..9465c927a59 100644 --- a/var/spack/repos/builtin/packages/nccl-fastsocket/package.py +++ b/var/spack/repos/builtin/packages/nccl-fastsocket/package.py @@ -22,7 +22,7 @@ class NcclFastsocket(Package): maintainers("danielahlin") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec tmp_path = tempfile.mkdtemp(prefix="spack") env.set("TEST_TMPDIR", tmp_path) @@ -56,7 +56,7 @@ def install(self, spec, prefix): bazel(*args) install_tree("bazel-bin", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # The current plugin pickup method of NCCL is to scan for libraries with certain # names in the standard library search paths. Consequently, to make nccl-fastsocket # discoverable to NCCL it is necessary to add it to the LD_LIBRARY_PATH. diff --git a/var/spack/repos/builtin/packages/nccl-tests/package.py b/var/spack/repos/builtin/packages/nccl-tests/package.py index 19f0184dfac..89ab167fb60 100644 --- a/var/spack/repos/builtin/packages/nccl-tests/package.py +++ b/var/spack/repos/builtin/packages/nccl-tests/package.py @@ -36,7 +36,7 @@ def build_targets(self): targets.append("MPI=1") return targets - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: cuda_arch = self.spec.variants["cuda_arch"].value cuda_gencode = " ".join(self.cuda_flags(cuda_arch)) env.set("NVCC_GENCODE", cuda_gencode) diff --git a/var/spack/repos/builtin/packages/ncftp/package.py b/var/spack/repos/builtin/packages/ncftp/package.py index 1797750a8ac..ff1a223f7d9 100644 --- a/var/spack/repos/builtin/packages/ncftp/package.py +++ b/var/spack/repos/builtin/packages/ncftp/package.py @@ -26,7 +26,7 @@ def url_for_version(self, version): else: return url.format(f"ncftp-{version}") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%gcc@10:"): # https://bugs.gentoo.org/722550 env.set("CFLAGS", "-fcommon") diff --git a/var/spack/repos/builtin/packages/ncio/package.py b/var/spack/repos/builtin/packages/ncio/package.py index b5f6c54e4c1..8b2055a307f 100644 --- a/var/spack/repos/builtin/packages/ncio/package.py +++ b/var/spack/repos/builtin/packages/ncio/package.py @@ -28,7 +28,7 @@ class Ncio(CMakePackage): depends_on("mpi") depends_on("netcdf-fortran") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: lib = find_libraries("libncio", root=self.prefix, shared=False, recursive=True) env.set("NCIO_LIB", lib[0]) env.set("NCIO_INC", join_path(self.prefix, "include")) diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 18ea26c3a2c..5c402884f73 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -199,7 +199,7 @@ def install(self, spec, prefix): ) filter_file("^(set cairolib[ ]*=).*", r'\1 "-lcairo -lfreetype"', wrapper) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("NCARG_ROOT", self.spec.prefix) # We cannot rely on Spack knowledge of esmf when NCL is an external diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 0bcc6e76e8d..24814b03c8f 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -90,7 +90,7 @@ def configure_args(self): config_args += self.enable_or_disable("openmp") return config_args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("NETCDF_INC", spec["netcdf-c"].prefix.include) env.set("NETCDF_LIB", spec["netcdf-c"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index a7271676c5d..4ecb1766d04 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -101,7 +101,7 @@ def determine_variants(cls, exes, version): results.append(variants) return results - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("TERMINFO") def flag_handler(self, name, flags): diff --git a/var/spack/repos/builtin/packages/ncvis/package.py b/var/spack/repos/builtin/packages/ncvis/package.py index e055d7d7775..c0ed1b1dd88 100644 --- a/var/spack/repos/builtin/packages/ncvis/package.py +++ b/var/spack/repos/builtin/packages/ncvis/package.py @@ -29,5 +29,5 @@ class Ncvis(CMakePackage): def install_resources(self): install_tree("resources", self.prefix.resources) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("NCVIS_RESOURCE_DIR", self.prefix.resources) diff --git a/var/spack/repos/builtin/packages/nekrs/package.py b/var/spack/repos/builtin/packages/nekrs/package.py index 0549033f609..a8ef62e54b8 100644 --- a/var/spack/repos/builtin/packages/nekrs/package.py +++ b/var/spack/repos/builtin/packages/nekrs/package.py @@ -68,7 +68,7 @@ def patch(self): filter_file(r"mpirun -np", "srun -n", "nrspre") filter_file(r"mpirun -np", "srun -n", "nrsbmpi") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # The 'env' is included in the Spack generated module files. spec = self.spec env.set("OCCA_CXX", self.compiler.cxx) @@ -99,7 +99,7 @@ def _setup_runtime_flags(self, s_env): # Run-time CUDA compiler: s_env.set("OCCA_CUDA_COMPILER", join_path(cuda_dir, "bin", "nvcc")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # The environment variable CXX is automatically set to the Spack # compiler wrapper. @@ -136,7 +136,9 @@ def setup_build_environment(self, env): env.set("OCCA_VERBOSE", "1") self._setup_runtime_flags(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Export OCCA_* variables for everyone using this package from within # Spack. self._setup_runtime_flags(env) diff --git a/var/spack/repos/builtin/packages/nektar/package.py b/var/spack/repos/builtin/packages/nektar/package.py index e14f531662a..2be31cb11c3 100644 --- a/var/spack/repos/builtin/packages/nektar/package.py +++ b/var/spack/repos/builtin/packages/nektar/package.py @@ -168,7 +168,7 @@ def install(self, spec, prefix): with working_dir(self.build_directory): python("setup.py", "install", "--prefix", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path( "CMAKE_PREFIX_PATH", os.path.join( @@ -179,10 +179,14 @@ def setup_run_environment(self, env): "PYTHONPATH", os.path.abspath(os.path.join(self.spec.prefix, "build_tree")) ) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_run_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_run_environment(env) def add_files_to_view(self, view, merge_map, skip_if_exists=True): diff --git a/var/spack/repos/builtin/packages/nest/package.py b/var/spack/repos/builtin/packages/nest/package.py index 1f30befe40a..991b18223b6 100644 --- a/var/spack/repos/builtin/packages/nest/package.py +++ b/var/spack/repos/builtin/packages/nest/package.py @@ -138,5 +138,5 @@ def install_headers(self): for f in find_headers("*.{0}".format(suffix), self.stage.source_path, recursive=True): install(f, path_headers) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("NEST_INSTALL_DIR", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 1afbe2d1049..1963863da14 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -283,7 +283,7 @@ class NetcdfC(CMakePackage, AutotoolsPackage): build_system("cmake", "autotools", default=default_build_system) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@4.9.0:+shared"): # Both HDF5 and NCZarr backends honor the same environment variable: env.append_path("HDF5_PLUGIN_PATH", self.prefix.plugins) @@ -304,7 +304,9 @@ def libs(self): class AnyBuilder(BaseBuilder): - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # 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, # we have to shadow nc-config from self.prefix.bin, which references the real compiler, diff --git a/var/spack/repos/builtin/packages/netdata/package.py b/var/spack/repos/builtin/packages/netdata/package.py index d473e3c147a..d0fedf794ae 100644 --- a/var/spack/repos/builtin/packages/netdata/package.py +++ b/var/spack/repos/builtin/packages/netdata/package.py @@ -35,7 +35,7 @@ class Netdata(AutotoolsPackage): depends_on("uuid") depends_on("zlib-api") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) @run_after("install") diff --git a/var/spack/repos/builtin/packages/neuron/package.py b/var/spack/repos/builtin/packages/neuron/package.py index 7d701214986..081cf016b2f 100644 --- a/var/spack/repos/builtin/packages/neuron/package.py +++ b/var/spack/repos/builtin/packages/neuron/package.py @@ -185,7 +185,7 @@ def filter_compilers(self): nrnmakefile = join_path(self.prefix, "share/coreneuron/nrnivmodl_core_makefile") filter_file("(?:^|\\s)CXX\\s*=.+", "CXX = {0}".format(cxx_compiler), nrnmakefile) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(self.prefix, "bin")) env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "lib")) if self.spec.satisfies("+python"): diff --git a/var/spack/repos/builtin/packages/nfs-ganesha/package.py b/var/spack/repos/builtin/packages/nfs-ganesha/package.py index b53c913b899..d944672a344 100644 --- a/var/spack/repos/builtin/packages/nfs-ganesha/package.py +++ b/var/spack/repos/builtin/packages/nfs-ganesha/package.py @@ -29,5 +29,5 @@ class NfsGanesha(CMakePackage): root_cmakelists_dir = "src" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["ntirpc"].prefix.include.ntirpc) diff --git a/var/spack/repos/builtin/packages/nginx/package.py b/var/spack/repos/builtin/packages/nginx/package.py index 32d1bdd6606..7250087fd52 100644 --- a/var/spack/repos/builtin/packages/nginx/package.py +++ b/var/spack/repos/builtin/packages/nginx/package.py @@ -38,6 +38,6 @@ def configure_args(self): args = ["--with-http_ssl_module"] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Prepend the sbin directory to PATH.""" env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/ngspice/package.py b/var/spack/repos/builtin/packages/ngspice/package.py index 39acd92aa70..35d9a089965 100644 --- a/var/spack/repos/builtin/packages/ngspice/package.py +++ b/var/spack/repos/builtin/packages/ngspice/package.py @@ -168,6 +168,6 @@ def flag_handler(self, name, flags): flags.append("-g") return (None, None, flags) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "build=lib" in self.spec: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 19be46d2928..0396f3494eb 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -81,7 +81,7 @@ def configure_test(self): ninja_test = Executable("./ninja_test") ninja_test() - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.misc) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/nnn/package.py b/var/spack/repos/builtin/packages/nnn/package.py index 5cc0561e289..b887713dd5f 100644 --- a/var/spack/repos/builtin/packages/nnn/package.py +++ b/var/spack/repos/builtin/packages/nnn/package.py @@ -57,7 +57,7 @@ class Nnn(MakefilePackage): description="Add pipe to close and restore preview-tui for internal undetached edits", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("PREFIX", self.prefix) if "+pcre" in spec: diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index f35c97471be..771378f16f4 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -164,7 +164,7 @@ def determine_version(cls, exe): match = re.match(r"v([\d.]+)\s*", output) return match.group(1) if match else None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Force use of experimental Python 3 support env.set("PYTHON", self.spec["python"].command.path) env.set("NODE_GYP_FORCE_PYTHON", self.spec["python"].command.path) diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index fb6a56d53dd..e208ab351b1 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -121,14 +121,18 @@ def install(self, spec, prefix): ".", ) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix if not os.path.isdir(npm_config_cache_dir): mkdirp(npm_config_cache_dir) env.set("npm_config_cache", npm_config_cache_dir) env.set("npm_config_install_links", "true") - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix env.set("npm_config_cache", npm_config_cache_dir) env.set("npm_config_install_links", "true") diff --git a/var/spack/repos/builtin/packages/nut/package.py b/var/spack/repos/builtin/packages/nut/package.py index 1da3335c51b..e8e0fc66692 100644 --- a/var/spack/repos/builtin/packages/nut/package.py +++ b/var/spack/repos/builtin/packages/nut/package.py @@ -35,7 +35,7 @@ class Nut(CMakePackage): conflicts("%nag", when="@serial") build_targets = ["VERBOSE=on"] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("RANDOM123_DIR", self.spec["random123"].prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/nvhpc/package.py b/var/spack/repos/builtin/packages/nvhpc/package.py index 08e990802d9..a314ce5c6ee 100644 --- a/var/spack/repos/builtin/packages/nvhpc/package.py +++ b/var/spack/repos/builtin/packages/nvhpc/package.py @@ -520,7 +520,7 @@ def determine_variants(cls, exes, version_str): def _version_prefix(self): return join_path(self.prefix, "Linux_%s" % self.spec.target.family, self.version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("NVHPC_SILENT", "true") env.set("NVHPC_ACCEPT_EULA", "accept") env.set("NVHPC_INSTALL_DIR", self.prefix) @@ -559,7 +559,7 @@ def install(self, spec, prefix): # Update localrc to use Spack gcc makelocalrc(*makelocalrc_args) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: prefix = Prefix( join_path(self.prefix, "Linux_%s" % self.spec.target.family, self.version, "compilers") ) @@ -587,7 +587,9 @@ def setup_run_environment(self, env): env.prepend_path("PATH", mpi_prefix.bin) env.prepend_path("LD_LIBRARY_PATH", mpi_prefix.lib) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: prefix = Prefix( join_path(self.prefix, "Linux_%s" % self.spec.target.family, self.version, "compilers") ) diff --git a/var/spack/repos/builtin/packages/nvshmem/package.py b/var/spack/repos/builtin/packages/nvshmem/package.py index b7ea9e9350a..b8d49550a78 100644 --- a/var/spack/repos/builtin/packages/nvshmem/package.py +++ b/var/spack/repos/builtin/packages/nvshmem/package.py @@ -55,7 +55,7 @@ def url_for_version(self, version): depends_on("gdrcopy", when="+gdrcopy") depends_on("nccl", when="+nccl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CUDA_HOME", self.spec["cuda"].prefix) env.set("NVSHMEM_PREFIX", self.prefix) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index de05736af60..0191d4bb52f 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -262,6 +262,6 @@ def install(self, spec, prefix): f.write(nwchemrc) install(".nwchemrc", share_path) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("NWCHEM_BASIS_LIBRARY", join_path(self.prefix, "share/nwchem/libraries/")) env.set("NWCHEM_NWPW_LIBRARY", join_path(self.prefix, "share/nwchem/libraryps/")) diff --git a/var/spack/repos/builtin/packages/occa/package.py b/var/spack/repos/builtin/packages/occa/package.py index 05c83d003f9..b466d2bcf58 100644 --- a/var/spack/repos/builtin/packages/occa/package.py +++ b/var/spack/repos/builtin/packages/occa/package.py @@ -71,7 +71,7 @@ def _setup_runtime_flags(self, s_env): # Run-time CUDA compiler: s_env.set("OCCA_CUDA_COMPILER", join_path(cuda_dir, "bin", "nvcc")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # The environment variable CXX is automatically set to the Spack # compiler wrapper. @@ -113,11 +113,13 @@ def setup_build_environment(self, env): env.set("OCCA_VERBOSE", "1") self._setup_runtime_flags(env) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # The 'env' is included in the Spack generated module files. self._setup_runtime_flags(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Export OCCA_* variables for everyone using this package from within # Spack. self._setup_runtime_flags(env) diff --git a/var/spack/repos/builtin/packages/octave-gsl/package.py b/var/spack/repos/builtin/packages/octave-gsl/package.py index c7053257a62..29c0dba38bd 100644 --- a/var/spack/repos/builtin/packages/octave-gsl/package.py +++ b/var/spack/repos/builtin/packages/octave-gsl/package.py @@ -20,5 +20,5 @@ class OctaveGsl(OctavePackage, SourceforgePackage): depends_on("gsl@2.4:") extends("octave@2.9.7:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PKG_CONFIG_PATH", self.spec["gsl"].prefix) diff --git a/var/spack/repos/builtin/packages/of-precice/package.py b/var/spack/repos/builtin/packages/of-precice/package.py index 0662a92f0b9..e3667ba55fa 100644 --- a/var/spack/repos/builtin/packages/of-precice/package.py +++ b/var/spack/repos/builtin/packages/of-precice/package.py @@ -94,5 +94,5 @@ def install(self, spec, prefix): # Place directly under 'lib' (no bin) install_tree(join_path(self.build_userdir, "lib"), join_path(self.prefix, "lib")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "lib")) diff --git a/var/spack/repos/builtin/packages/ollama/package.py b/var/spack/repos/builtin/packages/ollama/package.py index 0192160f28b..4b1cd3b2d8f 100644 --- a/var/spack/repos/builtin/packages/ollama/package.py +++ b/var/spack/repos/builtin/packages/ollama/package.py @@ -36,7 +36,7 @@ class Ollama(GoPackage, CudaPackage): class GoBuilder(spack.build_systems.go.GoBuilder): phases = ("generate", "build", "install") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda"): # These variables are consumed by gen_linux.sh which is called by # "go generate". diff --git a/var/spack/repos/builtin/packages/omnitrace/package.py b/var/spack/repos/builtin/packages/omnitrace/package.py index ee45ec54589..19217d434b8 100644 --- a/var/spack/repos/builtin/packages/omnitrace/package.py +++ b/var/spack/repos/builtin/packages/omnitrace/package.py @@ -211,7 +211,7 @@ def flag_handler(self, name, flags): flags.append("-lintl") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+tau" in self.spec: import glob diff --git a/var/spack/repos/builtin/packages/onednn/package.py b/var/spack/repos/builtin/packages/onednn/package.py index 7b1a7530ad4..8af3d9296a2 100644 --- a/var/spack/repos/builtin/packages/onednn/package.py +++ b/var/spack/repos/builtin/packages/onednn/package.py @@ -150,6 +150,6 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+acl"): env.set("ACL_ROOT_DIR", self.spec["armcomputelibrary"].prefix) diff --git a/var/spack/repos/builtin/packages/oommf/package.py b/var/spack/repos/builtin/packages/oommf/package.py index d8e6dec46b7..dad266ddb00 100644 --- a/var/spack/repos/builtin/packages/oommf/package.py +++ b/var/spack/repos/builtin/packages/oommf/package.py @@ -200,7 +200,7 @@ def install(self, spec, prefix): for f in install_files: install(os.path.join(oommfdir, f), prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Set OOMMF_ROOT so that oommf.tcl can find its files. oommfdir = self.get_oommf_path(self.prefix) env.set("OOMMF_ROOT", oommfdir) diff --git a/var/spack/repos/builtin/packages/opa-psm2/package.py b/var/spack/repos/builtin/packages/opa-psm2/package.py index 3ce1a20bca4..5217f9cb2b9 100644 --- a/var/spack/repos/builtin/packages/opa-psm2/package.py +++ b/var/spack/repos/builtin/packages/opa-psm2/package.py @@ -43,7 +43,7 @@ class OpaPsm2(MakefilePackage, CudaPackage): sha256="fe31fda9aaee13acb87d178af2282446196d2cc0b21163034573706110b2e2d6", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DESTDIR", self.prefix) if "%intel" in self.spec: # this variable must be set when we use the Intel compilers to diff --git a/var/spack/repos/builtin/packages/opam/package.py b/var/spack/repos/builtin/packages/opam/package.py index 99139754d72..32f7a3b85a5 100644 --- a/var/spack/repos/builtin/packages/opam/package.py +++ b/var/spack/repos/builtin/packages/opam/package.py @@ -53,7 +53,7 @@ def build_directory(self): return self.stage.source_path @when("@:1.2.2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """In OCaml <4.06.1, the default was -safe-string=0, and this has changed in OCaml >=4.06.1. OPAM version 1 was written before 4.06.1 was released, so OPAM <2.0 assumes mutable strings and requires the diff --git a/var/spack/repos/builtin/packages/open-iscsi/package.py b/var/spack/repos/builtin/packages/open-iscsi/package.py index 7ed4963540e..da20bcffbed 100644 --- a/var/spack/repos/builtin/packages/open-iscsi/package.py +++ b/var/spack/repos/builtin/packages/open-iscsi/package.py @@ -32,10 +32,10 @@ class OpenIscsi(MakefilePackage): depends_on("automake", type="build") depends_on("libtool", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CFLAGS", "-DNO_SYSTEMD") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 7eadea25c98..0521b7dff58 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -441,7 +441,7 @@ def _microarch_target_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # When building OpenBLAS with threads=openmp, `make all` # runs tests, so we set the max number of threads at runtime # accordingly diff --git a/var/spack/repos/builtin/packages/opendatadetector/package.py b/var/spack/repos/builtin/packages/opendatadetector/package.py index f2c03e60ecf..102ffd5e919 100644 --- a/var/spack/repos/builtin/packages/opendatadetector/package.py +++ b/var/spack/repos/builtin/packages/opendatadetector/package.py @@ -34,7 +34,7 @@ def cmake_args(self): args = [self.define("CMAKE_CXX_STANDARD", self.spec["root"].variants["cxxstd"].value)] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("OPENDATADETECTOR_DATA", join_path(self.prefix.share, "OpenDataDetector")) for lib_path in [self.prefix.lib, self.prefix.lib64]: env.prepend_path("LD_LIBRARY_PATH", lib_path) diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index c3711338e1e..a4fc9ff0f94 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -185,7 +185,7 @@ def config(self): settings["label-size"] = False return settings - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: bashrc = self.prefix.etc.bashrc try: env.extend(EnvironmentModifications.from_sourcing_file(bashrc, clean=True)) @@ -193,7 +193,9 @@ def setup_run_environment(self, env): msg = "unexpected error when sourcing OpenFOAM bashrc [{0}]" tty.warn(msg.format(str(e))) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Location of the OpenFOAM project directory. This is identical to the WM_PROJECT_DIR value, but we avoid that variable since it would mask the normal OpenFOAM cleanup of @@ -201,7 +203,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): """ env.set("FOAM_PROJECT_DIR", self.projectdir) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Location of the OpenFOAM project directory. This is identical to the WM_PROJECT_DIR value, but we avoid that variable since it would mask the normal OpenFOAM cleanup of diff --git a/var/spack/repos/builtin/packages/openfoam/package.py b/var/spack/repos/builtin/packages/openfoam/package.py index 51b0e952766..53af2e6a785 100644 --- a/var/spack/repos/builtin/packages/openfoam/package.py +++ b/var/spack/repos/builtin/packages/openfoam/package.py @@ -466,7 +466,7 @@ def url_for_version(self, version): fmt = "v{0}/OpenFOAM-v{1}.tgz" return self.list_url + fmt.format(version.up_to(1), version) - def setup_minimal_environment(self, env): + def setup_minimal_environment(self, env: EnvironmentModifications): """Sets a minimal openfoam environment.""" tty.info("OpenFOAM minimal env {0}".format(self.prefix)) env.set("FOAM_PROJECT_DIR", self.projectdir) @@ -474,11 +474,11 @@ def setup_minimal_environment(self, env): for d in ["wmake", self.archbin]: # bin added automatically env.prepend_path("PATH", join_path(self.projectdir, d)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Sets the build environment (prior to unpacking the sources).""" pass - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Sets the run environment (post-installation). The environment comes from running: @@ -516,9 +516,9 @@ def setup_run_environment(self, env): "FOAM_RUN", "(FOAM|WM)_.*USER_.*", ], - whitelist=[ # Whitelist these - "MPI_ARCH_PATH" # Can be required for compilation - ], + whitelist=[ + "MPI_ARCH_PATH" + ], # Whitelist these # Can be required for compilation ) env.extend(mods) @@ -531,7 +531,9 @@ def setup_run_environment(self, env): # pre-build or minimal environment self.setup_minimal_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Use full OpenFOAM environment when building. Mirror WM_PROJECT_DIR value as FOAM_PROJECT_DIR to avoid masking the normal OpenFOAM cleanup of previous versions. @@ -539,7 +541,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): self.setup_run_environment(env) env.set("FOAM_PROJECT_DIR", self.projectdir) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Use full OpenFOAM environment when running. Mirror WM_PROJECT_DIR value as FOAM_PROJECT_DIR to avoid masking the normal OpenFOAM cleanup of previous versions. diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py index bc07e1e2341..aeaa9e2597d 100644 --- a/var/spack/repos/builtin/packages/openjdk/package.py +++ b/var/spack/repos/builtin/packages/openjdk/package.py @@ -516,12 +516,14 @@ def link_system_certs(self): os.remove(pkg_conf) os.symlink(sys_certs, pkg_conf) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set JAVA_HOME.""" env.set("JAVA_HOME", self.home) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set JAVA_HOME and CLASSPATH. CLASSPATH contains the installation prefix for the extension and any @@ -537,7 +539,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): classpath = os.pathsep.join(class_paths) env.set("CLASSPATH", classpath) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set CLASSPATH. CLASSPATH contains the installation prefix for the extension and any diff --git a/var/spack/repos/builtin/packages/openloops/package.py b/var/spack/repos/builtin/packages/openloops/package.py index 7cc746bb40f..bed9de65605 100644 --- a/var/spack/repos/builtin/packages/openloops/package.py +++ b/var/spack/repos/builtin/packages/openloops/package.py @@ -298,12 +298,12 @@ def configure(self, spec, prefix): elif self.spec.satisfies("@2.1.2:2 processes=lcg.coll"): copy(join_path(os.path.dirname(__file__), "sft3.coll"), "lcg.coll") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Make sure that calling openloops picks up the scons that is shipped # instead of falling back to a potentially unsuitable system version env.set("OLPYTHON", self.spec["python"].prefix.bin.python) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Make sure that calling openloops picks up the scons that is shipped # instead of falling back to a potentially unsuitable system version env.set("OLPYTHON", self.spec["python"].prefix.bin.python) diff --git a/var/spack/repos/builtin/packages/openmm/package.py b/var/spack/repos/builtin/packages/openmm/package.py index 8d7fca088b2..bf3a8433f08 100644 --- a/var/spack/repos/builtin/packages/openmm/package.py +++ b/var/spack/repos/builtin/packages/openmm/package.py @@ -61,25 +61,29 @@ def patch(self): "wrappers/python/CMakeLists.txt", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+cuda" in spec: env.set("OPENMM_CUDA_COMPILER", self.spec["cuda"].prefix.bin.nvcc) env.set("CUDA_HOST_COMPILER", self.compiler.cxx) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+cuda" in spec: env.set("OPENMM_CUDA_COMPILER", self.spec["cuda"].prefix.bin.nvcc) env.set("CUDA_HOST_COMPILER", self.compiler.cxx) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec if "+cuda" in spec: env.set("OPENMM_CUDA_COMPILER", self.spec["cuda"].prefix.bin.nvcc) env.set("CUDA_HOST_COMPILER", self.compiler.cxx) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec if "+cuda" in spec: env.set("OPENMM_CUDA_COMPILER", self.spec["cuda"].prefix.bin.nvcc) diff --git a/var/spack/repos/builtin/packages/openmolcas/package.py b/var/spack/repos/builtin/packages/openmolcas/package.py index 132aabc3099..3a8ffc486ff 100644 --- a/var/spack/repos/builtin/packages/openmolcas/package.py +++ b/var/spack/repos/builtin/packages/openmolcas/package.py @@ -37,10 +37,10 @@ class Openmolcas(CMakePackage): patch("CMakeLists.txt.patch", when="target=aarch64:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MOLCAS", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("MOLCAS", self.prefix) if self.spec.version >= Version("21.02"): env.append_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index bf81f691d15..7d56176af5e 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -474,9 +474,9 @@ class Openmpi(AutotoolsPackage, CudaPackage): variant( "fabrics", - values=disjoint_sets( - ("auto",), FABRICS # shared memory transports - ).with_non_feature_values("auto", "none"), + values=disjoint_sets(("auto",), FABRICS).with_non_feature_values( + "auto", "none" + ), # shared memory transports description="List of fabrics that are enabled; " "'auto' lets openmpi determine", ) @@ -887,7 +887,7 @@ def libs(self): return find_libraries(libraries, root=self.prefix, shared=True, recursive=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Because MPI is both a runtime and a compiler, we have to setup the # compiler components as part of the run environment. env.set("MPICC", join_path(self.prefix.bin, "mpicc")) @@ -901,7 +901,9 @@ def setup_run_environment(self, env): if self.spec.satisfies("@1.7:"): env.set("MPIFC", join_path(self.prefix.bin, "mpifort")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Use the spack compiler wrappers under MPI dependent_module = dependent_spec.package.module for var_name, attr_name in ( diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py index c8f8f6902d7..4fd80ad446b 100644 --- a/var/spack/repos/builtin/packages/openpmd-api/package.py +++ b/var/spack/repos/builtin/packages/openpmd-api/package.py @@ -151,7 +151,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # pre-load dependent CMake-PUBLIC header-only libs if spec.satisfies("@:0.14"): # pre C++17 releases @@ -169,7 +169,9 @@ def setup_run_environment(self, env): if spec.satisfies("+hdf5"): env.prepend_path("CMAKE_PREFIX_PATH", spec["hdf5"].prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec # pre-load dependent CMake-PUBLIC header-only libs if spec.satisfies("@:0.14"): # pre C++17 releases diff --git a/var/spack/repos/builtin/packages/openradioss-engine/package.py b/var/spack/repos/builtin/packages/openradioss-engine/package.py index 9fa49d741d2..c245c5087f9 100644 --- a/var/spack/repos/builtin/packages/openradioss-engine/package.py +++ b/var/spack/repos/builtin/packages/openradioss-engine/package.py @@ -119,7 +119,7 @@ def install(self, spec, prefix): join_path(prefix, "extlib", "hm_reader"), ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("OPENRADIOSS_PATH", self.prefix) env.set("RAD_CFG_PATH", join_path(self.prefix, "hm_cfg_files")) env.set("RAD_H3D_PATH", join_path(self.prefix, "extlib", "h3d", "lib", "linux64")) diff --git a/var/spack/repos/builtin/packages/openradioss-starter/package.py b/var/spack/repos/builtin/packages/openradioss-starter/package.py index 61f02dabd69..adb3b99d2fe 100644 --- a/var/spack/repos/builtin/packages/openradioss-starter/package.py +++ b/var/spack/repos/builtin/packages/openradioss-starter/package.py @@ -105,7 +105,7 @@ def install(self, spec, prefix): join_path(prefix, "extlib", "hm_reader"), ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("OPENRADIOSS_PATH", self.prefix) env.set("RAD_CFG_PATH", join_path(self.prefix, "hm_cfg_files")) env.set("RAD_H3D_PATH", join_path(self.prefix, "extlib", "h3d", "lib", "linux64")) diff --git a/var/spack/repos/builtin/packages/openrasmol/package.py b/var/spack/repos/builtin/packages/openrasmol/package.py index ad9f22a374f..8063451097b 100644 --- a/var/spack/repos/builtin/packages/openrasmol/package.py +++ b/var/spack/repos/builtin/packages/openrasmol/package.py @@ -42,7 +42,7 @@ def edit(self, spec, prefix): f.write("#define CcCmd {0}\n".format(spack_cc)) f.write("#endif\n") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("XFORMSLIB_DIR", self.spec["xforms"].prefix) env.set("CBFLIB_DIR", self.spec["cbflib"].prefix) env.set("CQRLIB_DIR", self.spec["cqrlib"].prefix) diff --git a/var/spack/repos/builtin/packages/openspeedshop-utils/package.py b/var/spack/repos/builtin/packages/openspeedshop-utils/package.py index 352e92d683d..24da06ba016 100644 --- a/var/spack/repos/builtin/packages/openspeedshop-utils/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop-utils/package.py @@ -275,7 +275,7 @@ def set_mpi_cmake_options(self, spec, cmake_options): cmake_options.extend(mpi_options) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" # Find Dyninst library path, this is needed to diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 5789d89a362..7bf8f20d7bf 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -293,7 +293,7 @@ def set_mpi_cmake_options(self, spec, cmake_options): cmake_options.extend(mpi_options) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" # Find Dyninst library path, this is needed to diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py index 74e9efc1e79..d2794efa787 100755 --- a/var/spack/repos/builtin/packages/openssh/package.py +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -145,7 +145,7 @@ def install(self, spec, prefix): """Install generates etc/sshd_config, but it fails in parallel mode""" make("install", parallel=False) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Until spack supports a real implementation of setup_test_environment()""" if self.run_tests: self.setup_test_environment(env) @@ -158,7 +158,7 @@ def setup_build_environment(self, env): if self.spec.satisfies("@:7 %gcc@10:") or self.spec.satisfies("@:7 %clang@11:"): env.append_flags("CFLAGS", "-fcommon") - def setup_test_environment(self, env): + def setup_test_environment(self, env: EnvironmentModifications): """Configure the regression test suite like Debian's openssh-tests package""" p = self.prefix j = join_path diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 5fcb45f1c68..2904338f198 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -264,5 +264,5 @@ def patch(self): filter_file("-MF ", "", "Configurations/unix-Makefile.tmpl", string=True) filter_file(r"-MT \$\@ ", "", "Configurations/unix-Makefile.tmpl", string=True) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PERL", self.spec["perl"].prefix.bin.perl) diff --git a/var/spack/repos/builtin/packages/oras/package.py b/var/spack/repos/builtin/packages/oras/package.py index f52f889b24b..58181fa3a84 100644 --- a/var/spack/repos/builtin/packages/oras/package.py +++ b/var/spack/repos/builtin/packages/oras/package.py @@ -23,7 +23,7 @@ class Oras(Package): depends_on("go", type="build") depends_on("gmake", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Point GOPATH at the top of the staging dir for the build step. env.prepend_path("GOPATH", self.stage.path) diff --git a/var/spack/repos/builtin/packages/orca-faccts/package.py b/var/spack/repos/builtin/packages/orca-faccts/package.py index a8110dee5fb..e9976de9355 100644 --- a/var/spack/repos/builtin/packages/orca-faccts/package.py +++ b/var/spack/repos/builtin/packages/orca-faccts/package.py @@ -52,7 +52,7 @@ def install(self, spec, prefix): install_tree("bin", prefix.bin) install_tree("lib", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["libevent"].prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.spec["libpciaccess"].prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.spec["openmpi"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/orca/package.py b/var/spack/repos/builtin/packages/orca/package.py index 3db74ba1714..5c971381b75 100644 --- a/var/spack/repos/builtin/packages/orca/package.py +++ b/var/spack/repos/builtin/packages/orca/package.py @@ -83,7 +83,7 @@ def install(self, spec, prefix): mpirun_srun = join_path(os.path.dirname(__file__), "mpirun_srun.sh") install(mpirun_srun, prefix.bin.mpirun) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.bin) env.prepend_path("LD_LIBRARY_PATH", self.spec["libevent"].prefix.lib) env.prepend_path("LD_LIBRARY_PATH", self.spec["libpciaccess"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/orthofinder/package.py b/var/spack/repos/builtin/packages/orthofinder/package.py index 02d6d841081..6fbbaad6954 100644 --- a/var/spack/repos/builtin/packages/orthofinder/package.py +++ b/var/spack/repos/builtin/packages/orthofinder/package.py @@ -73,6 +73,6 @@ def install(self, spec, prefix): shutil.rmtree(prefix.bin.scripts_of.bin) os.rename("%s/orthofinder.py" % prefix.bin, "%s/orthofinder" % prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix.bin) env.prepend_path("PATH", prefix.bin.tools) diff --git a/var/spack/repos/builtin/packages/orthomcl/package.py b/var/spack/repos/builtin/packages/orthomcl/package.py index 15d12672820..80c538a8ad4 100644 --- a/var/spack/repos/builtin/packages/orthomcl/package.py +++ b/var/spack/repos/builtin/packages/orthomcl/package.py @@ -25,5 +25,5 @@ def install(self, spec, prefix): install_tree("doc", prefix.doc) install_tree("lib", prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/osg-ca-certs/package.py b/var/spack/repos/builtin/packages/osg-ca-certs/package.py index d7236e15613..eb0b199aa42 100644 --- a/var/spack/repos/builtin/packages/osg-ca-certs/package.py +++ b/var/spack/repos/builtin/packages/osg-ca-certs/package.py @@ -47,14 +47,14 @@ class OsgCaCerts(Package): depends_on("openssl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("OSG_CERTS_VERSION", self.version[:2]) env.set("OUR_CERTS_VERSION", str(self.version[:2]) + "NEW") env.set("IGTF_CERTS_VERSION", self.version[3:]) env.set("CADIST", join_path(self.stage.source_path, "certificates")) env.set("PKG_NAME", self.spec.name) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("X509_CERT_DIR", join_path(self.prefix, "certificates")) def install(self, spec, prefix): 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 80b09205d52..2be26da38f9 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -85,7 +85,7 @@ def configure_args(self): config_args.append("LDFLAGS=-lrt") return config_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: mpidir = join_path(self.prefix.libexec, "osu-micro-benchmarks", "mpi") env.prepend_path("PATH", join_path(mpidir, "startup")) env.prepend_path("PATH", join_path(mpidir, "pt2pt")) diff --git a/var/spack/repos/builtin/packages/pagit/package.py b/var/spack/repos/builtin/packages/pagit/package.py index e2d75f95bd5..b51dcd543e2 100644 --- a/var/spack/repos/builtin/packages/pagit/package.py +++ b/var/spack/repos/builtin/packages/pagit/package.py @@ -28,7 +28,7 @@ def install(self, spec, prefix): install_tree("lib", prefix.lib) install_tree("RATT", prefix.RATT) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PAGIT_HOME", self.prefix) env.set("PILEUP_HOME", join_path(self.prefix.bin, "pileup_v0.5")) env.set("ICORN_HOME", self.prefix.icorn) diff --git a/var/spack/repos/builtin/packages/pandorapfa/package.py b/var/spack/repos/builtin/packages/pandorapfa/package.py index 56001713d4f..69f0022f3c0 100644 --- a/var/spack/repos/builtin/packages/pandorapfa/package.py +++ b/var/spack/repos/builtin/packages/pandorapfa/package.py @@ -55,8 +55,10 @@ def url_for_version(self, version): url = base_url + "/v%s-%s-%s.tar.gz" % (major, minor, patch) return url - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("PANDORAPFA", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PANDORAPFA", self.prefix) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index d5607d09e1e..3e3457cff4a 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -131,14 +131,18 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: 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_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 4bac82088eb..708a75e2270 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -106,7 +106,7 @@ class Papi(AutotoolsPackage, ROCmPackage): configure_directory = "src" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+lmsensors" in spec and self.version >= Version("6"): env.set("PAPI_LMSENSORS_ROOT", spec["lm-sensors"].prefix) diff --git a/var/spack/repos/builtin/packages/papyrus/package.py b/var/spack/repos/builtin/packages/papyrus/package.py index ee443617ca6..bf7bc103012 100644 --- a/var/spack/repos/builtin/packages/papyrus/package.py +++ b/var/spack/repos/builtin/packages/papyrus/package.py @@ -30,7 +30,7 @@ class Papyrus(CMakePackage): test_requires_compiler = True - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if os.path.isdir(self.prefix.lib64): lib_dir = self.prefix.lib64 else: diff --git a/var/spack/repos/builtin/packages/parallelio/package.py b/var/spack/repos/builtin/packages/parallelio/package.py index e8a255c81a9..b660e5fa0d4 100644 --- a/var/spack/repos/builtin/packages/parallelio/package.py +++ b/var/spack/repos/builtin/packages/parallelio/package.py @@ -124,7 +124,7 @@ def url_for_version(self, version): version.underscored ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PIO_VERSION_MAJOR", "2") valid_values = "netcdf" if self.spec.satisfies("+mpi"): diff --git a/var/spack/repos/builtin/packages/parallelmergetree/package.py b/var/spack/repos/builtin/packages/parallelmergetree/package.py index a62d41c1636..501633ffb10 100644 --- a/var/spack/repos/builtin/packages/parallelmergetree/package.py +++ b/var/spack/repos/builtin/packages/parallelmergetree/package.py @@ -68,7 +68,7 @@ class Parallelmergetree(CMakePackage): # The C++ headers of gcc-11 don't provide as side effect of others @when("%gcc@11:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", "-include algorithm") def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index fa2b6d2b057..9d48ade9ae7 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -414,7 +414,9 @@ def paraview_subdir(self): else: return "paraview-{0}".format(self.spec.version.up_to(2)) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if os.path.isdir(self.prefix.lib64): lib_dir = self.prefix.lib64 else: @@ -451,7 +453,7 @@ def flag_handler(self, name, flags): return flags, None, None - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # paraview 5.5 and later # - cmake under lib/cmake/paraview-5.5 # - libs under lib diff --git a/var/spack/repos/builtin/packages/parflow/package.py b/var/spack/repos/builtin/packages/parflow/package.py index 4fec869b735..0af29194d02 100644 --- a/var/spack/repos/builtin/packages/parflow/package.py +++ b/var/spack/repos/builtin/packages/parflow/package.py @@ -59,7 +59,7 @@ def cmake_args(self): return cmake_args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Setup the run environment for ParFlow package.""" # ParFlow requires a PARFLOW_DIR env variable for correct execution env.set("PARFLOW_DIR", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/pass/package.py b/var/spack/repos/builtin/packages/pass/package.py index 01957f08ccb..0bc3e6683f5 100644 --- a/var/spack/repos/builtin/packages/pass/package.py +++ b/var/spack/repos/builtin/packages/pass/package.py @@ -42,7 +42,7 @@ class Pass(MakefilePackage): # Optional dependencies depends_on("xclip", when="+xclip") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set required environment variables for build.""" env.set("PREFIX", self.prefix) env.set("WITH_ALLCOMP", "yes") diff --git a/var/spack/repos/builtin/packages/pasta/package.py b/var/spack/repos/builtin/packages/pasta/package.py index 7eec70d45c6..257d3ee8b72 100644 --- a/var/spack/repos/builtin/packages/pasta/package.py +++ b/var/spack/repos/builtin/packages/pasta/package.py @@ -30,12 +30,12 @@ class Pasta(PythonPackage): destination=".", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: tools = join_path(self.prefix, "sate-tools-linux") env.set("PASTA_TOOLS_DEVDIR", tools) env.set("PASTA_TOOLS_RUNDIR", self.prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PASTA_TOOLS_RUNDIR", self.prefix.bin) @run_before("install") diff --git a/var/spack/repos/builtin/packages/pbbam/package.py b/var/spack/repos/builtin/packages/pbbam/package.py index b8f1fad0693..df6adbdc432 100644 --- a/var/spack/repos/builtin/packages/pbbam/package.py +++ b/var/spack/repos/builtin/packages/pbbam/package.py @@ -40,9 +40,11 @@ def meson_args(self): return options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BOOST_ROOT", self.spec["boost"].prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("PacBioBAM_LIBRARIES", self.prefix.lib) env.set("PacBioBAM_INCLUDE_DIRS", self.prefix.include) diff --git a/var/spack/repos/builtin/packages/pciutils/package.py b/var/spack/repos/builtin/packages/pciutils/package.py index e099bb98f08..e4ee95a0754 100644 --- a/var/spack/repos/builtin/packages/pciutils/package.py +++ b/var/spack/repos/builtin/packages/pciutils/package.py @@ -30,5 +30,5 @@ def install(self, spec, prefix): else: make("install", "PREFIX={0}".format(prefix)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py index 2df3b9f1eab..9764c98c662 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-hdf5/package.py @@ -53,5 +53,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py index 8038ad383c4..9c74ff56b1c 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-decl-netcdf/package.py @@ -48,5 +48,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py index c8e91261307..0d60c8ccd9b 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-mpi/package.py @@ -43,5 +43,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py index 667f26dd4a0..e24d7421831 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-pycall/package.py @@ -43,5 +43,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py index 520f04a67fd..14d7e16979c 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-serialize/package.py @@ -43,5 +43,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py index 666c03a0796..8bf89242ef7 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-set-value/package.py @@ -44,5 +44,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py index a2aae1a4ec0..58cea58b297 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-trace/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-trace/package.py @@ -43,5 +43,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py index 0f50159e54d..abaeeb136d0 100644 --- a/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py +++ b/var/spack/repos/builtin/packages/pdiplugin-user-code/package.py @@ -44,5 +44,5 @@ def cmake_args(self): self.define_from_variant("BUILD_TESTING", "tests"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PDI_PLUGIN_PATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/perl-alien-svn/package.py b/var/spack/repos/builtin/packages/perl-alien-svn/package.py index eae99f9fe5d..1e6819b67a7 100644 --- a/var/spack/repos/builtin/packages/perl-alien-svn/package.py +++ b/var/spack/repos/builtin/packages/perl-alien-svn/package.py @@ -31,11 +31,11 @@ class PerlAlienSvn(PerlPackage): depends_on("zlib-api") depends_on("libbsd") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # non-interactive build, use defaults env.set("PERL_MM_USE_DEFAULT", "1") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # SVN libs are not RPATHed correctly... # TODO: extend to other plaforms if sys.platform.startswith("linux"): diff --git a/var/spack/repos/builtin/packages/perl-bio-bigfile/package.py b/var/spack/repos/builtin/packages/perl-bio-bigfile/package.py index 671841689bb..0a6f102df30 100644 --- a/var/spack/repos/builtin/packages/perl-bio-bigfile/package.py +++ b/var/spack/repos/builtin/packages/perl-bio-bigfile/package.py @@ -64,7 +64,7 @@ def build_pl_args(self): f"--extra_linker_flags={' '.join(libs)}", ] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # These variables are exected by by the Build.PL file # even though we override the results via PERL_MB_OPT kent_pkg = self["kentutils"] diff --git a/var/spack/repos/builtin/packages/perl-bio-ensembl-variation/package.py b/var/spack/repos/builtin/packages/perl-bio-ensembl-variation/package.py index 37742f73570..824d2b39a11 100644 --- a/var/spack/repos/builtin/packages/perl-bio-ensembl-variation/package.py +++ b/var/spack/repos/builtin/packages/perl-bio-ensembl-variation/package.py @@ -50,7 +50,7 @@ class PerlBioEnsemblVariation(Package): phases = ("build", "install") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+ld"): env.set("HTSLIB_DIR", self.spec["htslib"].prefix.include) diff --git a/var/spack/repos/builtin/packages/perl-compress-bzip2/package.py b/var/spack/repos/builtin/packages/perl-compress-bzip2/package.py index 9c367a642fb..059706d4bc7 100644 --- a/var/spack/repos/builtin/packages/perl-compress-bzip2/package.py +++ b/var/spack/repos/builtin/packages/perl-compress-bzip2/package.py @@ -20,7 +20,7 @@ class PerlCompressBzip2(PerlPackage): depends_on("c", type="build") depends_on("bzip2", type=("build", "test", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BZLIB_INCLUDE", self.spec["bzip2"].prefix.include) env.set("BZLIB_LIB", self.spec["bzip2"].prefix.lib) env.set("BZLIB_BIN", self.spec["bzip2"].prefix.bin) diff --git a/var/spack/repos/builtin/packages/perl-dbd-oracle/package.py b/var/spack/repos/builtin/packages/perl-dbd-oracle/package.py index 3bfabaaabe8..eebe75a722a 100644 --- a/var/spack/repos/builtin/packages/perl-dbd-oracle/package.py +++ b/var/spack/repos/builtin/packages/perl-dbd-oracle/package.py @@ -22,5 +22,5 @@ class PerlDbdOracle(PerlPackage): depends_on("perl-test-nowarnings", type=("build", "link")) depends_on("oracle-instant-client", type=("build", "link", "run", "test")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("ORACLE_HOME", self.spec["oracle-instant-client"].prefix) diff --git a/var/spack/repos/builtin/packages/perl-forks/package.py b/var/spack/repos/builtin/packages/perl-forks/package.py index 85bea5738cd..8e47a9f6c7c 100644 --- a/var/spack/repos/builtin/packages/perl-forks/package.py +++ b/var/spack/repos/builtin/packages/perl-forks/package.py @@ -19,6 +19,6 @@ class PerlForks(PerlPackage): depends_on("perl-list-moreutils", type=("build", "run")) depends_on("perl-sys-sigaction", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "perl~threads" in self.spec: env.set("FORKS_SIMULATE_USEITHREADS", "1") diff --git a/var/spack/repos/builtin/packages/perl-fth/package.py b/var/spack/repos/builtin/packages/perl-fth/package.py index fb6e1cf50ac..6d4ca255b66 100644 --- a/var/spack/repos/builtin/packages/perl-fth/package.py +++ b/var/spack/repos/builtin/packages/perl-fth/package.py @@ -87,12 +87,14 @@ def setup_dependent_package(self, module, dependent_spec): for name in checks: setattr(module, name, self._make_executable(name)) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("JAVATEX_DIR", self.prefix) env.set("FTAGSHTML_DIR", self.prefix) env.set("FTAGSHTML_DOC", join_path(self.prefix, "doc")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # https://github.com/spack/spack/discussions/13926 # Let us set the adequate environment when loading perl-fth env.set("JAVATEX_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/perl-json-xs/package.py b/var/spack/repos/builtin/packages/perl-json-xs/package.py index 45093ce0ae4..b1c54bc02b1 100644 --- a/var/spack/repos/builtin/packages/perl-json-xs/package.py +++ b/var/spack/repos/builtin/packages/perl-json-xs/package.py @@ -19,5 +19,5 @@ class PerlJsonXs(PerlPackage): depends_on("perl-common-sense", type=("build", "run", "test")) depends_on("perl-types-serialiser", type=("build", "run", "test")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PERL_CANARY_STABILITY_NOPROMPT", "1") diff --git a/var/spack/repos/builtin/packages/perl-sereal-decoder/package.py b/var/spack/repos/builtin/packages/perl-sereal-decoder/package.py index 359f0dc89f9..cf9acb541fc 100644 --- a/var/spack/repos/builtin/packages/perl-sereal-decoder/package.py +++ b/var/spack/repos/builtin/packages/perl-sereal-decoder/package.py @@ -27,7 +27,7 @@ class PerlSerealDecoder(PerlPackage): depends_on("perl-test-warn", type=("build", "link", "test")) depends_on("zstd", type=("build", "link", "run", "test")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # These are not currently available in Spack env.set("SEREAL_USE_BUNDLED_CSNAPPY", "1") env.set("SEREAL_USE_BUNDLED_MINIZ", "1") diff --git a/var/spack/repos/builtin/packages/perl-sereal-encoder/package.py b/var/spack/repos/builtin/packages/perl-sereal-encoder/package.py index 47e4cc57fc9..13fbb548e73 100644 --- a/var/spack/repos/builtin/packages/perl-sereal-encoder/package.py +++ b/var/spack/repos/builtin/packages/perl-sereal-encoder/package.py @@ -28,7 +28,7 @@ class PerlSerealEncoder(PerlPackage): depends_on("perl-test-warn", type=("build", "link", "test")) depends_on("zstd", type=("build", "link", "run", "test")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # These are not currently available in Spack env.set("SEREAL_USE_BUNDLED_CSNAPPY", "1") env.set("SEREAL_USE_BUNDLED_MINIZ", "1") diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index f0dd6e9799b..6b5af2e8f54 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -470,7 +470,7 @@ def install_cpanm(self): maker() maker("install") - def _setup_dependent_env(self, env, dependent_spec): + def _setup_dependent_env(self, env: EnvironmentModifications, dependent_spec: Spec): """Set PATH and PERL5LIB to include the extension and any other perl extensions it depends on, assuming they were installed with INSTALL_BASE defined.""" @@ -483,10 +483,14 @@ def _setup_dependent_env(self, env, dependent_spec): if sys.platform == "win32": env.append_path("PATH", self.prefix.bin) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self._setup_dependent_env(env, dependent_spec) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self._setup_dependent_env(env, dependent_spec) def setup_dependent_package(self, module, dependent_spec): @@ -505,7 +509,7 @@ def setup_dependent_package(self, module, dependent_spec): # Add variables for library directory module.perl_lib_dir = dependent_spec.prefix.lib.perl5 - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if sys.platform == "win32": env.append_path("PATH", self.prefix.bin) return @@ -519,10 +523,10 @@ def setup_build_environment(self, env): env.set("MACOSX_DEPLOYMENT_TARGET", "10.16") # This is how we tell perl the locations of bzip and zlib. - env.set("BUILD_BZIP2", 0) + env.set("BUILD_BZIP2", "0") env.set("BZIP2_INCLUDE", spec["bzip2"].prefix.include) env.set("BZIP2_LIB", spec["bzip2"].libs.directories[0]) - env.set("BUILD_ZLIB", 0) + env.set("BUILD_ZLIB", "0") env.set("ZLIB_INCLUDE", spec["zlib-api"].prefix.include) env.set("ZLIB_LIB", spec["zlib-api"].libs.directories[0]) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index ed377bab791..510dac5fa7c 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -770,17 +770,19 @@ def install(self, spec, prefix): if self.run_tests: make('check PETSC_ARCH="" PETSC_DIR={0}'.format(prefix), parallel=False) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # configure fails if these env vars are set outside of Spack env.unset("PETSC_DIR") env.unset("PETSC_ARCH") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Set PETSC_DIR in the module file env.set("PETSC_DIR", self.prefix) env.unset("PETSC_ARCH") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Set up PETSC_DIR for everyone using PETSc package env.set("PETSC_DIR", self.prefix) env.unset("PETSC_ARCH") diff --git a/var/spack/repos/builtin/packages/pfind/package.py b/var/spack/repos/builtin/packages/pfind/package.py index 370c8330165..db750152353 100644 --- a/var/spack/repos/builtin/packages/pfind/package.py +++ b/var/spack/repos/builtin/packages/pfind/package.py @@ -19,7 +19,7 @@ class Pfind(Package): depends_on("mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CC", self.spec["mpi"].mpicc, force=True) env.set("CXX", self.spec["mpi"].mpicxx, force=True) diff --git a/var/spack/repos/builtin/packages/pfunit/package.py b/var/spack/repos/builtin/packages/pfunit/package.py index 6424ceb5cc3..f5831c2425d 100644 --- a/var/spack/repos/builtin/packages/pfunit/package.py +++ b/var/spack/repos/builtin/packages/pfunit/package.py @@ -233,6 +233,6 @@ def compiler_vendor(self): return value raise InstallError("Unsupported compiler.") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:3"): env.set("F90_VENDOR", self.compiler_vendor()) diff --git a/var/spack/repos/builtin/packages/pgplot/package.py b/var/spack/repos/builtin/packages/pgplot/package.py index d6b6c7ef449..07bc4f00221 100644 --- a/var/spack/repos/builtin/packages/pgplot/package.py +++ b/var/spack/repos/builtin/packages/pgplot/package.py @@ -119,7 +119,7 @@ def edit(self, spec, prefix): for key, value in sub.items(): filter_file(key, value, conf) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+X" in self.spec: env.append_flags("LIBS", self.spec["libx11"].libs.ld_flags) if "+png" in self.spec: @@ -174,10 +174,12 @@ def libs(self): libnames = ["libcpgplot", "libpgplot"] return find_libraries(libnames, root=self.prefix, shared=shared, recursive=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PGPLOT_FONT", self.prefix.include + "/grfont.dat") env.set("PGPLOT_DIR", self.prefix.lib + "/pgplot5") - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("PGPLOT_FONT", self.prefix.include + "/grfont.dat") env.set("PGPLOT_DIR", self.prefix.lib + "/pgplot5") diff --git a/var/spack/repos/builtin/packages/ph5concat/package.py b/var/spack/repos/builtin/packages/ph5concat/package.py index 04e02e6b00b..97f5ceb3b97 100644 --- a/var/spack/repos/builtin/packages/ph5concat/package.py +++ b/var/spack/repos/builtin/packages/ph5concat/package.py @@ -25,7 +25,7 @@ class Ph5concat(AutotoolsPackage): variant("profiling", default=False, description="Enable profiling support") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LIBS", "-ldl -lz") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/phist/package.py b/var/spack/repos/builtin/packages/phist/package.py index dbc92168dd6..07df9476e68 100644 --- a/var/spack/repos/builtin/packages/phist/package.py +++ b/var/spack/repos/builtin/packages/phist/package.py @@ -253,7 +253,7 @@ def patch(self): "drivers/matfuncs/matpde3d.F90", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SPACK_SBANG", sbang.sbang_install_path()) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py index f5da7fd82a3..25f23eef034 100644 --- a/var/spack/repos/builtin/packages/picard/package.py +++ b/var/spack/repos/builtin/packages/picard/package.py @@ -194,7 +194,7 @@ def install(self, spec, prefix): filter_file("^java", java, script, **kwargs) filter_file("picard.jar", join_path(prefix.bin, "picard.jar"), script, **kwargs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """The Picard docs suggest setting this as a convenience.""" env.prepend_path("PICARD", join_path(self.prefix.bin, "picard.jar")) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 4a37663884a..45a1da60321 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -46,7 +46,9 @@ def determine_version(cls, exe): return version - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Adds the ACLOCAL path for autotools.""" env.append_path("ACLOCAL_PATH", self.prefix.share.aclocal) diff --git a/var/spack/repos/builtin/packages/pkgconf/package.py b/var/spack/repos/builtin/packages/pkgconf/package.py index 9070bd976da..e6303291dcd 100644 --- a/var/spack/repos/builtin/packages/pkgconf/package.py +++ b/var/spack/repos/builtin/packages/pkgconf/package.py @@ -56,7 +56,9 @@ def determine_version(cls, exe): return version - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Adds the ACLOCAL path for autotools.""" env.append_path("ACLOCAL_PATH", self.prefix.share.aclocal) diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py index 7228923e47a..509691955de 100644 --- a/var/spack/repos/builtin/packages/planck-likelihood/package.py +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -116,12 +116,14 @@ def install(self, spec, prefix): for dir in dirs: install_tree(dir, join_path(prefix, "share", "clik", dir)) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("CLIK_PATH", self.prefix) env.set("CLIK_DATA", self.prefix.share.clik) env.set("CLIK_PLUGIN", "rel2015") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CLIK_PATH", self.prefix) env.set("CLIK_DATA", self.prefix.share.clik) env.set("CLIK_PLUGIN", "rel2015") diff --git a/var/spack/repos/builtin/packages/plantuml/package.py b/var/spack/repos/builtin/packages/plantuml/package.py index 16c5c197307..2ed3ea69fb4 100644 --- a/var/spack/repos/builtin/packages/plantuml/package.py +++ b/var/spack/repos/builtin/packages/plantuml/package.py @@ -35,5 +35,5 @@ def install(self, spec, prefix): plantuml_wrapper = join_path(os.path.dirname(__file__), "plantuml") install(plantuml_wrapper, prefix.bin.plantuml) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PLANTUML_JAR_LOCATION", join_path(self.prefix.bin, "plantuml.jar")) diff --git a/var/spack/repos/builtin/packages/plink-ng/package.py b/var/spack/repos/builtin/packages/plink-ng/package.py index 794d6516f19..0ea290f4e79 100644 --- a/var/spack/repos/builtin/packages/plink-ng/package.py +++ b/var/spack/repos/builtin/packages/plink-ng/package.py @@ -25,7 +25,7 @@ def url_for_version(self, ver): template = "https://www.cog-genomics.org/static/bin/plink2_src_{0}.zip" return template.format(ver) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: zlib = join_path(self.spec["zlib-api"].prefix.lib, "libz.a") env.set("ZLIB", zlib) diff --git a/var/spack/repos/builtin/packages/plink/package.py b/var/spack/repos/builtin/packages/plink/package.py index 25b62046370..f587d719c3a 100644 --- a/var/spack/repos/builtin/packages/plink/package.py +++ b/var/spack/repos/builtin/packages/plink/package.py @@ -59,7 +59,7 @@ def install(self, spec, prefix): install("plink", prefix.bin) @when("@1.9-beta6.27:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BLASFLAGS", self.spec["blas"].libs.ld_flags) env.set("ZLIB", self.spec["zlib-api"].libs.ld_flags) diff --git a/var/spack/repos/builtin/packages/ploticus/package.py b/var/spack/repos/builtin/packages/ploticus/package.py index 6afdbe504e5..80d1cbf4252 100644 --- a/var/spack/repos/builtin/packages/ploticus/package.py +++ b/var/spack/repos/builtin/packages/ploticus/package.py @@ -28,7 +28,7 @@ def url_for_version(self, version): "https://sourceforge.net/projects/ploticus/files/ploticus/2.42/ploticus242_src.tar.gz" ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PLOTICUS_PREFABS", self.prefix.prefabs) def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py index a3dff4db87e..c6fb756e45b 100644 --- a/var/spack/repos/builtin/packages/podio/package.py +++ b/var/spack/repos/builtin/packages/podio/package.py @@ -143,7 +143,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:0.99"): # After 0.99 podio installs its python bindings into a more standard place env.prepend_path("PYTHONPATH", self.prefix.python) @@ -157,7 +157,9 @@ def setup_run_environment(self, env): # Frame header needs to be available for python bindings env.prepend_path("ROOT_INCLUDE_PATH", self.prefix.include) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.satisfies("@:0.99"): env.prepend_path("PYTHONPATH", self.prefix.python) diff --git a/var/spack/repos/builtin/packages/postgis/package.py b/var/spack/repos/builtin/packages/postgis/package.py index 7e6c69d6c1b..1c894f513d4 100644 --- a/var/spack/repos/builtin/packages/postgis/package.py +++ b/var/spack/repos/builtin/packages/postgis/package.py @@ -51,10 +51,10 @@ class Postgis(AutotoolsPackage): depends_on("gtkplus@:2.24.32", when="+gui") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("POSTGIS_GDAL_ENABLED_DRIVERS", "ENABLE_ALL") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("POSTGIS_GDAL_ENABLED_DRIVERS", "ENABLE_ALL") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/postgresql/package.py b/var/spack/repos/builtin/packages/postgresql/package.py index 3219184075b..69a44dd26fb 100644 --- a/var/spack/repos/builtin/packages/postgresql/package.py +++ b/var/spack/repos/builtin/packages/postgresql/package.py @@ -123,7 +123,7 @@ def install(self, spec, prefix): else: super().install(spec, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("+perl"): @@ -133,7 +133,9 @@ def setup_run_environment(self, env): if spec.satisfies("+python"): env.prepend_path("PYTHONPATH", self.prefix.lib) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec if spec.satisfies("+perl"): @@ -143,7 +145,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): if spec.satisfies("+python"): env.prepend_path("PYTHONPATH", self.prefix.lib) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: spec = self.spec if spec.satisfies("+perl"): diff --git a/var/spack/repos/builtin/packages/powertop/package.py b/var/spack/repos/builtin/packages/powertop/package.py index fea594931c6..97c0eed1e8d 100644 --- a/var/spack/repos/builtin/packages/powertop/package.py +++ b/var/spack/repos/builtin/packages/powertop/package.py @@ -19,5 +19,5 @@ class Powertop(AutotoolsPackage): depends_on("libnl") depends_on("ncurses", type="link") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/preseq/package.py b/var/spack/repos/builtin/packages/preseq/package.py index 5bb181be2a7..c5b50dc00a9 100644 --- a/var/spack/repos/builtin/packages/preseq/package.py +++ b/var/spack/repos/builtin/packages/preseq/package.py @@ -26,5 +26,5 @@ class Preseq(MakefilePackage): depends_on("samtools") depends_on("gsl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) diff --git a/var/spack/repos/builtin/packages/prism/package.py b/var/spack/repos/builtin/packages/prism/package.py index 89885202805..4005a22bb8d 100644 --- a/var/spack/repos/builtin/packages/prism/package.py +++ b/var/spack/repos/builtin/packages/prism/package.py @@ -29,7 +29,7 @@ class Prism(MakefilePackage): patch("Makefile.patch", when="target=aarch64:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PRISM_DIR", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/procps-ng/package.py b/var/spack/repos/builtin/packages/procps-ng/package.py index 5166c7f4692..ff17d938cb0 100644 --- a/var/spack/repos/builtin/packages/procps-ng/package.py +++ b/var/spack/repos/builtin/packages/procps-ng/package.py @@ -17,5 +17,5 @@ class ProcpsNg(AutotoolsPackage): depends_on("c", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/prodigal/package.py b/var/spack/repos/builtin/packages/prodigal/package.py index 1fcca6bb970..75a97b36c2f 100644 --- a/var/spack/repos/builtin/packages/prodigal/package.py +++ b/var/spack/repos/builtin/packages/prodigal/package.py @@ -21,5 +21,5 @@ class Prodigal(MakefilePackage): def install(self, spec, prefix): make("INSTALLDIR={0}".format(self.prefix), "install") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/professor/package.py b/var/spack/repos/builtin/packages/professor/package.py index 66301ee5703..7a48f7214e8 100644 --- a/var/spack/repos/builtin/packages/professor/package.py +++ b/var/spack/repos/builtin/packages/professor/package.py @@ -35,7 +35,7 @@ class Professor(Package): extends("python") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PROF_VERSION", self.spec.version) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 8a39abbbb33..4d91f366c10 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -134,7 +134,7 @@ class Proj(CMakePackage, AutotoolsPackage): conditional("autotools", when="@:8"), conditional("cmake", when="@5:"), default="cmake" ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # PROJ_LIB doesn't need to be set. However, it may be set by conda. # If an incompatible version of PROJ is found in PROJ_LIB, it can # cause the package to fail at run-time. See the following for details: @@ -144,7 +144,7 @@ def setup_run_environment(self, env): class AnyBuilder(BaseBuilder): - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PROJ_LIB", join_path(self.pkg.stage.source_path, "nad")) @run_after("install") diff --git a/var/spack/repos/builtin/packages/pscmc/package.py b/var/spack/repos/builtin/packages/pscmc/package.py index 8808f562198..ff974d90fee 100644 --- a/var/spack/repos/builtin/packages/pscmc/package.py +++ b/var/spack/repos/builtin/packages/pscmc/package.py @@ -24,7 +24,7 @@ class Pscmc(MakefilePackage): depends_on("c", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SCMC_COMPILE_ROOT", self.prefix.source) env.set("SCMC_ROOT", join_path(self.prefix.source, "runtime_passes")) env.set("STDLIB", join_path(self.prefix.source, "stdlib.scm")) diff --git a/var/spack/repos/builtin/packages/psmc/package.py b/var/spack/repos/builtin/packages/psmc/package.py index 13509ae8049..c57a9d18a1f 100644 --- a/var/spack/repos/builtin/packages/psmc/package.py +++ b/var/spack/repos/builtin/packages/psmc/package.py @@ -20,7 +20,7 @@ class Psmc(MakefilePackage): depends_on("zlib-api", type="link") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.bin.utils) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/purify/package.py b/var/spack/repos/builtin/packages/purify/package.py index bbb01fefe94..4ee6b337cc4 100644 --- a/var/spack/repos/builtin/packages/purify/package.py +++ b/var/spack/repos/builtin/packages/purify/package.py @@ -56,7 +56,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+tests" in self.spec: env.prepend_path("PATH", self.spec.prefix.tests) if "+benchmarks" in self.spec: diff --git a/var/spack/repos/builtin/packages/pvm/package.py b/var/spack/repos/builtin/packages/pvm/package.py index fc39322afee..784a039c4d9 100644 --- a/var/spack/repos/builtin/packages/pvm/package.py +++ b/var/spack/repos/builtin/packages/pvm/package.py @@ -48,7 +48,7 @@ def patch(self): "^SHAREDCFLAGS =", "SHAREDCFLAGS = -fPIC", join_path("conf", pvm_arch + ".def") ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: tirpc = self.spec["libtirpc"].prefix env.prepend_path("SPACK_INCLUDE_DIRS", tirpc.include.tirpc) env.set("SPACK_LDLIBS", "-ltirpc") @@ -59,7 +59,7 @@ def install(self, spec, prefix): install_tree("lib", prefix.lib) install_tree("man", prefix.man) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Before running PVM, you must set the environment # variable "PVM_ROOT" to the path where PVM resides pvm_arch = self.pvm_arch(self.prefix) diff --git a/var/spack/repos/builtin/packages/py-amici/package.py b/var/spack/repos/builtin/packages/py-amici/package.py index ae9dcc869c6..f128f311bd1 100644 --- a/var/spack/repos/builtin/packages/py-amici/package.py +++ b/var/spack/repos/builtin/packages/py-amici/package.py @@ -40,8 +40,8 @@ class PyAmici(PythonPackage): depends_on("py-toposort", type=("build", "run")) depends_on("py-mpmath", when="@0.16.0:", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("BLAS_LIBS", " ".join(self.spec["blas"].libs)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BLAS_LIBS", " ".join(self.spec["blas"].libs)) diff --git a/var/spack/repos/builtin/packages/py-amqp/package.py b/var/spack/repos/builtin/packages/py-amqp/package.py index efdfd3de88e..463fe093750 100644 --- a/var/spack/repos/builtin/packages/py-amqp/package.py +++ b/var/spack/repos/builtin/packages/py-amqp/package.py @@ -36,5 +36,5 @@ class PyAmqp(PythonPackage): depends_on("py-vine@1.1.3:4", when="@2", type=("build", "run")) depends_on("py-vine@5.0.0", when="@5.0.0:5", type=("build", "run")) - def setup_build_environment(self, env): - env.set("CELERY_ENABLE_SPEEDUPS", True) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("CELERY_ENABLE_SPEEDUPS", "True") diff --git a/var/spack/repos/builtin/packages/py-antspyx/package.py b/var/spack/repos/builtin/packages/py-antspyx/package.py index 13da3e02158..28a9b29306e 100644 --- a/var/spack/repos/builtin/packages/py-antspyx/package.py +++ b/var/spack/repos/builtin/packages/py-antspyx/package.py @@ -55,5 +55,5 @@ class PyAntspyx(PythonPackage): when="@0.3.7", # ANTs dependency needs updating for every version ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("ITK_DIR", self.spec["itk"].prefix) diff --git a/var/spack/repos/builtin/packages/py-anuga/package.py b/var/spack/repos/builtin/packages/py-anuga/package.py index c349905ba36..8fae81f8f82 100644 --- a/var/spack/repos/builtin/packages/py-anuga/package.py +++ b/var/spack/repos/builtin/packages/py-anuga/package.py @@ -45,7 +45,7 @@ class PyAnuga(PythonPackage): # https://github.com/GeoscienceAustralia/anuga_core/issues/247 conflicts("%apple-clang@12:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.run_tests: env.prepend_path("PATH", self.spec["mpi"].prefix.bin) diff --git a/var/spack/repos/builtin/packages/py-arm-pyart/package.py b/var/spack/repos/builtin/packages/py-arm-pyart/package.py index 137f540368b..d405fbe4126 100644 --- a/var/spack/repos/builtin/packages/py-arm-pyart/package.py +++ b/var/spack/repos/builtin/packages/py-arm-pyart/package.py @@ -65,7 +65,7 @@ class PyArmPyart(PythonPackage): patch("StringIO.patch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+rsl" in self.spec: env.set("RSL_PATH", self.spec["rsl"].prefix) else: diff --git a/var/spack/repos/builtin/packages/py-awkward/package.py b/var/spack/repos/builtin/packages/py-awkward/package.py index f5db8ec1cb8..66f34e7fac3 100644 --- a/var/spack/repos/builtin/packages/py-awkward/package.py +++ b/var/spack/repos/builtin/packages/py-awkward/package.py @@ -92,5 +92,5 @@ class PyAwkward(PythonPackage): depends_on("py-fsspec@2022.11.0:", when="@2.6.0:", type=("build", "run")) @when("@1.9.0:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CMAKE_ARGS", "-DAWKWARD_EXTERNAL_PYBIND11=TRUE") diff --git a/var/spack/repos/builtin/packages/py-awscrt/package.py b/var/spack/repos/builtin/packages/py-awscrt/package.py index 21890f5047e..2aeb2754f09 100644 --- a/var/spack/repos/builtin/packages/py-awscrt/package.py +++ b/var/spack/repos/builtin/packages/py-awscrt/package.py @@ -28,6 +28,6 @@ class PyAwscrt(PythonPackage): depends_on("py-setuptools", type=("build")) # On Linux, tell aws-crt-python to use libcrypto from spack (openssl) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: with when("platform=linux"): - env.set("AWS_CRT_BUILD_USE_SYSTEM_LIBCRYPTO", 1) + env.set("AWS_CRT_BUILD_USE_SYSTEM_LIBCRYPTO", "1") diff --git a/var/spack/repos/builtin/packages/py-ax-platform/package.py b/var/spack/repos/builtin/packages/py-ax-platform/package.py index 206eb20e580..d091f781814 100644 --- a/var/spack/repos/builtin/packages/py-ax-platform/package.py +++ b/var/spack/repos/builtin/packages/py-ax-platform/package.py @@ -34,5 +34,5 @@ class PyAxPlatform(PythonPackage): depends_on("py-typeguard@2.13.3", type=("build", "run")) depends_on("py-plotly@5.12.0:", type=("build", "run")) - def setup_build_environment(self, env): - env.set("ALLOW_BOTORCH_LATEST", True) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("ALLOW_BOTORCH_LATEST", "True") diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index 338f5161e4e..65b484cd9a7 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -35,7 +35,7 @@ class PyBasemap(PythonPackage): # directories (i.e., matplotlib and basemap) depends_on("py-setuptools", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GEOS_DIR", self.spec["geos"].prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-bitshuffle/package.py b/var/spack/repos/builtin/packages/py-bitshuffle/package.py index e3eba7167d0..e3fce25d494 100644 --- a/var/spack/repos/builtin/packages/py-bitshuffle/package.py +++ b/var/spack/repos/builtin/packages/py-bitshuffle/package.py @@ -25,5 +25,5 @@ class PyBitshuffle(PythonPackage): # setup.py:220 depends_on("hdf5@1.8.11:~mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5_DIR", self.spec["hdf5"].prefix) diff --git a/var/spack/repos/builtin/packages/py-blis/package.py b/var/spack/repos/builtin/packages/py-blis/package.py index e14b46e0136..6845196fa18 100644 --- a/var/spack/repos/builtin/packages/py-blis/package.py +++ b/var/spack/repos/builtin/packages/py-blis/package.py @@ -25,6 +25,6 @@ class PyBlis(PythonPackage): depends_on("py-cython@0.25:", when="@0.7.9:", type="build") depends_on("py-numpy@1.15:", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BLIS_COMPILER", spack_cc) env.set("BLIS_ARCH", "generic") diff --git a/var/spack/repos/builtin/packages/py-blosc/package.py b/var/spack/repos/builtin/packages/py-blosc/package.py index 4e8f4650310..0abab1cf7f8 100644 --- a/var/spack/repos/builtin/packages/py-blosc/package.py +++ b/var/spack/repos/builtin/packages/py-blosc/package.py @@ -40,6 +40,6 @@ class PyBlosc(PythonPackage): # https://github.com/Blosc/python-blosc/releases/tag/v1.11.2 depends_on("c-blosc@1.21.6", type=("build", "run"), when="@1.11.2 ^python@3.12:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("^c-blosc"): - env.set("USE_SYSTEM_BLOSC", 1) + env.set("USE_SYSTEM_BLOSC", "1") diff --git a/var/spack/repos/builtin/packages/py-blosc2/package.py b/var/spack/repos/builtin/packages/py-blosc2/package.py index 130bf95601e..e67ff7216db 100644 --- a/var/spack/repos/builtin/packages/py-blosc2/package.py +++ b/var/spack/repos/builtin/packages/py-blosc2/package.py @@ -39,7 +39,7 @@ class PyBlosc2(PythonPackage): depends_on("ninja") depends_on("pkgconfig") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: 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] diff --git a/var/spack/repos/builtin/packages/py-bluepyopt/package.py b/var/spack/repos/builtin/packages/py-bluepyopt/package.py index 855ae57a669..b32ef0c493e 100644 --- a/var/spack/repos/builtin/packages/py-bluepyopt/package.py +++ b/var/spack/repos/builtin/packages/py-bluepyopt/package.py @@ -35,6 +35,6 @@ class PyBluepyopt(PythonPackage): depends_on("neuron@7.4:", type=("build", "run"), when="@:1.14.4") depends_on("neuron@7.8:", type=("build", "run"), when="@1.14.11:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.unset("PMI_RANK") env.set("NEURON_INIT_MPI", "0") diff --git a/var/spack/repos/builtin/packages/py-botorch/package.py b/var/spack/repos/builtin/packages/py-botorch/package.py index 2f6bf960feb..d9050955b76 100644 --- a/var/spack/repos/builtin/packages/py-botorch/package.py +++ b/var/spack/repos/builtin/packages/py-botorch/package.py @@ -49,6 +49,6 @@ class PyBotorch(PythonPackage): depends_on("py-linear-operator@0.4.0:", when="@0.8.4:") depends_on("py-linear-operator@0.3.0:", when="@0.8.3:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@0.8.3:"): - env.set("ALLOW_LATEST_GPYTORCH_LINOP", True) + env.set("ALLOW_LATEST_GPYTORCH_LINOP", "True") diff --git a/var/spack/repos/builtin/packages/py-cartopy/package.py b/var/spack/repos/builtin/packages/py-cartopy/package.py index eb78b2406da..df2da49259c 100644 --- a/var/spack/repos/builtin/packages/py-cartopy/package.py +++ b/var/spack/repos/builtin/packages/py-cartopy/package.py @@ -144,7 +144,7 @@ def url_for_version(self, version): name = "Cartopy" return url.format(name, version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Needed for `spack install --test=root py-cartopy` library_dirs = [] for dep in self.spec.dependencies(deptype="link"): @@ -163,5 +163,7 @@ def setup_build_environment(self, env): setup_run_environment = setup_build_environment # Needed for `spack test run py-foo` where `py-foo` depends on `py-cartopy` - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_build_environment(env) diff --git a/var/spack/repos/builtin/packages/py-cdo/package.py b/var/spack/repos/builtin/packages/py-cdo/package.py index db281238bbd..1a495ce1f36 100644 --- a/var/spack/repos/builtin/packages/py-cdo/package.py +++ b/var/spack/repos/builtin/packages/py-cdo/package.py @@ -23,5 +23,5 @@ class PyCdo(PythonPackage): depends_on("py-xarray", type=("build", "run")) depends_on("py-six", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CDO", self.spec["cdo"].prefix.bin.cdo) diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index 049dfcf38c7..d29eda02d39 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -75,7 +75,7 @@ def flag_handler(self, name, flags): return (flags, None, None) return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # This sets the compiler (and flags) that distutils will use # to create the final shared library. It will use the # compiler specified by the environment variable 'CC' for all diff --git a/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py index 09a055f10cc..01d3c661c2e 100644 --- a/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py +++ b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py @@ -24,6 +24,6 @@ class PyChainforgecodegen(PythonPackage): depends_on("py-pyyaml", type=("build", "run")) depends_on("py-setuptools", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix) env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-charm4py/package.py b/var/spack/repos/builtin/packages/py-charm4py/package.py index d9383b86d01..2d011b02e8e 100644 --- a/var/spack/repos/builtin/packages/py-charm4py/package.py +++ b/var/spack/repos/builtin/packages/py-charm4py/package.py @@ -63,7 +63,7 @@ class PyCharm4py(PythonPackage): # This sets the SPACK_CHARM4PY_EXTRALIBS env var which the # py-charm4py.makefile.patch adds to the build/link command for # libcharm.so. - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SPACK_CHARM4PY_EXTRALIBS", self.spec["cuda"].libs.ld_flags) def install_options(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index 1e9387d692c..2872a3c3df2 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -81,6 +81,6 @@ class PyCryptography(PythonPackage): # See reference: https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli depends_on("git", type="build", when="@35:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@35:"): env.set("CARGO_NET_GIT_FETCH_WITH_CLI", "true") diff --git a/var/spack/repos/builtin/packages/py-cupy/package.py b/var/spack/repos/builtin/packages/py-cupy/package.py index 2211419d3f5..2e892bfa370 100644 --- a/var/spack/repos/builtin/packages/py-cupy/package.py +++ b/var/spack/repos/builtin/packages/py-cupy/package.py @@ -78,8 +78,8 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage): conflicts("+cuda +rocm") conflicts("+cuda cuda_arch=none") - def setup_build_environment(self, env): - env.set("CUPY_NUM_BUILD_JOBS", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("CUPY_NUM_BUILD_JOBS", str(make_jobs)) if self.spec.satisfies("+cuda"): cuda_arch = self.spec.variants["cuda_arch"].value arch_str = ";".join("arch=compute_{0},code=sm_{0}".format(i) for i in cuda_arch) @@ -107,4 +107,4 @@ def setup_build_environment(self, env): env.set("HIPCC", self.spec["hip"].hipcc) env.set("ROCM_HOME", self.spec["hipcub"].prefix) - env.set("CUPY_INSTALL_USE_HIP", 1) + env.set("CUPY_INSTALL_USE_HIP", "1") diff --git a/var/spack/repos/builtin/packages/py-cvxopt/package.py b/var/spack/repos/builtin/packages/py-cvxopt/package.py index d575f054ad1..48faa489501 100644 --- a/var/spack/repos/builtin/packages/py-cvxopt/package.py +++ b/var/spack/repos/builtin/packages/py-cvxopt/package.py @@ -55,7 +55,7 @@ class PyCvxopt(PythonPackage): # depends_on('mosek@8:', when='+mosek') depends_on("dsdp@5.8:", when="+dsdp") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # BLAS/LAPACK Libraries @@ -78,7 +78,7 @@ def setup_build_environment(self, env): # GSL Libraries if "+gsl" in spec: - env.set("CVXOPT_BUILD_GSL", 1) + env.set("CVXOPT_BUILD_GSL", "1") # Directory containing libgsl env.set("CVXOPT_GSL_LIB_DIR", spec["gsl"].libs.directories[0]) @@ -86,12 +86,12 @@ def setup_build_environment(self, env): # Directory containing the GSL header files env.set("CVXOPT_GSL_INC_DIR", spec["gsl"].headers.directories[0]) else: - env.set("CVXOPT_BUILD_GSL", 0) + env.set("CVXOPT_BUILD_GSL", "0") # FFTW Libraries if "+fftw" in spec: - env.set("CVXOPT_BUILD_FFTW", 1) + env.set("CVXOPT_BUILD_FFTW", "1") # Directory containing libfftw3 env.set("CVXOPT_FFTW_LIB_DIR", spec["fftw"].libs.directories[0]) @@ -99,12 +99,12 @@ def setup_build_environment(self, env): # Directory containing fftw.h env.set("CVXOPT_FFTW_INC_DIR", spec["fftw"].headers.directories[0]) else: - env.set("CVXOPT_BUILD_FFTW", 0) + env.set("CVXOPT_BUILD_FFTW", "0") # GLPK Libraries if "+glpk" in spec: - env.set("CVXOPT_BUILD_GLPK", 1) + env.set("CVXOPT_BUILD_GLPK", "1") # Directory containing libglpk env.set("CVXOPT_GLPK_LIB_DIR", spec["glpk"].libs.directories[0]) @@ -112,12 +112,12 @@ def setup_build_environment(self, env): # Directory containing glpk.h env.set("CVXOPT_GLPK_INC_DIR", spec["glpk"].headers.directories[0]) else: - env.set("CVXOPT_BUILD_GLPK", 0) + env.set("CVXOPT_BUILD_GLPK", "0") # DSDP Libraries if "+dsdp" in spec: - env.set("CVXOPT_BUILD_DSDP", 1) + env.set("CVXOPT_BUILD_DSDP", "1") # Directory containing libdsdp env.set("CVXOPT_DSDP_LIB_DIR", spec["dsdp"].libs.directories[0]) diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index 8f1bb659d48..74749519d89 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -114,7 +114,9 @@ def command(self): """Returns the Cython command""" return Executable(self.prefix.bin.cython) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # If cython is used as a dep, ensure it's used even when pre-generated # C files are distributed in the tarball. Cython is a small build dep, and # the time generating C-files is typically less than compiling them. So it's 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 d6c77f7dd0a..6aef560caa1 100644 --- a/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py +++ b/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py @@ -33,5 +33,5 @@ def create_share_folder(self): for d in ("models", "tools"): mv(d, share_dir) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("DEEPSIG_ROOT", self.prefix.share.deepsig) diff --git a/var/spack/repos/builtin/packages/py-devito/package.py b/var/spack/repos/builtin/packages/py-devito/package.py index 0c46c04225a..4265f46ea13 100644 --- a/var/spack/repos/builtin/packages/py-devito/package.py +++ b/var/spack/repos/builtin/packages/py-devito/package.py @@ -65,6 +65,6 @@ def add_examples_dir(self): # Add file `__init__py` to examples/ so it is picked up by setuptools touch("examples/__init__.py") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Make benchmark.py available env.prepend_path("DEVITO_HOME", 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 596c7e1b359..a8f5f39ccc5 100644 --- a/var/spack/repos/builtin/packages/py-dgl/package.py +++ b/var/spack/repos/builtin/packages/py-dgl/package.py @@ -139,7 +139,7 @@ def install(self, spec, prefix): # Work around installation bug: https://github.com/dmlc/dgl/issues/1379 install_tree(prefix.dgl, prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # https://docs.dgl.ai/install/backend.html backend = self.spec.variants["backend"].value env.set("DGLBACKEND", backend) diff --git a/var/spack/repos/builtin/packages/py-dlio-profiler-py/package.py b/var/spack/repos/builtin/packages/py-dlio-profiler-py/package.py index 204e0bbe7b0..4fdebcd7664 100644 --- a/var/spack/repos/builtin/packages/py-dlio-profiler-py/package.py +++ b/var/spack/repos/builtin/packages/py-dlio-profiler-py/package.py @@ -53,7 +53,7 @@ class PyDlioProfilerPy(PythonPackage): depends_on("ninja", type="build") depends_on("cmake@3.12:", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@0.0.6:"): env.set("DLIO_PROFILER_INSTALL_DIR", self.prefix) env.set("DLIO_PROFILER_PYTHON_SITE", python_purelib) diff --git a/var/spack/repos/builtin/packages/py-eccodes/package.py b/var/spack/repos/builtin/packages/py-eccodes/package.py index fa86ae6f600..f987b1bf237 100644 --- a/var/spack/repos/builtin/packages/py-eccodes/package.py +++ b/var/spack/repos/builtin/packages/py-eccodes/package.py @@ -24,20 +24,24 @@ class PyEccodes(PythonPackage): depends_on("py-findlibs", type=("build", "run")) depends_on("eccodes@2.21.0:+shared", type="run") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: eccodes_spec = self.spec["eccodes:c,shared"] # ECCODES_HOME has the highest precedence when searching for the library with py-findlibs: env.set("ECCODES_HOME", eccodes_spec.prefix) # but not if ecmwflibs (https://pypi.org/project/ecmwflibs/) is in the PYTHONPATH: env.set("ECMWFLIBS_ECCODES", eccodes_spec.libs.files[0]) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_build_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_build_environment(env) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_build_environment(env) def test_selfcheck(self): diff --git a/var/spack/repos/builtin/packages/py-fastavro/package.py b/var/spack/repos/builtin/packages/py-fastavro/package.py index 26b0c1736d5..0bd6ef1f052 100644 --- a/var/spack/repos/builtin/packages/py-fastavro/package.py +++ b/var/spack/repos/builtin/packages/py-fastavro/package.py @@ -26,9 +26,9 @@ class PyFastavro(PythonPackage): version("0.23.3", sha256="4e4bebe7b43b5cdad030bdbeb7f7f0ccb537ea025a9e28c7a4826876872fc84b") version("0.23.2", sha256="3b31707d6eaa1e98fc60536d0b3483bafb78be39bf9f0a1affe1b353e70bd5b2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Use cython for building as *.c files are missing from repo - env.set("FASTAVRO_USE_CYTHON", 1) + env.set("FASTAVRO_USE_CYTHON", "1") depends_on("python@3.5:", type=("build", "run")) depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-flash-attn/package.py b/var/spack/repos/builtin/packages/py-flash-attn/package.py index 61fe469b629..acf3256b07e 100644 --- a/var/spack/repos/builtin/packages/py-flash-attn/package.py +++ b/var/spack/repos/builtin/packages/py-flash-attn/package.py @@ -49,6 +49,6 @@ class PyFlashAttn(PythonPackage): depends_on("python@3.7:", type=("build", "run"), when="@:2.5") depends_on("python@3.8:", type=("build", "run"), when="@2.6:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # If oom error, try lowering the number of jobs with `spack install -j` - env.set("MAX_JOBS", make_jobs) + env.set("MAX_JOBS", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/py-flye/package.py b/var/spack/repos/builtin/packages/py-flye/package.py index 842549d27b0..cc117ba03fe 100644 --- a/var/spack/repos/builtin/packages/py-flye/package.py +++ b/var/spack/repos/builtin/packages/py-flye/package.py @@ -36,7 +36,7 @@ class PyFlye(PythonPackage): conflicts("%clang@:3.2", msg=msg) conflicts("%apple-clang@:4.9", msg=msg) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.target.family == "aarch64": env.set("arm_neon", "1") env.set("aarch64", "1") diff --git a/var/spack/repos/builtin/packages/py-frozendict/package.py b/var/spack/repos/builtin/packages/py-frozendict/package.py index 797a439b6c6..3446cf0a3c9 100644 --- a/var/spack/repos/builtin/packages/py-frozendict/package.py +++ b/var/spack/repos/builtin/packages/py-frozendict/package.py @@ -22,7 +22,7 @@ class PyFrozendict(PythonPackage): depends_on("python@3.6:", type=("build", "run")) depends_on("py-setuptools", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # C extension is not supported for 3.11+. See also # https://github.com/Marco-Sulla/python-frozendict/issues/68 if self.spec.satisfies("^python@3.11:"): diff --git a/var/spack/repos/builtin/packages/py-gemmforge/package.py b/var/spack/repos/builtin/packages/py-gemmforge/package.py index 90be279274c..725440e8509 100644 --- a/var/spack/repos/builtin/packages/py-gemmforge/package.py +++ b/var/spack/repos/builtin/packages/py-gemmforge/package.py @@ -21,6 +21,6 @@ class PyGemmforge(PythonPackage): depends_on("py-pyyaml", type=("build", "run")) depends_on("py-setuptools", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix) env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-gensim/package.py b/var/spack/repos/builtin/packages/py-gensim/package.py index bca76235649..273508a281c 100644 --- a/var/spack/repos/builtin/packages/py-gensim/package.py +++ b/var/spack/repos/builtin/packages/py-gensim/package.py @@ -42,5 +42,5 @@ class PyGensim(PythonPackage): depends_on("py-smart-open@1.7.0:", when="@3.8.0", type=("build", "run")) depends_on("py-smart-open@1.8.1:", when="@3.8.1:", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GENSIM_CYTHON_REQUIRES", "Cython=={0}".format(self.spec["py-cython"].version)) diff --git a/var/spack/repos/builtin/packages/py-geopmdpy/package.py b/var/spack/repos/builtin/packages/py-geopmdpy/package.py index 458fe13232a..5fa38ad8e34 100644 --- a/var/spack/repos/builtin/packages/py-geopmdpy/package.py +++ b/var/spack/repos/builtin/packages/py-geopmdpy/package.py @@ -41,7 +41,7 @@ def build_directory(self): else: return "geopmdpy" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if not self.spec.version.isdevelop(): env.set("SETUPTOOLS_SCM_PRETEND_VERSION", self.version) diff --git a/var/spack/repos/builtin/packages/py-geopmpy/package.py b/var/spack/repos/builtin/packages/py-geopmpy/package.py index 9504ceb88b2..3c64581e55e 100644 --- a/var/spack/repos/builtin/packages/py-geopmpy/package.py +++ b/var/spack/repos/builtin/packages/py-geopmpy/package.py @@ -35,6 +35,6 @@ class PyGeopmpy(PythonPackage): build_directory = "geopmpy" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if not self.spec.version.isdevelop(): env.set("SETUPTOOLS_SCM_PRETEND_VERSION", self.version) diff --git a/var/spack/repos/builtin/packages/py-git-review/package.py b/var/spack/repos/builtin/packages/py-git-review/package.py index 15f044c96ee..d9648c797c4 100644 --- a/var/spack/repos/builtin/packages/py-git-review/package.py +++ b/var/spack/repos/builtin/packages/py-git-review/package.py @@ -28,5 +28,5 @@ class PyGitReview(PythonPackage): depends_on("py-requests@1.1:", type=("build", "run")) depends_on("git", type=("run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PBR_VERSION", str(self.spec.version)) diff --git a/var/spack/repos/builtin/packages/py-gmxapi/package.py b/var/spack/repos/builtin/packages/py-gmxapi/package.py index eab4263e070..f205a9b5de7 100644 --- a/var/spack/repos/builtin/packages/py-gmxapi/package.py +++ b/var/spack/repos/builtin/packages/py-gmxapi/package.py @@ -40,7 +40,7 @@ class PyGmxapi(PythonPackage): depends_on("py-pybind11@2.6:", when="@:0.4", type=("build", "run")) depends_on("py-pytest@4.6:", type="test") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GROMACS_DIR", self.spec["gromacs"].prefix) env.set("gmxapi_ROOT", self.spec["gromacs"].prefix) env.set("Python3_ROOT", self.spec["python"].home) diff --git a/var/spack/repos/builtin/packages/py-google-crc32c/package.py b/var/spack/repos/builtin/packages/py-google-crc32c/package.py index 3f1409fd231..08bd08e37ed 100644 --- a/var/spack/repos/builtin/packages/py-google-crc32c/package.py +++ b/var/spack/repos/builtin/packages/py-google-crc32c/package.py @@ -23,5 +23,5 @@ class PyGoogleCrc32c(PythonPackage): depends_on("py-setuptools", type="build") depends_on("google-crc32c", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CRC32C_INSTALL_PREFIX", self.spec["google-crc32c"].prefix) diff --git a/var/spack/repos/builtin/packages/py-gosam/package.py b/var/spack/repos/builtin/packages/py-gosam/package.py index 463b8ae57aa..df8a484a208 100644 --- a/var/spack/repos/builtin/packages/py-gosam/package.py +++ b/var/spack/repos/builtin/packages/py-gosam/package.py @@ -39,7 +39,7 @@ class PyGosam(Package): depends_on("gosam-contrib", type="link") depends_on("python@3:", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: gosam_contrib_lib_dir = self.spec["gosam-contrib"].prefix.lib env.prepend_path("LD_LIBRARY_PATH", gosam_contrib_lib_dir) diff --git a/var/spack/repos/builtin/packages/py-grpcio-tools/package.py b/var/spack/repos/builtin/packages/py-grpcio-tools/package.py index fd0ffd119ef..1dee6510326 100644 --- a/var/spack/repos/builtin/packages/py-grpcio-tools/package.py +++ b/var/spack/repos/builtin/packages/py-grpcio-tools/package.py @@ -37,12 +37,12 @@ class PyGrpcioTools(PythonPackage): depends_on("c-ares") depends_on("re2+shared") - def setup_build_environment(self, env): - env.set("GRPC_PYTHON_BUILD_WITH_CYTHON", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_OPENSSL", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_ZLIB", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_CARES", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_RE2", True) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("GRPC_PYTHON_BUILD_WITH_CYTHON", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_OPENSSL", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_ZLIB", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_CARES", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_RE2", "True") # https://github.com/grpc/grpc/pull/24449 env.set("GRPC_BUILD_WITH_BORING_SSL_ASM", "") env.set("GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/py-grpcio/package.py b/var/spack/repos/builtin/packages/py-grpcio/package.py index 0977a7d046f..d55796c8b81 100644 --- a/var/spack/repos/builtin/packages/py-grpcio/package.py +++ b/var/spack/repos/builtin/packages/py-grpcio/package.py @@ -84,12 +84,12 @@ class PyGrpcio(PythonPackage): patch("30522.diff", when="@1.48") # https://github.com/grpc/grpc/issues/30372 - def setup_build_environment(self, env): - env.set("GRPC_PYTHON_BUILD_WITH_CYTHON", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_OPENSSL", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_ZLIB", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_CARES", True) - env.set("GRPC_PYTHON_BUILD_SYSTEM_RE2", True) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("GRPC_PYTHON_BUILD_WITH_CYTHON", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_OPENSSL", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_ZLIB", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_CARES", "True") + env.set("GRPC_PYTHON_BUILD_SYSTEM_RE2", "True") # https://github.com/grpc/grpc/pull/24449 env.set("GRPC_BUILD_WITH_BORING_SSL_ASM", "") env.set("GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 265e3f12aab..ecc98ab5ce1 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -96,7 +96,7 @@ def flag_handler(self, name, flags): flags.append("-Wno-error=incompatible-pointer-types-discards-qualifiers") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5_DIR", self.spec["hdf5"].prefix) if "+mpi" in self.spec: env.set("CC", self.spec["mpi"].mpicc) diff --git a/var/spack/repos/builtin/packages/py-horovod/package.py b/var/spack/repos/builtin/packages/py-horovod/package.py index 2d91b08e58b..0f79bfb6e5d 100644 --- a/var/spack/repos/builtin/packages/py-horovod/package.py +++ b/var/spack/repos/builtin/packages/py-horovod/package.py @@ -236,7 +236,7 @@ def import_modules(self): return modules - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://github.com/horovod/horovod/blob/master/docs/install.rst#environment-variables # Build system @@ -247,29 +247,29 @@ def setup_build_environment(self, env): # Frameworks if "frameworks=tensorflow" in self.spec: - env.set("HOROVOD_WITH_TENSORFLOW", 1) + env.set("HOROVOD_WITH_TENSORFLOW", "1") else: - env.set("HOROVOD_WITHOUT_TENSORFLOW", 1) + env.set("HOROVOD_WITHOUT_TENSORFLOW", "1") if "frameworks=pytorch" in self.spec: - env.set("HOROVOD_WITH_PYTORCH", 1) + env.set("HOROVOD_WITH_PYTORCH", "1") else: - env.set("HOROVOD_WITHOUT_PYTORCH", 1) + env.set("HOROVOD_WITHOUT_PYTORCH", "1") if "frameworks=mxnet" in self.spec: - env.set("HOROVOD_WITH_MXNET", 1) + env.set("HOROVOD_WITH_MXNET", "1") env.set("MXNET_INCLUDE_PATH", self.spec["mxnet"].prefix.include) env.set("MXNET_LIBRARY_PATH", join_path(self.spec["mxnet"].libs[0])) else: - env.set("HOROVOD_WITHOUT_MXNET", 1) + env.set("HOROVOD_WITHOUT_MXNET", "1") # Controllers if "controllers=mpi" in self.spec or "tensor_ops=mpi" in self.spec: - env.set("HOROVOD_WITH_MPI", 1) + env.set("HOROVOD_WITH_MPI", "1") else: - env.set("HOROVOD_WITHOUT_MPI", 1) + env.set("HOROVOD_WITHOUT_MPI", "1") if "controllers=gloo" in self.spec or "tensor_ops=gloo" in self.spec: - env.set("HOROVOD_WITH_GLOO", 1) + env.set("HOROVOD_WITH_GLOO", "1") else: - env.set("HOROVOD_WITHOUT_GLOO", 1) + env.set("HOROVOD_WITHOUT_GLOO", "1") # Tensor Operations if "tensor_ops=nccl" in self.spec: diff --git a/var/spack/repos/builtin/packages/py-htgettoken/package.py b/var/spack/repos/builtin/packages/py-htgettoken/package.py index 33b13bdb901..9162ed20879 100644 --- a/var/spack/repos/builtin/packages/py-htgettoken/package.py +++ b/var/spack/repos/builtin/packages/py-htgettoken/package.py @@ -35,7 +35,7 @@ class PyHtgettoken(PythonPackage): depends_on("py-paramiko", type=("build", "run")) depends_on("py-urllib3", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: dir = os.environ.get("XDG_RUNTIME_DIR", "/tmp") uid = os.environ.get("UID", str(os.geteuid())) file = join_path(dir, "bt_u" + uid) 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 ec41d4909b1..038197728b5 100644 --- a/var/spack/repos/builtin/packages/py-huggingface-hub/package.py +++ b/var/spack/repos/builtin/packages/py-huggingface-hub/package.py @@ -58,6 +58,6 @@ class PyHuggingfaceHub(PythonPackage): with when("+hf_transfer"): depends_on("py-hf-transfer@0.1.4:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+hf_transfer" in self.spec: - env.set("HF_HUB_ENABLE_HF_TRANSFER", 1) + env.set("HF_HUB_ENABLE_HF_TRANSFER", "1") diff --git a/var/spack/repos/builtin/packages/py-igraph/package.py b/var/spack/repos/builtin/packages/py-igraph/package.py index 37c10b0099d..7f050686575 100644 --- a/var/spack/repos/builtin/packages/py-igraph/package.py +++ b/var/spack/repos/builtin/packages/py-igraph/package.py @@ -31,5 +31,5 @@ class PyIgraph(PythonPackage): depends_on("py-texttable@1.6.2:", type=("build", "run")) depends_on("py-matplotlib@3.5:", type="run", when="+matplotlib") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("IGRAPH_USE_PKG_CONFIG", "1") diff --git a/var/spack/repos/builtin/packages/py-isal/package.py b/var/spack/repos/builtin/packages/py-isal/package.py index 6e4a9037d40..e0c402202cd 100644 --- a/var/spack/repos/builtin/packages/py-isal/package.py +++ b/var/spack/repos/builtin/packages/py-isal/package.py @@ -24,5 +24,5 @@ class PyIsal(PythonPackage): depends_on("py-setuptools@51:", type="build") depends_on("libisal") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PYTHON_ISAL_LINK_DYNAMIC", "true") diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index a43ce8a1dec..d13048dd60d 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -206,7 +206,7 @@ def url_for_version(self, version): name = "jaxlib" return url.format(name, version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("@0.4.38: +rocm") and not spec["hip"].external: if spec.satisfies("^hip@6.2:"): 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 402ba37676d..ac42e5bc606 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -47,7 +47,9 @@ 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): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # 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) diff --git a/var/spack/repos/builtin/packages/py-jupyterlab/package.py b/var/spack/repos/builtin/packages/py-jupyterlab/package.py index dee04a29a6b..014c9a3c025 100644 --- a/var/spack/repos/builtin/packages/py-jupyterlab/package.py +++ b/var/spack/repos/builtin/packages/py-jupyterlab/package.py @@ -82,5 +82,5 @@ class PyJupyterlab(PythonPackage): depends_on("py-tornado@:5,6.0.3:", type=("build", "run")) depends_on("py-jupyterlab-server@1.1.5:1", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("JUPYTERLAB_DIR", self.prefix.share.jupyter.lab) diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 5d45b52dbe4..e937ab122ef 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -159,7 +159,7 @@ def url_for_version(self, version): url = "https://files.pythonhosted.org/packages/source/k/keras/Keras-{}.tar.gz" return url.format(version) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@3:"): env.set("KERAS_BACKEND", self.spec.variants["backend"].value) diff --git a/var/spack/repos/builtin/packages/py-liblas/package.py b/var/spack/repos/builtin/packages/py-liblas/package.py index d1bbf7ebf1e..f014aa503df 100644 --- a/var/spack/repos/builtin/packages/py-liblas/package.py +++ b/var/spack/repos/builtin/packages/py-liblas/package.py @@ -18,7 +18,7 @@ class PyLiblas(PythonPackage): depends_on("py-setuptools", type="build") depends_on("liblas") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env_var = "LD_LIBRARY_PATH" if self.spec.satisfies("platform=darwin"): env_var = "DYLD_FALLBACK_LIBRARY_PATH" diff --git a/var/spack/repos/builtin/packages/py-llvmlite/package.py b/var/spack/repos/builtin/packages/py-llvmlite/package.py index a4389d9c6c9..79b44e2af22 100644 --- a/var/spack/repos/builtin/packages/py-llvmlite/package.py +++ b/var/spack/repos/builtin/packages/py-llvmlite/package.py @@ -77,7 +77,7 @@ class PyLlvmlite(PythonPackage): # TODO: investigate conflicts("%apple-clang@15:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%fj"): env.set("CXX_FLTO_FLAGS", "{0}".format(self.compiler.cxx_pic_flag)) env.set("LD_FLTO_FLAGS", "-Wl,--exclude-libs=ALL") diff --git a/var/spack/repos/builtin/packages/py-lmdb/package.py b/var/spack/repos/builtin/packages/py-lmdb/package.py index dce0b1cbe72..741ce95383b 100644 --- a/var/spack/repos/builtin/packages/py-lmdb/package.py +++ b/var/spack/repos/builtin/packages/py-lmdb/package.py @@ -23,5 +23,5 @@ class PyLmdb(PythonPackage): depends_on("py-setuptools", type="build") depends_on("lmdb") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LMDB_FORCE_SYSTEM", "1") diff --git a/var/spack/repos/builtin/packages/py-lws/package.py b/var/spack/repos/builtin/packages/py-lws/package.py index d61ec97febc..6cd3f7336c2 100644 --- a/var/spack/repos/builtin/packages/py-lws/package.py +++ b/var/spack/repos/builtin/packages/py-lws/package.py @@ -24,5 +24,5 @@ class PyLws(PythonPackage): depends_on("py-numpy", type=("build", "run")) depends_on("py-scipy", type=("build", "run")) - def setup_build_environment(self, env): - env.set("LWS_USE_CYTHON", 1) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("LWS_USE_CYTHON", "1") diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 72762d7a5f1..211c8bc23ad 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -330,7 +330,7 @@ def install_test(self): python("-m", "pytest", "--pyargs", "mpl_toolkits.tests") @when("@:3.8") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: include = [] library = [] for dep in self.spec.dependencies(deptype="link"): diff --git a/var/spack/repos/builtin/packages/py-meldmd/package.py b/var/spack/repos/builtin/packages/py-meldmd/package.py index 95d09526a63..92e713aef25 100644 --- a/var/spack/repos/builtin/packages/py-meldmd/package.py +++ b/var/spack/repos/builtin/packages/py-meldmd/package.py @@ -80,7 +80,7 @@ def patch(self): if self.spec.satisfies("^openmm@7.6.0:"): filter_file("simtk.openmm", "openmm", "plugin/python/meldplugin.i", string=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("OPENMM_PLUGIN_DIR", self.prefix.lib.plugins) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-mo-pack/package.py b/var/spack/repos/builtin/packages/py-mo-pack/package.py index 1662963d4ae..7737a687cd5 100644 --- a/var/spack/repos/builtin/packages/py-mo-pack/package.py +++ b/var/spack/repos/builtin/packages/py-mo-pack/package.py @@ -21,5 +21,5 @@ class PyMoPack(PythonPackage): depends_on("py-numpy", type=("build", "run")) depends_on("py-cython", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("LDFLAGS", self.spec["libmo-unpack"].libs.search_flags) diff --git a/var/spack/repos/builtin/packages/py-modin/package.py b/var/spack/repos/builtin/packages/py-modin/package.py index 0b35bf76d59..a28080b5813 100644 --- a/var/spack/repos/builtin/packages/py-modin/package.py +++ b/var/spack/repos/builtin/packages/py-modin/package.py @@ -44,6 +44,6 @@ class PyModin(PythonPackage): depends_on("py-distributed@2.22:", type=("build", "run")) depends_on("py-pickle5", when="^python@:3.7", type=("build", "run")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # modin/config/envvars.py env.set("MODIN_ENGINE", self.spec.variants["engine"].value) diff --git a/var/spack/repos/builtin/packages/py-mpi4jax/package.py b/var/spack/repos/builtin/packages/py-mpi4jax/package.py index 1f79ee1e70c..39dbe77fad9 100644 --- a/var/spack/repos/builtin/packages/py-mpi4jax/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4jax/package.py @@ -27,6 +27,6 @@ class PyMpi4jax(PythonPackage, CudaPackage): depends_on("py-numpy", type=("build", "run")) depends_on("py-jax@0.3.25:", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+cuda" in self.spec: env.set("CUDA_PATH", self.spec["cuda"].prefix) diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index 3e50afe71c0..0d564de6b0b 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -43,7 +43,7 @@ class PyMpi4py(PythonPackage): depends_on("py-cython@0.27:3", when="@master", type="build") depends_on("mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MPICC", self.spec["mpi"].mpicc) @run_before("install") diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 2aa2eec2bc3..3ef54a564ed 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -165,11 +165,15 @@ def patch(self): # Avoid install-time downloads of css files. filter_file("css = urlopen(url).read()", "assert False", "hatch_build.py", string=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("JUPYTER_PATH", self.prefix.share.jupyter) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("JUPYTER_PATH", self.prefix.share.jupyter) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("JUPYTER_PATH", self.prefix.share.jupyter) diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py index 5c82e8bc02a..93953288947 100644 --- a/var/spack/repos/builtin/packages/py-netcdf4/package.py +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -79,7 +79,7 @@ def flag_handler(self, name, flags): return flags, None, None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Ensure installed netcdf and hdf5 libraries are used""" # Explicitly set these variables so setup.py won't erroneously pick up # system versions diff --git a/var/spack/repos/builtin/packages/py-nltk/package.py b/var/spack/repos/builtin/packages/py-nltk/package.py index 4bb1bb0cba3..569dcfbb66f 100644 --- a/var/spack/repos/builtin/packages/py-nltk/package.py +++ b/var/spack/repos/builtin/packages/py-nltk/package.py @@ -1066,7 +1066,7 @@ def url_for_version(self, version): placement="tagsets", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+data" in self.spec: env.prepend_path("NLTK_DATA", self.prefix.nltk_data) diff --git a/var/spack/repos/builtin/packages/py-numba/package.py b/var/spack/repos/builtin/packages/py-numba/package.py index 9006d2e874f..afa9553bdec 100644 --- a/var/spack/repos/builtin/packages/py-numba/package.py +++ b/var/spack/repos/builtin/packages/py-numba/package.py @@ -86,6 +86,6 @@ class PyNumba(PythonPackage): # See https://reviews.llvm.org/D44140 conflicts("^llvm@6.0.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("~tbb"): env.set("NUMBA_DISABLE_TBB", "yes") diff --git a/var/spack/repos/builtin/packages/py-numcodecs/package.py b/var/spack/repos/builtin/packages/py-numcodecs/package.py index c2161a9e08c..864e059660c 100644 --- a/var/spack/repos/builtin/packages/py-numcodecs/package.py +++ b/var/spack/repos/builtin/packages/py-numcodecs/package.py @@ -60,7 +60,7 @@ class PyNumcodecs(PythonPackage): # those libraries without any way to use the system versions. # https://github.com/zarr-developers/numcodecs/issues/464 - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # This package likes to compile natively by checking cpu features and then setting flags # -msse2 and -mavx2, which we want to avoid in Spack. This could go away if the package # supports external libraries. diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index d889f172b09..0e4a06ba76c 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -487,7 +487,7 @@ def set_blas_lapack(self): self.blas_lapack_site_cfg() @when("@1.26:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%msvc"): # For meson build system, compiler paths must be in quotes # to prevent paths from being split by spaces. @@ -495,7 +495,7 @@ def setup_build_environment(self, env): env.set("CXX", f'"{self.compiler.cxx}"') @when("@:1.25") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Tell numpy which BLAS/LAPACK libraries we want to use. spec = self.spec # https://github.com/numpy/numpy/pull/13132 diff --git a/var/spack/repos/builtin/packages/py-onnx/package.py b/var/spack/repos/builtin/packages/py-onnx/package.py index 986b94e4a03..7f907888ad5 100644 --- a/var/spack/repos/builtin/packages/py-onnx/package.py +++ b/var/spack/repos/builtin/packages/py-onnx/package.py @@ -95,7 +95,7 @@ def patch(self): "setup.py", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Build in a similar directory as the CMake packages env.set( "CMAKE_BUILD_DIR", join_path(self.stage.path, f"spack-build-{self.spec.dag_hash(7)}") diff --git a/var/spack/repos/builtin/packages/py-onnxruntime/package.py b/var/spack/repos/builtin/packages/py-onnxruntime/package.py index 5bca596721b..f55e4614eed 100644 --- a/var/spack/repos/builtin/packages/py-onnxruntime/package.py +++ b/var/spack/repos/builtin/packages/py-onnxruntime/package.py @@ -157,14 +157,14 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: value = self.spec.variants["dynamic_cpu_arch"].value value = self.dynamic_cpu_arch_values.index(value) env.set("MLAS_DYNAMIC_CPU_ARCH", str(value)) if self.spec.satisfies("+rocm"): env.set("MIOPEN_PATH", self.spec["miopen-hip"].prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: value = self.spec.variants["dynamic_cpu_arch"].value value = self.dynamic_cpu_arch_values.index(value) env.set("MLAS_DYNAMIC_CPU_ARCH", str(value)) 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 29d19978fd8..ad89eafc71f 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 @@ -110,7 +110,7 @@ def url_for_version(self, version): class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): build_directory = "build" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PL_BACKEND", "lightning_kokkos") cm_args = " ".join([s[2:] for s in self.cmake_args()]) env.set("CMAKE_ARGS", f"{cm_args}") 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 88ea6ebb777..54fa1a5c64a 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py @@ -74,7 +74,7 @@ class PyPennylaneLightning(CMakePackage, PythonExtension): class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): build_directory = "build" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PL_BACKEND", "lightning_qubit") cm_args = " ".join([s[2:] for s in self.cmake_args()]) env.set("CMAKE_ARGS", f"{cm_args}") diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 76af5e1c293..55f3f11ecda 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -139,8 +139,8 @@ def variant_to_cfg(variant): setup.write("[install]\n") @when("@:9") - def setup_build_environment(self, env): - env.set("MAX_CONCURRENCY", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("MAX_CONCURRENCY", str(make_jobs)) class PyPillow(PyPillowBase): diff --git a/var/spack/repos/builtin/packages/py-pipits/package.py b/var/spack/repos/builtin/packages/py-pipits/package.py index c89e9863875..476a6da6d65 100644 --- a/var/spack/repos/builtin/packages/py-pipits/package.py +++ b/var/spack/repos/builtin/packages/py-pipits/package.py @@ -51,7 +51,7 @@ class PyPipits(PythonPackage): def install_db(self): install_tree(join_path(self.stage.source_path, "refdb"), self.prefix.refdb) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set( "PIPITS_UNITE_REFERENCE_DATA_CHIMERA", join_path( diff --git a/var/spack/repos/builtin/packages/py-poetry-core/package.py b/var/spack/repos/builtin/packages/py-poetry-core/package.py index 0e0eabc767f..a00b5c41ed5 100644 --- a/var/spack/repos/builtin/packages/py-poetry-core/package.py +++ b/var/spack/repos/builtin/packages/py-poetry-core/package.py @@ -40,8 +40,10 @@ def url_for_version(self, version): return url.format(letter, version) # https://github.com/python-poetry/poetry/issues/5547 - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GIT_DIR", join_path(self.stage.source_path, ".git")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("GIT_DIR", join_path(dependent_spec.package.stage.source_path, ".git")) diff --git a/var/spack/repos/builtin/packages/py-psana/package.py b/var/spack/repos/builtin/packages/py-psana/package.py index d3615c6434d..acb29cf817d 100644 --- a/var/spack/repos/builtin/packages/py-psana/package.py +++ b/var/spack/repos/builtin/packages/py-psana/package.py @@ -46,7 +46,7 @@ class PyPsana(PythonPackage): build_directory = "psana" - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("INSTDIR", "{0}".format(self.prefix)) env.set("XTCDATADIR", "{0}".format(self.spec["xtcdata"].prefix)) env.set("PSALGDIR", "{0}".format(self.spec["psalg"].prefix)) diff --git a/var/spack/repos/builtin/packages/py-pspamm/package.py b/var/spack/repos/builtin/packages/py-pspamm/package.py index 31e81ac24bd..22ec272ef85 100644 --- a/var/spack/repos/builtin/packages/py-pspamm/package.py +++ b/var/spack/repos/builtin/packages/py-pspamm/package.py @@ -27,6 +27,6 @@ class PyPspamm(PythonPackage): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix) env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-psyclone/package.py b/var/spack/repos/builtin/packages/py-psyclone/package.py index ad6da950775..b47abacdda0 100644 --- a/var/spack/repos/builtin/packages/py-psyclone/package.py +++ b/var/spack/repos/builtin/packages/py-psyclone/package.py @@ -84,6 +84,6 @@ def check_build(self): with working_dir("src"): pytest() - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Allow testing with installed executables env.prepend_path("PATH", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/py-pyarrow/package.py b/var/spack/repos/builtin/packages/py-pyarrow/package.py index 42a67fada68..d7451c7ced4 100644 --- a/var/spack/repos/builtin/packages/py-pyarrow/package.py +++ b/var/spack/repos/builtin/packages/py-pyarrow/package.py @@ -101,11 +101,11 @@ class PyPyarrow(PythonPackage): # Starting with pyarrow 17+, backend support is built if arrow was built with it @when("@:16") - def setup_build_environment(self, env): - env.set("PYARROW_WITH_PARQUET", self.spec.satisfies("^arrow+parquet")) - env.set("PYARROW_WITH_CUDA", self.spec.satisfies("^arrow+cuda")) - env.set("PYARROW_WITH_ORC", self.spec.satisfies("^arrow+orc")) - env.set("PYARROW_WITH_DATASET", self.spec.satisfies("^arrow+dataset")) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("PYARROW_WITH_PARQUET", str(self.spec.satisfies("^arrow+parquet"))) + env.set("PYARROW_WITH_CUDA", str(self.spec.satisfies("^arrow+cuda"))) + env.set("PYARROW_WITH_ORC", str(self.spec.satisfies("^arrow+orc"))) + env.set("PYARROW_WITH_DATASET", str(self.spec.satisfies("^arrow+dataset"))) @when("@:16") def install_options(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py index 204886ce9c2..9b8922ea768 100644 --- a/var/spack/repos/builtin/packages/py-pybind11/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11/package.py @@ -110,8 +110,8 @@ def install(self, pkg, spec, prefix): python_builder = spack.build_systems.python.PythonPipBuilder(pkg) python_builder.install(pkg, spec, prefix) - def setup_build_environment(self, env): - env.set("PYBIND11_USE_CMAKE", 1) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("PYBIND11_USE_CMAKE", "1") @run_after("install") def install_test(self): diff --git a/var/spack/repos/builtin/packages/py-pydftracer/package.py b/var/spack/repos/builtin/packages/py-pydftracer/package.py index 58b24b60823..321dc82e444 100644 --- a/var/spack/repos/builtin/packages/py-pydftracer/package.py +++ b/var/spack/repos/builtin/packages/py-pydftracer/package.py @@ -34,7 +34,7 @@ class PyPydftracer(PythonPackage): depends_on("ninja", type="build") depends_on("cmake@3.12:", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DFTRACER_INSTALL_DIR", self.prefix) env.set("DFTRACER_PYTHON_SITE", python_purelib) env.set("DFTRACER_BUILD_DEPENDENCIES", "0") diff --git a/var/spack/repos/builtin/packages/py-pyfftw/package.py b/var/spack/repos/builtin/packages/py-pyfftw/package.py index 2e18737ac08..09c762c01fd 100644 --- a/var/spack/repos/builtin/packages/py-pyfftw/package.py +++ b/var/spack/repos/builtin/packages/py-pyfftw/package.py @@ -48,5 +48,5 @@ def url_for_version(self, version): name = "pyFFTW" return url.format(name, version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("LDFLAGS", self.spec["fftw"].libs.search_flags) diff --git a/var/spack/repos/builtin/packages/py-pyfr/package.py b/var/spack/repos/builtin/packages/py-pyfr/package.py index 46d72eb2bed..59d20a9d3fd 100644 --- a/var/spack/repos/builtin/packages/py-pyfr/package.py +++ b/var/spack/repos/builtin/packages/py-pyfr/package.py @@ -65,7 +65,7 @@ class PyPyfr(PythonPackage, CudaPackage, ROCmPackage): depends_on("libxsmm@1.18:+shared blas=0", when="+libxsmm", type=("run")) # Explicitly add dependencies to environment variables - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: deps = ["metis", "scotch", "libxsmm", "hip", "rocblas"] pyfr_library_path = [] for dep in deps: diff --git a/var/spack/repos/builtin/packages/py-pygit2/package.py b/var/spack/repos/builtin/packages/py-pygit2/package.py index 0faf298bfb9..a745afc22b8 100644 --- a/var/spack/repos/builtin/packages/py-pygit2/package.py +++ b/var/spack/repos/builtin/packages/py-pygit2/package.py @@ -43,7 +43,7 @@ class PyPygit2(PythonPackage): depends_on("py-cached-property", when="@1.1:1.5", type=("build", "run")) depends_on("py-cached-property", when="@1.6: ^python@:3.7", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # https://www.pygit2.org/install.html env.set("LIBGIT2", spec["libgit2"].prefix) diff --git a/var/spack/repos/builtin/packages/py-pyhdf/package.py b/var/spack/repos/builtin/packages/py-pyhdf/package.py index 6eba7244b34..e8dbcfa468d 100644 --- a/var/spack/repos/builtin/packages/py-pyhdf/package.py +++ b/var/spack/repos/builtin/packages/py-pyhdf/package.py @@ -35,7 +35,7 @@ class PyPyhdf(PythonPackage): 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): + def setup_build_environment(self, env: EnvironmentModifications) -> None: inc_dirs = [] lib_dirs = [] # Strip -I and -L from spec include_flags / search_flags diff --git a/var/spack/repos/builtin/packages/py-pylikwid/package.py b/var/spack/repos/builtin/packages/py-pylikwid/package.py index 79bde09e888..fabe0c9ef86 100644 --- a/var/spack/repos/builtin/packages/py-pylikwid/package.py +++ b/var/spack/repos/builtin/packages/py-pylikwid/package.py @@ -30,5 +30,5 @@ class PyPylikwid(PythonPackage): depends_on("likwid", when="~cuda") depends_on("likwid+cuda", when="+cuda") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LIKWID_PREFIX", self.spec["likwid"].prefix) diff --git a/var/spack/repos/builtin/packages/py-pylint-gitlab/package.py b/var/spack/repos/builtin/packages/py-pylint-gitlab/package.py index 02578496f83..5d57b46565b 100644 --- a/var/spack/repos/builtin/packages/py-pylint-gitlab/package.py +++ b/var/spack/repos/builtin/packages/py-pylint-gitlab/package.py @@ -29,5 +29,5 @@ class PyPylintGitlab(PythonPackage): depends_on("py-tomli", type=("build", "run")) depends_on("py-dill", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CI_COMMIT_TAG", self.spec.version.string) diff --git a/var/spack/repos/builtin/packages/py-pynio/package.py b/var/spack/repos/builtin/packages/py-pynio/package.py index 78ee01117c1..8462c3ac542 100644 --- a/var/spack/repos/builtin/packages/py-pynio/package.py +++ b/var/spack/repos/builtin/packages/py-pynio/package.py @@ -56,7 +56,7 @@ class PyPynio(PythonPackage): depends_on("py-setuptools", type="build") depends_on("py-numpy", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """ These environment variables are how the setup.py knows which options to turn on, and how to find them. diff --git a/var/spack/repos/builtin/packages/py-pynucleus/package.py b/var/spack/repos/builtin/packages/py-pynucleus/package.py index 97387177e65..e5e38a0dcca 100644 --- a/var/spack/repos/builtin/packages/py-pynucleus/package.py +++ b/var/spack/repos/builtin/packages/py-pynucleus/package.py @@ -54,8 +54,8 @@ class PyPynucleus(PythonPackage): "PyNucleus-nl", ] - def setup_build_environment(self, env): - env.set("PYNUCLEUS_BUILD_PARALLELISM", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("PYNUCLEUS_BUILD_PARALLELISM", str(make_jobs)) @run_before("install") def install_python(self): diff --git a/var/spack/repos/builtin/packages/py-pyopengl/package.py b/var/spack/repos/builtin/packages/py-pyopengl/package.py index 71e6b8a3243..5d4e33648c5 100644 --- a/var/spack/repos/builtin/packages/py-pyopengl/package.py +++ b/var/spack/repos/builtin/packages/py-pyopengl/package.py @@ -27,7 +27,7 @@ class PyPyopengl(PythonPackage): depends_on("glu", when="+glu", type="link") depends_on("freeglut+shared", when="+glut", type="link") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # PyOpenGL uses ctypes.cdll (or similar), which searches LD_LIBRARY_PATH lib_dirs = self.spec["gl"].libs.directories if "^glx" in self.spec: @@ -46,7 +46,9 @@ def setup_run_environment(self, env): else: env.prepend_path("LD_LIBRARY_PATH", libs) - def setup_dependent_build_environment_(self, env, dependent_spec): + def setup_dependent_build_environment_( + self, env: EnvironmentModifications, dependent_spec: Spec + ): self.setup_run_environment(env) # only test import available module diff --git a/var/spack/repos/builtin/packages/py-pyproj/package.py b/var/spack/repos/builtin/packages/py-pyproj/package.py index 0f8d772c74c..eae451e6cec 100644 --- a/var/spack/repos/builtin/packages/py-pyproj/package.py +++ b/var/spack/repos/builtin/packages/py-pyproj/package.py @@ -63,7 +63,7 @@ class PyPyproj(PythonPackage): depends_on("proj@6.0:7", when="@2.0:2.1") depends_on("proj") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://pyproj4.github.io/pyproj/stable/installation.html#pyproj-build-environment-variables env.set("PROJ_VERSION", self.spec["proj"].version) env.set("PROJ_DIR", self.spec["proj"].prefix) diff --git a/var/spack/repos/builtin/packages/py-pyqt6/package.py b/var/spack/repos/builtin/packages/py-pyqt6/package.py index 6f9f0e26e0b..be9dd8b52af 100644 --- a/var/spack/repos/builtin/packages/py-pyqt6/package.py +++ b/var/spack/repos/builtin/packages/py-pyqt6/package.py @@ -34,7 +34,7 @@ class PyPyqt6(SIPPackage): # README depends_on("qt-base@6") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Detected system locale encoding (US-ASCII, locale "C") is not UTF-8. # Qt shall use a UTF-8 locale ("UTF-8") instead. If this causes problems, # reconfigure your locale. See the locale(1) manual for more information. diff --git a/var/spack/repos/builtin/packages/py-pysam/package.py b/var/spack/repos/builtin/packages/py-pysam/package.py index b86f697fa08..f7568b4a2f4 100644 --- a/var/spack/repos/builtin/packages/py-pysam/package.py +++ b/var/spack/repos/builtin/packages/py-pysam/package.py @@ -37,7 +37,7 @@ class PyPysam(PythonPackage): depends_on("htslib@:1.6", when="@:0.13") depends_on("htslib") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LDFLAGS", self.spec["curl"].libs.search_flags) # this flag is supposed to be removed by cy_build.py, but for some reason isn't if self.spec.platform == "darwin": diff --git a/var/spack/repos/builtin/packages/py-pyscf/package.py b/var/spack/repos/builtin/packages/py-pyscf/package.py index a37a9629a9e..dd245c0591e 100644 --- a/var/spack/repos/builtin/packages/py-pyscf/package.py +++ b/var/spack/repos/builtin/packages/py-pyscf/package.py @@ -58,7 +58,7 @@ class PyPyscf(PythonPackage): depends_on("libxc") depends_on("xcfun") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Tell PSCF where supporting libraries are located." spec = self.spec diff --git a/var/spack/repos/builtin/packages/py-pyside2/package.py b/var/spack/repos/builtin/packages/py-pyside2/package.py index 40eba12022c..cd3e72bda9a 100644 --- a/var/spack/repos/builtin/packages/py-pyside2/package.py +++ b/var/spack/repos/builtin/packages/py-pyside2/package.py @@ -112,7 +112,7 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("LLVM_INSTALL_DIR", self.spec["llvm"].prefix) def install_options(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-pyspark/package.py b/var/spack/repos/builtin/packages/py-pyspark/package.py index e754d8e9f17..f45473ccbaa 100644 --- a/var/spack/repos/builtin/packages/py-pyspark/package.py +++ b/var/spack/repos/builtin/packages/py-pyspark/package.py @@ -55,7 +55,7 @@ class PyPyspark(PythonPackage): ]: depends_on(f"py-py4j@{py4j_version}:", when=f"@{pyspark_version}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PYSPARK_PYTHON", python.path) env.set("PYSPARK_DRIVER_PYTHON", python.path) if self.spec.satisfies("+pandas ^java@11:"): diff --git a/var/spack/repos/builtin/packages/py-python-mapnik/package.py b/var/spack/repos/builtin/packages/py-python-mapnik/package.py index 90b70bbfa9a..d150947ba4f 100644 --- a/var/spack/repos/builtin/packages/py-python-mapnik/package.py +++ b/var/spack/repos/builtin/packages/py-python-mapnik/package.py @@ -33,7 +33,7 @@ class PyPythonMapnik(PythonPackage): depends_on("py-pycairo", type=("build", "run")) # Package can't find boost_python without the following - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Inform the package that boost python library is of form # 'libboost_python27.so' as opposed to 'libboost_python.so' py_ver = str(self.spec["python"].version.up_to(2).joined) diff --git a/var/spack/repos/builtin/packages/py-pythran/package.py b/var/spack/repos/builtin/packages/py-pythran/package.py index b259907ca14..b1de2d3753e 100644 --- a/var/spack/repos/builtin/packages/py-pythran/package.py +++ b/var/spack/repos/builtin/packages/py-pythran/package.py @@ -93,21 +93,25 @@ def patch(self): cfg_file = join_path("pythran", "pythran-{0}.cfg".format(sys.platform)) filter_file("CXX=", "CXX=" + self.compiler.cxx, cfg_file) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Needed for `spack install --test=root py-pythran` if self.spec.satisfies("%apple-clang"): env.prepend_path( "DYLD_FALLBACK_LIBRARY_PATH", self.spec["llvm-openmp"].libs.directories[0] ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Needed for `spack test run py-pythran` self.setup_build_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Needed for `spack install py-scipy` self.setup_build_environment(env) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Probably needed for something? self.setup_build_environment(env) diff --git a/var/spack/repos/builtin/packages/py-qiskit-aer/package.py b/var/spack/repos/builtin/packages/py-qiskit-aer/package.py index 9284d50b91e..7b6eeb56884 100644 --- a/var/spack/repos/builtin/packages/py-qiskit-aer/package.py +++ b/var/spack/repos/builtin/packages/py-qiskit-aer/package.py @@ -42,7 +42,7 @@ class PyQiskitAer(PythonPackage, CudaPackage): variant("mpi", default=True, description="Enable MPI support") variant("gdr", default=True, description="Enable GDR support") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("DISABLE_CONAN", "ON") env.set("DISABLE_DEPENDENCY_INSTALL", "1") env.set("CUDAHOSTCXX", spack_cxx) diff --git a/var/spack/repos/builtin/packages/py-qtpy/package.py b/var/spack/repos/builtin/packages/py-qtpy/package.py index ab71b3ff5dc..ff8e5912898 100644 --- a/var/spack/repos/builtin/packages/py-qtpy/package.py +++ b/var/spack/repos/builtin/packages/py-qtpy/package.py @@ -26,5 +26,5 @@ class PyQtpy(PythonPackage): for api in apis: depends_on("py-" + api, when="api=" + api, type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("QT_API", self.spec.variants["api"].value) diff --git a/var/spack/repos/builtin/packages/py-ray/package.py b/var/spack/repos/builtin/packages/py-ray/package.py index f07ae308d43..0af1ecc74fc 100644 --- a/var/spack/repos/builtin/packages/py-ray/package.py +++ b/var/spack/repos/builtin/packages/py-ray/package.py @@ -94,7 +94,7 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SKIP_THIRDPARTY_INSTALL", "1") # Compile the dashboard npm modules included in the project diff --git a/var/spack/repos/builtin/packages/py-rtree/package.py b/var/spack/repos/builtin/packages/py-rtree/package.py index 670d5e69ba9..734b6a6205c 100644 --- a/var/spack/repos/builtin/packages/py-rtree/package.py +++ b/var/spack/repos/builtin/packages/py-rtree/package.py @@ -36,8 +36,8 @@ def url_for_version(self, version): name = name.lower() return url.format(name, version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SPATIALINDEX_C_LIBRARY", self.spec["libspatialindex"].libs[0]) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_build_environment(env) 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 bcb040d2340..cda7e050659 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -134,7 +134,7 @@ def url_for_version(self, version): name = "scikit-learn" return url.format(name, version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Enable parallel builds of the sklearn backend env.append_flags("SKLEARN_BUILD_PARALLEL", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/py-scikits-odes/package.py b/var/spack/repos/builtin/packages/py-scikits-odes/package.py index 43c80feca54..9f0b7a0c8bb 100644 --- a/var/spack/repos/builtin/packages/py-scikits-odes/package.py +++ b/var/spack/repos/builtin/packages/py-scikits-odes/package.py @@ -43,7 +43,7 @@ class PyScikitsOdes(PythonPackage): sha256="8d05d7bcc3582b7c482a4393bf5a8c0460a58eb62d1e3c86339c95a0d4ce30ac", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SUNDIALS_INST", self.spec["sundials"].prefix) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index c7925064d03..2dcba681608 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -213,7 +213,7 @@ def set_fortran_compiler(self): f.write("[config_fc]\n") f.write("fcompiler = intelem\n") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://github.com/scipy/scipy/issues/9080 env.set("F90", spack_fc) diff --git a/var/spack/repos/builtin/packages/py-shapely/package.py b/var/spack/repos/builtin/packages/py-shapely/package.py index fb3f21742dd..b376bffbdd8 100644 --- a/var/spack/repos/builtin/packages/py-shapely/package.py +++ b/var/spack/repos/builtin/packages/py-shapely/package.py @@ -91,7 +91,7 @@ def patch(self): if os.path.exists("shapely/vectorized/_vectorized.c"): os.remove("shapely/vectorized/_vectorized.c") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GEOS_CONFIG", join_path(self.spec["geos"].prefix.bin, "geos-config")) # Shapely uses ctypes.util.find_library, which searches LD_LIBRARY_PATH @@ -103,8 +103,10 @@ def setup_build_environment(self, env): else: env.prepend_path("LD_LIBRARY_PATH", libs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.setup_build_environment(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_build_environment(env) diff --git a/var/spack/repos/builtin/packages/py-smartredis/package.py b/var/spack/repos/builtin/packages/py-smartredis/package.py index 6ae8a231b0a..67bbe3abf0d 100644 --- a/var/spack/repos/builtin/packages/py-smartredis/package.py +++ b/var/spack/repos/builtin/packages/py-smartredis/package.py @@ -47,7 +47,7 @@ class PySmartredis(PythonPackage): patch("sr_0_4_1_no_deps.patch", when="@0.4.1") patch("sr_0_4_0_no_deps.patch", when="@0.4.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("REDISPP_LIB_DIR", spec["redis-plus-plus"].libs.directories[0]) env.set("REDISPP_INC_DIR", spec["redis-plus-plus"].headers.directories[0]) diff --git a/var/spack/repos/builtin/packages/py-smartsim/package.py b/var/spack/repos/builtin/packages/py-smartsim/package.py index 6ce9e1fd97c..5b4f6e47386 100644 --- a/var/spack/repos/builtin/packages/py-smartsim/package.py +++ b/var/spack/repos/builtin/packages/py-smartsim/package.py @@ -67,8 +67,8 @@ class PySmartsim(PythonPackage): # dependencies fetched though Spack patch("ss-0-5-0-remove-cli-build-fns.patch") - def setup_build_environment(self, env): - env.set("BUILD_JOBS", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("BUILD_JOBS", str(make_jobs)) @run_after("install") def symlink_bin_deps(self): diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py index 14ba952a829..09635f391f3 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -41,7 +41,7 @@ class PySphinxRtdTheme(PythonPackage): depends_on("py-sphinxcontrib-jquery@2:", when="@1.2:1.2.1", type=("build", "run")) conflicts("^py-sphinxcontrib-jquery@3.0.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Hack to prevent usage of npm in 0.5+ # https://github.com/readthedocs/sphinx_rtd_theme/issues/1014 - env.set("CI", True) + env.set("CI", "True") diff --git a/var/spack/repos/builtin/packages/py-tables/package.py b/var/spack/repos/builtin/packages/py-tables/package.py index 2b2710f5731..8aa8fa20add 100644 --- a/var/spack/repos/builtin/packages/py-tables/package.py +++ b/var/spack/repos/builtin/packages/py-tables/package.py @@ -76,7 +76,7 @@ class PyTables(PythonPackage): # Historical dependencies depends_on("py-six@1.9:", when="@:3.5", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("HDF5_DIR", self.spec["hdf5"].prefix) if "+bzip2" in self.spec: env.set("BZIP2_DIR", self.spec["bzip2"].prefix) 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 3fa96fa977b..0bf628b6e17 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 @@ -34,7 +34,7 @@ class PyTensorboardDataServer(PythonPackage): when="@0.6.1", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CARGO_HOME", self.stage.source_path) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-tensorflow-metadata/package.py b/var/spack/repos/builtin/packages/py-tensorflow-metadata/package.py index f255e0c7128..4971bbd4c78 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-metadata/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-metadata/package.py @@ -53,6 +53,6 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: tmp_path = tempfile.mkdtemp(prefix="spack") env.set("TEST_TMPDIR", 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 0669974488f..274fe2352c7 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -575,7 +575,7 @@ def flag_handler(self, name, flags): return (flags, None, None) # https://www.tensorflow.org/install/source - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # Please specify the location of python diff --git a/var/spack/repos/builtin/packages/py-tfdlpack/package.py b/var/spack/repos/builtin/packages/py-tfdlpack/package.py index 4871ca822dc..cbeff48598e 100644 --- a/var/spack/repos/builtin/packages/py-tfdlpack/package.py +++ b/var/spack/repos/builtin/packages/py-tfdlpack/package.py @@ -42,6 +42,6 @@ def install(self, spec, prefix): with working_dir("python"): pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Prevent TensorFlow from taking over the whole GPU env.set("TF_FORCE_GPU_ALLOW_GROWTH", "true") diff --git a/var/spack/repos/builtin/packages/py-torch-cluster/package.py b/var/spack/repos/builtin/packages/py-torch-cluster/package.py index 4d6fcfff0c8..09e8274b0cf 100644 --- a/var/spack/repos/builtin/packages/py-torch-cluster/package.py +++ b/var/spack/repos/builtin/packages/py-torch-cluster/package.py @@ -29,12 +29,12 @@ class PyTorchCluster(PythonPackage): # Undocumented dependencies depends_on("py-torch", type=("build", "link", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+cuda" in self.spec["py-torch"]: - env.set("FORCE_CUDA", 1) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 0) + env.set("FORCE_CUDA", "1") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "0") else: - env.set("FORCE_CUDA", 0) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 1) + env.set("FORCE_CUDA", "0") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "1") diff --git a/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py b/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py index 2a68cdd76c5..afcefbc8ea8 100644 --- a/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py +++ b/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py @@ -105,14 +105,14 @@ def torch_cuda_arch_list(self, env): ) env.set("TORCH_CUDA_ARCH_LIST", torch_cuda_arch) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda"): env.set("CUDA_HOME", self.spec["cuda"].prefix) self.torch_cuda_arch_list(env) else: env.unset("CUDA_HOME") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.torch_cuda_arch_list(env) @when("^py-pip@:23.0") diff --git a/var/spack/repos/builtin/packages/py-torch-scatter/package.py b/var/spack/repos/builtin/packages/py-torch-scatter/package.py index 8741fa6c222..7b3b588e545 100644 --- a/var/spack/repos/builtin/packages/py-torch-scatter/package.py +++ b/var/spack/repos/builtin/packages/py-torch-scatter/package.py @@ -28,12 +28,12 @@ class PyTorchScatter(PythonPackage): # Undocumented dependencies depends_on("py-torch", type=("build", "link", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+cuda" in self.spec["py-torch"]: - env.set("FORCE_CUDA", 1) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 0) + env.set("FORCE_CUDA", "1") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "0") else: - env.set("FORCE_CUDA", 0) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 1) + env.set("FORCE_CUDA", "0") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "1") diff --git a/var/spack/repos/builtin/packages/py-torch-sparse/package.py b/var/spack/repos/builtin/packages/py-torch-sparse/package.py index 34f60f06d50..793d5c17964 100644 --- a/var/spack/repos/builtin/packages/py-torch-sparse/package.py +++ b/var/spack/repos/builtin/packages/py-torch-sparse/package.py @@ -43,20 +43,20 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@0.6.9:"): if "+cuda" in self.spec["py-torch"]: - env.set("FORCE_CUDA", 1) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 0) + env.set("FORCE_CUDA", "1") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "0") else: - env.set("FORCE_CUDA", 0) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 1) + env.set("FORCE_CUDA", "0") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "1") else: if "+cuda" in self.spec["py-torch"]: - env.set("FORCE_CUDA", 1) - env.set("FORCE_CPU", 0) + env.set("FORCE_CUDA", "1") + env.set("FORCE_CPU", "0") else: - env.set("FORCE_CUDA", 0) - env.set("FORCE_CPU", 1) + env.set("FORCE_CUDA", "0") + env.set("FORCE_CPU", "1") diff --git a/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py b/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py index 47f5ef8c3b0..933198f878a 100644 --- a/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py +++ b/var/spack/repos/builtin/packages/py-torch-spline-conv/package.py @@ -28,12 +28,12 @@ class PyTorchSplineConv(PythonPackage): # Undocumented dependencies depends_on("py-torch", type=("build", "link", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+cuda" in self.spec["py-torch"]: - env.set("FORCE_CUDA", 1) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 0) + env.set("FORCE_CUDA", "1") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "0") else: - env.set("FORCE_CUDA", 0) - env.set("FORCE_ONLY_CUDA", 0) - env.set("FORCE_ONLY_CPU", 1) + env.set("FORCE_CUDA", "0") + env.set("FORCE_ONLY_CUDA", "0") + env.set("FORCE_ONLY_CPU", "1") diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 698bf2fe30f..b1a2c32a75f 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -532,7 +532,7 @@ def torch_cuda_arch_list(self, env): ) env.set("TORCH_CUDA_ARCH_LIST", ";".join(torch_cuda_arch)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set environment variables used to control the build. PyTorch's ``setup.py`` is a thin wrapper around ``cmake``. @@ -562,7 +562,7 @@ def enable_or_disable(variant, keyword="USE", var=None): env.set(keyword + "_" + var, "OFF") # Build in parallel to speed up build times - env.set("MAX_JOBS", make_jobs) + env.set("MAX_JOBS", str(make_jobs)) # Spack logs have trouble handling colored output env.set("COLORIZE_OUTPUT", "OFF") @@ -652,8 +652,8 @@ def enable_or_disable(variant, keyword="USE", var=None): env.set("DEBUG", "OFF") if not self.spec.satisfies("@main"): - env.set("PYTORCH_BUILD_VERSION", self.version) - env.set("PYTORCH_BUILD_NUMBER", 0) + env.set("PYTORCH_BUILD_VERSION", str(self.version)) + env.set("PYTORCH_BUILD_NUMBER", str(0)) # BLAS to be used by Caffe2 # Options defined in cmake/Dependencies.cmake and cmake/Modules/FindBLAS.cmake @@ -713,7 +713,7 @@ def enable_or_disable(variant, keyword="USE", var=None): else: env.set("BUILD_CUSTOM_PROTOBUF", "OFF") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.torch_cuda_arch_list(env) @run_before("install") diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index 6249d470700..ea21b585cb2 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -156,9 +156,9 @@ def flag_handler(self, name, flags): flags.append("-Wl,-ld_classic") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # tools/setup_helpers/extension.py - env.set("BUILD_SOX", 0) + env.set("BUILD_SOX", "0") if self.spec.satisfies("@2.1:"): env.set("FFMPEG_ROOT", self.spec["ffmpeg"].prefix) @@ -167,11 +167,11 @@ def setup_build_environment(self, env): env.set("USE_FFMPEG", "0") if "+cuda" in self.spec["py-torch"]: - env.set("USE_CUDA", 1) + env.set("USE_CUDA", "1") else: - env.set("USE_CUDA", 0) + env.set("USE_CUDA", "0") if "+rocm" in self.spec["py-torch"]: - env.set("USE_ROCM", 1) + env.set("USE_ROCM", "1") else: - env.set("USE_ROCM", 0) + env.set("USE_ROCM", "0") diff --git a/var/spack/repos/builtin/packages/py-torchdata/package.py b/var/spack/repos/builtin/packages/py-torchdata/package.py index 26bb498ed2e..c2cbba96797 100644 --- a/var/spack/repos/builtin/packages/py-torchdata/package.py +++ b/var/spack/repos/builtin/packages/py-torchdata/package.py @@ -70,5 +70,5 @@ class PyTorchdata(PythonPackage): depends_on("py-pybind11", when="@0.4:0.9") depends_on("aws-sdk-cpp", when="@0.4:0.9") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("USE_SYSTEM_LIBS", "ON") diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 191fae7b4bb..0e6983e3c04 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -173,27 +173,27 @@ def flag_handler(self, name, flags): flags.append("-Wl,-ld_classic") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # The only documentation on building is what is found in setup.py and: # https://github.com/pytorch/vision/blob/main/CONTRIBUTING.md#development-installation # By default, version is read from `version.txt`, but this includes an `a0` # suffix used for alpha builds. Override the version for stable releases. if not self.spec.satisfies("@main"): - env.set("BUILD_VERSION", self.version) + env.set("BUILD_VERSION", str(self.version)) # Used by ninja - env.set("MAX_JOBS", make_jobs) + env.set("MAX_JOBS", str(make_jobs)) if "^cuda" in self.spec: env.set("CUDA_HOME", self.spec["cuda"].prefix) for gpu in ["cuda", "mps"]: - env.set(f"FORCE_{gpu.upper()}", int(f"+{gpu}" in self.spec["py-torch"])) + env.set(f"FORCE_{gpu.upper()}", str(f"+{gpu}" in self.spec["py-torch"])) extensions = ["png", "jpeg", "webp", "nvjpeg", "video_codec", "ffmpeg"] for extension in extensions: - env.set(f"TORCHVISION_USE_{extension.upper()}", int(f"+{extension}" in self.spec)) + env.set(f"TORCHVISION_USE_{extension.upper()}", str(f"+{extension}" in self.spec)) include = [] library = [] diff --git a/var/spack/repos/builtin/packages/py-transformer-engine/package.py b/var/spack/repos/builtin/packages/py-transformer-engine/package.py index 90aaaf936e3..b624736c4e5 100644 --- a/var/spack/repos/builtin/packages/py-transformer-engine/package.py +++ b/var/spack/repos/builtin/packages/py-transformer-engine/package.py @@ -42,7 +42,7 @@ class PyTransformerEngine(PythonPackage): with default_args(type=("build", "link", "run")): depends_on("py-torch+cuda+cudnn") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("NVTE_FRAMEWORK", "pytorch") if self.spec.satisfies("+userbuffers"): env.set("NVTE_WITH_USERBUFFERS", "1") diff --git a/var/spack/repos/builtin/packages/py-triton/package.py b/var/spack/repos/builtin/packages/py-triton/package.py index 78068e590fc..3263cdc4052 100644 --- a/var/spack/repos/builtin/packages/py-triton/package.py +++ b/var/spack/repos/builtin/packages/py-triton/package.py @@ -26,7 +26,7 @@ class PyTriton(PythonPackage): depends_on("zlib-api", type="link") conflicts("^openssl@3.3.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: """Set environment variables used to control the build""" if self.spec.satisfies("%clang"): env.set("TRITON_BUILD_WITH_CLANG_LLD", "True") diff --git a/var/spack/repos/builtin/packages/py-uv/package.py b/var/spack/repos/builtin/packages/py-uv/package.py index 2b01a44f4bf..724afc29374 100644 --- a/var/spack/repos/builtin/packages/py-uv/package.py +++ b/var/spack/repos/builtin/packages/py-uv/package.py @@ -25,7 +25,7 @@ class PyUv(PythonPackage): depends_on("cmake", type="build", when="@:0.6.3") @when("@:0.6.3") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CMAKE", self.spec["cmake"].prefix.bin.cmake) executables = ["^uv$"] diff --git a/var/spack/repos/builtin/packages/py-wand/package.py b/var/spack/repos/builtin/packages/py-wand/package.py index 814526d0f37..fbf8910684e 100644 --- a/var/spack/repos/builtin/packages/py-wand/package.py +++ b/var/spack/repos/builtin/packages/py-wand/package.py @@ -23,5 +23,5 @@ class PyWand(PythonPackage): # provides libmagickwand depends_on("imagemagick") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MAGICK_HOME", self.spec["imagemagick"].prefix) diff --git a/var/spack/repos/builtin/packages/py-waves/package.py b/var/spack/repos/builtin/packages/py-waves/package.py index 035bf23ef01..7617e15f38d 100644 --- a/var/spack/repos/builtin/packages/py-waves/package.py +++ b/var/spack/repos/builtin/packages/py-waves/package.py @@ -74,7 +74,7 @@ class PyWaves(PythonPackage): "waves.scons_extensions", ] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) env.set("PKG_NAME", "waves"), if not self.spec.version.isdevelop(): diff --git a/var/spack/repos/builtin/packages/py-wxpython/package.py b/var/spack/repos/builtin/packages/py-wxpython/package.py index fe9c44db3bb..26586be98d7 100644 --- a/var/spack/repos/builtin/packages/py-wxpython/package.py +++ b/var/spack/repos/builtin/packages/py-wxpython/package.py @@ -33,7 +33,7 @@ class PyWxpython(PythonPackage): depends_on("pil", type=("build", "run")) depends_on("py-six", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # By default wxWdigets is built as well instead of using spack provided version, # this tells it to just build the python extensions env.set("WXPYTHON_BUILD_ARGS", "build_py --use_syswx") diff --git a/var/spack/repos/builtin/packages/py-xdot/package.py b/var/spack/repos/builtin/packages/py-xdot/package.py index 2dbb841097e..4bc0ad29a00 100644 --- a/var/spack/repos/builtin/packages/py-xdot/package.py +++ b/var/spack/repos/builtin/packages/py-xdot/package.py @@ -51,7 +51,7 @@ def post_install(self): # regenerate the byte-compiled __init__.py python("-m", "compileall", dst) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.prepend_path( "GI_TYPELIB_PATH", join_path(spec["harfbuzz"].prefix.lib, "girepository-1.0") diff --git a/var/spack/repos/builtin/packages/py-xxhash/package.py b/var/spack/repos/builtin/packages/py-xxhash/package.py index 148127fd7c6..734bf400726 100644 --- a/var/spack/repos/builtin/packages/py-xxhash/package.py +++ b/var/spack/repos/builtin/packages/py-xxhash/package.py @@ -25,5 +25,5 @@ class PyXxhash(PythonPackage): depends_on("py-setuptools-scm@6.2:", type="build", when="@3.2.0:") depends_on("xxhash@0.8:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("XXHASH_LINK_SO", "1") diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 29e02cca2e8..f31d6874488 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -210,5 +210,5 @@ def check_install(self): # yt("--help") python(join_path(self.prefix.bin, "yt"), "--help") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MAX_BUILD_CORES", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/pypy/package.py b/var/spack/repos/builtin/packages/pypy/package.py index 8e19207cde6..533b2a79467 100644 --- a/var/spack/repos/builtin/packages/pypy/package.py +++ b/var/spack/repos/builtin/packages/pypy/package.py @@ -75,7 +75,7 @@ def patch(self): tklib_build.filter("linklibs = .*", f"linklibs = {libs.names}") tklib_build.filter("libdirs = .*", f"libdirs = {libs.directories}") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://doc.pypy.org/en/latest/build.html#set-environment-variables-that-will-affect-translation env.set("PYPY_USESSION_DIR", self.stage.source_path) env.prepend_path("PYTHONPATH", self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/pythia6/package.py b/var/spack/repos/builtin/packages/pythia6/package.py index 472000b759b..97472baf8d3 100644 --- a/var/spack/repos/builtin/packages/pythia6/package.py +++ b/var/spack/repos/builtin/packages/pythia6/package.py @@ -146,7 +146,7 @@ def patch(self): "pyhepc.f", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%gcc@10:"): env.append_flags("CFLAGS", "-fcommon") env.append_flags("FFLAGS", "-fcommon") diff --git a/var/spack/repos/builtin/packages/pythia8/package.py b/var/spack/repos/builtin/packages/pythia8/package.py index 045a60b37da..021924c88db 100644 --- a/var/spack/repos/builtin/packages/pythia8/package.py +++ b/var/spack/repos/builtin/packages/pythia8/package.py @@ -217,8 +217,12 @@ def setup_common_env(self, env): env.set("PYTHIA8", self.prefix) env.set("PYTHIA8DATA", self.prefix.share.Pythia8.xmldoc) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_common_env(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.setup_common_env(env) diff --git a/var/spack/repos/builtin/packages/python-venv/package.py b/var/spack/repos/builtin/packages/python-venv/package.py index 583c3fafbd5..a3c259cf35a 100644 --- a/var/spack/repos/builtin/packages/python-venv/package.py +++ b/var/spack/repos/builtin/packages/python-venv/package.py @@ -83,7 +83,9 @@ def headers(self): def libs(self): return LibraryList([]) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set PYTHONPATH to include the site-packages directory for the extension and any other python extensions it depends on.""" # Packages may be installed in platform-specific or platform-independent site-packages diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 456c47e6f2c..f1df01cdad6 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -515,7 +515,7 @@ def patch(self): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec # TODO: Python has incomplete support for Python modules with mixed @@ -1264,7 +1264,9 @@ def include(self): return path.replace(prefix, "") return os.path.join("include", "python{}".format(self.version.up_to(2))) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set PYTHONPATH to include the site-packages directory for the extension and any other python extensions it depends on. """ @@ -1335,7 +1337,9 @@ def setup_dependent_build_environment(self, env, dependent_spec): if config_link != new_link and sys.platform != "win32": env.set(link_var, new_link) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set PYTHONPATH to include the site-packages directory for the extension and any other python extensions it depends on. """ diff --git a/var/spack/repos/builtin/packages/qbank/package.py b/var/spack/repos/builtin/packages/qbank/package.py index 8638530510c..382b748a6a6 100644 --- a/var/spack/repos/builtin/packages/qbank/package.py +++ b/var/spack/repos/builtin/packages/qbank/package.py @@ -52,6 +52,6 @@ def install(self, spec, prefix): if "+doc" in spec: install_tree("doc", prefix.doc) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+doc" in self.spec: env.prepend_path("MANPATH", self.prefix.doc) diff --git a/var/spack/repos/builtin/packages/qd/package.py b/var/spack/repos/builtin/packages/qd/package.py index dfd89b64142..942c0bfbd82 100644 --- a/var/spack/repos/builtin/packages/qd/package.py +++ b/var/spack/repos/builtin/packages/qd/package.py @@ -31,7 +31,7 @@ class Qd(AutotoolsPackage): depends_on("libtool", type="build") depends_on("m4", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%nvhpc"): env.append_flags("FCFLAGS", "-fPIC") diff --git a/var/spack/repos/builtin/packages/qgis/package.py b/var/spack/repos/builtin/packages/qgis/package.py index a34a746bccf..b2de2802f89 100644 --- a/var/spack/repos/builtin/packages/qgis/package.py +++ b/var/spack/repos/builtin/packages/qgis/package.py @@ -301,7 +301,7 @@ def cmake_args(self): args.append("-DWITH_GRASS7=OFF") return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+bindings" in self.spec: # python module isn't located at the standard path env.prepend_path("PYTHONPATH", self.prefix.share.qgis.python) diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index 1cca1a0c846..68885bcb7d7 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -234,7 +234,7 @@ def build_targets(self): return targets # QMCPACK prefers taking MPI compiler wrappers as CMake compilers. - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+mpi" in spec: env.set("CC", spec["mpi"].mpicc) @@ -403,7 +403,7 @@ def install(self, spec, prefix): with working_dir(self.build_directory): install_tree("bin", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set-up runtime environment for QMCPACK. Set PATH and PYTHONPATH for basic analysis scripts for Nexus.""" diff --git a/var/spack/repos/builtin/packages/qscintilla/package.py b/var/spack/repos/builtin/packages/qscintilla/package.py index a199bdd1cf8..f9896de217b 100644 --- a/var/spack/repos/builtin/packages/qscintilla/package.py +++ b/var/spack/repos/builtin/packages/qscintilla/package.py @@ -59,10 +59,10 @@ def qmake_args(self): # When INSTALL_ROOT is unset, qscintilla is installed under qt_prefix # giving 'Nothing Installed Error' - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("INSTALL_ROOT", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("QT_PLUGIN_PATH", self.prefix.plugins) # Fix install prefix diff --git a/var/spack/repos/builtin/packages/qt-base/package.py b/var/spack/repos/builtin/packages/qt-base/package.py index 67c7d4faa76..9645dbdc77d 100644 --- a/var/spack/repos/builtin/packages/qt-base/package.py +++ b/var/spack/repos/builtin/packages/qt-base/package.py @@ -117,14 +117,16 @@ def add_qt_module_files(self): with open(qt_module_pri, "w") as file: file.write("\n".join(defs)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("QMAKEPATH", self.prefix) if os.path.exists(self.prefix.mkspecs.modules): env.prepend_path("QMAKE_MODULE_PATH", self.prefix.mkspecs.modules) if os.path.exists(self.prefix.plugins): env.prepend_path("QT_PLUGIN_PATH", self.prefix.plugins) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Qt components typically install cmake config files in a single prefix, # so we have to point dependencies to the cmake config files. env.prepend_path("QT_ADDITIONAL_PACKAGES_PREFIX_PATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py index efc0fad4c5e..65b7832aa91 100644 --- a/var/spack/repos/builtin/packages/qt-creator/package.py +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -33,7 +33,7 @@ def url_for_version(self, version): url = "https://download.qt.io/official_releases/qtcreator/{0}/{1}/qt-creator-opensource-src-{1}.tar.gz" return url.format(version.up_to(2), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("INSTALL_ROOT", self.prefix) def qmake_args(self): diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 0e8b4f781da..aa800901bb7 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -375,7 +375,7 @@ def url_for_version(self, version): return url - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if not IS_WINDOWS: env.set("MAKEFLAGS", "-j{0}".format(make_jobs)) if self.version >= Version("5.11"): @@ -388,13 +388,15 @@ def setup_build_environment(self, env): llvm_path = "/spack-disable-llvm" env.set("LLVM_INSTALL_DIR", llvm_path) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("QTDIR", self.prefix) env.set("QTINC", self.prefix.inc) env.set("QTLIB", self.prefix.lib) env.prepend_path("QT_PLUGIN_PATH", self.prefix.plugins) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("QTDIR", self.prefix) env.set("QTINC", self.prefix.inc) env.set("QTLIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/qtgraph/package.py b/var/spack/repos/builtin/packages/qtgraph/package.py index 8b1c100f14f..6fd0f9d9658 100644 --- a/var/spack/repos/builtin/packages/qtgraph/package.py +++ b/var/spack/repos/builtin/packages/qtgraph/package.py @@ -27,11 +27,11 @@ class Qtgraph(QMakePackage): depends_on("graphviz@2.40.1:", when="@develop") depends_on("graphviz@2.40.1", when="@1.0.0.0:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("GRAPHVIZ_ROOT", self.spec["graphviz"].prefix) env.set("INSTALL_ROOT", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # What library suffix should be used based on library existence if os.path.isdir(self.prefix.lib64): lib_dir = self.prefix.lib64 diff --git a/var/spack/repos/builtin/packages/qualimap/package.py b/var/spack/repos/builtin/packages/qualimap/package.py index a11121ec3d2..0cc7c36f751 100644 --- a/var/spack/repos/builtin/packages/qualimap/package.py +++ b/var/spack/repos/builtin/packages/qualimap/package.py @@ -21,7 +21,7 @@ class Qualimap(Package): depends_on("java", type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/quota/package.py b/var/spack/repos/builtin/packages/quota/package.py index c87779fa6f8..d0fdd230a30 100644 --- a/var/spack/repos/builtin/packages/quota/package.py +++ b/var/spack/repos/builtin/packages/quota/package.py @@ -17,5 +17,5 @@ class Quota(AutotoolsPackage): depends_on("c", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/r-asreml/package.py b/var/spack/repos/builtin/packages/r-asreml/package.py index b50eaf656e2..23683266bd9 100644 --- a/var/spack/repos/builtin/packages/r-asreml/package.py +++ b/var/spack/repos/builtin/packages/r-asreml/package.py @@ -38,5 +38,5 @@ class RAsreml(RPackage): def url_for_version(self, version): return f"file://{os.getcwd()}//asreml_{version}_x86_64-pc-linux-gnu.tar.gz" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("vsni_LICENSE", join_path(self.prefix, "vsni.lic")) diff --git a/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py b/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py index 578450acea0..26520324f72 100644 --- a/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py +++ b/var/spack/repos/builtin/packages/r-phantompeakqualtools/package.py @@ -34,5 +34,5 @@ class RPhantompeakqualtools(RPackage): conflicts("%gcc@6:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BOOST_ROOT", self.spec["boost"].prefix) diff --git a/var/spack/repos/builtin/packages/r-proj/package.py b/var/spack/repos/builtin/packages/r-proj/package.py index 2385bdd96b3..54fd720d019 100644 --- a/var/spack/repos/builtin/packages/r-proj/package.py +++ b/var/spack/repos/builtin/packages/r-proj/package.py @@ -32,5 +32,5 @@ class RProj(RPackage): depends_on("libtiff@4", type=("build", "run")) depends_on("curl", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.spec["proj"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/r-rhtslib/package.py b/var/spack/repos/builtin/packages/r-rhtslib/package.py index 2a0b4df2aa9..ed45f6d99d5 100644 --- a/var/spack/repos/builtin/packages/r-rhtslib/package.py +++ b/var/spack/repos/builtin/packages/r-rhtslib/package.py @@ -55,7 +55,7 @@ class RRhtslib(RPackage): patch("find_deps-1.16.patch", when="@1.16:1.28.0") @when("@1.12:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("BZIP2_INCLUDE", self.spec["bzip2"].headers.include_flags) env.set("XZ_INCLUDE", self.spec["xz"].headers.include_flags) env.set("BZIP2_LIB", self.spec["bzip2"].libs.search_flags) diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 131949c6e18..f64c47a12bb 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -32,6 +32,6 @@ class RRjava(RPackage): depends_on("xz") depends_on("zlib-api") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.append_flags("JAVAH", "{0}/javah".format(join_path(spec["java"].prefix.bin))) diff --git a/var/spack/repos/builtin/packages/r-v8/package.py b/var/spack/repos/builtin/packages/r-v8/package.py index 3d2885d2312..750f0144698 100644 --- a/var/spack/repos/builtin/packages/r-v8/package.py +++ b/var/spack/repos/builtin/packages/r-v8/package.py @@ -34,7 +34,7 @@ class RV8(RPackage): conflicts("@3.4.0", when="target=aarch64:") conflicts("@3.4.0", when="%gcc@5:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if (spec.platform == "darwin") or ( spec.platform == "linux" and spec.target.family == "x86_64" diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index cb8ba305c5d..f6bfd4b2291 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -269,7 +269,9 @@ def copy_makeconf(self): def r_lib_dir(self): return join_path("rlib", "R", "library") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Set R_LIBS to include the library dir for the # extension and any other R extensions it depends on. r_libs_path = [] @@ -291,14 +293,16 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set("MAKEFLAGS", "-j{0}".format(make_jobs)) env.set("R_HOME", join_path(self.prefix, "rlib", "R")) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # For run time environment set only the path for dependent_spec and # prepend it to R_LIBS env.set("R_HOME", join_path(self.prefix, "rlib", "R")) if dependent_spec.package.extends(self.spec): env.prepend_path("R_LIBS", join_path(dependent_spec.prefix, self.r_lib_dir)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "rlib", "R", "lib")) env.prepend_path("PKG_CONFIG_PATH", join_path(self.prefix, "rlib", "pkgconfig")) env.set("R_HOME", join_path(self.prefix, "rlib", "R")) diff --git a/var/spack/repos/builtin/packages/rasdaemon/package.py b/var/spack/repos/builtin/packages/rasdaemon/package.py index 0c02ba20fb8..c0e8a83bae6 100644 --- a/var/spack/repos/builtin/packages/rasdaemon/package.py +++ b/var/spack/repos/builtin/packages/rasdaemon/package.py @@ -29,5 +29,5 @@ class Rasdaemon(AutotoolsPackage): depends_on("libtool", type="build") depends_on("m4", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/rayleigh/package.py b/var/spack/repos/builtin/packages/rayleigh/package.py index 1efba0cfefd..64eeecb552c 100644 --- a/var/spack/repos/builtin/packages/rayleigh/package.py +++ b/var/spack/repos/builtin/packages/rayleigh/package.py @@ -32,7 +32,7 @@ class Rayleigh(MakefilePackage): depends_on("fftw-api@3") depends_on("lapack") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if spec.satisfies("^cray-mpich"): # The Cray wrapper takes care of linking MPI correctly for all compilers. diff --git a/var/spack/repos/builtin/packages/rccl/package.py b/var/spack/repos/builtin/packages/rccl/package.py index a53737ff4b4..e18efc72e66 100644 --- a/var/spack/repos/builtin/packages/rccl/package.py +++ b/var/spack/repos/builtin/packages/rccl/package.py @@ -149,7 +149,7 @@ def determine_version(cls, lib): ver = None return ver - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) env.set("ROCMCORE_PATH", self.spec["rocm-core"].prefix) if self.spec.satisfies("+asan"): diff --git a/var/spack/repos/builtin/packages/redis-ai/package.py b/var/spack/repos/builtin/packages/redis-ai/package.py index 97ea78d62cd..cb1b906a84b 100644 --- a/var/spack/repos/builtin/packages/redis-ai/package.py +++ b/var/spack/repos/builtin/packages/redis-ai/package.py @@ -124,5 +124,5 @@ def copy_libtorch(self): torch_lib_dir = join_path(torch_site_dir, "lib") install_tree(torch_lib_dir, self.prefix.backends.redisai_torch.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("REDIS_AI", self.prefix.join("redisai.so")) diff --git a/var/spack/repos/builtin/packages/reframe/package.py b/var/spack/repos/builtin/packages/reframe/package.py index 1fa946bdc7b..a552fa6a560 100644 --- a/var/spack/repos/builtin/packages/reframe/package.py +++ b/var/spack/repos/builtin/packages/reframe/package.py @@ -181,7 +181,7 @@ def install(self, spec, prefix): shutil.move("reframe.settings.8", "man8") install_tree(self.stage.source_path, self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix) if self.spec.satisfies("@3.0:"): if "+docs" in self.spec: diff --git a/var/spack/repos/builtin/packages/rempi/package.py b/var/spack/repos/builtin/packages/rempi/package.py index a2afcedda85..b39f751d18b 100644 --- a/var/spack/repos/builtin/packages/rempi/package.py +++ b/var/spack/repos/builtin/packages/rempi/package.py @@ -36,7 +36,7 @@ def flag_handler(self, name, flags): flags.append("-Wno-error=implicit-function-declaration") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%cce"): env.set("MPICC", "mpicc") env.set("MPICXX", "mpicxx") diff --git a/var/spack/repos/builtin/packages/reprimand/package.py b/var/spack/repos/builtin/packages/reprimand/package.py index 191ee1a1db6..afe1e314b96 100644 --- a/var/spack/repos/builtin/packages/reprimand/package.py +++ b/var/spack/repos/builtin/packages/reprimand/package.py @@ -44,7 +44,7 @@ class Reprimand(MesonPackage): extends("python", when="+python") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXXFLAGS", self.compiler.cxx11_flag) env.set("BOOST_ROOT", self.spec["boost"].prefix) diff --git a/var/spack/repos/builtin/packages/rinetd/package.py b/var/spack/repos/builtin/packages/rinetd/package.py index 8896fc8ec75..3ef0c4b2239 100644 --- a/var/spack/repos/builtin/packages/rinetd/package.py +++ b/var/spack/repos/builtin/packages/rinetd/package.py @@ -23,7 +23,7 @@ class Rinetd(AutotoolsPackage): depends_on("autoconf", type="build") depends_on("automake", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/rivet/package.py b/var/spack/repos/builtin/packages/rivet/package.py index 978d936e0d4..34bbdfc41f3 100644 --- a/var/spack/repos/builtin/packages/rivet/package.py +++ b/var/spack/repos/builtin/packages/rivet/package.py @@ -134,7 +134,7 @@ def copy_gsl_m4(self): def force_autoreconf(self): return True - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # this avoids an "import site" error in the build env.unset("PYTHONHOME") diff --git a/var/spack/repos/builtin/packages/rnaquast/package.py b/var/spack/repos/builtin/packages/rnaquast/package.py index 2fd2a7b76e3..ec60e7729f9 100644 --- a/var/spack/repos/builtin/packages/rnaquast/package.py +++ b/var/spack/repos/builtin/packages/rnaquast/package.py @@ -33,5 +33,5 @@ def install(self, spec, prefix): install_tree(".", prefix.bin) os.rename("%s/rnaQUAST.py" % prefix.bin, "%s/rnaQUAST" % prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", prefix.bin) diff --git a/var/spack/repos/builtin/packages/roary/package.py b/var/spack/repos/builtin/packages/roary/package.py index f992cf8f26b..330bbc1a3f6 100644 --- a/var/spack/repos/builtin/packages/roary/package.py +++ b/var/spack/repos/builtin/packages/roary/package.py @@ -61,7 +61,7 @@ class Roary(Package): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(prefix, "contrib", "roary2svg")) env.prepend_path("PATH", join_path(prefix, "contrib", "roary_plots")) env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/rocalution/package.py b/var/spack/repos/builtin/packages/rocalution/package.py index b01390bc2db..c26c70a479d 100644 --- a/var/spack/repos/builtin/packages/rocalution/package.py +++ b/var/spack/repos/builtin/packages/rocalution/package.py @@ -106,7 +106,7 @@ class Rocalution(CMakePackage): # Fix build for most Radeon 5000 and Radeon 6000 series GPUs. patch("0004-fix-navi-1x.patch", when="@5.2.0:5.3") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index e10bf6efc1a..a73f35e6e5c 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -189,7 +189,7 @@ class Rocblas(CMakePackage): patch("0006-Guard-use-of-OpenMP-to-make-it-optional-5.4.patch", when="@5.4") patch("0007-add-rocm-openmp-extras-include-dir.patch", when="@5.6:5.7") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocfft/package.py b/var/spack/repos/builtin/packages/rocfft/package.py index fa9a1c383ad..d680f581bc4 100644 --- a/var/spack/repos/builtin/packages/rocfft/package.py +++ b/var/spack/repos/builtin/packages/rocfft/package.py @@ -125,7 +125,7 @@ class Rocfft(CMakePackage): when="@6.0.0", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocm-core/package.py b/var/spack/repos/builtin/packages/rocm-core/package.py index 6e2e5f68d6f..ab1b017a9b1 100644 --- a/var/spack/repos/builtin/packages/rocm-core/package.py +++ b/var/spack/repos/builtin/packages/rocm-core/package.py @@ -60,7 +60,7 @@ class RocmCore(CMakePackage): ]: depends_on("llvm-amdgpu", when=f"@{ver}+asan") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", self.spec["llvm-amdgpu"].prefix + "/bin/clang") env.set("CXX", self.spec["llvm-amdgpu"].prefix + "/bin/clang++") diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py index 4a8d53f27c5..0966d9f90d6 100644 --- a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py @@ -125,7 +125,7 @@ def patch(self): "CMakeLists.txt", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py index bdd415b09f6..bf78726283e 100644 --- a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py +++ b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py @@ -136,7 +136,7 @@ def determine_version(cls, lib): ) return None - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/rocm-opencl/package.py b/var/spack/repos/builtin/packages/rocm-opencl/package.py index a4d7ed3969b..bc6146b87f2 100644 --- a/var/spack/repos/builtin/packages/rocm-opencl/package.py +++ b/var/spack/repos/builtin/packages/rocm-opencl/package.py @@ -208,7 +208,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") @@ -217,7 +217,7 @@ def setup_build_environment(self, env): env.set("CXXFLAGS", "-fsanitize=address -shared-libasan") env.set("LDFLAGS", "-fuse-ld=lld") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) env.set("OCL_ICD_VENDORS", self.prefix.vendors + "/") 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 f40c37ca6f4..b211e954581 100644 --- a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py +++ b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py @@ -362,7 +362,7 @@ class RocmOpenmpExtras(Package): patch("0001-Avoid-duplicate-registration-on-cuda-env.patch", when="@6.1") patch("0001-Avoid-duplicate-registration-on-cuda-env-6.2.patch", when="@6.2:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: devlibs_prefix = self.spec["llvm-amdgpu"].prefix llvm_prefix = self.spec["llvm-amdgpu"].prefix hsa_prefix = self.spec["hsa-rocr-dev"].prefix @@ -375,7 +375,7 @@ def setup_run_environment(self, env): env.prepend_path("LD_LIBRARY_PATH", f"{hsa_prefix}/lib") env.set("AOMP_GPU", f"`{self.prefix}/bin/mygpu`") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: llvm_prefix = self.spec["llvm-amdgpu"].prefix env.set("AOMP", f"{llvm_prefix}") env.set("FC", f"{self.prefix}/bin/flang") diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py index 34ea16b56ae..7850ee20f41 100644 --- a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py @@ -110,7 +110,7 @@ def cmake_args(self): args.append(self.define_from_variant("ADDRESS_SANITIZER", "asan")) return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@6.1: +asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/rocm-tensile/package.py b/var/spack/repos/builtin/packages/rocm-tensile/package.py index 0fccf686ec7..c75c2e5631f 100644 --- a/var/spack/repos/builtin/packages/rocm-tensile/package.py +++ b/var/spack/repos/builtin/packages/rocm-tensile/package.py @@ -104,7 +104,7 @@ class RocmTensile(CMakePackage): patch("0003-require-openmp-extras-when-tensile-use-openmp.patch", when="@5.1.0:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) env.append_flags("LDFLAGS", "-pthread") 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 e6e346a1c5f..c68885430ef 100644 --- a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py @@ -75,9 +75,9 @@ class RocmValidationSuite(CMakePackage): depends_on("googletest") depends_on("doxygen", type="build") - def setup_build_environment(self, build_env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec - build_env.set("HIPCC_PATH", spec["hip"].prefix) + env.set("HIPCC_PATH", spec["hip"].prefix) for ver in [ "5.3.0", diff --git a/var/spack/repos/builtin/packages/rocprim/package.py b/var/spack/repos/builtin/packages/rocprim/package.py index d3505a73339..e510a210070 100644 --- a/var/spack/repos/builtin/packages/rocprim/package.py +++ b/var/spack/repos/builtin/packages/rocprim/package.py @@ -93,7 +93,7 @@ class Rocprim(CMakePackage): # the patch is meant for 5.3.0 only.this is already in the 5.3.3+ releases patch("fix-device-merge-mismatched-param-5.3.0.patch", when="@5.3.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") diff --git a/var/spack/repos/builtin/packages/rocprofiler-systems/package.py b/var/spack/repos/builtin/packages/rocprofiler-systems/package.py index 4922f030904..66cb0c1d6ac 100644 --- a/var/spack/repos/builtin/packages/rocprofiler-systems/package.py +++ b/var/spack/repos/builtin/packages/rocprofiler-systems/package.py @@ -178,7 +178,7 @@ def flag_handler(self, name, flags): flags.append("-lintl") return (flags, None, None) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+tau" in self.spec: import glob diff --git a/var/spack/repos/builtin/packages/rocrand/package.py b/var/spack/repos/builtin/packages/rocrand/package.py index e7b16b598fc..a3dcb9472a6 100644 --- a/var/spack/repos/builtin/packages/rocrand/package.py +++ b/var/spack/repos/builtin/packages/rocrand/package.py @@ -142,7 +142,7 @@ def patch(self): os.rmdir("hipRAND") os.rename("hiprand", "hipRAND") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocsolver/package.py b/var/spack/repos/builtin/packages/rocsolver/package.py index 78cb3ad7da2..7354653f1b9 100644 --- a/var/spack/repos/builtin/packages/rocsolver/package.py +++ b/var/spack/repos/builtin/packages/rocsolver/package.py @@ -154,7 +154,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocsparse/package.py b/var/spack/repos/builtin/packages/rocsparse/package.py index 1fab2fe8014..33644f323f6 100644 --- a/var/spack/repos/builtin/packages/rocsparse/package.py +++ b/var/spack/repos/builtin/packages/rocsparse/package.py @@ -260,7 +260,7 @@ def check_build(self): ) exe("--gtest_filter=*quick*:*pre_checkin*-*known_bug*") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rocthrust/package.py b/var/spack/repos/builtin/packages/rocthrust/package.py index 66f5e0e5e65..5a94a9c69fe 100644 --- a/var/spack/repos/builtin/packages/rocthrust/package.py +++ b/var/spack/repos/builtin/packages/rocthrust/package.py @@ -91,7 +91,7 @@ def check(self): with working_dir(self.build_directory): make("test") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/roctracer-dev/package.py b/var/spack/repos/builtin/packages/roctracer-dev/package.py index 6254a70e58b..4e6dbd0bd80 100644 --- a/var/spack/repos/builtin/packages/roctracer-dev/package.py +++ b/var/spack/repos/builtin/packages/roctracer-dev/package.py @@ -156,7 +156,7 @@ def patch(self): "hsaap.py", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) diff --git a/var/spack/repos/builtin/packages/rocwmma/package.py b/var/spack/repos/builtin/packages/rocwmma/package.py index 0b679b24281..1fe7aed19d2 100644 --- a/var/spack/repos/builtin/packages/rocwmma/package.py +++ b/var/spack/repos/builtin/packages/rocwmma/package.py @@ -130,7 +130,7 @@ class Rocwmma(CMakePackage): patch("0001-add-rocm-smi-lib-path-for-building-tests.patch", when="@5.6:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["hip"].hipcc) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/roms/package.py b/var/spack/repos/builtin/packages/roms/package.py index 0ca26133647..bf28f0e24b0 100644 --- a/var/spack/repos/builtin/packages/roms/package.py +++ b/var/spack/repos/builtin/packages/roms/package.py @@ -128,16 +128,16 @@ def edit(self, spec, prefix): if "+debug" in self.spec: makefile.filter(r"\sUSE_DEBUG\s[?]=.*", "USE_DEBUG = on") - def setup_build_environment(self, spack_env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec netcdf_include = spec["netcdf-fortran"].prefix.include nf_config = join_path(spec["netcdf-fortran"].prefix.bin, "nf-config") - spack_env.set("NF_CONFIG", nf_config) - spack_env.set("NETCDF_INCDIR", netcdf_include) - spack_env.set("HDF5_INCDIR", spec["hdf5"].prefix.include) - spack_env.set("HDF5_LIBDIR", spec["hdf5"].prefix.libs) + env.set("NF_CONFIG", nf_config) + env.set("NETCDF_INCDIR", netcdf_include) + env.set("HDF5_INCDIR", spec["hdf5"].prefix.include) + env.set("HDF5_LIBDIR", spec["hdf5"].prefix.libs) def build(self, spec, prefix): make(parallel=False) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 30e58c4e847..4c04686c8d8 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -829,7 +829,7 @@ def cmake_args(self): return options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "lz4" in spec: @@ -878,7 +878,7 @@ def root_library_path(self): return "LD_LIBRARY_PATH" return "ROOT_LIBRARY_PATH" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ROOTSYS", self.prefix) env.set("ROOT_VERSION", "v{0}".format(self.version.up_to(1))) env.prepend_path("PYTHONPATH", self.prefix.lib.root) diff --git a/var/spack/repos/builtin/packages/rosco/package.py b/var/spack/repos/builtin/packages/rosco/package.py index a119dd45cd7..627d6b8f135 100644 --- a/var/spack/repos/builtin/packages/rosco/package.py +++ b/var/spack/repos/builtin/packages/rosco/package.py @@ -54,7 +54,7 @@ def cmake_args(self): return options - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ROSCO_DISCON", self.prefix.lib + "/libdiscon.so") env.set("ROSCO_DISCON_DIR", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 8152d91f74e..ffcd9622cdc 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -208,7 +208,7 @@ def configure_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+codethorn" in self.spec: env.set("CXXFLAGS", "-std=c++11") diff --git a/var/spack/repos/builtin/packages/rpp/package.py b/var/spack/repos/builtin/packages/rpp/package.py index 8eaa7ae14d1..1913a1d2380 100644 --- a/var/spack/repos/builtin/packages/rpp/package.py +++ b/var/spack/repos/builtin/packages/rpp/package.py @@ -181,13 +181,13 @@ def patch(self): with when("~hip"): depends_on("rocm-opencl@5:") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+add_tests"): env.set("TURBO_JPEG_PATH", self.spec["libjpeg-turbo"].prefix) if self.spec.satisfies("@6.1:"): env.prepend_path("LD_LIBRARY_PATH", self.spec["hsa-rocr-dev"].prefix.lib) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") diff --git a/var/spack/repos/builtin/packages/rstudio/package.py b/var/spack/repos/builtin/packages/rstudio/package.py index ecaf2c14bc1..bdfe5895a2e 100644 --- a/var/spack/repos/builtin/packages/rstudio/package.py +++ b/var/spack/repos/builtin/packages/rstudio/package.py @@ -72,7 +72,7 @@ def cmake_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("RSTUDIO_TOOLS_ROOT", self.prefix.tools) def patch(self): diff --git a/var/spack/repos/builtin/packages/rsyslog/package.py b/var/spack/repos/builtin/packages/rsyslog/package.py index bbc2bd00571..d2e44e1146b 100644 --- a/var/spack/repos/builtin/packages/rsyslog/package.py +++ b/var/spack/repos/builtin/packages/rsyslog/package.py @@ -42,7 +42,7 @@ class Rsyslog(AutotoolsPackage): depends_on("byacc", type="build") depends_on("flex", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/ruby/package.py b/var/spack/repos/builtin/packages/ruby/package.py index 0da239928b6..6eee25913fd 100644 --- a/var/spack/repos/builtin/packages/ruby/package.py +++ b/var/spack/repos/builtin/packages/ruby/package.py @@ -95,7 +95,9 @@ def url_for_version(self, version): url = "https://cache.ruby-lang.org/pub/ruby/{0}/ruby-{1}.tar.gz" return url.format(version.up_to(2), version) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if dependent_spec.package.extends(self.spec): env.prepend_path("GEM_PATH", dependent_spec.prefix) @@ -114,7 +116,9 @@ def setup_dependent_package(self, module, dependent_spec): class SetupEnvironment: - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # TODO: do this only for actual extensions. # Set GEM_PATH to include dependent gem directories for d in dependent_spec.traverse(deptype=("build", "run", "test"), root=True): diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 0710a3b929c..dda63f60677 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -122,7 +122,7 @@ def determine_spec_details(cls, prefix, exes_in_prefix): def setup_dependent_package(self, module, dependent_spec): module.cargo = Executable(os.path.join(self.spec.prefix.bin, "cargo")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Manually instruct Cargo dependency libssh2-sys to build with # the Spack installed libssh2 package. For more info see # https://github.com/alexcrichton/ssh2-rs/issues/173 diff --git a/var/spack/repos/builtin/packages/saga-gis/package.py b/var/spack/repos/builtin/packages/saga-gis/package.py index e387db4572e..3ac72670cc3 100644 --- a/var/spack/repos/builtin/packages/saga-gis/package.py +++ b/var/spack/repos/builtin/packages/saga-gis/package.py @@ -120,7 +120,7 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Point saga to its tool set, will be loaded during runtime env.set("SAGA_MLB", self.prefix.lib.saga) env.set("SAGA_TLB", self.prefix.lib.saga) diff --git a/var/spack/repos/builtin/packages/salome-configuration/package.py b/var/spack/repos/builtin/packages/salome-configuration/package.py index 7d6a66cbb8e..f80b63bc9c6 100644 --- a/var/spack/repos/builtin/packages/salome-configuration/package.py +++ b/var/spack/repos/builtin/packages/salome-configuration/package.py @@ -32,7 +32,9 @@ class SalomeConfiguration(Package): patch("SalomeMacros.patch", working_dir="./cmake") patch("FindSalomeHDF5.patch", working_dir="./cmake", when="@:9.7.0") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("CONFIGURATION_ROOT_DIR", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/salome-med/package.py b/var/spack/repos/builtin/packages/salome-med/package.py index 55249ad89ea..9fda7020e5d 100644 --- a/var/spack/repos/builtin/packages/salome-med/package.py +++ b/var/spack/repos/builtin/packages/salome-med/package.py @@ -62,7 +62,9 @@ def patch(self): string=True, ) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("HDF5_ROOT_DIR", self.spec["hdf5"].prefix) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/salome-medcoupling/package.py b/var/spack/repos/builtin/packages/salome-medcoupling/package.py index b2058d249ca..d5633e3f1ba 100644 --- a/var/spack/repos/builtin/packages/salome-medcoupling/package.py +++ b/var/spack/repos/builtin/packages/salome-medcoupling/package.py @@ -77,14 +77,14 @@ class SalomeMedcoupling(CMakePackage): def check(self): pass - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+metis" in self.spec: env.set("METIS_ROOT_DIR", self.spec["metis"].prefix) if "+scotch" in self.spec: env.set("SCOTCH_ROOT_DIR", self.spec["scotch"].prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: python_ver = self.spec["python"].version.up_to(2) env.prepend_path( "PYTHONPATH", join_path(self.prefix.lib, f"python{python_ver}", "site-packages") diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index 60986d5fb44..179ea1aca30 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -122,6 +122,8 @@ def configure_args(self): return options - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.satisfies("@3.12:"): env.append_flags("CXXFLAGS", self.compiler.cxx11_flag) diff --git a/var/spack/repos/builtin/packages/samurai/package.py b/var/spack/repos/builtin/packages/samurai/package.py index 21683c85e7d..e3073838f83 100644 --- a/var/spack/repos/builtin/packages/samurai/package.py +++ b/var/spack/repos/builtin/packages/samurai/package.py @@ -46,11 +46,13 @@ class Samurai(CMakePackage): depends_on("petsc+mpi", when="+mpi") depends_on("boost+serialization+mpi", when="+mpi") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: include_path = self.spec.prefix.include env.append_path("CXXFLAGS", f"-I{include_path}") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec.prefix.include) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/scale/package.py b/var/spack/repos/builtin/packages/scale/package.py index 6c860bf1888..db5bc2da43c 100644 --- a/var/spack/repos/builtin/packages/scale/package.py +++ b/var/spack/repos/builtin/packages/scale/package.py @@ -41,8 +41,8 @@ class Scale(MakefilePackage): parallel = False - def setup_build_environment(self, build_env): - build_env.set("PREFIX", self.prefix) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("PREFIX", self.prefix) def build(self, spec, prefix): scale_sys_str = "" diff --git a/var/spack/repos/builtin/packages/scitokens-cpp/package.py b/var/spack/repos/builtin/packages/scitokens-cpp/package.py index cd42c18311f..f53a29fba9d 100644 --- a/var/spack/repos/builtin/packages/scitokens-cpp/package.py +++ b/var/spack/repos/builtin/packages/scitokens-cpp/package.py @@ -65,5 +65,5 @@ def cmake_args(self): ] return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("JWC_CPP_DIR", self.spec["jwt-cpp"].prefix) diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index bec704a0423..8ba363def5b 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -55,13 +55,17 @@ def url_for_version(self, version): name = "scons" return url.format(name[0], name, version) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib.scons) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib.scons) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib.scons) def setup_dependent_package(self, module, dspec): diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 5e9231244bc..7015bab41d0 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -152,7 +152,7 @@ def is_64bit(self): return "64" in str(self.pkg.spec.target.family) @when("+noarch") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("SPACK_TARGET_ARGS") diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py index a8cb1fc7fac..6580dd878af 100644 --- a/var/spack/repos/builtin/packages/seacas/package.py +++ b/var/spack/repos/builtin/packages/seacas/package.py @@ -318,7 +318,7 @@ class Seacas(CMakePackage): # Based on install-tpl.sh script, cereal seems to only be used when faodel enabled depends_on("cereal", when="@2021-04-02: +faodel") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/seissol/package.py b/var/spack/repos/builtin/packages/seissol/package.py index fcd722c86e4..700cca006e0 100644 --- a/var/spack/repos/builtin/packages/seissol/package.py +++ b/var/spack/repos/builtin/packages/seissol/package.py @@ -365,6 +365,6 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # for seissol-launch env.prepend_path("PATH", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/selalib/package.py b/var/spack/repos/builtin/packages/selalib/package.py index 7443ccf1ed0..c663149fef7 100644 --- a/var/spack/repos/builtin/packages/selalib/package.py +++ b/var/spack/repos/builtin/packages/selalib/package.py @@ -61,7 +61,7 @@ def cmake_args(self): ] return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("FFTW_INCLUDE", self.spec["fftw"].prefix.include) env.set("FFTW_ROOT", self.spec["fftw"].prefix) diff --git a/var/spack/repos/builtin/packages/seqfu/package.py b/var/spack/repos/builtin/packages/seqfu/package.py index 07e40135643..848c914c832 100644 --- a/var/spack/repos/builtin/packages/seqfu/package.py +++ b/var/spack/repos/builtin/packages/seqfu/package.py @@ -26,7 +26,7 @@ class Seqfu(Package): patch("wno_incompatible_pointer_types.patch", when="@:1.21%gcc@14:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("NIMBLE_DIR", ".nimble") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/serenity/package.py b/var/spack/repos/builtin/packages/serenity/package.py index b3dbdaaae4c..77c15bdf02f 100644 --- a/var/spack/repos/builtin/packages/serenity/package.py +++ b/var/spack/repos/builtin/packages/serenity/package.py @@ -175,7 +175,7 @@ def cmake_args(self): args.append(self.define("PYTHON_EXECUTABLE", self.spec["python"].command.path)) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # set up environment like if we sourced dev/templates/serenity.sh env.set("SERENITY_HOME", self.prefix) env.set("SERENITY_BIN", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/serialbox/package.py b/var/spack/repos/builtin/packages/serialbox/package.py index 84ae8fa085a..9c463624b1b 100644 --- a/var/spack/repos/builtin/packages/serialbox/package.py +++ b/var/spack/repos/builtin/packages/serialbox/package.py @@ -149,7 +149,7 @@ def flag_handler(self, name, flags): return flags, None, (cmake_flags or None) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Allow for running the preprocessor directly: env.prepend_path("PATH", self.prefix.python.pp_ser) # Allow for running the preprocessor as a Python module, as well as diff --git a/var/spack/repos/builtin/packages/sfcio/package.py b/var/spack/repos/builtin/packages/sfcio/package.py index 78b4c998e5f..5cd688a0d2a 100644 --- a/var/spack/repos/builtin/packages/sfcio/package.py +++ b/var/spack/repos/builtin/packages/sfcio/package.py @@ -31,7 +31,7 @@ def cmake_args(self): args = [self.define("ENABLE_TESTS", self.run_tests)] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: lib = find_libraries("libsfcio", root=self.prefix, shared=False, recursive=True) # Only one library version, but still need to set _4 to make NCO happy for suffix in ("4", ""): diff --git a/var/spack/repos/builtin/packages/shapemapper/package.py b/var/spack/repos/builtin/packages/shapemapper/package.py index 17613117fe0..220834923d1 100644 --- a/var/spack/repos/builtin/packages/shapemapper/package.py +++ b/var/spack/repos/builtin/packages/shapemapper/package.py @@ -61,5 +61,5 @@ def install(self, spec, prefix): for f in ["shapemapper", "README.md"]: install(f, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/shared-mime-info/package.py b/var/spack/repos/builtin/packages/shared-mime-info/package.py index 8ac491b8180..bbf6dc0d175 100644 --- a/var/spack/repos/builtin/packages/shared-mime-info/package.py +++ b/var/spack/repos/builtin/packages/shared-mime-info/package.py @@ -27,8 +27,12 @@ class SharedMimeInfo(AutotoolsPackage): depends_on("gettext", type="build") depends_on("pkgconfig", type="build") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XDG_DATA_DIRS", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/shortbred/package.py b/var/spack/repos/builtin/packages/shortbred/package.py index 0c816cf4f34..c0d4402ca01 100644 --- a/var/spack/repos/builtin/packages/shortbred/package.py +++ b/var/spack/repos/builtin/packages/shortbred/package.py @@ -31,5 +31,5 @@ def install(self, spec, prefix): install("shortbred_quantify.py", prefix.bin) install_tree("src", prefix.src) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/sigio/package.py b/var/spack/repos/builtin/packages/sigio/package.py index d84e753d53d..4aebf9813c1 100644 --- a/var/spack/repos/builtin/packages/sigio/package.py +++ b/var/spack/repos/builtin/packages/sigio/package.py @@ -29,7 +29,7 @@ def cmake_args(self): args = [self.define("ENABLE_TESTS", self.run_tests)] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: lib = find_libraries("libsigio", root=self.prefix, shared=False, recursive=True) # Only one library version, but still need to set _4 to make NCO happy for suffix in ("4", ""): diff --git a/var/spack/repos/builtin/packages/signalp/package.py b/var/spack/repos/builtin/packages/signalp/package.py index 670c5ca114b..7acf6e70a57 100644 --- a/var/spack/repos/builtin/packages/signalp/package.py +++ b/var/spack/repos/builtin/packages/signalp/package.py @@ -38,5 +38,5 @@ def install(self, spec, prefix): install_tree("lib", prefix.lib) install_tree("syn", prefix.syn) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/signify/package.py b/var/spack/repos/builtin/packages/signify/package.py index 760dbed38da..31b9e98d76a 100644 --- a/var/spack/repos/builtin/packages/signify/package.py +++ b/var/spack/repos/builtin/packages/signify/package.py @@ -21,5 +21,5 @@ class Signify(MakefilePackage): depends_on("libbsd@0.8:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) diff --git a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py index 6f577559c61..41a32a07bc7 100644 --- a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py +++ b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py @@ -573,12 +573,14 @@ class SimmetrixSimmodsuite(Package): condition = "@{0}+{1}".format(sim_version, feature) simmetrix_resource(_name, url, sha256, condition) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: archlib = join_path(self.prefix.lib, self.oslib) env.append_path("CMAKE_PREFIX_PATH", archlib) simmetrix_setkernelcmakeprefixpath(self.spec, archlib, env) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: archlib = join_path(self.prefix.lib, self.oslib) env.append_path("CMAKE_PREFIX_PATH", archlib) simmetrix_setkernelcmakeprefixpath(self.spec, archlib, env) diff --git a/var/spack/repos/builtin/packages/singularity-eos/package.py b/var/spack/repos/builtin/packages/singularity-eos/package.py index e2f61804665..ffd264c3254 100644 --- a/var/spack/repos/builtin/packages/singularity-eos/package.py +++ b/var/spack/repos/builtin/packages/singularity-eos/package.py @@ -188,7 +188,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if os.path.isdir(self.prefix.lib64): lib_dir = self.prefix.lib64 else: diff --git a/var/spack/repos/builtin/packages/singularityce/package.py b/var/spack/repos/builtin/packages/singularityce/package.py index a5c4a4b50ec..58ab5925528 100644 --- a/var/spack/repos/builtin/packages/singularityce/package.py +++ b/var/spack/repos/builtin/packages/singularityce/package.py @@ -94,7 +94,7 @@ def edit(self, spec, prefix): build_targets = ["-C", "builddir", "parallel=False"] install_targets = ["install", "-C", "builddir", "parallel=False"] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Point GOPATH at the top of the staging dir for the build step. env.prepend_path("GOPATH", self.gopath) diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 1209bc23b2b..90410a43fe7 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -233,12 +233,14 @@ def install(self, spec, prefix): make("install", parallel=False) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # set SLEPC_DIR & PETSC_DIR in the module file env.set("SLEPC_DIR", self.prefix) env.set("PETSC_DIR", self.spec["petsc"].prefix) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Set up SLEPC_DIR for dependent packages built with SLEPc env.set("SLEPC_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/smartmontools/package.py b/var/spack/repos/builtin/packages/smartmontools/package.py index 9ca183a08a1..47da9a58d1f 100644 --- a/var/spack/repos/builtin/packages/smartmontools/package.py +++ b/var/spack/repos/builtin/packages/smartmontools/package.py @@ -18,6 +18,6 @@ class Smartmontools(AutotoolsPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) env.prepend_path("LD_LIBRARY_PATH", self.prefix.usr.lib) diff --git a/var/spack/repos/builtin/packages/snap-korf/package.py b/var/spack/repos/builtin/packages/snap-korf/package.py index 83eefe314d1..27163c432c0 100644 --- a/var/spack/repos/builtin/packages/snap-korf/package.py +++ b/var/spack/repos/builtin/packages/snap-korf/package.py @@ -50,6 +50,6 @@ def install(self, spec, prefix): install_tree("HMM", prefix.HMM) install_tree("DNA", prefix.DNA) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ZOE", self.prefix) env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/snphylo/package.py b/var/spack/repos/builtin/packages/snphylo/package.py index 5e99b8e598e..f9f605d38a2 100644 --- a/var/spack/repos/builtin/packages/snphylo/package.py +++ b/var/spack/repos/builtin/packages/snphylo/package.py @@ -39,5 +39,5 @@ def install(self, spec, prefix): bash("./setup.sh", input=f) install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/sollve/package.py b/var/spack/repos/builtin/packages/sollve/package.py index 2faa3735aa5..cc16f0dd336 100644 --- a/var/spack/repos/builtin/packages/sollve/package.py +++ b/var/spack/repos/builtin/packages/sollve/package.py @@ -244,10 +244,10 @@ def check_darwin_lldb_codesign_requirement(self): ) raise RuntimeError(explanation) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", self.compiler.cxx11_flag) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+clang" in self.spec: env.set("CC", join_path(self.spec.prefix.bin, "clang")) env.set("CXX", join_path(self.spec.prefix.bin, "clang++")) diff --git a/var/spack/repos/builtin/packages/sonlib/package.py b/var/spack/repos/builtin/packages/sonlib/package.py index b15e2126989..e42befa9419 100644 --- a/var/spack/repos/builtin/packages/sonlib/package.py +++ b/var/spack/repos/builtin/packages/sonlib/package.py @@ -28,7 +28,7 @@ class Sonlib(MakefilePackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: binpath = os.path.join(self.stage.source_path, "bin") libpath = os.path.join(self.stage.source_path, "lib") diff --git a/var/spack/repos/builtin/packages/sopt/package.py b/var/spack/repos/builtin/packages/sopt/package.py index 69884872847..f0aaed52378 100644 --- a/var/spack/repos/builtin/packages/sopt/package.py +++ b/var/spack/repos/builtin/packages/sopt/package.py @@ -59,7 +59,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+tests" in self.spec: env.prepend_path("PATH", self.spec.prefix.tests) if "+examples" in self.spec: diff --git a/var/spack/repos/builtin/packages/sos/package.py b/var/spack/repos/builtin/packages/sos/package.py index dc796b3f8ae..1090524f732 100644 --- a/var/spack/repos/builtin/packages/sos/package.py +++ b/var/spack/repos/builtin/packages/sos/package.py @@ -82,7 +82,9 @@ class Sos(AutotoolsPackage): # them from using the spack wrappers filter_compiler_wrappers("oshcc", "oshc++", "oshcc", "oshfort", relative_root="bin") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # Enable the osh wrappers to use spack wrappers when inside spack # with env variables env.set("SHMEM_CC", spack_cc) diff --git a/var/spack/repos/builtin/packages/sosflow/package.py b/var/spack/repos/builtin/packages/sosflow/package.py index d33b7cbc117..8f7edffa6c2 100644 --- a/var/spack/repos/builtin/packages/sosflow/package.py +++ b/var/spack/repos/builtin/packages/sosflow/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from spack.package import * @@ -23,15 +24,15 @@ class Sosflow(CMakePackage): depends_on("pkgconfig") depends_on("mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SOS_HOST_KNOWN_AS", "SPACK-SOS-BUILD") env.set("SOS_HOST_NODE_NAME", "SPACK-SOS-NODE") env.set("SOS_HOST_DETAILED", "SPACK-SOS-DETAILED") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SOS_ROOT", self.spec.prefix) env.set("SOS_BUILD_DIR", self.spec.prefix) env.set("SOS_CMD_PORT", "22500") - env.set("SOS_WORK", env["HOME"]) - env.set("SOS_EVPATH_MEETUP", env["HOME"]) + env.set("SOS_WORK", os.environ["HOME"]) + env.set("SOS_EVPATH_MEETUP", os.environ["HOME"]) env.set("SOS_ENV_SET", "true") diff --git a/var/spack/repos/builtin/packages/sp/package.py b/var/spack/repos/builtin/packages/sp/package.py index b8bb65ec176..32e77c322ab 100644 --- a/var/spack/repos/builtin/packages/sp/package.py +++ b/var/spack/repos/builtin/packages/sp/package.py @@ -35,7 +35,7 @@ class Sp(CMakePackage): depends_on("fortran", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@2.4:"): suffixes = self.spec.variants["precision"].value else: diff --git a/var/spack/repos/builtin/packages/spack/package.py b/var/spack/repos/builtin/packages/spack/package.py index b0487f81c2a..98f62854c99 100644 --- a/var/spack/repos/builtin/packages/spack/package.py +++ b/var/spack/repos/builtin/packages/spack/package.py @@ -143,7 +143,7 @@ class Spack(Package): depends_on("py-sphinx-rtd-theme", type="run") depends_on("graphviz", type="run") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SPACK_PYTHON", self.spec["python"].command.path) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 36335dbfa48..a8ca52ef198 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -56,7 +56,7 @@ def install_dir(dirname): install("RELEASE", prefix) @when("+hadoop") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: hadoop = self.spec["hadoop"].command hadoop.add_default_env("JAVA_HOME", self.spec["java"].home) hadoop_classpath = hadoop("classpath", output=str) diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 8432cd86dc7..066a29ec9b6 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -117,7 +117,9 @@ def setup_dependent_package(self, module, dependent_spec): self.spec.mpif77 = os.path.join(self.prefix.bin, "mpif77") self.spec.mpifc = os.path.join(self.prefix.bin, "mpif90") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if "%xl" in dependent_spec or "%xl_r" in dependent_spec: env.set("MPICC", os.path.join(self.prefix.bin, "mpixlc")) env.set("MPICXX", os.path.join(self.prefix.bin, "mpixlC")) @@ -136,7 +138,7 @@ def setup_dependent_build_environment(self, env, dependent_spec): env.set("OMPI_F77", dependent_module.spack_f77) env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Because MPI functions as a compiler we need to setup the compilers # in the run environment, like any compiler if "%xl" in self.spec or "%xl_r" in self.spec: diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py index efb5c377017..ba99c529de3 100644 --- a/var/spack/repos/builtin/packages/spindle/package.py +++ b/var/spack/repos/builtin/packages/spindle/package.py @@ -32,5 +32,5 @@ class Spindle(AutotoolsPackage): # spindle_logd.cc:65:76: error: narrowing conversion of '223' from 'int' to 'char' # spindle_logd.cc:65:76: error: narrowing conversion of '191' from 'int' to 'char' @when("@0.8.1 %gcc") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CPPFLAGS", "-Wno-narrowing") diff --git a/var/spack/repos/builtin/packages/spiral-software/package.py b/var/spack/repos/builtin/packages/spiral-software/package.py index 459b858feb9..0221b5a68b8 100644 --- a/var/spack/repos/builtin/packages/spiral-software/package.py +++ b/var/spack/repos/builtin/packages/spiral-software/package.py @@ -110,11 +110,15 @@ def install(self, spec, prefix): if f"+{pkg}" in spec: self.spiral_package_install(spec, prefix, pkg) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("SPIRAL_HOME", self.prefix) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("SPIRAL_HOME", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SPIRAL_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/srilm/package.py b/var/spack/repos/builtin/packages/srilm/package.py index f5f1089fdeb..b1dd9ee44ed 100644 --- a/var/spack/repos/builtin/packages/srilm/package.py +++ b/var/spack/repos/builtin/packages/srilm/package.py @@ -90,7 +90,7 @@ def install(self, spec, prefix): install_tree("include", prefix.include) install_tree("man", prefix.man) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Most executable files are in a subfolder named based on # the detected machine type. Unfortunately we cannot use # `machine_type` at this point but we can just guess as diff --git a/var/spack/repos/builtin/packages/ssmtp/package.py b/var/spack/repos/builtin/packages/ssmtp/package.py index 58e228b9b3f..ba6ec46cf65 100644 --- a/var/spack/repos/builtin/packages/ssmtp/package.py +++ b/var/spack/repos/builtin/packages/ssmtp/package.py @@ -28,7 +28,7 @@ class Ssmtp(AutotoolsPackage): patch("install.patch") @when("+ssl") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # The configure script is generated with a very old version of # autoconf, which cannot accept LIBS as a command-line argument env.set("LIBS", self.spec["openssl"].libs.link_flags) diff --git a/var/spack/repos/builtin/packages/sspace-standard/package.py b/var/spack/repos/builtin/packages/sspace-standard/package.py index 002a89922fb..f3c2e3fc5ab 100644 --- a/var/spack/repos/builtin/packages/sspace-standard/package.py +++ b/var/spack/repos/builtin/packages/sspace-standard/package.py @@ -46,6 +46,6 @@ def install(self, spec, prefix): install_tree("tools", prefix.tools) install(rootscript, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SSPACE_HOME", self.prefix) env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/sst-elements/package.py b/var/spack/repos/builtin/packages/sst-elements/package.py index 553bf7e0543..36dda9a532d 100644 --- a/var/spack/repos/builtin/packages/sst-elements/package.py +++ b/var/spack/repos/builtin/packages/sst-elements/package.py @@ -169,7 +169,7 @@ def configure_args(self): args.append("--with-sst-core=%s" % spec["sst-core"].prefix) return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Setup runtime environment for SST Elements.""" if "+pin" in self.spec: diff --git a/var/spack/repos/builtin/packages/star-ccm-plus/package.py b/var/spack/repos/builtin/packages/star-ccm-plus/package.py index 2c1273c893a..bf9f8315071 100644 --- a/var/spack/repos/builtin/packages/star-ccm-plus/package.py +++ b/var/spack/repos/builtin/packages/star-ccm-plus/package.py @@ -75,7 +75,7 @@ def install(self, spec, prefix): "-DNODOC={0}".format("false" if "+docs" in spec else "true"), ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # using Version.up_to strips out the 0 padding version = re.sub("_.*$", "", format(self.spec.version)) env.prepend_path( diff --git a/var/spack/repos/builtin/packages/stata/package.py b/var/spack/repos/builtin/packages/stata/package.py index 5ba670b0c4d..c9ff1a94ce1 100644 --- a/var/spack/repos/builtin/packages/stata/package.py +++ b/var/spack/repos/builtin/packages/stata/package.py @@ -39,7 +39,7 @@ def url_for_version(self, version): return "file://{0}/Stata{1}Linux64.tar.gz".format(os.getcwd(), version) # STATA is simple and needs really just the PATH set. - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) env.prepend_path("LD_LIBRARY_PATH", self.spec["libpng"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/steps/package.py b/var/spack/repos/builtin/packages/steps/package.py index 6ffb7384e77..f922a45a5cc 100644 --- a/var/spack/repos/builtin/packages/steps/package.py +++ b/var/spack/repos/builtin/packages/steps/package.py @@ -141,7 +141,7 @@ def build_targets(self): ] return targets - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # This recipe exposes a Python package from a C++ CMake project. # This hook is required to reproduce what Spack PythonPackage does. env.prepend_path("PYTHONPATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/stripack/package.py b/var/spack/repos/builtin/packages/stripack/package.py index 9bc0be06d19..d50dcea5238 100644 --- a/var/spack/repos/builtin/packages/stripack/package.py +++ b/var/spack/repos/builtin/packages/stripack/package.py @@ -51,7 +51,7 @@ def run_mkmake(self): fh.write("\n".join(config)) mkdirp(join_path(self.build_directory, "build")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # This is smartly used by VisIt env.set( "VISIT_FFP_STRIPACK_PATH", join_path(self.spec.prefix.lib, "libstripack." + dso_suffix) diff --git a/var/spack/repos/builtin/packages/su2/package.py b/var/spack/repos/builtin/packages/su2/package.py index 80793800f86..11c36cfeb51 100644 --- a/var/spack/repos/builtin/packages/su2/package.py +++ b/var/spack/repos/builtin/packages/su2/package.py @@ -156,7 +156,7 @@ def install_mpp(self): join_path(self.build_directory, "subprojects", "Mutationpp"), self.prefix.lib ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("su2_run", self.prefix.bin) env.set("su2_home", self.prefix) env.prepend_path("path", self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/sumo/package.py b/var/spack/repos/builtin/packages/sumo/package.py index 4d284f0d5bb..1db5ecc4a07 100644 --- a/var/spack/repos/builtin/packages/sumo/package.py +++ b/var/spack/repos/builtin/packages/sumo/package.py @@ -48,5 +48,5 @@ def url_for_version(self, version): url = "https://github.com/eclipse/sumo/archive/v{0}.tar.gz" return url.format(version.underscored) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SUMO_HOME", self.prefix) diff --git a/var/spack/repos/builtin/packages/supernova/package.py b/var/spack/repos/builtin/packages/supernova/package.py index c7c5ed50295..a9802f04bea 100644 --- a/var/spack/repos/builtin/packages/supernova/package.py +++ b/var/spack/repos/builtin/packages/supernova/package.py @@ -36,7 +36,7 @@ class Supernova(Package): def url_for_version(self, version): return "file://{0}/supernova-{1}.tar.gz".format(os.getcwd(), version) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/survey/package.py b/var/spack/repos/builtin/packages/survey/package.py index 76147b5c0d2..f4a4fd1f4d6 100644 --- a/var/spack/repos/builtin/packages/survey/package.py +++ b/var/spack/repos/builtin/packages/survey/package.py @@ -149,7 +149,7 @@ def python_lib_dir(self): def site_packages_dir(self): return join_path(self.python_lib_dir, "site-packages") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set up the compile and runtime environments for a package.""" # Set SURVEY_MPI_IMPLEMENTATON to the appropriate mpi implementation diff --git a/var/spack/repos/builtin/packages/sw4/package.py b/var/spack/repos/builtin/packages/sw4/package.py index 8feb7845baa..49265b5c561 100644 --- a/var/spack/repos/builtin/packages/sw4/package.py +++ b/var/spack/repos/builtin/packages/sw4/package.py @@ -42,7 +42,7 @@ class Sw4(MakefilePackage): depends_on("fftw@3: +mpi", when="+fftw") depends_on("llvm-openmp", when="+openmp %apple-clang") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CXX", self.spec["mpi"].mpicxx) env.set("FC", self.spec["mpi"].mpifc) # openmp is enabled by default diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index 0181504cf1d..80ccbb3d031 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -37,11 +37,11 @@ class Swiftsim(AutotoolsPackage): depends_on("hdf5~mpi", when="~mpi") depends_on("hdf5+mpi", when="+mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # Needed to be able to download from the Durham gitlab repository tty.warn('Setting "GIT_SSL_NO_VERIFY=1"') tty.warn("This is needed to clone SWIFT repository") - env.set("GIT_SSL_NO_VERIFY", 1) + env.set("GIT_SSL_NO_VERIFY", "1") def configure_args(self): return [ diff --git a/var/spack/repos/builtin/packages/sympack/package.py b/var/spack/repos/builtin/packages/sympack/package.py index 1429eb5c8a1..87ec9020f1b 100644 --- a/var/spack/repos/builtin/packages/sympack/package.py +++ b/var/spack/repos/builtin/packages/sympack/package.py @@ -80,7 +80,7 @@ def cmake_args(self): ] return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "network=auto" not in spec: env.set("UPCXX_NETWORK", spec.variants["network"].value) diff --git a/var/spack/repos/builtin/packages/sysstat/package.py b/var/spack/repos/builtin/packages/sysstat/package.py index 9e83cf439d8..785d7942350 100644 --- a/var/spack/repos/builtin/packages/sysstat/package.py +++ b/var/spack/repos/builtin/packages/sysstat/package.py @@ -33,7 +33,7 @@ class Sysstat(AutotoolsPackage): depends_on("gettext") depends_on("lm-sensors") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("rcdir", self.spec.prefix.etc) env.append_flags("sa_dir", self.spec.prefix.log.sa) env.append_flags("conf_dir", self.spec.prefix.etc.sysconfig) diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index d8c0cdd9503..df86a04fb96 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -96,7 +96,7 @@ def flag_handler(self, name, flags): flags.append("-Wno-error=implicit-function-declaration") return (flags, None, None) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+hdf5" in self.spec: env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) diff --git a/var/spack/repos/builtin/packages/sz3/package.py b/var/spack/repos/builtin/packages/sz3/package.py index 10cd5a86501..d9e79614001 100644 --- a/var/spack/repos/builtin/packages/sz3/package.py +++ b/var/spack/repos/builtin/packages/sz3/package.py @@ -34,7 +34,7 @@ class Sz3(CMakePackage): depends_on("pkgconfig") depends_on("hdf5", when="+hdf5") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+hdf5" in self.spec: env.prepend_path("HDF5_PLUGIN_PATH", self.prefix.lib64) diff --git a/var/spack/repos/builtin/packages/tandem/package.py b/var/spack/repos/builtin/packages/tandem/package.py index ad6947ec803..c651be4a219 100644 --- a/var/spack/repos/builtin/packages/tandem/package.py +++ b/var/spack/repos/builtin/packages/tandem/package.py @@ -119,5 +119,5 @@ def install(self, spec, prefix): self.build(spec, prefix) install_tree(self.build_directory, prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.app) diff --git a/var/spack/repos/builtin/packages/targetp/package.py b/var/spack/repos/builtin/packages/targetp/package.py index 20bc5cbc67b..9b255b75a6e 100644 --- a/var/spack/repos/builtin/packages/targetp/package.py +++ b/var/spack/repos/builtin/packages/targetp/package.py @@ -42,6 +42,6 @@ def install(self, spec, prefix): install_tree("tmp", prefix.tmp) install("targetp", prefix.targetp) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("TARGETP", self.prefix) env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/tasmanian/package.py b/var/spack/repos/builtin/packages/tasmanian/package.py index 03911f8a827..ba22c8ec97b 100644 --- a/var/spack/repos/builtin/packages/tasmanian/package.py +++ b/var/spack/repos/builtin/packages/tasmanian/package.py @@ -93,7 +93,7 @@ class Tasmanian(CMakePackage, CudaPackage, ROCmPackage): # patching a bug in the interpretation of the C++ standard patch("tas80_clang17.patch", when="@8.0") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # needed for the hipcc compiler if "+rocm" in self.spec: env.set("CXX", self.spec["hip"].hipcc) diff --git a/var/spack/repos/builtin/packages/tassel/package.py b/var/spack/repos/builtin/packages/tassel/package.py index 4bf7e5b66b5..32445c0c593 100644 --- a/var/spack/repos/builtin/packages/tassel/package.py +++ b/var/spack/repos/builtin/packages/tassel/package.py @@ -27,5 +27,5 @@ class Tassel(Package): def install(self, spec, prefix): install_tree(".", prefix.bin) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CLASSPATH", self.prefix.bin.lib) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 126eb2b2359..2bbe8374dd2 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -251,7 +251,7 @@ def set_compiler_options(self, spec): compiler_options.append(useropt) return compiler_options - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LIBRARY_PATH", self.spec["zlib-api"].prefix.lib) env.prepend_path("LIBRARY_PATH", self.spec["hwloc"].prefix.lib) @@ -450,7 +450,7 @@ def link_tau_arch_dirs(self): if os.path.isdir(src) and not os.path.exists(dest): os.symlink(join_path(subdir, d), dest) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: pattern = join_path(self.prefix.lib, "Makefile.*") files = glob.glob(pattern) diff --git a/var/spack/repos/builtin/packages/tb-lmto/package.py b/var/spack/repos/builtin/packages/tb-lmto/package.py index 39a9464f746..5023b3b5266 100644 --- a/var/spack/repos/builtin/packages/tb-lmto/package.py +++ b/var/spack/repos/builtin/packages/tb-lmto/package.py @@ -61,5 +61,5 @@ def install(self, spec, prefix): mkdirp(prefix) install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 08c592a68a5..21f19aa6b9d 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -93,7 +93,7 @@ def command(self): exe = ".exe" if is_windows else "" return Executable(os.path.realpath(self.prefix.bin.join(f"tclsh{self._tcl_name}{exe}"))) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set TCL_LIBRARY to the directory containing init.tcl. For further info see: @@ -104,7 +104,9 @@ def setup_run_environment(self, env): # python will not be able to find Tcl unless TCL_LIBRARY is set. env.set("TCL_LIBRARY", find_script_dir(self.spec)) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set TCLLIBPATH to include the tcl-shipped directory for extensions and any other tcl extension it depends on. @@ -138,7 +140,9 @@ def symlink_tclsh(self): with working_dir(self.prefix.bin): symlink(f"tclsh{ver_suffix}{win_suffix}", "tclsh") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set TCL_LIBRARY to the directory containing init.tcl. Set TCLLIBPATH to include the tcl-shipped directory for extensions and any other tcl extension it depends on. @@ -185,7 +189,7 @@ class AutotoolsBuilder(AnyBuilder, spack.build_systems.autotools.AutotoolsBuilde # if TCL is present on the system this may be set to the system's # existing TCL so ensure it is unset # https://wiki.tcl-lang.org/page/TCL%5FLIBRARY - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("TCL_LIBRARY", "") def install(self, pkg, spec, prefix): diff --git a/var/spack/repos/builtin/packages/tecplot/package.py b/var/spack/repos/builtin/packages/tecplot/package.py index 05de2b27282..d702f52c2e9 100644 --- a/var/spack/repos/builtin/packages/tecplot/package.py +++ b/var/spack/repos/builtin/packages/tecplot/package.py @@ -55,7 +55,7 @@ def install(self, spec, prefix): force_symlink("../tecplotlm.lic", join_path(self.prefix, lic360)) force_symlink("../tecplotlm.lic", join_path(self.prefix, licChorus)) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # Add Chorus bin binChorus = "chorus_{0}/bin".format(self.version) env.prepend_path("PATH", join_path(self.prefix, binChorus)) diff --git a/var/spack/repos/builtin/packages/templight/package.py b/var/spack/repos/builtin/packages/templight/package.py index a4e00e77f6f..b7195a0834d 100644 --- a/var/spack/repos/builtin/packages/templight/package.py +++ b/var/spack/repos/builtin/packages/templight/package.py @@ -107,10 +107,10 @@ def patch(self): with open("tools/clang/tools/CMakeLists.txt", "a") as cmake_lists: cmake_lists.write("add_clang_subdirectory(templight)") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", self.compiler.cxx11_flag) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("CC", join_path(self.spec.prefix.bin, "templight")) env.set("CXX", join_path(self.spec.prefix.bin, "templight++")) diff --git a/var/spack/repos/builtin/packages/tempo/package.py b/var/spack/repos/builtin/packages/tempo/package.py index 5b9941a3214..dd09ddf0655 100644 --- a/var/spack/repos/builtin/packages/tempo/package.py +++ b/var/spack/repos/builtin/packages/tempo/package.py @@ -57,14 +57,18 @@ def post_install_packages(self): cp("-r", "ephem", join_path(self.prefix, "ephem")) cp("-r", "tzpar", join_path(self.prefix, "tzpar")) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("TEMPO", self.prefix) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.set("TEMPO", self.prefix) # For LWA-10-17-2020 version env.set("TEMPO_DIR", self.prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("TEMPO", self.prefix) diff --git a/var/spack/repos/builtin/packages/tengine/package.py b/var/spack/repos/builtin/packages/tengine/package.py index 01172ed34f6..4ae7f3f7abb 100644 --- a/var/spack/repos/builtin/packages/tengine/package.py +++ b/var/spack/repos/builtin/packages/tengine/package.py @@ -21,5 +21,5 @@ class Tengine(AutotoolsPackage): depends_on("pcre") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/tesseract/package.py b/var/spack/repos/builtin/packages/tesseract/package.py index b0c7d97d01a..1dfb0a3a635 100644 --- a/var/spack/repos/builtin/packages/tesseract/package.py +++ b/var/spack/repos/builtin/packages/tesseract/package.py @@ -71,7 +71,7 @@ def autoreconf(self, spec, prefix): def configure_args(self): return self.enable_or_disable("doc") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("SCROLLVIEW_PATH", prefix.share.tessdata) @when("@5.5.0:") diff --git a/var/spack/repos/builtin/packages/tests-sos/package.py b/var/spack/repos/builtin/packages/tests-sos/package.py index 01120113192..11210030a6f 100644 --- a/var/spack/repos/builtin/packages/tests-sos/package.py +++ b/var/spack/repos/builtin/packages/tests-sos/package.py @@ -32,7 +32,7 @@ def autoreconf(self, spec, prefix): bash = which("bash") bash("./autogen.sh") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("CC", "oshcc") env.set("CXX", "oshc++") env.set("FC", "oshfort") diff --git a/var/spack/repos/builtin/packages/texinfo/package.py b/var/spack/repos/builtin/packages/texinfo/package.py index 909777bcaac..e309a30d3b1 100644 --- a/var/spack/repos/builtin/packages/texinfo/package.py +++ b/var/spack/repos/builtin/packages/texinfo/package.py @@ -67,7 +67,7 @@ def build_targets(self): targets.append(f"CFLAGS={self.compiler.c11_flag}") return targets - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # texinfo builds Perl XS modules internally, and by default it overrides the # CC that the top-level configure reports. This loses the Spack wrappers unless # we set PERL_EXT_CC diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 295602d468b..a503ff6c2e8 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -165,10 +165,10 @@ def setup_texlive(self): mtxrun = Executable(mtxrun_lua) mtxrun("--generate") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(self.prefix.bin, self.tex_arch())) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", join_path(self.prefix.bin, self.tex_arch())) executables = [r"^tex$"] diff --git a/var/spack/repos/builtin/packages/tfel/package.py b/var/spack/repos/builtin/packages/tfel/package.py index 95d8f8180ca..7429461c96c 100644 --- a/var/spack/repos/builtin/packages/tfel/package.py +++ b/var/spack/repos/builtin/packages/tfel/package.py @@ -230,7 +230,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("LD_LIBRARY_PATH", self.prefix.lib) def check(self): diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 5c0704bf26a..eafa377893c 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -80,7 +80,7 @@ class Thrift(Package): when="@0.16.0", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+pic" in self.spec: env.append_flags("CFLAGS", self.compiler.cc_pic_flag) env.append_flags("CXXFLAGS", self.compiler.cxx_pic_flag) diff --git a/var/spack/repos/builtin/packages/thunar/package.py b/var/spack/repos/builtin/packages/thunar/package.py index f290fa2e5a8..09f53d599d5 100644 --- a/var/spack/repos/builtin/packages/thunar/package.py +++ b/var/spack/repos/builtin/packages/thunar/package.py @@ -60,7 +60,7 @@ class Thunar(AutotoolsPackage): depends_on("gtkplus@3.22:") depends_on("gobject-introspection@1.60:", when="+introspection") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@4.18"): # Fails to check in xcfe4 include subdirectory for the libxfce4kbd-private-3 tree env.append_flags("CPPFLAGS", f"-I{self.spec['libxfce4ui'].home.include.xfce4}") diff --git a/var/spack/repos/builtin/packages/tix/package.py b/var/spack/repos/builtin/packages/tix/package.py index 5af70e84e2a..1462ea15c16 100644 --- a/var/spack/repos/builtin/packages/tix/package.py +++ b/var/spack/repos/builtin/packages/tix/package.py @@ -94,7 +94,7 @@ def test_tcl(self): def libs(self): return find_libraries(["libTix{0}".format(self.version)], root=self.prefix, recursive=True) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set TIX_LIBRARY to the directory containing Tix.tcl. For further info, see: @@ -105,7 +105,9 @@ def setup_run_environment(self, env): # python will not be able to find Tix unless TIX_LIBRARY is set. env.set("TIX_LIBRARY", os.path.dirname(find(self.prefix, "Tix.tcl")[0])) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set TIX_LIBRARY to the directory containing Tix.tcl. For further info, see: diff --git a/var/spack/repos/builtin/packages/tixi/package.py b/var/spack/repos/builtin/packages/tixi/package.py index f94ce1c0937..7fa8e9a9180 100644 --- a/var/spack/repos/builtin/packages/tixi/package.py +++ b/var/spack/repos/builtin/packages/tixi/package.py @@ -56,7 +56,7 @@ def cmake_args(self): self.define_from_variant("TIXI_ENABLE_FORTRAN", "fortran"), ] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Allow to import tixi3wrapper in python""" if "+python" in self.spec: diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 4d026369b88..062fcaa23cf 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -127,7 +127,7 @@ def _find_script_dir(self): return os.path.dirname(result) raise RuntimeError("Cannot locate tk.tcl") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: """Set TK_LIBRARY to the directory containing tk.tcl. For further info, see: @@ -138,7 +138,9 @@ def setup_run_environment(self, env): # python will not be able to find Tk unless TK_LIBRARY is set. env.set("TK_LIBRARY", self._find_script_dir()) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Set TK_LIBRARY to the directory containing tk.tcl. For further info, see: diff --git a/var/spack/repos/builtin/packages/tophat/package.py b/var/spack/repos/builtin/packages/tophat/package.py index f5117c273c3..ca2ec6a0685 100644 --- a/var/spack/repos/builtin/packages/tophat/package.py +++ b/var/spack/repos/builtin/packages/tophat/package.py @@ -37,7 +37,7 @@ def patch(self): # Newer versions of autoconf hate calling AM_INIT_AUTOMAKE twice filter_file(r"^AM_INIT_AUTOMAKE$", "", "configure.ac") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CFLAGS", self.compiler.cxx98_flag) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/totalview/package.py b/var/spack/repos/builtin/packages/totalview/package.py index c467b2bb342..b41bb38aef1 100644 --- a/var/spack/repos/builtin/packages/totalview/package.py +++ b/var/spack/repos/builtin/packages/totalview/package.py @@ -112,7 +112,7 @@ class Totalview(Package): url="https://dslwuu69twiif.cloudfront.net/totalview/2024.1/totalview_2024.1.21_linux_arm64.tar", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path( "PATH", join_path(self.prefix, "toolworks", "totalview.{0}".format(self.version), "bin"), diff --git a/var/spack/repos/builtin/packages/toybox/package.py b/var/spack/repos/builtin/packages/toybox/package.py index 714f8420d6f..dbbdf2e3035 100644 --- a/var/spack/repos/builtin/packages/toybox/package.py +++ b/var/spack/repos/builtin/packages/toybox/package.py @@ -62,11 +62,11 @@ class Toybox(MakefilePackage): when="@=0.7.4", ) - def setup_build_environment(self, env): - env.set("NOSTRIP", 1) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("NOSTRIP", "1") if not self.spec.satisfies("@=0.8.9"): - env.set("V", 1) # Verbose + env.set("V", "1") # Verbose if self.spec.satisfies("+static"): env.append_flags("LDFLAGS", "--static") diff --git a/var/spack/repos/builtin/packages/tpm2-tss/package.py b/var/spack/repos/builtin/packages/tpm2-tss/package.py index 198a550465a..0717aa607f5 100644 --- a/var/spack/repos/builtin/packages/tpm2-tss/package.py +++ b/var/spack/repos/builtin/packages/tpm2-tss/package.py @@ -31,12 +31,12 @@ class Tpm2Tss(AutotoolsPackage): depends_on("libgcrypt", when="@:2.4.2") @when("@:2.4.2") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("ACLOCAL_PATH", self.spec["libgcrypt"].prefix.share.aclocal) env.prepend_path("ACLOCAL_PATH", self.spec["autoconf-archive"].prefix.share.aclocal) @when("@3.0.0:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("ACLOCAL_PATH", self.spec["autoconf-archive"].prefix.share.aclocal) def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/transdecoder/package.py b/var/spack/repos/builtin/packages/transdecoder/package.py index 0d019a98f67..09731f8f0b4 100644 --- a/var/spack/repos/builtin/packages/transdecoder/package.py +++ b/var/spack/repos/builtin/packages/transdecoder/package.py @@ -35,6 +35,6 @@ def install(self, spec, prefix): install_tree("PerlLib", prefix.PerlLib) install_tree("util", prefix.util) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) env.prepend_path("PATH", self.prefix.util) diff --git a/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py b/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py index f11c2ef02c5..fa166094c62 100644 --- a/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py +++ b/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py @@ -39,7 +39,7 @@ class TrilinosCatalystIossAdapter(CMakePackage): "ParaViewCatalystIossAdapter", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.python) def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 74df430456a..fb0f91f0f7e 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -621,7 +621,9 @@ def url_for_version(self, version): url = "https://github.com/trilinos/Trilinos/archive/refs/tags/trilinos-release-{0}.tar.gz" return url.format(version.dashed) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: if self.spec.satisfies("@:13.1.0 +cuda"): # older releases of Trilinos doesn't perform the memory fence so # it relies on blocking CUDA kernel launch. This is needed @@ -635,7 +637,7 @@ def kokkos_cxx(self) -> str: # Assumes build-time globals have been set already return spack_cxx - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec if "+cuda" in spec and "+wrapper" in spec: if "+mpi" in spec: @@ -1121,7 +1123,7 @@ def filter_python(self): ) filter_file(r"-lpytrilinos", "", "%s/Makefile.export.Trilinos" % self.prefix.include) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+exodus" in self.spec: env.prepend_path("PYTHONPATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/trinity/package.py b/var/spack/repos/builtin/packages/trinity/package.py index a776a4dba3b..e4a5cdc694b 100644 --- a/var/spack/repos/builtin/packages/trinity/package.py +++ b/var/spack/repos/builtin/packages/trinity/package.py @@ -118,9 +118,9 @@ def install(self, spec, prefix): force_remove(join_path(prefix.bin, "trinity-plugins", "seqtk-trinity-0.0.2", ".gitignore")) force_remove(join_path(prefix.bin, "trinity-plugins", "slclust", "bin", ".hidden")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CXXFLAGS", self.compiler.openmp_flag) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("TRINITY_HOME", self.prefix.bin) env.prepend_path("PATH", self.prefix.bin.util) diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py index d0f21848a3c..40371edbbe6 100644 --- a/var/spack/repos/builtin/packages/turbine/package.py +++ b/var/spack/repos/builtin/packages/turbine/package.py @@ -40,7 +40,7 @@ class Turbine(AutotoolsPackage): depends_on("libtool", type="build", when="@master") depends_on("m4", type=("build", "run")) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("CC", spec["mpi"].mpicc) diff --git a/var/spack/repos/builtin/packages/turbomole/package.py b/var/spack/repos/builtin/packages/turbomole/package.py index 0e71184f366..66c50d0ea66 100644 --- a/var/spack/repos/builtin/packages/turbomole/package.py +++ b/var/spack/repos/builtin/packages/turbomole/package.py @@ -115,7 +115,7 @@ def install(self, spec, prefix): install("mpirun_scripts/ricc2", join_path(dst, "mpirun_scripts")) install("mpirun_scripts/ridft", join_path(dst, "mpirun_scripts")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: molecontrol_version = "MoleControl_2.5" tm_arch = self.get_tm_arch() diff --git a/var/spack/repos/builtin/packages/typhon/package.py b/var/spack/repos/builtin/packages/typhon/package.py index 31eb959840b..08542b1e6b0 100644 --- a/var/spack/repos/builtin/packages/typhon/package.py +++ b/var/spack/repos/builtin/packages/typhon/package.py @@ -28,6 +28,6 @@ class Typhon(CMakePackage): depends_on("mpi") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("%fj"): env.set("LDFLAGS", "--linkfortran") diff --git a/var/spack/repos/builtin/packages/ucsc-bedclip/package.py b/var/spack/repos/builtin/packages/ucsc-bedclip/package.py index af4c2eb11e2..9bc4bab6a6c 100644 --- a/var/spack/repos/builtin/packages/ucsc-bedclip/package.py +++ b/var/spack/repos/builtin/packages/ucsc-bedclip/package.py @@ -25,7 +25,7 @@ class UcscBedclip(Package): depends_on("openssl") depends_on("zlib-api") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MYSQLLIBS", "-lmysqlclient") env.set("L", "-lssl") env.set("BINDIR", "bin") diff --git a/var/spack/repos/builtin/packages/ucsc-bedgraphtobigwig/package.py b/var/spack/repos/builtin/packages/ucsc-bedgraphtobigwig/package.py index 1906f41e235..fd63aae9d41 100644 --- a/var/spack/repos/builtin/packages/ucsc-bedgraphtobigwig/package.py +++ b/var/spack/repos/builtin/packages/ucsc-bedgraphtobigwig/package.py @@ -29,7 +29,7 @@ class UcscBedgraphtobigwig(Package): depends_on("mysql-client") conflicts("^mysql@8.0.0:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MYSQLLIBS", "-lmysqlclient") env.set("L", "-lssl") env.set("BINDIR", "bin") diff --git a/var/spack/repos/builtin/packages/ufs-utils/package.py b/var/spack/repos/builtin/packages/ufs-utils/package.py index 3dcd667eef0..224c925306f 100644 --- a/var/spack/repos/builtin/packages/ufs-utils/package.py +++ b/var/spack/repos/builtin/packages/ufs-utils/package.py @@ -75,5 +75,5 @@ def cmake_args(self): "-DMPI_Fortran_COMPILER=%s" % self.spec["mpi"].mpifc, ] - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("ESMFMKFILE", join_path(self.spec["esmf"].prefix.lib, "esmf.mk")) diff --git a/var/spack/repos/builtin/packages/ufs-weather-model/package.py b/var/spack/repos/builtin/packages/ufs-weather-model/package.py index 644b529bf9d..44156bfb205 100644 --- a/var/spack/repos/builtin/packages/ufs-weather-model/package.py +++ b/var/spack/repos/builtin/packages/ufs-weather-model/package.py @@ -163,7 +163,7 @@ class UfsWeatherModel(CMakePackage): conflicts("%gcc@:8", when="@develop") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: spec = self.spec env.set("CC", spec["mpi"].mpicc) env.set("CXX", spec["mpi"].mpicxx) diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index df0cf71a5c6..841d0027c84 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -500,7 +500,7 @@ def initconfig_package_entries(self): def cmake_args(self): return [] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: for library in ["lib", "lib64"]: lib_path = join_path(self.prefix, library) if os.path.exists(lib_path): diff --git a/var/spack/repos/builtin/packages/unifyfs/package.py b/var/spack/repos/builtin/packages/unifyfs/package.py index 791c2435d68..8e050ff8c9e 100644 --- a/var/spack/repos/builtin/packages/unifyfs/package.py +++ b/var/spack/repos/builtin/packages/unifyfs/package.py @@ -104,7 +104,7 @@ def flag_handler(self, name, flags): flags.append("-std=gnu99") return (None, None, flags) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # GCC11 generates a bogus array bounds error: # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98266 if "%gcc@11" in self.spec: diff --git a/var/spack/repos/builtin/packages/upcxx/package.py b/var/spack/repos/builtin/packages/upcxx/package.py index fe5fee91e14..3e482ae4681 100644 --- a/var/spack/repos/builtin/packages/upcxx/package.py +++ b/var/spack/repos/builtin/packages/upcxx/package.py @@ -177,10 +177,12 @@ def set_variables(self, env): env.set("UPCXX_NETWORK", "ofi") env.set("GASNET_SPAWN_CONTROL", "pmi") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: self.set_variables(env) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.set_variables(env) def setup_dependent_package(self, module, dep_spec): diff --git a/var/spack/repos/builtin/packages/uqtk/package.py b/var/spack/repos/builtin/packages/uqtk/package.py index 8d5455ae2d3..2ee8b38aa66 100644 --- a/var/spack/repos/builtin/packages/uqtk/package.py +++ b/var/spack/repos/builtin/packages/uqtk/package.py @@ -88,7 +88,7 @@ def cmake_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if "+python" in self.spec: env.prepend_path("PYTHONPATH", self.prefix) env.prepend_path("PYTHONPATH", "{0}/PyUQTk".format(self.prefix)) diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 7e8b4485a7f..c03e578ee7f 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -29,6 +29,8 @@ def url_for_version(self, version): if self.spec.satisfies("@:1.19"): return spack.url.substitute_version(self.urls[0].replace("xz", "bz2"), version) - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: """Adds the ACLOCAL path for autotools.""" env.append_path("ACLOCAL_PATH", self.prefix.share.aclocal) diff --git a/var/spack/repos/builtin/packages/varscan/package.py b/var/spack/repos/builtin/packages/varscan/package.py index a693e3df377..a52a173fb6f 100644 --- a/var/spack/repos/builtin/packages/varscan/package.py +++ b/var/spack/repos/builtin/packages/varscan/package.py @@ -38,6 +38,6 @@ def install(self, spec, prefix): filter_file("^java", java, script, **kwargs) filter_file("varscan.jar", join_path(prefix.jar, jar_file), script, **kwargs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("VARSCAN_HOME", self.prefix.jar) env.set("CLASSPATH", self.prefix.jar) diff --git a/var/spack/repos/builtin/packages/vasp/package.py b/var/spack/repos/builtin/packages/vasp/package.py index 1e4744d8a81..0c3afe5d7fd 100644 --- a/var/spack/repos/builtin/packages/vasp/package.py +++ b/var/spack/repos/builtin/packages/vasp/package.py @@ -326,9 +326,9 @@ def edit(self, spec, prefix): os.rename(make_include, "makefile.include") - def setup_build_environment(self, spack_env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+cuda %nvhpc"): - spack_env.set("NVHPC_CUDA_HOME", self.spec["cuda"].prefix) + env.set("NVHPC_CUDA_HOME", self.spec["cuda"].prefix) def build(self, spec, prefix): if spec.satisfies("@:6.2"): diff --git a/var/spack/repos/builtin/packages/vbfnlo/package.py b/var/spack/repos/builtin/packages/vbfnlo/package.py index a87ef9c287c..25e3015900d 100644 --- a/var/spack/repos/builtin/packages/vbfnlo/package.py +++ b/var/spack/repos/builtin/packages/vbfnlo/package.py @@ -58,7 +58,7 @@ class Vbfnlo(AutotoolsPackage): depends_on("tcsh", type="build") @when("@2.7.1") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.unset("F77") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/vcftools/package.py b/var/spack/repos/builtin/packages/vcftools/package.py index 7190e558091..dc24fd909b7 100644 --- a/var/spack/repos/builtin/packages/vcftools/package.py +++ b/var/spack/repos/builtin/packages/vcftools/package.py @@ -82,5 +82,5 @@ def filter_sbang(self): kwargs = {"ignore_absent": True, "backup": False, "string": False} filter_file(match, substitute, *files, **kwargs) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PERL5LIB", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/vecmem/package.py b/var/spack/repos/builtin/packages/vecmem/package.py index 559aeb9907d..68e2017d517 100644 --- a/var/spack/repos/builtin/packages/vecmem/package.py +++ b/var/spack/repos/builtin/packages/vecmem/package.py @@ -77,7 +77,7 @@ class Vecmem(CMakePackage, CudaPackage): # and we can choose between always depending on googletest, or using FetchContent # depends_on("googletest", type="test") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+sycl"): env.set("SYCLCXX", self.compiler.cxx) if self.spec.satisfies("%oneapi"): diff --git a/var/spack/repos/builtin/packages/vep-cache/package.py b/var/spack/repos/builtin/packages/vep-cache/package.py index a56343969e6..505094af9e1 100644 --- a/var/spack/repos/builtin/packages/vep-cache/package.py +++ b/var/spack/repos/builtin/packages/vep-cache/package.py @@ -101,7 +101,7 @@ def vep_cache_config(self, base): "full_path": join_path(root, cache_dir), } - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+env"): cache = self.vep_cache_config(self.home) env.set("VEP_OFFLINE", "1") diff --git a/var/spack/repos/builtin/packages/vep/package.py b/var/spack/repos/builtin/packages/vep/package.py index 1605bf0e87a..7b0ddbf4cd2 100644 --- a/var/spack/repos/builtin/packages/vep/package.py +++ b/var/spack/repos/builtin/packages/vep/package.py @@ -84,7 +84,7 @@ def vep_scripts_path(self): def vep_installer_path(self): return f"{self.vep_scripts_path.INSTALL}.pl" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("VEP_HOME", self.home) if self.spec.satisfies("+bundled_htslib"): env.prepend_path("PATH", self.vep_lib_path.htslib) diff --git a/var/spack/repos/builtin/packages/verilator/package.py b/var/spack/repos/builtin/packages/verilator/package.py index 7226bec81dc..3a7c75d081b 100644 --- a/var/spack/repos/builtin/packages/verilator/package.py +++ b/var/spack/repos/builtin/packages/verilator/package.py @@ -97,7 +97,7 @@ class Verilator(AutotoolsPackage): filter_compiler_wrappers("verilated.mk", relative_root="share/verilator/include") @when("@:5.022") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("VERILATOR_ROOT", self.prefix) def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/vesta/package.py b/var/spack/repos/builtin/packages/vesta/package.py index 8f8f0763050..4d51517c784 100644 --- a/var/spack/repos/builtin/packages/vesta/package.py +++ b/var/spack/repos/builtin/packages/vesta/package.py @@ -20,7 +20,7 @@ class Vesta(Package): conflicts("%gcc@:5.3") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix) env.prepend_path("LD_LIBRARY_PATH", self.prefix) diff --git a/var/spack/repos/builtin/packages/vmc/package.py b/var/spack/repos/builtin/packages/vmc/package.py index 5a54fbe29ec..e456d3d4737 100644 --- a/var/spack/repos/builtin/packages/vmc/package.py +++ b/var/spack/repos/builtin/packages/vmc/package.py @@ -28,6 +28,6 @@ class Vmc(CMakePackage): depends_on("root@6.18.04: ~vmc") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("platform=darwin"): env.unset("MACOSX_DEPLOYMENT_TARGET") diff --git a/var/spack/repos/builtin/packages/vmd/package.py b/var/spack/repos/builtin/packages/vmd/package.py index eb8b13f26d5..2f802745e77 100644 --- a/var/spack/repos/builtin/packages/vmd/package.py +++ b/var/spack/repos/builtin/packages/vmd/package.py @@ -37,7 +37,7 @@ class Vmd(Package): depends_on("patchelf", type="build") depends_on("gmake", type="build") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("VMDINSTALLBINDIR", self.prefix.bin) env.set("VMDINSTALLLIBRARYDIR", self.prefix.lib64) @@ -58,5 +58,5 @@ def ensure_rpaths(self): ) patchelf("--set-rpath", rpath, join_path(self.prefix, "lib64", "vmd_LINUXAMD64")) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("PLUGINDIR", self.spec.prefix.lib64.plugins) diff --git a/var/spack/repos/builtin/packages/voms/package.py b/var/spack/repos/builtin/packages/voms/package.py index 0526cf87016..b65f49d87b5 100644 --- a/var/spack/repos/builtin/packages/voms/package.py +++ b/var/spack/repos/builtin/packages/voms/package.py @@ -40,7 +40,7 @@ def patch(self): r"/usr/bin/soapcpp2", f"{self.spec['gsoap'].prefix.bin.soapcpp2}", "m4/wsdl2h.m4" ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=voms pkgconfig = Executable(join_path(self.spec["pkgconfig"].prefix.bin, "pkg-config")) env.set("GSOAP_SSL_PP_CFLAGS", pkgconfig("--cflags", "gsoapssl++", "zlib", output=str)) diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index c10e49b0d00..e86ccd3762d 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -271,7 +271,7 @@ def url_for_version(self, version): url = "http://www.vtk.org/files/release/{0}/VTK-{1}.tar.gz" return url.format(version.up_to(2), version) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # VTK has some trouble finding freetype unless it is set in # the environment env.set("FREETYPE_DIR", self.spec["freetype"].prefix) diff --git a/var/spack/repos/builtin/packages/w3emc/package.py b/var/spack/repos/builtin/packages/w3emc/package.py index f7841835cce..499a40e1c48 100644 --- a/var/spack/repos/builtin/packages/w3emc/package.py +++ b/var/spack/repos/builtin/packages/w3emc/package.py @@ -64,7 +64,7 @@ class W3emc(CMakePackage): depends_on("sigio", when="@2.7.3") depends_on("netcdf-fortran", when="@2.7.3") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:2.9"): suffixes = ("4", "d", "8") shared = False diff --git a/var/spack/repos/builtin/packages/w3m/package.py b/var/spack/repos/builtin/packages/w3m/package.py index 3072188f292..00bd59c2e3c 100644 --- a/var/spack/repos/builtin/packages/w3m/package.py +++ b/var/spack/repos/builtin/packages/w3m/package.py @@ -102,7 +102,7 @@ def configure_args(self): return args - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.variants["termlib"].value == "ncurses": env.append_flags("LDFLAGS", "-ltinfo") env.append_flags("LDFLAGS", "-lncurses") diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index 47874c433a8..980e95ab289 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -145,7 +145,7 @@ def edit(self, spec, prefix): string=True, ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("MPIFC", self.prefix.bin.mpifc) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/webbench/package.py b/var/spack/repos/builtin/packages/webbench/package.py index dd143f21a6a..6c979a0ee24 100644 --- a/var/spack/repos/builtin/packages/webbench/package.py +++ b/var/spack/repos/builtin/packages/webbench/package.py @@ -19,7 +19,7 @@ class Webbench(MakefilePackage): depends_on("ntirpc") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["ntirpc"].prefix.include.ntirpc) def edit(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/wgrib2/package.py b/var/spack/repos/builtin/packages/wgrib2/package.py index 5e122de4430..eaa4bc28be6 100644 --- a/var/spack/repos/builtin/packages/wgrib2/package.py +++ b/var/spack/repos/builtin/packages/wgrib2/package.py @@ -244,7 +244,7 @@ def edit(self, pkg, spec, prefix): value = int(spec.variants[variant_name].value) makefile.filter(r"^%s=.*" % makefile_option, "{}={}".format(makefile_option, value)) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.compiler.name in ["oneapi", "intel"]: comp_sys = "intel_linux" elif self.spec.compiler.name in ["gcc", "clang", "apple-clang"]: diff --git a/var/spack/repos/builtin/packages/whizard/package.py b/var/spack/repos/builtin/packages/whizard/package.py index 81cdf340c69..003ae099ee5 100644 --- a/var/spack/repos/builtin/packages/whizard/package.py +++ b/var/spack/repos/builtin/packages/whizard/package.py @@ -117,7 +117,7 @@ class Whizard(AutotoolsPackage): msg="The fortran compiler needs to support Fortran 2008. For more detailed information see https://whizard.hepforge.org/compilers.html", ) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # whizard uses some environment variables to detect dependencies at # configure time if they are not installed to standard system prefixes if self.spec.satisfies("+lcio"): diff --git a/var/spack/repos/builtin/packages/wi4mpi/package.py b/var/spack/repos/builtin/packages/wi4mpi/package.py index f65224a39e7..6c7353d7468 100644 --- a/var/spack/repos/builtin/packages/wi4mpi/package.py +++ b/var/spack/repos/builtin/packages/wi4mpi/package.py @@ -59,7 +59,7 @@ def cmake_args(self): ] return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("WI4MPI_ROOT", self.prefix) env.set("WI4MPI_VERSION", str(self.version)) env.set("WI4MPI_CC", self.compiler.cc) diff --git a/var/spack/repos/builtin/packages/win-wdk/package.py b/var/spack/repos/builtin/packages/win-wdk/package.py index 312303dc390..ce28dac149a 100644 --- a/var/spack/repos/builtin/packages/win-wdk/package.py +++ b/var/spack/repos/builtin/packages/win-wdk/package.py @@ -105,10 +105,12 @@ def determine_variants(cls, libs, ver_str): variants.append("plat=%s" % arch) return variants - def setup_dependent_environment(self): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # This points to all core build extensions needed to build # drivers on Windows - os.environ["WDKContentRoot"] = self.prefix + env.set("WDKContentRoot", self.prefix) @run_before("install") def rename_downloaded_executable(self): diff --git a/var/spack/repos/builtin/packages/wordnet/package.py b/var/spack/repos/builtin/packages/wordnet/package.py index 4d672000303..f90e4877c6f 100644 --- a/var/spack/repos/builtin/packages/wordnet/package.py +++ b/var/spack/repos/builtin/packages/wordnet/package.py @@ -29,6 +29,6 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("WNHOME", self.prefix) env.set("WNSEARCHDIR", self.prefix.dict) diff --git a/var/spack/repos/builtin/packages/wps/package.py b/var/spack/repos/builtin/packages/wps/package.py index 61dfad0b415..566d69944bd 100644 --- a/var/spack/repos/builtin/packages/wps/package.py +++ b/var/spack/repos/builtin/packages/wps/package.py @@ -61,7 +61,7 @@ class Wps(Package): patch("for_aarch64.patch", when="target=aarch64:") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("WRF_DIR", self.spec["wrf"].prefix) env.set("NETCDF", self.spec["netcdf-c"].prefix) # This gets used via the applied patch files @@ -74,7 +74,7 @@ def setup_build_environment(self, env): env.set("FCFLAGS", args) env.set("FFLAGS", args) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.append_path("PATH", self.prefix) env.append_path("PATH", self.prefix.util) diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index b6725f8f2bc..dba27293031 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -281,12 +281,12 @@ class Wrf(Package): ) phases = ["configure", "build", "install"] - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("WRF_HOME", self.prefix) env.append_path("PATH", self.prefix.main) env.append_path("PATH", self.prefix.tools) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # From 4.5.2 the split-netcdf patches are not needed, # just tell the build system where netcdf and netcdf-c are: if self.spec.satisfies("@4.5.2:"): @@ -298,9 +298,9 @@ def setup_build_environment(self, env): env.set("PNETCDF", self.spec["parallel-netcdf"].prefix) # Add WRF-Chem module if "+chem" in self.spec: - env.set("WRF_CHEM", 1) + env.set("WRF_CHEM", "1") if "+netcdf_classic" in self.spec: - env.set("NETCDF_classic", 1) + env.set("NETCDF_classic", "1") # This gets used via the applied patch files env.set("NETCDFF", self.spec["netcdf-fortran"].prefix) env.set("PHDF5", self.spec["hdf5"].prefix) @@ -308,7 +308,7 @@ def setup_build_environment(self, env): env.set("JASPERLIB", self.spec["jasper"].prefix.lib) if self.spec.satisfies("%aocc"): - env.set("WRFIO_NCD_LARGE_FILE_SUPPORT", 1) + env.set("WRFIO_NCD_LARGE_FILE_SUPPORT", "1") env.set("HDF5", self.spec["hdf5"].prefix) env.prepend_path("PATH", ancestor(self.compiler.cc)) diff --git a/var/spack/repos/builtin/packages/xcdf/package.py b/var/spack/repos/builtin/packages/xcdf/package.py index 4dc73fdd580..6214e3d37b7 100644 --- a/var/spack/repos/builtin/packages/xcdf/package.py +++ b/var/spack/repos/builtin/packages/xcdf/package.py @@ -23,5 +23,5 @@ class Xcdf(CMakePackage): depends_on("python@3.7:", when="@3.01:") depends_on("py-pybind11", when="@3.01:", type="build") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PYTHONPATH", self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/xfce4-session/package.py b/var/spack/repos/builtin/packages/xfce4-session/package.py index e8a7c06043a..6b5232135aa 100644 --- a/var/spack/repos/builtin/packages/xfce4-session/package.py +++ b/var/spack/repos/builtin/packages/xfce4-session/package.py @@ -55,7 +55,9 @@ def configure_args(self): def setup_run_enviornment(self, env): self.add_xdg_dirs(env) - def setup_dependent_run_environment(self, env, dep_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: self.add_xdg_dirs(env) def add_xdg_dirs(self, env): diff --git a/var/spack/repos/builtin/packages/xfsdump/package.py b/var/spack/repos/builtin/packages/xfsdump/package.py index 6b5b6a52151..ad2e85d3aa9 100644 --- a/var/spack/repos/builtin/packages/xfsdump/package.py +++ b/var/spack/repos/builtin/packages/xfsdump/package.py @@ -48,5 +48,5 @@ def install(self, spec, prefix): "install", ) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/xfsprogs/package.py b/var/spack/repos/builtin/packages/xfsprogs/package.py index 24ec70feb45..0bbe6ed15c7 100644 --- a/var/spack/repos/builtin/packages/xfsprogs/package.py +++ b/var/spack/repos/builtin/packages/xfsprogs/package.py @@ -52,7 +52,7 @@ def flag_handler(self, name, flags): flags.append("-lintl") return build_system_flags(name, flags) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_path("C_INCLUDE_PATH", self.spec["util-linux"].prefix.include.blkid) def configure_args(self): @@ -65,5 +65,5 @@ def install(self, spec, prefix): make("install") make("install-dev") - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py index 9d81ae10fe3..d2a4500543c 100644 --- a/var/spack/repos/builtin/packages/xfwp/package.py +++ b/var/spack/repos/builtin/packages/xfwp/package.py @@ -24,5 +24,5 @@ class Xfwp(AutotoolsPackage, XorgPackage): # Fixes this and a long list of other compilation errors: # io.c:1039:7: error: implicit declaration of function 'swab' - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.append_flags("CPPFLAGS", "-D_GNU_SOURCE") diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py index 65b08a4972e..767648e512e 100644 --- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py +++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py @@ -35,8 +35,12 @@ class XkeyboardConfig(AutotoolsPackage, XorgPackage): # perl@5.8.1: # perl XML::Parser - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XKB_CONFIG_ROOT", self.prefix.share.X11.xkb) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: env.prepend_path("XKB_CONFIG_ROOT", self.prefix.share.X11.xkb) diff --git a/var/spack/repos/builtin/packages/xnedit/package.py b/var/spack/repos/builtin/packages/xnedit/package.py index e66c68405f4..9a884b7660f 100644 --- a/var/spack/repos/builtin/packages/xnedit/package.py +++ b/var/spack/repos/builtin/packages/xnedit/package.py @@ -45,7 +45,7 @@ class Xnedit(MakefilePackage): depends_on("motif") depends_on("pcre") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("LDFLAGS", "-Wl,--copy-dt-needed-entries") def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py index fc698436776..13a19c62766 100644 --- a/var/spack/repos/builtin/packages/xorg-server/package.py +++ b/var/spack/repos/builtin/packages/xorg-server/package.py @@ -85,7 +85,7 @@ def patch(self): depends_on("libpciaccess") @when("@:1.19") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: # https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/406 env.set("CPPFLAGS", "-fcommon") diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index 043c8021220..a5db43ad999 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -246,7 +246,7 @@ def cmake_args(self): return options @when("@:5.1.99") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: cxxstdflag = "" if self.spec.variants["cxxstd"].value == "98": cxxstdflag = self.compiler.cxx98_flag diff --git a/var/spack/repos/builtin/packages/xsd/package.py b/var/spack/repos/builtin/packages/xsd/package.py index 658ab0c5663..29067b5ae51 100644 --- a/var/spack/repos/builtin/packages/xsd/package.py +++ b/var/spack/repos/builtin/packages/xsd/package.py @@ -40,7 +40,7 @@ class Xsd(MakefilePackage): def install(self, spec, prefix): make("install", "install_prefix=" + prefix) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: xercesc_lib_flags = self.spec["xerces-c"].libs.search_flags env.append_flags("LDFLAGS", xercesc_lib_flags) cxxstdflag = "cxx{0}_flag".format(self.spec.variants["cxxstd"].value) diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index b18b6796ec3..ac9a337f90d 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -38,7 +38,7 @@ def url_for_version(self, version): url = "https://github.com/dhmunro/yorick/archive/y_{0}.tar.gz" return url.format(version.underscored) - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("FORTRAN_LINKAGE", "-Df_linkage") if self.spec.satisfies("arch=aarch64:"): env.set("FPU_IGNORE", "1") diff --git a/var/spack/repos/builtin/packages/yosys/package.py b/var/spack/repos/builtin/packages/yosys/package.py index d11f10c9a2f..a17b8e59c01 100644 --- a/var/spack/repos/builtin/packages/yosys/package.py +++ b/var/spack/repos/builtin/packages/yosys/package.py @@ -85,7 +85,7 @@ def edit(self, spec, prefix): makefile.filter(r"ENABLE_ABC :=", "ENABLE_ABC ?=") makefile.filter(r"ENABLE_CCACHE :=", "ENABLE_CCACHE ?=") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("PREFIX", self.prefix) env.set("CXXFLAGS", f'-I{self.spec["readline"].prefix.include}') env.set( diff --git a/var/spack/repos/builtin/packages/zabbix/package.py b/var/spack/repos/builtin/packages/zabbix/package.py index 67d9e63f2d8..b5fe07757f8 100644 --- a/var/spack/repos/builtin/packages/zabbix/package.py +++ b/var/spack/repos/builtin/packages/zabbix/package.py @@ -67,5 +67,5 @@ def configure_args(self): return args - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("PATH", self.prefix.sbin) diff --git a/var/spack/repos/builtin/packages/zfs/package.py b/var/spack/repos/builtin/packages/zfs/package.py index 9b602426015..5600b314e76 100644 --- a/var/spack/repos/builtin/packages/zfs/package.py +++ b/var/spack/repos/builtin/packages/zfs/package.py @@ -27,5 +27,5 @@ class Zfs(AutotoolsPackage): depends_on("libtirpc") depends_on("util-linux") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.prepend_path("CPATH", self.spec["util-linux"].prefix.include) diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 72e7ee7f385..b46d6c63cec 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -93,7 +93,7 @@ def libs(self): class SetupEnvironment: - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: if "+pic" in self.spec: env.append_flags("CFLAGS", self.pkg.compiler.cc_pic_flag) if "+optimize" in self.spec: diff --git a/var/spack/repos/builtin/packages/zookeeper/package.py b/var/spack/repos/builtin/packages/zookeeper/package.py index 35e2ae0416f..c28486134df 100644 --- a/var/spack/repos/builtin/packages/zookeeper/package.py +++ b/var/spack/repos/builtin/packages/zookeeper/package.py @@ -32,7 +32,7 @@ class Zookeeper(Package): def install(self, spec, prefix): install_tree(".", prefix) - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: env.set("ZOOBINDIR", self.prefix.bin) env.set("ZOOCFGDIR", ".") env.set("ZOO_LOG_DIR", ".") diff --git a/var/spack/repos/builtin/packages/zuo/package.py b/var/spack/repos/builtin/packages/zuo/package.py index 7f99dcca197..1892cea1800 100644 --- a/var/spack/repos/builtin/packages/zuo/package.py +++ b/var/spack/repos/builtin/packages/zuo/package.py @@ -21,8 +21,8 @@ class Zuo(AutotoolsPackage): depends_on("c", type="build") - def setup_build_environment(self, env): - env.set("ZUO_JOBS", make_jobs) + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("ZUO_JOBS", str(make_jobs)) def configure_args(self): return [*self.enable_or_disable("big")] diff --git a/var/spack/repos/tutorial/packages/elpa/package.py b/var/spack/repos/tutorial/packages/elpa/package.py index e7068cff366..31755a63dc2 100644 --- a/var/spack/repos/tutorial/packages/elpa/package.py +++ b/var/spack/repos/tutorial/packages/elpa/package.py @@ -41,7 +41,7 @@ def libs(self): build_directory = "spack-build" - def setup_run_environment(self, env): + def setup_run_environment(self, env: EnvironmentModifications) -> None: # TUTORIAL: set the following environment variables: # # CC=spec['mpi'].mpicc diff --git a/var/spack/repos/tutorial/packages/hdf5/package.py b/var/spack/repos/tutorial/packages/hdf5/package.py index 234e249a7ee..34ebfadf9fc 100644 --- a/var/spack/repos/tutorial/packages/hdf5/package.py +++ b/var/spack/repos/tutorial/packages/hdf5/package.py @@ -306,7 +306,7 @@ def libs(self): return find_libraries(libraries, root=self.prefix, shared=shared, recursive=True) @when("@:1.8.21,1.10.0:1.10.5+szip") - def setup_build_environment(self, env): + def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("SZIP_INSTALL", self.spec["szip"].prefix) @run_before("cmake") diff --git a/var/spack/repos/tutorial/packages/mpich/package.py b/var/spack/repos/tutorial/packages/mpich/package.py index c6b55b9f47a..de60bb2487c 100644 --- a/var/spack/repos/tutorial/packages/mpich/package.py +++ b/var/spack/repos/tutorial/packages/mpich/package.py @@ -72,7 +72,9 @@ class Mpich(AutotoolsPackage): conflicts("netmod=mxm", when="@:3.1.3") conflicts("netmod=tcp", when="device=ch4") - def setup_dependent_build_environment(self, env, dependent_spec): + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: # TUTORIAL: set the following variables for dependents: # # MPICC=join_path(self.prefix.bin, 'mpicc') From 5d695623db6992c20d2e784ceb1546b453e3ce47 Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Wed, 23 Apr 2025 09:53:00 -0400 Subject: [PATCH 242/317] esmf: add v8.8.1 (#50178) --- var/spack/repos/builtin/packages/esmf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index f44c2a634d7..ba293ace6c7 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -30,6 +30,7 @@ class Esmf(MakefilePackage, PythonExtension): # Develop is a special name for spack and is always considered the newest version version("develop", branch="develop") # generate chksum with 'spack checksum esmf@x.y.z' + version("8.8.1", sha256="b0acb59d4f000bfbdfddc121a24819bd2a50997c7b257b0db2ceb96f3111b173") version("8.8.0", sha256="f89327428aeef6ad34660b5b78f30d1c55ec67efb8f7df1991fdaa6b1eb3a27c") version("8.7.0", sha256="d7ab266e2af8c8b230721d4df59e61aa03c612a95cc39c07a2d5695746f21f56") version("8.6.1", sha256="dc270dcba1c0b317f5c9c6a32ab334cb79468dda283d1e395d98ed2a22866364") From de0b17c07f462cd6181c0d9cc025bccdd7920bd2 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 17:01:02 +0200 Subject: [PATCH 243/317] py-id: new package (#50145) --- .../repos/builtin/packages/py-id/package.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-id/package.py diff --git a/var/spack/repos/builtin/packages/py-id/package.py b/var/spack/repos/builtin/packages/py-id/package.py new file mode 100644 index 00000000000..ab505dabbc2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-id/package.py @@ -0,0 +1,20 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyId(PythonPackage): + """id is a Python tool for generating OIDC identities.""" + + homepage = "https://pypi.org/project/id/" + pypi = "id/id-1.5.0.tar.gz" + + license("Apache-2.0", checked_by="RobertMaaskant") + + version("1.5.0", sha256="292cb8a49eacbbdbce97244f47a97b4c62540169c976552e497fd57df0734c1d") + + depends_on("py-flit-core@3.2:3", type="build") + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-requests", type=("build", "run")) From 1904d99fd0fc592978cbc8e84321d723a8983a31 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 17:03:20 +0200 Subject: [PATCH 244/317] py-trove-classifiers: add v2025.4.11.15 (#50143) --- .../packages/py-trove-classifiers/package.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-trove-classifiers/package.py b/var/spack/repos/builtin/packages/py-trove-classifiers/package.py index 6657af84ae6..28991949aea 100644 --- a/var/spack/repos/builtin/packages/py-trove-classifiers/package.py +++ b/var/spack/repos/builtin/packages/py-trove-classifiers/package.py @@ -10,12 +10,23 @@ class PyTroveClassifiers(PythonPackage): on PyPI. Classifiers categorize projects per PEP 301.""" homepage = "https://github.com/pypa/trove-classifiers" - pypi = "trove-classifiers/trove-classifiers-2023.3.9.tar.gz" + pypi = "trove_classifiers/trove_classifiers-2024.5.17.tar.gz" license("Apache-2.0") + version( + "2025.4.11.15", sha256="634728aa6698dc1ae3db161da94d9e4c7597a9a5da2c4410211b36f15fed60fc" + ) version("2023.8.7", sha256="c9f2a0a85d545e5362e967e4f069f56fddfd91215e22ffa48c66fb283521319a") version("2023.3.9", sha256="ee42f2f8c1d4bcfe35f746e472f07633570d485fab45407effc0379270a3bb03") depends_on("py-setuptools", type="build") depends_on("py-calver", type="build") + + def url_for_version(self, version): + if version >= Version("2024.5.17"): + sep = "_" + else: + sep = "-" + + return f"https://files.pythonhosted.org/packages/source/t/trove{sep}classifiers/trove{sep}classifiers-{version}.tar.gz" From 36caa6158a18ec9d27c2cbe05945718651593a36 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 19:04:46 +0200 Subject: [PATCH 245/317] py-flit and py-flit-core: add v3.10.0 -> v3.12.0 (#50139) * py-flit: add v3.10.0 and v3.10.1 * fixup! py-flit: add v3.10.0 and v3.10.1 * py-flit and py-flit-core: add v3.11.0 * py-flit and py-flit-core: add v3.12.0 * py-flit: some deps are runtime only * py-flit-core: fix python dep for v3.12.0 * py-flit-core: correct versions for python dep --- .../builtin/packages/py-flit-core/package.py | 7 ++++ .../repos/builtin/packages/py-flit/package.py | 39 +++++++++++++------ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-flit-core/package.py b/var/spack/repos/builtin/packages/py-flit-core/package.py index f77761a91f2..56e228b6388 100644 --- a/var/spack/repos/builtin/packages/py-flit-core/package.py +++ b/var/spack/repos/builtin/packages/py-flit-core/package.py @@ -19,6 +19,8 @@ class PyFlitCore(PythonPackage): license("BSD-3-Clause") + version("3.12.0", sha256="18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2") + version("3.11.0", sha256="6ceeee3219e9d2ea282041f3e027c441597b450b33007cb81168e887b6113a8f") version("3.10.1", sha256="66e5b87874a0d6e39691f0e22f09306736b633548670ad3c09ec9db03c5662f7") version("3.9.0", sha256="72ad266176c4a3fcfab5f2930d76896059851240570ce9a98733b658cb786eba") version("3.8.0", sha256="b305b30c99526df5e63d6022dd2310a0a941a187bd3884f4c8ef0418df6c39f3") @@ -33,6 +35,11 @@ class PyFlitCore(PythonPackage): version("3.0.0", sha256="a465052057e2d6d957e6850e9915245adedfc4fd0dd5737d0791bf3132417c2d") version("2.3.0", sha256="a50bcd8bf5785e3a7d95434244f30ba693e794c5204ac1ee908fc07c4acdbf80") + with default_args(type=("build", "run")): + depends_on("python@3.6:", when="@3.4:") + depends_on("python@3.4:", when="@3.0:") + depends_on("python@2.7,3.4:", when="@2.3:") + # flit_core/build_thyself.py depends_on("py-tomli", when="@3.4:3.5", type="run") depends_on("py-toml", when="@3.1:3.3", type="run") diff --git a/var/spack/repos/builtin/packages/py-flit/package.py b/var/spack/repos/builtin/packages/py-flit/package.py index f30b409be0c..5200596053d 100644 --- a/var/spack/repos/builtin/packages/py-flit/package.py +++ b/var/spack/repos/builtin/packages/py-flit/package.py @@ -14,20 +14,37 @@ class PyFlit(PythonPackage): license("BSD-3-Clause") + version("3.12.0", sha256="1c80f34dd96992e7758b40423d2809f48f640ca285d0b7821825e50745ec3740") + version("3.11.0", sha256="58d0a07f684c315700c9c54a661a1130995798c3e495db0db53ce6e7d0121825") + version("3.10.1", sha256="9c6258ae76d218ce60f9e39a43ca42006a3abcc5c44ea6bb2a1daa13857a8f1a") + version("3.10.0", sha256="dadca58d5097db62884d25d70b572f104954927daadc8cee449739215b7237fd") version("3.9.0", sha256="d75edf5eb324da20d53570a6a6f87f51e606eee8384925cd66a90611140844c7") version("3.8.0", sha256="d0f2a8f4bd45dc794befbf5839ecc0fd3830d65a57bd52b5997542fac5d5e937") version("3.7.1", sha256="3c9bd9c140515bfe62dd938c6610d10d6efb9e35cc647fc614fe5fb3a5036682") version("3.6.0", sha256="b1464e006df4df4c8eeb37671c0e0ce66e1d04e4a36d91b702f180a25fde3c11") version("3.3.0", sha256="65fbe22aaa7f880b776b20814bd80b0afbf91d1f95b17235b608aa256325ce57") - depends_on("python@3.6:", type=("build", "run")) - depends_on("py-flit-core@3.9.0:3", when="@3.9.0:3", type=("build", "run")) - depends_on("py-flit-core@3.8.0:3", when="@3.8.0:3.8", type=("build", "run")) - depends_on("py-flit-core@3.7.1:3", when="@3.7.1:3.7", type=("build", "run")) - depends_on("py-flit-core@3.6.0:3", when="@3.6.0:3.6", type=("build", "run")) - depends_on("py-flit-core@3.3.0:3", when="@3.3.0:3.3", type=("build", "run")) - depends_on("py-requests", type=("build", "run")) - depends_on("py-docutils", type=("build", "run")) - depends_on("py-tomli", when="@3.4:3.7", type=("build", "run")) - depends_on("py-tomli-w", when="@3.4:", type=("build", "run")) - depends_on("py-toml", when="@3.3.0:3.3", type=("build", "run")) + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@3.10:") + depends_on("python@3.6:") + + depends_on("py-flit-core@3.12.0:3", when="@3.12.0:3") + depends_on("py-flit-core@3.11.0:3", when="@3.11.0:3") + depends_on("py-flit-core@3.10.1:3", when="@3.10.1:3") + depends_on("py-flit-core@3.10.0:3", when="@3.10.0:3") + depends_on("py-flit-core@3.9.0:3", when="@3.9.0:3") + depends_on("py-flit-core@3.8.0:3", when="@3.8.0:3.8") + depends_on("py-flit-core@3.7.1:3", when="@3.7.1:3.7") + depends_on("py-flit-core@3.6.0:3", when="@3.6.0:3.6") + depends_on("py-flit-core@3.3.0:3", when="@3.3.0:3.3") + + with default_args(type=("run")): + depends_on("py-pip", when="@3.10:") + + depends_on("py-requests") + + depends_on("py-docutils") + + depends_on("py-tomli", when="@3.4:3.7") + depends_on("py-tomli-w", when="@3.4:") + depends_on("py-toml", when="@3.3.0:3.3") From f7ed3ce4ae12a250920a4805ccd1c3224c8c8d28 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Wed, 23 Apr 2025 19:07:19 +0200 Subject: [PATCH 246/317] py-pillow: fix build (#50177) --- .../builtin/packages/py-pillow/package.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 55f3f11ecda..f2f9e1eeab4 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -125,18 +125,17 @@ def patch(self): ) if self.spec.satisfies("@:9"): - - def variant_to_cfg(variant): - able = "enable" if "+" + variant in self.spec else "disable" - return "{0}_{1}=1\n".format(able, variant) - with open("setup.cfg", "a") as setup: - setup.write("[build_ext]\n") - for variant in self.VARIANTS: - setup.write(variant_to_cfg(variant)) + print("[build_ext]", file=setup) - setup.write("rpath={0}\n".format(":".join(self.rpath))) - setup.write("[install]\n") + for variant in self.VARIANTS: + if self.spec.satisfies(f"+{variant}"): + print(f"enable_{variant}=1", file=setup) + elif self.spec.satisfies(f"~{variant}"): + print(f"disable_{variant}=1", file=setup) + + print("rpath={0}".format(":".join(self.rpath)), file=setup) + print("[install]", file=setup) @when("@:9") def setup_build_environment(self, env: EnvironmentModifications) -> None: From a3c7e9746378ed02fd54d6f542c2dd8637ce98e8 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 23 Apr 2025 19:16:56 +0200 Subject: [PATCH 247/317] py-build: add v1.2.2 (#50148) * py-build: add v1.2.2 Release notes: https://github.com/pypa/build/releases/tag/1.2.2 Diff: https://github.com/pypa/build/compare/1.2.1...1.2.2 * py-build: fix deps * fixup! py-build: fix deps --- .../builtin/packages/py-build/package.py | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-build/package.py b/var/spack/repos/builtin/packages/py-build/package.py index ae08eb49254..7d77fadbbb0 100644 --- a/var/spack/repos/builtin/packages/py-build/package.py +++ b/var/spack/repos/builtin/packages/py-build/package.py @@ -13,6 +13,7 @@ class PyBuild(PythonPackage): license("MIT") + version("1.2.2", sha256="119b2fb462adef986483438377a13b2f42064a2a3a4161f24a0cca698a07ac8c") version("1.2.1", sha256="526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d") version("1.1.1", sha256="8eea65bb45b1aac2e734ba2cc8dad3a6d97d97901a395bd0ed3e7b46953d2a31") version("1.1.0", sha256="f8da3eebb19668bb338b6eb256b1896ef4e87a5398bbdda97ee29ec474569f16") @@ -25,21 +26,35 @@ class PyBuild(PythonPackage): variant("virtualenv", default=False, description="Install optional virtualenv dependency") - depends_on("py-flit-core@3.8:", when="@1:", type="build") - depends_on("py-flit-core@3.4:", when="@0.10:", type="build") - depends_on("py-packaging@19:", type=("build", "run")) - depends_on("py-pyproject-hooks", when="@0.10.0:", type=("build", "run")) - depends_on("py-colorama", when="platform=windows", type=("build", "run")) - depends_on("py-importlib-metadata@4.6:", when="@1: ^python@:3.9", type=("build", "run")) - depends_on("py-importlib-metadata@0.22:", when="@0 ^python@:3.7", type=("build", "run")) - depends_on("py-tomli@1.1:", when="@1: ^python@:3.10", type=("build", "run")) - depends_on("py-tomli@1.1:", when="@0.10", type=("build", "run")) - depends_on("py-tomli@1:", when="@:0.9", type=("build", "run")) + with default_args(type="build"): + depends_on("py-flit-core@3.8:", when="@1:") + depends_on("py-flit-core@3.4:", when="@0.10:") - # Historical dependencies - depends_on("py-setuptools", when="@:0.9", type="build") - depends_on("py-pep517@0.9.1:", when="@:0.9", type=("build", "run")) - depends_on("py-virtualenv@20.0.35:", when="+virtualenv", type=("build", "run")) + # Historical dependencies + depends_on("py-setuptools", when="@:0.9") + + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@1.2:") + depends_on("python@3.7:", when="@0.10:") + depends_on("python@3.6:", when="@0.6:") + + depends_on("py-packaging@19.1:", when="@1.2:") + depends_on("py-packaging@19:") + + depends_on("py-pyproject-hooks", when="@0.10.0:") + + depends_on("py-colorama", when="platform=windows") + + depends_on("py-importlib-metadata@4.6:", when="@1.1.0: ^python@:3.10.1") + depends_on("py-importlib-metadata@4.6:", when="@1: ^python@:3.9") + depends_on("py-importlib-metadata@0.22:", when="@0 ^python@:3.7") + + depends_on("py-tomli@1.1:", when="@0.10: ^python@:3.10") + depends_on("py-tomli@1:", when="@:0.9") + + # Historical dependencies + depends_on("py-pep517@0.9.1:", when="@:0.9") + depends_on("py-virtualenv@20.0.35:", when="+virtualenv") # https://github.com/pypa/build/issues/266 # https://github.com/pypa/build/issues/406 From 21da90e062e4a405ece7b87484fd39e521a06946 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Wed, 23 Apr 2025 13:55:06 -0400 Subject: [PATCH 248/317] crtm-fix: fix directory logic (#50172) --- var/spack/repos/builtin/packages/crtm-fix/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/crtm-fix/package.py b/var/spack/repos/builtin/packages/crtm-fix/package.py index 95c517a60f1..120716fe946 100644 --- a/var/spack/repos/builtin/packages/crtm-fix/package.py +++ b/var/spack/repos/builtin/packages/crtm-fix/package.py @@ -55,6 +55,7 @@ def install(self, spec, prefix): for d in endian_dirs: fix_files = fix_files + find(".", "*/{}/*".format(d), recursive=False) fix_files = fix_files + find(".", "*/*/{}/*".format(d), recursive=False) + fix_files = fix_files + find(".", "*/*/*/{}/*".format(d), recursive=False) if self.spec.satisfies("~testfiles"): fix_files = [f for f in fix_files if "/fix/test_data/" not in f] fix_files = [f for f in fix_files if os.path.isfile(f)] From 14513ba76f88c8bbef854657e9689198bf5a89d6 Mon Sep 17 00:00:00 2001 From: Peter Brady Date: Wed, 23 Apr 2025 14:25:00 -0500 Subject: [PATCH 249/317] lua-sol2: add v3.5.0 (#49970) * sol2: update version * fix lua version in libpressio --------- Co-authored-by: Richard Berger --- var/spack/repos/builtin/packages/libpressio/package.py | 2 +- var/spack/repos/builtin/packages/lua-sol2/package.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpressio/package.py b/var/spack/repos/builtin/packages/libpressio/package.py index 4c1df1e11f2..a020e47156b 100644 --- a/var/spack/repos/builtin/packages/libpressio/package.py +++ b/var/spack/repos/builtin/packages/libpressio/package.py @@ -262,7 +262,7 @@ class Libpressio(CMakePackage, CudaPackage): depends_on("zfp", when="+zfp") depends_on("petsc", when="+petsc") depends_on("mpi@2:", when="+mpi") - depends_on("lua-sol2", when="+lua") + depends_on("lua-sol2@:3.3.0", when="+lua") depends_on("libdistributed@0.0.11:", when="+libdistributed") depends_on("libdistributed@0.4.0:", when="@0.85.0:+libdistributed") depends_on("pkgconfig", type="build") diff --git a/var/spack/repos/builtin/packages/lua-sol2/package.py b/var/spack/repos/builtin/packages/lua-sol2/package.py index 1c52bd98e48..daa843a2e2d 100644 --- a/var/spack/repos/builtin/packages/lua-sol2/package.py +++ b/var/spack/repos/builtin/packages/lua-sol2/package.py @@ -17,6 +17,7 @@ class LuaSol2(CMakePackage): license("MIT") version("develop", branch="develop") + version("3.5.0", tag="v3.5.0", commit="9190880c593dfb018ccf5cc9729ab87739709862") version("3.3.0", tag="v3.3.0", commit="eba86625b707e3c8c99bbfc4624e51f42dc9e561") version("3.2.3", sha256="f74158f92996f476786be9c9e83f8275129bb1da2a8d517d050421ac160a4b9e") version("3.2.2", sha256="141790dae0c1821dd2dbac3595433de49ba72545845efc3ec7d88de8b0a3b2da") From 059a4a58e2b4881f489ba882d4afe7949f6a1194 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Thu, 24 Apr 2025 07:03:17 +0200 Subject: [PATCH 250/317] covfie: depend on c (#50190) This commit makes the covfie package explicitly depend on the C language, as CMake enables C by default if it is not explicitly turned off. --- var/spack/repos/builtin/packages/covfie/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/covfie/package.py b/var/spack/repos/builtin/packages/covfie/package.py index e763c82febe..8eb75299bcd 100644 --- a/var/spack/repos/builtin/packages/covfie/package.py +++ b/var/spack/repos/builtin/packages/covfie/package.py @@ -25,6 +25,7 @@ class Covfie(CMakePackage, CudaPackage): version("0.11.0", sha256="39fcd0f218d3b4f3aacc6af497a8cda8767511efae7a72b47781f10fd4340f4f") version("0.10.0", sha256="d44142b302ffc193ad2229f1d2cc6d8d720dd9da8c37989ada4f23018f86c964") + depends_on("c", type="build") depends_on("cxx", type="build") depends_on("cmake@3.21:", type="build", when="@0.11:") From 41ff0500f9c3113876585dc4f288ee7ac3e44d9f Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Wed, 23 Apr 2025 22:08:20 -0700 Subject: [PATCH 251/317] Add ls alias to spack {compiler, external} (#50189) --- lib/spack/spack/cmd/compiler.py | 3 ++- lib/spack/spack/cmd/external.py | 3 ++- share/spack/spack-completion.bash | 12 ++++++++++-- share/spack/spack-completion.fish | 14 ++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index b6e3096db81..5982ce9cdc1 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -63,7 +63,7 @@ def setup_parser(subparser): ) # List - list_parser = sp.add_parser("list", help="list available compilers") + list_parser = sp.add_parser("list", aliases=["ls"], help="list available compilers") list_parser.add_argument( "--scope", action=arguments.ConfigScope, help="configuration scope to read from" ) @@ -216,5 +216,6 @@ def compiler(parser, args): "rm": compiler_remove, "info": compiler_info, "list": compiler_list, + "ls": compiler_list, } action[args.compiler_command](args) diff --git a/lib/spack/spack/cmd/external.py b/lib/spack/spack/cmd/external.py index a877e71f981..7650306bd19 100644 --- a/lib/spack/spack/cmd/external.py +++ b/lib/spack/spack/cmd/external.py @@ -62,7 +62,7 @@ def setup_parser(subparser): "package Spack knows how to find." ) - sp.add_parser("list", help="list detectable packages, by repository and name") + sp.add_parser("list", aliases=["ls"], help="list detectable packages, by repository and name") read_cray_manifest = sp.add_parser( "read-cray-manifest", @@ -259,6 +259,7 @@ def external(parser, args): action = { "find": external_find, "list": external_list, + "ls": external_list, "read-cray-manifest": external_read_cray_manifest, } action[args.external_command](args) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 7abaf6ff785..910613babdb 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -749,7 +749,7 @@ _spack_compiler() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="find add remove rm list info" + SPACK_COMPREPLY="find add remove rm list ls info" fi } @@ -793,6 +793,10 @@ _spack_compiler_list() { SPACK_COMPREPLY="-h --help --scope" } +_spack_compiler_ls() { + SPACK_COMPREPLY="-h --help --scope" +} + _spack_compiler_info() { if $list_options then @@ -1173,7 +1177,7 @@ _spack_external() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="find list read-cray-manifest" + SPACK_COMPREPLY="find list ls read-cray-manifest" fi } @@ -1190,6 +1194,10 @@ _spack_external_list() { SPACK_COMPREPLY="-h --help" } +_spack_external_ls() { + SPACK_COMPREPLY="-h --help" +} + _spack_external_read_cray_manifest() { SPACK_COMPREPLY="-h --help --file --directory --ignore-default-dir --dry-run --fail-on-error" } diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 9d53ea526ec..6abc1835f3b 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -1054,6 +1054,7 @@ complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a add -d 's complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a remove -d 'remove compiler by spec' complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a rm -d 'remove compiler by spec' complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a list -d 'list available compilers' +complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a ls -d 'list available compilers' complete -c spack -n '__fish_spack_using_command_pos 0 compiler' -f -a info -d 'show compiler paths' complete -c spack -n '__fish_spack_using_command compiler' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command compiler' -s h -l help -d 'show this help message and exit' @@ -1113,6 +1114,13 @@ complete -c spack -n '__fish_spack_using_command compiler list' -s h -l help -d complete -c spack -n '__fish_spack_using_command compiler list' -l scope -r -f -a '_builtin defaults system site user command_line' complete -c spack -n '__fish_spack_using_command compiler list' -l scope -r -d 'configuration scope to read from' +# spack compiler ls +set -g __fish_spack_optspecs_spack_compiler_ls h/help scope= +complete -c spack -n '__fish_spack_using_command compiler ls' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command compiler ls' -s h -l help -d 'show this help message and exit' +complete -c spack -n '__fish_spack_using_command compiler ls' -l scope -r -f -a '_builtin defaults system site user command_line' +complete -c spack -n '__fish_spack_using_command compiler ls' -l scope -r -d 'configuration scope to read from' + # spack compiler info set -g __fish_spack_optspecs_spack_compiler_info h/help scope= complete -c spack -n '__fish_spack_using_command_pos 0 compiler info' -f -a '(__fish_spack_installed_compilers)' @@ -1707,6 +1715,7 @@ complete -c spack -n '__fish_spack_using_command extensions' -s s -l show -r -d set -g __fish_spack_optspecs_spack_external h/help complete -c spack -n '__fish_spack_using_command_pos 0 external' -f -a find -d 'add external packages to packages.yaml' complete -c spack -n '__fish_spack_using_command_pos 0 external' -f -a list -d 'list detectable packages, by repository and name' +complete -c spack -n '__fish_spack_using_command_pos 0 external' -f -a ls -d 'list detectable packages, by repository and name' complete -c spack -n '__fish_spack_using_command_pos 0 external' -f -a read-cray-manifest -d 'consume a Spack-compatible description of externally-installed packages, including dependency relationships' complete -c spack -n '__fish_spack_using_command external' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command external' -s h -l help -d 'show this help message and exit' @@ -1736,6 +1745,11 @@ set -g __fish_spack_optspecs_spack_external_list h/help complete -c spack -n '__fish_spack_using_command external list' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command external list' -s h -l help -d 'show this help message and exit' +# spack external ls +set -g __fish_spack_optspecs_spack_external_ls h/help +complete -c spack -n '__fish_spack_using_command external ls' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command external ls' -s h -l help -d 'show this help message and exit' + # spack external read-cray-manifest set -g __fish_spack_optspecs_spack_external_read_cray_manifest h/help file= directory= ignore-default-dir dry-run fail-on-error complete -c spack -n '__fish_spack_using_command external read-cray-manifest' -s h -l help -f -a help From a3c430e8103113e2452e5ade5cfc7e4ee1c0e0f1 Mon Sep 17 00:00:00 2001 From: Peter Scheibel Date: Wed, 23 Apr 2025 22:08:54 -0700 Subject: [PATCH 252/317] CompilerAdaptor: add support for opt_flags/debug_flags (#50126) --- lib/spack/spack/build_systems/compiler.py | 5 +++++ lib/spack/spack/compilers/adaptor.py | 12 ++++++++++++ lib/spack/spack/test/spec_semantics.py | 12 ++++++++++++ var/spack/repos/builtin.mock/packages/gcc/package.py | 2 ++ var/spack/repos/builtin/packages/mfem/package.py | 4 ++-- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_systems/compiler.py b/lib/spack/spack/build_systems/compiler.py index 783027c8f2f..8a3bc033bc1 100644 --- a/lib/spack/spack/build_systems/compiler.py +++ b/lib/spack/spack/build_systems/compiler.py @@ -47,6 +47,11 @@ class CompilerPackage(spack.package_base.PackageBase): #: Relative path to compiler wrappers compiler_wrapper_link_paths: Dict[str, str] = {} + #: Optimization flags + opt_flags: Sequence[str] = [] + #: Flags for generating debug information + debug_flags: Sequence[str] = [] + def __init__(self, spec: "spack.spec.Spec"): super().__init__(spec) msg = f"Supported languages for {spec} are not a subset of possible supported languages" diff --git a/lib/spack/spack/compilers/adaptor.py b/lib/spack/spack/compilers/adaptor.py index e8caef57760..76314087c53 100644 --- a/lib/spack/spack/compilers/adaptor.py +++ b/lib/spack/spack/compilers/adaptor.py @@ -18,6 +18,10 @@ class Languages(enum.Enum): class CompilerAdaptor: + """Provides access to compiler attributes via `Package.compiler`. Useful for + packages which do not yet access compiler properties via `self.spec[language]`. + """ + def __init__( self, compiled_spec: spack.spec.Spec, compilers: Dict[Languages, spack.spec.Spec] ) -> None: @@ -79,6 +83,14 @@ def implicit_rpaths(self) -> List[str]: result.extend(CompilerPropertyDetector(compiler).implicit_rpaths()) return result + @property + def opt_flags(self) -> List[str]: + return next(iter(self.compilers.values())).package.opt_flags + + @property + def debug_flags(self) -> List[str]: + return next(iter(self.compilers.values())).package.debug_flags + @property def openmp_flag(self) -> str: return next(iter(self.compilers.values())).package.openmp_flag diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 02673ffab68..28788aadf62 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -1365,6 +1365,18 @@ def test_splice_swap_names_mismatch_virtuals(self, default_mock_concretization, with pytest.raises(spack.spec.SpliceError, match="virtual"): vt.splice(vh, transitive) + def test_adaptor_optflags(self): + """Tests that we can obtain the list of optflags, and debugflags, + from the compiler adaptor, and that this list is taken from the + appropriate compiler package. + """ + # pkg-a depends on c, so only the gcc compiler should be chosen + spec = spack.concretize.concretize_one(Spec("pkg-a %gcc")) + assert "-Otestopt" in spec.package.compiler.opt_flags + # This is not set, make sure we get an empty list + for x in spec.package.compiler.debug_flags: + pass + def test_spec_override(self): init_spec = Spec("pkg-a foo=baz foobar=baz cflags=-O3 cxxflags=-O1") change_spec = Spec("pkg-a foo=fee cflags=-O2") diff --git a/var/spack/repos/builtin.mock/packages/gcc/package.py b/var/spack/repos/builtin.mock/packages/gcc/package.py index 59ae7077cc4..77c789a92d9 100644 --- a/var/spack/repos/builtin.mock/packages/gcc/package.py +++ b/var/spack/repos/builtin.mock/packages/gcc/package.py @@ -40,6 +40,8 @@ class Gcc(CompilerPackage, Package): compiler_version_regex = r"(? Date: Thu, 24 Apr 2025 05:58:49 -0500 Subject: [PATCH 253/317] geomodel: depend on c (#49781) * geomodel: depend on c * hep: add geomodel * hep: geomodel +fullsimlight * geomodel: depends on virtual gl, not opengl * soqt: depends on gl and glu instead of opengl * geomodel: rm generated comments on language dependencies --- share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml | 1 + var/spack/repos/builtin/packages/geomodel/package.py | 5 +++-- var/spack/repos/builtin/packages/soqt/package.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml index 70d3c510273..3027875ed7b 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/hep/spack.yaml @@ -71,6 +71,7 @@ spack: - geant4 ~vtk ^[virtuals=qmake] qt - geant4 ~vtk ^[virtuals=qmake] qt-base #- genie +atmo + - geomodel +examples +fullsimlight +geomodelg4 +hepmc3 +pythia +tools +visualization - hepmc - hepmc3 +interfaces +protobuf +python +rootio #- herwig3 +njet +vbfnlo # Note: herwig3 fails to find evtgen diff --git a/var/spack/repos/builtin/packages/geomodel/package.py b/var/spack/repos/builtin/packages/geomodel/package.py index 64cfd2acfca..cdf8ef392fd 100644 --- a/var/spack/repos/builtin/packages/geomodel/package.py +++ b/var/spack/repos/builtin/packages/geomodel/package.py @@ -65,7 +65,8 @@ class Geomodel(CMakePackage): conflicts("+fullsimlight", when="+fsl", msg="FSL triggers the build of the FullSimLight") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3.16:", type="build") @@ -89,7 +90,7 @@ class Geomodel(CMakePackage): depends_on("qt-5compat") depends_on("coin3d") depends_on("soqt") - depends_on("opengl") + depends_on("gl") def cmake_args(self): args = [ diff --git a/var/spack/repos/builtin/packages/soqt/package.py b/var/spack/repos/builtin/packages/soqt/package.py index 9c3ed1bc073..dfaccc077a1 100644 --- a/var/spack/repos/builtin/packages/soqt/package.py +++ b/var/spack/repos/builtin/packages/soqt/package.py @@ -23,7 +23,8 @@ class Soqt(CMakePackage): depends_on("cmake@3:", type="build") depends_on("coin3d") - depends_on("opengl") + depends_on("gl") + depends_on("glu") variant( "static_defaults", From fcf615b53eed8d54071a010e60fcfab973531f23 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Thu, 24 Apr 2025 10:56:35 -0400 Subject: [PATCH 254/317] namd: add v3.0.1 (#50192) --- var/spack/repos/builtin/packages/namd/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py index 8181a5ff00d..1414249d4c2 100644 --- a/var/spack/repos/builtin/packages/namd/package.py +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -23,7 +23,12 @@ class Namd(MakefilePackage, CudaPackage, ROCmPackage): maintainers("jcphill") version("master", branch="master") - version("3.0", sha256="301c64f0f1db860f7336efdb26223ccf66b5ab42bfc9141df8d81ec1e20bf472") + version("3.0.1", sha256="3be0854545c45e58afb439a96708e127aef435d30113cc89adbab8f4b6888733") + version( + "3.0", + sha256="301c64f0f1db860f7336efdb26223ccf66b5ab42bfc9141df8d81ec1e20bf472", + deprecated=True, + ) version( "3.0b7", sha256="b18ff43b0f55ec59e137c62eba1812589dd88b2122c3a05ea652781667f438b4", From 4bfd7aeb25320f1bec84164d6ef8fde3dd1c8acd Mon Sep 17 00:00:00 2001 From: Satish Balay Date: Thu, 24 Apr 2025 10:50:23 -0500 Subject: [PATCH 255/317] petsc4py: update ldshared.patch for v3.20.1, and skip for v3.23.1+ (#50170) --- .../builtin/packages/py-petsc4py/ldshared_3190.patch | 11 +++++++++++ .../{ldshared_319.patch => ldshared_3211.patch} | 0 .../repos/builtin/packages/py-petsc4py/package.py | 3 ++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-petsc4py/ldshared_3190.patch rename var/spack/repos/builtin/packages/py-petsc4py/{ldshared_319.patch => ldshared_3211.patch} (100%) diff --git a/var/spack/repos/builtin/packages/py-petsc4py/ldshared_3190.patch b/var/spack/repos/builtin/packages/py-petsc4py/ldshared_3190.patch new file mode 100644 index 00000000000..7a62595aad4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-petsc4py/ldshared_3190.patch @@ -0,0 +1,11 @@ +--- a/conf/confpetsc.py 2023-10-31 00:35:21.000000000 -0500 ++++ b/conf/confpetsc.py 2025-04-22 23:56:40.015502466 -0500 +@@ -334,7 +334,7 @@ + ldshared = getenv('LDSHARED', ldshared) + ldflags = getenv('LDFLAGS', cflags + ' ' + (ldflags or '')) + ldcmd = split_quoted(ld) + split_quoted(ldflags) +- ldshared = [flg for flg in split_quoted(ldshared) if flg not in ldcmd and (flg.find('/lib/spack/env')<0)] ++ ldshared = [flg for flg in split_quoted(ldshared) if flg not in ldcmd and (flg.find('/lib/spack/env')<0) and (flg.find('/libexec/spack')<0)] + ldshared = str.join(' ', ldshared) + # + def get_flags(cmd): diff --git a/var/spack/repos/builtin/packages/py-petsc4py/ldshared_319.patch b/var/spack/repos/builtin/packages/py-petsc4py/ldshared_3211.patch similarity index 100% rename from var/spack/repos/builtin/packages/py-petsc4py/ldshared_319.patch rename to var/spack/repos/builtin/packages/py-petsc4py/ldshared_3211.patch diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index 1946e7b34f6..988ba7b73db 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -95,7 +95,8 @@ class PyPetsc4py(PythonPackage): # Hack to fix https://github.com/spack/spack/issues/21451, where Petsc4Py expects LDSHARED # to start with the same executable as get_config_var("CC") - patch("ldshared_319.patch", when="@3.19:") + patch("ldshared_3211.patch", when="@3.21.1:3.23.0") + patch("ldshared_3190.patch", when="@3.19:3.21.0") patch("ldshared.patch", when="@:3.18") depends_on("c", type="build") # generated From 9dc3ad4db7e899b233ea6d52994983f33c6be2d6 Mon Sep 17 00:00:00 2001 From: Taillefumier Mathieu <29380261+mtaillefumier@users.noreply.github.com> Date: Thu, 24 Apr 2025 17:59:28 +0200 Subject: [PATCH 256/317] [package updates] Bump version of cp2k and sirius (#50141) --- var/spack/repos/builtin/packages/cp2k/package.py | 3 ++- var/spack/repos/builtin/packages/sirius/package.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 6bbc43c5ab0..d3c41c9ba8a 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -328,7 +328,8 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): depends_on("sirius@7.3:", when="@9.1") depends_on("sirius@7.4:7.5", when="@2023.2") depends_on("sirius@7.5:", when="@2024.1:") - depends_on("sirius@7.6: +pugixml", when="@2024.2:") + depends_on("sirius@7.6:7.7 +pugixml", when="@2024.2:") + depends_on("sirius@7.7: +pugixml", when="@2025.2:") with when("+libvori"): depends_on("libvori@201219:", when="@8.1") depends_on("libvori@210412:", when="@8.2:") diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py index b613a580e59..6d2497285a8 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -22,6 +22,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop") version("master", branch="master") + version("7.7.0", sha256="be0bdc76db9eb8afdcb950f0ccaf7535b8e85d72a4232dc92246f54fa68d9d7b") version("7.6.2", sha256="1ba92942aa39b49771677cc8bf1c94a0b4350eb45bf3009318a6c2350b46a276") version("7.6.1", sha256="16a114dc17e28697750585820e69718a96e6929f88406d266c75cf9a7cdbdaaa") version("7.6.0", sha256="e424206fecb35bb2082b5c87f0865a9536040e984b88b041e6f7d531f8a65b20") From cba9436cf4f516df011eeb3de7312d3c8edcb69f Mon Sep 17 00:00:00 2001 From: Alec Scott Date: Thu, 24 Apr 2025 16:45:02 -0700 Subject: [PATCH 257/317] py-repligit: add v0.1.1 (#50204) * py-repligit: add v0.1.1 * Add conflicts for older versions of python when at v0.1.0 --- var/spack/repos/builtin/packages/py-repligit/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-repligit/package.py b/var/spack/repos/builtin/packages/py-repligit/package.py index ffd505b9bf8..acb63ba738a 100644 --- a/var/spack/repos/builtin/packages/py-repligit/package.py +++ b/var/spack/repos/builtin/packages/py-repligit/package.py @@ -17,12 +17,14 @@ class PyRepligit(PythonPackage): license("Apache-2.0 WITH LLVM-exception") version("main", branch="main") + version("0.1.1", sha256="e1fec2b080dd657502b967148fbb7dd5d33eb02fc47a2e91ed7bbfebf082410e") version("0.1.0", sha256="9beac1a14542704f2e5af6a2f3d391d8adf2112ae3c70e98339db251a9e1079e") variant("aiohttp", default="False", description="Enable aiohttp support") - depends_on("python@3.10:", type=("build", "run")) + conflicts("python@:3.12", when="@0.1.0") + depends_on("python@3.10:", type=("build", "run")) depends_on("py-hatchling", type="build") depends_on("py-aiohttp", type=("build", "run"), when="+aiohttp") From 104d6b4484e657b07605511951ea4923e3d21d7a Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Thu, 24 Apr 2025 23:39:20 -0400 Subject: [PATCH 258/317] mepo: add v2.3.2 (#50202) --- var/spack/repos/builtin/packages/mepo/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mepo/package.py b/var/spack/repos/builtin/packages/mepo/package.py index 832942bda59..062974c720c 100644 --- a/var/spack/repos/builtin/packages/mepo/package.py +++ b/var/spack/repos/builtin/packages/mepo/package.py @@ -16,6 +16,7 @@ class Mepo(PythonPackage): license("Apache-2.0", checked_by="mathomp4") + version("2.3.2", sha256="82affbf7e40856c6d8e8b3c4998ab4ea4d37c0baac73ddc1d698bce0d73a5082") version("2.3.1", sha256="76b7fe081de7b34e5680879352a070dd447e2b113f3e34e4ce20c02486c3c0d8") version("2.3.0", sha256="e80d7157553d33382ab0c399fcd5ec43ab5ff642504b07c8aef266165f9095d2") version("2.2.1", sha256="b691989bb762dc5944a2f13afd89666602fa7e40816f0cfb0278fe2164b34e30") From e6a0a6c145e775d820c47f28e233a9813cb2eac0 Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Thu, 24 Apr 2025 23:40:48 -0400 Subject: [PATCH 259/317] mapl: add v2.55.1 (#50201) --- 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 21ee7ed89fc..8a22c4803c8 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -37,6 +37,7 @@ class Mapl(CMakePackage): version("develop", branch="develop") version("main", branch="main") + version("2.55.1", sha256="eb8bbb42a9a488155bd38f9bc6f6863b8a0acb210852ee71834f160958500243") version("2.55.0", sha256="13ec3d81d53cf18aa18322b74b9a6990ad7e51224f1156be5d1f834ee826f95c") version("2.54.2", sha256="70b7be425d07a7be7d9bb0e53b93a372887a048caf23260e0ae602ca6e3670ed") version("2.54.1", sha256="2430ded45a98989e9100037f54cf22f5a5083e17196514b3667d3003413e49e1") From 8921612f6a842d761a41e2a5f163abbc7a5b4f23 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 25 Apr 2025 08:54:07 +0200 Subject: [PATCH 260/317] boost: add 1.88.0 (#50158) * boost: add 1.88.0 * pika: add conflict with boost 1.88.0 --- var/spack/repos/builtin/packages/boost/package.py | 4 ++++ var/spack/repos/builtin/packages/pika/package.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index d673899eece..961283a712a 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -29,6 +29,7 @@ class Boost(Package): license("BSL-1.0") version("develop", branch="develop", submodules=True) + version("1.88.0", sha256="46d9d2c06637b219270877c9e16155cbd015b6dc84349af064c088e9b5b12f7b") version("1.87.0", sha256="af57be25cb4c4f4b413ed692fe378affb4352ea50fbe294a11ef548f4d527d89") version("1.86.0", sha256="1bed88e40401b2cb7a1f76d4bab499e352fa4d0c5f31c0dbae64e24d34d7513b") version("1.85.0", sha256="7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617") @@ -134,6 +135,7 @@ class Boost(Package): "log", "math", "mpi", + "mqtt5", "nowide", "program_options", "python", @@ -735,6 +737,8 @@ def install(self, spec, prefix): with_libs = {f"{lib}" for lib in Boost.all_libs if f"+{lib}" in spec} # Remove libraries that the release version does not support + if not spec.satisfies("@1.88.0:"): + with_libs.discard("mqtt5") if not spec.satisfies("@1.85.0:"): with_libs.discard("charconv") if not spec.satisfies("@1.84.0:"): diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index e6f9769c7a8..9e9716610b3 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -129,6 +129,8 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): # Other dependencies depends_on("boost@1.71:") + # https://github.com/pika-org/pika/pull/1428 + conflicts("^boost@1.88:", when="@:0.33") depends_on("fmt@9:", when="@0.11:") # https://github.com/pika-org/pika/issues/686 conflicts("^fmt@10:", when="@:0.15 +cuda") From 3df5a85237cf63a36974e7068d1349430b0f8440 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 25 Apr 2025 09:44:05 +0200 Subject: [PATCH 261/317] input_analysis.py: fix conditional requirements (#50194) Fixes a logic bug where a -> b was assumed to imply not a -> not b in conditional requirements. Signed-off-by: Massimiliano Culpo --- lib/spack/spack/solver/input_analysis.py | 4 +++- lib/spack/spack/test/concretization/core.py | 14 +++++++++++++ .../builtin.mock/packages/libceed/package.py | 18 ++++++++++++++++ .../builtin.mock/packages/libxsmm/package.py | 21 +++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin.mock/packages/libceed/package.py create mode 100644 var/spack/repos/builtin.mock/packages/libxsmm/package.py diff --git a/lib/spack/spack/solver/input_analysis.py b/lib/spack/spack/solver/input_analysis.py index 1cc3258fc7a..4c340ce39ad 100644 --- a/lib/spack/spack/solver/input_analysis.py +++ b/lib/spack/spack/solver/input_analysis.py @@ -85,8 +85,10 @@ def is_virtual(self, name: str) -> bool: def is_allowed_on_this_platform(self, *, pkg_name: str) -> bool: """Returns true if a package is allowed on the current host""" pkg_cls = self.repo.get_pkg_class(pkg_name) + no_condition = spack.spec.Spec() for when_spec, conditions in pkg_cls.requirements.items(): - if not when_spec.intersects(self._platform_condition): + # Restrict analysis to unconditional requirements + if when_spec != no_condition: continue for requirements, _, _ in conditions: if not any(x.intersects(self._platform_condition) for x in requirements): diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index b28c3337f11..4ea9591a24f 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -3366,3 +3366,17 @@ def test_reuse_when_requiring_build_dep( with spack.config.override("concretizer:reuse", True): result = spack.concretize.concretize_one("pkg-b") assert pkgb_old.dag_hash() == result.dag_hash(), result.tree() + + +@pytest.mark.regression("50167") +def test_input_analysis_and_conditional_requirements(default_mock_concretization): + """Tests that input analysis doesn't account for conditional requirement + to discard possible dependencies. + + If the requirement is conditional, and impossible to achieve on the current + platform, the valid search space is still the complement of the condition that + activates the requirement. + """ + libceed = default_mock_concretization("libceed") + assert libceed["libxsmm"].satisfies("@main") + assert libceed["libxsmm"].satisfies("platform=test") diff --git a/var/spack/repos/builtin.mock/packages/libceed/package.py b/var/spack/repos/builtin.mock/packages/libceed/package.py new file mode 100644 index 00000000000..f6bea56b3ad --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/libceed/package.py @@ -0,0 +1,18 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class Libceed(Package): + """Package that has a dependency imposing conditional requirements on platforms""" + + homepage = "https://github.com/CEED/libCEED" + url = "http://www.fake.com/libceed.tgz" + + version("0.12.0", sha256="e491ccadebc5cdcd1fc08b5b4509a0aba4e2c096f53d7880062a66b82a0baf84") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("libxsmm") diff --git a/var/spack/repos/builtin.mock/packages/libxsmm/package.py b/var/spack/repos/builtin.mock/packages/libxsmm/package.py new file mode 100644 index 00000000000..6de7fb55f53 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/libxsmm/package.py @@ -0,0 +1,21 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class Libxsmm(Package): + """Package that imposes conditional requirements on platforms""" + + homepage = "https://github.com/libxsmm/libxsmm" + url = "https://github.com/libxsmm/libxsmm/archive/1.17.tar.gz" + git = "https://github.com/libxsmm/libxsmm.git" + + version("main", branch="main") + version("1.16.3", sha256="e491ccadebc5cdcd1fc08b5b4509a0aba4e2c096f53d7880062a66b82a0baf84") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + requires("platform=linux", "platform=test") + requires("platform=linux", when="@:1") From 41489efa4cd2a5239bf5f2af015fddb9f2d93705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20Dai=C3=9F?= Date: Fri, 25 Apr 2025 17:32:30 +0200 Subject: [PATCH 262/317] sgpp: update dependencies and variants (#49384) * sgpp: add new variants and constraints * sgpp: fix format * sgpp: add missing patch * sgpp: fix style * sgpp: Stop applying aarch patch for newer versions * sgpp: Better Eigen variant description Co-authored-by: Mikael Simberg * sgpp: fix format --------- Co-authored-by: Mikael Simberg --- .../repos/builtin/packages/sgpp/package.py | 132 ++++++++++++++++-- .../sgpp/set_boost_lib_path_internally.patch | 33 +++++ 2 files changed, 150 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/sgpp/set_boost_lib_path_internally.patch diff --git a/var/spack/repos/builtin/packages/sgpp/package.py b/var/spack/repos/builtin/packages/sgpp/package.py index 5d9fc6f941a..d829f49153e 100644 --- a/var/spack/repos/builtin/packages/sgpp/package.py +++ b/var/spack/repos/builtin/packages/sgpp/package.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + from spack.build_systems.python import PythonPipBuilder from spack.package import * from spack.pkg.builtin.boost import Boost @@ -51,10 +53,22 @@ class Sgpp(SConsPackage): # to complain about missing headers (due to a path check not working anymore) # See issue https://github.com/SGpp/SGpp/issues/263 and https://github.com/SGpp/SGpp/pull/266 patch("disable_disutils_deprecation_warning.patch", when="@:3.4.0 ^python@3.10:3.11") - # SGpp does not contain aarch64 support as of yet. To make it work still, this patch adds + # SGpp does not contain aarch64 support as of 3.4.0. To make it work still, this patch adds # simple build system support for it. - patch("for_aarch64.patch", when="target=aarch64:") + patch("for_aarch64.patch", when="@:3.4.0 target=aarch64:") + # SGpp will default to the system paths when linking boost without the patch + # This may work (depending on the boost versions in question) but we should use the boost + # from spack. This patch allows to correctly pass the spack's boost path to SGpp + # Fixed in SGpp PR https://github.com/SGpp/SGpp/pull/273 + patch("set_boost_lib_path_internally.patch", when="@3.3.0:3.4.0") + variant("debug", default=False, description="Build debug version instead of release version") + variant( + "doc", + default=False, + description="Build sgpp documentation (doxygen / pydoc)", + when="@3.4.0:", + ) variant("python", default=True, description="Provide Python bindings for SGpp") variant("optimization", default=True, description="Builds the optimization module of SGpp") variant("pde", default=True, description="Builds the datadriven module of SGpp") @@ -67,24 +81,37 @@ class Sgpp(SConsPackage): "opencl", default=False, description="Enables support for OpenCL accelerated operations" ) variant("mpi", default=False, description="Enables support for MPI-distributed operations") + variant( + "eigen", default=False, description="Enables Eigen support", when="@3.4.0: +optimization" + ) + variant( + "dakota", default=False, description="Enables Dakota support", when="@3.4.0: +combigrid" + ) + variant( + "visualization", + default=False, + description="Build with visualization support", + when="+python", + ) # Mandatory dependencies depends_on("cxx", type="build") # generated depends_on("scons@3:", type="build") depends_on("zlib-api", type="link") + depends_on("doxygen+graphviz", when="+doc", type="build") + depends_on("eigen", when="+eigen", type=("build", "run")) + depends_on("dakota", when="+dakota", type=("build", "run")) # Python dependencies extends("python", when="+python") depends_on("py-pip", when="+python", type="build") depends_on("py-wheel", when="+python", type="build") depends_on("py-setuptools", type="build") - # Older SGpp releases (:3.4.0) do not support python 3.12 due to them using distutils - depends_on("python@3.7:3.11", type=("build", "run"), when="@:3.4.0") - # SGpp@master works with newer python versions (3.12:) as well depends_on("python@3.7:", type=("build", "run")) - # Newest swig version 4.1 seems to cause problem -> limit to 3:4.0 for now - depends_on("swig@3:4.0", when="+python", type="build") + depends_on("swig@3:", when="+python", type="build") depends_on("py-numpy@1.17:", when="+python", type=("build", "run")) - depends_on("py-scipy@1.3:", when="+python", type=("build", "run")) + depends_on("py-pandas@1.1:", when="+python+visualization", type=("build", "run")) + depends_on("py-matplotlib@3:", when="+python+visualization", type=("build", "run")) + depends_on("py-scipy@1.5:", when="+python", type=("build", "run")) # OpenCL dependency depends_on("opencl@1.1:", when="+opencl", type=("build", "run")) # MPI dependency @@ -93,7 +120,7 @@ class Sgpp(SConsPackage): # 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, type="test") + depends_on(Boost.with_default_variants, type=("build", "run", "test")) # Compiler with C++11 support is required conflicts("%gcc@:4.8.4", msg="Compiler with c++11 support is required!") @@ -119,24 +146,50 @@ class Sgpp(SConsPackage): conflicts("+combigrid", when="@1.0.0:3.2.0~pde") conflicts("+combigrid", when="@1.0.0:3.2.0~solver") conflicts("+combigrid", when="@1.0.0:3.2.0~quadrature") + # Conflicts due the changes in the respective frameworks + # Fixed in newer SGpp versions, but 3.4.0 or older versions do not work + conflicts("^python@3.12:", when="@:3.4.0+python") + conflicts("^py-numpy@2:", when="@:3.4.0+python") + conflicts("^py-pandas@1.4:", when="@:3.4.0+python") + conflicts("^py-matplotlib@3.6:", when="@:3.4.0+python") + conflicts("^swig@4.1:", when="@:3.4.0+python") def build_args(self, spec, prefix): # Testing parameters if self.run_tests: - self.args = ["COMPILE_BOOST_TESTS=1", "RUN_BOOST_TESTS=1"] + self.args = [ + "COMPILE_BOOST_TESTS=1", + "RUN_BOOST_TESTS=1", + "COMPILE_BOOST_PERFORMANCE_TESTS=1", + "RUN_BOOST_PERFORMANCE_TESTS=1", + ] if "+python" in spec: self.args.append("RUN_PYTHON_TESTS=1") - if spec.satisfies("@1.0.0:3.2.0"): + if spec.satisfies("@3.3.0:"): + self.args.append("RUN_PYTHON_EXAMPLES=1") + if spec.satisfies("@1.0.0:3.2.0"): # argument was renamed after 3.2.0 self.args.append("RUN_CPPLINT=1") - else: # argument was renamed after 3.2.0 + else: + self.args.append("RUN_CPP_EXAMPLES=1") self.args.append("CHECK_STYLE=1") else: - self.args = ["COMPILE_BOOST_TESTS=0", "RUN_BOOST_TESTS=0", "RUN_PYTHON_TESTS=0"] - if spec.satisfies("@1.0.0:3.2.0"): + self.args = [ + "COMPILE_BOOST_TESTS=0", + "RUN_BOOST_TESTS=0", + "COMPILE_BOOST_PERFORMANCE_TESTS=0", + "RUN_BOOST_PERFORMANCE_TESTS=0", + "RUN_PYTHON_TESTS=0", + ] + if spec.satisfies("@1.0.0:3.2.0"): # argument was renamed after 3.2.0 self.args.append("RUN_CPPLINT=0") - else: # argument was renamed after 3.2.0 + else: + self.args.append("RUN_PYTHON_EXAMPLES=0") + self.args.append("RUN_CPP_EXAMPLES=0") self.args.append("CHECK_STYLE=0") + # Debug build or not + self.args.append("OPT={0}".format("0" if "+debug" in spec else "1")) + # Install direction self.args.append("PREFIX={0}".format(prefix)) @@ -168,6 +221,8 @@ def build_args(self, spec, prefix): self.args.append("ARCH=sse42") elif "sse3" in self.spec.target: self.args.append("ARCH=sse3") + elif "target=aarch64:" in spec: + self.args.append("ARCH=aarch64") # OpenCL Flags self.args.append("USE_OCL={0}".format("1" if "+opencl" in spec else "0")) @@ -179,10 +234,54 @@ def build_args(self, spec, prefix): else: self.args.append("CXX={0}".format(self.compiler.cxx)) + # Include PYDOC when building the documentation + self.args.append("PYDOC={0}".format("1" if "+doc +python" in spec else "0")) + + # For some libraries, SGpp expects the path to be explicitly passed to scons (either using + # CPPPATH and LIBPATH or using depency-specific variables (BOOST_LIBRARY_PATH). + # Here, we set those paths and associated flags the dependencies where SGpp expects them + # to be passed manually via CPPPATH/LIBPATH (Eigen, Dakota, ...): + custom_cpppath = "" + custom_libpath = "" + path_separator = ";" if sys.platform == "win32" else ":" + if "+eigen" in spec: + self.args.append("USE_EIGEN=1") + custom_cpppath += "{0}{1}".format(self.spec["eigen"].prefix.include, path_separator) + if "+dakota" in spec: + self.args.append("USE_DAKOTA=1") + custom_cpppath += "{0}{1}".format(self.spec["dakota"].prefix.include, path_separator) + # Simply using spec["dakota"].libs.directories[0] does not work because spack will look + # for a libdakota library file which does not exist. However, we can use find_libraries + # and manually specify an existing library + # name within dakota to find the correct lib directory: + custom_libpath += "{0}{1}".format( + find_libraries( + "libdakota_src", root=self.spec["dakota"].prefix, shared=True, recursive=True + ).directories[0], + path_separator, + ) + # Add combined paths to CPPPATH/LIBPATH + if custom_cpppath: + self.args.append("CPPPATH={0}".format(custom_cpppath)) + if custom_libpath: + self.args.append("LIBPATH={0}".format(custom_libpath)) + # Manually set Boost location to the spack one (otherwise SGpp will try to look for + # Boost within the System install directory first) + self.args.append("BOOST_INCLUDE_PATH={0}".format(self.spec["boost"].prefix.include)) + self.args.append("BOOST_LIBRARY_PATH={0}".format(self.spec["boost"].libs.directories[0])) + # Parallel builds do not seem to work without this: self.args.append("-j{0}".format(make_jobs)) + return self.args + @run_after("build") + def build_docs(self): + # Run Doxygen Step after build but before install + if "+doc" in self.spec: + args = self.args + scons("doxygen", *args) + def install_args(self, spec, prefix): # SGpp expects the same args for the install and build commands return self.args @@ -191,3 +290,6 @@ def install_args(self, spec, prefix): def python_install(self): if "+python" in self.spec: pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") + # Install docs + if "+doc" in self.spec: + install_tree("doc", self.prefix.doc) diff --git a/var/spack/repos/builtin/packages/sgpp/set_boost_lib_path_internally.patch b/var/spack/repos/builtin/packages/sgpp/set_boost_lib_path_internally.patch new file mode 100644 index 00000000000..9b871fc7740 --- /dev/null +++ b/var/spack/repos/builtin/packages/sgpp/set_boost_lib_path_internally.patch @@ -0,0 +1,33 @@ +diff --git a/SConstruct b/SConstruct +index d7c85bd72..9d9fd494d 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -443,6 +443,10 @@ if env["RUN_PYTHON_TESTS"]: + Helper.printWarning("Python tests disabled because SG_PYTHON is disabled.") + + if env["COMPILE_BOOST_TESTS"]: ++ # also add the Boost library path to the PATH ++ # so that the Boost test lib can be found when running the tests ++ env["ENV"]["LD_LIBRARY_PATH"] = os.pathsep.join([env["BOOST_LIBRARY_PATH"], ++ env["ENV"].get("LD_LIBRARY_PATH", "")]) + builder = Builder(action="./$SOURCE --log_level=test_suite") + env.Append(BUILDERS={"BoostTest" : builder}) + +diff --git a/datadriven/SConscript b/datadriven/SConscript +index 031f641cd..6380cd43f 100755 +--- a/datadriven/SConscript ++++ b/datadriven/SConscript +@@ -83,7 +83,11 @@ if env["USE_HPX"]: + module.runPythonTests() + module.buildBoostTests() + module.runBoostTests() ++# Build performance tests... + module.buildBoostTests("performanceTests", compileFlag=performanceTestFlag) +-module.runBoostTests("performanceTests", compileFlag=performanceTestFlag, +- runFlag=performanceTestRunFlag) ++# ... however, without OCL they are empty (via ifdefs) and boost would does ++# throw an error. Only run them when OCL is used ++if env["USE_OCL"]: ++ module.runBoostTests("performanceTests", compileFlag=performanceTestFlag, ++ runFlag=performanceTestRunFlag) + module.checkStyle() From f46528ec6bc2356c684d15e8ce87150ee86abfba Mon Sep 17 00:00:00 2001 From: Mathew Cleveland Date: Fri, 25 Apr 2025 09:37:26 -0600 Subject: [PATCH 263/317] draco: add v7.20.0 (#49996) Co-authored-by: Cleveland --- .../repos/builtin/packages/draco/package.py | 43 ++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/draco/package.py b/var/spack/repos/builtin/packages/draco/package.py index 6304b5bfd48..c550228e833 100644 --- a/var/spack/repos/builtin/packages/draco/package.py +++ b/var/spack/repos/builtin/packages/draco/package.py @@ -5,7 +5,7 @@ from spack.package import * -class Draco(CMakePackage): +class Draco(CMakePackage, CudaPackage, ROCmPackage): """Draco is an object-oriented component library geared towards numerically intensive, radiation (particle) transport applications built for parallel computing hardware. It consists of semi-independent packages and a robust @@ -19,6 +19,7 @@ class Draco(CMakePackage): license("BSD-3-Clause-Open-MPI") version("develop", branch="develop") + version("7.20.0", sha256="5b695f686c914dfac7cc144ffba37f24b1fb1e53058fbcb6df0ea94fe9971ea6") version("7.19.0", sha256="04b33cfea244052efcdd40d2b9dd79348749d34647aaf4dfcb15cdfdbe989783") version("7.18.0", sha256="b210e202a06ffdaf149193b5cba164411fd508e20e573e1dfc46d1f56e3fffaa") version("7.14.1", sha256="b05c75f1b8ea1d4fac4900d897fb1c948b470826b174ed8b97b32c6da9f030bf") @@ -44,6 +45,12 @@ class Draco(CMakePackage): version("6.20.1", sha256="b1c51000c9557e0818014713fce70d681869c50ed9c4548dcfb2e9219c354ebe") version("6.20.0", sha256="a6e3142c1c90b09c4ff8057bfee974369b815122b01d1f7b57888dcb9b1128f6") + variant( + "build_type", + default="Release", + description="CMake build type", + values=("Debug", "Release", "RelWithDebInfo", "MinSizeRel"), + ) variant("caliper", default=False, description="Enable caliper timers support") variant("cuda", default=False, description="Enable Cuda/GPU support") variant("eospac", default=True, description="Enable EOSPAC support") @@ -54,6 +61,9 @@ class Draco(CMakePackage): variant("pythontools", default=False, description="Enable support for extra python tools") variant("qt", default=False, description="Enable Qt support") variant("superlu-dist", default=True, description="Enable SuperLU-DIST support") + variant( + "openmp", default=True, when="@7.16.0:", description="Enable OpenMP support if available" + ) depends_on("cmake@3.9:", when="@:6", type="build") depends_on("cmake@3.11:", when="@7.0.0:7.1", type="build") @@ -71,7 +81,6 @@ class Draco(CMakePackage): # Optional dependencies depends_on("caliper", when="+caliper") - depends_on("cuda@11.0:", when="+cuda") depends_on("eospac@6.3:", when="+eospac") depends_on("lapack", when="+lapack") depends_on("libquo@1.3.1:", when="@7.4.0:+libquo") @@ -82,7 +91,13 @@ class Draco(CMakePackage): depends_on("superlu-dist@:5", when="@:7.6+superlu-dist") depends_on("py-matplotlib", when="+pythontools", type=("run")) + # Hardware-specific variants + depends_on("cuda@11.0:", when="+cuda") + conflicts("+cuda", when="@:7.6") + # HIP support existed pre-7.18, but was not exposed via Spack recipe: + conflicts("+rocm", when="@:7.18.0") + conflicts("+cuda", when="+rocm", msg="+cuda and +rocm cannot both be set") conflicts("+caliper", when="@:7.7") with when("@7.19.0:"): conflicts("gcc@:9.0") @@ -103,23 +118,41 @@ def url_for_version(self, version): return url.format(version.underscored) def cmake_args(self): + spec = self.spec options = [] options.extend( [ "-Wno-dev", self.define("BUILD_TESTING", self.run_tests), - "-DUSE_CUDA={0}".format("ON" if "+cuda" in self.spec else "OFF"), "-DUSE_QT={0}".format("ON" if "+qt" in self.spec else "OFF"), ] ) - if self.spec.satisfies("+fast_fma"): + # OpenMP toggle exposed via CMake for 7.16+ + if spec.satisfies("@7.16.0:"): + options.extend(["-DUSE_OPENMP={0}".format("ON" if "+openmp" in self.spec else "OFF")]) + # "rocm" variant introduced at 7.18 + if spec.satisfies("@7.18.0:"): + options.extend( + ["-DUSE_GPU={0}".format("ON" if ("+cuda" in spec) or ("+rocm" in spec) else "OFF")] + ) + elif spec.satisfies("@7.15.0:7.17.99"): + options.extend(["-DUSE_GPU={0}".format("ON" if "+cuda" in spec else "OFF")]) + else: + options.extend(["-DUSE_CUDA={0}".format("ON" if "+cuda" in spec else "OFF")]) + + # FMA option + if "+fast_fma" in self.spec: options.extend( [ "-DDRACO_ROUNDOFF_MODE={0}".format( - "FAST" if "build_type=Release" in self.spec else "ACCURATE" + "FAST" if "build_type=Release" in spec else "ACCURATE" ) ] ) + # OneAPI-specific logic + if spec.satisfies("%oneapi"): + # Known issues with oneapi+IPO for packages that depend on draco. + options.extend(["-DUSE_IPO=OFF"]) return options def check(self): From 66c1c213b18c77dc45d2d79c832f6189d1c7f3d1 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Sat, 26 Apr 2025 00:08:01 -0400 Subject: [PATCH 264/317] gcc: add v15.1.0 (#50212) --- var/spack/repos/builtin/packages/gcc/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index d89bd936ddf..42ff4ca8dfc 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -40,12 +40,12 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): version("master", branch="master") # Latest stable - version("14.2.0", sha256="a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9") + version("15.1.0", sha256="e2b09ec21660f01fecffb715e0120265216943f038d0e48a9868713e54f06cea") # Previous stable series releases - version("14.1.0", sha256="e283c654987afe3de9d8080bc0bd79534b5ca0d681a73a11ff2b5d3767426840") # Final releases of previous versions + version("14.2.0", sha256="a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9") version("13.3.0", sha256="0845e9621c9543a13f484e94584a49ffc0129970e9914624235fc1d061a0c083") version("12.4.0", sha256="704f652604ccbccb14bdabf3478c9511c89788b12cb3bbffded37341916a9175") version("11.5.0", sha256="a6e21868ead545cf87f0c01f84276e4b5281d672098591c1c896241f09363478") @@ -63,6 +63,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): # Deprecated older non-final releases with default_args(deprecated=True): + version( + "14.1.0", sha256="e283c654987afe3de9d8080bc0bd79534b5ca0d681a73a11ff2b5d3767426840" + ) + version( "13.2.0", sha256="e275e76442a6067341a27f04c5c6b83d8613144004c0413528863dc6b5c743da" ) From 3f8d5fed393b35d129b03f092ea9cb6b857b634c Mon Sep 17 00:00:00 2001 From: Jie Xu <361685640@qq.com> Date: Sat, 26 Apr 2025 13:23:22 +0800 Subject: [PATCH 265/317] mesa: add v23.3.3 and use py-packaging while python>=3.12 (#49121) * mesa: add v23.3.3 and use py-packaging while python>=3.12 * miss mako>=0.8 * use py-packaging when python3.12+ Co-authored-by: Veselin Dobrev * remove python depneds_on for differnent mesa version * mesa require python3.6+ for build * Update var/spack/repos/builtin/packages/mesa/package.py --------- Co-authored-by: Veselin Dobrev --- var/spack/repos/builtin/packages/mesa/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 38ffc3f1184..7aaeaa7ddec 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -26,6 +26,7 @@ class Mesa(MesonPackage): sha256="cd3d6c60121dea73abbae99d399dc2facaecde1a8c6bd647e6d85410ff4b577b", preferred=True, ) + version("23.3.3", sha256="518307c0057fa3cee8b58df78be431d4df5aafa7edc60d09278b2d7a0a80f3b4") version("23.2.1", sha256="64de0616fc2d801f929ab1ac2a4f16b3e2783c4309a724c8a259b20df8bbc1cc") version("23.1.9", sha256="295ba27c28146ed09214e8ce79afa1659edf9d142decc3c91f804552d64f7510") version("23.0.3", sha256="386362a5d80df3b096636b67f340e1ce67b705b44767d5bdd11d2ed1037192d5") @@ -61,8 +62,9 @@ class Mesa(MesonPackage): depends_on("cmake", type="build") depends_on("flex", type="build") depends_on("gettext", type="build") - # Upperbound on 3.11 because distutils is used for checking py-mako - depends_on("python@3:3.11", type="build") + depends_on("python", type="build") + depends_on("python@:3.11", when="@:23.2", type="build") + depends_on("py-packaging", type="build", when="^python@3.12:") depends_on("py-mako@0.8.0:", type="build") depends_on("unwind") depends_on("expat") From 4c50915d81998fc343f24954188787d717422291 Mon Sep 17 00:00:00 2001 From: Tahmid Khan <60913202+ta7mid@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:09:52 +0600 Subject: [PATCH 266/317] crow: new package (#50009) Co-authored-by: Tahmid A. Khan <60913202+tahmid-khan@users.noreply.github.com> --- .../repos/builtin/packages/crow/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/crow/package.py diff --git a/var/spack/repos/builtin/packages/crow/package.py b/var/spack/repos/builtin/packages/crow/package.py new file mode 100644 index 00000000000..ca3da81fac6 --- /dev/null +++ b/var/spack/repos/builtin/packages/crow/package.py @@ -0,0 +1,53 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Crow(CMakePackage): + """Crow is a C++ microframework for creating HTTP and WebSocket services. It uses routing + similar to Python's Flask, which makes it easy to use. It is also extremely fast, beating + many other C++ and non-C++ web frameworks.""" + + homepage = "https://crowcpp.org" + url = "https://github.com/CrowCpp/Crow/archive/refs/tags/v1.2.1.2.tar.gz" + + maintainers("ta7mid") + + license("BSD-3-Clause") + + version("1.2.1.2", sha256="dc008515f64c9054250909a16bf0d9173af845d2c6d4e49ed6d3f0f32dfdc747") + version("1.2.0", sha256="c80d0b23c6a20f8aa6fe776669dc8a9fb984046891d2f70bfc0539d16998164b") + + variant( + "asio", + default="standalone", + description="Asio variant to use: the non-boost Asio or Boost.Asio", + values=("standalone", "boost"), + ) + variant( + "ssl", + default=False, + description="Enable support for HTTPS and encrypted WebSocket connections using OpenSSL", + ) + variant( + "compression", default=False, description="Enable support for HTTP compression using zlib" + ) + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("asio", when="asio=standalone") + depends_on("boost+system+date_time", when="asio=boost") + depends_on("openssl", when="+ssl") + depends_on("zlib", when="+compression") + + def cmake_args(self): + return [ + self.define("CROW_BUILD_EXAMPLES", False), + self.define("CROW_BUILD_TESTS", False), + self.define("CROW_USE_BOOST", self.spec.satisfies("asio=boost")), + self.define_from_variant("CROW_ENABLE_SSL", "ssl"), + self.define_from_variant("CROW_ENABLE_COMPRESSION", "compression"), + ] From 2d42675035fd99c3224d8ecce922b3b6d7ba31c3 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 28 Apr 2025 00:10:49 -0600 Subject: [PATCH 267/317] llvm: add v20.1.1, v20.1.2, v20.1.3 (#50219) --- var/spack/repos/builtin/packages/llvm/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 352ce0e58d0..fc7fe754ee8 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -55,6 +55,9 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): version("main", branch="main") # Latest stable + version("20.1.3", sha256="b40c0d185b98c2ee3c0cb2f14cde65a06008b33dfb471cc7ad868f8ca3f7f897") + version("20.1.2", sha256="9ee597456405ddf4809bcf66a4765137a68a85361347ca2a4bb13d9176e932ab") + version("20.1.1", sha256="edde69aa3e48a3892a8f01332ff79cfb6179151b42503c4ba77d2cd408b013bf") version("20.1.0", sha256="08bc382733777dda3c96259e3732ff96c1df98d0470c4f85b163274eae687f4f") # Previous stable series releases From 70407e8970833423a9b12c3380c1d346f3704fec Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 28 Apr 2025 00:18:10 -0600 Subject: [PATCH 268/317] lua-sol2: add missing cmake constraint (#50218) --- var/spack/repos/builtin/packages/lua-sol2/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/lua-sol2/package.py b/var/spack/repos/builtin/packages/lua-sol2/package.py index daa843a2e2d..36988ed9f1a 100644 --- a/var/spack/repos/builtin/packages/lua-sol2/package.py +++ b/var/spack/repos/builtin/packages/lua-sol2/package.py @@ -29,6 +29,8 @@ class LuaSol2(CMakePackage): depends_on("c", type="build") depends_on("cxx", type="build") + depends_on("cmake@3.26.0:", when="@3.5.0:", type="build") + # Lua is not needed when building, since sol2 is headers-only depends_on("lua", type=("link", "run")) From 742d313ba8209dc585b313e8c062dc03aae646c7 Mon Sep 17 00:00:00 2001 From: Caetano Melone Date: Sun, 27 Apr 2025 23:25:36 -0700 Subject: [PATCH 269/317] Update E4S package tags (#50173) Most E4S packages had the "e4s" tag in their recipes; this adds it to the rest. list: https://e4s.io/DocPortal.html --- var/spack/repos/builtin/packages/alquimia/package.py | 2 ++ var/spack/repos/builtin/packages/amdscalapack/package.py | 2 ++ var/spack/repos/builtin/packages/axom/package.py | 2 +- var/spack/repos/builtin/packages/bricks/package.py | 2 ++ var/spack/repos/builtin/packages/butterflypack/package.py | 2 ++ var/spack/repos/builtin/packages/cp2k/package.py | 2 ++ var/spack/repos/builtin/packages/dealii/package.py | 2 ++ var/spack/repos/builtin/packages/fpchecker/package.py | 2 ++ var/spack/repos/builtin/packages/glvis/package.py | 2 +- var/spack/repos/builtin/packages/gptune/package.py | 2 ++ var/spack/repos/builtin/packages/hdf5-vol-cache/package.py | 2 ++ var/spack/repos/builtin/packages/hdf5-vol-daos/package.py | 2 ++ var/spack/repos/builtin/packages/hdf5-vol-log/package.py | 2 ++ var/spack/repos/builtin/packages/hpc-beeflow/package.py | 2 ++ var/spack/repos/builtin/packages/laghos/package.py | 2 +- var/spack/repos/builtin/packages/lammps/package.py | 2 +- var/spack/repos/builtin/packages/lbann/package.py | 2 +- var/spack/repos/builtin/packages/libunwind/package.py | 2 ++ var/spack/repos/builtin/packages/minigan/package.py | 2 ++ var/spack/repos/builtin/packages/msr-safe/package.py | 2 ++ var/spack/repos/builtin/packages/nccmp/package.py | 2 ++ var/spack/repos/builtin/packages/nco/package.py | 2 ++ var/spack/repos/builtin/packages/nek5000/package.py | 1 + var/spack/repos/builtin/packages/nekbone/package.py | 2 +- var/spack/repos/builtin/packages/netcdf-fortran/package.py | 2 ++ var/spack/repos/builtin/packages/ninja/package.py | 2 +- var/spack/repos/builtin/packages/nvpl-scalapack/package.py | 2 ++ var/spack/repos/builtin/packages/nwchem/package.py | 2 +- var/spack/repos/builtin/packages/opencv/package.py | 2 ++ var/spack/repos/builtin/packages/plumed/package.py | 2 ++ var/spack/repos/builtin/packages/pruners-ninja/package.py | 2 ++ var/spack/repos/builtin/packages/py-cinema-lib/package.py | 2 ++ var/spack/repos/builtin/packages/py-darshan/package.py | 2 ++ var/spack/repos/builtin/packages/py-deephyper/package.py | 2 ++ var/spack/repos/builtin/packages/py-horovod/package.py | 2 ++ var/spack/repos/builtin/packages/py-jax/package.py | 2 ++ var/spack/repos/builtin/packages/py-keras/package.py | 1 + var/spack/repos/builtin/packages/py-openai/package.py | 2 ++ var/spack/repos/builtin/packages/py-pandas/package.py | 2 ++ var/spack/repos/builtin/packages/py-scikit-learn/package.py | 2 ++ var/spack/repos/builtin/packages/py-tensorflow/package.py | 1 + var/spack/repos/builtin/packages/py-torch/package.py | 2 ++ var/spack/repos/builtin/packages/scorec-core/package.py | 2 ++ var/spack/repos/builtin/packages/sicm/package.py | 2 ++ var/spack/repos/builtin/packages/sollve/package.py | 2 ++ var/spack/repos/builtin/packages/spack/package.py | 2 ++ var/spack/repos/builtin/packages/stat/package.py | 2 ++ var/spack/repos/builtin/packages/variorum/package.py | 2 ++ var/spack/repos/builtin/packages/visit/package.py | 2 +- var/spack/repos/builtin/packages/wannier90/package.py | 2 ++ var/spack/repos/builtin/packages/xbraid/package.py | 2 +- var/spack/repos/builtin/packages/xyce/package.py | 2 ++ 52 files changed, 91 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/alquimia/package.py b/var/spack/repos/builtin/packages/alquimia/package.py index db6adf27041..1f1b5270cc7 100644 --- a/var/spack/repos/builtin/packages/alquimia/package.py +++ b/var/spack/repos/builtin/packages/alquimia/package.py @@ -14,6 +14,8 @@ class Alquimia(CMakePackage): maintainers("smolins", "balay") + tags = ["e4s"] + license("BSD-3-Clause-LBNL") version("master") diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py index 5dc17d370e3..af55e448411 100644 --- a/var/spack/repos/builtin/packages/amdscalapack/package.py +++ b/var/spack/repos/builtin/packages/amdscalapack/package.py @@ -29,6 +29,8 @@ class Amdscalapack(ScalapackBase): maintainers("amd-toolchain-support") + tags = ["e4s"] + license("BSD-3-Clause-Open-MPI") version( "5.0", diff --git a/var/spack/repos/builtin/packages/axom/package.py b/var/spack/repos/builtin/packages/axom/package.py index 45da799a943..157de9d30cc 100644 --- a/var/spack/repos/builtin/packages/axom/package.py +++ b/var/spack/repos/builtin/packages/axom/package.py @@ -36,7 +36,7 @@ class Axom(CachedCMakePackage, CudaPackage, ROCmPackage): homepage = "https://github.com/LLNL/axom" git = "https://github.com/LLNL/axom.git" - tags = ["radiuss"] + tags = ["radiuss", "e4s"] test_requires_compiler = True diff --git a/var/spack/repos/builtin/packages/bricks/package.py b/var/spack/repos/builtin/packages/bricks/package.py index 5395c1d4280..d05aacc77f1 100644 --- a/var/spack/repos/builtin/packages/bricks/package.py +++ b/var/spack/repos/builtin/packages/bricks/package.py @@ -21,6 +21,8 @@ class Bricks(CMakePackage): # List of GitHub accounts to notify when the package is updated. maintainers("ztuowen", "drhansj") + tags = ["e4s"] + license("MIT") version("r0.1", branch="r0.1") diff --git a/var/spack/repos/builtin/packages/butterflypack/package.py b/var/spack/repos/builtin/packages/butterflypack/package.py index 2be34f04756..613eeb4d721 100644 --- a/var/spack/repos/builtin/packages/butterflypack/package.py +++ b/var/spack/repos/builtin/packages/butterflypack/package.py @@ -24,6 +24,8 @@ class Butterflypack(CMakePackage): url = "https://github.com/liuyangzhuan/ButterflyPACK/archive/v2.2.0.tar.gz" maintainers("liuyangzhuan") + tags = ["e4s"] + license("BSD-3-Clause-LBNL") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index d3c41c9ba8a..0c489061594 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -40,6 +40,8 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): maintainers("dev-zero", "mtaillefumier", "RMeli", "abussy") + tags = ["e4s"] + license("GPL-2.0-or-later") version("2025.1", sha256="65c8ad5488897b0f995919b9fa77f2aba4b61677ba1e3c19bb093d5c08a8ce1d") diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 5e68acb860c..f440c4db0cc 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -18,6 +18,8 @@ class Dealii(CMakePackage, CudaPackage): maintainers("jppelteret", "luca-heltai") + tags = ["e4s"] + # Don't add RPATHs to this package for the full build DAG. # only add for immediate deps. transitive_rpaths = False diff --git a/var/spack/repos/builtin/packages/fpchecker/package.py b/var/spack/repos/builtin/packages/fpchecker/package.py index c19106c0ba6..27bed9003e3 100644 --- a/var/spack/repos/builtin/packages/fpchecker/package.py +++ b/var/spack/repos/builtin/packages/fpchecker/package.py @@ -17,6 +17,8 @@ class Fpchecker(CMakePackage): maintainers("ilagunap") + tags = ["e4s"] + license("Apache-2.0") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/glvis/package.py b/var/spack/repos/builtin/packages/glvis/package.py index 42b43229530..5ddad45b8c4 100644 --- a/var/spack/repos/builtin/packages/glvis/package.py +++ b/var/spack/repos/builtin/packages/glvis/package.py @@ -13,7 +13,7 @@ class Glvis(MakefilePackage): homepage = "https://glvis.org" git = "https://github.com/glvis/glvis.git" - tags = ["radiuss"] + tags = ["radiuss", "e4s"] maintainers("v-dobrev", "tzanio", "tomstitt", "goxberry") diff --git a/var/spack/repos/builtin/packages/gptune/package.py b/var/spack/repos/builtin/packages/gptune/package.py index c0671e6a58a..8864255aad7 100644 --- a/var/spack/repos/builtin/packages/gptune/package.py +++ b/var/spack/repos/builtin/packages/gptune/package.py @@ -24,6 +24,8 @@ class Gptune(CMakePackage): git = "https://github.com/gptune/GPTune.git" maintainers("liuyangzhuan") + tags = ["e4s"] + license("BSD-3-Clause-LBNL") version("master", branch="master") 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 b8f724aa8a6..149a6c28f05 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-cache/package.py @@ -12,6 +12,8 @@ class Hdf5VolCache(CMakePackage): maintainers("hyoklee", "lrknox") + tags = ["e4s"] + license("BSD-3-Clause") version("default", branch="develop") diff --git a/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py b/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py index be8ea50bdb6..137284ecc9c 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-daos/package.py @@ -16,6 +16,8 @@ class Hdf5VolDaos(CMakePackage): maintainers("hyoklee", "soumagne") + tags = ["e4s"] + license("BSD-3-Clause") version("master", branch="master", submodules=True) diff --git a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py index a32a433af44..c7fc3df1f41 100644 --- a/var/spack/repos/builtin/packages/hdf5-vol-log/package.py +++ b/var/spack/repos/builtin/packages/hdf5-vol-log/package.py @@ -14,6 +14,8 @@ class Hdf5VolLog(AutotoolsPackage): git = "https://github.com/DataLib-ECP/vol-log-based.git" maintainers("hyoklee", "lrknox") + tags = ["e4s"] + version("master-1.1", branch="master") version("1.4.0", tag="logvol.1.4.0", commit="786d2cc4da8b4a0827ee00b1b0ab3968ef942f99") diff --git a/var/spack/repos/builtin/packages/hpc-beeflow/package.py b/var/spack/repos/builtin/packages/hpc-beeflow/package.py index 8e822a86f28..e4e9b48a0a0 100644 --- a/var/spack/repos/builtin/packages/hpc-beeflow/package.py +++ b/var/spack/repos/builtin/packages/hpc-beeflow/package.py @@ -21,6 +21,8 @@ class HpcBeeflow(PythonPackage): maintainers("pagrubel") + tags = ["e4s"] + license("MIT") version("0.1.10", sha256="b7863798e15591a16f6cd265f9b5b7385779630f1c37d8a2a5178b8bf89fc664") diff --git a/var/spack/repos/builtin/packages/laghos/package.py b/var/spack/repos/builtin/packages/laghos/package.py index ab23dfb560d..38e3c4d7352 100644 --- a/var/spack/repos/builtin/packages/laghos/package.py +++ b/var/spack/repos/builtin/packages/laghos/package.py @@ -12,7 +12,7 @@ class Laghos(MakefilePackage): discretization and explicit high-order time-stepping. """ - tags = ["proxy-app", "ecp-proxy-app"] + tags = ["proxy-app", "ecp-proxy-app", "e4s"] homepage = "https://computing.llnl.gov/projects/co-design/laghos" url = "https://github.com/CEED/Laghos/archive/v1.0.tar.gz" diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index c191f608d09..56c689bafa3 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -18,7 +18,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): url = "https://github.com/lammps/lammps/archive/patch_1Sep2017.tar.gz" git = "https://github.com/lammps/lammps.git" - tags = ["ecp", "ecp-apps"] + tags = ["ecp", "ecp-apps", "e4s"] maintainers("rbberger") diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index fcef5a17032..9114a1f4363 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -18,7 +18,7 @@ class Lbann(CachedCMakePackage, CudaPackage, ROCmPackage): homepage = "https://software.llnl.gov/lbann/" url = "https://github.com/LLNL/lbann/archive/v0.91.tar.gz" git = "https://github.com/LLNL/lbann.git" - tags = ["ecp", "radiuss"] + tags = ["ecp", "radiuss", "e4s"] maintainers("bvanessen") diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 081f649a997..5b52e93b57f 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -14,6 +14,8 @@ class Libunwind(AutotoolsPackage): git = "https://github.com/libunwind/libunwind" maintainers("mwkrentel") + tags = ["e4s"] + license("MIT") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/minigan/package.py b/var/spack/repos/builtin/packages/minigan/package.py index bdb0fcf47b0..3205194f260 100644 --- a/var/spack/repos/builtin/packages/minigan/package.py +++ b/var/spack/repos/builtin/packages/minigan/package.py @@ -15,6 +15,8 @@ class Minigan(Package): license("BSD-3-Clause") + tags = ["proxy-app"] + version("1.0.0", sha256="ef6d5def9c7040af520acc64b7a8b6c8ec4b7901721b11b0cb25a583ea0c8ae3") depends_on("python", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/msr-safe/package.py b/var/spack/repos/builtin/packages/msr-safe/package.py index a9a6b24c2ae..cf989bcf605 100644 --- a/var/spack/repos/builtin/packages/msr-safe/package.py +++ b/var/spack/repos/builtin/packages/msr-safe/package.py @@ -17,6 +17,8 @@ class MsrSafe(MakefilePackage): maintainers("kyotsukete", "rountree") + tags = ["e4s"] + license("GPL-2.0-only", checked_by="kyotsukete") variant( diff --git a/var/spack/repos/builtin/packages/nccmp/package.py b/var/spack/repos/builtin/packages/nccmp/package.py index d4a7a0ed837..d4f90f2d583 100644 --- a/var/spack/repos/builtin/packages/nccmp/package.py +++ b/var/spack/repos/builtin/packages/nccmp/package.py @@ -13,6 +13,8 @@ class Nccmp(CMakePackage): maintainers("ulmononian", "climbfuji") + tags = ["e4s"] + license("GPL-2.0-only") version("1.9.1.0", sha256="5aa8d6cbc54d26f77e3d0511690cfafa57514a4145f75e8cabce782126509c91") diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 24814b03c8f..43129b6e6e1 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -14,6 +14,8 @@ class Nco(AutotoolsPackage): maintainers("altheaden", "xylar") + tags = ["e4s"] + license("BSD-3-Clause") version("5.3.3", sha256="f9185e115e246fe884dcae0804146b56df7257f53de7ba190fea66977ccd5a64") diff --git a/var/spack/repos/builtin/packages/nek5000/package.py b/var/spack/repos/builtin/packages/nek5000/package.py index 565efc89b57..e9b07efc00d 100644 --- a/var/spack/repos/builtin/packages/nek5000/package.py +++ b/var/spack/repos/builtin/packages/nek5000/package.py @@ -26,6 +26,7 @@ class Nek5000(Package): "fluid", "ecp", "ecp-apps", + "e4s", ] version("develop", branch="master") diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py index 500cec7c6fa..324e095dc49 100644 --- a/var/spack/repos/builtin/packages/nekbone/package.py +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -14,7 +14,7 @@ class Nekbone(Package): homepage = "https://github.com/Nek5000/Nekbone" git = "https://github.com/Nek5000/Nekbone.git" - tags = ["proxy-app", "ecp-proxy-app"] + tags = ["proxy-app", "ecp-proxy-app", "e4s"] license("mpich2") diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index 12e90d6dc37..0db32736948 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -20,6 +20,8 @@ class NetcdfFortran(AutotoolsPackage): maintainers("skosukhin", "WardF") + tags = ["e4s"] + license("Apache-2.0") version("4.6.1", sha256="b50b0c72b8b16b140201a020936aa8aeda5c79cf265c55160986cd637807a37a") diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 0396f3494eb..642082f85cb 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -16,7 +16,7 @@ class Ninja(Package): url = "https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz" git = "https://github.com/ninja-build/ninja.git" - tags = ["build-tools", "e4s", "windows"] + tags = ["build-tools", "windows"] executables = ["^ninja$"] diff --git a/var/spack/repos/builtin/packages/nvpl-scalapack/package.py b/var/spack/repos/builtin/packages/nvpl-scalapack/package.py index 04cbeda7850..09c8b4cb44c 100644 --- a/var/spack/repos/builtin/packages/nvpl-scalapack/package.py +++ b/var/spack/repos/builtin/packages/nvpl-scalapack/package.py @@ -16,6 +16,8 @@ class NvplScalapack(Package): maintainers("RMeli") + tags = ["e4s"] + version("0.2.1", sha256="dada4d1ecf044d90609b9e62750b383d11be9b22c87e109414bcc07dce3c83c9") provides("scalapack") diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 0191d4bb52f..08edf8c4eb3 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -15,7 +15,7 @@ class Nwchem(Package): url = "https://github.com/nwchemgit/nwchem/releases/download/v7.2.0-release/nwchem-7.2.0-release.revision-d0d141fd-srconly.2023-03-10.tar.bz2" git = "https://github.com/nwchemgit/nwchem.git" - tags = ["ecp", "ecp-apps"] + tags = ["ecp", "ecp-apps", "e4s"] maintainers("jeffhammond") diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 396dabcbb67..3a50992e1b4 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -18,6 +18,8 @@ class Opencv(CMakePackage, CudaPackage): maintainers("bvanessen", "adamjstewart") + tags = ["e4s"] + license("BSD-3-Clause") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 5cf71dc6a00..e58e98b83b2 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -27,6 +27,8 @@ class Plumed(AutotoolsPackage): git = "https://github.com/plumed/plumed2.git" maintainers("marcodelapierre") + tags = ["e4s"] + license("LGPL-3.0-or-later") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/pruners-ninja/package.py b/var/spack/repos/builtin/packages/pruners-ninja/package.py index d52a9dd02fb..bff2e12aa28 100644 --- a/var/spack/repos/builtin/packages/pruners-ninja/package.py +++ b/var/spack/repos/builtin/packages/pruners-ninja/package.py @@ -13,6 +13,8 @@ class PrunersNinja(AutotoolsPackage): url = "https://github.com/PRUNERS/NINJA/releases/download/v1.0.0/NINJA-1.0.0.tar.gz" git = "https://github.com/PRUNERS/NINJA.git" + tags = ["e4s"] + license("GPL-3.0-or-later") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/py-cinema-lib/package.py b/var/spack/repos/builtin/packages/py-cinema-lib/package.py index e2e8486f239..4ef94b02a63 100644 --- a/var/spack/repos/builtin/packages/py-cinema-lib/package.py +++ b/var/spack/repos/builtin/packages/py-cinema-lib/package.py @@ -14,6 +14,8 @@ class PyCinemaLib(PythonPackage): url = "https://github.com/cinemascience/cinema_lib/archive/1.2.1.tar.gz" git = "https://github.com/cinemascience/cinema_lib.git" + tags = ["e4s"] + maintainers("EthanS94") version("master", branch="master") diff --git a/var/spack/repos/builtin/packages/py-darshan/package.py b/var/spack/repos/builtin/packages/py-darshan/package.py index c81d47c2672..436dc32b5a6 100644 --- a/var/spack/repos/builtin/packages/py-darshan/package.py +++ b/var/spack/repos/builtin/packages/py-darshan/package.py @@ -13,6 +13,8 @@ class PyDarshan(PythonPackage): maintainers("jeanbez", "shanedsnyder") + tags = ["e4s"] + # 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") diff --git a/var/spack/repos/builtin/packages/py-deephyper/package.py b/var/spack/repos/builtin/packages/py-deephyper/package.py index adba194eb0a..995730788f6 100644 --- a/var/spack/repos/builtin/packages/py-deephyper/package.py +++ b/var/spack/repos/builtin/packages/py-deephyper/package.py @@ -16,6 +16,8 @@ class PyDeephyper(PythonPackage): maintainers("mdorier", "Deathn0t", "bretteiffert") + tags = ["e4s"] + license("BSD-3-Clause") # Versions diff --git a/var/spack/repos/builtin/packages/py-horovod/package.py b/var/spack/repos/builtin/packages/py-horovod/package.py index 0f79bfb6e5d..f28516eb970 100644 --- a/var/spack/repos/builtin/packages/py-horovod/package.py +++ b/var/spack/repos/builtin/packages/py-horovod/package.py @@ -17,6 +17,8 @@ class PyHorovod(PythonPackage, CudaPackage): license("Apache-2.0") maintainers("adamjstewart", "aweits", "tgaddair", "thomas-bouvier") + tags = ["e4s"] + version("master", branch="master") version("0.28.1", tag="v0.28.1", commit="1d217b59949986d025f6db93c49943fb6b6cc78f") version("0.28.0", tag="v0.28.0", commit="587d72004736209a93ebda8cec0acdb7870db583") diff --git a/var/spack/repos/builtin/packages/py-jax/package.py b/var/spack/repos/builtin/packages/py-jax/package.py index a09afc11792..97993201699 100644 --- a/var/spack/repos/builtin/packages/py-jax/package.py +++ b/var/spack/repos/builtin/packages/py-jax/package.py @@ -19,6 +19,8 @@ class PyJax(PythonPackage): license("Apache-2.0") maintainers("adamjstewart", "jonas-eschle") + tags = ["e4s"] + # version("0.5.0", sha256="49df70bf293a345a7fb519f71193506d37a024c4f850b358042eb32d502c81c8") version("0.4.38", sha256="43bae65881628319e0a2148e8f81a202fbc2b8d048e35c7cb1df2416672fa4a8") version("0.4.37", sha256="7774f3d9e23fe199c65589c680c5a5be87a183b89598421a632d8245222b637b") diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index e937ab122ef..a2395076631 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -20,6 +20,7 @@ class PyKeras(PythonPackage): pypi = "keras/keras-3.0.0.tar.gz" maintainers("adamjstewart") + tags = ["e4s"] license("Apache-2.0") version("3.9.2", sha256="322aab6418ee3de1e2bd0871b60a07f0e444e744a7e8cba79af8b42408879ecf") diff --git a/var/spack/repos/builtin/packages/py-openai/package.py b/var/spack/repos/builtin/packages/py-openai/package.py index 4e55b93e8bf..1dae93dd82e 100644 --- a/var/spack/repos/builtin/packages/py-openai/package.py +++ b/var/spack/repos/builtin/packages/py-openai/package.py @@ -15,6 +15,8 @@ class PyOpenai(PythonPackage): homepage = "https://github.com/openai/openai-python" pypi = "openai/openai-0.27.8.tar.gz" + tags = ["e4s"] + license("MIT") version("0.27.8", sha256="2483095c7db1eee274cebac79e315a986c4e55207bb4fa7b82d185b3a2ed9536") diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 4d78ee0a465..07b5492d304 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -19,6 +19,8 @@ class PyPandas(PythonPackage): license("Apache-2.0") maintainers("adamjstewart", "rgommers") + tags = ["e4s"] + version("2.2.3", sha256="4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667") version("2.2.2", sha256="9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54") version("2.2.1", sha256="0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572") 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 cda7e050659..44d6fc90140 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -16,6 +16,8 @@ class PyScikitLearn(PythonPackage): license("BSD-3-Clause") maintainers("adamjstewart", "rgommers") + tags = ["e4s"] + version("main", branch="main") version("master", branch="main", deprecated=True) version("1.6.1", sha256="b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e") diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 274fe2352c7..71ddb3ba41c 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -44,6 +44,7 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): license("Apache-2.0") maintainers("adamjstewart", "aweits") + tags = ["e4s"] version( "2.18.0-rocm-enhanced", diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index b1a2c32a75f..3d4237ab661 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -23,6 +23,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") maintainers("adamjstewart") + tags = ["e4s"] + version("main", branch="main") version("2.6.0", tag="v2.6.0", commit="1eba9b3aa3c43f86f4a2c807ac8e12c4a7767340") version("2.5.1", tag="v2.5.1", commit="a8d6afb511a69687bbb2b7e88a3cf67917e1697e") diff --git a/var/spack/repos/builtin/packages/scorec-core/package.py b/var/spack/repos/builtin/packages/scorec-core/package.py index 07cdda03b74..70e616718cb 100644 --- a/var/spack/repos/builtin/packages/scorec-core/package.py +++ b/var/spack/repos/builtin/packages/scorec-core/package.py @@ -13,6 +13,8 @@ class ScorecCore(CMakePackage): homepage = "https://www.scorec.rpi.edu/" git = "https://github.com/SCOREC/core.git" + tags = ["e4s"] + license("BSD-3-Clause") version("develop") diff --git a/var/spack/repos/builtin/packages/sicm/package.py b/var/spack/repos/builtin/packages/sicm/package.py index b77c1217ada..e1aa971605f 100644 --- a/var/spack/repos/builtin/packages/sicm/package.py +++ b/var/spack/repos/builtin/packages/sicm/package.py @@ -11,6 +11,8 @@ class Sicm(CMakePackage): homepage = "https://github.com/lanl/SICM/" git = "https://github.com/lanl/SICM.git" + tags = ["e4s"] + license("BSD-2-Clause") version("master") diff --git a/var/spack/repos/builtin/packages/sollve/package.py b/var/spack/repos/builtin/packages/sollve/package.py index cc16f0dd336..578704e60ad 100644 --- a/var/spack/repos/builtin/packages/sollve/package.py +++ b/var/spack/repos/builtin/packages/sollve/package.py @@ -15,6 +15,8 @@ class Sollve(CMakePackage): homepage = "https://www.bnl.gov/compsci/projects/SOLLVE/" git = "https://github.com/SOLLVE/llvm.git" + tags = ["e4s"] + # NOTE: The debug version of LLVM is an order of magnitude larger than # the release version, and may take up 20-30 GB of space. If you want # to save space, build with `build_type=Release`. diff --git a/var/spack/repos/builtin/packages/spack/package.py b/var/spack/repos/builtin/packages/spack/package.py index 98f62854c99..6993bceeec7 100644 --- a/var/spack/repos/builtin/packages/spack/package.py +++ b/var/spack/repos/builtin/packages/spack/package.py @@ -20,6 +20,8 @@ class Spack(Package): url = "https://github.com/spack/spack/releases/download/v0.16.2/spack-0.16.2.tar.gz" maintainers("haampie") + tags = ["e4s"] + license("Apache-2.0 OR MIT") version("develop", branch="develop") diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 2898b72834d..248ad34a395 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -14,6 +14,8 @@ class Stat(AutotoolsPackage): git = "https://github.com/llnl/stat.git" maintainers("lee218llnl") + tags = ["e4s"] + version("develop", branch="develop") version( "4.2.1", diff --git a/var/spack/repos/builtin/packages/variorum/package.py b/var/spack/repos/builtin/packages/variorum/package.py index 7649bad47fb..744de69db66 100644 --- a/var/spack/repos/builtin/packages/variorum/package.py +++ b/var/spack/repos/builtin/packages/variorum/package.py @@ -16,6 +16,8 @@ class Variorum(CMakePackage): maintainers("slabasan", "rountree") + tags = ["e4s"] + license("MIT") version("dev", branch="dev") diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index c3a5592a963..c2b8535067e 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -49,7 +49,7 @@ class Visit(CMakePackage): git = "https://github.com/visit-dav/visit.git" url = "https://github.com/visit-dav/visit/releases/download/v3.2.1/visit3.2.1.tar.gz" - tags = ["radiuss"] + tags = ["radiuss", "e4s"] maintainers("cyrush") license("BSD-3-Clause") diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index 980e95ab289..fb15741b9d3 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -19,6 +19,8 @@ class Wannier90(MakefilePackage): license("GPL-2.0-or-later") + tags = ["e4s"] + version("develop", branch="develop") version("3.1.0", sha256="40651a9832eb93dec20a8360dd535262c261c34e13c41b6755fa6915c936b254") version("3.0.0", sha256="f196e441dcd7b67159a1d09d2d7de2893b011a9f03aab6b30c4703ecbf20fe5b") diff --git a/var/spack/repos/builtin/packages/xbraid/package.py b/var/spack/repos/builtin/packages/xbraid/package.py index 73edaf2a95c..74528fac7ab 100644 --- a/var/spack/repos/builtin/packages/xbraid/package.py +++ b/var/spack/repos/builtin/packages/xbraid/package.py @@ -10,7 +10,7 @@ class Xbraid(MakefilePackage): homepage = "https://computing.llnl.gov/projects/parallel-time-integration-multigrid/software" url = "https://github.com/XBraid/xbraid/archive/v2.2.0.tar.gz" - tags = ["radiuss"] + tags = ["radiuss", "e4s"] version("3.1.0", sha256="3419b22918c65555e8c552b70a0837a251a74c471dac8e4a7b2272bf7d955c88") version("3.0.0", sha256="06988c0599cd100d3b3f3ebb183c9ad34a4021922e0896815cbedc659aaadce6") diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py index 346b1df8ba5..1b6c783e791 100644 --- a/var/spack/repos/builtin/packages/xyce/package.py +++ b/var/spack/repos/builtin/packages/xyce/package.py @@ -28,6 +28,8 @@ class Xyce(CMakePackage): url = "https://github.com/Xyce/Xyce/archive/Release-7.2.0.tar.gz" maintainers("kuberry", "tbird2001") + tags = ["e4s"] + license("GPL-3.0-or-later") version("master", branch="master") From 8d4ea9dbd33771259eb8411188f631aedb4834d1 Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Mon, 28 Apr 2025 09:14:39 +0200 Subject: [PATCH 270/317] netcdf: fix up language dependencies (#50184) --- var/spack/repos/builtin/packages/netcdf-c/package.py | 3 +-- var/spack/repos/builtin/packages/netcdf-fortran/package.py | 4 ++-- var/spack/repos/builtin/packages/py-netcdf4/package.py | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py index 1963863da14..8d02077373c 100644 --- a/var/spack/repos/builtin/packages/netcdf-c/package.py +++ b/var/spack/repos/builtin/packages/netcdf-c/package.py @@ -138,8 +138,7 @@ class NetcdfC(CMakePackage, AutotoolsPackage): variant("blosc", default=True, description="Enable Blosc compression plugin") variant("zstd", default=True, description="Enable Zstandard compression plugin") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") with when("build_system=cmake"): # Based on the versions required by the root CMakeLists.txt: diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index 0db32736948..e3e0a55cc3d 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -37,8 +37,8 @@ class NetcdfFortran(AutotoolsPackage): variant("shared", default=True, description="Enable shared library") variant("doc", default=False, description="Enable building docs") - depends_on("c", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("fortran", type="build") depends_on("netcdf-c") depends_on("netcdf-c@4.7.4:", when="@4.5.3:") # nc_def_var_szip required diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py index 93953288947..3749b3ec139 100644 --- a/var/spack/repos/builtin/packages/py-netcdf4/package.py +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -27,6 +27,7 @@ class PyNetcdf4(PythonPackage): variant("mpi", default=True, description="Parallel IO support") + depends_on("c", type="build") depends_on("python", type=("build", "link", "run")) depends_on("python@3.8:", when="@1.7.1:", type=("build", "link", "run")) depends_on("py-cython@0.29:", when="@1.6.5:", type="build") From f3edc33a073e9e27b392d64c5662132070d6c891 Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:19:28 +0200 Subject: [PATCH 271/317] fastjet: add an optimization and warning flag when building (#49555) Co-authored-by: jmcarcell --- var/spack/repos/builtin/packages/fastjet/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/fastjet/package.py b/var/spack/repos/builtin/packages/fastjet/package.py index a9c55424735..b4d4cfbcc75 100644 --- a/var/spack/repos/builtin/packages/fastjet/package.py +++ b/var/spack/repos/builtin/packages/fastjet/package.py @@ -148,5 +148,5 @@ def configure_args(self): def flag_handler(self, name, flags): if name == "cxxflags": - flags.append(f"-std=c++{self.spec.variants['cxxstd'].value}") + flags.append(f"-O2 -Wall -std=c++{self.spec.variants['cxxstd'].value}") return (None, flags, None) From 1d379d96ab133cfcab5d20212aa803e6a51bf153 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 28 Apr 2025 03:20:30 -0400 Subject: [PATCH 272/317] g4emlow: remove bogus cxx requirement (#50209) --- var/spack/repos/builtin/packages/g4emlow/package.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py index 59d25630264..f96a86e1a77 100644 --- a/var/spack/repos/builtin/packages/g4emlow/package.py +++ b/var/spack/repos/builtin/packages/g4emlow/package.py @@ -31,8 +31,6 @@ class G4emlow(Package): version("6.50", sha256="c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236") version("6.35", sha256="1564045a0acad344c8d432cd48c2c3bb2e051a81ab3099a84e0f56ba0fe82cec") - depends_on("cxx", type="build") # generated - def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) install_path = join_path(prefix.share, "data", self.g4datasetname) From 7fba228cf3066f848e0e3540fcae5677556d5f69 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Mon, 28 Apr 2025 01:26:01 -0600 Subject: [PATCH 273/317] OpenMPI: patch release 5.0.7 for type mismatch (#50205) related to #50187 Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 7d56176af5e..bb3a9571d25 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -457,6 +457,12 @@ 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") + # OpenMPI 5.0.7 specific patch - see https://github.com/open-mpi/ompi/pull/13106 + patch( + "https://github.com/open-mpi/ompi/commit/d10e9765bdd28e62621395aef6bbb7710bae2e82.patch?full_index=1", + sha256="38529b557df029d6a987fa7e337db40b0ac1c1bb921776b95aacaa40e945cd21", + when="@5.0.7", + ) FABRICS = ( "psm", "psm2", From 3604e5bffc70f35150ff2ec58931350e4ef4289c Mon Sep 17 00:00:00 2001 From: Nicolas Morales Date: Mon, 28 Apr 2025 03:52:14 -0400 Subject: [PATCH 274/317] mdspan: add std header install option for stable (#50144) Co-authored-by: nmm0 --- var/spack/repos/builtin/packages/mdspan/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/mdspan/package.py b/var/spack/repos/builtin/packages/mdspan/package.py index d515a1f1fb4..166249f13c4 100644 --- a/var/spack/repos/builtin/packages/mdspan/package.py +++ b/var/spack/repos/builtin/packages/mdspan/package.py @@ -24,6 +24,12 @@ class Mdspan(CMakePackage): variant( "cxxstd", default="17", values=["14", "17", "20"], multi=False, description="C++ standard" ) + variant( + "stdheaders", + default=False, + when="@stable", + description="Whether to install headers to emulate standard library headers and namespace", + ) depends_on("benchmark", when="+benchmarks") depends_on("googletest@1.14:1", when="+tests") @@ -36,6 +42,7 @@ def cmake_args(self): self.define_from_variant("MDSPAN_ENABLE_EXAMPLES", "examples"), self.define_from_variant("MDSPAN_CXX_STANDARD", "cxxstd"), self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), + self.define_from_variant("MDSPAN_INSTALL_STDMODE_HEADERS", "stdheaders"), ] return args From f83beb09ba72ab29679ac19e019a320dd03968c1 Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Mon, 28 Apr 2025 10:06:58 +0200 Subject: [PATCH 275/317] py-typing-extensions: add v4.13.2 (#50149) --- .../repos/builtin/packages/py-typing-extensions/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-typing-extensions/package.py b/var/spack/repos/builtin/packages/py-typing-extensions/package.py index a4b785a1a2a..789ec735444 100644 --- a/var/spack/repos/builtin/packages/py-typing-extensions/package.py +++ b/var/spack/repos/builtin/packages/py-typing-extensions/package.py @@ -14,8 +14,9 @@ class PyTypingExtensions(PythonPackage): homepage = "https://github.com/python/typing_extensions" pypi = "typing_extensions/typing_extensions-3.7.4.tar.gz" - license("0BSD") + license("0BSD AND PSF-2.0") + version("4.13.2", sha256="e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef") version("4.12.2", sha256="1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8") version("4.8.0", sha256="df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef") version("4.6.3", sha256="d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5") @@ -33,6 +34,8 @@ class PyTypingExtensions(PythonPackage): depends_on("python@3.8:", when="@4.8:", type=("build", "run")) # Needed to ensure that Spack can bootstrap with Python 3.6 depends_on("python@3.7:", when="@4.2:", type=("build", "run")) + + depends_on("py-flit-core@3.11:3", when="@4.13.2:", type="build") depends_on("py-flit-core@3.4:3", when="@4:", type="build") # Historical dependencies From 3c8c7ef341f0e5d13952c53c532f140ef095c588 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Apr 2025 03:08:01 -0500 Subject: [PATCH 276/317] apptainer: there is no --with-libsubid (#50181) --- var/spack/repos/builtin/packages/apptainer/package.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/apptainer/package.py b/var/spack/repos/builtin/packages/apptainer/package.py index 8d2eff14420..c44e0270121 100644 --- a/var/spack/repos/builtin/packages/apptainer/package.py +++ b/var/spack/repos/builtin/packages/apptainer/package.py @@ -85,9 +85,7 @@ def config_options(self): options = [] if spec.satisfies("@1.1.0: +suid"): options.append("--with-suid") - if spec.satisfies("+libsubid"): - options.append("--with-libsubid") - else: + if spec.satisfies("@1.4: ~libsubid"): options.append("--without-libsubid") return options From d264094fdc92cc01230f9a4484bfd12097bd4c47 Mon Sep 17 00:00:00 2001 From: "Garth N. Wells" Date: Mon, 28 Apr 2025 09:09:29 +0100 Subject: [PATCH 277/317] py-nanobind: add v2.7.0 (#50176) --- var/spack/repos/builtin/packages/py-nanobind/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-nanobind/package.py b/var/spack/repos/builtin/packages/py-nanobind/package.py index 840fb64a7f6..a3c77adcef7 100644 --- a/var/spack/repos/builtin/packages/py-nanobind/package.py +++ b/var/spack/repos/builtin/packages/py-nanobind/package.py @@ -22,6 +22,9 @@ class PyNanobind(PythonPackage): license("BSD-3-Clause") version("master", branch="master", submodules=True) + version( + "2.7.0", tag="v2.7.0", commit="44ad9a9e5729abda24ef8dc9d76233d801e651e9", submodules=True + ) version( "2.6.1", tag="v2.6.1", commit="9b3afa9dbdc23641daf26fadef7743e7127ff92f", submodules=True ) From 47635816427df8ca00c4b2079e47e8cd2f5a3a1d Mon Sep 17 00:00:00 2001 From: Buldram Date: Mon, 28 Apr 2025 04:22:09 -0400 Subject: [PATCH 278/317] nim: install dist (#50137) --- .../repos/builtin/packages/nim/package.py | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/var/spack/repos/builtin/packages/nim/package.py b/var/spack/repos/builtin/packages/nim/package.py index 81a7ba1fec8..4044a46b8b1 100644 --- a/var/spack/repos/builtin/packages/nim/package.py +++ b/var/spack/repos/builtin/packages/nim/package.py @@ -22,7 +22,7 @@ class Nim(Package): maintainers("Buldram") - version("devel", branch="devel") + version("develop", branch="devel") version("2.2.4", sha256="f82b419750fcce561f3f897a0486b180186845d76fb5d99f248ce166108189c7") version("2.2.2", sha256="7fcc9b87ac9c0ba5a489fdc26e2d8480ce96a3ca622100d6267ef92135fd8a1f") version("2.2.0", sha256="ce9842849c9760e487ecdd1cdadf7c0f2844cafae605401c7c72ae257644893c") @@ -58,16 +58,14 @@ class Nim(Package): ) variant( - "sqlite", default=False, when="@0:1.7.3", description="Install SQLite for std/db_sqlite" + "sqlite", default=False, when="@:1.7.3", description="Install SQLite for std/db_sqlite" ) depends_on("c", type="build") - depends_on("cxx", type="build") - - depends_on("gmake", type="build", when="@devel,0.20:") + depends_on("gmake", type="build", when="@0.20:") depends_on("pcre", type="link") depends_on("openssl", type="link") - depends_on("openssl@1", type="link", when="@0:1.6.9") + depends_on("openssl@1", type="link", when="@:1.6.9") depends_on("sqlite@3:", type="link", when="+sqlite") # CVE-2021-46872 @@ -93,7 +91,7 @@ class Nim(Package): patch( "https://github.com/nim-lang/nimble/commit/89954f8b03b05970aea78c8fe1241138f5bbeae8.patch?full_index=1", sha256="5e6f7e2d2dac5d2ed70b5047418d9b43e156de35737f9fad0052ae30dd539b03", - when="@0:1.2.9,1.4.0:1.4.3", + when="@:1.2.9,1.4.0:1.4.3", working_dir="dist/nimble", ) @@ -101,7 +99,7 @@ class Nim(Package): name="csources_v2", git="https://github.com/nim-lang/csources_v2.git", commit="86742fb02c6606ab01a532a0085784effb2e753e", - when="@devel", + when="@develop", ) phases = ["build", "install"] @@ -117,25 +115,22 @@ def append_rpath(path, libdirs): for path in filter_system_paths(libdirs): quoted_path = shlex.quote(path) if '"""' in quoted_path: - raise InstallError( - "Quoted dependency path " + quoted_path + ' contains """' - ) + raise InstallError(f'Quoted dependency path {quoted_path} contains """') if not scope: f.write("\nwhen not defined(vcc):\n") # TODO: Implement for msvc scope = True - f.write(' {.passl: """-Xlinker -rpath -Xlinker ' + quoted_path + '""".}\n') + f.write(f' {{.passl: """-Xlinker -rpath -Xlinker {quoted_path}""".}}\n') - spec = self.spec - append_rpath("lib/wrappers/pcre.nim", spec["pcre"].libs.directories) - append_rpath("lib/wrappers/openssl.nim", spec["openssl"].libs.directories) - if spec.satisfies("+sqlite"): - append_rpath("lib/wrappers/sqlite3.nim", spec["sqlite"].libs.directories) + append_rpath("lib/wrappers/pcre.nim", self.spec["pcre"].libs.directories) + append_rpath("lib/wrappers/openssl.nim", self.spec["openssl"].libs.directories) + if self.spec.satisfies("+sqlite"): + append_rpath("lib/wrappers/sqlite3.nim", self.spec["sqlite"].libs.directories) # Musl defines SysThread as a struct *pthread_t rather than an unsigned long as glibc does. if self.spec.satisfies("^[virtuals=libc] musl"): - if self.spec.satisfies("@devel,1.9.3:"): + if self.spec.satisfies("@1.9.3:"): pthreadModule = "lib/std/private/threadtypes.nim" elif self.spec.satisfies("@:0.19.6"): pthreadModule = "lib/system/threads.nim" @@ -150,7 +145,7 @@ def append_rpath(path, libdirs): ) def build(self, spec, prefix): - if spec.satisfies("@devel"): + if spec.satisfies("@develop"): with working_dir("csources_v2"): make() @@ -169,12 +164,12 @@ def build(self, spec, prefix): koch("boot", "-d:release", *nim_flags) koch("tools", *nim_flags) - if spec.satisfies("@devel"): + if spec.satisfies("@develop"): koch("geninstall") - def install(self, spec, prefix): filter_file("1/nim", "1", "install.sh") + def install(self, spec, prefix): Executable("./install.sh")(prefix) - install_tree("bin", prefix.bin) + install_tree("dist", prefix.dist) From d47478d7b65b52f11f4151bcdc75460aba07d478 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 28 Apr 2025 10:48:56 +0200 Subject: [PATCH 279/317] ut: add v2.3.1 (#50221) --- var/spack/repos/builtin/packages/ut/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ut/package.py b/var/spack/repos/builtin/packages/ut/package.py index a6907006ecb..546a1d5ddb7 100644 --- a/var/spack/repos/builtin/packages/ut/package.py +++ b/var/spack/repos/builtin/packages/ut/package.py @@ -17,6 +17,7 @@ class Ut(CMakePackage): license("BSL-1.0") version("master", branch="master") + version("2.3.1", sha256="e51bf1873705819730c3f9d2d397268d1c26128565478e2e65b7d0abb45ea9b1") version("2.3.0", sha256="9c07a2b7947cc169fc1713ad462ccc43a704076447893a1fd25bdda5eec4aab6") version("2.1.1", sha256="016ac5ece1808cd1100be72f90da4fa59ea41de487587a3283c6c981381cc216") version("2.1.0", sha256="1c9c35c039ad3a9795a278447db6da0a4ec1a1d223bf7d64687ad28f673b7ae8") From b96af088d117e03a1a14b3e450a4db58fdb0b423 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Mon, 28 Apr 2025 10:13:02 +0100 Subject: [PATCH 280/317] sopt & purify: new versions 5.0 and 5.0.1 (#48619) --- .../repos/builtin/packages/purify/package.py | 17 +++++++++++++++++ .../repos/builtin/packages/sopt/package.py | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/purify/package.py b/var/spack/repos/builtin/packages/purify/package.py index 4ee6b337cc4..2e63458e60b 100644 --- a/var/spack/repos/builtin/packages/purify/package.py +++ b/var/spack/repos/builtin/packages/purify/package.py @@ -19,7 +19,10 @@ class Purify(CMakePackage): maintainers("tkoskela", "mmcleod89", "20DM") license("GPL-2.0") + version("5.0.1", sha256="a5f4b1bac1e46d858b5dbb1237ef3babd9c1f23f5b9f081cca3992da61bbc124") + version("5.0.0", sha256="64e150427c94f6edfcc5a630f14c8939db73349ff7b32f43504ce8211b5fd6fa") version("4.2.0", sha256="4d674007efc727628839fb6c8864e74f22adb39ee6405d3dab273f65b31b37e6") + version("dev", branch="development") variant("tests", default=True, description="Build tests") variant("openmp", default=True, description="Enable multithreading with OpenMP") @@ -27,6 +30,13 @@ class Purify(CMakePackage): variant("benchmarks", default=False, description="Build benchmarks") variant("docs", default=False, description="Enable multithreading with OpenMP") variant("coverage", default=False, description="Enable code coverage") + variant("hdf5", default=False, description="Enable hdf5 I/O") + variant( + "onnxrt", + when="@5.0.0:", + default=False, + description="Build with Tensorflow support using onnx in SOPT", + ) depends_on("cmake@3") depends_on("eigen@3.4:3") @@ -40,10 +50,15 @@ class Purify(CMakePackage): depends_on("sopt+mpi", when="+mpi") depends_on("sopt~openmp", when="~openmp") depends_on("sopt+openmp", when="+openmp") + depends_on("sopt~onnxrt", when="~onnxrt") + depends_on("sopt+onnxrt", when="+onnxrt") depends_on("catch2@3.4:3", when="+tests") depends_on("mpi", when="+mpi") depends_on("benchmark@1.8~performance_counters", when="+benchmarks") depends_on("doxygen@1.9:1.12+graphviz", when="+docs") + depends_on("py-onnxruntime@1.17.1:", when="+onnxrt") + depends_on("hdf5+cxx", when="+hdf5") + depends_on("highfive", when="+hdf5") def cmake_args(self): args = [ @@ -53,6 +68,8 @@ def cmake_args(self): self.define_from_variant("openmp", "openmp"), self.define_from_variant("dompi", "mpi"), self.define_from_variant("coverage", "coverage"), + self.define_from_variant("onnxrt", "onnxrt"), + self.define_from_variant("hdf5", "hdf5"), ] return args diff --git a/var/spack/repos/builtin/packages/sopt/package.py b/var/spack/repos/builtin/packages/sopt/package.py index f0aaed52378..098a1f74e1d 100644 --- a/var/spack/repos/builtin/packages/sopt/package.py +++ b/var/spack/repos/builtin/packages/sopt/package.py @@ -19,7 +19,10 @@ class Sopt(CMakePackage): maintainers("tkoskela", "mmcleod89", "20DM") license("GPL-2.0") + version("5.0.1", sha256="915000cf4d636b6830d6d37eb67e92a100001604ed30d34210232e3b583ba2a0") + version("5.0.0", sha256="ccc0eba228877f56af7712ad49c13abf7e432d364298f2bc86b577a199a2e9c4") version("4.2.0", sha256="25e579722f8e049d37c9155affa57ec2f38a2f8414c9cf430da2b7bafc86907b") + version("dev", branch="development") variant("tests", default=False, description="Build tests") variant("examples", default=False, description="Build examples") @@ -36,7 +39,6 @@ class Sopt(CMakePackage): depends_on("mpi", when="+mpi") depends_on("catch2@3.4:3", when="+tests") depends_on("benchmark@1.8~performance_counters", when="+benchmarks") - depends_on("onnx@1.16:", when="+onnxrt") depends_on("py-onnxruntime@1.17.1:", when="+onnxrt") depends_on("doxygen@1.8:1.12+graphviz", when="+docs") From 45ea09a79f4cfd65a807e4345e843999a8d048c3 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 28 Apr 2025 18:09:04 +0200 Subject: [PATCH 281/317] mold: add 2.38.1 (#50224) --- var/spack/repos/builtin/packages/mold/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mold/package.py b/var/spack/repos/builtin/packages/mold/package.py index 2c4afdd1ccd..3a84cb9fa2e 100644 --- a/var/spack/repos/builtin/packages/mold/package.py +++ b/var/spack/repos/builtin/packages/mold/package.py @@ -15,6 +15,7 @@ class Mold(CMakePackage): license("MIT") + version("2.38.1", sha256="14bfb259fd7d0a1fdce9b66f8ed2dd0b134d15019cb359699646afeee1f18118") version("2.37.1", sha256="b8e36086c95bd51e9829c9755c138f5c4daccdd63b6c35212b84229419f3ccbe") version("2.37.0", sha256="28372bbc2ce069aa0362ba84ad5d1b0f2c0bcf84e95a0f533ecf79cb3aff232c") version("2.36.0", sha256="3f57fe75535500ecce7a80fa1ba33675830b7d7deb1e5ee9a737e2bc43cdb1c7") From c1b423849cd385ce5c7a4ab006f636a6c3cd6842 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 28 Apr 2025 19:18:56 +0200 Subject: [PATCH 282/317] Thrift: overhaul recipe (#50106) * Thrift: overhaul recipe * qt5 -> qt@5 --- .../repos/builtin/packages/arrow/package.py | 2 +- .../repos/builtin/packages/gdal/package.py | 2 +- .../builtin/packages/parquet-cpp/package.py | 8 +- .../packages/parquet-format/package.py | 5 +- .../repos/builtin/packages/thrift/package.py | 162 +++++++++++------- 5 files changed, 116 insertions(+), 63 deletions(-) diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index 1caf9441c51..771e4965679 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -74,7 +74,7 @@ class Arrow(CMakePackage, CudaPackage): depends_on("re2+shared", when="+python") depends_on("snappy~shared", when="+snappy @9:") depends_on("snappy~shared", when="@8:") - depends_on("thrift+pic", when="+parquet") + depends_on("thrift@0.11:+cpp", when="+parquet") depends_on("utf8proc@2.7.0: +shared", when="+compute") depends_on("utf8proc@2.7.0: +shared", when="+gandiva") depends_on("utf8proc@2.7.0: +shared", when="+python") diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 9ee2f3b399d..ccb548eff28 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -364,7 +364,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): depends_on("openjpeg", when="+openjpeg") depends_on("openssl", when="+openssl") depends_on("oracle-instant-client", when="+oracle") - depends_on("parquet-cpp", when="+parquet") + depends_on("arrow", when="+parquet") # depends_on('pcidsk', when='+pcidsk') depends_on("pcre2", when="@3.5:+pcre2") depends_on("pcre", when="@:3.4+pcre2") diff --git a/var/spack/repos/builtin/packages/parquet-cpp/package.py b/var/spack/repos/builtin/packages/parquet-cpp/package.py index 258b3af89e7..2f0cd29c01c 100644 --- a/var/spack/repos/builtin/packages/parquet-cpp/package.py +++ b/var/spack/repos/builtin/packages/parquet-cpp/package.py @@ -14,7 +14,11 @@ class ParquetCpp(CMakePackage): license("Apache-2.0") - version("1.4.0", sha256="52899be6c9dc49a14976d4ad84597243696c3fa2882e5c802b56e912bfbcc7ce") + version( + "1.4.0", + sha256="52899be6c9dc49a14976d4ad84597243696c3fa2882e5c802b56e912bfbcc7ce", + deprecated=True, + ) depends_on("arrow") @@ -27,7 +31,7 @@ class ParquetCpp(CMakePackage): depends_on(Boost.with_default_variants) depends_on("cmake@3.2.0:", type="build") depends_on("pkgconfig", type="build") - depends_on("thrift+pic") + depends_on("thrift") variant("pic", default=True, description="Build position independent code") variant( diff --git a/var/spack/repos/builtin/packages/parquet-format/package.py b/var/spack/repos/builtin/packages/parquet-format/package.py index 38ede4e76dc..be8776b6ed3 100644 --- a/var/spack/repos/builtin/packages/parquet-format/package.py +++ b/var/spack/repos/builtin/packages/parquet-format/package.py @@ -13,8 +13,11 @@ class ParquetFormat(MavenPackage): license("Apache-2.0") + version("2.11.0", sha256="ed7f5a91db0567a221bc5b61624589b8b7f816588ee4b15a34d7a99b9bec7e7c") version("2.8.0", sha256="345c044cea73997162e0c38ae830509ee424faf49c90974e4f244079a3df01b0") version("2.7.0", sha256="e821ffc67f61b49afce017ce2d1d402b4df352ca49dbeae167b06c4d3264b6ba") - depends_on("thrift@0.12.0", when="@2.7.0:") + # pom.xml + depends_on("thrift@0.21.0", when="@2.11") + depends_on("thrift@0.12.0", when="@2.7:2.8") depends_on("java@8", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index eafa377893c..e6c418f9197 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -2,18 +2,18 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.autotools import AutotoolsBuilder +from spack.build_systems.cmake import CMakeBuilder from spack.package import * -from spack.pkg.builtin.boost import Boost -class Thrift(Package): +class Thrift(CMakePackage, AutotoolsPackage): """Software framework for scalable cross-language services development. Thrift combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. - """ homepage = "https://thrift.apache.org" @@ -25,6 +25,7 @@ class Thrift(Package): license("Apache-2.0") + version("0.21.0", sha256="9a24f3eba9a4ca493602226c16d8c228037db3b9291c6fc4019bfe3bd39fc67c") version("0.18.1", sha256="04c6f10e5d788ca78e13ee2ef0d2152c7b070c0af55483d6b942e29cff296726") version("0.17.0", sha256="b272c1788bb165d99521a2599b31b97fa69e5931d099015d91ae107a0b0cc58f") version("0.16.0", sha256="f460b5c1ca30d8918ff95ea3eb6291b3951cf518553566088f3f2be8981f6209") @@ -34,45 +35,58 @@ class Thrift(Package): version("0.10.0", sha256="2289d02de6e8db04cbbabb921aeb62bfe3098c4c83f36eec6c31194301efa10b") version("0.9.3", sha256="b0740a070ac09adde04d43e852ce4c320564a292f26521c46b78e0641564969e") - variant("pic", default=True, description="Build position independent code") - variant("c", default=True, description="Build support for C-family languages") + variant("openssl", default=False, description="Build with OpenSSL") + variant("cpp", default=True, description="Build C++ library") + with when("+cpp"): + variant("shared", default=True, description="Build shared libraries") + variant("libevent", default=False, description="Build with libevent support") + variant("qt5", default=False, description="Build with Qt5 support") + variant("zlib", default=False, description="Build with ZLIB support") + variant("c_glib", default=False, description="Build C (GLib) library") variant("java", default=False, description="Build support for java") + variant("javascript", default=False, description="Build Javascript library") + variant("nodejs", default=False, description="Build NodeJS library") variant("python", default=True, description="Build support for python") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + build_system("cmake", "autotools", default="autotools") - depends_on("pkgconfig", type="build") - depends_on("autoconf", type="build") - depends_on("automake", type="build") - depends_on("libtool", type="build") - depends_on("boost@1.53:") + with default_args(type="build"): + depends_on("c") + depends_on("cxx") - # 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("bison", type="build") - depends_on("flex", type="build") - depends_on("openssl") + depends_on("pkgconfig") + depends_on("bison") + depends_on("flex") - # Variant dependencies - depends_on("zlib-api", when="+c") - depends_on("libevent", when="+c") + with when("build_system=cmake"): + depends_on("cmake@3.4:", when="@0.13:") + depends_on("cmake@3.1:", when="@0.11:") + depends_on("cmake@2.8.12:") - depends_on("java@7:", when="+java") - depends_on("ant", when="+java") + with when("build_system=autotools"): + depends_on("autoconf") + depends_on("automake") + depends_on("libtool") - 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") - depends_on("py-twisted", type=("build", "run"), when="+python") - depends_on("py-zope-interface", type=("build", "run"), when="+python") - depends_on("py-pure-sasl", type=("build", "run"), when="+python") - depends_on("scons", type=("build", "run"), when="+python") - depends_on("gmake", type="build") + depends_on("glib@2:", when="+c_glib") + depends_on("openssl", when="+openssl") + depends_on("libevent@2:", when="+libevent") + depends_on("qt@5", when="+qt5") + depends_on("zlib-api@1.2.3:", when="+zlib") + + with when("+java"): + depends_on("ant@1.8:", type="build") + depends_on("gradle", type="build") + depends_on("java@7:") + + depends_on("npm", when="+javascript", type="build") + depends_on("npm", when="+nodejs", type="build") + + with when("+python"): + extends("python") + depends_on("py-pip", type="build") + depends_on("py-setuptools", type="build") + depends_on("py-six@1.7.2:", type=("build", "run")) patch( "https://github.com/apache/thrift/pull/2511.patch?full_index=1", @@ -80,32 +94,64 @@ class Thrift(Package): when="@0.16.0", ) - def setup_build_environment(self, env: EnvironmentModifications) -> None: - if "+pic" in self.spec: - env.append_flags("CFLAGS", self.compiler.cc_pic_flag) - env.append_flags("CXXFLAGS", self.compiler.cxx_pic_flag) - def install(self, spec, prefix): - env["PY_PREFIX"] = prefix +class CMakeBuilder(CMakeBuilder): + def setup_build_environment(self, env: EnvironmentModifications): + # Don't install extensions to /usr + env.set("PY_PREFIX", self.prefix) + env.set("JAVA_PREFIX", self.prefix) - # configure options - options = ["--prefix=%s" % prefix] + def cmake_args(self): + return [ + self.define_from_variant("BUILD_JAVASCRIPT", "javascript"), + self.define_from_variant("BUILD_NODEJS", "nodejs"), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define("BUILD_TESTING", False), + self.define("WITH_AS3", False), + self.define_from_variant("WITH_CPP", "cpp"), + self.define_from_variant("WITH_C_GLIB", "c_glib"), + self.define_from_variant("WITH_JAVA", "java"), + self.define_from_variant("WITH_JAVASCRIPT", "javascript"), + self.define_from_variant("WITH_NODEJS", "nodejs"), + self.define_from_variant("WITH_PYTHON", "python"), + self.define_from_variant("WITH_ZLIB", "zlib"), + ] - options.append("--with-boost=%s" % spec["boost"].prefix) - options.append("--enable-tests=no") - options.append("--with-nodejs=no") - options.append("--with-c=%s" % ("yes" if "+c" in spec else "no")) - options.append("--with-python=%s" % ("yes" if "+python" in spec else "no")) - options.append("--with-java=%s" % ("yes" if "+java" in spec else "no")) - options.append("--with-go=no") - options.append("--with-lua=no") - options.append("--with-php=no") - options.append("--with-kotlin=no") - options.append("--with-ruby=no") - options.append("--with-qt4=no") +class AutotoolsBuilder(AutotoolsBuilder): + def setup_build_environment(self, env: EnvironmentModifications): + # Don't install extensions to /usr + env.set("PY_PREFIX", self.prefix) + env.set("JAVA_PREFIX", self.prefix) - configure(*options) - - make() - make("install") + def configure_args(self): + return [ + *self.enable_or_disable("shared"), + "--enable-tests=no", + *self.with_or_without("cpp"), + *self.with_or_without("libevent"), + *self.with_or_without("zlib"), + *self.with_or_without("qt5"), + *self.with_or_without("c_glib"), + *self.with_or_without("openssl", "prefix"), + *self.with_or_without("java"), + "--without-kotlin", + "--without-erlang", + *self.with_or_without("nodejs"), + "--without-nodets", + "--without-lua", + *self.with_or_without("python"), + "--without-py3", + "--without-perl", + "--without-php", + "--without-php_extension", + "--without-dart", + "--without-ruby", + "--without-go", + "--without-swift", + "--without-rs", + "--without-cl", + "--without-haxe", + "--without-netstd", + "--without-d", + ] From 382847976f0dd1d50ee1ae120f4575ba30084587 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Mon, 28 Apr 2025 15:33:02 -0500 Subject: [PATCH 283/317] XorgPackage, glx: conflicts windows and darwin (#50216) * XorgPackage: conflicts windows and darwin * xorg: import conflicts * xorg: fix style * glx: conflicts windows and darwin --- lib/spack/spack/build_systems/xorg.py | 5 +++++ var/spack/repos/builtin/packages/glx/package.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/lib/spack/spack/build_systems/xorg.py b/lib/spack/spack/build_systems/xorg.py index 131444cbb5e..47ba83d21a3 100644 --- a/lib/spack/spack/build_systems/xorg.py +++ b/lib/spack/spack/build_systems/xorg.py @@ -6,12 +6,17 @@ import spack.package_base import spack.util.url +from spack.directives import conflicts class XorgPackage(spack.package_base.PackageBase): """Mixin that takes care of setting url and mirrors for x.org packages.""" + # x.org packages are not supported on windows or darwin + conflicts("platform=windows") + conflicts("platform=darwin") + #: Path of the package in a x.org mirror xorg_mirror_path: Optional[str] = None diff --git a/var/spack/repos/builtin/packages/glx/package.py b/var/spack/repos/builtin/packages/glx/package.py index 5ce00b79bf2..22918f0eade 100644 --- a/var/spack/repos/builtin/packages/glx/package.py +++ b/var/spack/repos/builtin/packages/glx/package.py @@ -12,6 +12,9 @@ class Glx(BundlePackage): version("1.4") + conflicts("platform=windows") + conflicts("platform=darwin") + depends_on("libglx") provides("gl@4.5") From fc3b732b148014bccd655ae2699141c3cca03b32 Mon Sep 17 00:00:00 2001 From: "Seth R. Johnson" Date: Mon, 28 Apr 2025 19:29:52 -0400 Subject: [PATCH 284/317] vecgeom: patch missing templates for apple clang (#50210) --- var/spack/repos/builtin/packages/vecgeom/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index a9f7a0a5f41..cc6375b0af9 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -123,6 +123,12 @@ class Vecgeom(CMakePackage, CudaPackage): sha256="f172b0a9ee1de4931b106d8500d1a60d5688c9bce324cf12ca107ec866a16c56", when="@1.2.7:1.2.10 +cuda ^cuda@:11", ) + # Fix -Wmissing-template-arg-list-after-template-kw + patch( + "https://gitlab.cern.ch/VecGeom/VecGeom/-/merge_requests/1251.diff", + sha256="b9419c6666389b69ee2c9125d10f25b423fce339495413ac4762ae6f32bdea63", + when="@:1.2.10 ^apple-clang@17:", + ) def std_when(values): for v in values: From 38daed0a785cec2f9f2233b2365e3d41a5b8b4b0 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Tue, 29 Apr 2025 01:30:40 +0200 Subject: [PATCH 285/317] actsvg: use Spack pybind11 package (#50191) * actsvg: use Spack pybind11 package This commit makes the actsvg package use the Spack-provided pybind11 package rather than having it download its own copy. * Make pybind dependency more flexible --- var/spack/repos/builtin/packages/actsvg/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/actsvg/package.py b/var/spack/repos/builtin/packages/actsvg/package.py index a5907daa0af..0aaba10e8fc 100644 --- a/var/spack/repos/builtin/packages/actsvg/package.py +++ b/var/spack/repos/builtin/packages/actsvg/package.py @@ -50,6 +50,7 @@ class Actsvg(CMakePackage): depends_on("boost +program_options", when="+examples") depends_on("googletest", when="+examples") depends_on("python@3.8:", when="+python") + depends_on("py-pybind11@2.10:", when="+python @0.4.42:") def cmake_args(self): args = [ @@ -58,5 +59,8 @@ def cmake_args(self): self.define_from_variant("ACTSVG_BUILD_PYTHON_BINDINGS", "python"), self.define_from_variant("ACTSVG_BUILD_WEB", "web"), self.define("ACTSVG_BUILD_TESTING", self.run_tests), + self.define("ACTSVG_USE_SYSTEM_LIBS", True), + # The pybind11 loading does not respect `ACTSVG_USE_SYSTEM_LIBS`. + self.define("ACTSVG_USE_SYSTEM_PYBIND11", True), ] return args From 25af7a36aa17cbb3fbb0f4699bac5dd07315d2b3 Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com> Date: Tue, 29 Apr 2025 03:56:39 +0200 Subject: [PATCH 286/317] podio: Add an rpath variant to set the rpath (#42844) * podio: Add an rpath variant to set the rpath * Always set PODIO_SET_RPATH --------- Co-authored-by: jmcarcell --- var/spack/repos/builtin/packages/podio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py index c6fb756e45b..581a53f0bb8 100644 --- a/var/spack/repos/builtin/packages/podio/package.py +++ b/var/spack/repos/builtin/packages/podio/package.py @@ -138,6 +138,7 @@ def cmake_args(self): self.define_from_variant("ENABLE_SIO", "sio"), self.define_from_variant("ENABLE_RNTUPLE", "rntuple"), self.define_from_variant("ENABLE_DATASOURCE", "datasource"), + self.define("PODIO_SET_RPATH", True), self.define("CMAKE_CXX_STANDARD", self.spec.variants["cxxstd"].value), self.define("BUILD_TESTING", self.run_tests), ] From 8e2caa2b837e8108b2c0668c0ab6f236f258304e Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Tue, 29 Apr 2025 04:23:52 +0200 Subject: [PATCH 287/317] vecmem: add v1.15.0 (#50222) This commit adds v1.15.0 of the vecmem package. --- var/spack/repos/builtin/packages/vecmem/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/vecmem/package.py b/var/spack/repos/builtin/packages/vecmem/package.py index 68e2017d517..ee09691c9bf 100644 --- a/var/spack/repos/builtin/packages/vecmem/package.py +++ b/var/spack/repos/builtin/packages/vecmem/package.py @@ -16,6 +16,7 @@ class Vecmem(CMakePackage, CudaPackage): license("MPL-2.0-no-copyleft-exception") + version("1.15.0", sha256="53e03599efd5a22284b62e10338b69345d8188182a12fefe228005069d1ddd74") version("1.14.0", sha256="3fac19e2766e5f997712b0799bd820f65c17ea9cddcb9e765cbdf214f41c4783") version("1.13.0", sha256="fc21cea04140e1210c83a32579b0a7194601889b6c895404214ac55ce547342b") version("1.12.0", sha256="59a5ef061fc9949c3159cb920a717dee7aa1e9a98b3672495200071d3d4b61cf") From ecc3752ee915291478cd69b9d7a228b205c410bd Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 29 Apr 2025 10:09:49 +0200 Subject: [PATCH 288/317] fix %compiler satisfaction with specs v4 format (#50140) This PR improves compatibility with specs installed before #45189, and with externals specifying a compiler, by using the annotated compiler to "satisfy" a spec query. On top of that, the PR adds a new flag for: ```console $ spack find --specfile-format -I %gcc -- linux-ubuntu20.04-icelake / gcc@10.5.0 ----------------------- [+] [v4] ca-certificates-mozilla@2023-05-30 [e] [v4] cmake@3.31.6 [+] [v4] gcc-runtime@10.5.0 [e] [v4] glibc@2.31 [+] [v4] gmake@4.4.1 [+] [v4] hdf5@1.14.5 [+] [v4] pkgconf@2.2.0 [+] [v4] zlib-ng@2.2.1 ==> 8 installed packages ``` which shows the specfile format of the specs being retrieved. --- lib/spack/spack/cmd/__init__.py | 6 +- lib/spack/spack/cmd/find.py | 15 ++++- lib/spack/spack/solver/asp.py | 15 +++++ lib/spack/spack/solver/concretize.lp | 19 ++++++ lib/spack/spack/spec.py | 38 ++++++++--- lib/spack/spack/test/concretization/core.py | 60 ++++++++++++++++++ .../data/database/index.json.v7_v8.json.gz | Bin 0 -> 1858 bytes lib/spack/spack/test/database.py | 25 ++++++++ lib/spack/spack/test/spec_yaml.py | 4 ++ share/spack/spack-completion.bash | 2 +- share/spack/spack-completion.fish | 4 +- 11 files changed, 174 insertions(+), 14 deletions(-) create mode 100644 lib/spack/spack/test/data/database/index.json.v7_v8.json.gz diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 0ceee94ea46..030a95c2388 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -436,7 +436,7 @@ def display_specs(specs, args=None, **kwargs): all_headers (bool): show headers even when arch/compiler aren't defined status_fn (typing.Callable): if provided, prepend install-status info output (typing.IO): A file object to write to. Default is ``sys.stdout`` - + specfile_format (bool): specfile format of the current spec """ def get_arg(name, default=None): @@ -458,6 +458,7 @@ def get_arg(name, default=None): all_headers = get_arg("all_headers", False) output = get_arg("output", sys.stdout) status_fn = get_arg("status_fn", None) + specfile_format = get_arg("specfile_format", False) decorator = get_arg("decorator", None) if decorator is None: @@ -479,6 +480,9 @@ def get_arg(name, default=None): vfmt = "{variants}" if variants else "" format_string = nfmt + "{@version}" + vfmt + ffmt + if specfile_format: + format_string = "[{specfile_version}] " + format_string + def fmt(s, depth=0): """Formatter function for all output specs""" string = "" diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index e17b6c5fe60..8a1100303a8 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -51,6 +51,12 @@ def setup_parser(subparser): "-I", "--install-status", action="store_true", help="show install status of packages" ) + subparser.add_argument( + "--specfile-format", + action="store_true", + help="show the specfile format for installed deps ", + ) + subparser.add_argument( "-d", "--deps", action="store_true", help="output dependencies along with found specs" ) @@ -280,6 +286,7 @@ def root_decorator(spec, string): show_flags=True, decorator=root_decorator, variants=True, + specfile_format=args.specfile_format, ) print() @@ -301,6 +308,7 @@ def root_decorator(spec, string): namespace=True, show_flags=True, variants=True, + specfile_format=args.specfile_format, ) print() @@ -390,7 +398,12 @@ def find(parser, args): 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 + display_results, + args, + decorator=decorator, + all_headers=True, + status_fn=status_fn, + specfile_format=args.specfile_format, ) # print number of installed packages last (as the list may be long) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 01d897c82e4..d3db57f3ea4 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -3862,6 +3862,17 @@ def external_spec_selected(self, node, idx): ) self._specs[node].extra_attributes = spec_info.get("extra_attributes", {}) + # Annotate compiler specs from externals + external_spec = spack.spec.Spec(spec_info["spec"]) + external_spec_deps = external_spec.dependencies() + if len(external_spec_deps) > 1: + raise InvalidExternalError( + f"external spec {spec_info['spec']} cannot have more than one dependency" + ) + elif len(external_spec_deps) == 1: + compiler_str = external_spec_deps[0] + self._specs[node].annotations.with_compiler(spack.spec.Spec(compiler_str)) + # If this is an extension, update the dependencies to include the extendee package = spack.repo.PATH.get_pkg_class(self._specs[node].fullname)(self._specs[node]) extendee_spec = package.extendee_spec @@ -4765,3 +4776,7 @@ class InvalidSpliceError(spack.error.SpackError): class NoCompilerFoundError(spack.error.SpackError): """Raised when there is no possible compiler""" + + +class InvalidExternalError(spack.error.SpackError): + """Raised when there is no possible compiler""" diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 3670caf23bc..697a6d4d08d 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -184,6 +184,7 @@ literal_node(Root, node(min_dupe_id, Root)) :- mentioned_in_literal(Root, Root) 1 { build_dependency_of_literal_node(LiteralNode, node(0..Y-1, BuildDependency)) : max_dupes(BuildDependency, Y) } 1 :- literal_node(Root, LiteralNode), build(LiteralNode), + not external(LiteralNode), attr("build_requirement", LiteralNode, build_requirement("node", BuildDependency)). condition_set(node(min_dupe_id, Root), LiteralNode) :- literal_node(Root, LiteralNode). @@ -490,6 +491,7 @@ provider(ProviderNode, VirtualNode) :- attr("provider_set", ProviderNode, Virtua build(node(X, Parent)), not external(node(X, Parent)). +% Concrete nodes :- attr("build_requirement", ParentNode, build_requirement("node", BuildDependency)), concrete(ParentNode), not attr("concrete_build_dependency", ParentNode, BuildDependency, _). @@ -503,6 +505,23 @@ provider(ProviderNode, VirtualNode) :- attr("provider_set", ProviderNode, Virtua attr("virtual_on_build_edge", ParentNode, BuildDependency, Virtual), not 1 { pkg_fact(BuildDependency, version_satisfies(Constraint, Version)) : hash_attr(BuildDependencyHash, "version", BuildDependency, Version) } 1. +% External nodes +:- attr("build_requirement", ParentNode, build_requirement("node", BuildDependency)), + external(ParentNode), + not attr("external_build_requirement", ParentNode, build_requirement("node", BuildDependency)). + +candidate_external_version(Constraint, BuildDependency, Version) + :- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, Constraint)), + external(ParentNode), + pkg_fact(BuildDependency, version_satisfies(Constraint, Version)). + +error(100, "External {0} cannot satisfy both {1} and {2}", BuildDependency, LiteralConstraint, ExternalConstraint) + :- attr("build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, LiteralConstraint)), + external(ParentNode), + attr("external_build_requirement", ParentNode, build_requirement("node_version_satisfies", BuildDependency, ExternalConstraint)), + not 1 { pkg_fact(BuildDependency, version_satisfies(ExternalConstraint, Version)) : candidate_external_version(LiteralConstraint, BuildDependency, Version) }. + + % Asking for gcc@10 %gcc@9 shouldn't give us back an external gcc@10, just because of the hack % we have on externals :- attr("build_requirement", node(X, Parent), build_requirement("node", BuildDependency)), diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 06c42a8e2fc..b31f1f1cb51 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1429,7 +1429,7 @@ def with_compiler(self, compiler: "Spec") -> "SpecAnnotations": def __repr__(self) -> str: result = f"SpecAnnotations().with_spec_format({self.original_spec_format})" if self.compiler_node_attribute: - result += f"with_compiler({str(self.compiler_node_attribute)})" + result += f".with_compiler({str(self.compiler_node_attribute)})" return result @@ -3394,7 +3394,7 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool: return True # If we have no dependencies, we can't satisfy any constraints. - if not self._dependencies: + if not self._dependencies and self.original_spec_format() >= 5 and not self.external: return False # If we arrived here, the lhs root node satisfies the rhs root node. Now we need to check @@ -3405,6 +3405,7 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool: # verify the edge properties, cause everything is encoded in the hash of the nodes that # will be verified later. lhs_edges: Dict[str, Set[DependencySpec]] = collections.defaultdict(set) + mock_nodes_from_old_specfiles = set() for rhs_edge in other.traverse_edges(root=False, cover="edges"): # If we are checking for ^mpi we need to verify if there is any edge if spack.repo.PATH.is_virtual(rhs_edge.spec.name): @@ -3426,13 +3427,27 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool: except KeyError: return False - candidates = current_node.dependencies( - name=rhs_edge.spec.name, - deptype=rhs_edge.depflag, - virtuals=rhs_edge.virtuals or None, - ) - if not candidates or not any(x.satisfies(rhs_edge.spec) for x in candidates): - return False + if current_node.original_spec_format() < 5 or ( + current_node.original_spec_format() >= 5 and current_node.external + ): + compiler_spec = current_node.annotations.compiler_node_attribute + if compiler_spec is None: + return False + + mock_nodes_from_old_specfiles.add(compiler_spec) + # This checks that the single node compiler spec satisfies the request + # of a direct dependency. The check is not perfect, but based on heuristic. + if not compiler_spec.satisfies(rhs_edge.spec): + return False + + else: + candidates = current_node.dependencies( + name=rhs_edge.spec.name, + deptype=rhs_edge.depflag, + virtuals=rhs_edge.virtuals or None, + ) + if not candidates or not any(x.satisfies(rhs_edge.spec) for x in candidates): + return False continue @@ -3472,8 +3487,9 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool: return False # Edges have been checked above already, hence deps=False + lhs_nodes = [x for x in self.traverse(root=False)] + sorted(mock_nodes_from_old_specfiles) return all( - any(lhs.satisfies(rhs, deps=False) for lhs in self.traverse(root=False)) + any(lhs.satisfies(rhs, deps=False) for lhs in lhs_nodes) for rhs in other.traverse(root=False) ) @@ -3947,6 +3963,8 @@ def format_attribute(match_object: Match) -> str: except AttributeError: if part == "compiler": return "none" + elif part == "specfile_version": + return f"v{current.original_spec_format()}" raise SpecFormatStringError( f"Attempted to format attribute {attribute}. " diff --git a/lib/spack/spack/test/concretization/core.py b/lib/spack/spack/test/concretization/core.py index 4ea9591a24f..6d3b2f57a50 100644 --- a/lib/spack/spack/test/concretization/core.py +++ b/lib/spack/spack/test/concretization/core.py @@ -3380,3 +3380,63 @@ def test_input_analysis_and_conditional_requirements(default_mock_concretization libceed = default_mock_concretization("libceed") assert libceed["libxsmm"].satisfies("@main") assert libceed["libxsmm"].satisfies("platform=test") + + +@pytest.mark.parametrize( + "compiler_str,expected,not_expected", + [ + # Compiler queries are as specific as the constraint on the external + ("gcc@10", ["%gcc", "%gcc@10"], ["%clang", "%gcc@9"]), + ("gcc", ["%gcc"], ["%clang", "%gcc@9", "%gcc@10"]), + ], +) +@pytest.mark.regression("49841") +def test_installing_external_with_compilers_directly( + compiler_str, expected, not_expected, mutable_config, mock_packages, tmp_path +): + """Tests that version constraints are taken into account for compiler annotations + on externals + """ + spec_str = f"libelf@0.8.12 %{compiler_str}" + packages_yaml = syaml.load_config( + f""" +packages: + libelf: + buildable: false + externals: + - spec: {spec_str} + prefix: {tmp_path / 'libelf'} +""" + ) + mutable_config.set("packages", packages_yaml["packages"]) + s = spack.concretize.concretize_one(spec_str) + + assert s.external + assert all(s.satisfies(c) for c in expected) + assert all(not s.satisfies(c) for c in not_expected) + + +@pytest.mark.regression("49841") +def test_using_externals_with_compilers(mutable_config, mock_packages, tmp_path): + """Tests that version constraints are taken into account for compiler annotations + on externals, even imposed as transitive deps. + """ + packages_yaml = syaml.load_config( + f""" +packages: + libelf: + buildable: false + externals: + - spec: libelf@0.8.12 %gcc@10 + prefix: {tmp_path / 'libelf'} +""" + ) + mutable_config.set("packages", packages_yaml["packages"]) + + with pytest.raises(spack.error.SpackError): + spack.concretize.concretize_one("dyninst%gcc@10.2.1 ^libelf@0.8.12 %gcc@:9") + + s = spack.concretize.concretize_one("dyninst%gcc@10.2.1 ^libelf@0.8.12 %gcc@10:") + + libelf = s["libelf"] + assert libelf.external and libelf.satisfies("%gcc") diff --git a/lib/spack/spack/test/data/database/index.json.v7_v8.json.gz b/lib/spack/spack/test/data/database/index.json.v7_v8.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4e4ecb56425bc789d29760f279316835b9a71fe GIT binary patch literal 1858 zcmV-I2fg?oiwFpq69#Ai18Ht#Wq2-Xb8l_{?V3rCtTqsU|4W~T?#660BSp$B$~D(0 zY8hj|jj@dvwx{{;v7y(@%wzIqkzUe$Xlw(nvR(C68Thu!poS?_c=h;g)ncg#XRF86 z{pxN-n9`6^<<9gPB{ItQaS{epMsnXGTHqXup-^H7p}R&2jNFmI+V-|85b~s9n%LUi zMc4jz9j&*v2})GD>ji~6=d!lvC}F0zr;bfKZl$kGYP&IDyWWQOoQAT%`a%#vn8Ion z!ZI#x({Gp=!tn1*V`|%T47HKi_VwoqW=;UK75m@z^FNpmkq>q$v4bwo^){`^#p#wY za#0gpAf~hC)RcCoBFaw1iwp8oiR3jrRh*b}#VKtY{Q2O-BbrmAN-p$N=~6c=KSu5_ zbyMV%Vs-6?RP#1<6Cx0;4Q(dzv#PcrGeNTHC?T5*3S(DLCEQKDD23;LFdxF5e=N)` z3I}e!=V@#&#qJ>5;qtpr4F%~M0DCTunJW!tqiFJ}_2J=>{4Y3%H2l1rR6D5tP+5~qH}Wv%Zo zYWYQ(W>*zT(y9F9grW)-cvnJYO?ahnf)i>YT)?E0eb=#4bbA4EMMDFU#4cMl0@@{M zS3)fSP`vrY{;XaZ7S?DnLu4|~v-enOPVa*R4B89=QW-FmeGX`8JFSwuB1uYvHY}e_ zgzZ-kVm5i}Rh661mPll6JTsi0mh_Nq-0s6Ojx{x&icr+ zBQ(Qxxb|<%yfO1DnOWEq_~ZqjN>C}rea_Q1Y099(ttLUpXqo|B>n^I(5w98t#taA9JK_!`}vu@h^T932Or67hdOVi|T4@({lY z>oyN0?LeloaF5wOD$6>ut5?dF47eX(f;EC3!cvo*xbBo!^O0EjSNH~75O~|j3vPMu zjp6^Dyf+S*XuGE4pifAQ>y}lt4C@lHFe-Y`jCLaAkd{#i2eM|Hg{A$WXs1P=HmeRITYqM+nbAr?u&L z-l&*|6-y%eLS!kkJh}=i{@M@M(Jijr;>st)6)1>3o8jE~hMT?XID-!SnVTI-Y~vr8 zVmJ-h28NTPSo5=Chn?z&Ax!3Vq!>NBmEfoH9=7mQsi8QRopOirb*xe&IbWtriD9N- zetrZs$HuP+Y-1zRl#ZFM8XEUz?2ERo|3hKmRDoO%2;NkETySB5-vTDLf6o* z`@S4;i-T?$)gb67a*%}tvLsPf#qLL-fA_Uf^k^KObT(!uvp8DIe?PvSg^8*_oaJY6 zi0h&f?J(peYCD6%(C&_9K;s&;Ar6A?inELM&+#1ukm7of=e^2XBlPkx?_QkXNs>d# zr|e>vV(I7YVqHx3<~Zyvs`1^dVy?fQRM=!dl)Ro)ESk;pq~dIP*W1&DFtfo7WuuTy5VMq|kU|o|xGTn#N`?QwZ-;*FZRR2c zKX03Ppy{;D+g?ncRJ?la@QQE(nJT_@oVYMb?@MmrPy_VhfOq&y3Ry^E`TW*~zs-;=8BanJiA zGO0}CIwXxMi+V`X7VVkHj?v^}S-0rl*Q|^0{xSIXy*~l#`{dyP+`pcYE^bj@cp3ie z%ca2bXC2=NbR*DLzV?3Q$yUbE$u}4>HcvdiOX=85oVnWQ!jMn;_UR>@U1TpVVL7tH zgUYkssW#Jqya}(H^_19nn6;ah;O+-8D9O;I1E`0wPr72j;XotPWt9mCW5J$lq7zZ` wz63=Vg)9x*9)1c27cujel and similar selections. + """ + test_path = pathlib.Path(spack.paths.test_path) + zipfile = test_path / "data" / "database" / "index.json.v7_v8.json.gz" + with gzip.open(str(zipfile), "rt", encoding="utf-8") as f: + data = json.load(f) + + index_json = tmp_path / spack.database._DB_DIRNAME / spack.database.INDEX_JSON_FILE + index_json.parent.mkdir(parents=True) + index_json.write_text(json.dumps(data)) + + db = spack.database.Database(str(tmp_path)) + + specs = db.query("%gcc") + + assert len(specs) == 8 + assert len([x for x in specs if x.external]) == 2 + assert len([x for x in specs if x.original_spec_format() < 5]) == 8 diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 13f7b65a1f8..a3b09a2e66f 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -433,6 +433,10 @@ def test_load_json_specfiles(specfile, expected_hash, reader_cls): assert s2.format("{compiler.name}") == "gcc" assert s2.format("{compiler.version}") != "none" + # Ensure satisfies still works with compilers + assert s2.satisfies("%gcc") + assert s2.satisfies("%gcc@9.4.0") + def test_anchorify_1(): """Test that anchorify replaces duplicate values with references to a single instance, and diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 910613babdb..94d4457d393 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1214,7 +1214,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 --only-deprecated --deprecated --install-tree --start-date --end-date" + SPACK_COMPREPLY="-h --help --format -H --hashes --json -I --install-status --specfile-format -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 6abc1835f3b..560f47193f5 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -1786,7 +1786,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 only-deprecated deprecated install-tree= start-date= end-date= +set -g __fish_spack_optspecs_spack_find h/help format= H/hashes json I/install-status specfile-format 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' @@ -1798,6 +1798,8 @@ complete -c spack -n '__fish_spack_using_command find' -l json -f -a json complete -c spack -n '__fish_spack_using_command find' -l json -d 'output specs as machine-readable json records' complete -c spack -n '__fish_spack_using_command find' -s I -l install-status -f -a install_status complete -c spack -n '__fish_spack_using_command find' -s I -l install-status -d 'show install status of packages' +complete -c spack -n '__fish_spack_using_command find' -l specfile-format -f -a specfile_format +complete -c spack -n '__fish_spack_using_command find' -l specfile-format -d 'show the specfile format for installed deps ' complete -c spack -n '__fish_spack_using_command find' -s d -l deps -f -a deps complete -c spack -n '__fish_spack_using_command find' -s d -l deps -d 'output dependencies along with found specs' complete -c spack -n '__fish_spack_using_command find' -s p -l paths -f -a paths From a6b0dfbd531f074855d14fffe037419d0ff35ad2 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 29 Apr 2025 12:53:30 +0200 Subject: [PATCH 289/317] package_base.py: use sys.modules for module lookup (#50230) --- lib/spack/spack/package_base.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 54ba4bac32e..7fa444d2e86 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -14,7 +14,6 @@ import functools import glob import hashlib -import importlib import io import os import re @@ -818,12 +817,12 @@ def package_dir(cls): @classproperty def module(cls): - """Module object (not just the name) that this package is defined in. + """Module instance that this package class is defined in. We use this to add variables to package modules. This makes install() methods easier to write (e.g., can call configure()) """ - return importlib.import_module(cls.__module__) + return sys.modules[cls.__module__] @classproperty def namespace(cls): From b9b7450f604e1618b24f92d5ab61138f81b223c9 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 29 Apr 2025 09:09:40 -0500 Subject: [PATCH 290/317] Revert "XorgPackage, glx: conflicts windows and darwin (#50216)" (#50231) This reverts commit 382847976f0dd1d50ee1ae120f4575ba30084587. --- lib/spack/spack/build_systems/xorg.py | 5 ----- var/spack/repos/builtin/packages/glx/package.py | 3 --- 2 files changed, 8 deletions(-) diff --git a/lib/spack/spack/build_systems/xorg.py b/lib/spack/spack/build_systems/xorg.py index 47ba83d21a3..131444cbb5e 100644 --- a/lib/spack/spack/build_systems/xorg.py +++ b/lib/spack/spack/build_systems/xorg.py @@ -6,17 +6,12 @@ import spack.package_base import spack.util.url -from spack.directives import conflicts class XorgPackage(spack.package_base.PackageBase): """Mixin that takes care of setting url and mirrors for x.org packages.""" - # x.org packages are not supported on windows or darwin - conflicts("platform=windows") - conflicts("platform=darwin") - #: Path of the package in a x.org mirror xorg_mirror_path: Optional[str] = None diff --git a/var/spack/repos/builtin/packages/glx/package.py b/var/spack/repos/builtin/packages/glx/package.py index 22918f0eade..5ce00b79bf2 100644 --- a/var/spack/repos/builtin/packages/glx/package.py +++ b/var/spack/repos/builtin/packages/glx/package.py @@ -12,9 +12,6 @@ class Glx(BundlePackage): version("1.4") - conflicts("platform=windows") - conflicts("platform=darwin") - depends_on("libglx") provides("gl@4.5") From 0b3bd1e294a621f0e3a5004301bcf983639dc41a Mon Sep 17 00:00:00 2001 From: Wouter Deconinck Date: Tue, 29 Apr 2025 10:35:42 -0500 Subject: [PATCH 291/317] geant4: add v11.3.2 (#50225) --- var/spack/repos/builtin/packages/geant4/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index 2867203617f..94ea15b60b6 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -21,6 +21,7 @@ class Geant4(CMakePackage): maintainers("drbenmorgan", "sethrj") + version("11.3.2", sha256="077edca6aa3b3940f351cf9a948457cad3fb117f215b88c52cce315e1a07fd7a") version("11.3.1", sha256="9059da076928f25cab1ff1f35e0f611a4d7fe005e374e9b8d7f3ff2434b7af54") version("11.3.0", sha256="d9d71daff8890a7b5e0e33ea9a65fe6308ad6713000b43ba6705af77078e7ead") version("11.2.2", sha256="3a8d98c63fc52578f6ebf166d7dffaec36256a186d57f2520c39790367700c8d") From d7d886e3b525f75d73516fb4204c3f2b58874521 Mon Sep 17 00:00:00 2001 From: Philipp Edelmann Date: Tue, 29 Apr 2025 10:44:43 -0600 Subject: [PATCH 292/317] zoltan: add scotch library dependency (#50163) * zoltan: add scotch library dependency Due to the way the shared library is built it does not pick up dependencies to other shared libraries correctly. This adds the library dependency manually in the same way it is already done for parmetis. * add tukss as maintainer for zoltan --- var/spack/repos/builtin/packages/zoltan/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 2cc4879d8fd..509fb63a5ca 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -21,6 +21,8 @@ class Zoltan(AutotoolsPackage): license("Unlicense") + maintainers("tukss") + version("3.901", sha256="030c22d9f7532d3076e40cba1f03a63b2ee961d8cc9a35149af4a3684922a910") version("3.83", sha256="17320a9f08e47f30f6f3846a74d15bfea6f3c1b937ca93c0ab759ca02c40e56c") @@ -153,6 +155,8 @@ def configure_args(self): f"--with-scotch-libdir={scotch_prefix.lib}", ] ) + config_libs.append(spec["scotch"].libs.ld_flags) + config_ldflags.append(spec["scotch"].libs.ld_flags) if spec.satisfies("+mpi"): config_args.extend( From 87505fc2fc016a21d3a414785151ad7aadcde2bc Mon Sep 17 00:00:00 2001 From: Cyrus Harrison Date: Tue, 29 Apr 2025 10:21:33 -0700 Subject: [PATCH 293/317] add conduit 0.9.4 release (#49862) --- var/spack/repos/builtin/packages/ascent/package.py | 2 +- var/spack/repos/builtin/packages/conduit/package.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py index 4e0589f6c02..7df3386e030 100644 --- a/var/spack/repos/builtin/packages/ascent/package.py +++ b/var/spack/repos/builtin/packages/ascent/package.py @@ -176,7 +176,7 @@ class Ascent(CMakePackage, CudaPackage, ROCmPackage): depends_on("conduit@:0.7.2", when="@:0.7.1") depends_on("conduit@0.8.2:", when="@0.8:") depends_on("conduit@0.8.6:", when="@0.9:") - depends_on("conduit@0.9.1:", when="@0.9.3:") + depends_on("conduit@0.9.1:0.9.3", when="@0.9.3:") depends_on("conduit+python", when="+python") depends_on("conduit~python", when="~python") depends_on("conduit+mpi", when="+mpi") diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 18d544dbd85..2a1160dcd1d 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -43,6 +43,7 @@ class Conduit(CMakePackage): # is to bridge any spack dependencies that are still using the name master version("master", branch="develop", submodules=True) # note: 2021-05-05 latest tagged release is now preferred instead of develop + version("0.9.4", sha256="c9edfb2ff09890084313ad9c2d83bfb7c10e70b696980762d1ae1488f9f08e6c") version("0.9.3", sha256="2968fa8df6e6c43800c019a008ef064ee9995dc2ff448b72dc5017c188a2e6d4") version("0.9.2", sha256="45d5a4eccd0fc978d153d29c440c53c483b8f29dfcf78ddcc9aa15c59b257177") version("0.9.1", sha256="a3f1168738dcf72f8ebf83299850301aaf56e803f40618fc1230a755d0d05363") From eaabde6ee9060b886e5a11dc362cee9f48c9b0a7 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 29 Apr 2025 11:30:27 -0600 Subject: [PATCH 294/317] py-netcdf4: enable non-MPI build per variant, even if netcdf-c was built with MPI (#48694) * Add patch for py-netcdf4 so that we can build py-netcdf4 with ~mpi when netCDF was built with +mpi * Address reviewer requests for py-netcdf4. Add conflict for 'pynetcdf4~mpi ^netcdf-c~mpi ^hdf5+mpi' * Make py-netcdf4~mpi ^netcdf-c~mpi ^hdf5+mpi work * Apply suggestions from code review Co-authored-by: Sergey Kosukhin * Update var/spack/repos/builtin/packages/py-netcdf4/disable_parallel_support.patch * Apply suggestions from code review Co-authored-by: Sergey Kosukhin --------- Co-authored-by: Sergey Kosukhin --- .../py-netcdf4/disable_parallel_support.patch | 11 ++++++++ .../builtin/packages/py-netcdf4/package.py | 27 ++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-netcdf4/disable_parallel_support.patch diff --git a/var/spack/repos/builtin/packages/py-netcdf4/disable_parallel_support.patch b/var/spack/repos/builtin/packages/py-netcdf4/disable_parallel_support.patch new file mode 100644 index 00000000000..6c547dd3716 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-netcdf4/disable_parallel_support.patch @@ -0,0 +1,11 @@ +--- a/setup.py ++++ b/setup.py +@@ -392,7 +392,7 @@ + (netcdf_lib_version > "4.4" and netcdf_lib_version < "4.5"): + has_cdf5_format = True + +- has_parallel_support = check_has_parallel_support(inc_dirs) ++ has_parallel_support = False + has_has_not = "has" if has_parallel_support else "does not have" + print(f"netcdf lib {has_has_not} parallel functions") + diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py index 3749b3ec139..94eb5e1f083 100644 --- a/var/spack/repos/builtin/packages/py-netcdf4/package.py +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -44,12 +44,19 @@ class PyNetcdf4(PythonPackage): # https://github.com/Unidata/netcdf4-python/pull/1317 depends_on("py-numpy@:1", when="@:1.6", type=("build", "link", "run")) depends_on("py-mpi4py", when="+mpi", type=("build", "run")) - # These forced variant requests are due to py-netcdf4 build scripts - # https://github.com/spack/spack/pull/47824#discussion_r1882473998 - depends_on("netcdf-c~mpi", when="~mpi") - depends_on("netcdf-c+mpi", when="+mpi") - depends_on("hdf5@1.8.0:+hl~mpi", when="~mpi") - depends_on("hdf5@1.8.0:+hl+mpi", when="+mpi") + + depends_on("netcdf-c") + depends_on("hdf5") + with when("@:1.6~mpi"): + # These forced variant requests are due to py-netcdf4 build scripts + # https://github.com/spack/spack/pull/47824#discussion_r1882473998 + depends_on("netcdf-c~mpi") + depends_on("hdf5~mpi") + with when("+mpi"): + depends_on("netcdf-c+mpi") + depends_on("hdf5+mpi") + # We cannot build py-netcdf4~mpi ^netcdf-c~mpi ^hdf5+mpi + conflicts("hdf5+mpi", when="~mpi ^netcdf-c~mpi") # The installation script tries to find hdf5 using pkg-config. However, the # version of hdf5 installed with Spack does not have pkg-config files. @@ -58,6 +65,14 @@ class PyNetcdf4(PythonPackage): # following patch disables the usage of pkg-config at all. patch("disable_pkgconf.patch") + # Allow building py-netcdf4 ~mpi when netCDF was build with +mpi. This patch + # overrides the auto-decect feature (has_parallel_support) in setup.py. The + # logic in setup.py changed between 1.6 and 1.7, therefore this patch only + # works for versions 1.7.0 and later. + # See also: https://github.com/Unidata/netcdf4-python/issues/1389 + with when("@1.7:~mpi"): + patch("disable_parallel_support.patch", when="^netcdf-c+mpi") + # https://github.com/Unidata/netcdf4-python/pull/1322 patch( "https://github.com/Unidata/netcdf4-python/commit/49dcd0b5bd25824c254770c0d41445133fc13a46.patch?full_index=1", From 0685c6277eeb90158df49ae68ad5da12bb184422 Mon Sep 17 00:00:00 2001 From: Nai-Yuan Chiang Date: Tue, 29 Apr 2025 11:16:10 -0700 Subject: [PATCH 295/317] hiop: add v1.1.1 (#50069) * use hiop new release v1.1.1 * remove "# generated" comments on language dependencies Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --- .../repos/builtin/packages/hiop/package.py | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/hiop/package.py b/var/spack/repos/builtin/packages/hiop/package.py index f8b46161d08..9afe3602178 100644 --- a/var/spack/repos/builtin/packages/hiop/package.py +++ b/var/spack/repos/builtin/packages/hiop/package.py @@ -21,6 +21,9 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") # Most recent tagged snapshot is the preferred version when profiling. + version( + "1.1.1", tag="v1.1.1", commit="d8762e05150b2040a27f69d8bf6603f22190a869", submodules=True + ) version( "1.1.0", tag="v1.1.0", commit="7ccfa86a71fdb670ae690199ac676f3c1365799a", submodules=True ) @@ -72,10 +75,6 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version("develop", branch="develop") - depends_on("c", type="build") - depends_on("cxx", type="build") - depends_on("fortran", type="build") - variant( "axom", default=False, @@ -100,9 +99,9 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): description="Enable/disable cuSovler LU refactorization", ) - 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("lapack") depends_on("blas") @@ -152,11 +151,14 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage): # RAJA > 0.14 and Umpire > 6.0 require c++ std 14 # We are working on supporting newer Umpire/RAJA versions - depends_on("raja@0.14", when="@0.5:+raja") + depends_on("raja@2024.07.0", when="@1.1.1:+raja") + depends_on("raja@0.14", when="@0.5:1.1.0+raja") depends_on("raja@:0.13", when="@0.3.99:0.4+raja") - depends_on("umpire@6", when="@0.5:+raja") + depends_on("umpire@2024.07.0", when="@1.1.1:+raja") + depends_on("umpire@6", when="@0.5:1.1.0+raja") depends_on("umpire@:5", when="@0.3.99:0.4+raja") - depends_on("camp@0.2.3:0.2", when="@0.3.99:+raja") + depends_on("camp@0.2.3:0.2", when="@0.3.99:1.1.0+raja") + depends_on("camp@2024.07.0", when="@1.1.1+raja") # This is no longer a requirement in RAJA > 0.14 depends_on("umpire+cuda~shared", when="+raja+cuda ^raja@:0.14") From 43f180c2c59adee1109e84f9e9669d3eba0ce301 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Tue, 29 Apr 2025 14:35:43 -0400 Subject: [PATCH 296/317] amdblis: delete unused patch file (#50199) --- .../amdblis/blis-4.0_gcc_clang_znver4.patch | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/amdblis/blis-4.0_gcc_clang_znver4.patch diff --git a/var/spack/repos/builtin/packages/amdblis/blis-4.0_gcc_clang_znver4.patch b/var/spack/repos/builtin/packages/amdblis/blis-4.0_gcc_clang_znver4.patch deleted file mode 100644 index 31f71bf8c5a..00000000000 --- a/var/spack/repos/builtin/packages/amdblis/blis-4.0_gcc_clang_znver4.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff -Naur a/config/zen4/make_defs.mk b/config/zen4/make_defs.mk ---- a/config/zen4/make_defs.mk 2022-11-12 13:05:45.000000000 +0000 -+++ b/config/zen4/make_defs.mk 2023-05-12 14:40:10.848359434 +0000 -@@ -73,6 +73,15 @@ - - - # gcc 11.0 or later: -+ifeq ($(shell test $(GCC_VERSION) -ge 13; echo $$?),0) -+ifneq ($(DEBUG_TYPE),noopt) -+CKOPTFLAGS := -O2 -fgcse-after-reload -fipa-cp-clone -floop-interchange -floop-unroll-and-jam -fpeel-loops -fpredictive-commoning -fsplit-loops -fsplit-paths -ftree-loop-distribution -funswitch-loops -fvect-cost-model=dynamic -fversion-loops-for-strides -fomit-frame-pointer -+endif -+ -+CKVECFLAGS += -march=znver4 -mfpmath=sse -+CRVECFLAGS += -march=znver4 -+ -+else - ifeq ($(shell test $(GCC_VERSION) -ge 11; echo $$?),0) - # Update CKOPTFLAGS for gcc 11+ to use O3 optimization without - # -ftree-partial-pre flag. This flag results in suboptimal code -@@ -100,6 +109,7 @@ - endif # GCC 8 - endif # GCC 9 - endif # GCC 11 -+endif # GCC 13 - else - ifeq ($(CC_VENDOR),clang) - -@@ -132,6 +142,16 @@ - #if compiling with clang - VENDOR_STRING := $(strip $(shell ${CC_VENDOR} --version | egrep -o '[0-9]+\.[0-9]+\.?[0-9]*')) - CC_MAJOR := $(shell (echo ${VENDOR_STRING} | cut -d. -f1)) -+#clang 16 or later: -+ifeq ($(shell test $(CC_MAJOR) -ge 16; echo $$?),0) -+CKVECFLAGS += -march=znver4 -+CRVECFLAGS += -march=znver4 -+else -+#clang 12 or later: -+ifeq ($(shell test $(CC_MAJOR) -ge 12; echo $$?),0) -+CKVECFLAGS += -march=znver3 -mavx512f -mavx512dq -mavx512bw -mavx512vl -mavx512vnni -mavx512bf16 -mfpmath=sse -falign-loops=64 -+CRVECFLAGS += -march=znver3 -+else - #clang 9.0 or later: - ifeq ($(shell test $(CC_MAJOR) -ge 9; echo $$?),0) - CKVECFLAGS += -march=znver2 -@@ -139,7 +159,9 @@ - else - CKVECFLAGS += -march=znver1 - CRVECFLAGS += -march=znver1 --endif # ge 9 -+endif # clang 9 -+endif # clang 12 -+endif # clang 16 - endif # aocc 2 - endif # aocc 3 - endif # aocc 4 From 6d2cc2d27a9730c8a872ed3ce90a2c4f5a8e00f4 Mon Sep 17 00:00:00 2001 From: Dave Keeshan <96727608+davekeeshan@users.noreply.github.com> Date: Tue, 29 Apr 2025 23:11:15 +0100 Subject: [PATCH 297/317] verilator: Add v5.036 (#50234) --- var/spack/repos/builtin/packages/verilator/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/verilator/package.py b/var/spack/repos/builtin/packages/verilator/package.py index 3a7c75d081b..01f311ba970 100644 --- a/var/spack/repos/builtin/packages/verilator/package.py +++ b/var/spack/repos/builtin/packages/verilator/package.py @@ -41,6 +41,7 @@ class Verilator(AutotoolsPackage): version("master", branch="master") + version("5.036", sha256="4199964882d56cf6a19ce80c6a297ebe3b0c35ea81106cd4f722342594337c47") version("5.034", sha256="002da98e316ca6eee40407f5deb7d7c43a0788847d39c90d4d31ddbbc03020e8") version("5.032", sha256="5a262564b10be8bdb31ff4fb67d77bcf5f52fc1b4e6c88d5ca3264fb481f1e41") version("5.030", sha256="b9e7e97257ca3825fcc75acbed792b03c3ec411d6808ad209d20917705407eac") From d640ce74e0fe8e8299ea9d6df46ed94482c285ed Mon Sep 17 00:00:00 2001 From: "Marc T. Henry de Frahan" Date: Tue, 29 Apr 2025 16:15:12 -0600 Subject: [PATCH 298/317] Update openfast versions (#50228) --- var/spack/repos/builtin/packages/openfast/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py index 32ec7360bf2..4b601cbcd20 100644 --- a/var/spack/repos/builtin/packages/openfast/package.py +++ b/var/spack/repos/builtin/packages/openfast/package.py @@ -17,8 +17,7 @@ class Openfast(CMakePackage): version("develop", branch="dev") version("master", branch="main") - version("4.0.3", tag="v4.0.3", commit="20632d7728da024478956b545876eb24a48dadbe") - version("4.0.2", tag="v4.0.2", commit="fc1110183bcc87b16d93129edabdce6d30e3a497") + version("4.0.4", tag="v4.0.4", commit="d28a823169e75029d73362b07a2942d0a454f03b") version("3.5.5", tag="v3.5.5", commit="b48e032303c12df6949c67ebffb7050b888db000") version("3.5.4", tag="v3.5.4", commit="6a63db76978b0f703165391291963beb517d5a9e") version("3.5.3", tag="v3.5.3", commit="6a7a543790f3cad4a65b87242a619ac5b34b4c0f") @@ -39,6 +38,8 @@ class Openfast(CMakePackage): version("1.0.0", tag="v1.0.0", commit="e788b9b18bd5ed96ea59d4bc0812d461bc430cfe") with default_args(deprecated=True): + version("4.0.3", tag="v4.0.3", commit="20632d7728da024478956b545876eb24a48dadbe") + version("4.0.2", tag="v4.0.2", commit="fc1110183bcc87b16d93129edabdce6d30e3a497") version("4.0.1", tag="v4.0.1", commit="89358f1843b62071ee1a8ca943c1b5277bcbd45a") version("4.0.0", tag="v4.0.0", commit="da685d4997fd17ea845812c785325efa72edcf47") From c63314987445ae48257b141b1206805fdb0f4d50 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 30 Apr 2025 00:22:23 +0200 Subject: [PATCH 299/317] PyTorch: add v2.7.0 (#50195) * PyTorch: add v2.7.0 * py-torchaudio: add v2.7.0 * Fix rpath issues * PyTorch: disable libomp linking and fix rpath issue --- .../builtin/packages/py-sympy/package.py | 1 + .../packages/py-torch/macos_rpath.patch | 14 +++++++++++++ .../builtin/packages/py-torch/package.py | 21 +++++++++++++------ .../builtin/packages/py-torchaudio/package.py | 9 ++------ .../packages/py-torchvision/package.py | 9 ++------ .../repos/builtin/packages/sleef/package.py | 5 ++++- 6 files changed, 38 insertions(+), 21 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-torch/macos_rpath.patch diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index ce35f267fbf..c06bf001b13 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -12,6 +12,7 @@ class PySympy(PythonPackage): license("BSD-3-Clause") + version("1.13.3", sha256="b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9") version("1.13.1", sha256="9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f") version("1.13.0", sha256="3b6af8f4d008b9a1a6a4268b335b984b23835f26d1d60b0526ebc71d48a25f57") version("1.12", sha256="ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8") diff --git a/var/spack/repos/builtin/packages/py-torch/macos_rpath.patch b/var/spack/repos/builtin/packages/py-torch/macos_rpath.patch new file mode 100644 index 00000000000..b20057f528c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/macos_rpath.patch @@ -0,0 +1,14 @@ +diff --git a/setup.py b/setup.py +index 61ee9363fc2..db476913d31 100644 +--- a/setup.py ++++ b/setup.py +@@ -720,9 +720,6 @@ class build_ext(setuptools.command.build_ext.build_ext): + # It's an old-style class in Python 2.7... + setuptools.command.build_ext.build_ext.run(self) + +- if IS_DARWIN: +- self._embed_libomp() +- + # Copy the essential export library to compile C++ extensions. + if IS_WINDOWS: + build_temp = self.build_temp diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 3d4237ab661..fc89de5c1c7 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -26,6 +26,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): tags = ["e4s"] version("main", branch="main") + version("2.7.0", tag="v2.7.0", commit="134179474539648ba7dee1317959529fbd0e7f89") version("2.6.0", tag="v2.6.0", commit="1eba9b3aa3c43f86f4a2c807ac8e12c4a7767340") version("2.5.1", tag="v2.5.1", commit="a8d6afb511a69687bbb2b7e88a3cf67917e1697e") version("2.5.0", tag="v2.5.0", commit="32f585d9346e316e554c8d9bf7548af9f62141fc") @@ -177,7 +178,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): depends_on("py-typing-extensions@4.8:", when="@2.2:") depends_on("py-typing-extensions@3.6.2.1:", when="@1.7:") depends_on("py-setuptools") - depends_on("py-sympy@1.13.1", when="@2.5:") + depends_on("py-sympy@1.13.3:", when="@2.7:") + depends_on("py-sympy@1.13.1", when="@2.5:2.6") depends_on("py-sympy", when="@2:") depends_on("py-networkx", when="@2:") depends_on("py-jinja2", when="@2:") @@ -196,7 +198,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): depends_on("blas") depends_on("lapack") - # Third party dependencies + # third_party depends_on("fp16@2020-05-14", when="@1.6:") depends_on("fxdiv@2020-04-17", when="@1.6:") depends_on("nvtx@3.1.0", when="@2.6:") @@ -265,7 +267,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): depends_on("py-pybind11@2.10.0:", when="@1.13:1") depends_on("py-pybind11@2.6.2:", when="@1.8:1.12") depends_on("py-pybind11@2.3.0:", when="@:1.7") - depends_on("sleef@3.6.0_2024-03-20", when="@2.4:") + depends_on("sleef@3.7.0_2024-12-06", when="@2.7:") + depends_on("sleef@3.6.0_2024-03-20", when="@2.4:2.6") depends_on("sleef@3.5.1_2020-12-22", when="@1.8:2.3") depends_on("sleef@3.4.0_2019-07-30", when="@1.6:1.7") @@ -325,6 +328,9 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): conflicts("%gcc@:9.3", when="@2.2:", msg="C++17 support required") + # https://github.com/pytorch/pytorch/issues/151592 + patch("macos_rpath.patch", when="@2.7:") + # https://github.com/pytorch/pytorch/issues/151316 patch( "https://github.com/pytorch/pytorch/pull/151344.patch?full_index=1", @@ -335,10 +341,9 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # https://github.com/pytorch/pytorch/issues/146239 patch( - "https://github.com/pytorch/pytorch/pull/140275.patch?full_index=1", - sha256="65f56305a27d47d7065711d1131c6ac1611fabcb55b129c27ed6beabe4b94fe0", + "https://github.com/pytorch/pytorch/pull/146637.patch?full_index=1", + sha256="f93aa66e2cf9c0febdbcf72f44213a213e570e5f860186e81c92c8d2af0857c0", when="@2.6:", - reverse=True, ) # https://github.com/pytorch/pytorch/issues/90448 @@ -563,6 +568,10 @@ def enable_or_disable(variant, keyword="USE", var=None): elif "~" + variant in self.spec: env.set(keyword + "_" + var, "OFF") + # https://github.com/pytorch/pytorch/issues/151592 + if self.spec.satisfies("@:2.6"): + env.set("PACKAGE_TYPE", "conda") + # Build in parallel to speed up build times env.set("MAX_JOBS", str(make_jobs)) diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index ea21b585cb2..d901b0df759 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -17,6 +17,7 @@ class PyTorchaudio(PythonPackage): maintainers("adamjstewart") version("main", branch="main") + version("2.7.0", tag="v2.7.0", commit="654fee8fd17784271be1637eac1293fd834b4e9a") version("2.6.0", tag="v2.6.0", commit="d8831425203385077a03c1d92cfbbe3bf2106008") version("2.5.1", tag="v2.5.1", commit="1661daf10599ca8889f092ec37814fabbe202bb0") version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd") @@ -76,6 +77,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.7.0", when="@2.7.0") depends_on("py-torch@2.6.0", when="@2.6.0") depends_on("py-torch@2.5.1", when="@2.5.1") depends_on("py-torch@2.5.0", when="@2.5.0") @@ -149,13 +151,6 @@ def patch(self): string=True, ) - 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: EnvironmentModifications) -> None: # tools/setup_helpers/extension.py env.set("BUILD_SOX", "0") diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 0e6983e3c04..60d28bdd857 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -18,6 +18,7 @@ class PyTorchvision(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.22.0", sha256="83ed8855cdfb138aba6f116f8fd8da8b83463170dad67a70f60327915ed12014") version("0.21.0", sha256="0a4a967bbb7f9810f792cd0289a07fb98c8fb5d1303fae8b63e3a6b05d720058") version("0.20.1", sha256="7e08c7f56e2c89859310e53d898f72bccc4987cd83e08cfd6303513da15a9e71") version("0.20.0", sha256="b59d9896c5c957c6db0018754bbd17d079c5102b82b9be0b438553b40a7b6029") @@ -82,6 +83,7 @@ class PyTorchvision(PythonPackage): # https://github.com/pytorch/vision#installation depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.7.0", when="@0.22.0") depends_on("py-torch@2.6.0", when="@0.21.0") depends_on("py-torch@2.5.1", when="@0.20.1") depends_on("py-torch@2.5.0", when="@0.20.0") @@ -166,13 +168,6 @@ class PyTorchvision(PythonPackage): # Many of the datasets require additional dependencies to use. # These can be installed after the fact. - 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: EnvironmentModifications) -> None: # The only documentation on building is what is found in setup.py and: # https://github.com/pytorch/vision/blob/main/CONTRIBUTING.md#development-installation diff --git a/var/spack/repos/builtin/packages/sleef/package.py b/var/spack/repos/builtin/packages/sleef/package.py index ac271ad91e3..f76ee96eac9 100644 --- a/var/spack/repos/builtin/packages/sleef/package.py +++ b/var/spack/repos/builtin/packages/sleef/package.py @@ -17,9 +17,12 @@ class Sleef(CMakePackage): license("BSL-1.0") version("master", branch="master") + version("3.7.0_2024-12-06", commit="56e1f79cb140fb9326d612d0be06b5250565cade") # py-torch@2.7: version("3.7.0", commit="c5494730bf601599a55f4e77f357b51ba590585e", preferred=True) version("3.6.1", commit="6ee14bcae5fe92c2ff8b000d5a01102dab08d774") - version("3.6.0_2024-03-20", commit="60e76d2bce17d278b439d9da17177c8f957a9e9b") # py-torch@2.4: + version( + "3.6.0_2024-03-20", commit="60e76d2bce17d278b439d9da17177c8f957a9e9b" + ) # py-torch@2.4:2.6 version("3.6.0", commit="a99491afee2bae0b11e9ffbf3211349f43a5fd10") version( "3.5.1_2020-12-22", commit="e0a003ee838b75d11763aa9c3ef17bf71a725bff" From 6547758b2fdc8419b069eb5823a6278f71c031ef Mon Sep 17 00:00:00 2001 From: Robert Maaskant Date: Wed, 30 Apr 2025 01:13:59 +0200 Subject: [PATCH 300/317] py-hatchling: add v1.27.0 (#50146) * py-hatchling: add v1.27.0 * py-hatchling: fix deps --- .../builtin/packages/py-hatchling/package.py | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-hatchling/package.py b/var/spack/repos/builtin/packages/py-hatchling/package.py index 6d24eff76cd..27d8a1b5f50 100644 --- a/var/spack/repos/builtin/packages/py-hatchling/package.py +++ b/var/spack/repos/builtin/packages/py-hatchling/package.py @@ -14,6 +14,7 @@ class PyHatchling(PythonPackage): license("MIT", checked_by="tgamblin") + version("1.27.0", sha256="971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6") version("1.25.0", sha256="7064631a512610b52250a4d3ff1bd81551d6d1431c4eb7b72e734df6c74f4262") version("1.24.2", sha256="41ddc27cdb25db9ef7b68bef075f829c84cb349aa1bff8240797d012510547b0") version("1.21.0", sha256="5c086772357a50723b825fd5da5278ac7e3697cdf7797d07541a6c90b6ff754c") @@ -25,11 +26,23 @@ class PyHatchling(PythonPackage): version("1.8.1", sha256="448b04b23faed669b2b565b998ac955af4feea66c5deed3a1212ac9399d2e1cd") version("1.4.1", sha256="13461b42876ade4f75ee5d2a2c656b288ca0aab7f048ef66657ef166996b2118") - depends_on("py-editables@0.3:", type=("build", "run")) - depends_on("py-packaging@21.3:", type=("build", "run")) - depends_on("py-packaging@23.2:", when="@1.24.2:", type=("build", "run")) - depends_on("py-pathspec@0.10.1:", when="@1.9:", type=("build", "run")) - depends_on("py-pathspec@0.9:", type=("build", "run")) - depends_on("py-pluggy@1:", type=("build", "run")) - depends_on("py-tomli@1.2.2:", when="^python@:3.10", type=("build", "run")) - depends_on("py-trove-classifiers", when="@1.14:", type=("build", "run")) + with default_args(type=("build", "run")): + depends_on("python@3.8:", when="@1.18:") + depends_on("python@3.7:", when="@1.12:") + + depends_on("py-editables@0.3:", when="@:1.21") + + depends_on("py-importlib-metadata", when="@1.12:1.17 ^python@:3.7") + + depends_on("py-packaging@24.2:", when="@1.26:") + depends_on("py-packaging@23.2:", when="@1.23:") + depends_on("py-packaging@21.3:") + + depends_on("py-pathspec@0.10.1:", when="@1.9:") + depends_on("py-pathspec@0.9:") + + depends_on("py-pluggy@1:") + + depends_on("py-tomli@1.2.2:", when="^python@:3.10") + + depends_on("py-trove-classifiers", when="@1.14:") From 1252bd975c53203d61e665a8c35a9a2e935cecac Mon Sep 17 00:00:00 2001 From: "John W. Parent" <45471568+johnwparent@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:47:29 -0400 Subject: [PATCH 301/317] Revert "Windows Ci: Ensure consistent EOL (#49377)" (#49705) This reverts commit f3257cea90987ec427adbb23ea5014d6045dacc5. This is now handled by spack/spack-infrastructure#1081 --- share/spack/gitlab/cloud_pipelines/configs/win64/ci.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/share/spack/gitlab/cloud_pipelines/configs/win64/ci.yaml b/share/spack/gitlab/cloud_pipelines/configs/win64/ci.yaml index 649e3f0ef87..2d8aedf6d44 100644 --- a/share/spack/gitlab/cloud_pipelines/configs/win64/ci.yaml +++ b/share/spack/gitlab/cloud_pipelines/configs/win64/ci.yaml @@ -5,7 +5,6 @@ ci: - Write-Output "Done" before_script:: - - git config core.autocrlf true - fsutil 8dot3name set C:\ 0 - . .\share\spack\setup-env.ps1 - If (Test-Path -path C:\\key\intermediate_ci_signing_key.gpg) { spack.ps1 gpg trust C:\\key\intermediate_ci_signing_key.gpg } From 30cea3ce8a4400e130675d9b3a843970ce4ec624 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 29 Apr 2025 20:32:40 -0600 Subject: [PATCH 302/317] seacas: bug fixes, new version (#50240) Fix to cpup for zone grid connectivity. Previous versions broken for some meshes. Database entity names (sets, blocks) are not lowercased by default. Numbers code now partially handles tet meshes --- var/spack/repos/builtin/packages/seacas/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py index 6580dd878af..8cb6287724d 100644 --- a/var/spack/repos/builtin/packages/seacas/package.py +++ b/var/spack/repos/builtin/packages/seacas/package.py @@ -34,6 +34,9 @@ class Seacas(CMakePackage): # ###################### Versions ########################## version("master", branch="master") + version( + "2025-04-29", sha256="2a3a1533a1fbff8e8b78814a3a45f6fadfb3f05b5d9d10a4f0452c7bb4d1aa2f" + ) version( "2025-04-14", sha256="7704fc27e4f0d283fd9272ea769dbeffd971315a982e265c0d7c99fc77186476" ) From cc8983cf82bcd8a56084105875efc0693a566d49 Mon Sep 17 00:00:00 2001 From: Chris Marsh Date: Wed, 30 Apr 2025 00:07:10 -0600 Subject: [PATCH 303/317] r: updates for compilers-as-nodes (#50174) --- var/spack/repos/builtin/packages/py-rpy2/package.py | 5 ++++- var/spack/repos/builtin/packages/r-askpass/package.py | 3 +++ var/spack/repos/builtin/packages/r-backports/package.py | 2 ++ var/spack/repos/builtin/packages/r-cachem/package.py | 3 +++ var/spack/repos/builtin/packages/r-cli/package.py | 2 ++ var/spack/repos/builtin/packages/r-curl/package.py | 3 +++ var/spack/repos/builtin/packages/r-data-table/package.py | 3 +++ var/spack/repos/builtin/packages/r-digest/package.py | 3 +++ var/spack/repos/builtin/packages/r-dplyr/package.py | 3 +++ var/spack/repos/builtin/packages/r-fansi/package.py | 2 ++ var/spack/repos/builtin/packages/r-farver/package.py | 3 +++ var/spack/repos/builtin/packages/r-fastmap/package.py | 3 +++ var/spack/repos/builtin/packages/r-fs/package.py | 3 +++ var/spack/repos/builtin/packages/r-glue/package.py | 3 +++ var/spack/repos/builtin/packages/r-htmltools/package.py | 3 +++ var/spack/repos/builtin/packages/r-lattice/package.py | 3 +++ var/spack/repos/builtin/packages/r-lubridate/package.py | 2 ++ var/spack/repos/builtin/packages/r-mass/package.py | 3 +++ var/spack/repos/builtin/packages/r-matrix/package.py | 3 +++ var/spack/repos/builtin/packages/r-mgcv/package.py | 2 ++ var/spack/repos/builtin/packages/r-nlme/package.py | 4 ++++ var/spack/repos/builtin/packages/r-openssl/package.py | 2 ++ var/spack/repos/builtin/packages/r-pbdzmq/package.py | 3 +++ var/spack/repos/builtin/packages/r-processx/package.py | 3 +++ var/spack/repos/builtin/packages/r-ps/package.py | 2 ++ var/spack/repos/builtin/packages/r-purrr/package.py | 3 +++ var/spack/repos/builtin/packages/r-ragg/package.py | 3 +++ var/spack/repos/builtin/packages/r-readr/package.py | 3 +++ var/spack/repos/builtin/packages/r-readxl/package.py | 3 +++ var/spack/repos/builtin/packages/r-rlang/package.py | 2 ++ var/spack/repos/builtin/packages/r-sass/package.py | 3 +++ var/spack/repos/builtin/packages/r-stringi/package.py | 3 +++ var/spack/repos/builtin/packages/r-sys/package.py | 2 ++ var/spack/repos/builtin/packages/r-systemfonts/package.py | 3 +++ var/spack/repos/builtin/packages/r-textshaping/package.py | 3 +++ var/spack/repos/builtin/packages/r-tidyr/package.py | 3 +++ var/spack/repos/builtin/packages/r-timechange/package.py | 3 +++ var/spack/repos/builtin/packages/r-tzdb/package.py | 3 +++ var/spack/repos/builtin/packages/r-utf8/package.py | 2 ++ var/spack/repos/builtin/packages/r-uuid/package.py | 1 + var/spack/repos/builtin/packages/r-vroom/package.py | 3 +++ var/spack/repos/builtin/packages/r-xfun/package.py | 2 ++ var/spack/repos/builtin/packages/r-xml2/package.py | 3 +++ var/spack/repos/builtin/packages/r-yaml/package.py | 2 ++ 44 files changed, 120 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-rpy2/package.py b/var/spack/repos/builtin/packages/py-rpy2/package.py index 30dcb9f20ae..f7aac121bf3 100644 --- a/var/spack/repos/builtin/packages/py-rpy2/package.py +++ b/var/spack/repos/builtin/packages/py-rpy2/package.py @@ -31,6 +31,9 @@ class PyRpy2(PythonPackage): variant("pandas", default=True, description="Pandas", when="@3.5.17:") variant("ipython", default=True, description="iPython", when="@3.5.17:") + depends_on("c", type="build") + depends_on("cxx", type="build") + # many of the previous minor and patch versions change dependency versions so future updates # should be careful of that depends_on("python@3.8:", type=("build", "run"), when="@3.5.17:") @@ -61,7 +64,7 @@ class PyRpy2(PythonPackage): depends_on("py-backports-zoneinfo", type=("build", "run"), when="@3.5.17: ^python@:3.8") - depends_on("iconv", type=("link")) + depends_on("iconv") # These are from 2019 and predate the pyproject.toml config that currently exists with when("@3.0.0:3.0.4"): diff --git a/var/spack/repos/builtin/packages/r-askpass/package.py b/var/spack/repos/builtin/packages/r-askpass/package.py index 3ebd090978b..9fdb91e2ff3 100644 --- a/var/spack/repos/builtin/packages/r-askpass/package.py +++ b/var/spack/repos/builtin/packages/r-askpass/package.py @@ -24,4 +24,7 @@ class RAskpass(RPackage): version("1.2.0", sha256="b922369781934d0ffc8d0c0177e8ace56796c2e6a726f65e460c16f792592cef") version("1.1", sha256="db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r-sys@2.1:", 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 44e439673b2..a34feac243b 100644 --- a/var/spack/repos/builtin/packages/r-backports/package.py +++ b/var/spack/repos/builtin/packages/r-backports/package.py @@ -28,4 +28,6 @@ class RBackports(RPackage): version("1.1.1", sha256="494e81a4829339c8f1cc3e015daa807e9138b8e21b929965fc7c00b1abbe8897") version("1.1.0", sha256="c5536966ed6ca93f20c9a21d4f569cc1c6865d3352445ea66448f82590349fcd") + depends_on("c", type="build") + depends_on("r@3.0.0:", 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 7bc10ac1b64..44e42ebd8b5 100644 --- a/var/spack/repos/builtin/packages/r-cachem/package.py +++ b/var/spack/repos/builtin/packages/r-cachem/package.py @@ -20,6 +20,9 @@ class RCachem(RPackage): version("1.0.7", sha256="234fad2a947d1e1fb87d3fa92abf9197877772e31bc81ae5991ae69689b6320a") version("1.0.6", sha256="9a9452f7bcf3f79436c418b3c3290449fb8fd338714d9b992153754d112f1864") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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-cli/package.py b/var/spack/repos/builtin/packages/r-cli/package.py index 127c87778b6..e0b7143edd3 100644 --- a/var/spack/repos/builtin/packages/r-cli/package.py +++ b/var/spack/repos/builtin/packages/r-cli/package.py @@ -33,6 +33,8 @@ class RCli(RPackage): version("1.0.1", sha256="ef80fbcde15760fd55abbf9413b306e3971b2a7034ab8c415fb52dc0088c5ee4") version("1.0.0", sha256="8fa3dbfc954ca61b8510f767ede9e8a365dac2ef95fe87c715a0f37d721b5a1d") + depends_on("c", type="build") + depends_on("r@2.10:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@3.3.0:") diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 5ef3167c7ff..c6992d61166 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -61,6 +61,9 @@ class RCurl(RPackage): deprecated=True, ) + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.0.0:", type=("build", "run")) depends_on("curl", when="@4.3:") depends_on("curl@:7.63", when="@:4.0") 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 b55842231be..501db749f38 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -39,6 +39,9 @@ class RDataTable(RPackage): version("1.9.8", sha256="dadb21a14a7f4d60955cdd8fb9779136833498be97b1625914e9a6b580646f4d") version("1.9.6", sha256="6f74c349c1731823aef6899edcf18418454167d04eba983e3a6fe17ee9fd236e") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.1.0:", type=("build", "run")) depends_on("zlib-api") depends_on("llvm-openmp", when="platform=darwin %apple-clang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 803c82cb32c..ff99f006e95 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -42,6 +42,9 @@ class RDigest(RPackage): version("0.6.11", sha256="edab2ca2a38bd7ee19482c9d2531cd169d5123cde4aa2a3dd65c0bcf3d1d5209") version("0.6.9", sha256="95fdc36011869fcfe21b40c3b822b931bc01f8a531e2c9260582ba79560dbe47") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@2.4.1:", type=("build", "run")) depends_on("r@3.1.0:", type=("build", "run"), when="@0.6.16:") depends_on("r@3.3.0:", type=("build", "run"), when="@0.6.27:") diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index 70504cbaa44..217cb2b4dbc 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -33,6 +33,9 @@ class RDplyr(RPackage): version("0.7.0", sha256="27b3593c09da5e99c0c4fb19ea826edd2cab619f8aaefd0cfd2a4140a0bd9410") version("0.5.0", sha256="93d3b829f1c2d38e14a4f2fa7d6398fc6c1a9e4189b3e78bc38a0eb0e864454f") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.1.2:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@0.8.1:") depends_on("r@3.3.0:", type=("build", "run"), when="@1.0.3:") diff --git a/var/spack/repos/builtin/packages/r-fansi/package.py b/var/spack/repos/builtin/packages/r-fansi/package.py index 2d039abdceb..bccc1f4ee70 100644 --- a/var/spack/repos/builtin/packages/r-fansi/package.py +++ b/var/spack/repos/builtin/packages/r-fansi/package.py @@ -27,4 +27,6 @@ class RFansi(RPackage): version("0.2.2", sha256="71dfdda467985a4d630ecf93d4bc60446a8a78d69dbd7ac24cc45822329d4bce") version("0.2.1", sha256="abe709d69ddd6610aaa24e049c7a97c16a2c2dbe0873d4e3b8af57e486ef05c5") + depends_on("c", type="build") + depends_on("r@3.1.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-farver/package.py b/var/spack/repos/builtin/packages/r-farver/package.py index 48e4e3fcc9a..df190b29b60 100644 --- a/var/spack/repos/builtin/packages/r-farver/package.py +++ b/var/spack/repos/builtin/packages/r-farver/package.py @@ -25,3 +25,6 @@ class RFarver(RPackage): version("2.1.0", sha256="e5c8630607049f682fb3002b99ca4f5e7c6b94f8b2a4342df594e7853b77cef4") version("2.0.3", sha256="0e1590df79ec6078f10426411b96216b70568a4eaf3ffd84ca723add0ed8e5cc") version("2.0.1", sha256="71473e21727357084c6aec4bb9bb258a6797a0f676b4b27504a03f16aa2f4e54") + + depends_on("c", type="build") + depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/r-fastmap/package.py b/var/spack/repos/builtin/packages/r-fastmap/package.py index 423d4c26b13..b4b75e18f25 100644 --- a/var/spack/repos/builtin/packages/r-fastmap/package.py +++ b/var/spack/repos/builtin/packages/r-fastmap/package.py @@ -23,3 +23,6 @@ class RFastmap(RPackage): version("1.1.1", sha256="3623809dd016ae8abd235200ba7834effc4b916915a059deb76044137c5c7173") version("1.1.0", sha256="9113e526b4c096302cfeae660a06de2c4c82ae4e2d3d6ef53af6de812d4c822b") version("1.0.1", sha256="4778b05dfebd356f8df980dfeff3b973a72bca14898f870e5c40c1d84db9faec") + + depends_on("c", type="build") + depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/r-fs/package.py b/var/spack/repos/builtin/packages/r-fs/package.py index e65caa10b7c..9ce59067545 100644 --- a/var/spack/repos/builtin/packages/r-fs/package.py +++ b/var/spack/repos/builtin/packages/r-fs/package.py @@ -21,6 +21,9 @@ class RFs(RPackage): version("1.5.0", sha256="36df1653571de3c628a4f769c4627f6ac53d0f9e4106d9d476afb22ae9603897") version("1.3.1", sha256="d6934dca8f835d8173e3fb9fd4d5e2740c8c04348dd2bcc57df1b711facb46bc") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-glue/package.py b/var/spack/repos/builtin/packages/r-glue/package.py index 7ab199a14b5..82e98093972 100644 --- a/var/spack/repos/builtin/packages/r-glue/package.py +++ b/var/spack/repos/builtin/packages/r-glue/package.py @@ -29,6 +29,9 @@ class RGlue(RPackage): version("1.3.0", sha256="789e5a44c3635c3d3db26666e635e88adcf61cd02b75465125d95d7a12291cee") version("1.2.0", sha256="19275b34ee6a1bcad05360b7eb996cebaa1402f189a5dfb084e695d423f2296e") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index 06f017a3ca1..baf7c5e51d7 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -23,6 +23,9 @@ class RHtmltools(RPackage): version("0.3.6", sha256="44affb82f9c2fd76c9e2b58f9229adb003217932b68c3fdbf1327c8d74c868a2") version("0.3.5", sha256="29fb7e075744bbffdff8ba4fce3860076de66f39a59a100ee4cfb4fc00722b49") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index c241b2979d4..41f6471555f 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -26,5 +26,8 @@ class RLattice(RPackage): version("0.20-35", sha256="0829ab0f4dec55aac6a73bc3411af68441ddb1b5b078d680a7c2643abeaa965d") version("0.20-34", sha256="4a1a1cafa9c6660fb9a433b3a51898b8ec8e83abf143c80f99e3e4cf92812518") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.0.0:", type=("build", "run")) depends_on("r@4.0.0:", type=("build", "run"), when="@0.21-8:") diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index 8a7d432f085..84c3061adde 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -29,6 +29,8 @@ class RLubridate(RPackage): version("1.7.1", sha256="898c3f482ab8f5e5b415eecd13d1238769c88faed19b63fcb074ffe5ff57fb5f") version("1.5.6", sha256="9b1627ba3212e132ce2b9a29d7513e250cc682ab9b4069f6788a22e84bf8d2c4") + depends_on("c", type="build") + depends_on("r@3.0.0:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@1.7.9.2:") depends_on("r-generics", type=("build", "run"), when="@1.7.9.2:") diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 52c18fe07ce..9e317b1aba2 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -25,6 +25,9 @@ class RMass(RPackage): version("7.3-51.3", sha256="5b0e0e7704d43a94b08dcc4b3fe600b9723d1b3e446dd393e82d39ddf66608b6") version("7.3-47", sha256="ed44cdabe84fff3553122267ade61d5cc68071c435f7645d36c8f2e4e9f9c6bf") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index 7eeddaa2539..ef81cab6428 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -31,6 +31,9 @@ class RMatrix(RPackage): version("1.2-8", sha256="3cd2a187c45fc18a0766dc148b7f83dbf6f2163c256e887c41cbaa7c9a20dbb7") version("1.2-6", sha256="4b49b639b7bf612fa3d1c1b1c68125ec7859c8cdadae0c13f499f24099fd5f20") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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.6.0:", type=("build", "run"), when="@1.3-2:") diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index 68d4602d22e..2a17e77067c 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -37,6 +37,8 @@ class RMgcv(RPackage): version("1.8-16", sha256="9266a0cbd783717fc6130db4e0034e69465d177397687f35daf6a8ccdb0b435e") version("1.8-13", sha256="74bc819708ef59da94b777a446ef00d7f14b428eec843533e824017c29cc524b") + depends_on("c", type="build") + depends_on("r@2.14.0:", type=("build", "run")) depends_on("r@3.6.0:", type=("build", "run"), when="@1.8.34:") depends_on("r-nlme@3.1-64:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index 38c269dd336..44416594113 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -28,6 +28,10 @@ class RNlme(RPackage): version("3.1-131", sha256="79daa167eb9bc7d8dba506da4b24b5250665b051d4e0a51dfccbb0087fdb564c") version("3.1-130", sha256="ec576bd906ef2e1c79b6a4382743d425846f63be2a43de1cce6aa397b40e290e") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + depends_on("r@3.0.2:", type=("build", "run")) 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") diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index d4eddab92d2..3ac143c36ab 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -37,6 +37,8 @@ class ROpenssl(RPackage): version("0.9.6", sha256="6dd6d1cade4004962d516ad761fff0812beec0232318b385d286761423a5dc39") version("0.9.4", sha256="cb7349defa5428acc0907629a4f53f82d2519af219e5d6a41f852cf55b1feb66") + depends_on("c", type="build") + depends_on("r-askpass", type=("build", "run"), when="@1.2:") depends_on("openssl@1.0.1:") depends_on("openssl@1.0.2:", when="@2.0.2:") diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index 97dcf4c2ecd..96b1c2362d0 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -31,6 +31,9 @@ class RPbdzmq(RPackage): version("0.3-2", sha256="ece2a2881c662f77126e4801ba4e01c991331842b0d636ce5a2b591b9de3fc37") version("0.2-4", sha256="bfacac88b0d4156c70cf63fc4cb9969a950693996901a4fa3dcd59949ec065f6") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.0.0:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@0.2-6:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.3-4:") diff --git a/var/spack/repos/builtin/packages/r-processx/package.py b/var/spack/repos/builtin/packages/r-processx/package.py index 3267d0d221d..98126cad9f8 100644 --- a/var/spack/repos/builtin/packages/r-processx/package.py +++ b/var/spack/repos/builtin/packages/r-processx/package.py @@ -34,6 +34,9 @@ class RProcessx(RPackage): version("2.0.0.1", sha256="8f61b2952d0f2d13c74465bfba174ce11eee559475c2f7b9be6bcb9e2e1d827b") version("2.0.0", sha256="8325b56a60a276909228756281523cda9256bc754c5f3ca03b41c5c17cc398ad") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.4.0:", type=("build", "run"), when="@3.5.3:") depends_on("r-ps@1.2.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-r6", 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 860bd0838e6..1a63364426f 100644 --- a/var/spack/repos/builtin/packages/r-ps/package.py +++ b/var/spack/repos/builtin/packages/r-ps/package.py @@ -27,5 +27,7 @@ class RPs(RPackage): version("1.1.0", sha256="5d5240d5bf1d48c721b3fdf47cfc9dbf878e388ea1f057b764db05bffdc4a9fe") version("1.0.0", sha256="9bdaf64aaa44ae11866868402eb75bf56c2e3022100476d9b9dcd16ca784ffd8") + depends_on("c", type="build") + depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.7.0:") diff --git a/var/spack/repos/builtin/packages/r-purrr/package.py b/var/spack/repos/builtin/packages/r-purrr/package.py index 09b68219419..1a69da33f54 100644 --- a/var/spack/repos/builtin/packages/r-purrr/package.py +++ b/var/spack/repos/builtin/packages/r-purrr/package.py @@ -22,6 +22,9 @@ class RPurrr(RPackage): version("0.3.1", sha256="c2a3c9901192efd8a04976676f84885a005db88deb1432e4750900c7b3b7883b") version("0.2.4", sha256="ed8d0f69d29b95c2289ae52be08a0e65f8171abb6d2587de7b57328bf3b2eb71") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-ragg/package.py b/var/spack/repos/builtin/packages/r-ragg/package.py index 674096b9fe2..45ff8f89808 100644 --- a/var/spack/repos/builtin/packages/r-ragg/package.py +++ b/var/spack/repos/builtin/packages/r-ragg/package.py @@ -22,6 +22,9 @@ class RRagg(RPackage): version("1.2.4", sha256="c547e5636a2eefaa0021a0d50fad1e813c2ce976ec0c9c3f796d38a110680dcd") version("1.2.3", sha256="976da0007ef0d4dbadda4734727b539671b65c1eff4ff392d734f4e2c846f2b2") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r-systemfonts@1.0.3:", type=("build", "run")) depends_on("r-textshaping@0.3.0:", type=("build", "run")) depends_on("freetype") diff --git a/var/spack/repos/builtin/packages/r-readr/package.py b/var/spack/repos/builtin/packages/r-readr/package.py index 3cc2c8767e3..b80f9dbd697 100644 --- a/var/spack/repos/builtin/packages/r-readr/package.py +++ b/var/spack/repos/builtin/packages/r-readr/package.py @@ -27,6 +27,9 @@ class RReadr(RPackage): version("1.3.1", sha256="33f94de39bb7f2a342fbb2bd4e5afcfec08798eac39672ee18042ac0b349e4f3") version("1.1.1", sha256="1a29b99009a06f2cee18d08bc6201fd4985b6d45c76cefca65084dcc1a2f7cb3") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@1.3.0:") depends_on("r@3.4:", 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 646220cd7b1..3d1d1a2f2d2 100644 --- a/var/spack/repos/builtin/packages/r-readxl/package.py +++ b/var/spack/repos/builtin/packages/r-readxl/package.py @@ -26,6 +26,9 @@ class RReadxl(RPackage): version("1.1.0", sha256="b63d21fc6510acb373e96deaec45e966a523ec75cbec75a089529297ed443116") version("1.0.0", sha256="fbd62f07fed7946363698a57be88f4ef3fa254ecf456ef292535849c787fc7ad") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-rlang/package.py b/var/spack/repos/builtin/packages/r-rlang/package.py index 24ac232dbf9..8c91599bac7 100644 --- a/var/spack/repos/builtin/packages/r-rlang/package.py +++ b/var/spack/repos/builtin/packages/r-rlang/package.py @@ -36,6 +36,8 @@ class RRlang(RPackage): version("0.1.2", sha256="90cfcd88cae6fff044fca64b24a8e6bdc09fc276163b518ff2d90268b0c785f9") version("0.1.1", sha256="5901f95d68728a7d9bb1c2373a20ce6e4ad222f66e397e7735e9eff987c73c3f") + depends_on("c", type="build") + depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@0.4.0:") depends_on("r@3.3.0:", type=("build", "run"), when="@0.4.10:") diff --git a/var/spack/repos/builtin/packages/r-sass/package.py b/var/spack/repos/builtin/packages/r-sass/package.py index d91a8c945b2..63cd1b96e3a 100644 --- a/var/spack/repos/builtin/packages/r-sass/package.py +++ b/var/spack/repos/builtin/packages/r-sass/package.py @@ -23,6 +23,9 @@ class RSass(RPackage): version("0.4.1", sha256="850fcb6bd49085d5afd25ac18da0744234385baf1f13d8c0a320f4da2de608bb") version("0.4.0", sha256="7d06ca15239142a49e88bb3be494515abdd8c75f00f3f1b0ee7bccb55019bc2b") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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")) diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index c3e9a4e9328..91c520af7b2 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -34,6 +34,9 @@ class RStringi(RPackage): version("1.1.2", sha256="e50b7162ceb7ebae403475f6f8a76a39532a2abc82112db88661f48aa4b9218e") version("1.1.1", sha256="243178a138fe68c86384feb85ead8eb605e8230113d638da5650bca01e24e165") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-sys/package.py b/var/spack/repos/builtin/packages/r-sys/package.py index a74608f5bed..0a195ba651a 100644 --- a/var/spack/repos/builtin/packages/r-sys/package.py +++ b/var/spack/repos/builtin/packages/r-sys/package.py @@ -23,6 +23,8 @@ class RSys(RPackage): version("3.4", sha256="17f88fbaf222f1f8fd07919461093dac0e7175ae3c3b3264b88470617afd0487") version("3.2", sha256="2819498461fe2ce83d319d1a47844e86bcea6d01d10861818dba289e7099bbcc") + depends_on("c", type="build") + def flag_handler(self, name, flags): if name == "cflags": flags.append(self.compiler.c99_flag) diff --git a/var/spack/repos/builtin/packages/r-systemfonts/package.py b/var/spack/repos/builtin/packages/r-systemfonts/package.py index 6a53250844b..bb282598ec2 100644 --- a/var/spack/repos/builtin/packages/r-systemfonts/package.py +++ b/var/spack/repos/builtin/packages/r-systemfonts/package.py @@ -25,6 +25,9 @@ class RSystemfonts(RPackage): version("1.0.3", sha256="647c99d5ea6f90a49768ea7b10b39816af6be85168475273369fd973a20dbbba") version("1.0.1", sha256="401db4d9e78e3a5e00b7a0b4fbad7fbb1c584734469b65fe5b7ebe1851c7a797") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-textshaping/package.py b/var/spack/repos/builtin/packages/r-textshaping/package.py index 5e6ba1b28ca..410fcc6e0b4 100644 --- a/var/spack/repos/builtin/packages/r-textshaping/package.py +++ b/var/spack/repos/builtin/packages/r-textshaping/package.py @@ -20,6 +20,9 @@ class RTextshaping(RPackage): version("0.4.0", sha256="35e940786bb278560de61bb55d4f46f8c86c878d0461613ceb8c98ba9b239d7a") version("0.3.6", sha256="80e2c087962f55ce2811fbc798b09f5638c06c6b28c10cd3cb3827005b902ada") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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="@0.4.0:") diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index 0815a944805..e046b8932b0 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -31,6 +31,9 @@ class RTidyr(RPackage): version("0.7.2", sha256="062cea2e2b57fffd500e4ce31cba6d593e65684fc0897ea49ea38d257c76009c") version("0.5.1", sha256="dbab642ac7231cbfe3e2a0d4553fb4ffb3699c6d6b432be2bb5812dfbbdbdace") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-timechange/package.py b/var/spack/repos/builtin/packages/r-timechange/package.py index 8c143f61304..681befbaa7f 100644 --- a/var/spack/repos/builtin/packages/r-timechange/package.py +++ b/var/spack/repos/builtin/packages/r-timechange/package.py @@ -24,5 +24,8 @@ class RTimechange(RPackage): version("0.2.0", sha256="3d602008052123daef94a5c3f5154c5461b4ec0432ab70c37273d7ddd252f7f1") version("0.1.1", sha256="8503919d233d7d7b81fe47692f0f2d6742ff4cae7320a5522bf98f077f5d7f70") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("r@3.3:", type=("build", "run")) depends_on("r-cpp11@0.2.7:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-tzdb/package.py b/var/spack/repos/builtin/packages/r-tzdb/package.py index 079f21f7870..c42e3097035 100644 --- a/var/spack/repos/builtin/packages/r-tzdb/package.py +++ b/var/spack/repos/builtin/packages/r-tzdb/package.py @@ -26,6 +26,9 @@ class RTzdb(RPackage): version("0.3.0", sha256="6099f0ec1fba692b51b4360aa776902a39f10dae815933c31994b8e4d4277038") version("0.2.0", sha256="c335905d452b400af7ed54b916b5246cb3f47ede0602911a2bcb25a1cf56d5a9") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-utf8/package.py b/var/spack/repos/builtin/packages/r-utf8/package.py index b617a7e18c9..200ef3568c6 100644 --- a/var/spack/repos/builtin/packages/r-utf8/package.py +++ b/var/spack/repos/builtin/packages/r-utf8/package.py @@ -25,4 +25,6 @@ class RUtf8(RPackage): version("1.1.0", sha256="6a8ae2c452859800c3ef12993a55892588fc35df8fa1360f3d182ed97244dc4f") version("1.0.0", sha256="7562a80262cbc2017eee76c0d3c9575f240fab291f868a11724fa04a116efb80") + depends_on("c", type="build") + depends_on("r@2.10:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index 263afbce9e2..d74c0bb18f2 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -22,4 +22,5 @@ class RUuid(RPackage): version("0.1-4", sha256="98e0249dda17434bfa209c2058e9911e576963d4599be9f7ea946e664f8ca93e") version("0.1-2", sha256="dd71704dc336b0857981b92a75ed9877d4ca47780b1682def28839304cd3b1be") + depends_on("c", type="build") depends_on("r@2.9.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-vroom/package.py b/var/spack/repos/builtin/packages/r-vroom/package.py index e7e07684b05..f4fb7ea5007 100644 --- a/var/spack/repos/builtin/packages/r-vroom/package.py +++ b/var/spack/repos/builtin/packages/r-vroom/package.py @@ -24,6 +24,9 @@ class RVroom(RPackage): version("1.5.7", sha256="d087cb148f71c222fc89199d03df2502689149873414a6d89c2f006d3a109fde") version("1.5.5", sha256="1d45688c08f162a3300eda532d9e87d144f4bc686769a521bf9a12e3d3b465fe") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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:") diff --git a/var/spack/repos/builtin/packages/r-xfun/package.py b/var/spack/repos/builtin/packages/r-xfun/package.py index 4801152a82a..0f7c96da0e2 100644 --- a/var/spack/repos/builtin/packages/r-xfun/package.py +++ b/var/spack/repos/builtin/packages/r-xfun/package.py @@ -25,4 +25,6 @@ class RXfun(RPackage): version("0.20", sha256="284239d12a3d5ea7d1ef8b1382fb0a7a4661af54c85510501279681871da7c10") version("0.8", sha256="c2f8ecf8b57ddec02f9be7f417d9e22fc1ae2c7db8d70aa703fc62bf4a5c5416") + depends_on("c", type="build") + depends_on("r@3.2.0:", when="@0.47:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-xml2/package.py b/var/spack/repos/builtin/packages/r-xml2/package.py index de086f3db20..11341b3abe9 100644 --- a/var/spack/repos/builtin/packages/r-xml2/package.py +++ b/var/spack/repos/builtin/packages/r-xml2/package.py @@ -22,6 +22,9 @@ class RXml2(RPackage): version("1.2.1", sha256="5615bbc94607efc3bc192551992b349091df802ae34b855cfa817733f2690605") version("1.1.1", sha256="00f3e3b66b76760c19da5f6dddc98e6f30de36a96b211e59e1a3f4ff58763116") + depends_on("c", type="build") + depends_on("cxx", type="build") + 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") diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index 88e32c257f5..6259f6f5ce7 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -25,3 +25,5 @@ class RYaml(RPackage): version("2.1.19", sha256="e5db035693ac765e4b5fe1fc2e9711f8ca73e398e3f2bf27cc60def59ccd7f11") version("2.1.14", sha256="41a559846f6d44cc2dbcb3fc0becbc50d2766d3dc2aad7cfb97c1f9759ec0875") version("2.1.13", sha256="26f69aa2008bcacf3b2f95ef82a4667eaec2f2da8487646f71f1e2635d2d7fa2") + + depends_on("c", type="build") From c3785f4d302f2df0224870415fd953b7f5826c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= <4043375+zzzoom@users.noreply.github.com> Date: Wed, 30 Apr 2025 03:08:38 -0300 Subject: [PATCH 304/317] hcoll: comment out unsatisfiable requires (#50235) --- .../repos/builtin/packages/hcoll/package.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/hcoll/package.py b/var/spack/repos/builtin/packages/hcoll/package.py index 33a51b5b0de..8f8dd824d75 100644 --- a/var/spack/repos/builtin/packages/hcoll/package.py +++ b/var/spack/repos/builtin/packages/hcoll/package.py @@ -28,15 +28,16 @@ class Hcoll(Package): version("3.9.1927") # ucx throws warnings when running alongside the wrong version of hcoll - requires("ucx@1.18", when="@4.8.3230") - requires("ucx@1.17", when="@4.8.3228") - requires("ucx@1.16:1.17", when="@4.8.3227") - requires("ucx@1.15:1.16", when="@4.8.3223") - requires("ucx@1.15", when="@4.8.3221") - requires("ucx@1.14", when="@4.8.3217:4.8.3220") - requires("ucx@1.13", when="@4.7.3208") - requires("ucx@1.12", when="@4.7.3202") - requires("ucx@1.11", when="@4.7.3199") + # commented out until a working solution is found + # requires("ucx@1.18", when="@4.8.3230") + # requires("ucx@1.17", when="@4.8.3228") + # requires("ucx@1.16:1.17", when="@4.8.3227") + # requires("ucx@1.15:1.16", when="@4.8.3223") + # requires("ucx@1.15", when="@4.8.3221") + # requires("ucx@1.14", when="@4.8.3217:4.8.3220") + # requires("ucx@1.13", when="@4.7.3208") + # requires("ucx@1.12", when="@4.7.3202") + # requires("ucx@1.11", when="@4.7.3199") # HCOLL needs to be added as an external package to SPACK. For this, the # config file packages.yaml needs to be adjusted: From f1a31fe5f742d27eb388c782137346bbdd981cad Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 30 Apr 2025 08:24:37 +0200 Subject: [PATCH 305/317] rust: improve external detection (#50232) Signed-off-by: Massimiliano Culpo --- .../builtin/packages/rust/detection_test.yaml | 55 +++++++++++++++++++ .../repos/builtin/packages/rust/package.py | 38 +++++++++---- 2 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 var/spack/repos/builtin/packages/rust/detection_test.yaml diff --git a/var/spack/repos/builtin/packages/rust/detection_test.yaml b/var/spack/repos/builtin/packages/rust/detection_test.yaml new file mode 100644 index 00000000000..e0729e89752 --- /dev/null +++ b/var/spack/repos/builtin/packages/rust/detection_test.yaml @@ -0,0 +1,55 @@ +paths: +- layout: + - executables: + - "bin/rustc" + script: | + echo "rustc 1.75.0 (82e1608df 2023-12-21) (built from a source tarball)" + - executables: + - "bin/cargo" + script: | + echo "cargo 1.75.0" + platforms: ["darwin", "linux"] + results: + - spec: 'rust@1.75.0' + extra_attributes: + compilers: + rust: ".*/bin/rustc" + cargo: ".*/bin/cargo" +# If rustc is missing, then we don't detect specs +- layout: + - executables: + - "bin/cargo" + script: | + echo "cargo 1.75.0" + platforms: ["darwin", "linux"] + results: [] +# Check we can detect 2 different versions in the same folder +- layout: + - executables: + - "bin/rustc" + script: | + echo "rustc 1.75.0 (82e1608df 2023-12-21) (built from a source tarball)" + - executables: + - "bin/rustc-1.80" + script: | + echo "rustc 1.80.1 (3f5fd8dd4 2024-08-06) (built from a source tarball)" + - executables: + - "bin/cargo" + script: | + echo "cargo 1.75.0" + - executables: + - "bin/cargo-1.80" + script: | + echo "cargo 1.80.1 (376290515 2024-07-16)" + platforms: ["darwin", "linux"] + results: + - spec: 'rust@1.75.0' + extra_attributes: + compilers: + rust: ".*/bin/rustc" + cargo: ".*/bin/cargo" + - spec: 'rust@1.80.1' + extra_attributes: + compilers: + rust: ".*/bin/rustc-1.80" + cargo: ".*/bin/cargo-1.80" diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index dda63f60677..d25dafeccc3 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -102,22 +102,36 @@ class Rust(Package): conflicts("%oneapi", msg="Rust not compatible with Intel oneAPI compilers") extendable = True - executables = ["^rustc$", "^cargo$"] + executables = [r"^rustc(-[\d.]*)?$", r"^cargo(-[\d.]*)?$"] phases = ["configure", "build", "install"] @classmethod - def determine_spec_details(cls, prefix, exes_in_prefix): - rustc_candidates = [x for x in exes_in_prefix if os.path.basename(x) == "rustc"] - cargo_candidates = [x for x in exes_in_prefix if os.path.basename(x) == "cargo"] - # Both rustc and cargo must be present - if not (rustc_candidates and cargo_candidates): - return - output = Executable(rustc_candidates[0])("--version", output=str, error=str) - match = re.match(r"rustc (\S+)", output) - if match: - version_str = match.group(1) - return Spec.from_detection(f"rust@{version_str}", external_path=prefix) + def determine_version(csl, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.match(r"(rustc|cargo) (\S+)", output) + return match.group(2) if match else None + + @classmethod + def determine_variants(cls, exes, version_str): + rustc_candidates = [x for x in exes if "rustc" in os.path.basename(x)] + cargo_candidates = [x for x in exes if "cargo" in os.path.basename(x)] + extra_attributes = {} + if rustc_candidates: + extra_attributes.setdefault("compilers", {})["rust"] = rustc_candidates[0] + + if cargo_candidates: + extra_attributes["cargo"] = cargo_candidates[0] + + return "", extra_attributes + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + if "cargo" not in extra_attributes: + raise RuntimeError(f"discarding {spec} since 'cargo' is missing") + + if not extra_attributes.get("compilers", {}).get("rust"): + raise RuntimeError(f"discarding {spec} since 'rustc' is missing") def setup_dependent_package(self, module, dependent_spec): module.cargo = Executable(os.path.join(self.spec.prefix.bin, "cargo")) From 883d0739e638d5fbd26b78e48cf8dbcf5f0864a2 Mon Sep 17 00:00:00 2001 From: Taillefumier Mathieu <29380261+mtaillefumier@users.noreply.github.com> Date: Wed, 30 Apr 2025 10:21:33 -0400 Subject: [PATCH 306/317] [packages] Fix for cp2k and cosma (#50223) Signed-off-by: Mathieu Taillefumier Co-authored-by: Mathieu Taillefumier Co-authored-by: Rocco Meli --- .../repos/builtin/packages/cosma/package.py | 4 +++- .../repos/builtin/packages/cp2k/package.py | 23 +++++++++++++++---- .../repos/builtin/packages/dbcsr/package.py | 7 +++--- .../repos/builtin/packages/libxsmm/package.py | 2 +- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/cosma/package.py b/var/spack/repos/builtin/packages/cosma/package.py index c866a065958..9cc7a8b7e5b 100644 --- a/var/spack/repos/builtin/packages/cosma/package.py +++ b/var/spack/repos/builtin/packages/cosma/package.py @@ -52,7 +52,9 @@ class Cosma(CMakePackage): with when("+rocm"): variant("rccl", default=False, description="Use rocm rccl") - depends_on("cxx", type="build") # generated + depends_on("cxx", type="build") + depends_on("c", type="build") + depends_on("fortran", type="build") depends_on("cmake@3.22:", type="build") depends_on("mpi@3:") diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 0c489061594..361b5c0d915 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -115,7 +115,7 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): variant("pytorch", default=False, description="Enable libtorch support") variant("quip", default=False, description="Enable quip support") variant("dftd4", when="@2024.2:", default=False, description="Enable DFT-D4 support") - variant("mpi_f08", default=False, description="Use MPI F08 module") + variant("mpi_f08", default=False, description="Use MPI F08 module", when="+mpi") variant("smeagol", default=False, description="Enable libsmeagol support", when="@2025.2:") variant( "pw_gpu", default=True, description="Enable FFT calculations on GPU", when="@2025.2: +cuda" @@ -159,6 +159,13 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): description="Enable TrexIO support", when="@2025.2: build_system=cmake", ) + variant( + "greenx", + default=False, + description="Enable green X support", + when="@2025.2: build_system=cmake", + ) + variant("deepmd", default=False, description="Enable DeepMD-kit support") conflicts("+deepmd", msg="DeepMD-kit is not yet available in Spack") @@ -208,7 +215,7 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): depends_on("blas") depends_on("lapack") depends_on("fftw-api@3") - + depends_on("greenx", when="+greenx") depends_on("hdf5+hl+fortran", when="+hdf5") depends_on("trexio", when="+trexio") @@ -637,7 +644,6 @@ def edit(self, pkg, spec, prefix): ) else: libs.append(elpa.libs.ld_flags) - if spec.satisfies("@:4"): if elpa.satisfies("@:2014.5"): cppflags.append("-D__ELPA") @@ -1050,6 +1056,8 @@ def cmake_args(self): ] args += [ + "-DCP2K_USE_FFTW3=ON", + self.define_from_variant("CP2K_USE_MPI", "mpi"), self.define_from_variant("CP2K_ENABLE_REGTESTS", "enable_regtests"), self.define_from_variant("CP2K_USE_ELPA", "elpa"), self.define_from_variant("CP2K_USE_DLAF", "dlaf"), @@ -1076,8 +1084,12 @@ def cmake_args(self): self.define_from_variant("CP2K_USE_HDF5", "hdf5"), self.define_from_variant("CP2K_USE_DEEPMD", "deepmd"), self.define_from_variant("CP2K_USE_TREXIO", "trexio"), + self.define_from_variant("CP2K_USE_GREENX", "greenx"), ] + if spec.satisfies("^[virtuals=fftw-api] fftw+openmp"): + args += ["-DCP2K_USE_FFTW3_WITH_OPENMP=ON"] + # we force the use elpa openmp threading support. might need to be revisited though args += [ self.define( @@ -1089,8 +1101,6 @@ def cmake_args(self): if "spla" in spec and (spec.satisfies("+cuda") or spec.satisfies("+rocm")): args += ["-DCP2K_USE_SPLA_GEMM_OFFLOADING=ON"] - args += ["-DCP2K_USE_FFTW3=ON"] - if spec.satisfies("smm=libxsmm"): args += ["-DCP2K_USE_LIBXSMM=ON"] else: @@ -1100,6 +1110,9 @@ def cmake_args(self): blas = spec["blas"] if blas.name == "intel-oneapi-mkl": + if spec.satisfies("^[virtuals=fftw-api] intel-oneapi-mkl"): + args += ["-DCP2K_USE_FFTW3_WITH_MKL=ON"] + args += ["-DCP2K_BLAS_VENDOR=MKL"] if sys.platform == "darwin": args += [ diff --git a/var/spack/repos/builtin/packages/dbcsr/package.py b/var/spack/repos/builtin/packages/dbcsr/package.py index 8983892dd1a..bd4748d95f2 100644 --- a/var/spack/repos/builtin/packages/dbcsr/package.py +++ b/var/spack/repos/builtin/packages/dbcsr/package.py @@ -31,6 +31,8 @@ class Dbcsr(CMakePackage, CudaPackage, ROCmPackage): version("2.1.0", sha256="9e58fd998f224632f356e479d18b5032570d00d87b86736b6a6ac2d03f8d4b3c") version("2.0.1", sha256="61d5531b661e1dab043353a1d67939ddcde3893d3dc7b0ab3d05074d448b485c") + variant("tests", default=False, description="Build DBCSR unit tests") + variant("tests", default=True, description="Build DBCSR unit tests", when="@2.1:2.2") variant("mpi", default=True, description="Compile with MPI") variant("openmp", default=False, description="Build with OpenMP support") variant("shared", default=True, description="Build shared library") @@ -162,12 +164,9 @@ def cmake_args(self): self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("WITH_EXAMPLES", "examples"), self.define_from_variant("WITH_G2G", "g2g"), + self.define_from_variant("BUILD_TESTING", "tests"), ] - # Switch necessary as a result of a bug. - if spec.satisfies("@2.1:2.2"): - args += ["-DBUILD_TESTING=ON"] - if self.spec.satisfies("+cuda"): cuda_arch = self.spec.variants["cuda_arch"].value[0] diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index 2f5d90444e3..b20fd9946d5 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -95,7 +95,7 @@ class Libxsmm(MakefilePackage): # A recent `as` is needed to compile libxmss until version 1.17 # (), but not afterwards # (). - depends_on("binutils+ld+gas@2.33:", type="build", when="@:1.17") + depends_on("binutils+ld+gas@2.33:", type="build") # Version 2.0 supports both x86_64 and aarch64 requires("target=x86_64:", "target=aarch64:") From 2f2c65f56b3ac47f01cde6ba65c3c57580a982f0 Mon Sep 17 00:00:00 2001 From: Andrey Perestoronin Date: Wed, 30 Apr 2025 18:43:32 +0100 Subject: [PATCH 307/317] add new intel-oneapi packages (#50247) --- .../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-vtune/package.py | 6 ++++++ 6 files changed, 41 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 597b9dc4d0e..3f50ff6e17d 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py @@ -23,6 +23,12 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/advisor.html" ) + version( + "2025.1.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4e67c003-b691-442c-846e-ef4ff4432d4d/intel-advisor-2025.1.1.25_offline.sh", + sha256="7377d85b4e02237aab932d53dfbef1564ba385b9407506022266b0c854f64ab8", + expand=False, + ) version( "2025.1.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d9566edf-d6dd-4b85-9dda-efdf0ebb199a/intel-advisor-2025.1.0.507_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 c695aeb0215..c764af5bc2c 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py @@ -26,6 +26,12 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage): depends_on("intel-oneapi-mpi") + version( + "2021.15.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/422b4c09-4f3b-4e4d-b74e-502775398c9a/intel-oneccl-2021.15.1.5_offline.sh", + sha256="551a32d0cdf537d34d73bad1268ec70b6776be2a7c28b9753754ded7eb3407e0", + expand=False, + ) version( "2021.15.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/8f5d5e38-1626-41c1-9c20-44d966c43ae1/intel-oneccl-2021.15.0.401_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 21b2e73010c..d56a102168a 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -11,6 +11,17 @@ from spack.package import * versions = [ + { + "version": "2025.1.1", + "cpp": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c4d2aef3-3123-475e-800c-7d66fd8da2a5/intel-dpcpp-cpp-compiler-2025.1.1.9_offline.sh", + "sha256": "63ea61f54a5ea9d30059ea499697e04953915ef317c0e8fc457077b690c726df", + }, + "ftn": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0e4735b3-8721-422b-b204-00eefe413bfd/intel-fortran-compiler-2025.1.1.10_offline.sh", + "sha256": "c59060a5b959fb0faeb1cde349689086da41d491adb41fd6c97177fcf59bf957", + }, + }, { "version": "2025.1.0", "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 b18fcc513d2..d558f65cd43 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py @@ -25,6 +25,12 @@ class IntelOneapiDal(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onedal.html" ) + version( + "2025.5.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6f7d2b45-7c33-4ab7-80ac-ac0f7f6e38ed/intel-onedal-2025.5.0.11_offline.sh", + sha256="9b6224a60a1d2c266e98d3aa80cd8dc4f64b9429c9115c6f5236ad2fa88cacd0", + expand=False, + ) version( "2025.4.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e4da59ef-aa3a-4223-b3a0-4728014113e6/intel-onedal-2025.4.0.655_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 73b4095ad41..1c83e5b5890 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py @@ -25,6 +25,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html" ) + version( + "2025.1.1", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/72399822-f66b-4699-b723-214850e74b25/intel-onednn-2025.1.1.10_offline.sh", + sha256="bb466368c22f55ff8cd6e0ff82763740588cc42deaada7acf8948f1b807c0661", + expand=False, + ) version( "2025.1.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9cf476b7-5b8b-4995-ac33-91a446bc0c6e/intel-onednn-2025.1.0.653_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 fdd02b18454..8e53d4102fd 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py @@ -24,6 +24,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html" + version( + "2025.3.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/740981cd-e6af-4eb6-b147-c7912fadfb84/intel-vtune-2025.3.0.18_offline.sh", + sha256="d5237c577716ec221f12777f9e3a48b34d6bbb8bbeb22c000cc400b2b4f1325a", + expand=False, + ) version( "2025.2.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c4c4ece5-c19f-43a9-99ad-3192164d8529/intel-vtune-2025.2.0.219_offline.sh", From b42ef1e7b8e46f1632b5d21dee0d5138fa659db4 Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Wed, 30 Apr 2025 14:51:19 -0700 Subject: [PATCH 308/317] spack solve: respect unify:false config (#50243) ---------- Signed-off-by: Gregory Becker --- lib/spack/spack/cmd/solve.py | 41 ++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/cmd/solve.py b/lib/spack/spack/cmd/solve.py index cd210348ab5..e7698119a97 100644 --- a/lib/spack/spack/cmd/solve.py +++ b/lib/spack/spack/cmd/solve.py @@ -136,20 +136,7 @@ def solve(parser, args): setup_only = set(show) == {"asp"} unify = spack.config.get("concretizer:unify") allow_deprecated = spack.config.get("config:deprecated", False) - if unify != "when_possible": - # set up solver parameters - # Note: reuse and other concretizer prefs are passed as configuration - result = solver.solve( - specs, - out=output, - timers=args.timers, - stats=args.stats, - setup_only=setup_only, - allow_deprecated=allow_deprecated, - ) - if not setup_only: - _process_result(result, show, required_format, kwargs) - else: + if unify == "when_possible": for idx, result in enumerate( solver.solve_in_rounds( specs, @@ -166,3 +153,29 @@ def solve(parser, args): print("% END ROUND {0}\n".format(idx)) if not setup_only: _process_result(result, show, required_format, kwargs) + elif unify: + # set up solver parameters + # Note: reuse and other concretizer prefs are passed as configuration + result = solver.solve( + specs, + out=output, + timers=args.timers, + stats=args.stats, + setup_only=setup_only, + allow_deprecated=allow_deprecated, + ) + if not setup_only: + _process_result(result, show, required_format, kwargs) + else: + for spec in specs: + tty.msg("SOLVING SPEC:", spec) + result = solver.solve( + [spec], + out=output, + timers=args.timers, + stats=args.stats, + setup_only=setup_only, + allow_deprecated=allow_deprecated, + ) + if not setup_only: + _process_result(result, show, required_format, kwargs) From 123c26c22d8b279840e0fa6a2addb1f5cfb4fb22 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 1 May 2025 02:40:00 -0500 Subject: [PATCH 309/317] builtin: add C or C++ dependency for many packages (#50258) --- var/spack/repos/builtin/packages/3dtk/package.py | 3 +++ var/spack/repos/builtin/packages/actsvg/package.py | 3 +++ var/spack/repos/builtin/packages/ambertools/package.py | 3 +++ var/spack/repos/builtin/packages/bcl2fastq2/package.py | 3 +++ var/spack/repos/builtin/packages/express/package.py | 2 ++ var/spack/repos/builtin/packages/gplates/package.py | 2 ++ var/spack/repos/builtin/packages/hermes-shm/package.py | 2 ++ var/spack/repos/builtin/packages/log4cxx/package.py | 2 ++ var/spack/repos/builtin/packages/nix/package.py | 2 ++ var/spack/repos/builtin/packages/paradiseo/package.py | 2 ++ var/spack/repos/builtin/packages/purify/package.py | 2 ++ var/spack/repos/builtin/packages/py-espresso/package.py | 3 +++ var/spack/repos/builtin/packages/r-rlas/package.py | 1 + var/spack/repos/builtin/packages/tecio/package.py | 3 +++ 14 files changed, 33 insertions(+) diff --git a/var/spack/repos/builtin/packages/3dtk/package.py b/var/spack/repos/builtin/packages/3dtk/package.py index 121bce064d1..c3ca2defdfb 100644 --- a/var/spack/repos/builtin/packages/3dtk/package.py +++ b/var/spack/repos/builtin/packages/3dtk/package.py @@ -21,6 +21,9 @@ class _3dtk(CMakePackage): version("trunk", svn="https://svn.code.sf.net/p/slam6d/code/trunk", preferred=True) version("1.2", svn="https://svn.code.sf.net/p/slam6d/code/branches/3dtk-release-1.2") + depends_on("c", type="build") + depends_on("cxx", type="build") + variant("cgal", default=False, description="Compile with CGAL support") variant("opengl", default=True, description="Compile with OpenGL support") variant("opencv", default=True, description="Compile with OpenCV support") diff --git a/var/spack/repos/builtin/packages/actsvg/package.py b/var/spack/repos/builtin/packages/actsvg/package.py index 0aaba10e8fc..a82da4c4785 100644 --- a/var/spack/repos/builtin/packages/actsvg/package.py +++ b/var/spack/repos/builtin/packages/actsvg/package.py @@ -46,6 +46,9 @@ class Actsvg(CMakePackage): "web", default=True, when="@0.4.36:", description="Build the webpage builder interface" ) + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("boost +program_options", type="test") depends_on("boost +program_options", when="+examples") depends_on("googletest", when="+examples") diff --git a/var/spack/repos/builtin/packages/ambertools/package.py b/var/spack/repos/builtin/packages/ambertools/package.py index ebad34d8b2f..a6709a7c0ba 100644 --- a/var/spack/repos/builtin/packages/ambertools/package.py +++ b/var/spack/repos/builtin/packages/ambertools/package.py @@ -20,6 +20,9 @@ class Ambertools(CMakePackage): version("22jlmrcc", sha256="1571d4e0f7d45b2a71dce5999fa875aea8c90ee219eb218d7916bf30ea229121") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("flex", type="build") depends_on("bison", type="build") depends_on("tcsh", type="build") diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 1e9a97e8b2f..cfef7210c5e 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -30,6 +30,9 @@ class Bcl2fastq2(Package): conflicts("platform=darwin", msg="malloc.h/etc requirements break build on macs") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("boost@1.54.0:1.55") # TODO: replace this with an explicit list of components of Boost, diff --git a/var/spack/repos/builtin/packages/express/package.py b/var/spack/repos/builtin/packages/express/package.py index 82301bab13e..4b4b44731b9 100644 --- a/var/spack/repos/builtin/packages/express/package.py +++ b/var/spack/repos/builtin/packages/express/package.py @@ -30,6 +30,8 @@ class Express(CMakePackage): ) depends_on("bamtools") depends_on("zlib-api") + depends_on("c", type="build") + depends_on("cxx", type="build") # patch from the debian package repo: # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811859 diff --git a/var/spack/repos/builtin/packages/gplates/package.py b/var/spack/repos/builtin/packages/gplates/package.py index c20efef97d7..a077a541dd0 100644 --- a/var/spack/repos/builtin/packages/gplates/package.py +++ b/var/spack/repos/builtin/packages/gplates/package.py @@ -21,6 +21,8 @@ class Gplates(CMakePackage): version("2.3.0", sha256="7d4be9d524d1fcbb6a81de29bd1d4b13133082db23f0808965c5efe30e9538ab") + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("cmake@3.5:", when="@2.3:", type="build") depends_on("cmake@2.8.8:", when="@2.1", type="build") depends_on("cmake@2.6.2:", when="@2.0", type="build") diff --git a/var/spack/repos/builtin/packages/hermes-shm/package.py b/var/spack/repos/builtin/packages/hermes-shm/package.py index 655bd46b298..04262bdb915 100644 --- a/var/spack/repos/builtin/packages/hermes-shm/package.py +++ b/var/spack/repos/builtin/packages/hermes-shm/package.py @@ -41,6 +41,8 @@ class HermesShm(CMakePackage): depends_on("yaml-cpp") depends_on("doxygen@1.9.3:", type="build") depends_on("libelf") + depends_on("c", type="build") + depends_on("cxx", type="build") # Machine variants variant("ares", default=False, description="Build in ares") diff --git a/var/spack/repos/builtin/packages/log4cxx/package.py b/var/spack/repos/builtin/packages/log4cxx/package.py index 3b796619ce8..8f569b1101a 100644 --- a/var/spack/repos/builtin/packages/log4cxx/package.py +++ b/var/spack/repos/builtin/packages/log4cxx/package.py @@ -50,6 +50,8 @@ class Log4cxx(CMakePackage): depends_on("expat") depends_on("zlib-api") depends_on("zip") + depends_on("c", type="build") + depends_on("cxx", type="build") def cmake_args(self): return [ diff --git a/var/spack/repos/builtin/packages/nix/package.py b/var/spack/repos/builtin/packages/nix/package.py index d9163d3a1c9..8362a976a06 100644 --- a/var/spack/repos/builtin/packages/nix/package.py +++ b/var/spack/repos/builtin/packages/nix/package.py @@ -72,6 +72,8 @@ class Nix(AutotoolsPackage): depends_on("openssl") depends_on("sqlite@3.6.19:") depends_on("xz") + depends_on("c", type="build") + depends_on("cxx", type="build") # gcc 4.9+ and higher supported with c++14 conflicts("%gcc@:4.8") diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index a80e784452d..4563e5d0758 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -36,6 +36,8 @@ class Paradiseo(CMakePackage): # Required dependencies depends_on("cmake@2.8:", type="build") + depends_on("c", type="build") + depends_on("cxx", type="build") # Optional dependencies depends_on("mpi", when="+mpi") diff --git a/var/spack/repos/builtin/packages/purify/package.py b/var/spack/repos/builtin/packages/purify/package.py index 2e63458e60b..17f349dadc8 100644 --- a/var/spack/repos/builtin/packages/purify/package.py +++ b/var/spack/repos/builtin/packages/purify/package.py @@ -59,6 +59,8 @@ class Purify(CMakePackage): depends_on("py-onnxruntime@1.17.1:", when="+onnxrt") depends_on("hdf5+cxx", when="+hdf5") depends_on("highfive", when="+hdf5") + depends_on("c", type="build") + depends_on("cxx", type="build") def cmake_args(self): args = [ diff --git a/var/spack/repos/builtin/packages/py-espresso/package.py b/var/spack/repos/builtin/packages/py-espresso/package.py index 1f99ec6f45c..51bd3cbc610 100644 --- a/var/spack/repos/builtin/packages/py-espresso/package.py +++ b/var/spack/repos/builtin/packages/py-espresso/package.py @@ -48,6 +48,9 @@ class PyEspresso(CMakePackage): variant("hdf5", default=True, description="Enable HDF5 backend") + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.0:", type="build") depends_on("mpi") depends_on("boost+serialization+filesystem+system+python+mpi") diff --git a/var/spack/repos/builtin/packages/r-rlas/package.py b/var/spack/repos/builtin/packages/r-rlas/package.py index 4d704005c98..356bda0d3f7 100644 --- a/var/spack/repos/builtin/packages/r-rlas/package.py +++ b/var/spack/repos/builtin/packages/r-rlas/package.py @@ -24,3 +24,4 @@ class RRlas(RPackage): depends_on("r-rcpp", type=("build", "run")) depends_on("r-data-table", type=("build", "run")) depends_on("boost@:1.84+filesystem+program_options+numpy+python+regex+serialization+thread") + depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/tecio/package.py b/var/spack/repos/builtin/packages/tecio/package.py index 8ef2d172fa4..99d9ceef91f 100644 --- a/var/spack/repos/builtin/packages/tecio/package.py +++ b/var/spack/repos/builtin/packages/tecio/package.py @@ -27,6 +27,9 @@ class Tecio(CMakePackage): depends_on("boost@1.69.0:+system", type="build") depends_on("mpi", when="+mpi") + depends_on("c", type="build") + depends_on("cxx", type="build") + @property def root_cmakelists_dir(self): if self.spec.satisfies("+mpi"): From 858f70bf6fe0cdf55fc0d1d4b32b992ada41b535 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Thu, 1 May 2025 12:22:31 -0400 Subject: [PATCH 310/317] QMCPACK v4.1.0 (#50259) --- var/spack/repos/builtin/packages/qmcpack/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py index 68885bcb7d7..a17edc0768b 100644 --- a/var/spack/repos/builtin/packages/qmcpack/package.py +++ b/var/spack/repos/builtin/packages/qmcpack/package.py @@ -23,6 +23,7 @@ class Qmcpack(CMakePackage, CudaPackage): # can occasionally change. # NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack. version("develop") + version("4.1.0", tag="v4.1.0", commit="c32123a5233186b177d75b800b86f1ad3b1a1413") version("4.0.0", tag="v4.0.0", commit="0199944fb644b4798446fdfc0549c81666a4a943") version("3.17.1", tag="v3.17.1", commit="9d0d968139fc33f71dbf9159f526dd7b47f10a3b") version("3.17.0", tag="v3.17.0", commit="9049a90626d1fe3c431f55c56a7197f8a13d5fc6") From 6a0e03b81cf6d648350673bdfae4558842c8a0e1 Mon Sep 17 00:00:00 2001 From: YI Zeping <18586016708@163.com> Date: Fri, 2 May 2025 04:23:29 +0800 Subject: [PATCH 311/317] update libiconv to make gcc-15 happy (#50270) --- var/spack/repos/builtin/packages/libiconv/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 10928743d2c..43d314e9c5f 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -14,6 +14,7 @@ class Libiconv(AutotoolsPackage, GNUMirrorPackage): license("LGPL-2.1-or-later") + version("1.18", sha256="3b08f5f4f9b4eb82f151a7040bfd6fe6c6fb922efe4b1659c66ea933276965e8") version("1.17", sha256="8f74213b56238c85a50a5329f77e06198771e70dd9a739779f4c02f65d971313") version("1.16", sha256="e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04") version("1.15", sha256="ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178") From 95c26245c135297e1f10f0e71490adaf2a8fdb51 Mon Sep 17 00:00:00 2001 From: Veselin Dobrev Date: Thu, 1 May 2025 16:46:48 -0700 Subject: [PATCH 312/317] Fix the LLVM build when using intel compilers (#50226) * [llvm] Fix the LLVM build when using intel compilers * [@spackbot] updating style on behalf of v-dobrev * e4s oneapi ci stack: re-enable specs disabled due to llvm%oneapi issue #49625 * disable paraview * disable failing oneapi specs * disable additional failing oneapi spec --------- Co-authored-by: eugeneswalker --- .../cloud_pipelines/stacks/e4s-oneapi/spack.yaml | 16 ++++++++-------- var/spack/repos/builtin/packages/llvm/package.py | 6 ++++++ 2 files changed, 14 insertions(+), 8 deletions(-) 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 7ff00e0203d..9dcd427bddd 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml @@ -173,11 +173,11 @@ spack: - vtk-m ~openmp # +openmp: https://github.com/spack/spack/issues/31830 - zfp # -- - # - paraview +qt # llvm-17.0.6: https://github.com/spack/spack/issues/49625 - # - py-cinemasci # llvm-14.0.6: https://github.com/spack/spack/issues/49625 - # - visit # llvm-17.0.6: https://github.com/spack/spack/issues/49625 + # - paraview +qt # concretize: paraview: Qt support requires GLX on non Windows; llvm-17.0.6: https://github.com/spack/spack/issues/49625 + # - py-cinemasci # py-maturin-1.8.3: rust-lld: error: undefined symbol: _intel_fast_memcpy + # - visit # vtk-9.2.6: ?? # -- - # - chapel ~cuda ~rocm # llvm-19.1.7: https://github.com/spack/spack/issues/49625 + # - chapel ~cuda ~rocm # chapel-2.4.0: KeyError: 'intel-oneapi-compilers': /builds/spack/spack/var/spack/repos/builtin/packages/chapel/package.py:602, in setup_chpl_compilers: env.set("CHPL_HOST_COMPILER", self.compiler_map[self.spec.compiler.name]) # - cp2k +mpi # dbcsr-2.8.0: FAILED: src/CMakeFiles/dbcsr.dir/dbcsr_api.F-pp.f src/CMakeFiles/dbcsr.dir/dbcsr_api.F.o.ddi: # - dealii # taskflow@3.7.0: cmake: Taskflow currently supports the following compilers: g++ v7.0 or above, clang++ v6.0 or above # - exago +mpi ~ipopt +hiop ~python +raja ^hiop+raja~sparse # raja-0.14.0: RAJA/pattern/kernel/Tile.hpp:174:30: error: no member named 'block_id' in 'IterableTiler' @@ -185,8 +185,8 @@ spack: # - fftx # fftx-1.2.0: https://github.com/spack/spack/issues/49621 # - fpm # fpm-0.10.0: /tmp/ifx1305151083OkWTRB/ifxqBG60i.i90: error #6405: The same named entity from different modules and/or program units cannot be referenced. [TOML_TABLE]; fpm.F90(32048): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [FPM_MANIFEST_PREPROCESS] # - geopm-runtime # concretize: c-blosc2: conflicts with '%oneapi'; - # - glvis # llvm-17.0.6: https://github.com/spack/spack/issues/49625 - # - gptune ~mpispawn # llvm-14.0.6: https://github.com/spack/spack/issues/49625 + - glvis # llvm-17.0.6: https://github.com/spack/spack/issues/49625 + # - gptune ~mpispawn # py-maturin-1.8.3: rust-lld: error: undefined symbol: __intel_cpu_feature_indicator_x # - lbann # lbann-0.104: https://github.com/spack/spack/issues/49619 # - libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp # concretize: c-blosc2: conflicts with '%oneapi'; # - nek5000 +mpi ~visit # nek5000-19.0: RuntimeError: Cannot build example: short_tests/eddy. @@ -209,8 +209,8 @@ spack: # -- # - py-jupyterlab # py-maturin: rust-lld: error: undefined symbol: _intel_fast_memcpy # - py-notebook # py-maturin: rust-lld: error: undefined symbol: _intel_fast_memcpy - # - py-numba # llvm-14.0.6: https://github.com/spack/spack/issues/49625 - # - py-pandas # llvm-14.0.6: https://github.com/spack/spack/issues/49625 + - py-numba # llvm-14.0.6: https://github.com/spack/spack/issues/49625 + - py-pandas # llvm-14.0.6: https://github.com/spack/spack/issues/49625 # - py-plotly # py-maturin: rust-lld: error: undefined symbol: _intel_fast_memcpy - aml +level_zero diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index fc7fe754ee8..bb2aca26c08 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -951,6 +951,12 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: # set the SDKROOT so the bootstrap compiler finds its C++ headers env.set("SDKROOT", macos_sdk_path()) + if self.spec.satisfies("%intel-oneapi-compilers"): + intel_libs = find_libraries( + ["libsvml", "libimf", "libirc"], self.spec["intel-oneapi-runtime"].prefix.lib + ) + env.append_flags("LDFLAGS", intel_libs.ld_flags) + def setup_run_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+clang"): env.set("CC", join_path(self.spec.prefix.bin, "clang")) From 5b352c3088ad90c88712b62ff270bcb769c897c6 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Fri, 2 May 2025 04:39:19 -0400 Subject: [PATCH 313/317] py-torch: patch FindBLAS.cmake (#50273) Pulls in the patch from https://github.com/pytorch/pytorch/pull/145849 to fix the following error: CMake Error at cmake/Modules/FindBLAS.cmake:85 (check_function_exists): Unknown CMake command "check_function_exists". --- var/spack/repos/builtin/packages/py-torch/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index fc89de5c1c7..699de840732 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -346,6 +346,13 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): when="@2.6:", ) + # Fixes 'FindBLAS.cmake' error: unknown command check_function_exists + patch( + "https://github.com/pytorch/pytorch/pull/145849.patch?full_index=1", + sha256="5675ab543b786b8f360de451b27b3eb5d3ce8499d6c1a207f4a854f0c473ab03", + when="@:2.6", + ) + # https://github.com/pytorch/pytorch/issues/90448 patch( "https://github.com/pytorch/pytorch/pull/97270.patch?full_index=1", From 2ddd8cd1aa7041ba7822ff82832f56fcae3e3524 Mon Sep 17 00:00:00 2001 From: Till Ehrengruber Date: Fri, 2 May 2025 13:18:59 +0200 Subject: [PATCH 314/317] py-cupy: add v13.2.0, v13.3.0, v13.4.0 (#50076) * Add cupy 13.4.0, 13.3.0, 13.2.0 * [@spackbot] updating style on behalf of tehrengruber * Update var/spack/repos/builtin/packages/py-cupy/package.py Co-authored-by: Mikael Simberg * Update var/spack/repos/builtin/packages/py-cupy/package.py Co-authored-by: Mikael Simberg --------- Co-authored-by: tehrengruber Co-authored-by: Mikael Simberg --- .../repos/builtin/packages/py-cupy/package.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-cupy/package.py b/var/spack/repos/builtin/packages/py-cupy/package.py index 2e892bfa370..0d9f3c1b724 100644 --- a/var/spack/repos/builtin/packages/py-cupy/package.py +++ b/var/spack/repos/builtin/packages/py-cupy/package.py @@ -17,6 +17,9 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage): homepage = "https://cupy.dev/" pypi = "cupy/cupy-8.0.0.tar.gz" + version("13.4.0", sha256="d4b60e5a1d3b89be40fad0845bb9fc467a653abe8660f752416fd38d24ab7fdb") + version("13.3.0", sha256="9a2a17af2b99cce91dd1366939c3805e3f51f9de5046df64f29ccbad3bdf78ed") + version("13.2.0", sha256="e4dbd2b2ed4159a5cc0c0f98a710a014950eb2c16eeb455e956128f3b3bd0d51") version("13.1.0", sha256="5caf62288481a27713384523623045380ff42e618be4245f478238ed1786f32d") version("12.1.0", sha256="f6d31989cdb2d96581da12822e28b102f29e254427195c2017eac327869b7320") version("12.0.0", sha256="61ddbbef73d50d606bd5087570645f3c91ec9176c2566784c1d486d6a3404545") @@ -28,12 +31,16 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage): variant("all", default=False, description="Enable optional py-scipy, optuna, and cython") - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("python@3.7:", when="@:11", type=("build", "run")) depends_on("python@3.8:", when="@12:", type=("build", "run")) depends_on("py-setuptools", type="build") - depends_on("py-cython@0.29.22:2", type="build") + depends_on("py-cython@0.29.22:2", type="build", when="@:13.3") + depends_on( + "py-cython@3:3.0.10,3.0.12:", type="build", when="@13.4:" + ) # 3.0.11 broken likely because of cython#6335, fixed in 3.0.12 depends_on("py-fastrlock@0.5:", type=("build", "run")) depends_on("py-numpy@1.20:1.25", when="@:11", type=("build", "run")) depends_on("py-numpy@1.20:1.26", when="@12:", type=("build", "run")) @@ -47,7 +54,10 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage): # Based on https://github.com/cupy/cupy/releases depends_on("cuda@:11.9", when="@:11 +cuda") depends_on("cuda@:12.1", when="@12:12.1.0 +cuda") - depends_on("cuda@:12.4", when="@13: +cuda") + depends_on("cuda@:12.1", when="@13.0 +cuda") + depends_on("cuda@:12.4", when="@13.1:13.2 +cuda") + depends_on("cuda@:12.6", when="@13.3 +cuda") + depends_on("cuda@:12.8", when="@13.4: +cuda") for a in CudaPackage.cuda_arch_values: depends_on("nccl +cuda cuda_arch={0}".format(a), when="+cuda cuda_arch={0}".format(a)) From cdeb67ec0273e842a8cc4c71d8c227aa7aaa3f9d Mon Sep 17 00:00:00 2001 From: RichardBuntLinaro <133871029+RichardBuntLinaro@users.noreply.github.com> Date: Fri, 2 May 2025 16:01:44 +0100 Subject: [PATCH 315/317] linaro-forge: add v24.1.3 (#50268) --- 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 cd283056530..82eb5e84e0b 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -22,6 +22,9 @@ class LinaroForge(Package): maintainers("kenche-linaro") if platform.machine() == "aarch64": + version( + "24.1.3", sha256="e79975611ae17b17481ec6626e9932bd0901cffcc6919bed523e3dc58dddefcd" + ) version( "24.1.2", sha256="c3821b2e792d07b1b09f1ca81d1a27590b1bef62d5c48d6f7271debef62b6398" ) @@ -100,6 +103,9 @@ class LinaroForge(Package): "22.0.4", sha256="f4cb5bcbaa67f9209299fe4653186a2829760b8b16a2883913aa43766375b04c" ) elif platform.machine() == "x86_64": + version( + "24.1.3", sha256="94ac68bbde8b56897d507c1ed27ff113bc8bf5167a2c513510a7ac7aed139d50" + ) version( "24.1.2", sha256="794fed7cb60dd96fd68f0f414f6a8d15920cd2bd5a8795978150ca27c55a547d" ) From c2f3539a5e279531e4b65461011203a94db231c8 Mon Sep 17 00:00:00 2001 From: "Paul R. C. Kent" Date: Sun, 4 May 2025 05:31:42 -0400 Subject: [PATCH 316/317] llvm: add v20.1.4 (#50283) --- 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 bb2aca26c08..bed952d1a7a 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -55,6 +55,7 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): version("main", branch="main") # Latest stable + version("20.1.4", sha256="65e3a582c4c684fa707a56ff643427bce3633eceaceae3295d81c0e830f44b89") version("20.1.3", sha256="b40c0d185b98c2ee3c0cb2f14cde65a06008b33dfb471cc7ad868f8ca3f7f897") version("20.1.2", sha256="9ee597456405ddf4809bcf66a4765137a68a85361347ca2a4bb13d9176e932ab") version("20.1.1", sha256="edde69aa3e48a3892a8f01332ff79cfb6179151b42503c4ba77d2cd408b013bf") From a8a402115b68b1da9dcb65a516fa60c324c0e822 Mon Sep 17 00:00:00 2001 From: YI Zeping <18586016708@163.com> Date: Sun, 4 May 2025 17:58:02 +0800 Subject: [PATCH 317/317] add binutils 2.44 (#50267) --- var/spack/repos/builtin/packages/binutils/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index ffdfa0185c5..cf3c5fc21be 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -25,7 +25,7 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): "GPL-2.0-or-later AND LGPL-2.1-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later", checked_by="tgamblin", ) - + version("2.44", sha256="f66390a661faa117d00fab2e79cf2dc9d097b42cc296bf3f8677d1e7b452dc3a") version("2.43.1", sha256="becaac5d295e037587b63a42fad57fe3d9d7b83f478eb24b67f9eec5d0f1872f") version("2.43", sha256="fed3c3077f0df7a4a1aa47b080b8c53277593ccbb4e5e78b73ffb4e3f265e750") version("2.42", sha256="aa54850ebda5064c72cd4ec2d9b056c294252991486350d9a97ab2a6dfdfaf12")