Compare commits
99 Commits
develop-20
...
packages/p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
559cda89b7 | ||
|
|
ff74147107 | ||
|
|
7547d8a91e | ||
|
|
d394e54925 | ||
|
|
5f467bb577 | ||
|
|
716639bbdd | ||
|
|
16d8a210b3 | ||
|
|
b6783bbfa1 | ||
|
|
962829f72e | ||
|
|
31ff80ddca | ||
|
|
396785477c | ||
|
|
752b72c304 | ||
|
|
38d77570b4 | ||
|
|
d8885b28fa | ||
|
|
abd3487570 | ||
|
|
0d760a5fd8 | ||
|
|
dde91ae181 | ||
|
|
590dbf67f3 | ||
|
|
d199738f31 | ||
|
|
f55f829437 | ||
|
|
295f3ff915 | ||
|
|
a0ad02c247 | ||
|
|
a21d314ba7 | ||
|
|
a4ad8c8174 | ||
|
|
aa3ee3fa2a | ||
|
|
a8584d5eb4 | ||
|
|
26f7b2c066 | ||
|
|
3a715c3e07 | ||
|
|
963519d2b2 | ||
|
|
34efcb686c | ||
|
|
5016084213 | ||
|
|
5a04e84097 | ||
|
|
ec34e88d79 | ||
|
|
31fa12ebd3 | ||
|
|
ecf414ed07 | ||
|
|
119bec391e | ||
|
|
d5c0ace993 | ||
|
|
d6bbd8f758 | ||
|
|
f74d51bf6e | ||
|
|
821ebee53c | ||
|
|
9dada76d34 | ||
|
|
e9cc1b36bc | ||
|
|
fd2c040981 | ||
|
|
33cd7d6033 | ||
|
|
9c255381b1 | ||
|
|
fd6c419682 | ||
|
|
9d1d808f94 | ||
|
|
7a0ef93332 | ||
|
|
bf48b7662e | ||
|
|
d14333cc79 | ||
|
|
084361124e | ||
|
|
a1f4cc8b73 | ||
|
|
b20800e765 | ||
|
|
01b1e24074 | ||
|
|
8029279dad | ||
|
|
5f4e12d8f2 | ||
|
|
a8728e700b | ||
|
|
f8adf2b70f | ||
|
|
d0ef2d9e00 | ||
|
|
d4bd3e298a | ||
|
|
40268634b6 | ||
|
|
b0e8451d83 | ||
|
|
868a52387b | ||
|
|
3fe89115c2 | ||
|
|
412024cf21 | ||
|
|
91b20ed7d0 | ||
|
|
0caacc6e21 | ||
|
|
651126e64c | ||
|
|
e15a530f32 | ||
|
|
0f84623914 | ||
|
|
90afa5c5ef | ||
|
|
024620bd7b | ||
|
|
9bec8e2f4b | ||
|
|
18dd465532 | ||
|
|
a2431ec00c | ||
|
|
78abe968a0 | ||
|
|
38e9043b9e | ||
|
|
a0599e5e27 | ||
|
|
1cd6f4e28f | ||
|
|
d2298e8e99 | ||
|
|
e3806aeac5 | ||
|
|
38309ced33 | ||
|
|
2f21201bf8 | ||
|
|
95a0f1924d | ||
|
|
52969dfa78 | ||
|
|
ee588e4bbe | ||
|
|
461f1d186b | ||
|
|
03b864f986 | ||
|
|
bff4fa2761 | ||
|
|
ad3fd4e7e9 | ||
|
|
a574a995f8 | ||
|
|
0002861daf | ||
|
|
a65216f0a0 | ||
|
|
7604869198 | ||
|
|
d409126c27 | ||
|
|
2b0d985714 | ||
|
|
eedec51566 | ||
|
|
016954fcff | ||
|
|
0f17672ddb |
@@ -30,7 +30,7 @@ than always choosing the latest versions or default variants.
|
||||
|
||||
.. note::
|
||||
|
||||
As a rule of thumb: requirements + constraints > reuse > preferences > defaults.
|
||||
As a rule of thumb: requirements + constraints > strong preferences > reuse > preferences > defaults.
|
||||
|
||||
The following set of criteria (from lowest to highest precedence) explain
|
||||
common cases where concretization output may seem surprising at first.
|
||||
@@ -56,7 +56,19 @@ common cases where concretization output may seem surprising at first.
|
||||
concretizer:
|
||||
reuse: dependencies # other options are 'true' and 'false'
|
||||
|
||||
3. :ref:`Package requirements <package-requirements>` configured in ``packages.yaml``,
|
||||
3. :ref:`Strong preferences <package-strong-preferences>` configured in ``packages.yaml``
|
||||
are higher priority than reuse, and can be used to strongly prefer a specific version
|
||||
or variant, without erroring out if it's not possible. Strong preferences are specified
|
||||
as follows:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
packages:
|
||||
foo:
|
||||
prefer:
|
||||
- "@1.1: ~mpi"
|
||||
|
||||
4. :ref:`Package requirements <package-requirements>` configured in ``packages.yaml``,
|
||||
and constraints from the command line as well as ``package.py`` files override all
|
||||
of the above. Requirements are specified as follows:
|
||||
|
||||
@@ -66,6 +78,8 @@ common cases where concretization output may seem surprising at first.
|
||||
foo:
|
||||
require:
|
||||
- "@1.2: +mpi"
|
||||
conflicts:
|
||||
- "@1.4"
|
||||
|
||||
Requirements and constraints restrict the set of possible solutions, while reuse
|
||||
behavior and preferences influence what an optimal solution looks like.
|
||||
|
||||
@@ -486,6 +486,8 @@ present. For instance with a configuration like:
|
||||
|
||||
you will use ``mvapich2~cuda %gcc`` as an ``mpi`` provider.
|
||||
|
||||
.. _package-strong-preferences:
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Conflicts and strong preferences
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -278,17 +278,24 @@ def initconfig_hardware_entries(self):
|
||||
entries.append("# ROCm")
|
||||
entries.append("#------------------{0}\n".format("-" * 30))
|
||||
|
||||
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
|
||||
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
|
||||
llvm_bin = spec["llvm-amdgpu"].prefix.bin
|
||||
llvm_prefix = spec["llvm-amdgpu"].prefix
|
||||
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
|
||||
# others point to /<path>/rocm-<ver>/llvm
|
||||
if os.path.basename(os.path.normpath(llvm_prefix)) != "llvm":
|
||||
llvm_bin = os.path.join(llvm_prefix, "llvm/bin/")
|
||||
entries.append(
|
||||
cmake_cache_filepath("CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "clang++"))
|
||||
)
|
||||
if spec.satisfies("^blt@0.7:"):
|
||||
rocm_root = os.path.dirname(spec["llvm-amdgpu"].prefix)
|
||||
entries.append(cmake_cache_path("ROCM_PATH", rocm_root))
|
||||
else:
|
||||
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
|
||||
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
|
||||
llvm_bin = spec["llvm-amdgpu"].prefix.bin
|
||||
llvm_prefix = spec["llvm-amdgpu"].prefix
|
||||
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
|
||||
# others point to /<path>/rocm-<ver>/llvm
|
||||
if os.path.basename(os.path.normpath(llvm_prefix)) != "llvm":
|
||||
llvm_bin = os.path.join(llvm_prefix, "llvm/bin/")
|
||||
entries.append(
|
||||
cmake_cache_filepath(
|
||||
"CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "amdclang++")
|
||||
)
|
||||
)
|
||||
|
||||
archs = self.spec.variants["amdgpu_target"].value
|
||||
if archs[0] != "none":
|
||||
arch_str = ";".join(archs)
|
||||
|
||||
@@ -1126,7 +1126,7 @@ def _add(
|
||||
installation_time:
|
||||
Date and time of installation
|
||||
allow_missing: if True, don't warn when installation is not found on on disk
|
||||
This is useful when installing specs without build deps.
|
||||
This is useful when installing specs without build/test deps.
|
||||
"""
|
||||
if not spec.concrete:
|
||||
raise NonConcreteSpecAddError("Specs added to DB must be concrete.")
|
||||
@@ -1146,10 +1146,8 @@ def _add(
|
||||
edge.spec,
|
||||
explicit=False,
|
||||
installation_time=installation_time,
|
||||
# allow missing build-only deps. This prevents excessive warnings when a spec is
|
||||
# installed, and its build dep is missing a build dep; there's no need to install
|
||||
# the build dep's build dep first, and there's no need to warn about it missing.
|
||||
allow_missing=allow_missing or edge.depflag == dt.BUILD,
|
||||
# allow missing build / test only deps
|
||||
allow_missing=allow_missing or edge.depflag & (dt.BUILD | dt.TEST) == edge.depflag,
|
||||
)
|
||||
|
||||
# Make sure the directory layout agrees whether the spec is installed
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import spack.deptypes as dt
|
||||
import spack.repo
|
||||
|
||||
hashes = []
|
||||
HASHES = []
|
||||
|
||||
|
||||
class SpecHashDescriptor:
|
||||
@@ -23,7 +23,7 @@ def __init__(self, depflag: dt.DepFlag, package_hash, name, override=None):
|
||||
self.depflag = depflag
|
||||
self.package_hash = package_hash
|
||||
self.name = name
|
||||
hashes.append(self)
|
||||
HASHES.append(self)
|
||||
# Allow spec hashes to have an alternate computation method
|
||||
self.override = override
|
||||
|
||||
@@ -43,13 +43,9 @@ def __repr__(self):
|
||||
)
|
||||
|
||||
|
||||
#: Spack's deployment hash. Includes all inputs that can affect how a package is built.
|
||||
dag_hash = SpecHashDescriptor(depflag=dt.BUILD | dt.LINK | dt.RUN, package_hash=True, name="hash")
|
||||
|
||||
|
||||
#: Hash descriptor used only to transfer a DAG, as is, across processes
|
||||
process_hash = SpecHashDescriptor(
|
||||
depflag=dt.BUILD | dt.LINK | dt.RUN | dt.TEST, package_hash=True, name="process_hash"
|
||||
#: The DAG hash includes all inputs that can affect how a package is built.
|
||||
dag_hash = SpecHashDescriptor(
|
||||
depflag=dt.BUILD | dt.LINK | dt.RUN | dt.TEST, package_hash=True, name="hash"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
import spack.store
|
||||
import spack.url
|
||||
import spack.util.environment
|
||||
import spack.util.executable
|
||||
import spack.util.path
|
||||
import spack.util.web
|
||||
import spack.variant
|
||||
@@ -1369,6 +1370,14 @@ def prefix(self):
|
||||
def home(self):
|
||||
return self.prefix
|
||||
|
||||
@property
|
||||
def command(self) -> spack.util.executable.Executable:
|
||||
"""Returns the main executable for this package."""
|
||||
path = os.path.join(self.home.bin, self.spec.name)
|
||||
if fsys.is_exe(path):
|
||||
return spack.util.executable.Executable(path)
|
||||
raise RuntimeError(f"Unable to locate {self.spec.name} command in {self.home.bin}")
|
||||
|
||||
@property # type: ignore[misc]
|
||||
@memoized
|
||||
def compiler(self):
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
import spack.deptypes as dt
|
||||
import spack.environment as ev
|
||||
import spack.error
|
||||
import spack.hash_types as ht
|
||||
import spack.package_base
|
||||
import spack.package_prefs
|
||||
import spack.patch
|
||||
@@ -567,7 +566,6 @@ def to_dict(self, test: bool = False) -> dict:
|
||||
serial_node_arg = (
|
||||
lambda node_dict: f"""{{"id": "{node_dict.id}", "pkg": "{node_dict.pkg}"}}"""
|
||||
)
|
||||
spec_hash_type = ht.process_hash if test else ht.dag_hash
|
||||
ret = dict()
|
||||
ret["asp"] = self.asp
|
||||
ret["criteria"] = self.criteria
|
||||
@@ -581,14 +579,14 @@ def to_dict(self, test: bool = False) -> dict:
|
||||
serial_answer = answer[:2]
|
||||
serial_answer_dict = {}
|
||||
for node, spec in answer[2].items():
|
||||
serial_answer_dict[serial_node_arg(node)] = spec.to_dict(hash=spec_hash_type)
|
||||
serial_answer_dict[serial_node_arg(node)] = spec.to_dict()
|
||||
serial_answer = serial_answer + (serial_answer_dict,)
|
||||
serial_answers.append(serial_answer)
|
||||
ret["answers"] = serial_answers
|
||||
ret["specs_by_input"] = {}
|
||||
input_specs = {} if not self.specs_by_input else self.specs_by_input
|
||||
for input, spec in input_specs.items():
|
||||
ret["specs_by_input"][str(input)] = spec.to_dict(hash=spec_hash_type)
|
||||
ret["specs_by_input"][str(input)] = spec.to_dict()
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
@@ -1211,7 +1209,7 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre
|
||||
full_path = lambda x: os.path.join(parent_dir, x)
|
||||
abs_control_files = [full_path(x) for x in control_files]
|
||||
for ctrl_file in abs_control_files:
|
||||
with open(ctrl_file, "r+", encoding="utf-8") as f:
|
||||
with open(ctrl_file, "r", encoding="utf-8") as f:
|
||||
problem_repr += "\n" + f.read()
|
||||
|
||||
result = None
|
||||
@@ -2236,8 +2234,8 @@ def emit_facts_from_requirement_rules(self, rules: List[RequirementRule]):
|
||||
spec.attach_git_version_lookup()
|
||||
|
||||
when_spec = spec
|
||||
if virtual:
|
||||
when_spec = spack.spec.Spec(pkg_name)
|
||||
if virtual and spec.name != pkg_name:
|
||||
when_spec = spack.spec.Spec(f"^[virtuals={pkg_name}] {spec.name}")
|
||||
|
||||
try:
|
||||
context = ConditionContext()
|
||||
|
||||
@@ -597,6 +597,13 @@ attr("virtual_on_edge", PackageNode, ProviderNode, Virtual)
|
||||
attr("virtual_on_incoming_edges", ProviderNode, Virtual)
|
||||
:- attr("virtual_on_edge", _, ProviderNode, Virtual).
|
||||
|
||||
% This is needed to allow requirement on virtuals,
|
||||
% when a virtual root is requested
|
||||
attr("virtual_on_incoming_edges", ProviderNode, Virtual)
|
||||
:- attr("virtual_root", node(min_dupe_id, Virtual)),
|
||||
attr("root", ProviderNode),
|
||||
provider(ProviderNode, node(min_dupe_id, Virtual)).
|
||||
|
||||
% dependencies on virtuals also imply that the virtual is a virtual node
|
||||
1 { attr("virtual_node", node(0..X-1, Virtual)) : max_dupes(Virtual, X) }
|
||||
:- node_depends_on_virtual(PackageNode, Virtual).
|
||||
@@ -953,12 +960,14 @@ error(100, "Cannot set variant '{0}' for package '{1}' because the variant condi
|
||||
build(node(ID, Package)).
|
||||
|
||||
% at most one variant value for single-valued variants.
|
||||
error(100, "'{0}' required multiple values for single-valued variant '{1}'", Package, Variant)
|
||||
error(100, "'{0}' requires conflicting variant values 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2)
|
||||
:- attr("node", node(ID, Package)),
|
||||
node_has_variant(node(ID, Package), Variant, _),
|
||||
variant_single_value(node(ID, Package), Variant),
|
||||
build(node(ID, Package)),
|
||||
2 { attr("variant_value", node(ID, Package), Variant, Value) }.
|
||||
attr("variant_value", node(ID, Package), Variant, Value1),
|
||||
attr("variant_value", node(ID, Package), Variant, Value2),
|
||||
Value1 < Value2,
|
||||
build(node(ID, Package)).
|
||||
|
||||
error(100, "No valid value for variant '{1}' of package '{0}'", Package, Variant)
|
||||
:- attr("node", node(ID, Package)),
|
||||
|
||||
@@ -117,7 +117,7 @@ error(0, "Cannot find a valid provider for virtual {0}", Virtual, startcauses, C
|
||||
condition_holds(Cause, node(CID, TriggerPkg)).
|
||||
|
||||
% At most one variant value for single-valued variants
|
||||
error(0, "'{0}' required multiple values for single-valued variant '{1}'\n Requested 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2, startcauses, Cause1, X, Cause2, X)
|
||||
error(0, "'{0}' requires conflicting variant values 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2, startcauses, Cause1, X, Cause2, X)
|
||||
:- attr("node", node(X, Package)),
|
||||
node_has_variant(node(X, Package), Variant, VariantID),
|
||||
variant_single_value(node(X, Package), Variant),
|
||||
|
||||
@@ -66,18 +66,29 @@ def rules_from_package_py(self, pkg: spack.package_base.PackageBase) -> List[Req
|
||||
return rules
|
||||
|
||||
def rules_from_virtual(self, virtual_str: str) -> List[RequirementRule]:
|
||||
requirements = self.config.get("packages", {}).get(virtual_str, {}).get("require", [])
|
||||
return self._rules_from_requirements(
|
||||
virtual_str, requirements, kind=RequirementKind.VIRTUAL
|
||||
)
|
||||
kind, requests = self._raw_yaml_data(virtual_str, section="require", virtual=True)
|
||||
result = self._rules_from_requirements(virtual_str, requests, kind=kind)
|
||||
|
||||
kind, requests = self._raw_yaml_data(virtual_str, section="prefer", virtual=True)
|
||||
result.extend(self._rules_from_preferences(virtual_str, preferences=requests, kind=kind))
|
||||
|
||||
kind, requests = self._raw_yaml_data(virtual_str, section="conflict", virtual=True)
|
||||
result.extend(self._rules_from_conflicts(virtual_str, conflicts=requests, kind=kind))
|
||||
|
||||
return result
|
||||
|
||||
def rules_from_require(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
|
||||
kind, requirements = self._raw_yaml_data(pkg, section="require")
|
||||
kind, requirements = self._raw_yaml_data(pkg.name, section="require")
|
||||
return self._rules_from_requirements(pkg.name, requirements, kind=kind)
|
||||
|
||||
def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
|
||||
kind, preferences = self._raw_yaml_data(pkg.name, section="prefer")
|
||||
return self._rules_from_preferences(pkg.name, preferences=preferences, kind=kind)
|
||||
|
||||
def _rules_from_preferences(
|
||||
self, pkg_name: str, *, preferences, kind: RequirementKind
|
||||
) -> List[RequirementRule]:
|
||||
result = []
|
||||
kind, preferences = self._raw_yaml_data(pkg, section="prefer")
|
||||
for item in preferences:
|
||||
spec, condition, message = self._parse_prefer_conflict_item(item)
|
||||
result.append(
|
||||
@@ -86,7 +97,7 @@ def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[Require
|
||||
# require:
|
||||
# - any_of: [spec_str, "@:"]
|
||||
RequirementRule(
|
||||
pkg_name=pkg.name,
|
||||
pkg_name=pkg_name,
|
||||
policy="any_of",
|
||||
requirements=[spec, spack.spec.Spec("@:")],
|
||||
kind=kind,
|
||||
@@ -97,8 +108,13 @@ def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[Require
|
||||
return result
|
||||
|
||||
def rules_from_conflict(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
|
||||
kind, conflicts = self._raw_yaml_data(pkg.name, section="conflict")
|
||||
return self._rules_from_conflicts(pkg.name, conflicts=conflicts, kind=kind)
|
||||
|
||||
def _rules_from_conflicts(
|
||||
self, pkg_name: str, *, conflicts, kind: RequirementKind
|
||||
) -> List[RequirementRule]:
|
||||
result = []
|
||||
kind, conflicts = self._raw_yaml_data(pkg, section="conflict")
|
||||
for item in conflicts:
|
||||
spec, condition, message = self._parse_prefer_conflict_item(item)
|
||||
result.append(
|
||||
@@ -107,7 +123,7 @@ def rules_from_conflict(self, pkg: spack.package_base.PackageBase) -> List[Requi
|
||||
# require:
|
||||
# - one_of: [spec_str, "@:"]
|
||||
RequirementRule(
|
||||
pkg_name=pkg.name,
|
||||
pkg_name=pkg_name,
|
||||
policy="one_of",
|
||||
requirements=[spec, spack.spec.Spec("@:")],
|
||||
kind=kind,
|
||||
@@ -129,10 +145,14 @@ def _parse_prefer_conflict_item(self, item):
|
||||
message = item.get("message")
|
||||
return spec, condition, message
|
||||
|
||||
def _raw_yaml_data(self, pkg: spack.package_base.PackageBase, *, section: str):
|
||||
def _raw_yaml_data(self, pkg_name: str, *, section: str, virtual: bool = False):
|
||||
config = self.config.get("packages")
|
||||
data = config.get(pkg.name, {}).get(section, [])
|
||||
data = config.get(pkg_name, {}).get(section, [])
|
||||
kind = RequirementKind.PACKAGE
|
||||
|
||||
if virtual:
|
||||
return RequirementKind.VIRTUAL, data
|
||||
|
||||
if not data:
|
||||
data = config.get("all", {}).get(section, [])
|
||||
kind = RequirementKind.DEFAULT
|
||||
|
||||
@@ -97,7 +97,6 @@
|
||||
import spack.spec_parser
|
||||
import spack.store
|
||||
import spack.traverse
|
||||
import spack.util.executable
|
||||
import spack.util.hash
|
||||
import spack.util.prefix
|
||||
import spack.util.spack_json as sjson
|
||||
@@ -1110,28 +1109,6 @@ def clear(self):
|
||||
self.edges.clear()
|
||||
|
||||
|
||||
def _command_default_handler(spec: "Spec"):
|
||||
"""Default handler when looking for the 'command' attribute.
|
||||
|
||||
Tries to search for ``spec.name`` in the ``spec.home.bin`` directory.
|
||||
|
||||
Parameters:
|
||||
spec: spec that is being queried
|
||||
|
||||
Returns:
|
||||
Executable: An executable of the command
|
||||
|
||||
Raises:
|
||||
RuntimeError: If the command is not found
|
||||
"""
|
||||
home = getattr(spec.package, "home")
|
||||
path = os.path.join(home.bin, spec.name)
|
||||
|
||||
if fs.is_exe(path):
|
||||
return spack.util.executable.Executable(path)
|
||||
raise RuntimeError(f"Unable to locate {spec.name} command in {home.bin}")
|
||||
|
||||
|
||||
def _headers_default_handler(spec: "Spec"):
|
||||
"""Default handler when looking for the 'headers' attribute.
|
||||
|
||||
@@ -1335,9 +1312,7 @@ class SpecBuildInterface(lang.ObjectWrapper):
|
||||
home = ForwardQueryToPackage("home", default_handler=None)
|
||||
headers = ForwardQueryToPackage("headers", default_handler=_headers_default_handler)
|
||||
libs = ForwardQueryToPackage("libs", default_handler=_libs_default_handler)
|
||||
command = ForwardQueryToPackage(
|
||||
"command", default_handler=_command_default_handler, _indirect=True
|
||||
)
|
||||
command = ForwardQueryToPackage("command", default_handler=None, _indirect=True)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -1515,7 +1490,7 @@ def __init__(self, spec_like=None, *, external_path=None, external_modules=None)
|
||||
self.abstract_hash = None
|
||||
|
||||
# initial values for all spec hash types
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
setattr(self, h.attr, None)
|
||||
|
||||
# cache for spec's prefix, computed lazily by prefix property
|
||||
@@ -2198,30 +2173,16 @@ def package_hash(self):
|
||||
def dag_hash(self, length=None):
|
||||
"""This is Spack's default hash, used to identify installations.
|
||||
|
||||
Same as the full hash (includes package hash and build/link/run deps).
|
||||
Tells us when package files and any dependencies have changes.
|
||||
|
||||
NOTE: Versions of Spack prior to 0.18 only included link and run deps.
|
||||
NOTE: Versions of Spack prior to 1.0 only did not include test deps.
|
||||
|
||||
"""
|
||||
return self._cached_hash(ht.dag_hash, length)
|
||||
|
||||
def process_hash(self, length=None):
|
||||
"""Hash used to transfer specs among processes.
|
||||
|
||||
This hash includes build and test dependencies and is only used to
|
||||
serialize a spec and pass it around among processes.
|
||||
"""
|
||||
return self._cached_hash(ht.process_hash, length)
|
||||
|
||||
def dag_hash_bit_prefix(self, bits):
|
||||
"""Get the first <bits> bits of the DAG hash as an integer type."""
|
||||
return spack.util.hash.base32_prefix_bits(self.dag_hash(), bits)
|
||||
|
||||
def process_hash_bit_prefix(self, bits):
|
||||
"""Get the first <bits> bits of the DAG hash as an integer type."""
|
||||
return spack.util.hash.base32_prefix_bits(self.process_hash(), bits)
|
||||
|
||||
def _lookup_hash(self):
|
||||
"""Lookup just one spec with an abstract hash, returning a spec from the the environment,
|
||||
store, or finally, binary caches."""
|
||||
@@ -3588,11 +3549,11 @@ def _dup(self, other: "Spec", deps: Union[bool, dt.DepTypes, dt.DepFlag] = True)
|
||||
|
||||
if self._concrete:
|
||||
self._dunder_hash = other._dunder_hash
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
setattr(self, h.attr, getattr(other, h.attr, None))
|
||||
else:
|
||||
self._dunder_hash = None
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
setattr(self, h.attr, None)
|
||||
|
||||
return changed
|
||||
@@ -3784,16 +3745,6 @@ def _cmp_iter(self):
|
||||
# serialized before the hash change and one after, are considered different.
|
||||
yield self.dag_hash() if self.concrete else None
|
||||
|
||||
# This needs to be in _cmp_iter so that no specs with different process hashes
|
||||
# are considered the same by `__hash__` or `__eq__`.
|
||||
#
|
||||
# TODO: We should eventually unify the `_cmp_*` methods with `to_node_dict` so
|
||||
# TODO: there aren't two sources of truth, but this needs some thought, since
|
||||
# TODO: they exist for speed. We should benchmark whether it's really worth
|
||||
# TODO: having two types of hashing now that we use `json` instead of `yaml` for
|
||||
# TODO: spec hashing.
|
||||
yield self.process_hash() if self.concrete else None
|
||||
|
||||
def deps():
|
||||
for dep in sorted(itertools.chain.from_iterable(self._dependencies.values())):
|
||||
yield dep.spec.name
|
||||
@@ -4447,7 +4398,7 @@ def clear_caches(self, ignore: Tuple[str, ...] = ()) -> None:
|
||||
"""
|
||||
Clears all cached hashes in a Spec, while preserving other properties.
|
||||
"""
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
if h.attr not in ignore:
|
||||
if hasattr(self, h.attr):
|
||||
setattr(self, h.attr, None)
|
||||
@@ -4456,18 +4407,12 @@ def clear_caches(self, ignore: Tuple[str, ...] = ()) -> None:
|
||||
setattr(self, attr, None)
|
||||
|
||||
def __hash__(self):
|
||||
# If the spec is concrete, we leverage the process hash and just use
|
||||
# a 64-bit prefix of it. The process hash has the advantage that it's
|
||||
# computed once per concrete spec, and it's saved -- so if we read
|
||||
# concrete specs we don't need to recompute the whole hash. This is
|
||||
# good for large, unchanging specs.
|
||||
#
|
||||
# We use the process hash instead of the DAG hash here because the DAG
|
||||
# hash includes the package hash, which can cause infinite recursion,
|
||||
# and which isn't defined unless the spec has a known package.
|
||||
# If the spec is concrete, we leverage the dag hash and just use a 64-bit prefix of it.
|
||||
# The dag hash has the advantage that it's computed once per concrete spec, and it's saved
|
||||
# -- so if we read concrete specs we don't need to recompute the whole hash.
|
||||
if self.concrete:
|
||||
if not self._dunder_hash:
|
||||
self._dunder_hash = self.process_hash_bit_prefix(64)
|
||||
self._dunder_hash = self.dag_hash_bit_prefix(64)
|
||||
return self._dunder_hash
|
||||
|
||||
# This is the normal hash for lazy_lexicographic_ordering. It's
|
||||
@@ -4476,7 +4421,7 @@ def __hash__(self):
|
||||
return hash(lang.tuplify(self._cmp_iter))
|
||||
|
||||
def __reduce__(self):
|
||||
return Spec.from_dict, (self.to_dict(hash=ht.process_hash),)
|
||||
return Spec.from_dict, (self.to_dict(hash=ht.dag_hash),)
|
||||
|
||||
def attach_git_version_lookup(self):
|
||||
# Add a git lookup method for GitVersions
|
||||
@@ -4798,7 +4743,7 @@ def from_node_dict(cls, node):
|
||||
spec = Spec()
|
||||
|
||||
name, node = cls.name_and_data(node)
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
setattr(spec, h.attr, node.get(h.name, None))
|
||||
|
||||
spec.name = name
|
||||
@@ -4981,7 +4926,7 @@ def read_specfile_dep_specs(cls, deps, hash_type=ht.dag_hash.name):
|
||||
"""
|
||||
for dep_name, elt in deps.items():
|
||||
if isinstance(elt, dict):
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
if h.name in elt:
|
||||
dep_hash, deptypes = elt[h.name], elt["type"]
|
||||
hash_type = h.name
|
||||
@@ -5024,7 +4969,7 @@ def read_specfile_dep_specs(cls, deps, hash_type=ht.dag_hash.name):
|
||||
dep_name = dep["name"]
|
||||
if isinstance(elt, dict):
|
||||
# new format: elements of dependency spec are keyed.
|
||||
for h in ht.hashes:
|
||||
for h in ht.HASHES:
|
||||
if h.name in elt:
|
||||
dep_hash, deptypes, hash_type, virtuals = cls.extract_info_from_dep(elt, h)
|
||||
break
|
||||
|
||||
@@ -59,13 +59,6 @@ def mock_fetch_remote_versions(*args, **kwargs):
|
||||
assert v.strip(" \n\t") == "99.99.99\n 3.2.1"
|
||||
|
||||
|
||||
@pytest.mark.maybeslow
|
||||
def test_no_versions():
|
||||
"""Test a package for which no remote versions are available."""
|
||||
|
||||
versions("converge")
|
||||
|
||||
|
||||
@pytest.mark.maybeslow
|
||||
def test_no_unchecksummed_versions():
|
||||
"""Test a package for which no unchecksummed versions are available."""
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
]
|
||||
|
||||
variant_error_messages = [
|
||||
"'fftw' required multiple values for single-valued variant 'mpi'",
|
||||
" Requested '~mpi' and '+mpi'",
|
||||
"'fftw' requires conflicting variant values '~mpi' and '+mpi'",
|
||||
" required because quantum-espresso depends on fftw+mpi when +invino",
|
||||
" required because quantum-espresso+invino ^fftw~mpi requested explicitly",
|
||||
" required because quantum-espresso+invino ^fftw~mpi requested explicitly",
|
||||
|
||||
@@ -377,11 +377,14 @@ def test_require_cflags(concretize_scope, mock_packages):
|
||||
"""
|
||||
update_packages_config(conf_str)
|
||||
|
||||
spec_mpich2 = spack.concretize.concretize_one("mpich2")
|
||||
assert spec_mpich2.satisfies("cflags=-g")
|
||||
mpich2 = spack.concretize.concretize_one("mpich2")
|
||||
assert mpich2.satisfies("cflags=-g")
|
||||
|
||||
spec_mpi = spack.concretize.concretize_one("mpi")
|
||||
assert spec_mpi.satisfies("mpich cflags=-O1")
|
||||
mpileaks = spack.concretize.concretize_one("mpileaks")
|
||||
assert mpileaks["mpi"].satisfies("mpich cflags=-O1")
|
||||
|
||||
mpi = spack.concretize.concretize_one("mpi")
|
||||
assert mpi.satisfies("mpich cflags=-O1")
|
||||
|
||||
|
||||
def test_requirements_for_package_that_is_not_needed(concretize_scope, test_repo):
|
||||
@@ -982,6 +985,52 @@ def test_requiring_package_on_multiple_virtuals(concretize_scope, mock_packages)
|
||||
["%clang"],
|
||||
["%gcc"],
|
||||
),
|
||||
# Test using preferences on virtuals
|
||||
(
|
||||
"""
|
||||
packages:
|
||||
all:
|
||||
providers:
|
||||
mpi: [mpich]
|
||||
mpi:
|
||||
prefer:
|
||||
- zmpi
|
||||
""",
|
||||
"mpileaks",
|
||||
["^[virtuals=mpi] zmpi"],
|
||||
["^[virtuals=mpi] mpich"],
|
||||
),
|
||||
(
|
||||
"""
|
||||
packages:
|
||||
all:
|
||||
providers:
|
||||
mpi: [mpich]
|
||||
mpi:
|
||||
prefer:
|
||||
- zmpi
|
||||
""",
|
||||
"mpileaks ^[virtuals=mpi] mpich",
|
||||
["^[virtuals=mpi] mpich"],
|
||||
["^[virtuals=mpi] zmpi"],
|
||||
),
|
||||
# Tests that strong preferences can be overridden by requirements
|
||||
(
|
||||
"""
|
||||
packages:
|
||||
all:
|
||||
providers:
|
||||
mpi: [zmpi]
|
||||
mpi:
|
||||
require:
|
||||
- mpich
|
||||
prefer:
|
||||
- zmpi
|
||||
""",
|
||||
"mpileaks",
|
||||
["^[virtuals=mpi] mpich"],
|
||||
["^[virtuals=mpi] zmpi"],
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_strong_preferences_packages_yaml(
|
||||
@@ -1032,6 +1081,16 @@ def test_strong_preferences_packages_yaml(
|
||||
""",
|
||||
"multivalue-variant@=2.3 %clang",
|
||||
),
|
||||
# Test using conflict on virtual
|
||||
(
|
||||
"""
|
||||
packages:
|
||||
mpi:
|
||||
conflict:
|
||||
- mpich
|
||||
""",
|
||||
"mpileaks ^[virtuals=mpi] mpich",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_conflict_packages_yaml(packages_yaml, spec_str, concretize_scope, mock_packages):
|
||||
@@ -1168,3 +1227,26 @@ def test_anonymous_spec_cannot_be_used_in_virtual_requirements(
|
||||
update_packages_config(packages_yaml)
|
||||
with pytest.raises(spack.error.SpackError, match=err_match):
|
||||
spack.concretize.concretize_one("mpileaks")
|
||||
|
||||
|
||||
def test_virtual_requirement_respects_any_of(concretize_scope, mock_packages):
|
||||
"""Tests that "any of" requirements can be used with virtuals"""
|
||||
conf_str = """\
|
||||
packages:
|
||||
mpi:
|
||||
require:
|
||||
- any_of: ["mpich2", "mpich"]
|
||||
"""
|
||||
update_packages_config(conf_str)
|
||||
|
||||
s = spack.concretize.concretize_one("mpileaks")
|
||||
assert s.satisfies("^[virtuals=mpi] mpich2")
|
||||
|
||||
s = spack.concretize.concretize_one("mpileaks ^mpich2")
|
||||
assert s.satisfies("^[virtuals=mpi] mpich2")
|
||||
|
||||
s = spack.concretize.concretize_one("mpileaks ^mpich")
|
||||
assert s.satisfies("^[virtuals=mpi] mpich")
|
||||
|
||||
with pytest.raises(spack.error.SpackError):
|
||||
spack.concretize.concretize_one("mpileaks ^[virtuals=mpi] zmpi")
|
||||
|
||||
@@ -1751,7 +1751,6 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co
|
||||
|
||||
assert hash(a1) == hash(a2)
|
||||
assert a1.dag_hash() == a2.dag_hash()
|
||||
assert a1.process_hash() == a2.process_hash()
|
||||
|
||||
a1.clear_caches()
|
||||
a2.clear_caches()
|
||||
@@ -1764,7 +1763,6 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co
|
||||
|
||||
assert hash(a1) != hash(a2)
|
||||
assert a1.dag_hash() != a2.dag_hash()
|
||||
assert a1.process_hash() != a2.process_hash()
|
||||
|
||||
|
||||
def test_intersects_and_satisfies_on_concretized_spec(default_mock_concretization):
|
||||
|
||||
@@ -878,9 +878,7 @@ def test_ambiguous_hash(mutable_database):
|
||||
x1 = spack.concretize.concretize_one("pkg-a")
|
||||
x2 = x1.copy()
|
||||
x1._hash = "xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
|
||||
x1._process_hash = "xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
|
||||
x2._hash = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
x2._process_hash = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
|
||||
assert x1 != x2 # doesn't hold when only the dag hash is modified.
|
||||
|
||||
|
||||
@@ -203,13 +203,6 @@ def test_ordered_read_not_required_for_consistent_dag_hash(
|
||||
spec = spec.copy(deps=ht.dag_hash.depflag)
|
||||
|
||||
# specs and their hashes are equal to the original
|
||||
assert (
|
||||
spec.process_hash()
|
||||
== from_yaml.process_hash()
|
||||
== from_json.process_hash()
|
||||
== from_yaml_rev.process_hash()
|
||||
== from_json_rev.process_hash()
|
||||
)
|
||||
assert (
|
||||
spec.dag_hash()
|
||||
== from_yaml.dag_hash()
|
||||
|
||||
@@ -36,7 +36,8 @@ spack:
|
||||
- paraview_specs:
|
||||
- matrix:
|
||||
- - paraview +raytracing +adios2 +fides
|
||||
- - +qt ^[virtuals=gl] glx # GUI Support w/ GLX Rendering
|
||||
- - +qt ^[virtuals=gl] glx ^[virtuals=qmake] qt-base # Qt6 GUI Support w/ GLX Rendering
|
||||
- +qt ^[virtuals=gl] glx ^[virtuals=qmake] qt # Qt5 GUI Support w/ GLX Rendering
|
||||
- ~qt ^[virtuals=gl] glx # GLX Rendering
|
||||
- ^[virtuals=gl] osmesa # OSMesa Rendering
|
||||
- visit_specs:
|
||||
|
||||
@@ -106,7 +106,7 @@ spack:
|
||||
- vecgeom ~cuda
|
||||
- whizard +fastjet +gosam hepmc=3 +lcio +lhapdf +openloops +openmp +pythia8
|
||||
- xrootd +davix +http +krb5 +python +readline +scitokens-cpp
|
||||
- yoda +root
|
||||
- yoda +hdf5 +highfive
|
||||
|
||||
# CUDA
|
||||
#- acts +cuda +traccc cuda_arch=80
|
||||
|
||||
@@ -56,13 +56,11 @@ def url_for_version(self, version):
|
||||
|
||||
# To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH
|
||||
def setup_run_environment(self, env):
|
||||
aws_ofi_nccl_home = self.spec.prefix
|
||||
env.append_path("LD_LIBRARY_PATH", aws_ofi_nccl_home.lib)
|
||||
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):
|
||||
aws_ofi_nccl_home = self.spec["aws-ofi-nccl"].prefix
|
||||
env.append_path("LD_LIBRARY_PATH", aws_ofi_nccl_home.lib)
|
||||
env.append_path("LD_LIBRARY_PATH", self.prefix.lib)
|
||||
|
||||
def configure_args(self):
|
||||
spec = self.spec
|
||||
|
||||
@@ -37,13 +37,11 @@ class AwsOfiRccl(AutotoolsPackage):
|
||||
|
||||
# To enable this plug-in to work with RCCL add it to the LD_LIBRARY_PATH
|
||||
def setup_run_environment(self, env):
|
||||
aws_ofi_rccl_home = self.spec["aws-ofi-rccl"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", aws_ofi_rccl_home.lib)
|
||||
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):
|
||||
aws_ofi_rccl_home = self.spec["aws-ofi-rccl"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", aws_ofi_rccl_home.lib)
|
||||
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
|
||||
|
||||
def configure_args(self):
|
||||
spec = self.spec
|
||||
|
||||
@@ -14,6 +14,7 @@ class AwscliV2(PythonPackage):
|
||||
|
||||
maintainers("climbfuji", "teaguesterling")
|
||||
|
||||
version("2.24.24", sha256="d7b135ef02c96d50d81c0b5eb2723cf474cfda8e1758cccabbcaa6c14f281419")
|
||||
version("2.22.4", sha256="56c6170f3be830afef2dea60fc3fd7ed14cf2ca2efba055c085fe6a7c4de358e")
|
||||
version("2.15.53", sha256="a4f5fd4e09b8f2fb3d2049d0610c7b0993f9aafaf427f299439f05643b25eb4b")
|
||||
version("2.13.22", sha256="dd731a2ba5973f3219f24c8b332a223a29d959493c8a8e93746d65877d02afc1")
|
||||
|
||||
@@ -319,7 +319,7 @@ def install_test(self):
|
||||
)
|
||||
|
||||
# Spack's logs don't handle colored output well
|
||||
bazel = Executable(self.spec["bazel"].command.path)
|
||||
bazel = Executable(self.command.path)
|
||||
bazel(
|
||||
"--output_user_root=/tmp/spack/bazel/spack-test",
|
||||
"build",
|
||||
@@ -332,7 +332,7 @@ def install_test(self):
|
||||
assert exe(output=str) == "Hi!\n"
|
||||
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
module.bazel = Executable(self.spec["bazel"].command.path)
|
||||
module.bazel = Executable(self.command.path)
|
||||
|
||||
@property
|
||||
def parallel(self):
|
||||
|
||||
@@ -72,6 +72,7 @@ class Blt(Package):
|
||||
# if you export targets this could cause problems in downstream
|
||||
# projects if not handled properly. More info here:
|
||||
# https://llnl-blt.readthedocs.io/en/develop/tutorial/exporting_targets.html
|
||||
version("0.7.0", sha256="df8720a9cba1199d21f1d32649cebb9dddf95aa61bc3ac23f6c8a3c6b6083528")
|
||||
version("0.6.2", sha256="84b663162957c1fe0e896ac8e94cbf2b6def4a152ccfa12a293db14fb25191c8")
|
||||
version("0.6.1", sha256="205540b704b8da5a967475be9e8f2d1a5e77009b950e7fbf01c0edabc4315906")
|
||||
version("0.6.0", sha256="ede355e85f7b11d7c8442b51e4f7871c152093818606e00b1e1cf30f67ebdb23")
|
||||
|
||||
@@ -16,6 +16,10 @@ class Brahma(CMakePackage):
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("master", branch="master")
|
||||
version("0.0.9", tag="v0.0.9", commit="4af20bbe241c983585e52c04e38868e8b56a9c21")
|
||||
version("0.0.8", tag="v0.0.8", commit="a99b0f3a688d144b928e41c38977a2aecdaadb41")
|
||||
version("0.0.7", tag="v0.0.7", commit="010662d1354080244b3b7b32e3e36aa9cfbbf3a1")
|
||||
version("0.0.6", tag="v0.0.6", commit="e8ac7627d6e607310229b4dfe700715bdc92084e")
|
||||
version("0.0.5", tag="v0.0.5", commit="219198c653cc4add845a644872e7b963a8de0fe2")
|
||||
version("0.0.4", tag="v0.0.4", commit="8f41cc885dd8e31a1f134cbbcbaaab7e5d84331e")
|
||||
version("0.0.3", tag="v0.0.3", commit="fd201c653e8fa00d4ba6197a56a513f740e3014e")
|
||||
|
||||
@@ -17,6 +17,7 @@ class Btop(MakefilePackage, CMakePackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("1.4.0", sha256="ac0d2371bf69d5136de7e9470c6fb286cbee2e16b4c7a6d2cd48a14796e86650")
|
||||
version("1.3.2", sha256="331d18488b1dc7f06cfa12cff909230816a24c57790ba3e8224b117e3f0ae03e")
|
||||
version("1.3.0", sha256="375e078ce2091969f0cd14030620bd1a94987451cf7a73859127a786006a32cf")
|
||||
version("1.2.13", sha256="668dc4782432564c35ad0d32748f972248cc5c5448c9009faeb3445282920e02")
|
||||
|
||||
@@ -170,7 +170,7 @@ def install(self, spec, prefix):
|
||||
@run_after("install")
|
||||
def install_pkgconfig(self):
|
||||
# Add pkgconfig file after installation
|
||||
libdir = self.spec["bzip2"].libs.directories[0]
|
||||
libdir = self.libs.directories[0]
|
||||
pkg_path = join_path(self.prefix.lib, "pkgconfig")
|
||||
mkdirp(pkg_path)
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ def edit(self, spec, prefix):
|
||||
makefile.filter("-mcmodel=medium", "-mcmodel=large")
|
||||
|
||||
# Support Intel MPI.
|
||||
if spec["mpi"].name == "intel-mpi":
|
||||
if spec["mpi"].name == "intel-oneapi-mpi":
|
||||
makefile.filter(
|
||||
"else ifneq (, $(findstring $(MPI),openmpi openMPI OPENMPI))",
|
||||
"""else ifneq (, $(findstring $(MPI),intel-mpi intel impi))
|
||||
|
||||
@@ -186,7 +186,7 @@ def initconfig_compiler_entries(self):
|
||||
compiler = self.compiler
|
||||
entries = super().initconfig_compiler_entries()
|
||||
|
||||
if spec.satisfies("+rocm"):
|
||||
if spec.satisfies("+rocm ^blt@:0.6"):
|
||||
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
|
||||
|
||||
llnl_link_helpers(entries, spec, compiler)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/src/cgnstools/tkogl/tkogl.c b/src/cgnstools/tkogl/tkogl.c
|
||||
index 506599d..71b4fb8 100644
|
||||
--- a/src/cgnstools/tkogl/tkogl.c
|
||||
+++ b/src/cgnstools/tkogl/tkogl.c
|
||||
@@ -25,7 +25,7 @@
|
||||
#if ! defined(__WIN32__) && ! defined(_WIN32)
|
||||
/* For TkWmAddToColormapWindows. */
|
||||
#define _TKPORT /* Typical installations cannot find tkPort.h. */
|
||||
-#include <tk-private/generic/tkInt.h>
|
||||
+#include <tkInt.h>
|
||||
#endif
|
||||
|
||||
#ifndef CONST
|
||||
@@ -81,6 +81,8 @@ class Cgns(CMakePackage):
|
||||
# copied from https://github.com/CGNS/CGNS/pull/757
|
||||
# (adjusted an include from tk-private/generic/tkInt.h to tkInt.h)
|
||||
patch("gcc14.patch", when="@:4.4.0 %gcc@14:")
|
||||
# "wrong" include for spack (tk-private) from the patch above made it into the official version
|
||||
patch("cgns-4.5-tk-private.patch", when="@4.5.0")
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
||||
@@ -221,7 +221,7 @@ def initconfig_compiler_entries(self):
|
||||
# Default entries are already defined in CachedCMakePackage, inherit them:
|
||||
entries = super().initconfig_compiler_entries()
|
||||
|
||||
if spec.satisfies("+rocm"):
|
||||
if spec.satisfies("+rocm ^blt@:0.6"):
|
||||
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
|
||||
|
||||
llnl_link_helpers(entries, spec, compiler)
|
||||
|
||||
@@ -113,15 +113,13 @@ def cmake_args(self):
|
||||
]
|
||||
)
|
||||
|
||||
if spec.satisfies("~simgrid"):
|
||||
if spec.satisfies("^intel-mkl") or spec.satisfies("^intel-parallel-studio+mkl"):
|
||||
if spec.satisfies("threads=none"):
|
||||
args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
|
||||
else:
|
||||
args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
|
||||
elif spec.satisfies("^netlib-lapack"):
|
||||
args.extend([self.define("BLA_VENDOR", "Generic")])
|
||||
elif spec.satisfies("^openblas"):
|
||||
args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
|
||||
if spec.satisfies("^[virtuals=blas,lapack] intel-oneapi-mkl threads=none"):
|
||||
args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
|
||||
elif spec.satisfies("^[virtuals=blas,lapack] intel-oneapi-mkl"):
|
||||
args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
|
||||
elif spec.satisfies("^[virtuals=blas,lapack] netlib-lapack"):
|
||||
args.extend([self.define("BLA_VENDOR", "Generic")])
|
||||
elif spec.satisfies("^[virtuals=blas,lapack] openblas"):
|
||||
args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
|
||||
|
||||
return args
|
||||
|
||||
@@ -15,10 +15,12 @@ class Cli11(CMakePackage):
|
||||
|
||||
license("BSD-3-Clause")
|
||||
|
||||
version("2.5.0", sha256="17e02b4cddc2fa348e5dbdbb582c59a3486fa2b2433e70a0c3bacb871334fd55")
|
||||
version("2.4.2", sha256="f2d893a65c3b1324c50d4e682c0cdc021dd0477ae2c048544f39eed6654b699a")
|
||||
version("2.4.1", sha256="73b7ec52261ce8fe980a29df6b4ceb66243bb0b779451dbd3d014cfec9fdbb58")
|
||||
version("2.3.2", sha256="aac0ab42108131ac5d3344a9db0fdf25c4db652296641955720a4fbe52334e22")
|
||||
version("2.3.1", sha256="378da73d2d1d9a7b82ad6ed2b5bda3e7bc7093c4034a1d680a2e009eb067e7b2")
|
||||
version("2.1.2", sha256="26291377e892ba0e5b4972cdfd4a2ab3bf53af8dac1f4ea8fe0d1376b625c8cb")
|
||||
version("2.1.1", sha256="d69023d1d0ab6a22be86b4f59d449422bc5efd9121868f4e284d6042e52f682e")
|
||||
version("2.1.0", sha256="2661b0112b02478bad3dc7f1749c4825bfc7e37b440cbb4c8c0e2ffaa3999112")
|
||||
version("2.0.0", sha256="2c672f17bf56e8e6223a3bfb74055a946fa7b1ff376510371902adb9cb0ab6a3")
|
||||
@@ -26,8 +28,11 @@ class Cli11(CMakePackage):
|
||||
|
||||
depends_on("cxx", type="build") # generated
|
||||
|
||||
variant("pic", default=True, description="Produce position-independent code")
|
||||
|
||||
depends_on("cmake@3.4:", type="build")
|
||||
depends_on("cmake@3.5:", type="build", when="@2.4:")
|
||||
depends_on("cmake@3.10:", type="build", when="@2.5:")
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
@@ -35,5 +40,6 @@ def cmake_args(self):
|
||||
self.define("CLI11_BUILD_DOCS", False),
|
||||
self.define("CLI11_BUILD_TESTS", False),
|
||||
self.define("CLI11_PRECOMPILED", True),
|
||||
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
|
||||
]
|
||||
return args
|
||||
|
||||
@@ -1,221 +0,0 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class Converge(Package):
|
||||
"""CONVERGE is a revolutionary computational fluid dynamics (CFD) program
|
||||
that eliminates the grid generation bottleneck from the simulation process.
|
||||
CONVERGE was developed by engine simulation experts and is straightforward
|
||||
to use for both engine and non-engine simulations. Unlike many CFD
|
||||
programs, CONVERGE automatically generates a perfectly orthogonal,
|
||||
structured grid at runtime based on simple, user-defined grid control
|
||||
parameters. This grid generation method completely eliminates the need to
|
||||
manually generate a grid. In addition, CONVERGE offers many other features
|
||||
to expedite the setup process and to ensure that your simulations are as
|
||||
computationally efficient as possible."""
|
||||
|
||||
homepage = "https://www.convergecfd.com/"
|
||||
url = "https://download.convergecfd.com/download/CONVERGE_2.4/Full_Solver_Packages/converge_install_2.4.10.tar.gz"
|
||||
|
||||
# In order to view available versions, you need to register for an account:
|
||||
# https://download.convergecfd.com/wp-login.php?action=register
|
||||
|
||||
version("2.4.10", sha256="5d3c39894598d2395149cfcc653af13b8b1091177290edd62fcf22c7e830d410")
|
||||
version("2.3.23", sha256="1217d16eaf9d263f917ee468778508bad9dacb7e4397a293cfa6467f39fb4c52")
|
||||
version(
|
||||
"2.2.0",
|
||||
sha256="3885acbaf352c718ea69f0206c858a01be02f0928ffee738e4aceb1dd939a77a",
|
||||
url="https://download.convergecfd.com/download/CONVERGE_2.2/Full_Solver_Packages/converge_install_2.2.0_042916.tar.gz",
|
||||
)
|
||||
version(
|
||||
"2.1.0",
|
||||
sha256="6b8896d42cf7b9013cae5456f4dc118306a5bd271d4a15945ceb7dae913e825a",
|
||||
url="https://download.convergecfd.com/download/CONVERGE_2.1/Full_Solver_Packages/converge_install_2.1.0_111615.tar.gz",
|
||||
)
|
||||
version(
|
||||
"2.0.0",
|
||||
sha256="f32c4824eb33724d85e283481d67ebd0630b1406011c528d775028bb2546f34e",
|
||||
url="https://download.convergecfd.com/download/CONVERGE_2.0/Full_Solver_Packages/converge_install_2.0.0_090214.tar.gz",
|
||||
)
|
||||
|
||||
variant("mpi", default=True, description="Build with MPI support")
|
||||
|
||||
# The following MPI libraries are compatible with CONVERGE:
|
||||
#
|
||||
# +--------------+---------+---------+---------+---------+---------+
|
||||
# | MPI Packages | v2.0 | v2.1 | v2.2 | v2.3 | v2.4 |
|
||||
# +--------------+---------+---------+---------+---------+---------+
|
||||
# | HP-MPI | 2.0.3+ | 2.0.3+ | 2.0.3+ | 2.0.3+ | |
|
||||
# | Intel MPI | | | | | 17.0.98 |
|
||||
# | MPICH | ?.?.? | ?.?.? | 1.2.1 | 3.1.4 | ?.?.? |
|
||||
# | MVAPICH2 | ?.?.? | | | | |
|
||||
# | Open MPI | 1.0-1.4 | 1.0-1.4 | 1.5-1.8 | 1.5-1.8 | 1.10 |
|
||||
# | Platform MPI | | | 9.1.2 | 9.1.2 | 9.1.2 |
|
||||
# +--------------+---------+---------+---------+---------+---------+
|
||||
#
|
||||
# NOTE: HP-MPI was bought out by Platform MPI
|
||||
#
|
||||
# These version requirements are more strict than for most packages.
|
||||
# Since the tarball comes with pre-compiled executables,
|
||||
# the version of libmpi.so must match exactly, or else
|
||||
# you will end up with missing libraries and symbols.
|
||||
|
||||
depends_on("mpi", when="+mpi")
|
||||
|
||||
# TODO: Add version ranges for other MPI libraries
|
||||
depends_on("openmpi@1.10.0:1.10", when="@2.4.0:2.4+mpi^[virtuals=mpi] openmpi")
|
||||
depends_on("openmpi@1.5:1.8", when="@2.2:2.3+mpi^[virtuals=mpi] openmpi")
|
||||
depends_on("openmpi@:1.4", when="@:2.1+mpi^[virtuals=mpi] openmpi")
|
||||
|
||||
conflicts("^intel-mpi", when="@:2.3")
|
||||
conflicts("^intel-parallel-studio+mpi", when="@:2.3")
|
||||
conflicts("^spectrum-mpi")
|
||||
|
||||
# Licensing
|
||||
license_required = True
|
||||
license_comment = "#"
|
||||
license_files = ["license/license.lic"]
|
||||
license_vars = ["RLM_LICENSE"]
|
||||
license_url = "https://www.reprisesoftware.com/RLM_License_Administration.pdf"
|
||||
|
||||
def url_for_version(self, version):
|
||||
url = "https://download.convergecfd.com/download/CONVERGE_{0}/Full_Solver_Packages/converge_install_{1}.tar.gz"
|
||||
return url.format(version.up_to(2), version)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# 2.0.0
|
||||
# converge -> converge-2.0.0-hpmpi-090214
|
||||
# converge-2.0.0-hpmpi-090214 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.0.0-mpich2-090214 -> libmpich.so.1.2
|
||||
# converge-2.0.0-mvapich-090214 -> libibumad.so.1
|
||||
# converge-2.0.0-openmpi-090214 -> libmpi.so.0
|
||||
# converge-2.0.0-serial-090214
|
||||
# make_surface
|
||||
# post_convert
|
||||
|
||||
# 2.1.0
|
||||
# converge -> converge-2.1.0-hpmpi-111615
|
||||
# converge-2.1.0-hpmpi-111615 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.1.0-mpich2-111615 -> libmpich.so.1.2
|
||||
# converge-2.1.0-openmpi-111615 -> libmpi.so.0
|
||||
# converge-2.1.0-serial-111615
|
||||
# make_surface
|
||||
# post_convert
|
||||
|
||||
# 2.2.0
|
||||
# converge -> converge-2.2.0-hpmpi-042916
|
||||
# converge-2.2.0-hpmpi-042916 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.2.0-mpich2-042916
|
||||
# converge-2.2.0-openmpi-042916 -> libmpi.so.1
|
||||
# converge-2.2.0-pmpi-042916 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.2.0-serial-042916
|
||||
# make_surface
|
||||
# post_convert
|
||||
|
||||
# 2.3.23
|
||||
# converge-2.3.23-hpmpi-linux-64 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.3.23-mpich2-linux-64 -> libmpi.so.12
|
||||
# converge-2.3.23-openmpi-linux-64 -> libmpi.so.1
|
||||
# converge-2.3.23-pmpi-linux-64 -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.3.23-serial-linux-64
|
||||
# make_surface_64
|
||||
# post_convert_mpich_64 -> libmpi.so.12
|
||||
# post_convert_ompi_64 -> libmpi.so.1
|
||||
# post_convert_pmpi_64 -> libmpi.so.1, libmpio.so.1
|
||||
# post_convert_serial_64
|
||||
|
||||
# 2.4.10
|
||||
# converge-2.4.10-intel -> libmpi.so.12, libmpifort.so.12
|
||||
# converge-2.4.10-mpich -> libmpi.so.12
|
||||
# converge-2.4.10-ompi -> libmpi.so.12
|
||||
# converge-2.4.10-pmpi -> libmpi.so.1, libmpio.so.1
|
||||
# converge-2.4.10-serial
|
||||
# make_surface_64
|
||||
# post_convert_mpich_64 -> libmpi.so.12
|
||||
# post_convert_ompi_64 -> libmpi.so.1
|
||||
# post_convert_pmpi_64 -> libmpi.so.1
|
||||
# post_convert_serial_64
|
||||
|
||||
# The CONVERGE tarball comes with binaries for several MPI libraries.
|
||||
# Only install the binary that matches the MPI we are building with.
|
||||
with working_dir("l_x86_64/bin"):
|
||||
if spec.satisfies("~mpi"):
|
||||
converge = glob.glob("converge-*-serial*")
|
||||
post_convert = glob.glob("post_convert_serial*")
|
||||
elif spec.satisfies("^hp-mpi"):
|
||||
converge = glob.glob("converge-*-hpmpi*")
|
||||
# No HP-MPI version of post_convert
|
||||
post_convert = glob.glob("post_convert_serial*")
|
||||
elif spec.satisfies("intel-mpi") or spec.satisfies("intel-parallel-studio+mpi"):
|
||||
converge = glob.glob("converge-*-intel*")
|
||||
# No Intel MPI version of post_convert
|
||||
post_convert = glob.glob("post_convert_serial*")
|
||||
elif spec.satisfies("^mpich"):
|
||||
converge = glob.glob("converge-*-mpich*")
|
||||
post_convert = glob.glob("post_convert_mpich*")
|
||||
elif spec.satisfies("^mvapich2"):
|
||||
converge = glob.glob("converge-*-mvapich*")
|
||||
# MVAPICH2 hasn't been supported since CONVERGE
|
||||
# came with a single serial post_convert
|
||||
post_convert = glob.glob("post_convert")
|
||||
elif spec.satisfies("^openmpi"):
|
||||
converge = glob.glob("converge-*-o*mpi*")
|
||||
post_convert = glob.glob("post_convert_o*mpi*")
|
||||
elif spec.satisfies("^platform-mpi"):
|
||||
converge = glob.glob("converge-*-pmpi*")
|
||||
post_convert = glob.glob("post_convert_pmpi*")
|
||||
else:
|
||||
raise InstallError("Unsupported MPI provider")
|
||||
|
||||
make_surface = glob.glob("make_surface*")
|
||||
|
||||
# Old versions of CONVERGE come with a single serial post_convert
|
||||
if not post_convert:
|
||||
post_convert = glob.glob("post_convert")
|
||||
|
||||
# Make sure glob actually found something
|
||||
if not converge:
|
||||
raise InstallError("converge executable not found")
|
||||
if not post_convert:
|
||||
raise InstallError("post_convert executable not found")
|
||||
if not make_surface:
|
||||
raise InstallError("make_surface executable not found")
|
||||
|
||||
# Make sure glob didn't find multiple matches
|
||||
if len(converge) > 1:
|
||||
raise InstallError("multiple converge executables found")
|
||||
if len(post_convert) > 1:
|
||||
raise InstallError("multiple post_convert executables found")
|
||||
if len(make_surface) > 1:
|
||||
raise InstallError("multiple make_surface executables found")
|
||||
|
||||
converge = converge[0]
|
||||
post_convert = post_convert[0]
|
||||
make_surface = make_surface[0]
|
||||
|
||||
mkdir(prefix.bin)
|
||||
|
||||
# Install the executables
|
||||
install(converge, join_path(prefix.bin, converge))
|
||||
install(post_convert, join_path(prefix.bin, post_convert))
|
||||
install(make_surface, join_path(prefix.bin, make_surface))
|
||||
|
||||
with working_dir(prefix.bin):
|
||||
# Create generic symlinks to all executables
|
||||
if not os.path.exists("converge"):
|
||||
os.symlink(converge, "converge")
|
||||
if not os.path.exists("post_convert"):
|
||||
os.symlink(post_convert, "post_convert")
|
||||
if not os.path.exists("make_surface"):
|
||||
os.symlink(make_surface, "make_surface")
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
# CONVERGE searches for a valid license file in:
|
||||
# $CONVERGE_ROOT/license/license.lic
|
||||
env.set("CONVERGE_ROOT", self.prefix)
|
||||
@@ -169,7 +169,7 @@ def check_install(self):
|
||||
os.environ.pop("CLIKPATH", "")
|
||||
os.environ.pop("PLANCKLIKE", "")
|
||||
|
||||
exe = spec["cosmomc"].command.path
|
||||
exe = self.command.path
|
||||
args = []
|
||||
if spec.satisfies("+mpi"):
|
||||
# Add mpirun prefix
|
||||
|
||||
@@ -28,6 +28,8 @@ class Dcap(AutotoolsPackage):
|
||||
depends_on("libxcrypt")
|
||||
depends_on("zlib-api")
|
||||
|
||||
depends_on("cunit", type="test")
|
||||
|
||||
variant("plugins", default=True, description="Build plugins")
|
||||
|
||||
def patch(self):
|
||||
|
||||
@@ -54,7 +54,7 @@ def cmake_args(self):
|
||||
"-DSPGLIB_DIR={0}".format(spec["spglib"].prefix),
|
||||
]
|
||||
|
||||
if spec.satisfies("^intel-mkl"):
|
||||
if spec.satisfies("^[virtuals=scalapack] intel-oneapi-mkl"):
|
||||
args.append("-DWITH_INTEL_MKL=ON")
|
||||
else:
|
||||
args.append("-DWITH_INTEL_MKL=OFF")
|
||||
|
||||
@@ -52,9 +52,9 @@ def test_smoke_test(self):
|
||||
ctest = Executable(spec["cmake"].prefix.bin.ctest)
|
||||
|
||||
cmake(
|
||||
spec["diy"].prefix.share.DIY.examples.smoke_test,
|
||||
self.prefix.share.DIY.examples.smoke_test,
|
||||
f"-DMPI_HOME={spec['mpi'].prefix}",
|
||||
f"-DCMAKE_PREFIX_PATH={spec['diy'].prefix}",
|
||||
f"-DCMAKE_PREFIX_PATH={self.prefix}",
|
||||
)
|
||||
cmake("--build", ".")
|
||||
ctest("--verbose")
|
||||
|
||||
@@ -28,10 +28,8 @@ def install(self, spec, prefix):
|
||||
|
||||
@run_after("install")
|
||||
def check_install(self):
|
||||
print("Attempt to call 'dust' with '--version'")
|
||||
dust = Executable(join_path(self.spec["dust"].prefix.bin, "dust"))
|
||||
dust = Executable(join_path(self.prefix.bin, "dust"))
|
||||
output = dust("--version", output=str.split)
|
||||
print("stdout received fromm dust is '{}".format(output))
|
||||
assert "Dust " in output
|
||||
|
||||
def test_run(self):
|
||||
|
||||
@@ -81,7 +81,7 @@ class Dyninst(CMakePackage):
|
||||
sha256="0064d8d51bd01bd0035e1ebc49276f627ce6366d4524c92cf47d3c09b0031f96",
|
||||
)
|
||||
|
||||
requires("%gcc", when="@:13.0.0", msg="dyninst builds only with GCC")
|
||||
requires("%gcc", when="@:12", msg="dyninst builds only with GCC")
|
||||
|
||||
# No Mac support (including apple-clang)
|
||||
conflicts("platform=darwin", msg="macOS is not supported")
|
||||
|
||||
@@ -23,6 +23,12 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage):
|
||||
|
||||
version("master", branch="master")
|
||||
|
||||
version(
|
||||
"2025.01.001", sha256="3ef0c6aed9a3e05db6efafe6e14d66eb88b2a1354d61e765b7cde0d3d5f3951e"
|
||||
)
|
||||
version(
|
||||
"2024.05.001", sha256="9caf41a3e600e2f6f4ce1931bd54185179dade9c171556d0c9b41bbc6940f2f6"
|
||||
)
|
||||
version(
|
||||
"2024.03.001", sha256="41c6cbf56d2dac26443faaba8a77307d261bf511682a64b96e24def77c813622"
|
||||
)
|
||||
|
||||
@@ -40,20 +40,17 @@ def flag_handler(self, name, flags):
|
||||
return flags, None, None
|
||||
|
||||
def install(self, spec, prefix):
|
||||
options = ["--prefix=%s" % prefix]
|
||||
oapp = options.append
|
||||
|
||||
# Specify installation directory for Fortran module files
|
||||
# Default is [INCLUDEDIR/FC_TYPE]
|
||||
oapp("--with-moduledir=%s" % prefix.include)
|
||||
options = [f"--prefix={prefix}", f"--with-moduledir={prefix.include}"]
|
||||
|
||||
# Netcdf4/HDF
|
||||
hdf_libs = "-L%s -lhdf5_hl -lhdf5" % spec["hdf5"].prefix.lib
|
||||
hdf_libs = f"-L{spec['hdf5'].prefix.lib} -lhdf5_hl -lhdf5"
|
||||
options.extend(
|
||||
[
|
||||
"--with-netcdf-incs=-I%s" % spec["netcdf-fortran"].prefix.include,
|
||||
"--with-netcdf-libs=-L%s -lnetcdff -lnetcdf %s"
|
||||
% (spec["netcdf-fortran"].prefix.lib, hdf_libs),
|
||||
f"--with-netcdf-incs=-I{spec['netcdf-fortran'].prefix.include}",
|
||||
f"--with-netcdf-libs=-L{spec['netcdf-fortran'].prefix.lib} "
|
||||
f"-lnetcdff -lnetcdf {hdf_libs}",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -66,7 +63,6 @@ def install(self, spec, prefix):
|
||||
def test_etsf_io_help(self):
|
||||
"""check etsf_io can execute (--help)"""
|
||||
|
||||
path = self.spec["etsf-io"].prefix.bin.etsf_io
|
||||
etsfio = which(path)
|
||||
etsfio = which(self.prefix.bin.etsf_io)
|
||||
out = etsfio("--help", output=str.split, error=str.split)
|
||||
assert "Usage: etsf_io" in out
|
||||
|
||||
@@ -15,8 +15,14 @@ class Expat(AutotoolsPackage, CMakePackage):
|
||||
url = "https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2"
|
||||
|
||||
license("MIT")
|
||||
version("2.6.4", sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada")
|
||||
# deprecate all releases before 2.6.4 because of security issues
|
||||
version("2.7.0", sha256="10f3e94896cd7f44de566cafa2e0e1f35e8df06d119b38d117c0e72d74a4b4b7")
|
||||
# deprecate all releases before 2.7.0 because of security issues
|
||||
# CVE-2024-8176 (fixed in 2.7.0)
|
||||
version(
|
||||
"2.6.4",
|
||||
sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada",
|
||||
deprecated=True,
|
||||
)
|
||||
# CVE-2024-50602 (fixed in 2.6.4)
|
||||
version(
|
||||
"2.6.3",
|
||||
|
||||
@@ -24,6 +24,7 @@ class Fastjet(AutotoolsPackage):
|
||||
|
||||
license("GPL-2.0-only")
|
||||
|
||||
version("3.4.3", sha256="cc175471bfab8656b8c6183a8e5e9ad05d5f7506e46f3212a9a8230905b8f6a3")
|
||||
version("3.4.2", sha256="b3d33155b55ce43f420cd6d99b525acf7bdc2593a7bb7ea898a9ddb3d8ca38e3")
|
||||
version("3.4.1", sha256="05608c6ff213f06dd9de723813d6b4dccd51e661ac13098f74bfc9eeaf1cb5aa")
|
||||
version("3.4.0", sha256="ee07c8747c8ead86d88de4a9e4e8d1e9e7d7614973f5631ba8297f7a02478b91")
|
||||
|
||||
@@ -55,8 +55,8 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
|
||||
description="Set Caliper Profiling Detail",
|
||||
multi=False,
|
||||
)
|
||||
variant("kokkos", default=False, description="Enable Kokkos Support", when="@:2.3.1")
|
||||
variant("openmp", default=False, description="Enable OpenMP Support", when="@:2.3.1")
|
||||
variant("kokkos", default=False, description="Enable Kokkos Support", when="@:2.3")
|
||||
variant("openmp", default=False, description="Enable OpenMP Support", when="@:2.3")
|
||||
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
@@ -67,8 +67,8 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
depends_on("graphviz", when="+graphviz")
|
||||
depends_on("hdf5+hl+mpi", when="+hdf5")
|
||||
depends_on("metis@5.1.0:")
|
||||
depends_on("parmetis@4.0.3:")
|
||||
depends_on("metis@5.1.0:", when="@:2.3.1")
|
||||
depends_on("parmetis@4.0.3:", when="@:2.3.1")
|
||||
depends_on("boost@1.70.0: cxxstd=17 +program_options +stacktrace")
|
||||
|
||||
depends_on("cmake@3.15:")
|
||||
@@ -83,7 +83,7 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
|
||||
requires("^kokkos +cuda_constexpr +cuda_lambda", when="^kokkos +cuda")
|
||||
depends_on("kokkos +rocm", when="+kokkos +rocm")
|
||||
depends_on("kokkos +openmp", when="+kokkos +openmp")
|
||||
requires("+openmp", when="@:2.3.1 ^kokkos +openmp")
|
||||
requires("+openmp", when="@:2.3 ^kokkos +openmp")
|
||||
depends_on("legion@cr-20210122", when="backend=legion @2.0:2.1.0")
|
||||
depends_on("legion@cr-20230307", when="backend=legion @2.2.0:2.2.1")
|
||||
depends_on("legion@24.03.0:", when="backend=legion @2.2.2:")
|
||||
|
||||
@@ -16,6 +16,7 @@ class Fleur(Package):
|
||||
license("MIT")
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("7.2", tag="MaX-R7.2", commit="447eed3b7ec3de5fcdfbd232cd1eda4caefb51d3")
|
||||
version("5.1", tag="MaX-R5.1", commit="a482abd9511b16412c2222e2ac1b1a303acd454b")
|
||||
version("5.0", tag="MaX-R5", commit="f2df362c3dad6ef39938807ea14e4ec4cb677723")
|
||||
version("4.0", tag="MaX-R4", commit="ea0db7877451e6240124e960c5546318c9ab3953")
|
||||
@@ -53,7 +54,7 @@ class Fleur(Package):
|
||||
depends_on("lapack")
|
||||
depends_on("libxml2")
|
||||
depends_on("mpi", when="+mpi")
|
||||
depends_on("intel-mkl", when="fft=mkl")
|
||||
depends_on("intel-oneapi-mkl", when="fft=mkl")
|
||||
depends_on("fftw-api", when="fft=fftw")
|
||||
depends_on("scalapack", when="+scalapack")
|
||||
depends_on("libxc", when="+external_libxc")
|
||||
@@ -108,9 +109,9 @@ def configure(self):
|
||||
options["-includedir"].append(join_path(spec["libxml2"].prefix.include, "libxml2"))
|
||||
|
||||
if spec.satisfies("fft=mkl"):
|
||||
options["-link"].append(spec["intel-mkl"].libs.link_flags)
|
||||
options["-libdir"].append(spec["intel-mkl"].prefix.lib)
|
||||
options["-includedir"].append(spec["intel-mkl"].prefix.include)
|
||||
options["-link"].append(spec["intel-oneapi-mkl"].libs.link_flags)
|
||||
options["-libdir"].append(spec["intel-oneapi-mkl"].prefix.lib)
|
||||
options["-includedir"].append(spec["intel-oneapi-mkl"].prefix.include)
|
||||
if spec.satisfies("fft=fftw"):
|
||||
options["-link"].append(spec["fftw-api"].libs.link_flags)
|
||||
options["-libdir"].append(spec["fftw-api"].prefix.lib)
|
||||
|
||||
@@ -35,13 +35,8 @@ class Freeipmi(AutotoolsPackage):
|
||||
def configure_args(self):
|
||||
# FIXME: If root checking of root installation is added fix this:
|
||||
# Discussed in issue #4432
|
||||
tty.warn(
|
||||
"Requires 'root' for bmc-watchdog.service installation to" " /lib/systemd/system/ !"
|
||||
)
|
||||
|
||||
args = [
|
||||
"--prefix={0}".format(prefix),
|
||||
"--with-systemdsystemunitdir=" + self.spec["freeipmi"].prefix.lib.systemd.system,
|
||||
tty.warn("Requires 'root' for bmc-watchdog.service installation to /lib/systemd/system/")
|
||||
return [
|
||||
f"--prefix={self.prefix}",
|
||||
f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}",
|
||||
]
|
||||
|
||||
return args
|
||||
|
||||
@@ -826,18 +826,6 @@ def configure_args(self):
|
||||
if spec.satisfies("languages=jit"):
|
||||
options.append("--enable-host-shared")
|
||||
|
||||
# Binutils
|
||||
if spec.satisfies("+binutils"):
|
||||
binutils = spec["binutils"].prefix.bin
|
||||
options.extend(
|
||||
[
|
||||
"--with-gnu-ld",
|
||||
"--with-ld=" + binutils.ld,
|
||||
"--with-gnu-as",
|
||||
"--with-as=" + binutils.join("as"),
|
||||
]
|
||||
)
|
||||
|
||||
# enable_bootstrap
|
||||
if spec.satisfies("+bootstrap"):
|
||||
options.extend(["--enable-bootstrap"])
|
||||
@@ -1017,7 +1005,7 @@ def write_specs_file(self):
|
||||
specs_file = join_path(self.spec_dir, "specs")
|
||||
with open(specs_file, "w") as f:
|
||||
# can't extend the builtins without dumping them first
|
||||
f.write(self.spec["gcc"].command("-dumpspecs", output=str, error=os.devnull).strip())
|
||||
f.write(self.command("-dumpspecs", output=str, error=os.devnull).strip())
|
||||
|
||||
f.write("\n\n# Generated by Spack\n\n")
|
||||
|
||||
@@ -1191,7 +1179,7 @@ def _post_buildcache_install_hook(self):
|
||||
|
||||
# Setting up the runtime environment shouldn't be necessary here.
|
||||
relocation_args = []
|
||||
gcc = self.spec["gcc"].command
|
||||
gcc = self.command
|
||||
specs_file = os.path.join(self.spec_dir, "specs")
|
||||
dryrun = gcc("test.c", "-###", output=os.devnull, error=str).strip()
|
||||
if not dryrun:
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
class Ghost(CMakePackage, CudaPackage):
|
||||
"""GHOST: a General, Hybrid and Optimized Sparse Toolkit.
|
||||
|
||||
This library provides highly optimized building blocks for implementing
|
||||
sparse iterative eigenvalue and linear solvers multi- and manycore
|
||||
clusters and on heterogenous CPU/GPU machines. For an iterative solver
|
||||
@@ -31,8 +32,6 @@ class Ghost(CMakePackage, CudaPackage):
|
||||
variant("scotch", default=False, description="enable/disable matrix reordering with PT-SCOTCH")
|
||||
variant("zoltan", default=False, description="enable/disable matrix reordering with Zoltan")
|
||||
|
||||
# ###################### Dependencies ##########################
|
||||
|
||||
# Everything should be compiled position independent (-fpic)
|
||||
depends_on("cmake@3.5:", type="build")
|
||||
depends_on("hwloc")
|
||||
@@ -44,18 +43,14 @@ class Ghost(CMakePackage, CudaPackage):
|
||||
conflicts("^hwloc@2:")
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
# note: we require the cblas_include_dir property from the blas
|
||||
# provider, this is implemented at least for intel-mkl and
|
||||
# netlib-lapack
|
||||
args = [
|
||||
self.define_from_variant("GHOST_ENABLE_MPI", "mpi"),
|
||||
self.define_from_variant("GHOST_USE_CUDA", "cuda"),
|
||||
self.define_from_variant("GHOST_USE_SCOTCH", "scotch"),
|
||||
self.define_from_variant("GHOST_USE_ZOLTAN", "zoltan"),
|
||||
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||
"-DCBLAS_INCLUDE_DIR:STRING=%s" % format(spec["blas"].headers.directories[0]),
|
||||
"-DBLAS_LIBRARIES=%s" % spec["blas:c"].libs.joined(";"),
|
||||
self.define("CBLAS_INCLUDE_DIR", self.spec["blas"].headers.directories[0]),
|
||||
self.define("BLAS_LIBRARIES", self.spec["blas:c"].libs.joined(";")),
|
||||
]
|
||||
return args
|
||||
|
||||
|
||||
@@ -29,92 +29,111 @@ class Git(AutotoolsPackage):
|
||||
# Every new git release comes with a corresponding manpage resource:
|
||||
# https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.gz
|
||||
# https://mirrors.edge.kernel.org/pub/software/scm/git/sha256sums.asc
|
||||
version("2.47.0", sha256="a84a7917e0ab608312834413f01fc01edc7844f9f9002ba69f3b4f4bcb8d937a")
|
||||
version("2.46.2", sha256="65c5689fd44f1d09de7fd8c44de7fef074ddd69dda8b8503d44afb91495ecbce")
|
||||
version("2.45.2", sha256="98b26090ed667099a3691b93698d1e213e1ded73d36a2fde7e9125fce28ba234")
|
||||
version("2.44.2", sha256="f0655e81c5ecfeef7440aa4fcffa1c1a77eaccf764d6fe29579e9a06eac2cd04")
|
||||
version("2.43.5", sha256="324c3b85d668e6afe571b3502035848e4b349dead35188e2b8ab1b96c0cd45ff")
|
||||
version("2.42.3", sha256="f42a8e8f6c0add4516f9e4607554c8ad698161b7d721b82073fe315a59621961")
|
||||
version("2.41.2", sha256="481aa0a15aa37802880a6245b96c1570d7337c44700d5d888344cd6d43d85306")
|
||||
version("2.40.3", sha256="b3dc96b20edcdbe6bea7736ea55bb80babf683d126cc7f353ed4e3bc304cd7da")
|
||||
version("2.39.5", sha256="ca0ec03fb2696f552f37135a56a0242fa062bd350cb243dc4a15c86f1cafbc99")
|
||||
version("2.48.1", sha256="51b4d03b1e311ba673591210f94f24a4c5781453e1eb188822e3d9cdc04c2212")
|
||||
version("2.47.2", sha256="a5d26bf7b01b2f0571b5a99300c256e556bd89b2a03088accf7b81bfa4f8f2fd")
|
||||
version("2.46.3", sha256="f7ae38b1d2c4724cd9088575da470229b3360903a17b531f2e86967d856ed7ed")
|
||||
version("2.45.3", sha256="40a2c40323d5077eda1e0353806b102813a23a174d24ff4b5aa7b87ffd3fcb03")
|
||||
version("2.44.3", sha256="4237c37cdf7b3d38102117b22993b2f761a4c02758dfbe33f7b7423c0b096ca9")
|
||||
version("2.43.6", sha256="f11f89bb48ecb3e18a2ecfb2a2db5a96fd6115d7e617be04e40020a50b03a038")
|
||||
version("2.42.4", sha256="886898866d624fce14f470773bc19c671c1c858091afdf5815bf569ae14356b6")
|
||||
version("2.41.3", sha256="2bf6589869f59b9c06e7b71ff8da3d7bb67b75549ca42c6f0ec81ab5e4570aa8")
|
||||
version("2.40.4", sha256="796993ef502481acbeb7caa22ffbf5f22daf8b273ab6d8dafc0ed178337d2659")
|
||||
|
||||
# Deprecated versions (https://groups.google.com/g/git-packagers/c/zxdH4LPix3U)
|
||||
with default_args(deprecated=True):
|
||||
version(
|
||||
"2.47.0", sha256="a84a7917e0ab608312834413f01fc01edc7844f9f9002ba69f3b4f4bcb8d937a"
|
||||
)
|
||||
version(
|
||||
"2.46.2", sha256="65c5689fd44f1d09de7fd8c44de7fef074ddd69dda8b8503d44afb91495ecbce"
|
||||
)
|
||||
version(
|
||||
"2.45.2", sha256="98b26090ed667099a3691b93698d1e213e1ded73d36a2fde7e9125fce28ba234"
|
||||
)
|
||||
version(
|
||||
"2.44.2", sha256="f0655e81c5ecfeef7440aa4fcffa1c1a77eaccf764d6fe29579e9a06eac2cd04"
|
||||
)
|
||||
version(
|
||||
"2.43.5", sha256="324c3b85d668e6afe571b3502035848e4b349dead35188e2b8ab1b96c0cd45ff"
|
||||
)
|
||||
version(
|
||||
"2.42.3", sha256="f42a8e8f6c0add4516f9e4607554c8ad698161b7d721b82073fe315a59621961"
|
||||
)
|
||||
version(
|
||||
"2.41.2", sha256="481aa0a15aa37802880a6245b96c1570d7337c44700d5d888344cd6d43d85306"
|
||||
)
|
||||
version(
|
||||
"2.40.3", sha256="b3dc96b20edcdbe6bea7736ea55bb80babf683d126cc7f353ed4e3bc304cd7da"
|
||||
)
|
||||
version(
|
||||
"2.39.5", sha256="ca0ec03fb2696f552f37135a56a0242fa062bd350cb243dc4a15c86f1cafbc99"
|
||||
)
|
||||
|
||||
# Deprecated versions (https://groups.google.com/g/git-packagers/c/x6-nKLV20aE)
|
||||
version(
|
||||
"2.45.1",
|
||||
sha256="10acb581993061e616be9c5674469335922025a666318e0748cb8306079fef24",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.44.1",
|
||||
sha256="118214bb8d7ba971a62741416e757562b8f5451cefc087a407e91857897c92cc",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.43.4",
|
||||
sha256="bfd717dc31922f718232a25a929d199e26146df5e876fdf0ff90a7cc95fa06e2",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.42.2",
|
||||
sha256="3b24b712fa6e9a3da5b7d3e68b1854466905aadb93a43088a38816bcc3b9d043",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.41.1",
|
||||
sha256="06d2a681aa7f1bdb6e7f7101631407e7412faa534e1fa0eb6fdcb9975d867d31",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.40.2",
|
||||
sha256="1dcdfbb4eeb3ef2c2d9154f888d4a6f0cf19f19acad76f0d32e725e7bc147753",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.39.4",
|
||||
sha256="b895ed2b5d98fd3dcfde5807f16d5fb17c4f83044e7d08e597ae13de222f0d26",
|
||||
deprecated=True,
|
||||
)
|
||||
with default_args(deprecated=True):
|
||||
version(
|
||||
"2.45.1", sha256="10acb581993061e616be9c5674469335922025a666318e0748cb8306079fef24"
|
||||
)
|
||||
version(
|
||||
"2.44.1", sha256="118214bb8d7ba971a62741416e757562b8f5451cefc087a407e91857897c92cc"
|
||||
)
|
||||
version(
|
||||
"2.43.4", sha256="bfd717dc31922f718232a25a929d199e26146df5e876fdf0ff90a7cc95fa06e2"
|
||||
)
|
||||
version(
|
||||
"2.42.2", sha256="3b24b712fa6e9a3da5b7d3e68b1854466905aadb93a43088a38816bcc3b9d043"
|
||||
)
|
||||
version(
|
||||
"2.41.1", sha256="06d2a681aa7f1bdb6e7f7101631407e7412faa534e1fa0eb6fdcb9975d867d31"
|
||||
)
|
||||
version(
|
||||
"2.40.2", sha256="1dcdfbb4eeb3ef2c2d9154f888d4a6f0cf19f19acad76f0d32e725e7bc147753"
|
||||
)
|
||||
version(
|
||||
"2.39.4", sha256="b895ed2b5d98fd3dcfde5807f16d5fb17c4f83044e7d08e597ae13de222f0d26"
|
||||
)
|
||||
|
||||
# Deprecated versions (see https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/).
|
||||
version(
|
||||
"2.42.0",
|
||||
sha256="34aedd54210d7216a55d642bbb4cfb22695b7610719a106bf0ddef4c82a8beed",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.41.0",
|
||||
sha256="c4a6a3dd1827895a80cbd824e14d94811796ae54037549e0da93f7b84cb45b9f",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.40.1",
|
||||
sha256="55511f10f3b1cdf5db4e0e3dea61819dfb67661b0507a5a2b061c70e4f87e14c",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"2.39.3",
|
||||
sha256="2f9aa93c548941cc5aff641cedc24add15b912ad8c9b36ff5a41b1a9dcad783e",
|
||||
deprecated=True,
|
||||
)
|
||||
with default_args(deprecated=True):
|
||||
version(
|
||||
"2.42.0", sha256="34aedd54210d7216a55d642bbb4cfb22695b7610719a106bf0ddef4c82a8beed"
|
||||
)
|
||||
version(
|
||||
"2.41.0", sha256="c4a6a3dd1827895a80cbd824e14d94811796ae54037549e0da93f7b84cb45b9f"
|
||||
)
|
||||
version(
|
||||
"2.40.1", sha256="55511f10f3b1cdf5db4e0e3dea61819dfb67661b0507a5a2b061c70e4f87e14c"
|
||||
)
|
||||
version(
|
||||
"2.39.3", sha256="2f9aa93c548941cc5aff641cedc24add15b912ad8c9b36ff5a41b1a9dcad783e"
|
||||
)
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
|
||||
for _version, _sha256_manpage in {
|
||||
"2.48.1": "88742466926d3d682be5214470ae92b79a68796a9d171d393763a5767de5a581",
|
||||
"2.47.2": "8a36a81ee3a031acbfc831a0972d849aa8777926a6c49c76141b0e0e4744dcb3",
|
||||
"2.47.0": "1a6f1e775dfe324a9b521793cbd2b3bba546442cc2ac2106d4df33dea9005038",
|
||||
"2.46.3": "5744ca6fd3ef39d0390400a47f2d7208668433af3d599cfbec7bb1c7140efe79",
|
||||
"2.46.2": "4bc3774ee4597098977befa4ec30b0f2cbed3b59b756e7cbb59ce1738682d43a",
|
||||
"2.45.3": "eae81e0d8b00f19c47d7efecfa04642e06e777dd44e3e87ef2b192ba617cddaa",
|
||||
"2.45.2": "48c1e2e3ecbb2ce9faa020a19fcdbc6ce64ea25692111b5930686bc0bb4f0e7f",
|
||||
"2.45.1": "d9098fd93a3c0ef242814fc856a99886ce31dae2ba457afc416ba4e92af8f8f5",
|
||||
"2.44.3": "0f76464bbf8c0f5ccccfbacbd58d121376ff1e5147c4e0753b1ab1d578b9371e",
|
||||
"2.44.2": "ee6a7238d5ede18fe21c0cc2131c7fbff1f871c25e2848892ee864d40baf7218",
|
||||
"2.44.1": "8d80359e44cbcce256c1eb1389cb8e15ccfcd267fbb8df567d5ce19ce006eb42",
|
||||
"2.43.6": "ce364c74d475d321acc8b710558647ee8177876ee529456bd7f92cbb9f6961d8",
|
||||
"2.43.5": "df3c3d0f0834959aa33005e6f8134c1e56ab01f34d1497ceb34b2dd8ec7d4de4",
|
||||
"2.43.4": "99d3a0394a6093237123237fd6c0d3de1041d5ceaedc3bfc016807914275d3e2",
|
||||
"2.42.4": "6d207f38158d9f01c26feccb99af5a65ed3df20a18451649ce1ee718aabc331d",
|
||||
"2.42.3": "3c8c55dcbc3f59560c63e6ced400f7251e9a00d876d365cb4fe9be6b3c3e3713",
|
||||
"2.42.2": "2ddfa2187fdaf9ab2b27c0ab043e46793127c26c82a824ffe980f006be049286",
|
||||
"2.42.0": "51643c53d70ce15dde83b6da2bad76ba0c7bbcd4f944d7c378f03a15b9f2e1de",
|
||||
"2.41.3": "4f373c1f3d35e8f22f0920928f3d9968aa99a2a5a2673a8ed9964b96c8ee10bf",
|
||||
"2.41.2": "a758988c81478a942e1593ecf11568b962506bff1119061bad04bd4149b40c2c",
|
||||
"2.41.1": "7093ef7dacfa8cdb3c4689d8bc1f06186d9b2420bec49087a3a6a4dee26ddcec",
|
||||
"2.41.0": "7b77c646b36d33c5c0f62677a147142011093270d6fd628ca38c42d5301f3888",
|
||||
"2.40.4": "4a03ec30184aa27f5cf4123c532590be42d80e4b4797ad096f00b82109de1486",
|
||||
"2.40.3": "fa9b837e1e161ebdbbbfde27a883a90fe5f603ce1618086a384bccda59c47de5",
|
||||
"2.40.2": "2c71f3f3e4801176f97708f2093756bce672ef260c6d95c255046e6727b3a031",
|
||||
"2.40.1": "6bbde434121bd0bf8aa574c60fd9a162388383679bd5ddd99921505149ffd4c2",
|
||||
|
||||
@@ -120,4 +120,4 @@ def setup_dependent_package(self, module, dependent_spec):
|
||||
install_tree('bin', prefix.bin)
|
||||
"""
|
||||
# Add a go command/compiler for extensions
|
||||
module.go = self.spec["go"].command
|
||||
module.go = self.command
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import re
|
||||
|
||||
from spack.package import *
|
||||
|
||||
@@ -15,6 +16,10 @@ class Gsl(AutotoolsPackage, GNUMirrorPackage):
|
||||
|
||||
homepage = "https://www.gnu.org/software/gsl"
|
||||
gnu_mirror_path = "gsl/gsl-2.3.tar.gz"
|
||||
maintainers("cessenat")
|
||||
|
||||
tags = ["hpc"]
|
||||
executables = ["^gsl-config$"]
|
||||
|
||||
license("GPL-3.0-or-later")
|
||||
|
||||
@@ -70,3 +75,9 @@ def setup_run_environment(self, env):
|
||||
# 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)
|
||||
|
||||
@classmethod
|
||||
def determine_version(cls, exe):
|
||||
output = Executable(exe)("--version", output=str, error=str)
|
||||
match = re.search(r"\s*(\d[\d\.]+)", output)
|
||||
return match.group(1) if match else None
|
||||
|
||||
@@ -588,18 +588,19 @@ def patch(self):
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
# find_package(Clang) and find_package(LLVM) in clr/hipamd/src/hiprtc/CMakeLists.txt
|
||||
# should find llvm-amdgpu
|
||||
self.define("LLVM_ROOT", self.spec["llvm-amdgpu"].prefix),
|
||||
self.define("Clang_ROOT", self.spec["llvm-amdgpu"].prefix),
|
||||
# Use the new behaviour of the policy CMP0074
|
||||
# (https://cmake.org/cmake/help/latest/policy/CMP0074.html) which will search
|
||||
# "prefixes specified by the <PackageName>_ROOT CMake variable".
|
||||
# From HIP 6.2 onwards the policy is set explicitly by HIP itself:
|
||||
# https://github.com/ROCm/clr/commit/a2a8dad980b0fa1a6086e0c0f95847ae80f5a2c6.
|
||||
self.define("CMAKE_POLICY_DEFAULT_CMP0074", "NEW"),
|
||||
self.define("CMAKE_POLICY_DEFAULT_CMP0074", "NEW")
|
||||
]
|
||||
if self.spec.satisfies("+rocm"):
|
||||
# find_package(Clang) and find_package(LLVM) in clr/hipamd/src/hiprtc/CMakeLists.txt
|
||||
# should find llvm-amdgpu
|
||||
args.append(self.define("LLVM_ROOT", self.spec["llvm-amdgpu"].prefix))
|
||||
args.append(self.define("Clang_ROOT", self.spec["llvm-amdgpu"].prefix))
|
||||
|
||||
args.append(self.define("HSA_PATH", self.spec["hsa-rocr-dev"].prefix))
|
||||
args.append(self.define("HIP_COMPILER", "clang"))
|
||||
args.append(
|
||||
|
||||
@@ -24,11 +24,11 @@ class Hipsycl(CMakePackage, ROCmPackage):
|
||||
license("BSD-2-Clause")
|
||||
|
||||
version("stable", branch="stable", submodules=True)
|
||||
version("24.10.0", commit="7677cf6eefd8ab46d66168cd07ab042109448124", submodules=True)
|
||||
version("24.06.0", commit="fc51dae9006d6858fc9c33148cc5f935bb56b075", submodules=True)
|
||||
version("24.02.0", commit="974adc33ea5a35dd8b5be68c7a744b37482b8b64", submodules=True)
|
||||
version("23.10.0", commit="3952b468c9da89edad9dff953cdcab0a3c3bf78c", submodules=True)
|
||||
version("0.9.4", commit="99d9e24d462b35e815e0e59c1b611936c70464ae", submodules=True)
|
||||
version("0.9.4", commit="99d9e24d462b35e815e0e59c1b611936c70464ae", submodules=True)
|
||||
version("0.9.3", commit="51507bad524c33afe8b124804091b10fa25618dc", submodules=True)
|
||||
version("0.9.2", commit="49fd02499841ae884c61c738610e58c27ab51fdb", submodules=True)
|
||||
version("0.9.1", commit="fe8465cd5399a932f7221343c07c9942b0fe644c", submodules=True)
|
||||
@@ -44,9 +44,28 @@ class Hipsycl(CMakePackage, ROCmPackage):
|
||||
depends_on("python@3:")
|
||||
depends_on("llvm@8: +clang", when="~cuda")
|
||||
depends_on("llvm@9: +clang", when="+cuda")
|
||||
|
||||
# hipSYCL 0.8.0 supported only LLVM 8-10:
|
||||
# (https://github.com/AdaptiveCpp/AdaptiveCpp/blob/v0.8.0/CMakeLists.txt#L29-L37)
|
||||
# recent versions support only up to llvm18
|
||||
# https://github.com/spack/spack/issues/46681
|
||||
# https://github.com/spack/spack/issues/49506
|
||||
|
||||
# The following list was made based on the version tested in adaptivecpp github
|
||||
depends_on("llvm@14:18", when="@develop")
|
||||
depends_on("llvm@14:18", when="@stable")
|
||||
|
||||
depends_on("llvm@14:18", when="@24.10.0")
|
||||
depends_on("llvm@14:18", when="@24.06.0")
|
||||
depends_on("llvm@13:17", when="@24.02.0")
|
||||
depends_on("llvm@13:17", when="@23.10.0")
|
||||
depends_on("llvm@11:15", when="@0.9.4")
|
||||
depends_on("llvm@11:14", when="@0.9.3")
|
||||
depends_on("llvm@11:13", when="@0.9.2")
|
||||
depends_on("llvm@11", when="@0.9.1")
|
||||
# depends_on("llvm@10:11", when="@0.9.0") # missing in releases
|
||||
depends_on("llvm@8:10", when="@0.8.0")
|
||||
|
||||
# https://github.com/spack/spack/issues/45029 and https://github.com/spack/spack/issues/43142
|
||||
conflicts("^gcc@12", when="@23.10.0")
|
||||
# https://github.com/OpenSYCL/OpenSYCL/pull/918 was introduced after 0.9.4
|
||||
@@ -74,8 +93,6 @@ class Hipsycl(CMakePackage, ROCmPackage):
|
||||
"further info please refer to: "
|
||||
"https://github.com/illuhad/hipSYCL/blob/master/doc/install-cuda.md",
|
||||
)
|
||||
# https://github.com/spack/spack/issues/46681
|
||||
conflicts("^llvm@19", when="@24.02.0:24.06.0")
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
||||
@@ -25,7 +25,7 @@ class Hiptt(MakefilePackage, ROCmPackage):
|
||||
|
||||
# To enable this package add it to the LD_LIBRARY_PATH
|
||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
hiptt_home = self.spec["hiptt"].prefix
|
||||
hiptt_home = self.prefix
|
||||
env.prepend_path("cuTT_ROOT", hiptt_home)
|
||||
env.prepend_path("cuTT_LIBRARY", hiptt_home.lib)
|
||||
env.prepend_path("cuTT_INCLUDE_PATH", hiptt_home.include)
|
||||
|
||||
@@ -100,7 +100,7 @@ def check_install(self):
|
||||
prefixes = ";".join(
|
||||
[
|
||||
self.spec["libdrm"].prefix,
|
||||
self.spec["hsakmt-roct"].prefix,
|
||||
self.prefix,
|
||||
self.spec["numactl"].prefix,
|
||||
self.spec["pkgconfig"].prefix,
|
||||
self.spec["llvm-amdgpu"].prefix,
|
||||
@@ -108,7 +108,7 @@ def check_install(self):
|
||||
self.spec["ncurses"].prefix,
|
||||
]
|
||||
)
|
||||
hsakmt_path = ";".join([self.spec["hsakmt-roct"].prefix])
|
||||
hsakmt_path = ";".join([self.prefix])
|
||||
cc_options = [
|
||||
"-DCMAKE_PREFIX_PATH=" + prefixes,
|
||||
"-DLIBHSAKMT_PATH=" + hsakmt_path,
|
||||
|
||||
@@ -36,7 +36,7 @@ def configure_args(self):
|
||||
@run_after("install")
|
||||
@on_package_attributes(run_tests=True)
|
||||
def install_test(self):
|
||||
jq = self.spec["jq"].command
|
||||
jq = self.command
|
||||
f = os.path.join(os.path.dirname(__file__), "input.json")
|
||||
|
||||
assert jq(".bar", input=f, output=str) == "2\n"
|
||||
|
||||
@@ -23,6 +23,7 @@ class Justbuild(Package):
|
||||
license("Apache-2.0")
|
||||
|
||||
version("master", branch="master")
|
||||
version("1.5.0", tag="v1.5.0", commit="21d9afbfb744596f0e7646c386870e78dbeab922")
|
||||
version("1.4.3", tag="v1.4.3", commit="dfbfdc230805a7c92baa7e49d82edc2816e00511")
|
||||
version("1.4.2", tag="v1.4.2", commit="7fd5d41bc219acf0d15da5dfc75d8dd4a6c53ba3")
|
||||
version("1.4.1", tag="v1.4.1", commit="2dc306f510c7ba0661d95bd75305f7deb5eb54b2")
|
||||
|
||||
@@ -33,5 +33,4 @@ class Keepalived(AutotoolsPackage):
|
||||
depends_on("openssl")
|
||||
|
||||
def configure_args(self):
|
||||
args = ["--with-systemdsystemunitdir=" + self.spec["keepalived"].prefix.lib.systemd.system]
|
||||
return args
|
||||
return [f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}"]
|
||||
|
||||
@@ -34,9 +34,5 @@ def autoreconf(self, spec, prefix):
|
||||
bash("autogen.sh")
|
||||
|
||||
def configure_args(self):
|
||||
args = [
|
||||
"--disable-manpages",
|
||||
"--with-bashcompletiondir="
|
||||
+ join_path(self.spec["kmod"].prefix, "share", "bash-completion", "completions"),
|
||||
]
|
||||
return args
|
||||
completions = join_path(self.prefix, "share", "bash-completion", "completions")
|
||||
return ["--disable-manpages", f"--with-bashcompletiondir={completions}"]
|
||||
|
||||
@@ -11,20 +11,68 @@ class Kubectl(GoPackage):
|
||||
"""
|
||||
|
||||
homepage = "https://kubernetes.io"
|
||||
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.0.tar.gz"
|
||||
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.32.2.tar.gz"
|
||||
|
||||
maintainers("alecbcs")
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08")
|
||||
version("1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208")
|
||||
version("1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f")
|
||||
version("1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f")
|
||||
version("1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323")
|
||||
version("1.32.3", sha256="b1ed5abe78a626804aadc49ecb8ade6fd33b27ab8c23d43cd59dc86f6462ac09")
|
||||
version("1.31.7", sha256="92005ebd010a8d4fe3a532444c4645840e0af486062611a4d9c8d862414c3f56")
|
||||
version("1.30.11", sha256="f30e4082b6a554d4a2bfedd8b2308a5e6012287e15bec94f72987f717bab4133")
|
||||
|
||||
depends_on("bash", type="build")
|
||||
depends_on("go@1.22:", type="build", when="@1.30:")
|
||||
depends_on("go@1.23:", type="build", when="@1.32:")
|
||||
with default_args(deprecated=True):
|
||||
version(
|
||||
"1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08"
|
||||
)
|
||||
version(
|
||||
"1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208"
|
||||
)
|
||||
version(
|
||||
"1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f"
|
||||
)
|
||||
version(
|
||||
"1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f"
|
||||
)
|
||||
version(
|
||||
"1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323"
|
||||
)
|
||||
|
||||
with default_args(type="build"):
|
||||
depends_on("bash")
|
||||
|
||||
depends_on("go@1.23:", when="@1.32:")
|
||||
depends_on("go@1.22:", when="@1.30:")
|
||||
depends_on("go@1.21:", when="@1.29:")
|
||||
depends_on("go@1.20:", when="@1.27:")
|
||||
|
||||
build_directory = "cmd/kubectl"
|
||||
|
||||
# Required to correctly set the version
|
||||
# Method discovered by following the trail below
|
||||
#
|
||||
# 1. https://github.com/kubernetes/kubernetes/blob/v1.32.2/Makefile#L1
|
||||
# 2. https://github.com/kubernetes/kubernetes/blob/v1.32.2/build/root/Makefile#L97
|
||||
# 3. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/make-rules/build.sh#L25
|
||||
# 4. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/init.sh#L61
|
||||
# 5. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/version.sh#L151-L183
|
||||
@property
|
||||
def build_args(self):
|
||||
kube_ldflags = [
|
||||
f"-X 'k8s.io/client-go/pkg/version.gitVersion=v{self.version}'",
|
||||
f"-X 'k8s.io/client-go/pkg/version.gitMajor={self.version.up_to(1)}'",
|
||||
f"-X 'k8s.io/client-go/pkg/version.gitMinor={str(self.version).split('.')[1]}'",
|
||||
f"-X 'k8s.io/component-base/version.gitVersion=v{self.version}'",
|
||||
f"-X 'k8s.io/component-base/version.gitMajor={self.version.up_to(1)}'",
|
||||
f"-X 'k8s.io/component-base/version.gitMinor={str(self.version).split('.')[1]}'",
|
||||
]
|
||||
|
||||
args = super().build_args
|
||||
|
||||
if "-ldflags" in args:
|
||||
ldflags_index = args.index("-ldflags") + 1
|
||||
args[ldflags_index] = args[ldflags_index] + " " + " ".join(kube_ldflags)
|
||||
else:
|
||||
args.extend(["-ldflags", " ".join(kube_ldflags)])
|
||||
|
||||
return args
|
||||
|
||||
@@ -11,23 +11,40 @@ class Kubernetes(Package):
|
||||
for deployment, maintenance, and scaling of applications."""
|
||||
|
||||
homepage = "https://kubernetes.io"
|
||||
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.0.tar.gz"
|
||||
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.32.2.tar.gz"
|
||||
|
||||
maintainers("alecbcs")
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08")
|
||||
version("1.27.2", sha256="c6fcfddd38f877ce49c49318973496f9a16672e83a29874a921242950cd1c5d2")
|
||||
version("1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f")
|
||||
version("1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323")
|
||||
version("1.32.3", sha256="b1ed5abe78a626804aadc49ecb8ade6fd33b27ab8c23d43cd59dc86f6462ac09")
|
||||
version("1.31.7", sha256="92005ebd010a8d4fe3a532444c4645840e0af486062611a4d9c8d862414c3f56")
|
||||
version("1.30.11", sha256="f30e4082b6a554d4a2bfedd8b2308a5e6012287e15bec94f72987f717bab4133")
|
||||
|
||||
with default_args(deprecated=True):
|
||||
version(
|
||||
"1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08"
|
||||
)
|
||||
version(
|
||||
"1.27.2", sha256="c6fcfddd38f877ce49c49318973496f9a16672e83a29874a921242950cd1c5d2"
|
||||
)
|
||||
version(
|
||||
"1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f"
|
||||
)
|
||||
version(
|
||||
"1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323"
|
||||
)
|
||||
|
||||
depends_on("c", type="build")
|
||||
|
||||
depends_on("bash", type="build")
|
||||
depends_on("go", type="build")
|
||||
depends_on("go@1.23:", type="build", when="@1.32:")
|
||||
depends_on("gmake", type="build")
|
||||
with default_args(type="build"):
|
||||
depends_on("bash")
|
||||
depends_on("gmake")
|
||||
|
||||
depends_on("go@1.23:", when="@1.32:")
|
||||
depends_on("go@1.22:", when="@1.30:")
|
||||
depends_on("go@1.21:", when="@1.29:")
|
||||
depends_on("go@1.20:", when="@1.27:")
|
||||
|
||||
phases = ["build", "install"]
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ class Lfortran(CMakePackage):
|
||||
"""Modern interactive LLVM-based Fortran compiler"""
|
||||
|
||||
homepage = "https://lfortran.org"
|
||||
url = "https://lfortran.github.io/tarballs/release/lfortran-0.19.0.tar.gz"
|
||||
url = "https://github.com/lfortran/lfortran/releases/download/v0.49.0/lfortran-0.49.0.tar.gz"
|
||||
git = "https://github.com/lfortran/lfortran.git"
|
||||
|
||||
maintainers("certik")
|
||||
@@ -17,8 +17,13 @@ class Lfortran(CMakePackage):
|
||||
|
||||
# The build process uses 'git describe --tags' to get the package version
|
||||
version("main", branch="main", get_full_repo=True)
|
||||
version("0.49.0", sha256="a9225fd33d34ce786f72a964a1179579caff62dd176a6a1477d2594fecdc7cd6")
|
||||
version("0.30.0", sha256="aafdfbfe81d69ceb3650ae1cf9bcd8a1f1532d895bf88f3071fe9610859bcd6f")
|
||||
version("0.19.0", sha256="d496f61d7133b624deb3562677c0cbf98e747262babd4ac010dbd3ab4303d805")
|
||||
version(
|
||||
"0.19.0",
|
||||
sha256="d496f61d7133b624deb3562677c0cbf98e747262babd4ac010dbd3ab4303d805",
|
||||
url="https://lfortran.github.io/tarballs/release/lfortran-0.19.0.tar.gz",
|
||||
)
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
depends_on("cxx", type="build") # generated
|
||||
@@ -30,7 +35,8 @@ class Lfortran(CMakePackage):
|
||||
depends_on("python@3:", type="build", when="@main")
|
||||
depends_on("cmake", type="build")
|
||||
depends_on("llvm@11:15", type=("build", "run"), when="@0.19.0+llvm")
|
||||
depends_on("llvm@11:16", type=("build", "run"), when="@0.30.0:+llvm")
|
||||
depends_on("llvm@11:16", type=("build", "run"), when="@0.30.0+llvm")
|
||||
depends_on("llvm@11:", type=("build", "run"), when="+llvm")
|
||||
depends_on("zlib-api")
|
||||
depends_on("re2c", type="build", when="@main")
|
||||
depends_on("bison@:3.4", type="build", when="@main")
|
||||
|
||||
@@ -176,15 +176,13 @@ def setup_build_environment(self, env):
|
||||
|
||||
# To enable this package add it to the LD_LIBRARY_PATH
|
||||
def setup_run_environment(self, env):
|
||||
libfabric_home = self.spec["libfabric"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib)
|
||||
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib64)
|
||||
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):
|
||||
libfabric_home = self.spec["libfabric"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib)
|
||||
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib64)
|
||||
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
|
||||
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
|
||||
|
||||
@when("@main")
|
||||
def autoreconf(self, spec, prefix):
|
||||
|
||||
@@ -0,0 +1,635 @@
|
||||
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
|
||||
index c632b58..c0ef981 100644
|
||||
--- a/include/fuse_kernel.h
|
||||
+++ b/include/fuse_kernel.h
|
||||
@@ -88,12 +88,11 @@
|
||||
#ifndef _LINUX_FUSE_H
|
||||
#define _LINUX_FUSE_H
|
||||
|
||||
-#include <sys/types.h>
|
||||
-#define __u64 uint64_t
|
||||
-#define __s64 int64_t
|
||||
-#define __u32 uint32_t
|
||||
-#define __s32 int32_t
|
||||
-#define __u16 uint16_t
|
||||
+#ifdef __KERNEL__
|
||||
+#include <linux/types.h>
|
||||
+#else
|
||||
+#include <stdint.h>
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Version negotiation:
|
||||
@@ -128,42 +127,42 @@
|
||||
userspace works under 64bit kernels */
|
||||
|
||||
struct fuse_attr {
|
||||
- __u64 ino;
|
||||
- __u64 size;
|
||||
- __u64 blocks;
|
||||
- __u64 atime;
|
||||
- __u64 mtime;
|
||||
- __u64 ctime;
|
||||
- __u32 atimensec;
|
||||
- __u32 mtimensec;
|
||||
- __u32 ctimensec;
|
||||
- __u32 mode;
|
||||
- __u32 nlink;
|
||||
- __u32 uid;
|
||||
- __u32 gid;
|
||||
- __u32 rdev;
|
||||
- __u32 blksize;
|
||||
- __u32 padding;
|
||||
+ uint64_t ino;
|
||||
+ uint64_t size;
|
||||
+ uint64_t blocks;
|
||||
+ uint64_t atime;
|
||||
+ uint64_t mtime;
|
||||
+ uint64_t ctime;
|
||||
+ uint32_t atimensec;
|
||||
+ uint32_t mtimensec;
|
||||
+ uint32_t ctimensec;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t nlink;
|
||||
+ uint32_t uid;
|
||||
+ uint32_t gid;
|
||||
+ uint32_t rdev;
|
||||
+ uint32_t blksize;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_kstatfs {
|
||||
- __u64 blocks;
|
||||
- __u64 bfree;
|
||||
- __u64 bavail;
|
||||
- __u64 files;
|
||||
- __u64 ffree;
|
||||
- __u32 bsize;
|
||||
- __u32 namelen;
|
||||
- __u32 frsize;
|
||||
- __u32 padding;
|
||||
- __u32 spare[6];
|
||||
+ uint64_t blocks;
|
||||
+ uint64_t bfree;
|
||||
+ uint64_t bavail;
|
||||
+ uint64_t files;
|
||||
+ uint64_t ffree;
|
||||
+ uint32_t bsize;
|
||||
+ uint32_t namelen;
|
||||
+ uint32_t frsize;
|
||||
+ uint32_t padding;
|
||||
+ uint32_t spare[6];
|
||||
};
|
||||
|
||||
struct fuse_file_lock {
|
||||
- __u64 start;
|
||||
- __u64 end;
|
||||
- __u32 type;
|
||||
- __u32 pid; /* tgid */
|
||||
+ uint64_t start;
|
||||
+ uint64_t end;
|
||||
+ uint32_t type;
|
||||
+ uint32_t pid; /* tgid */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -334,143 +333,143 @@ enum fuse_notify_code {
|
||||
#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
|
||||
|
||||
struct fuse_entry_out {
|
||||
- __u64 nodeid; /* Inode ID */
|
||||
- __u64 generation; /* Inode generation: nodeid:gen must
|
||||
+ uint64_t nodeid; /* Inode ID */
|
||||
+ uint64_t generation; /* Inode generation: nodeid:gen must
|
||||
be unique for the fs's lifetime */
|
||||
- __u64 entry_valid; /* Cache timeout for the name */
|
||||
- __u64 attr_valid; /* Cache timeout for the attributes */
|
||||
- __u32 entry_valid_nsec;
|
||||
- __u32 attr_valid_nsec;
|
||||
+ uint64_t entry_valid; /* Cache timeout for the name */
|
||||
+ uint64_t attr_valid; /* Cache timeout for the attributes */
|
||||
+ uint32_t entry_valid_nsec;
|
||||
+ uint32_t attr_valid_nsec;
|
||||
struct fuse_attr attr;
|
||||
};
|
||||
|
||||
struct fuse_forget_in {
|
||||
- __u64 nlookup;
|
||||
+ uint64_t nlookup;
|
||||
};
|
||||
|
||||
struct fuse_forget_one {
|
||||
- __u64 nodeid;
|
||||
- __u64 nlookup;
|
||||
+ uint64_t nodeid;
|
||||
+ uint64_t nlookup;
|
||||
};
|
||||
|
||||
struct fuse_batch_forget_in {
|
||||
- __u32 count;
|
||||
- __u32 dummy;
|
||||
+ uint32_t count;
|
||||
+ uint32_t dummy;
|
||||
};
|
||||
|
||||
struct fuse_getattr_in {
|
||||
- __u32 getattr_flags;
|
||||
- __u32 dummy;
|
||||
- __u64 fh;
|
||||
+ uint32_t getattr_flags;
|
||||
+ uint32_t dummy;
|
||||
+ uint64_t fh;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_ATTR_OUT_SIZE 96
|
||||
|
||||
struct fuse_attr_out {
|
||||
- __u64 attr_valid; /* Cache timeout for the attributes */
|
||||
- __u32 attr_valid_nsec;
|
||||
- __u32 dummy;
|
||||
+ uint64_t attr_valid; /* Cache timeout for the attributes */
|
||||
+ uint32_t attr_valid_nsec;
|
||||
+ uint32_t dummy;
|
||||
struct fuse_attr attr;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
|
||||
|
||||
struct fuse_mknod_in {
|
||||
- __u32 mode;
|
||||
- __u32 rdev;
|
||||
- __u32 umask;
|
||||
- __u32 padding;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t rdev;
|
||||
+ uint32_t umask;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_mkdir_in {
|
||||
- __u32 mode;
|
||||
- __u32 umask;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t umask;
|
||||
};
|
||||
|
||||
struct fuse_rename_in {
|
||||
- __u64 newdir;
|
||||
+ uint64_t newdir;
|
||||
};
|
||||
|
||||
struct fuse_link_in {
|
||||
- __u64 oldnodeid;
|
||||
+ uint64_t oldnodeid;
|
||||
};
|
||||
|
||||
struct fuse_setattr_in {
|
||||
- __u32 valid;
|
||||
- __u32 padding;
|
||||
- __u64 fh;
|
||||
- __u64 size;
|
||||
- __u64 lock_owner;
|
||||
- __u64 atime;
|
||||
- __u64 mtime;
|
||||
- __u64 unused2;
|
||||
- __u32 atimensec;
|
||||
- __u32 mtimensec;
|
||||
- __u32 unused3;
|
||||
- __u32 mode;
|
||||
- __u32 unused4;
|
||||
- __u32 uid;
|
||||
- __u32 gid;
|
||||
- __u32 unused5;
|
||||
+ uint32_t valid;
|
||||
+ uint32_t padding;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t size;
|
||||
+ uint64_t lock_owner;
|
||||
+ uint64_t atime;
|
||||
+ uint64_t mtime;
|
||||
+ uint64_t unused2;
|
||||
+ uint32_t atimensec;
|
||||
+ uint32_t mtimensec;
|
||||
+ uint32_t unused3;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t unused4;
|
||||
+ uint32_t uid;
|
||||
+ uint32_t gid;
|
||||
+ uint32_t unused5;
|
||||
};
|
||||
|
||||
struct fuse_open_in {
|
||||
- __u32 flags;
|
||||
- __u32 unused;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t unused;
|
||||
};
|
||||
|
||||
struct fuse_create_in {
|
||||
- __u32 flags;
|
||||
- __u32 mode;
|
||||
- __u32 umask;
|
||||
- __u32 padding;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t umask;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_open_out {
|
||||
- __u64 fh;
|
||||
- __u32 open_flags;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint32_t open_flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_release_in {
|
||||
- __u64 fh;
|
||||
- __u32 flags;
|
||||
- __u32 release_flags;
|
||||
- __u64 lock_owner;
|
||||
+ uint64_t fh;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t release_flags;
|
||||
+ uint64_t lock_owner;
|
||||
};
|
||||
|
||||
struct fuse_flush_in {
|
||||
- __u64 fh;
|
||||
- __u32 unused;
|
||||
- __u32 padding;
|
||||
- __u64 lock_owner;
|
||||
+ uint64_t fh;
|
||||
+ uint32_t unused;
|
||||
+ uint32_t padding;
|
||||
+ uint64_t lock_owner;
|
||||
};
|
||||
|
||||
struct fuse_read_in {
|
||||
- __u64 fh;
|
||||
- __u64 offset;
|
||||
- __u32 size;
|
||||
- __u32 read_flags;
|
||||
- __u64 lock_owner;
|
||||
- __u32 flags;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t offset;
|
||||
+ uint32_t size;
|
||||
+ uint32_t read_flags;
|
||||
+ uint64_t lock_owner;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_WRITE_IN_SIZE 24
|
||||
|
||||
struct fuse_write_in {
|
||||
- __u64 fh;
|
||||
- __u64 offset;
|
||||
- __u32 size;
|
||||
- __u32 write_flags;
|
||||
- __u64 lock_owner;
|
||||
- __u32 flags;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t offset;
|
||||
+ uint32_t size;
|
||||
+ uint32_t write_flags;
|
||||
+ uint64_t lock_owner;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_write_out {
|
||||
- __u32 size;
|
||||
- __u32 padding;
|
||||
+ uint32_t size;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_STATFS_SIZE 48
|
||||
@@ -480,32 +479,32 @@ struct fuse_statfs_out {
|
||||
};
|
||||
|
||||
struct fuse_fsync_in {
|
||||
- __u64 fh;
|
||||
- __u32 fsync_flags;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint32_t fsync_flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_setxattr_in {
|
||||
- __u32 size;
|
||||
- __u32 flags;
|
||||
+ uint32_t size;
|
||||
+ uint32_t flags;
|
||||
};
|
||||
|
||||
struct fuse_getxattr_in {
|
||||
- __u32 size;
|
||||
- __u32 padding;
|
||||
+ uint32_t size;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_getxattr_out {
|
||||
- __u32 size;
|
||||
- __u32 padding;
|
||||
+ uint32_t size;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_lk_in {
|
||||
- __u64 fh;
|
||||
- __u64 owner;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t owner;
|
||||
struct fuse_file_lock lk;
|
||||
- __u32 lk_flags;
|
||||
- __u32 padding;
|
||||
+ uint32_t lk_flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_lk_out {
|
||||
@@ -513,179 +512,179 @@ struct fuse_lk_out {
|
||||
};
|
||||
|
||||
struct fuse_access_in {
|
||||
- __u32 mask;
|
||||
- __u32 padding;
|
||||
+ uint32_t mask;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_init_in {
|
||||
- __u32 major;
|
||||
- __u32 minor;
|
||||
- __u32 max_readahead;
|
||||
- __u32 flags;
|
||||
+ uint32_t major;
|
||||
+ uint32_t minor;
|
||||
+ uint32_t max_readahead;
|
||||
+ uint32_t flags;
|
||||
};
|
||||
|
||||
struct fuse_init_out {
|
||||
- __u32 major;
|
||||
- __u32 minor;
|
||||
- __u32 max_readahead;
|
||||
- __u32 flags;
|
||||
- __u16 max_background;
|
||||
- __u16 congestion_threshold;
|
||||
- __u32 max_write;
|
||||
+ uint32_t major;
|
||||
+ uint32_t minor;
|
||||
+ uint32_t max_readahead;
|
||||
+ uint32_t flags;
|
||||
+ uint16_t max_background;
|
||||
+ uint16_t congestion_threshold;
|
||||
+ uint32_t max_write;
|
||||
};
|
||||
|
||||
#define CUSE_INIT_INFO_MAX 4096
|
||||
|
||||
struct cuse_init_in {
|
||||
- __u32 major;
|
||||
- __u32 minor;
|
||||
- __u32 unused;
|
||||
- __u32 flags;
|
||||
+ uint32_t major;
|
||||
+ uint32_t minor;
|
||||
+ uint32_t unused;
|
||||
+ uint32_t flags;
|
||||
};
|
||||
|
||||
struct cuse_init_out {
|
||||
- __u32 major;
|
||||
- __u32 minor;
|
||||
- __u32 unused;
|
||||
- __u32 flags;
|
||||
- __u32 max_read;
|
||||
- __u32 max_write;
|
||||
- __u32 dev_major; /* chardev major */
|
||||
- __u32 dev_minor; /* chardev minor */
|
||||
- __u32 spare[10];
|
||||
+ uint32_t major;
|
||||
+ uint32_t minor;
|
||||
+ uint32_t unused;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t max_read;
|
||||
+ uint32_t max_write;
|
||||
+ uint32_t dev_major; /* chardev major */
|
||||
+ uint32_t dev_minor; /* chardev minor */
|
||||
+ uint32_t spare[10];
|
||||
};
|
||||
|
||||
struct fuse_interrupt_in {
|
||||
- __u64 unique;
|
||||
+ uint64_t unique;
|
||||
};
|
||||
|
||||
struct fuse_bmap_in {
|
||||
- __u64 block;
|
||||
- __u32 blocksize;
|
||||
- __u32 padding;
|
||||
+ uint64_t block;
|
||||
+ uint32_t blocksize;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_bmap_out {
|
||||
- __u64 block;
|
||||
+ uint64_t block;
|
||||
};
|
||||
|
||||
struct fuse_ioctl_in {
|
||||
- __u64 fh;
|
||||
- __u32 flags;
|
||||
- __u32 cmd;
|
||||
- __u64 arg;
|
||||
- __u32 in_size;
|
||||
- __u32 out_size;
|
||||
+ uint64_t fh;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t cmd;
|
||||
+ uint64_t arg;
|
||||
+ uint32_t in_size;
|
||||
+ uint32_t out_size;
|
||||
};
|
||||
|
||||
struct fuse_ioctl_iovec {
|
||||
- __u64 base;
|
||||
- __u64 len;
|
||||
+ uint64_t base;
|
||||
+ uint64_t len;
|
||||
};
|
||||
|
||||
struct fuse_ioctl_out {
|
||||
- __s32 result;
|
||||
- __u32 flags;
|
||||
- __u32 in_iovs;
|
||||
- __u32 out_iovs;
|
||||
+ int32_t result;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t in_iovs;
|
||||
+ uint32_t out_iovs;
|
||||
};
|
||||
|
||||
struct fuse_poll_in {
|
||||
- __u64 fh;
|
||||
- __u64 kh;
|
||||
- __u32 flags;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t kh;
|
||||
+ uint32_t flags;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_poll_out {
|
||||
- __u32 revents;
|
||||
- __u32 padding;
|
||||
+ uint32_t revents;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_notify_poll_wakeup_out {
|
||||
- __u64 kh;
|
||||
+ uint64_t kh;
|
||||
};
|
||||
|
||||
struct fuse_fallocate_in {
|
||||
- __u64 fh;
|
||||
- __u64 offset;
|
||||
- __u64 length;
|
||||
- __u32 mode;
|
||||
- __u32 padding;
|
||||
+ uint64_t fh;
|
||||
+ uint64_t offset;
|
||||
+ uint64_t length;
|
||||
+ uint32_t mode;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_in_header {
|
||||
- __u32 len;
|
||||
- __u32 opcode;
|
||||
- __u64 unique;
|
||||
- __u64 nodeid;
|
||||
- __u32 uid;
|
||||
- __u32 gid;
|
||||
- __u32 pid;
|
||||
- __u32 padding;
|
||||
+ uint32_t len;
|
||||
+ uint32_t opcode;
|
||||
+ uint64_t unique;
|
||||
+ uint64_t nodeid;
|
||||
+ uint32_t uid;
|
||||
+ uint32_t gid;
|
||||
+ uint32_t pid;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_out_header {
|
||||
- __u32 len;
|
||||
- __s32 error;
|
||||
- __u64 unique;
|
||||
+ uint32_t len;
|
||||
+ int32_t error;
|
||||
+ uint64_t unique;
|
||||
};
|
||||
|
||||
struct fuse_dirent {
|
||||
- __u64 ino;
|
||||
- __u64 off;
|
||||
- __u32 namelen;
|
||||
- __u32 type;
|
||||
+ uint64_t ino;
|
||||
+ uint64_t off;
|
||||
+ uint32_t namelen;
|
||||
+ uint32_t type;
|
||||
char name[];
|
||||
};
|
||||
|
||||
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
|
||||
-#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
|
||||
+#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
|
||||
#define FUSE_DIRENT_SIZE(d) \
|
||||
FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
|
||||
|
||||
struct fuse_notify_inval_inode_out {
|
||||
- __u64 ino;
|
||||
- __s64 off;
|
||||
- __s64 len;
|
||||
+ uint64_t ino;
|
||||
+ int64_t off;
|
||||
+ int64_t len;
|
||||
};
|
||||
|
||||
struct fuse_notify_inval_entry_out {
|
||||
- __u64 parent;
|
||||
- __u32 namelen;
|
||||
- __u32 padding;
|
||||
+ uint64_t parent;
|
||||
+ uint32_t namelen;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_notify_delete_out {
|
||||
- __u64 parent;
|
||||
- __u64 child;
|
||||
- __u32 namelen;
|
||||
- __u32 padding;
|
||||
+ uint64_t parent;
|
||||
+ uint64_t child;
|
||||
+ uint32_t namelen;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_notify_store_out {
|
||||
- __u64 nodeid;
|
||||
- __u64 offset;
|
||||
- __u32 size;
|
||||
- __u32 padding;
|
||||
+ uint64_t nodeid;
|
||||
+ uint64_t offset;
|
||||
+ uint32_t size;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
struct fuse_notify_retrieve_out {
|
||||
- __u64 notify_unique;
|
||||
- __u64 nodeid;
|
||||
- __u64 offset;
|
||||
- __u32 size;
|
||||
- __u32 padding;
|
||||
+ uint64_t notify_unique;
|
||||
+ uint64_t nodeid;
|
||||
+ uint64_t offset;
|
||||
+ uint32_t size;
|
||||
+ uint32_t padding;
|
||||
};
|
||||
|
||||
/* Matches the size of fuse_write_in */
|
||||
struct fuse_notify_retrieve_in {
|
||||
- __u64 dummy1;
|
||||
- __u64 offset;
|
||||
- __u32 size;
|
||||
- __u32 dummy2;
|
||||
- __u64 dummy3;
|
||||
- __u64 dummy4;
|
||||
+ uint64_t dummy1;
|
||||
+ uint64_t offset;
|
||||
+ uint32_t size;
|
||||
+ uint32_t dummy2;
|
||||
+ uint64_t dummy3;
|
||||
+ uint64_t dummy4;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_FUSE_H */
|
||||
@@ -94,6 +94,13 @@ def url_for_version(self, version):
|
||||
sha256="94d5c6d9785471147506851b023cb111ef2081d1c0e695728037bbf4f64ce30a",
|
||||
when="@:2",
|
||||
)
|
||||
# fixed in v3.x, but some packages still require v2.x
|
||||
# backport of https://github.com/libfuse/libfuse/commit/6b02a7082ae4c560427ff95b51aa8930bb4a6e1f
|
||||
patch(
|
||||
"fix_aarch64_compile.patch",
|
||||
sha256="6ced88c987543d8e62614fa9bd796e7ede7238d55cc50910ece4355c9c4e57d6",
|
||||
when="@:2 target=aarch64:",
|
||||
)
|
||||
|
||||
executables = ["^fusermount3?$"]
|
||||
|
||||
|
||||
@@ -14,11 +14,13 @@ class Libgtop(AutotoolsPackage):
|
||||
|
||||
license("GPLv2", checked_by="teaguesterling")
|
||||
|
||||
version("2.41.3", sha256="775676df958e2ea2452f7568f28b2ea581063d312773dd5c0b7624c1b9b2da8c")
|
||||
version("2.41.2", sha256="d9026cd8a48d27cdffd332f8d60a92764b56424e522c420cd13a01f40daf92c3")
|
||||
version("2.41.1", sha256="43ea9ad13f7caf98303e64172b191be9b96bab340b019deeec72251ee140fe3b")
|
||||
version("2.41.2", sha256="d9026cd8a48d27cdffd332f8d60a92764b56424e522c420cd13a01f40daf92c3")
|
||||
version("2.41.1", sha256="43ea9ad13f7caf98303e64172b191be9b96bab340b019deeec72251ee140fe3b")
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
|
||||
depends_on("pkgconfig", type="build")
|
||||
with default_args(type=("build", "link", "run")):
|
||||
depends_on("glib@2.65:", when="@2.40:")
|
||||
|
||||
@@ -50,7 +50,7 @@ class Libunwind(AutotoolsPackage):
|
||||
|
||||
variant(
|
||||
"components",
|
||||
values=any_combination_of("coredump", "ptrace", "setjump"),
|
||||
values=any_combination_of("coredump", "ptrace", "setjmp"),
|
||||
description="Build specified libunwind libraries",
|
||||
)
|
||||
|
||||
|
||||
@@ -308,15 +308,13 @@ def cmake_args(self):
|
||||
|
||||
# Make sure that the compiler paths are in the LD_LIBRARY_PATH
|
||||
def setup_run_environment(self, env):
|
||||
llvm_amdgpu_home = self.spec["llvm-amdgpu"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", llvm_amdgpu_home + "/lib")
|
||||
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):
|
||||
llvm_amdgpu_home = self.spec["llvm-amdgpu"].prefix
|
||||
env.prepend_path("LD_LIBRARY_PATH", llvm_amdgpu_home + "/lib")
|
||||
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
|
||||
# Required for enabling asan on dependent packages
|
||||
for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix):
|
||||
for root, _, files in os.walk(self.prefix):
|
||||
if "libclang_rt.asan-x86_64.so" in files:
|
||||
env.prepend_path("LD_LIBRARY_PATH", root)
|
||||
env.prune_duplicate_paths("LD_LIBRARY_PATH")
|
||||
@@ -339,7 +337,7 @@ def post_install(self):
|
||||
|
||||
# Required for enabling asan on dependent packages
|
||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix):
|
||||
for root, _, files in os.walk(self.prefix):
|
||||
if "libclang_rt.asan-x86_64.so" in files:
|
||||
env.prepend_path("LD_LIBRARY_PATH", root)
|
||||
env.prune_duplicate_paths("LD_LIBRARY_PATH")
|
||||
|
||||
@@ -36,8 +36,4 @@ class Lxc(AutotoolsPackage):
|
||||
depends_on("m4", type="build")
|
||||
|
||||
def configure_args(self):
|
||||
args = [
|
||||
"bashcompdir="
|
||||
+ join_path(self.spec["lxc"].prefix, "share", "bash-completion", "completions")
|
||||
]
|
||||
return args
|
||||
return [f"bashcompdir={join_path(self.prefix, 'share', 'bash-completion', 'completions')}"]
|
||||
|
||||
@@ -27,5 +27,4 @@ class Moosefs(AutotoolsPackage):
|
||||
depends_on("c", type="build") # generated
|
||||
|
||||
def configure_args(self):
|
||||
args = ["--with-systemdsystemunitdir=" + self.spec["moosefs"].prefix.lib.systemd.system]
|
||||
return args
|
||||
return [f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}"]
|
||||
|
||||
@@ -77,6 +77,7 @@ class Mpich(MpichEnvironmentModifications, AutotoolsPackage, CudaPackage, ROCmPa
|
||||
license("mpich2")
|
||||
|
||||
version("develop", submodules=True)
|
||||
version("4.3.0", sha256="5e04132984ad83cab9cc53f76072d2b5ef5a6d24b0a9ff9047a8ff96121bcc63")
|
||||
version("4.2.3", sha256="7a019180c51d1738ad9c5d8d452314de65e828ee240bcb2d1f80de9a65be88a8")
|
||||
version("4.2.2", sha256="883f5bb3aeabf627cb8492ca02a03b191d09836bbe0f599d8508351179781d41")
|
||||
version("4.2.1", sha256="23331b2299f287c3419727edc2df8922d7e7abbb9fd0ac74e03b9966f9ad42d7")
|
||||
|
||||
@@ -26,6 +26,7 @@ class Mvapich(MpichEnvironmentModifications, AutotoolsPackage):
|
||||
license("Unlicense")
|
||||
|
||||
# Prefer the latest stable release
|
||||
version("4.0", sha256="c532f7bdd5cca71f78c12e0885c492f6e276e283711806c84d0b0f80bb3e3b74")
|
||||
version("3.0", sha256="ee076c4e672d18d6bf8dd2250e4a91fa96aac1db2c788e4572b5513d86936efb")
|
||||
|
||||
depends_on("c", type="build")
|
||||
@@ -67,8 +68,8 @@ class Mvapich(MpichEnvironmentModifications, AutotoolsPackage):
|
||||
variant(
|
||||
"pmi_version",
|
||||
description="Which pmi version to be used. If using pmi2 add it to your CFLAGS",
|
||||
default="simple",
|
||||
values=("simple", "pmi2", "pmix"),
|
||||
default="none",
|
||||
values=("none", "pmi1", "pmi2", "pmix"),
|
||||
multi=False,
|
||||
)
|
||||
|
||||
@@ -163,7 +164,6 @@ def process_manager_options(self):
|
||||
if "process_managers=slurm" in spec:
|
||||
opts = [
|
||||
"--with-pm=slurm",
|
||||
"--with-pmi=simple",
|
||||
"--with-slurm={0}".format(spec["slurm"].prefix),
|
||||
"CFLAGS=-I{0}/include/slurm".format(spec["slurm"].prefix),
|
||||
]
|
||||
@@ -231,7 +231,8 @@ def configure_args(self):
|
||||
]
|
||||
|
||||
args.extend(self.enable_or_disable("alloca"))
|
||||
args.append("--with-pmi=" + spec.variants["pmi_version"].value)
|
||||
if not spec.satisfies("pmi_version=none"):
|
||||
args.append("--with-pmi=" + spec.variants["pmi_version"].value)
|
||||
if "pmi_version=pmix" in spec:
|
||||
args.append("--with-pmix={0}".format(spec["pmix"].prefix))
|
||||
|
||||
|
||||
69
var/spack/repos/builtin/packages/nvpl-scalapack/package.py
Normal file
69
var/spack/repos/builtin/packages/nvpl-scalapack/package.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class NvplScalapack(Package):
|
||||
"""NVPL ScaLAPACK (NVIDIA Performance Libraries ScaLAPACK)."""
|
||||
|
||||
homepage = "https://docs.nvidia.com/nvpl/latest/scalapack/index.html"
|
||||
url = (
|
||||
"https://developer.download.nvidia.com/compute/nvpl/redist/nvpl_scalapack/"
|
||||
"linux-sbsa/nvpl_scalapack-linux-sbsa-0.2.1-archive.tar.xz"
|
||||
)
|
||||
|
||||
maintainers("RMeli")
|
||||
|
||||
version("0.2.1", sha256="dada4d1ecf044d90609b9e62750b383d11be9b22c87e109414bcc07dce3c83c9")
|
||||
|
||||
provides("scalapack")
|
||||
|
||||
variant("ilp64", default=False, description="Force 64-bit Fortran native integers")
|
||||
|
||||
depends_on("nvpl-blas +ilp64", when="+ilp64")
|
||||
depends_on("nvpl-blas ~ilp64", when="~ilp64")
|
||||
depends_on("nvpl-lapack +ilp64", when="+ilp64")
|
||||
depends_on("nvpl-lapack ~ilp64", when="~ilp64")
|
||||
depends_on("mpi")
|
||||
|
||||
requires("target=armv8.2a:", msg="Any CPU with Arm-v8.2a+ microarch")
|
||||
|
||||
conflicts("%gcc@:7")
|
||||
conflicts("%clang@:13")
|
||||
|
||||
def url_for_version(self, version):
|
||||
"""Spack can't detect the version in the URL above"""
|
||||
url = "https://developer.download.nvidia.com/compute/nvpl/redist/nvpl_scalapack/linux-sbsa/nvpl_scalapack-linux-sbsa-{0}-archive.tar.xz"
|
||||
return url.format(version)
|
||||
|
||||
@property
|
||||
def scalapack_headers(self):
|
||||
return find_all_headers(self.spec.prefix.include)
|
||||
|
||||
@property
|
||||
def scalapack_libs(self):
|
||||
spec = self.spec
|
||||
|
||||
int_type = "ilp64" if spec.satisfies("+ilp64") else "lp64"
|
||||
|
||||
if any(
|
||||
spec.satisfies(f"^[virtuals=mpi] {mpi_library}")
|
||||
for mpi_library in ["mpich", "cray-mpich", "mvapich", "mvapich2"]
|
||||
):
|
||||
mpi_type = "mpich"
|
||||
elif spec.satisfies("^[virtuals=mpi] openmpi"):
|
||||
mpi_type = "openmpi" + spec["openmpi"].version.up_to(1)
|
||||
else:
|
||||
raise InstallError(
|
||||
f"Unsupported MPI library {spec['mpi']}.\n"
|
||||
"Add support to the Spack package, if needed."
|
||||
)
|
||||
|
||||
name = [f"libnvpl_blacs_{int_type}_{mpi_type}", f"libnvpl_scalapack_{int_type}"]
|
||||
|
||||
return find_libraries(name, spec.prefix.lib, shared=True, recursive=True)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
install_tree(".", prefix)
|
||||
@@ -265,6 +265,8 @@ class Openfoam(Package):
|
||||
|
||||
version("develop", branch="develop", submodules="True")
|
||||
version("master", branch="master", submodules="True")
|
||||
version("2412", sha256="c353930105c39b75dac7fa7cfbfc346390caa633a868130fd8c9816ef5f732cd")
|
||||
version("2406", sha256="8d1450fb89eec1e7cecc55c3bb7bc486ccbf63d069379d1d5d7518fa16a4686a")
|
||||
version("2312", sha256="f113183a4d027c93939212af8967053c5f8fe76fb62e5848cb11bbcf8e829552")
|
||||
version("2306", sha256="d7fba773658c0f06ad17f90199565f32e9bf502b7bb03077503642064e1f5344")
|
||||
version(
|
||||
@@ -379,6 +381,9 @@ class Openfoam(Package):
|
||||
depends_on("flex@:2.6.1,2.6.4:")
|
||||
depends_on("cmake", type="build")
|
||||
depends_on("m4", type="build")
|
||||
depends_on("json-c")
|
||||
depends_on("libyaml")
|
||||
depends_on("readline")
|
||||
|
||||
# Require scotch with ptscotch - corresponds to standard OpenFOAM setup
|
||||
depends_on("scotch~metis+mpi~int64", when="+scotch~int64")
|
||||
|
||||
@@ -1084,10 +1084,16 @@ def configure_args(self):
|
||||
config_args.extend(["--enable-debug"])
|
||||
|
||||
# Package dependencies
|
||||
for dep in ["libevent", "lustre", "singularity", "valgrind"]:
|
||||
for dep in ["lustre", "singularity", "valgrind"]:
|
||||
if "^" + dep in spec:
|
||||
config_args.append("--with-{0}={1}".format(dep, spec[dep].prefix))
|
||||
|
||||
# libevent support
|
||||
if spec.satisfies("+internal-libevent"):
|
||||
config_args.append("--with-libevent=internal")
|
||||
elif "^libevent" in spec:
|
||||
config_args.append("--with-libevent={0}".format(spec["libevent"].prefix))
|
||||
|
||||
# PMIx support
|
||||
if spec.satisfies("+internal-pmix"):
|
||||
config_args.append("--with-pmix=internal")
|
||||
|
||||
@@ -291,10 +291,7 @@ def setup_run_environment(self, env):
|
||||
|
||||
# Find openspeedshop library path
|
||||
oss_libdir = find_libraries(
|
||||
"libopenss-framework",
|
||||
root=self.spec["openspeedshop-utils"].prefix,
|
||||
shared=True,
|
||||
recursive=True,
|
||||
"libopenss-framework", root=self.prefix, shared=True, recursive=True
|
||||
)
|
||||
env.prepend_path("LD_LIBRARY_PATH", os.path.dirname(oss_libdir.joined()))
|
||||
|
||||
|
||||
@@ -27,63 +27,39 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("3.4.0", sha256="e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf")
|
||||
version("3.3.2", sha256="2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281")
|
||||
version("3.2.3", sha256="52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239")
|
||||
version("3.1.7", sha256="053a31fa80cf4aebe1068c987d2ef1e44ce418881427c4464751ae800c31d06c")
|
||||
version("3.0.15", sha256="23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533")
|
||||
version("3.4.1", sha256="002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3")
|
||||
version("3.3.3", sha256="712590fd20aaa60ec75d778fe5b810d6b829ca7fb1e530577917a131f9105539")
|
||||
version("3.2.4", sha256="b23ad7fd9f73e43ad1767e636040e88ba7c9e5775bfa5618436a0dd2c17c3716")
|
||||
version("3.1.8", sha256="d319da6aecde3aa6f426b44bbf997406d95275c5c59ab6f6ef53caaa079f456f")
|
||||
version("3.0.16", sha256="57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86")
|
||||
|
||||
version(
|
||||
"3.3.1",
|
||||
sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.3.0",
|
||||
sha256="53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.2.2",
|
||||
sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.2.1",
|
||||
sha256="83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.1.6",
|
||||
sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.1.5",
|
||||
sha256="6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.0.14",
|
||||
sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"3.0.13",
|
||||
sha256="88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313",
|
||||
deprecated=True,
|
||||
)
|
||||
with default_args(deprecated=True):
|
||||
version("3.4.0", sha256="e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf")
|
||||
version("3.3.1", sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e")
|
||||
version("3.3.2", sha256="2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281")
|
||||
version("3.3.0", sha256="53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02")
|
||||
version("3.2.3", sha256="52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239")
|
||||
version("3.2.2", sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7")
|
||||
version("3.2.1", sha256="83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39")
|
||||
version("3.1.7", sha256="053a31fa80cf4aebe1068c987d2ef1e44ce418881427c4464751ae800c31d06c")
|
||||
version("3.1.6", sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7")
|
||||
version("3.1.5", sha256="6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262")
|
||||
version(
|
||||
"3.0.15", sha256="23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533"
|
||||
)
|
||||
version(
|
||||
"3.0.14", sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca"
|
||||
)
|
||||
version(
|
||||
"3.0.13", sha256="88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313"
|
||||
)
|
||||
|
||||
version(
|
||||
"1.1.1w",
|
||||
sha256="cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"1.0.2u",
|
||||
sha256="ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"1.1.1w", sha256="cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8"
|
||||
)
|
||||
version(
|
||||
"1.0.2u", sha256="ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16"
|
||||
)
|
||||
|
||||
depends_on("c", type="build") # generated
|
||||
|
||||
|
||||
@@ -42,10 +42,8 @@ def autoreconf(self, spec, prefix):
|
||||
def configure_args(self):
|
||||
args = [
|
||||
"--enable-parallel-netcdf",
|
||||
"--with-web-server-path={0}/html".format(
|
||||
self.spec["ophidia-analytics-framework"].prefix
|
||||
),
|
||||
f"--with-web-server-path={self.prefix}/html",
|
||||
"--with-web-server-url=http://127.0.0.1/ophidia",
|
||||
"--with-ophidiaio-server-path={0}".format(self.spec["ophidia-io-server"].prefix),
|
||||
f"--with-ophidiaio-server-path={self.spec['ophidia-io-server'].prefix}",
|
||||
]
|
||||
return args
|
||||
|
||||
@@ -88,6 +88,7 @@ def cmake_args(self):
|
||||
define("GENF90_PATH", join_path(src, "genf90")),
|
||||
define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||
define("PIO_ENABLE_EXAMPLES", False),
|
||||
define_from_variant("WITH_PNETCDF", "pnetcdf"),
|
||||
]
|
||||
if spec.satisfies("+ncint"):
|
||||
args.extend([define("PIO_ENABLE_NETCDF_INTEGRATION", True)])
|
||||
|
||||
@@ -231,11 +231,21 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
|
||||
depends_on("mpi", when="+mpi")
|
||||
conflicts("mpi", when="~mpi")
|
||||
|
||||
depends_on("qt@:4", when="@:5.2.0+qt")
|
||||
depends_on("qt+sql", when="+qt")
|
||||
with when("+qt"):
|
||||
depends_on("qt+opengl", when="@5.3.0:+opengl2")
|
||||
depends_on("qt~opengl", when="@5.3.0:~opengl2")
|
||||
depends_on("qmake", when="@5.12.0:")
|
||||
depends_on("qt", when="@5.3.0:5.11")
|
||||
depends_on("qt@:4", when="@:5.2.0")
|
||||
with when("^[virtuals=qmake] qt-base"):
|
||||
depends_on("qt-base+gui+network+widgets")
|
||||
depends_on("qt-base+opengl", when="+opengl2")
|
||||
depends_on("qt-base~opengl", when="~opengl2")
|
||||
depends_on("qt-tools +assistant") # Qt::Help
|
||||
depends_on("qt-5compat")
|
||||
depends_on("qt-svg")
|
||||
with when("^[virtuals=qmake] qt"):
|
||||
depends_on("qt+sql")
|
||||
depends_on("qt+opengl", when="+opengl2")
|
||||
depends_on("qt~opengl", when="~opengl2")
|
||||
|
||||
depends_on("gl@3.2:", when="+opengl2")
|
||||
depends_on("gl@1.2:", when="~opengl2")
|
||||
@@ -384,6 +394,12 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
patch("kits_with_catalyst_5_12.patch", when="@5.12.0")
|
||||
|
||||
# https://github.com/Kitware/VTK-m/commit/c805a6039ea500cb96158cfc11271987c9f67aa4
|
||||
patch("vtkm-remove-unused-method-from-mir-tables.patch", when="@5.13.2 %oneapi@2025:")
|
||||
|
||||
# https://github.com/Kitware/VTK-m/commit/48e385af319543800398656645327243a29babfb
|
||||
patch("vtkm-fix-problems-in-class-member-names.patch", when="@5.13.2 %oneapi@2025:")
|
||||
|
||||
generator("ninja", "make", default="ninja")
|
||||
# https://gitlab.kitware.com/paraview/paraview/-/issues/21223
|
||||
conflicts("generator=ninja", when="%xl")
|
||||
@@ -438,6 +454,10 @@ def flag_handler(self, name, flags):
|
||||
if self.spec["hdf5"].satisfies("@1.12:"):
|
||||
flags.append("-DH5_USE_110_API")
|
||||
|
||||
if self.spec.satisfies("%oneapi@2025:"):
|
||||
flags.append("-Wno-error=missing-template-arg-list-after-template-kw")
|
||||
flags.append("-Wno-missing-template-arg-list-after-template-kw")
|
||||
|
||||
return flags, None, None
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
@@ -594,7 +614,7 @@ def use_x11():
|
||||
# The assumed qt version changed to QT5 (as of paraview 5.2.1),
|
||||
# so explicitly specify which QT major version is actually being used
|
||||
if spec.satisfies("+qt"):
|
||||
cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qt"].version[0]])
|
||||
cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qmake"].version[0]])
|
||||
if IS_WINDOWS:
|
||||
# Windows does not currently support Qt Quick
|
||||
cmake_args.append("-DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING=NO")
|
||||
@@ -748,19 +768,15 @@ def use_x11():
|
||||
|
||||
def test_smoke_test(self):
|
||||
"""Simple smoke test for ParaView"""
|
||||
spec = self.spec
|
||||
|
||||
pvserver = Executable(spec["paraview"].prefix.bin.pvserver)
|
||||
pvserver = Executable(self.prefix.bin.pvserver)
|
||||
pvserver("--help")
|
||||
|
||||
def test_pvpython(self):
|
||||
"""Test pvpython"""
|
||||
spec = self.spec
|
||||
|
||||
if "~python" in spec:
|
||||
if "~python" in self.spec:
|
||||
raise SkipTest("Package must be installed with +python")
|
||||
|
||||
pvpython = Executable(spec["paraview"].prefix.bin.pvpython)
|
||||
pvpython = Executable(self.prefix.bin.pvpython)
|
||||
pvpython("-c", "import paraview")
|
||||
|
||||
def test_mpi_ensemble(self):
|
||||
@@ -771,8 +787,8 @@ def test_mpi_ensemble(self):
|
||||
raise SkipTest("Package must be installed with +mpi and +python")
|
||||
|
||||
mpirun = spec["mpi"].prefix.bin.mpirun
|
||||
pvserver = spec["paraview"].prefix.bin.pvserver
|
||||
pvpython = Executable(spec["paraview"].prefix.bin.pvpython)
|
||||
pvserver = self.prefix.bin.pvserver
|
||||
pvpython = Executable(self.prefix.bin.pvpython)
|
||||
|
||||
with working_dir("smoke_test_build", create=True):
|
||||
with Popen(
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
diff --git a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
|
||||
index acd5eca2b..5a23705db 100644
|
||||
--- a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
|
||||
+++ b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
|
||||
@@ -663,7 +663,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
|
||||
auto hyperarcsPortal = this->Hyperarcs.ReadPortal();
|
||||
auto regularNodeGlobalIdsPortal = this->RegularNodeGlobalIds.ReadPortal();
|
||||
auto whichIterationPortal = this->WhichIteration.ReadPortal();
|
||||
- auto whichRoundPortal = this->whichRound.ReadPortal();
|
||||
+ auto whichRoundPortal = this->WhichRound.ReadPortal();
|
||||
auto superarcsPortal = this->Superarcs.ReadPortal();
|
||||
auto superparentsPortal = this->Superparents.ReadPortal();
|
||||
for (vtkm::Id supernode = 0; supernode < this->Supernodes.GetNumberOfValues(); supernode++)
|
||||
@@ -708,7 +708,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
|
||||
if (contourtree_augmented::NoSuchElement(superarcTo))
|
||||
{ // no superarc
|
||||
// if it occurred on the final round, it's the global root and is shown as the NULL node
|
||||
- if (whichRoundPortal.Get(superarcFrom) == this->NRounds)
|
||||
+ if (whichRoundPortal.Get(superarcFrom) == this->NumRounds)
|
||||
{ // root node
|
||||
outstream << "\tSN" << std::setw(1) << superarcFrom << " -> SA" << std::setw(1) << superarc
|
||||
<< " [label=\"S" << std::setw(1) << superarc << "\",style=dotted]\n";
|
||||
@@ -0,0 +1,16 @@
|
||||
diff --git a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
|
||||
index 3dff3329e..a6f4d4f1f 100644
|
||||
--- a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
|
||||
+++ b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
|
||||
@@ -11400,11 +11400,6 @@ public:
|
||||
return FacesLookup[shape];
|
||||
}
|
||||
|
||||
- VTKM_EXEC vtkm::UInt8 GetPoint(vtkm::Id pointIndex) const
|
||||
- {
|
||||
- return this->CellFacePortal.Get(pointIndex);
|
||||
- }
|
||||
-
|
||||
private:
|
||||
typename vtkm::cont::ArrayHandle<vtkm::UInt8>::ReadPortalType MIRTablesDataPortal;
|
||||
typename vtkm::cont::ArrayHandle<vtkm::UInt16>::ReadPortalType MIRTablesIndicesPortal;
|
||||
@@ -458,17 +458,15 @@ def symlink_windows(self):
|
||||
|
||||
@run_after("install")
|
||||
def install_cpanm(self):
|
||||
spec = self.spec
|
||||
maker = make
|
||||
cpan_dir = join_path("cpanm", "cpanm")
|
||||
if sys.platform == "win32":
|
||||
maker = nmake
|
||||
cpan_dir = join_path(self.stage.source_path, cpan_dir)
|
||||
cpan_dir = windows_sfn(cpan_dir)
|
||||
if "+cpanm" in spec:
|
||||
if "+cpanm" in self.spec:
|
||||
with working_dir(cpan_dir):
|
||||
perl = spec["perl"].command
|
||||
perl("Makefile.PL")
|
||||
self.command("Makefile.PL")
|
||||
maker()
|
||||
maker("install")
|
||||
|
||||
@@ -502,7 +500,7 @@ def setup_dependent_package(self, module, dependent_spec):
|
||||
if dependent_spec.package.is_extension:
|
||||
# perl extension builds can have a global perl
|
||||
# executable function
|
||||
module.perl = self.spec["perl"].command
|
||||
module.perl = self.command
|
||||
|
||||
# Add variables for library directory
|
||||
module.perl_lib_dir = dependent_spec.prefix.lib.perl5
|
||||
@@ -541,8 +539,7 @@ def filter_config_dot_pm(self):
|
||||
kwargs = {"ignore_absent": True, "backup": False, "string": False}
|
||||
|
||||
# Find the actual path to the installed Config.pm file.
|
||||
perl = self.spec["perl"].command
|
||||
config_dot_pm = perl(
|
||||
config_dot_pm = self.command(
|
||||
"-MModule::Loaded", "-MConfig", "-e", "print is_loaded(Config)", output=str
|
||||
)
|
||||
|
||||
@@ -606,17 +603,15 @@ def command(self):
|
||||
ext = ""
|
||||
if sys.platform == "win32":
|
||||
ext = ".exe"
|
||||
path = os.path.join(self.prefix.bin, "{0}{1}{2}".format(self.spec.name, ver, ext))
|
||||
path = os.path.join(self.prefix.bin, f"{self.spec.name}{ver}{ext}")
|
||||
if os.path.exists(path):
|
||||
return Executable(path)
|
||||
else:
|
||||
msg = "Unable to locate {0} command in {1}"
|
||||
raise RuntimeError(msg.format(self.spec.name, self.prefix.bin))
|
||||
raise RuntimeError(f"Unable to locate {self.spec.name} command in {self.prefix.bin}")
|
||||
|
||||
def test_version(self):
|
||||
"""check version"""
|
||||
perl = self.spec["perl"].command
|
||||
out = perl("--version", output=str.split, error=str.split)
|
||||
out = self.command("--version", output=str.split, error=str.split)
|
||||
expected = ["perl", str(self.spec.version)]
|
||||
for expect in expected:
|
||||
assert expect in out
|
||||
@@ -626,6 +621,5 @@ def test_hello(self):
|
||||
msg = "Hello, World!"
|
||||
options = ["-e", "use warnings; use strict;\nprint('%s\n');" % msg]
|
||||
|
||||
perl = self.spec["perl"].command
|
||||
out = perl(*options, output=str.split, error=str.split)
|
||||
out = self.command(*options, output=str.split, error=str.split)
|
||||
assert msg in out
|
||||
|
||||
@@ -15,7 +15,7 @@ class Petsc(Package, CudaPackage, ROCmPackage):
|
||||
homepage = "https://petsc.org"
|
||||
url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.20.0.tar.gz"
|
||||
git = "https://gitlab.com/petsc/petsc.git"
|
||||
maintainers("balay", "barrysmith", "jedbrown")
|
||||
maintainers("balay", "jczhang07", "joseeroman")
|
||||
|
||||
tags = ["e4s"]
|
||||
|
||||
|
||||
@@ -13,11 +13,14 @@ class Plink2(MakefilePackage):
|
||||
url = "https://github.com/chrchang/plink-ng/archive/refs/tags/v2.00a5.11.tar.gz"
|
||||
list_url = "https://github.com/chrchang/plink-ng/tags"
|
||||
|
||||
maintainers("teaguesterling")
|
||||
|
||||
license("GPLv3", checked_by="teaguesterling")
|
||||
# See: https://github.com/chrchang/plink-ng/blob/master/2.0/COPYING
|
||||
|
||||
maintainers("teaguesterling")
|
||||
|
||||
version(
|
||||
"2.0.0-a.6.9", sha256="492fc1e87b60b2209b7c3c1d616a01c1126978424cf795184d013ecf8a47e028"
|
||||
)
|
||||
version("2.00a5.11", sha256="8b664baa0b603f374123c32818ea2f053272840ba60e998d06cb864f3a6f1c38")
|
||||
version("2.00a5.10", sha256="53d845c6a04f8fc701e6f58f6431654e36cbf6b79bff25099862d169a8199a45")
|
||||
version("2.00a4.3", sha256="3cd1d26ac6dd1c451b42440f479789aa19d2b57642c118aac530a5ff1b0b4ce6")
|
||||
@@ -34,6 +37,9 @@ class Plink2(MakefilePackage):
|
||||
|
||||
build_directory = "2.0/build_dynamic"
|
||||
|
||||
def url_for_version(self, version):
|
||||
return f"https://github.com/chrchang/plink-ng/archive/refs/tags/v{version!s}.tar.gz"
|
||||
|
||||
def edit(self, spec, prefix):
|
||||
with working_dir(self.build_directory):
|
||||
makefile = FileFilter("Makefile")
|
||||
|
||||
@@ -244,7 +244,7 @@ def apply_patch(self, other):
|
||||
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
# Make plumed visible from dependent packages
|
||||
module.plumed = dependent_spec["plumed"].command
|
||||
module.plumed = self.command
|
||||
|
||||
@property
|
||||
def plumed_inc(self):
|
||||
|
||||
@@ -121,8 +121,7 @@ def check_install(self):
|
||||
with working_dir(checkdir, create=True):
|
||||
source = join_path(os.path.dirname(self.module.__file__), "example1.c")
|
||||
cflags = spec["pocl"].headers.cpp_flags.split()
|
||||
# ldflags = spec["pocl"].libs.ld_flags.split()
|
||||
ldflags = ["-L%s" % spec["pocl"].prefix.lib, "-lOpenCL", "-lpoclu"]
|
||||
ldflags = [f"-L{self.prefix.lib}", "-lOpenCL", "-lpoclu"]
|
||||
output = compile_c_and_execute(source, cflags, ldflags)
|
||||
compare_output_file(
|
||||
output, join_path(os.path.dirname(self.module.__file__), "example1.out")
|
||||
|
||||
175
var/spack/repos/builtin/packages/psblas/package.py
Normal file
175
var/spack/repos/builtin/packages/psblas/package.py
Normal file
@@ -0,0 +1,175 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class Psblas(AutotoolsPackage):
|
||||
"""PSBLAS: Parallel Sparse BLAS. A library of distributed sparse
|
||||
linear algebra with support for GPU and Multithread acceleration.
|
||||
Part of the PSCToolkit: Parallel Sparse Computation Toolkit."""
|
||||
|
||||
# Url for your package's homepage here.
|
||||
homepage = "https://psctoolkit.github.io/"
|
||||
git = "https://github.com/sfilippone/psblas3.git"
|
||||
url = "https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0-rc1.tar.gz"
|
||||
|
||||
# List of GitHub accounts to notify when the package is updated.
|
||||
maintainers("cirdans-home", "sfilippone")
|
||||
|
||||
# SPDX identifier of the project's license below.
|
||||
license("BSD-3-Clause", checked_by="cirdans-home")
|
||||
|
||||
version("development", branch="development")
|
||||
version(
|
||||
"3.9.0-rc1",
|
||||
sha256="7a7091ce52582b6fc442e8793e36461be36c0947272ea803ad72736ec2d56da8",
|
||||
preferred=True,
|
||||
)
|
||||
version("3.8.1-2", sha256="285ddb7c9a793ea7ecb428d68cf23f4cc04f1c567631aa84bc2bedb65a3d1b0c")
|
||||
version("3.8.1", sha256="02e1f00e644426eb15eb08c735cf9c8ae692392f35c2cfe4f7474e1ab91575dc")
|
||||
version("3.8.0-2", sha256="86a76bb0987edddd4c10c810d7f18e13742aadc66ac14ad3679669809c1184fa")
|
||||
|
||||
# Explicit phases: autoreconf, configure, build, install, and post_install
|
||||
# which compiles the examples in the prefix/samples folder
|
||||
phases = ["configure", "build", "install", "samples"]
|
||||
|
||||
# Variants:
|
||||
# LPK/IPK: Integer precision variants
|
||||
variant("LPK", default=8, values=int, description="Length in bytes for long integers (8 or 4)")
|
||||
variant(
|
||||
"IPK", default=4, values=int, description="Length in bytes for short integers (8 or 4)"
|
||||
)
|
||||
# MPI
|
||||
variant("mpi", default=True, description="Activates MPI support")
|
||||
# CUDA
|
||||
variant(
|
||||
"cuda", default=False, description="Activate CUDA support", when="@development,3.9.0-rc1"
|
||||
)
|
||||
variant(
|
||||
"cudacc",
|
||||
default="70,75,80,86,89,90",
|
||||
multi=True,
|
||||
description="Specify CUDA Compute Capabilities",
|
||||
when="+cuda",
|
||||
)
|
||||
# METIS
|
||||
variant("metis", default=False, description="Activate METIS support")
|
||||
# SuiteSparse: Enable AMD library support via SuiteSparse
|
||||
variant("amd", default=False, description="Activate AMD support via SuiteSparse")
|
||||
# OpenMP
|
||||
variant(
|
||||
"openmp",
|
||||
default=False,
|
||||
description="Activates OpenMP support",
|
||||
when="@development,3.9.0-rc1",
|
||||
)
|
||||
# OpenACC support (requires GCC >= 14.2.0)
|
||||
variant(
|
||||
"openacc",
|
||||
default=False,
|
||||
description="Activate OpenACC support",
|
||||
when="@development,3.9.0-rc1",
|
||||
)
|
||||
# Additional configure options
|
||||
variant("ccopt", default="none", description="Additional CCOPT flags")
|
||||
variant("cxxopt", default="none", description="Additional CXXOPT flags")
|
||||
variant("fcopt", default="none", description="Additional FCOPT flags")
|
||||
variant("extra_opt", default="none", description="Additional EXTRA_OPT flags")
|
||||
variant("libs", default="none", description="Additional link flags")
|
||||
variant("clibs", default="none", description="Additional CLIBS flags")
|
||||
variant("flibs", default="none", description="Additional FLIBS flags")
|
||||
variant("extra_nvcc", default="none", description="Additional EXTRA_NVCC flags", when="+cuda")
|
||||
variant(
|
||||
"extraopenacc",
|
||||
default="none",
|
||||
description="Additional EXTRAOPENACC flags",
|
||||
when="+openacc",
|
||||
)
|
||||
variant("ccopenacc", default="none", description="Additional CCOPENACC flags", when="+openacc")
|
||||
variant(
|
||||
"cxxopenacc", default="none", description="Additional CXXOPENACC flags", when="+openacc"
|
||||
)
|
||||
variant("fcopenacc", default="none", description="Additional FCOPENACC flags", when="+openacc")
|
||||
|
||||
# Dependencies:
|
||||
# Languages: Fortran for much of the library, c for the interfaces,
|
||||
# c++ for the matching routines
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
depends_on("fortran", type="build")
|
||||
# MPI
|
||||
depends_on("mpi", when="+mpi")
|
||||
# BLAS/LAPACK
|
||||
depends_on("blas")
|
||||
depends_on("lapack")
|
||||
# CUDA
|
||||
depends_on("cuda", when="+cuda")
|
||||
# Metis
|
||||
depends_on("metis@5:+int64", when="+metis LPK=8")
|
||||
depends_on("metis@5:~int64", when="+metis LPK=4")
|
||||
depends_on("metis@5:+int64", when="+metis")
|
||||
# SuiteSparse: Enable AMD library support via SuiteSparse
|
||||
depends_on("suite-sparse", when="+amd")
|
||||
# OpenACC support (requires GCC >= 14.2.0)
|
||||
depends_on("gcc@14.2.0:+nvptx", when="+openacc", type="build")
|
||||
|
||||
def configure_args(self):
|
||||
args = [f"--prefix={self.prefix}"]
|
||||
# LPK/IPK Choice for integer configuration
|
||||
args.append(f"--with-lpk={self.spec.variants['LPK'].value}")
|
||||
args.append(f"--with-ipk={self.spec.variants['IPK'].value}")
|
||||
# MPI/serial configuration
|
||||
if "+mpi" in self.spec:
|
||||
pass
|
||||
else:
|
||||
args.append("--enable-serial")
|
||||
# OPENMP
|
||||
args.extend(self.enable_or_disable("openmp"))
|
||||
# CUDA
|
||||
args.extend(self.enable_or_disable("cuda"))
|
||||
if "+cuda" in self.spec:
|
||||
cudacc_values = ",".join(self.spec.variants["cudacc"].value)
|
||||
args.append(f"--with-cudacc={cudacc_values}")
|
||||
args.append(f"--with-cudadir={self.spec['cuda'].prefix}")
|
||||
for opt in ["extra_nvcc"]:
|
||||
val = self.spec.variants[opt].value
|
||||
if val != "none":
|
||||
args.append(f"--with-{opt.replace('_', '-')}={val}")
|
||||
# OpenACC configuration
|
||||
args.extend(self.enable_or_disable("openacc"))
|
||||
if "+openacc" in self.spec:
|
||||
for opt in ["extraopenacc", "ccopenacc", "cxxopenacc", "fcopenacc"]:
|
||||
val = self.spec.variants[opt].value
|
||||
if val != "none":
|
||||
args.append(f"--with-{opt.replace('_', '-')}={val}")
|
||||
# METIS configuration
|
||||
if "+metis" in self.spec:
|
||||
args.append(f"--with-metisincdir={self.spec['metis'].prefix}/include")
|
||||
args.append(f"--with-metislibdir={self.spec['metis'].prefix}/lib")
|
||||
# SuiteSparse configuration for AMD library support
|
||||
if "+amd" in self.spec:
|
||||
args.append(f"--with-amddir={self.spec['suite-sparse'].prefix}")
|
||||
# All the other options
|
||||
for opt in ["ccopt", "cxxopt", "fcopt", "extra_opt", "libs", "clibs", "flibs"]:
|
||||
val = self.spec.variants[opt].value
|
||||
if val != "none":
|
||||
args.append(f"--with-{opt.replace('_', '-')}={val}")
|
||||
return args
|
||||
|
||||
def configure(self, spec, prefix):
|
||||
configure = Executable("./configure")
|
||||
configure(*self.configure_args())
|
||||
|
||||
def build(self, spec, prefix):
|
||||
make()
|
||||
|
||||
def install(self, spec, prefix):
|
||||
make("install")
|
||||
|
||||
def samples(self, spec, prefix):
|
||||
with working_dir(prefix.samples.fileread):
|
||||
make()
|
||||
with working_dir(prefix.samples.pargen):
|
||||
make()
|
||||
@@ -96,7 +96,7 @@ def filter_compilers(self):
|
||||
"-I{0}".format(
|
||||
" -I".join(
|
||||
[
|
||||
os.path.join(spec["psi4"].prefix.include, "psi4"),
|
||||
os.path.join(self.prefix.include, "psi4"),
|
||||
os.path.join(spec["boost"].prefix.include, "boost"),
|
||||
os.path.join(spec["python"].headers.directories[0]),
|
||||
spec["lapack"].prefix.include,
|
||||
|
||||
@@ -21,34 +21,10 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
|
||||
|
||||
version("develop", branch="development")
|
||||
version("25.03", sha256="5a65545d46b49dd3f2bca2647a174c3ee0384e49791dc3e335a3a39d9a045350")
|
||||
version(
|
||||
"25.02",
|
||||
sha256="c743086b317f9fa90639d825db32a92376cde8dc5e1eab47a4c6a82af36d5b5c",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"24.10",
|
||||
sha256="dc1752ed3fbd5113dcfdbddcfe6c3c458e572b288ac9d41ed3ed7db130591d74",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"24.08",
|
||||
sha256="e7179d88261f64744f392a2194ff2744fe323fe0e21d0742ba60458709a1b47e",
|
||||
deprecated=True,
|
||||
)
|
||||
version(
|
||||
"24.04",
|
||||
sha256="ab85695bb9644b702d0fc84e77205d264d27ba94999cab912c8a3212a7eb77fc",
|
||||
deprecated=True,
|
||||
)
|
||||
with default_args(deprecated=True):
|
||||
version("25.02", sha256="c743086b317f9fa90639d825db32a92376cde8dc5e1eab47a4c6a82af36d5b5c")
|
||||
|
||||
version(
|
||||
"24.03",
|
||||
sha256="bf85b4ad35b623278cbaae2c07e22138545dec0732d15c4ab7c53be76a7f2315",
|
||||
deprecated=True,
|
||||
)
|
||||
|
||||
for v in ["25.03", "25.02", "24.10", "24.08", "24.04", "24.03"]:
|
||||
for v in ["25.03", "25.02", "develop"]:
|
||||
depends_on("amrex@{0}".format(v), when="@{0}".format(v), type=("build", "link"))
|
||||
|
||||
variant(
|
||||
@@ -77,8 +53,7 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
|
||||
depends_on("c", type="build")
|
||||
depends_on("cxx", type="build")
|
||||
|
||||
depends_on("cmake@3.20:3", type="build", when="@:24.08")
|
||||
depends_on("cmake@3.24:3", type="build", when="@24.09:")
|
||||
depends_on("cmake@3.24:3", type="build")
|
||||
depends_on("pkgconfig", type="build") # amrex +fft
|
||||
depends_on("python@3.8:", type=("build", "run"))
|
||||
depends_on("py-mpi4py@2.1.0:", type=("build", "run"), when="+mpi")
|
||||
@@ -128,38 +103,29 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
|
||||
depends_on("py-pandas", type="test")
|
||||
depends_on("py-cupy", type="test", when="+cuda")
|
||||
|
||||
phases = ("cmake", "build", "install", "pip_install_nodeps")
|
||||
build_targets = ["all", "pip_wheel"]
|
||||
phases = ("cmake", "build", "install")
|
||||
build_targets = ["all", "pip_wheel", "pip_install_nodeps"]
|
||||
|
||||
tests_src_dir = "tests/"
|
||||
|
||||
def cmake_args(self):
|
||||
args = ["-DpyAMReX_amrex_internal=OFF", "-DpyAMReX_pybind11_internal=OFF"]
|
||||
return args
|
||||
pip_args = PythonPipBuilder.std_args(self) + [f"--prefix={self.prefix}"]
|
||||
idx = pip_args.index("install")
|
||||
# Docs: https://pyamrex.readthedocs.io/en/24.10/install/cmake.html#build-options
|
||||
|
||||
def pip_install_nodeps(self, spec, prefix):
|
||||
"""Install everything from build directory."""
|
||||
pip = spec["python"].command
|
||||
pip.add_default_arg("-m", "pip")
|
||||
|
||||
args = PythonPipBuilder.std_args(self) + [
|
||||
f"--prefix={prefix}",
|
||||
"--find-links=amrex-whl",
|
||||
"amrex",
|
||||
return [
|
||||
"-DpyAMReX_amrex_internal=OFF",
|
||||
"-DpyAMReX_pybind11_internal=OFF",
|
||||
"-DPY_PIP_OPTIONS=" + ";".join(pip_args[:idx]),
|
||||
"-DPY_PIP_INSTALL_OPTIONS=" + ";".join(pip_args[idx + 1 :]),
|
||||
]
|
||||
|
||||
with working_dir(self.build_directory):
|
||||
pip(*args)
|
||||
|
||||
# todo: from PythonPipBuilder
|
||||
# ....execute_install_time_tests()
|
||||
|
||||
def check(self):
|
||||
"""Checks after the build phase"""
|
||||
pytest = which("pytest")
|
||||
pytest(join_path(self.stage.source_path, self.tests_src_dir))
|
||||
|
||||
@run_after("pip_install_nodeps")
|
||||
@run_after("install")
|
||||
def copy_test_sources(self):
|
||||
"""Copy the example test files after the package is installed to an
|
||||
install test subdirectory for use during `spack test run`."""
|
||||
|
||||
30
var/spack/repos/builtin/packages/py-asdf-astropy/package.py
Normal file
30
var/spack/repos/builtin/packages/py-asdf-astropy/package.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class PyAsdfAstropy(PythonPackage):
|
||||
"""ASDF serialization support for astropy"""
|
||||
|
||||
homepage = "https://asdf-astropy.readthedocs.io/"
|
||||
pypi = "asdf_astropy/asdf_astropy-0.7.1.tar.gz"
|
||||
|
||||
license("BSD-3-Clause", checked_by="lgarrison")
|
||||
|
||||
version("0.7.1", sha256="5aa5a448ee0945bd834a9ba8fb86cf43b39e85d24260e1339b734173ab6024c7")
|
||||
|
||||
depends_on("python@3.10:", type=("build", "run"))
|
||||
|
||||
depends_on("py-setuptools@60:", type="build")
|
||||
depends_on("py-setuptools-scm@3.4: +toml", type="build")
|
||||
|
||||
depends_on("py-asdf@2.14.4:", type=("build", "run"))
|
||||
depends_on("py-asdf-coordinates-schemas@0.3:", type=("build", "run"))
|
||||
depends_on("py-asdf-transform-schemas@0.5:", type=("build", "run"))
|
||||
depends_on("py-asdf-standard@1.1.0:", type=("build", "run"))
|
||||
# depends_on("py-astropy@5.2.0:", type=("build", "run"))
|
||||
conflicts("py-astropy@:5.1")
|
||||
depends_on("py-numpy@1.24:", type=("build", "run"))
|
||||
depends_on("py-packaging@19:", type=("build", "run"))
|
||||
@@ -0,0 +1,26 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class PyAsdfCoordinatesSchemas(PythonPackage):
|
||||
"""ASDF schemas for coordinates"""
|
||||
|
||||
homepage = "https://www.asdf-format.org/projects/asdf-coordinates-schemas/"
|
||||
pypi = "asdf_coordinates_schemas/asdf_coordinates_schemas-0.3.0.tar.gz"
|
||||
|
||||
maintainers("lgarrison")
|
||||
|
||||
license("BSD-3-Clause", checked_by="lgarrison")
|
||||
|
||||
version("0.3.0", sha256="c98b6015dcec87a158fcde7798583f0615d08125fa6e1e9de16c4eb03fcd604e")
|
||||
|
||||
depends_on("python@3.9:", type=("build", "run"))
|
||||
|
||||
depends_on("py-setuptools@60:", type="build")
|
||||
depends_on("py-setuptools-scm@3.4: +toml", type="build")
|
||||
|
||||
depends_on("py-asdf@2.12.1:", type=("build", "run"))
|
||||
depends_on("py-asdf-standard@1.1.0:", type=("build", "run"))
|
||||
@@ -15,12 +15,15 @@ class PyAsdfTransformSchemas(PythonPackage):
|
||||
|
||||
license("BSD-3-Clause")
|
||||
|
||||
version("0.5.0", sha256="82cf4c782575734a895327f25ff583ce9499d7e2b836fe8880b2d7961c6b462b")
|
||||
version("0.3.0", sha256="0cf2ff7b22ccb408fe58ddd9b2441a59ba73fe323e416d59b9e0a4728a7d2dd6")
|
||||
|
||||
depends_on("python@3.9:", when="@0.5.0:", type=("build", "run"))
|
||||
depends_on("python@3.8:", type=("build", "run"))
|
||||
|
||||
depends_on("py-setuptools@42:", type="build")
|
||||
depends_on("py-setuptools-scm@3.4: +toml", type="build")
|
||||
|
||||
depends_on("py-asdf-standard@1.1.0:", when="@0.5.0:", type=("build", "run"))
|
||||
depends_on("py-asdf-standard@1.0.1:", type=("build", "run"))
|
||||
depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8")
|
||||
depends_on("py-importlib-resources@3:", type=("build", "run"), when="@:0.3.0 ^python@:3.8")
|
||||
|
||||
@@ -17,6 +17,7 @@ class PyAsdf(PythonPackage):
|
||||
|
||||
license("BSD-3-Clause")
|
||||
|
||||
version("4.1.0", sha256="0ff44992c85fd768bd9a9512ab7f012afb52ddcee390e9caf67e30d404122da1")
|
||||
version("3.5.0", sha256="047ad7bdd8f40b04b8625abfd119a35d18b344301c60ea9ddf63964e7ce19669")
|
||||
version("2.15.0", sha256="686f1c91ebf987d41f915cfb6aa70940d7ad17f87ede0be70463147ad2314587")
|
||||
version("2.4.2", sha256="6ff3557190c6a33781dae3fd635a8edf0fa0c24c6aca27d8679af36408ea8ff2")
|
||||
|
||||
@@ -14,6 +14,8 @@ class PyCachecontrol(PythonPackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("0.14.2", sha256="7d47d19f866409b98ff6025b6a0fca8e4c791fb31abbd95f622093894ce903a2")
|
||||
version("0.14.0", sha256="7db1195b41c81f8274a7bbd97c956f44e8348265a1bc7641c37dfebc39f0c938")
|
||||
version("0.13.1", sha256="f012366b79d2243a6118309ce73151bf52a38d4a5dac8ea57f09bd29087e506b")
|
||||
version("0.13.0", sha256="fd3fd2cb0ca66b9a6c1d56cc9709e7e49c63dbd19b1b1bcbd8d3f94cedfe8ce5")
|
||||
version("0.12.11", sha256="a5b9fcc986b184db101aa280b42ecdcdfc524892596f606858e0b7a8b4d9e144")
|
||||
@@ -22,12 +24,13 @@ class PyCachecontrol(PythonPackage):
|
||||
variant("filecache", default=False, description="Add lockfile dependency")
|
||||
variant("redis", default=False, description="Add redis dependency")
|
||||
|
||||
depends_on("py-flit-core@3.2:3", when="@0.13.1", type="build")
|
||||
depends_on("py-flit-core@3.2:3", when="@0.13.1:", type="build")
|
||||
depends_on("py-setuptools", when="@:0.13.0", type="build")
|
||||
depends_on("py-requests@2.16.0:", when="@0.13", type=("build", "run"))
|
||||
depends_on("py-requests@2.16.0:", when="@0.13:", type=("build", "run"))
|
||||
depends_on("py-requests", type=("build", "run"))
|
||||
depends_on("py-msgpack@0.5.2:", type=("build", "run"))
|
||||
depends_on("py-filelock@3.8.0:", when="@0.13+filecache", type=("build", "run"))
|
||||
depends_on("py-msgpack@0.5.2:1", when="@0.14:", type=("build", "run"))
|
||||
depends_on("py-filelock@3.8.0:", when="@0.13:+filecache", type=("build", "run"))
|
||||
depends_on("py-lockfile@0.9:", when="@0.12+filecache", type=("build", "run"))
|
||||
depends_on("py-redis@2.10.5:", when="+redis", type=("build", "run"))
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ class PyChex(PythonPackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("0.1.89", sha256="78f856e6a0a8459edfcbb402c2c044d2b8102eac4b633838cbdfdcdb09c6c8e0")
|
||||
version("0.1.86", sha256="e8b0f96330eba4144659e1617c0f7a57b161e8cbb021e55c6d5056c7378091d1")
|
||||
version("0.1.85", sha256="a27cfe87119d6e1fe24ccc1438a59195e6dc1d6e0e10099fcf618c3f64771faf")
|
||||
version("0.1.5", sha256="686858320f8f220c82a6c7eeb54dcdcaa4f3d7f66690dacd13a24baa1ee8299e")
|
||||
|
||||
35
var/spack/repos/builtin/packages/py-corrfunc/package.py
Normal file
35
var/spack/repos/builtin/packages/py-corrfunc/package.py
Normal file
@@ -0,0 +1,35 @@
|
||||
# Copyright Spack Project Developers. See COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class PyCorrfunc(PythonPackage):
|
||||
"""Blazing fast correlation functions on the CPU."""
|
||||
|
||||
homepage = "https://corrfunc.readthedocs.io/"
|
||||
pypi = "corrfunc/corrfunc-2.5.3.tar.gz"
|
||||
|
||||
maintainers("lgarrison")
|
||||
|
||||
license("MIT", checked_by="lgarrison")
|
||||
|
||||
version("2.5.3", sha256="32836235e2389f55f028664231f0d6f5716ac0d4226c620c0bbac9407dc225a1")
|
||||
|
||||
depends_on("c", type="build")
|
||||
|
||||
depends_on("python@3.9:", type=("build", "run"))
|
||||
|
||||
depends_on("py-setuptools", type="build")
|
||||
depends_on("gmake", type="build")
|
||||
|
||||
depends_on("py-numpy@1.20:", type=("build", "run"))
|
||||
depends_on("py-future", type=("build", "run"))
|
||||
depends_on("py-wurlitzer", type=("build", "run"))
|
||||
|
||||
depends_on("gsl@2.4:", type=("build", "link"))
|
||||
|
||||
def patch(self):
|
||||
filter_file(r"^\s*CC\s*[:\?]?=.*", f"CC := {spack_cc}", "common.mk")
|
||||
filter_file("-march=native", "", "common.mk")
|
||||
@@ -16,9 +16,11 @@ class PyCwlUtils(PythonPackage):
|
||||
|
||||
license("Apache-2.0")
|
||||
|
||||
version("0.37", sha256="7b69c948f8593fdf44b44852bd8ef94c666736ce0ac12cf6e66e2a72ad16a773")
|
||||
version("0.21", sha256="583f05010f7572f3a69310325472ccb6efc2db7f43dc6428d03552e0ffcbaaf9")
|
||||
|
||||
depends_on("python@3.6:", type=("build", "run"))
|
||||
depends_on("python@3.8:", when="@0.29:", type=("build", "run"))
|
||||
depends_on("py-setuptools", type="build")
|
||||
|
||||
depends_on("py-cwl-upgrader@1.2.3:", type=("build", "run"))
|
||||
@@ -26,4 +28,17 @@ class PyCwlUtils(PythonPackage):
|
||||
depends_on("py-rdflib", type=("build", "run"))
|
||||
depends_on("py-requests", type=("build", "run"))
|
||||
depends_on("py-cachecontrol", type=("build", "run"))
|
||||
depends_on("py-schema-salad@8.3.20220825114525:8", type=("build", "run"))
|
||||
depends_on("py-schema-salad@8.3.20220825114525:8", when="@:0.31", type=("build", "run"))
|
||||
# intermediate versions 0.32:0.36 may not require 8.8, but should work with this stricter
|
||||
# requirement
|
||||
depends_on("py-schema-salad@8.8.20250205075315:8", when="@0.32:", type=("build", "run"))
|
||||
depends_on("py-ruamel-yaml@0.17.6:0.18", when="@0.30:", type=("build", "run"))
|
||||
depends_on("py-typing-extensions", when="@0.37 ^python@:3.9", type=("build", "run"))
|
||||
|
||||
def url_for_version(self, version):
|
||||
url = "https://files.pythonhosted.org/packages/source/c/cwl-utils/cwl{}utils-{}.tar.gz"
|
||||
if version >= Version("0.34"):
|
||||
sep = "_"
|
||||
else:
|
||||
sep = "-"
|
||||
return url.format(sep, version)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user