Compare commits

..

56 Commits

Author SHA1 Message Date
Harmen Stoppels
25c74506a3 cmake.py: include transitive run deps in CMAKE_PREFIX_PATH
- Run deps often need to be located during the build
- In cases like python-venv and python, where there's a direct build dep
  on both, but python-venv has a run dep on python, meaning we'd rather
  see python-venv in path before python topologically.
2024-11-28 18:27:15 +01:00
Harmen Stoppels
e37e53cfe8 traverse: add MixedDepthVisitor, use in cmake (#47750)
This visitor accepts the sub-dag of all nodes and unique edges that have
deptype X directly from given roots, or deptype Y transitively for any
of the roots.
2024-11-28 17:48:48 +01:00
Andrey Perestoronin
cf31d20d4c add new packages (#47817) 2024-11-28 09:49:52 -05:00
Harmen Stoppels
b74db341c8 darwin: preserve hardlinks on codesign/install_name_tool (#47808) 2024-11-28 14:57:28 +01:00
Daryl W. Grunau
e88a3f6f85 eospac: version 6.5.12 (#47826)
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2024-11-28 12:32:35 +01:00
Massimiliano Culpo
9bd7483e73 Add further C and C++ dependencies to packages (#47821) 2024-11-28 10:50:35 +01:00
Harmen Stoppels
04c76fab63 hip: hints for find_package llvm/clang (#47788)
LLVM can be a transitive link dependency of hip through gl's dependency mesa, which uses it for software rendering.

In this case make sure llvm-amdgpu is found with find_package(LLVM) and
find_package(Clang) by setting LLVM_ROOT and Clang_ROOT.

That makes the patch of find_package's HINTS redundant, so remove that.
It did not work anyways, because CMAKE_PREFIX_PATH has higher precedence
than HINTS.
2024-11-28 10:23:09 +01:00
Adam J. Stewart
ecbf9fcacf py-scooby: add v0.10.0 (#47790) 2024-11-28 10:21:36 +01:00
Victor A. P. Magri
69fb594699 hypre: add a variant to allow using internal lapack functions (#47780) 2024-11-28 10:15:12 +01:00
Howard Pritchard
d28614151f nghttp2: add v1.64.0 (#47800)
Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
2024-11-28 10:12:41 +01:00
etiennemlb
f1d6af6c94 netlib-scalapack: fix for some clang derivative (cce/rocmcc) (#45434) 2024-11-28 09:25:33 +01:00
Adam J. Stewart
192821f361 py-river: mark numpy 2 compatibility (#47813) 2024-11-28 09:24:21 +01:00
Adam J. Stewart
18790ca397 py-pyvista: VTK 9.4 not yet supported (#47815) 2024-11-28 09:23:41 +01:00
BOUDAOUD34
c22d77a38e dbcsr: patch for resolving .mod file conflicts in ROCm by implementing USE, INTRINSIC (#46181)
Co-authored-by: U-PALLAS\boudaoud <boudaoud@pc44.pallas.cines.fr>
2024-11-28 09:20:48 +01:00
Tom Payerle
d82bdb3bf7 seacas: update recipe to find faodel (#40239)
Explcitly sets the CMake variables  Faodel_INCLUDE_DIRS and Faodel_LIBRARY_DIRS when +faodel.
This seems to be needed for recent versions of seacas (seacas@2021-04-02:), but should be safe
to do for all versions.

For Faodel_INCLUDE_DIRS, it looks like Faodel has header files under $(Faodel_Prefix)/include/faodel,
but seacas is not including the "faodel" part in #includes.  So add both $(Faodel_Prefix)/include
and $(Foadel_Prefix)/include/faodel

Co-authored-by: payerle <payerle@users.noreply.github.com>
2024-11-28 09:17:44 +01:00
Matt Thompson
a042bdfe0b mapl: add hpcx-mpi (#47793) 2024-11-28 09:15:25 +01:00
Adam J. Stewart
60e3e645e8 py-joblib: add v1.4.2 (#47789) 2024-11-28 08:28:44 +01:00
Chris Marsh
51785437bc Patch to fix building gcc@14.2 on darwin. Fixes #45628 (#47830) 2024-11-27 20:58:18 -07:00
dependabot[bot]
2e8db0815d build(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 (#47819)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](4f58ea7922...48aba3b46d)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-27 16:29:41 -07:00
George Malerbo
8a6428746f raylib: add v5.5 (#47708)
* Add version 5.5 in package.py

* Update package.py
2024-11-27 16:25:22 -07:00
Adam J. Stewart
6b9c099af8 py-keras: add v3.7.0 (#47816) 2024-11-27 16:12:47 -07:00
Derek Ryan Strong
30814fb4e0 Deprecate rsync releases before v3.2.5 (#47820) 2024-11-27 16:14:34 -06:00
Harmen Stoppels
3194be2e92 gcc-runtime: remove libz.so from libgfortran.so if present (#47812) 2024-11-27 22:32:37 +01:00
snehring
41be2f5899 ltr-retriever: changing directory layout (#38513) 2024-11-27 14:16:57 -07:00
kwryankrattiger
02af41ebb3 gdk-pixbuf: Point at gitlab instead of broken mirror (#47825) 2024-11-27 15:13:55 -06:00
snehring
9d33c89030 r-rsamtools: add -lz to Makevars (#38649) 2024-11-27 13:44:48 -07:00
Erik Heeren
51ab7bad3b julia: conflict for %gcc@12: support (#35931) 2024-11-27 04:31:44 -07:00
kwryankrattiger
0b094f2473 Docs: Reference 7z requirement on Windows (#35943) 2024-11-26 17:11:12 -05:00
Christoph Junghans
cd306d0bc6 all-libary: add voronoi support and git version (#47798)
* all-libary: add voronoi support and git version

---------

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2024-11-26 14:56:22 -07:00
Dom Heinzeller
fdb9cf2412 Intel/oneapi compilers: correct version ranges for diab-disable flag (#47428)
* c/c++ flags should have been modified for all 2023.x.y versions, but
  upper bound was too low
* Fortran flags should have been modified for all 2024.x.y versions, but
  likewise the upper bound was too low
2024-11-26 12:34:37 -07:00
etiennemlb
a546441d2e siesta: remove link args on a non-declared dependency (#46080) 2024-11-26 20:25:04 +01:00
IHuismann
141cdb6810 adol-c: fix libs property (#36614) 2024-11-26 17:01:18 +01:00
Brian Van Essen
f2ab74efe5 cray: add further versions of Cray packages. (#37733) 2024-11-26 16:59:53 +01:00
Martin Aumüller
38b838e405 openscenegraph: remove X11 dependencies for macos (#39037) 2024-11-26 16:59:10 +01:00
Mark Abraham
c037188b59 gromacs: announce deprecation policy and start to implement (#47804)
* gromacs: announce deprecation policy and start to implement

* Style it up

* [@spackbot] updating style on behalf of mabraham

* Bump versions used in CI

---------

Co-authored-by: mabraham <mabraham@users.noreply.github.com>
2024-11-26 05:54:07 -07:00
Mark Abraham
0835a3c5f2 gromacs: obtain SYCL from either ACpp or intel-oneapi-runtime (#47806) 2024-11-26 05:51:54 -07:00
Mark Abraham
38a2f9c2f2 gromacs: Improve HeFFTe dependency (#47805)
GROMACS supports HeFFTe with either SYCL or CUDA build and requires
a matching HeFFTe build
2024-11-26 05:50:41 -07:00
Massimiliano Culpo
eecd4afe58 gromacs: fix the value used for the ITT directory (#47795) 2024-11-26 08:14:45 +01:00
Seth R. Johnson
83624551e0 ROOT: default to +aqua~x on macOS (#47792) 2024-11-25 14:27:38 -06:00
Victor A. P. Magri
741652caa1 caliper: add "tools" variant (#47779) 2024-11-25 18:26:53 +01:00
Mark Abraham
8e914308f0 gromacs: add itt variant (#47764)
Permit configuring GROMACS with support for mdrun to trace its timing
regions by calling the ITT API. This permits tools like VTune and
unitrace to augment their analysis with GROMACS-specific annotation.
2024-11-25 16:12:55 +01:00
Mikael Simberg
3c220d0989 apex: add 2.7.0 (#47736) 2024-11-25 13:22:16 +01:00
Wouter Deconinck
8094fa1e2f py-gradio: add v5.1.0 (and add/update dependencies) (fix CVEs) (#47504)
* py-pdm-backend: add v2.4.3
* py-starlette: add v0.28.0, v0.32.0, v0.35.1, v0.36.3, v0.37.2, v0.41.2
* py-fastapi: add v0.110.2, v0.115.4
* py-pydantic-extra-types: add v2.10.0
* py-pydantic-settings: add v2.6.1
* py-python-multipart: add v0.0.17
* py-email-validator: add v2.2.0
2024-11-25 13:07:56 +01:00
Massimiliano Culpo
5c67051980 Add missing C/C++ dependencies (#47782) 2024-11-25 12:56:39 +01:00
John W. Parent
c01fb9a6d2 Add CMake 3.31 minor release (#47676) 2024-11-25 04:32:57 -07:00
Harmen Stoppels
bf12bb57e7 install_test: first look at builder, then package (#47735) 2024-11-25 11:53:28 +01:00
Wouter Deconinck
406c73ae11 py-boto*: add v1.34.162 (#47528)
Co-authored-by: wdconinc <wdconinc@users.noreply.github.com>
2024-11-25 11:39:09 +01:00
Wouter Deconinck
3f50ccfcdd py-azure-*: updated versions (#47525) 2024-11-25 11:38:49 +01:00
Wouter Deconinck
9883a2144d py-quart: add v0.19.8 (#47508)
Co-authored-by: wdconinc <wdconinc@users.noreply.github.com>
2024-11-25 11:38:22 +01:00
Wouter Deconinck
94815d2227 py-netifaces: add v0.10.9, v0.11.0 (#47451) 2024-11-25 11:37:41 +01:00
Wouter Deconinck
a15563f890 py-werkzeug: add v3.1.3 (and deprecate older versions) (#47507)
Co-authored-by: wdconinc <wdconinc@users.noreply.github.com>
2024-11-25 11:28:01 +01:00
Wouter Deconinck
ac2ede8d2f py-pyzmq: add v25.1.2, v26.0.3, v26.1.1, v26.2.0 (switch to py-scikit-build-core) (#44493) 2024-11-25 11:00:00 +01:00
david-edwards-linaro
b256a7c50d linaro-forge: remove v21.1.3 (#47688) 2024-11-25 10:53:27 +01:00
Szabolcs Horvát
21e10d6d98 igraph: add v0.10.15 (#47692) 2024-11-25 10:51:24 +01:00
afzpatel
ed39967848 rocm-tensile: add 6.2.1 (#47702) 2024-11-25 10:40:21 +01:00
Alex Richert
eda0c6888e ip: add cmake version requirement for @5.1: (#47754) 2024-11-25 02:38:08 -07:00
94 changed files with 1043 additions and 338 deletions

View File

@@ -120,7 +120,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build & Deploy ${{ matrix.dockerfile[0] }}
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355
with:
context: dockerfiles/${{ matrix.dockerfile[0] }}
platforms: ${{ matrix.dockerfile[1] }}

View File

@@ -21,7 +21,6 @@ packages:
armci: [armcimpi]
blas: [openblas, amdblis]
c: [gcc]
cub-api: [cub]
cxx: [gcc]
D: [ldc]
daal: [intel-oneapi-daal]

View File

@@ -1326,6 +1326,7 @@ Required:
* Microsoft Visual Studio
* Python
* Git
* 7z
Optional:
* Intel Fortran (needed for some packages)
@@ -1391,6 +1392,13 @@ as the project providing Git support on Windows. This is additionally the recomm
for installing Git on Windows, a link to which can be found above. Spack requires the
utilities vendored by this project.
"""
7zip
"""
A tool for extracting ``.xz`` files is required for extracting source tarballs. The latest 7zip
can be located at https://sourceforge.net/projects/sevenzip/.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step 2: Install and setup Spack
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -24,6 +24,7 @@
Callable,
Deque,
Dict,
Generator,
Iterable,
List,
Match,
@@ -2838,6 +2839,25 @@ def temporary_dir(
remove_directory_contents(tmp_dir)
@contextmanager
def edit_in_place_through_temporary_file(file_path: str) -> Generator[str, None, None]:
"""Context manager for modifying ``file_path`` in place, preserving its inode and hardlinks,
for functions or external tools that do not support in-place editing. Notice that this function
is unsafe in that it works with paths instead of a file descriptors, but this is by design,
since we assume the call site will create a new inode at the same path."""
tmp_fd, tmp_path = tempfile.mkstemp(
dir=os.path.dirname(file_path), prefix=f"{os.path.basename(file_path)}."
)
# windows cannot replace a file with open fds, so close since the call site needs to replace.
os.close(tmp_fd)
try:
shutil.copyfile(file_path, tmp_path, follow_symlinks=True)
yield tmp_path
shutil.copyfile(tmp_path, file_path, follow_symlinks=True)
finally:
os.unlink(tmp_path)
def filesummary(path, print_bytes=16) -> Tuple[int, bytes]:
"""Create a small summary of the given file. Does not error
when file does not exist.

View File

@@ -2334,7 +2334,9 @@ def is_backup_file(file):
if not codesign:
return
for binary in changed_files:
codesign("-fs-", binary)
# preserve the original inode by running codesign on a copy
with fsys.edit_in_place_through_temporary_file(binary) as tmp_binary:
codesign("-fs-", tmp_binary)
# If we are installing back to the same location
# relocate the sbang location if the spack directory changed

View File

@@ -9,7 +9,7 @@
import re
import sys
from itertools import chain
from typing import Any, List, Optional, Set, Tuple
from typing import Any, List, Optional, Tuple
import llnl.util.filesystem as fs
from llnl.util.lang import stable_partition
@@ -21,6 +21,7 @@
import spack.phase_callbacks
import spack.spec
import spack.util.prefix
from spack import traverse
from spack.directives import build_system, conflicts, depends_on, variant
from spack.multimethod import when
from spack.util.environment import filter_system_paths
@@ -166,15 +167,18 @@ def _values(x):
def get_cmake_prefix_path(pkg: spack.package_base.PackageBase) -> List[str]:
"""Obtain the CMAKE_PREFIX_PATH entries for a package, based on the cmake_prefix_path package
attribute of direct build/test and transitive link dependencies."""
# Add direct build/test deps
selected: Set[str] = {s.dag_hash() for s in pkg.spec.dependencies(deptype=dt.BUILD | dt.TEST)}
# Add transitive link deps
selected.update(s.dag_hash() for s in pkg.spec.traverse(root=False, deptype=dt.LINK))
# Separate out externals so they do not shadow Spack prefixes
externals, spack_built = stable_partition(
(s for s in pkg.spec.traverse(root=False, order="topo") if s.dag_hash() in selected),
lambda x: x.external,
edges = traverse.traverse_topo_edges_generator(
traverse.with_artificial_edges([pkg.spec]),
visitor=traverse.MixedDepthVisitor(
direct=dt.BUILD | dt.TEST, transitive=dt.LINK | dt.RUN, key=traverse.by_dag_hash
),
key=traverse.by_dag_hash,
root=False,
all_edges=False, # cover all nodes, not all edges
)
ordered_specs = [edge.spec for edge in edges]
# Separate out externals so they do not shadow Spack prefixes
externals, spack_built = stable_partition((s for s in ordered_specs), lambda x: x.external)
return filter_system_paths(
path for spec in chain(spack_built, externals) for path in spec.package.cmake_prefix_paths

View File

@@ -124,8 +124,8 @@ def setup_custom_environment(self, pkg, env):
# Edge cases for Intel's oneAPI compilers when using the legacy classic compilers:
# Always pass flags to disable deprecation warnings, since these warnings can
# confuse tools that parse the output of compiler commands (e.g. version checks).
if self.real_version >= Version("2021") and self.real_version <= Version("2023"):
if self.real_version >= Version("2021") and self.real_version < Version("2024"):
env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441")
env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441")
if self.real_version >= Version("2021") and self.real_version <= Version("2024"):
if self.real_version >= Version("2021") and self.real_version < Version("2025"):
env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448")

View File

@@ -155,10 +155,10 @@ def setup_custom_environment(self, pkg, env):
# icx+icpx+ifx or icx+icpx+ifort. But to be on the safe side (some users may
# want to try to swap icpx against icpc, for example), and since the Intel LLVM
# compilers accept these diag-disable flags, we apply them for all compilers.
if self.real_version >= Version("2021") and self.real_version <= Version("2023"):
if self.real_version >= Version("2021") and self.real_version < Version("2024"):
env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441")
env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441")
if self.real_version >= Version("2021") and self.real_version <= Version("2024"):
if self.real_version >= Version("2021") and self.real_version < Version("2025"):
env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448")
# 2024 release bumped the libsycl version because of an ABI

View File

@@ -375,23 +375,16 @@ def phase_tests(self, builder, phase_name: str, method_names: List[str]):
for name in method_names:
try:
# Prefer the method in the package over the builder's.
# We need this primarily to pick up arbitrarily named test
# methods but also some build-time checks.
fn = getattr(builder.pkg, name, getattr(builder, name))
msg = f"RUN-TESTS: {phase_name}-time tests [{name}]"
print_message(logger, msg, verbose)
fn()
fn = getattr(builder, name, None) or getattr(builder.pkg, name)
except AttributeError as e:
msg = f"RUN-TESTS: method not implemented [{name}]"
print_message(logger, msg, verbose)
self.add_failure(e, msg)
print_message(logger, f"RUN-TESTS: method not implemented [{name}]", verbose)
self.add_failure(e, f"RUN-TESTS: method not implemented [{name}]")
if fail_fast:
break
continue
print_message(logger, f"RUN-TESTS: {phase_name}-time tests [{name}]", verbose)
fn()
if have_tests:
print_message(logger, "Completed testing", verbose)

View File

@@ -13,6 +13,7 @@
import macholib.mach_o
import macholib.MachO
import llnl.util.filesystem as fs
import llnl.util.lang
import llnl.util.tty as tty
from llnl.util.lang import memoized
@@ -275,10 +276,10 @@ def modify_macho_object(cur_path, rpaths, deps, idpath, paths_to_paths):
# Deduplicate and flatten
args = list(itertools.chain.from_iterable(llnl.util.lang.dedupe(args)))
install_name_tool = executable.Executable("install_name_tool")
if args:
args.append(str(cur_path))
install_name_tool = executable.Executable("install_name_tool")
install_name_tool(*args)
with fs.edit_in_place_through_temporary_file(cur_path) as temp_path:
install_name_tool(*args, temp_path)
def macholib_get_paths(cur_path):
@@ -717,8 +718,8 @@ def fixup_macos_rpath(root, filename):
# No fixes needed
return False
args.append(abspath)
executable.Executable("install_name_tool")(*args)
with fs.edit_in_place_through_temporary_file(abspath) as temp_path:
executable.Executable("install_name_tool")(*args, temp_path)
return True

View File

@@ -1249,3 +1249,14 @@ def test_find_input_types(tmp_path: pathlib.Path):
with pytest.raises(TypeError):
fs.find(1, "file.txt") # type: ignore
def test_edit_in_place_through_temporary_file(tmp_path):
(tmp_path / "example.txt").write_text("Hello")
current_ino = os.stat(tmp_path / "example.txt").st_ino
with fs.edit_in_place_through_temporary_file(tmp_path / "example.txt") as temporary:
os.unlink(temporary)
with open(temporary, "w") as f:
f.write("World")
assert (tmp_path / "example.txt").read_text() == "World"
assert os.stat(tmp_path / "example.txt").st_ino == current_ino

View File

@@ -20,9 +20,8 @@ def create_dag(nodes, edges):
"""
specs = {name: Spec(name) for name in nodes}
for parent, child, deptypes in edges:
specs[parent].add_dependency_edge(
specs[child], depflag=dt.canonicalize(deptypes), virtuals=()
)
depflag = deptypes if isinstance(deptypes, dt.DepFlag) else dt.canonicalize(deptypes)
specs[parent].add_dependency_edge(specs[child], depflag=depflag, virtuals=())
return specs
@@ -454,3 +453,61 @@ def test_topo_is_bfs_for_trees(cover):
assert list(traverse.traverse_nodes([binary_tree["A"]], order="topo", cover=cover)) == list(
traverse.traverse_nodes([binary_tree["A"]], order="breadth", cover=cover)
)
@pytest.mark.parametrize("roots", [["A"], ["A", "B"], ["B", "A"], ["A", "B", "A"]])
@pytest.mark.parametrize("order", ["breadth", "post", "pre"])
@pytest.mark.parametrize("include_root", [True, False])
def test_mixed_depth_visitor(roots, order, include_root):
"""Test that the MixedDepthVisitor lists unique edges that are reachable either directly from
roots through build type edges, or transitively through link type edges. The tests ensures that
unique edges are listed exactly once."""
my_graph = create_dag(
nodes=["A", "B", "C", "D", "E", "F", "G", "H", "I"],
edges=(
("A", "B", dt.LINK | dt.RUN),
("A", "C", dt.BUILD),
("A", "D", dt.BUILD | dt.RUN),
("A", "H", dt.LINK),
("A", "I", dt.RUN),
("B", "D", dt.BUILD | dt.LINK),
("C", "E", dt.BUILD | dt.LINK | dt.RUN),
("D", "F", dt.LINK),
("D", "G", dt.BUILD | dt.RUN),
("H", "B", dt.LINK),
),
)
starting_points = traverse.with_artificial_edges([my_graph[root] for root in roots])
visitor = traverse.MixedDepthVisitor(direct=dt.BUILD, transitive=dt.LINK)
if order == "pre":
edges = traverse.traverse_depth_first_edges_generator(
starting_points, visitor, post_order=False, root=include_root
)
elif order == "post":
edges = traverse.traverse_depth_first_edges_generator(
starting_points, visitor, post_order=True, root=include_root
)
elif order == "breadth":
edges = traverse.traverse_breadth_first_edges_generator(
starting_points, visitor, root=include_root
)
artificial_edges = [(None, root) for root in roots] if include_root else []
simple_edges = [
(None if edge.parent is None else edge.parent.name, edge.spec.name) for edge in edges
]
# make sure that every edge is listed exactly once and that the right edges are listed
assert len(simple_edges) == len(set(simple_edges))
assert set(simple_edges) == {
# the roots
*artificial_edges,
("A", "B"),
("A", "C"),
("A", "D"),
("A", "H"),
("B", "D"),
("D", "F"),
("H", "B"),
}

View File

@@ -4,7 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from collections import defaultdict
from typing import NamedTuple, Union
from typing import Any, Callable, List, NamedTuple, Set, Union
import spack.deptypes as dt
import spack.spec
@@ -115,6 +115,64 @@ def neighbors(self, item):
return self.visitor.neighbors(item)
class MixedDepthVisitor:
"""Visits all unique edges of the sub-DAG induced by direct dependencies of type ``direct``
and transitive dependencies of type ``transitive``. An example use for this is traversing build
type dependencies non-recursively, and link dependencies recursively."""
def __init__(
self,
*,
direct: dt.DepFlag,
transitive: dt.DepFlag,
key: Callable[["spack.spec.Spec"], Any] = id,
) -> None:
self.direct_type = direct
self.transitive_type = transitive
self.key = key
self.seen: Set[Any] = set()
self.seen_roots: Set[Any] = set()
def accept(self, item: EdgeAndDepth) -> bool:
# Do not accept duplicate root nodes. This only happens if the user starts iterating from
# multiple roots and lists one of the roots multiple times.
if item.edge.parent is None:
node_id = self.key(item.edge.spec)
if node_id in self.seen_roots:
return False
self.seen_roots.add(node_id)
return True
def neighbors(self, item: EdgeAndDepth) -> List[EdgeAndDepth]:
# If we're here through an artificial source node, it's a root, and we return all
# direct_type and transitive_type edges. If we're here through a transitive_type edge, we
# return all transitive_type edges. To avoid returning the same edge twice:
# 1. If we had already encountered the current node through a transitive_type edge, we
# don't need to return transitive_type edges again.
# 2. If we encounter the current node through a direct_type edge, and we had already seen
# it through a transitive_type edge, only return the non-transitive_type, direct_type
# edges.
node_id = self.key(item.edge.spec)
seen = node_id in self.seen
is_root = item.edge.parent is None
follow_transitive = is_root or bool(item.edge.depflag & self.transitive_type)
follow = self.direct_type if is_root else dt.NONE
if follow_transitive and not seen:
follow |= self.transitive_type
self.seen.add(node_id)
elif follow == dt.NONE:
return []
edges = item.edge.spec.edges_to_dependencies(depflag=follow)
# filter direct_type edges already followed before becuase they were also transitive_type.
if seen:
edges = [edge for edge in edges if not edge.depflag & self.transitive_type]
return sort_edges(edges)
def get_visitor_from_args(
cover, direction, depflag: Union[dt.DepFlag, dt.DepTypes], key=id, visited=None, visitor=None
):
@@ -342,9 +400,7 @@ def traverse_topo_edges_generator(edges, visitor, key=id, root=True, all_edges=F
# maps parent identifier to a list of edges, where None is a special identifier
# for the artificial root/source.
node_to_edges = defaultdict(list)
for edge in traverse_breadth_first_edges_generator(
edges, CoverEdgesVisitor(visitor, key=key), root=True, depth=False
):
for edge in traverse_breadth_first_edges_generator(edges, visitor, root=True, depth=False):
in_edge_count[key(edge.spec)] += 1
parent_id = key(edge.parent) if edge.parent is not None else None
node_to_edges[parent_id].append(edge)
@@ -422,9 +478,9 @@ def traverse_edges(
elif order not in ("post", "pre", "breadth"):
raise ValueError(f"Unknown order {order}")
# In topo traversal we need to construct a sub-DAG including all edges even if we are yielding
# a subset of them, hence "paths".
_cover = "paths" if order == "topo" else cover
# In topo traversal we need to construct a sub-DAG including all unique edges even if we are
# yielding a subset of them, hence "edges".
_cover = "edges" if order == "topo" else cover
visitor = get_visitor_from_args(_cover, direction, deptype, key, visited)
root_edges = with_artificial_edges(specs)

View File

@@ -7,7 +7,7 @@
import re
import struct
from struct import calcsize, unpack, unpack_from
from typing import BinaryIO, Dict, List, NamedTuple, Optional, Pattern, Tuple
from typing import BinaryIO, Callable, Dict, List, NamedTuple, Optional, Pattern, Tuple
class ElfHeader(NamedTuple):
@@ -476,6 +476,31 @@ def get_interpreter(path: str) -> Optional[str]:
return None
def _delete_dynamic_array_entry(
f: BinaryIO, elf: ElfFile, should_delete: Callable[[int, int], bool]
) -> None:
f.seek(elf.pt_dynamic_p_offset)
dynamic_array_fmt = elf.byte_order + ("qQ" if elf.is_64_bit else "lL")
dynamic_array_size = calcsize(dynamic_array_fmt)
new_offset = elf.pt_dynamic_p_offset # points to the new dynamic array
old_offset = elf.pt_dynamic_p_offset # points to the current dynamic array
for _ in range(elf.pt_dynamic_p_filesz // dynamic_array_size):
data = read_exactly(f, dynamic_array_size, "Malformed dynamic array entry")
tag, val = unpack(dynamic_array_fmt, data)
if tag == ELF_CONSTANTS.DT_NULL or not should_delete(tag, val):
if new_offset != old_offset:
f.seek(new_offset)
f.write(data)
f.seek(old_offset + dynamic_array_size)
new_offset += dynamic_array_size
if tag == ELF_CONSTANTS.DT_NULL:
break
old_offset += dynamic_array_size
def delete_rpath(path: str) -> None:
"""Modifies a binary to remove the rpath. It zeros out the rpath string and also drops the
DT_R(UN)PATH entry from the dynamic section, so it doesn't show up in 'readelf -d file', nor
@@ -492,29 +517,22 @@ def delete_rpath(path: str) -> None:
f.seek(rpath_offset)
f.write(new_rpath_string)
# Next update the dynamic array
f.seek(elf.pt_dynamic_p_offset)
dynamic_array_fmt = elf.byte_order + ("qQ" if elf.is_64_bit else "lL")
dynamic_array_size = calcsize(dynamic_array_fmt)
new_offset = elf.pt_dynamic_p_offset # points to the new dynamic array
old_offset = elf.pt_dynamic_p_offset # points to the current dynamic array
for _ in range(elf.pt_dynamic_p_filesz // dynamic_array_size):
data = read_exactly(f, dynamic_array_size, "Malformed dynamic array entry")
tag, _ = unpack(dynamic_array_fmt, data)
# Delete DT_RPATH / DT_RUNPATH entries from the dynamic section
_delete_dynamic_array_entry(
f, elf, lambda tag, _: tag == ELF_CONSTANTS.DT_RPATH or tag == ELF_CONSTANTS.DT_RUNPATH
)
# Overwrite any entry that is not DT_RPATH or DT_RUNPATH, including DT_NULL
if tag != ELF_CONSTANTS.DT_RPATH and tag != ELF_CONSTANTS.DT_RUNPATH:
if new_offset != old_offset:
f.seek(new_offset)
f.write(data)
f.seek(old_offset + dynamic_array_size)
new_offset += dynamic_array_size
# End of the dynamic array
if tag == ELF_CONSTANTS.DT_NULL:
break
def delete_needed_from_elf(f: BinaryIO, elf: ElfFile, needed: bytes) -> None:
"""Delete a needed library from the dynamic section of an ELF file"""
if not elf.has_needed or needed not in elf.dt_needed_strs:
return
old_offset += dynamic_array_size
offset = elf.dt_needed_strtab_offsets[elf.dt_needed_strs.index(needed)]
_delete_dynamic_array_entry(
f, elf, lambda tag, val: tag == ELF_CONSTANTS.DT_NEEDED and val == offset
)
class CStringType:

View File

@@ -13,7 +13,7 @@
import sys
from llnl.util import tty
from llnl.util.filesystem import join_path
from llnl.util.filesystem import edit_in_place_through_temporary_file
from llnl.util.lang import memoized
from spack.util.executable import Executable, which
@@ -81,12 +81,11 @@ def fix_darwin_install_name(path):
Parameters:
path (str): directory in which .dylib files are located
"""
libs = glob.glob(join_path(path, "*.dylib"))
libs = glob.glob(os.path.join(path, "*.dylib"))
install_name_tool = Executable("install_name_tool")
otool = Executable("otool")
for lib in libs:
# fix install name first:
install_name_tool = Executable("install_name_tool")
install_name_tool("-id", lib, lib)
otool = Executable("otool")
args = ["-id", lib]
long_deps = otool("-L", lib, output=str).split("\n")
deps = [dep.partition(" ")[0][1::] for dep in long_deps[2:-1]]
# fix all dependencies:
@@ -98,5 +97,8 @@ def fix_darwin_install_name(path):
# but we don't know builddir (nor how symbolic links look
# in builddir). We thus only compare the basenames.
if os.path.basename(dep) == os.path.basename(loc):
install_name_tool("-change", dep, loc, lib)
args.extend(("-change", dep, loc))
break
with edit_in_place_through_temporary_file(lib) as tmp:
install_name_tool(*args, tmp)

View File

@@ -8,8 +8,8 @@ packages:
gromacs:
require:
- one_of:
- "gromacs@2021.3 %arm ^fftw ^openmpi"
- "gromacs@2021.3 %gcc ^armpl-gcc ^openmpi"
- "gromacs@2024.3 %arm ^fftw ^openmpi"
- "gromacs@2024.3 %gcc ^armpl-gcc ^openmpi"
libfabric:
buildable: true
externals:

View File

@@ -153,3 +153,8 @@ def install_additional_files(self):
join_path(source_directory, "ADOL-C", "examples", "additional_examples")
):
Executable("./checkpointing/checkpointing")()
@property
def libs(self):
"""The name of the library differs from the package name => own libs handling."""
return find_libraries(["libadolc"], root=self.prefix, shared=True, recursive=True)

View File

@@ -15,21 +15,30 @@ class AllLibrary(CMakePackage):
homepage = "http://slms.pages.jsc.fz-juelich.de/websites/all-website/"
url = "https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing/-/archive/v0.9.2/loadbalancing-v0.9.2.tar.gz"
git = "https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing.git"
maintainers("junghans")
license("BSD-3-Clause", checked_by="junghans")
version("master", branch="master")
version("0.9.2", sha256="2b4ef52c604c3c0c467712d0912a33c82177610b67edc14df1e034779c6ddb71")
variant("fortran", default=False, description="Build with fortran support")
variant("shared", default=True, description="Build shared libraries")
variant("vtk", default=False, description="Build with vtk support")
variant(
"voronoi",
default=False,
description="Enable voronoi-based loadbalancing scheme",
when="@0.9.3:",
)
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build", when="+fortran")
depends_on("vtk", when="+vtk")
depends_on("voropp", when="+voronoi")
depends_on("mpi")
@@ -39,6 +48,7 @@ def cmake_args(self):
self.define_from_variant("CM_ALL_FORTRAN", "fortran"),
self.define_from_variant("CM_ALL_USE_F08", "fortran"),
self.define_from_variant("CM_ALL_VTK_OUTPUT", "vtk"),
self.define_from_variant("CM_ALL_VORONOI", "voronoi"),
]
if self.run_tests:

View File

@@ -18,6 +18,7 @@ class Apex(CMakePackage):
version("develop", branch="develop")
version("master", branch="master")
version("2.7.0", sha256="81cd7e8dbea35cec2360d6404e20f7527f66410614f06a73c8c782ac2cfdb0b0")
version("2.6.5", sha256="2ba29a1198c904ac209fc6bc02962304a1416443b249f34ef96889aff39644ce")
version("2.6.4", sha256="281a673f447762a488577beaa60e48d88cb6354f220457cf8f05c1de2e1fce70")
version("2.6.3", sha256="7fef12937d3bd1271a01abe44cb931b1d63823fb5c74287a332f3012ed7297d5")

View File

@@ -17,16 +17,12 @@ class Bitgroomingz(CMakePackage):
version("master", branch="master")
version("2022-10-14", commit="a018b20cca9f7d6a5396ab36230e4be6ae1cb25b")
depends_on("c", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
variant("shared", default=True, description="build shared libs")
depends_on("zlib-api")
def cmake_args(self):
args = []
if self.spec.satisfies("+shared"):
args.append("-DBUILD_SHARED_LIBS=ON")
else:
args.append("-DBUILD_SHARED_LIBS=OFF")
return args
return [self.define_from_variant("BUILD_SHARED_LIBS", "shared")]

View File

@@ -101,6 +101,8 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage):
variant("vtune", default=False, description="Enable Intel Vtune support")
variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support")
variant("tests", default=False, description="Enable tests")
variant("tools", default=True, description="Enable tools")
# TODO change the 'when' argument for the next release of Caliper
variant("python", default=False, when="@master", description="Build Python bindings")
@@ -156,6 +158,7 @@ def initconfig_compiler_entries(self):
entries.append(cmake_cache_option("BUILD_SHARED_LIBS", spec.satisfies("+shared")))
entries.append(cmake_cache_option("BUILD_TESTING", spec.satisfies("+tests")))
entries.append(cmake_cache_option("WITH_TOOLS", spec.satisfies("+tools")))
entries.append(cmake_cache_option("BUILD_DOCS", False))
entries.append(cmake_cache_path("PYTHON_EXECUTABLE", spec["python"].command.path))

View File

@@ -63,7 +63,7 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage):
variant("omptarget", default=False, description="Build with OpenMP Target support")
variant("sycl", default=False, description="Build with Sycl support")
depends_on("cub-api", when="+cuda")
depends_on("cub", when="+cuda")
depends_on("blt", type="build")
depends_on("blt@0.6.2:", type="build", when="@2024.02.1:")

View File

@@ -31,6 +31,7 @@ class Cmake(Package):
license("BSD-3-Clause")
version("master", branch="master")
version("3.31.0", sha256="300b71db6d69dcc1ab7c5aae61cbc1aa2778a3e00cbd918bc720203e311468c3")
version("3.30.5", sha256="9f55e1a40508f2f29b7e065fa08c29f82c402fa0402da839fffe64a25755a86d")
version("3.30.4", sha256="c759c97274f1e7aaaafcb1f0d261f9de9bf3a5d6ecb7e2df616324a46fe704b2")
version("3.30.3", sha256="6d5de15b6715091df7f5441007425264bdd477809f80333fdf95f846aaff88e4")

View File

@@ -13,6 +13,8 @@ class CrayLibsci(Package):
homepage = "https://docs.nersc.gov/development/libraries/libsci/"
has_code = False # Skip attempts to fetch source that is not available
version("23.02.1.1")
version("22.11.1.2")
version("21.08.1.2")
version("20.06.1")
version("20.03.1")

View File

@@ -18,6 +18,10 @@ class CrayMpich(Package):
maintainers("haampie")
version("8.1.25")
version("8.1.24")
version("8.1.21")
version("8.1.14")
version("8.1.7")
version("8.1.0")
version("8.0.16")

View File

@@ -42,8 +42,6 @@ class Cub(Package):
version("1.7.1", sha256="50b8777b83093fdfdab429a61fccdbfbbb991b3bbc08385118e5ad58e8f62e1d")
version("1.4.1", sha256="7c3784cf59f02d4a88099d6a11e357032bac9eac2b9c78aaec947d1270e21871")
provides("cub-api")
def setup_dependent_build_environment(self, env, dependent_spec):
env.set("CUB_DIR", self.prefix.include.cub.cmake)

View File

@@ -702,47 +702,6 @@ class Cuda(Package):
provides("opencl@:1.2", when="@7:")
provides("opencl@:1.1", when="@:6")
for cuda_ver, cub_ver in [
["12.6.3", "2.5.0"],
["12.6.2", "2.5.0"],
["12.6.1", "2.5.0"],
["12.6.0", "2.5.0"],
["12.5.1", "2.4.0"],
["12.5.0", "2.4.0"],
["12.4.1", "2.3.1"],
["12.4.0", "2.3.1"],
["12.3.2", "2.2.0"],
["12.3.1", "2.2.0"],
["12.3.0", "2.2.0"],
["12.2.2", "2.1.0"],
["12.2.1", "2.1.0"],
["12.2.0", "2.0.1"],
["12.1.1", "2.0.1"],
["12.1.0", "2.0.1"],
["12.0.1", "2.0.1"],
["12.0.0", "2.0.1"],
["11.8.0", "1.15.1"],
["11.7.1", "1.15.0"],
["11.7.0", "1.15.0"],
["11.6.2", "1.15.0"],
["11.6.1", "1.15.0"],
["11.6.0", "1.15.0"],
["11.5.2", "1.13.1"],
["11.5.1", "1.13.1"],
["11.5.0", "1.13.1"],
["11.4.4", "1.12.1"],
["11.4.3", "1.12.1"],
["11.4.2", "1.12.1"],
["11.4.1", "1.12.1"],
["11.4.0", "1.12.1"],
["11.3.1", "1.11.0"],
["11.3.0", "1.11.0"],
["11.2.2", "1.10.0"],
["11.2.1", "1.10.0"],
["11.2.0", "1.10.0"],
]:
provides(f"cub-api@{cub_ver}", when=f"@{cuda_ver}")
@classmethod
def determine_version(cls, exe):
output = Executable(exe)("--version", output=str, error=str)

View File

@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
@@ -126,6 +128,18 @@ class Dbcsr(CMakePackage, CudaPackage, ROCmPackage):
generator("ninja")
depends_on("ninja@1.10:", type="build")
@when("+rocm")
def patch(self):
for directory, subdirectory, files in os.walk(os.getcwd()):
for i in files:
file_path = os.path.join(directory, i)
filter_file("USE ISO_C_BINDING", "USE,INTRINSIC :: ISO_C_BINDING", file_path)
filter_file("USE ISO_FORTRAN_ENV", "USE,INTRINSIC :: ISO_FORTRAN_ENV", file_path)
filter_file("USE omp_lib", "USE,INTRINSIC :: omp_lib", file_path)
filter_file("USE OMP_LIB", "USE,INTRINSIC :: OMP_LIB", file_path)
filter_file("USE iso_c_binding", "USE,INTRINSIC :: iso_c_binding", file_path)
filter_file("USE iso_fortran_env", "USE,INTRINSIC :: iso_fortran_env", file_path)
def cmake_args(self):
spec = self.spec

View File

@@ -22,6 +22,11 @@ class Eospac(Package):
# previous stable release will appear first as a new beta.
# - alpha and beta versions are marked with 'deprecated=True' to help
# spack's version comparison.
version(
"6.5.12",
sha256="62d5f4a6a30c9acb426bd6bd972edc7fad392e5b941f950126ed0d3be5fd5162",
url="https://laws.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.5.12_39364aabc75c3312022b12e6d16d6a31f1f8945f.tgz",
)
version(
"6.5.11",
sha256="ed821b5a1bf45df1443d5f72d86190317ed9f5bad6a7c73e23bb4365bd76e24c",

View File

@@ -30,7 +30,8 @@ class Fftx(CMakePackage, CudaPackage, ROCmPackage):
version("1.1.0", sha256="a6f95605abc11460bbf51839727a456a31488e27e12a970fc29a1b8c42f4e3b5")
version("1.0.3", sha256="b5ff275facce4a2fbabd0aecc65dd55b744794f2e07cd8cfa91363001c664896")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("spiral-software+fftx+simt+jit+mpi")
# depend only on spiral-software, but spiral-software must be installed with variants:

View File

@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import glob
import os
import re
@@ -11,7 +12,7 @@
from llnl.util import tty
from spack.package import *
from spack.util.elf import parse_elf
from spack.util.elf import delete_needed_from_elf, parse_elf
class GccRuntime(Package):
@@ -72,6 +73,9 @@ def install(self, spec, prefix):
for path, name in libraries:
install(path, os.path.join(prefix.lib, name))
if spec.platform in ("linux", "freebsd"):
_drop_libgfortran_zlib(prefix.lib)
def _get_libraries_macho(self):
"""Same as _get_libraries_elf but for Mach-O binaries"""
cc = Executable(self.compiler.cc)
@@ -124,6 +128,22 @@ def headers(self):
return HeaderList([])
def _drop_libgfortran_zlib(lib_dir: str) -> None:
"""Due to a bug in GCC's autotools setup (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87182),
libz sometimes appears as a redundant system dependency of libgfortran. Delete it."""
libraries = glob.glob(os.path.join(lib_dir, "libgfortran*.so*"))
if len(libraries) == 0:
return
with open(libraries[0], "rb+") as f:
elf = parse_elf(f, dynamic_section=True)
if not elf.has_needed:
return
libz = next((x for x in elf.dt_needed_strs if x.startswith(b"libz.so")), None)
if libz is None:
return
delete_needed_from_elf(f, elf, libz)
def get_elf_libraries(compiler, libraries):
"""Get the GCC runtime libraries for ELF binaries"""
cc = Executable(compiler.cc)

View File

@@ -439,6 +439,11 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage):
sha256="1529cff128792fe197ede301a81b02036c8168cb0338df21e4bc7aafe755305a",
when="@14.1.0 target=aarch64:",
)
patch(
"https://raw.githubusercontent.com/Homebrew/formula-patches/f30c309442a60cfb926e780eae5d70571f8ab2cb/gcc/gcc-14.2.0-r2.diff",
sha256="6c0a4708f35ccf2275e6401197a491e3ad77f9f0f9ef5761860768fa6da14d3d",
when="@14.2.0 target=aarch64:",
)
conflicts("+bootstrap", when="@11.3.0,13.1: target=aarch64:")
# Use -headerpad_max_install_names in the build,

View File

@@ -12,33 +12,36 @@ class GdkPixbuf(MesonPackage):
GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3."""
homepage = "https://gitlab.gnome.org/GNOME/gdk-pixbuf"
url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz"
git = "https://gitlab.gnome.org/GNOME/gdk-pixbuf"
list_url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/"
url = "https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/archive/2.40.0/gdk-pixbuf-2.40.0.tar.gz"
# Falling back to the gitlab source since the mirror here seems to be broken
# url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz"
# list_url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/"
list_depth = 1
license("LGPL-2.1-or-later", checked_by="wdconinc")
version("2.42.12", sha256="b9505b3445b9a7e48ced34760c3bcb73e966df3ac94c95a148cb669ab748e3c7")
version("2.42.12", sha256="d41966831b3d291fcdfe31f683bea4b3f03241d591ddbe550b5db873af3da364")
# https://nvd.nist.gov/vuln/detail/CVE-2022-48622
version(
"2.42.10",
sha256="ee9b6c75d13ba096907a2e3c6b27b61bcd17f5c7ebeab5a5b439d2f2e39fe44b",
sha256="87a086c51d9705698b22bd598a795efaccf61e4db3a96f439dcb3cd90506dab8",
deprecated=True,
)
version(
"2.42.9",
sha256="28f7958e7bf29a32d4e963556d241d0a41a6786582ff6a5ad11665e0347fc962",
sha256="226d950375907857b23c5946ae6d30128f08cd75f65f14b14334c7a9fb686e36",
deprecated=True,
)
version(
"2.42.6",
sha256="c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f",
sha256="c4f3a84a04bc7c5f4fbd97dce7976ab648c60628f72ad4c7b79edce2bbdb494d",
deprecated=True,
)
version(
"2.42.2",
sha256="83c66a1cfd591d7680c144d2922c5955d38b4db336d7cd3ee109f7bcf9afef15",
sha256="249b977279f761979104d7befbb5ee23f1661e29d19a36da5875f3a97952d13f",
deprecated=True,
)

View File

@@ -27,11 +27,29 @@ class Gromacs(CMakePackage, CudaPackage):
url = "https://ftp.gromacs.org/gromacs/gromacs-2022.2.tar.gz"
list_url = "https://ftp.gromacs.org/gromacs"
git = "https://gitlab.com/gromacs/gromacs.git"
maintainers("mabraham", "eirrgang", "junghans")
license("GPL-2.0-or-later", when="@:4.5")
license("LGPL-2.1-or-later", when="@4.6:")
# Deprecation policy:
#
# GROMACS makes an annual major release and supports it with fixes
# in minor updates for about two years. Each such annual release
# series is supported in spack for those two years, then marked as
# deprecated in Spack. Deprecated versions can be removed after
# the next major release of GROMACS is supported in Spack. Users
# needing such an old version can either do a manual installation
# or get an older version of Spack.
#
# Exception: Version 2019.6 is the last version capable of tabulated
# interactions used in the so-called "group scheme." It will be marked
# as deprecated only after equivalent functionality is available in
# a major release of GROMACS, then removed as above.
#
# Exception: Otherwise, versions before 2022 will be removed when
# 2025 is supported.
version("main", branch="main")
version("master", branch="main", deprecated=True)
version("2024.3", sha256="bbda056ee59390be7d58d84c13a9ec0d4e3635617adf2eb747034922cba1f029")
@@ -51,45 +69,197 @@ class Gromacs(CMakePackage, CudaPackage):
version("2022.2", sha256="656404f884d2fa2244c97d2a5b92af148d0dbea94ad13004724b3fcbf45e01bf")
version("2022.1", sha256="85ddab5197d79524a702c4959c2c43be875e0fc471df3a35224939dce8512450")
version("2022", sha256="fad60d606c02e6164018692c6c9f2c159a9130c2bf32e8c5f4f1b6ba2dda2b68")
version("2021.7", sha256="4db7bbbfe5424de48373686ec0e8c5bfa7175d5cd74290ef1c1e840e6df67f06")
version("2021.6", sha256="52df2c1d7586fd028d9397985c68bd6dd26e6e905ead382b7e6c473d087902c3")
version("2021.5", sha256="eba63fe6106812f72711ef7f76447b12dd1ee6c81b3d8d4d0e3098cd9ea009b6")
version("2021.4", sha256="cb708a3e3e83abef5ba475fdb62ef8d42ce8868d68f52dafdb6702dc9742ba1d")
version("2021.3", sha256="e109856ec444768dfbde41f3059e3123abdb8fe56ca33b1a83f31ed4575a1cc6")
version("2021.2", sha256="d940d865ea91e78318043e71f229ce80d32b0dc578d64ee5aa2b1a4be801aadb")
version("2021.1", sha256="bc1d0a75c134e1fb003202262fe10d3d32c59bbb40d714bc3e5015c71effe1e5")
version("2021", sha256="efa78ab8409b0f5bf0fbca174fb8fbcf012815326b5c71a9d7c385cde9a8f87b")
version("2020.7", sha256="744158d8f61b0d36ffe89ec934519b7e0981a7af438897740160da648d36c2f0")
version("2020.6", sha256="d8bbe57ed3c9925a8cb99ecfe39e217f930bed47d5268a9e42b33da544bdb2ee")
version("2020.5", sha256="7b6aff647f7c8ee1bf12204d02cef7c55f44402a73195bd5f42cf11850616478")
version("2020.4", sha256="5519690321b5500c7951aaf53ff624042c3edd1a5f5d6dd1f2d802a3ecdbf4e6")
version("2020.3", sha256="903183691132db14e55b011305db4b6f4901cc4912d2c56c131edfef18cc92a9")
version("2020.2", sha256="7465e4cd616359d84489d919ec9e4b1aaf51f0a4296e693c249e83411b7bd2f3")
version("2020.1", sha256="e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf")
version("2020", sha256="477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01")
version(
"2021.7",
sha256="4db7bbbfe5424de48373686ec0e8c5bfa7175d5cd74290ef1c1e840e6df67f06",
deprecated=True,
)
version(
"2021.6",
sha256="52df2c1d7586fd028d9397985c68bd6dd26e6e905ead382b7e6c473d087902c3",
deprecated=True,
)
version(
"2021.5",
sha256="eba63fe6106812f72711ef7f76447b12dd1ee6c81b3d8d4d0e3098cd9ea009b6",
deprecated=True,
)
version(
"2021.4",
sha256="cb708a3e3e83abef5ba475fdb62ef8d42ce8868d68f52dafdb6702dc9742ba1d",
deprecated=True,
)
version(
"2021.3",
sha256="e109856ec444768dfbde41f3059e3123abdb8fe56ca33b1a83f31ed4575a1cc6",
deprecated=True,
)
version(
"2021.2",
sha256="d940d865ea91e78318043e71f229ce80d32b0dc578d64ee5aa2b1a4be801aadb",
deprecated=True,
)
version(
"2021.1",
sha256="bc1d0a75c134e1fb003202262fe10d3d32c59bbb40d714bc3e5015c71effe1e5",
deprecated=True,
)
version(
"2021",
sha256="efa78ab8409b0f5bf0fbca174fb8fbcf012815326b5c71a9d7c385cde9a8f87b",
deprecated=True,
)
version(
"2020.7",
sha256="744158d8f61b0d36ffe89ec934519b7e0981a7af438897740160da648d36c2f0",
deprecated=True,
)
version(
"2020.6",
sha256="d8bbe57ed3c9925a8cb99ecfe39e217f930bed47d5268a9e42b33da544bdb2ee",
deprecated=True,
)
version(
"2020.5",
sha256="7b6aff647f7c8ee1bf12204d02cef7c55f44402a73195bd5f42cf11850616478",
deprecated=True,
)
version(
"2020.4",
sha256="5519690321b5500c7951aaf53ff624042c3edd1a5f5d6dd1f2d802a3ecdbf4e6",
deprecated=True,
)
version(
"2020.3",
sha256="903183691132db14e55b011305db4b6f4901cc4912d2c56c131edfef18cc92a9",
deprecated=True,
)
version(
"2020.2",
sha256="7465e4cd616359d84489d919ec9e4b1aaf51f0a4296e693c249e83411b7bd2f3",
deprecated=True,
)
version(
"2020.1",
sha256="e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf",
deprecated=True,
)
version(
"2020",
sha256="477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01",
deprecated=True,
)
version("2019.6", sha256="bebe396dc0db11a9d4cc205abc13b50d88225617642508168a2195324f06a358")
version("2019.5", sha256="438061a4a2d45bbb5cf5c3aadd6c6df32d2d77ce8c715f1c8ffe56156994083a")
version("2019.4", sha256="ba4366eedfc8a1dbf6bddcef190be8cd75de53691133f305a7f9c296e5ca1867")
version("2019.3", sha256="4211a598bf3b7aca2b14ad991448947da9032566f13239b1a05a2d4824357573")
version("2019.2", sha256="bcbf5cc071926bc67baa5be6fb04f0986a2b107e1573e15fadcb7d7fc4fb9f7e")
version("2019.1", sha256="b2c37ed2fcd0e64c4efcabdc8ee581143986527192e6e647a197c76d9c4583ec")
version("2019", sha256="c5b281a5f0b5b4eeb1f4c7d4dc72f96985b566561ca28acc9c7c16f6ee110d0b")
version("2018.8", sha256="776923415df4bc78869d7f387c834141fdcda930b2e75be979dc59ecfa6ebecf")
version("2018.5", sha256="32261df6f7ec4149fc0508f9af416953d056e281590359838c1ed6644ba097b8")
version("2018.4", sha256="6f2ee458c730994a8549d6b4f601ecfc9432731462f8bd4ffa35d330d9aaa891")
version("2018.3", sha256="4423a49224972969c52af7b1f151579cea6ab52148d8d7cbae28c183520aa291")
version("2018.2", sha256="4bdde8120c510b6543afb4b18f82551fddb11851f7edbd814aa24022c5d37857")
version("2018.1", sha256="4d3533340499323fece83b4a2d4251fa856376f2426c541e00b8e6b4c0d705cd")
version("2018", sha256="deb5d0b749a52a0c6083367b5f50a99e08003208d81954fb49e7009e1b1fd0e9")
version("2016.6", sha256="bac0117d2cad21f9b94fe5b854fb9ae7435b098a6da4e732ee745f18e52473d7")
version("2016.5", sha256="57db26c6d9af84710a1e0c47a1f5bf63a22641456448dcd2eeb556ebd14e0b7c")
version("2016.4", sha256="4be9d3bfda0bdf3b5c53041e0b8344f7d22b75128759d9bfa9442fe65c289264")
version("2016.3", sha256="7bf00e74a9d38b7cef9356141d20e4ba9387289cbbfd4d11be479ef932d77d27")
version("5.1.5", sha256="c25266abf07690ecad16ed3996899b1d489cbb1ef733a1befb3b5c75c91a703e")
version("5.1.4", sha256="0f3793d8f1f0be747cf9ebb0b588fb2b2b5dc5acc32c3046a7bee2d2c03437bc")
version("5.1.2", sha256="39d6f1d7ae8ba38cea6089da40676bfa4049a49903d21551abc030992a58f304")
version("4.6.7", sha256="6afb1837e363192043de34b188ca3cf83db6bd189601f2001a1fc5b0b2a214d9")
version("4.5.5", sha256="e0605e4810b0d552a8761fef5540c545beeaf85893f4a6e21df9905a33f871ba")
version(
"2019.5",
sha256="438061a4a2d45bbb5cf5c3aadd6c6df32d2d77ce8c715f1c8ffe56156994083a",
deprecated=True,
)
version(
"2019.4",
sha256="ba4366eedfc8a1dbf6bddcef190be8cd75de53691133f305a7f9c296e5ca1867",
deprecated=True,
)
version(
"2019.3",
sha256="4211a598bf3b7aca2b14ad991448947da9032566f13239b1a05a2d4824357573",
deprecated=True,
)
version(
"2019.2",
sha256="bcbf5cc071926bc67baa5be6fb04f0986a2b107e1573e15fadcb7d7fc4fb9f7e",
deprecated=True,
)
version(
"2019.1",
sha256="b2c37ed2fcd0e64c4efcabdc8ee581143986527192e6e647a197c76d9c4583ec",
deprecated=True,
)
version(
"2019",
sha256="c5b281a5f0b5b4eeb1f4c7d4dc72f96985b566561ca28acc9c7c16f6ee110d0b",
deprecated=True,
)
version(
"2018.8",
sha256="776923415df4bc78869d7f387c834141fdcda930b2e75be979dc59ecfa6ebecf",
deprecated=True,
)
version(
"2018.5",
sha256="32261df6f7ec4149fc0508f9af416953d056e281590359838c1ed6644ba097b8",
deprecated=True,
)
version(
"2018.4",
sha256="6f2ee458c730994a8549d6b4f601ecfc9432731462f8bd4ffa35d330d9aaa891",
deprecated=True,
)
version(
"2018.3",
sha256="4423a49224972969c52af7b1f151579cea6ab52148d8d7cbae28c183520aa291",
deprecated=True,
)
version(
"2018.2",
sha256="4bdde8120c510b6543afb4b18f82551fddb11851f7edbd814aa24022c5d37857",
deprecated=True,
)
version(
"2018.1",
sha256="4d3533340499323fece83b4a2d4251fa856376f2426c541e00b8e6b4c0d705cd",
deprecated=True,
)
version(
"2018",
sha256="deb5d0b749a52a0c6083367b5f50a99e08003208d81954fb49e7009e1b1fd0e9",
deprecated=True,
)
version(
"2016.6",
sha256="bac0117d2cad21f9b94fe5b854fb9ae7435b098a6da4e732ee745f18e52473d7",
deprecated=True,
)
version(
"2016.5",
sha256="57db26c6d9af84710a1e0c47a1f5bf63a22641456448dcd2eeb556ebd14e0b7c",
deprecated=True,
)
version(
"2016.4",
sha256="4be9d3bfda0bdf3b5c53041e0b8344f7d22b75128759d9bfa9442fe65c289264",
deprecated=True,
)
version(
"2016.3",
sha256="7bf00e74a9d38b7cef9356141d20e4ba9387289cbbfd4d11be479ef932d77d27",
deprecated=True,
)
version(
"5.1.5",
sha256="c25266abf07690ecad16ed3996899b1d489cbb1ef733a1befb3b5c75c91a703e",
deprecated=True,
)
version(
"5.1.4",
sha256="0f3793d8f1f0be747cf9ebb0b588fb2b2b5dc5acc32c3046a7bee2d2c03437bc",
deprecated=True,
)
version(
"5.1.2",
sha256="39d6f1d7ae8ba38cea6089da40676bfa4049a49903d21551abc030992a58f304",
deprecated=True,
)
version(
"4.6.7",
sha256="6afb1837e363192043de34b188ca3cf83db6bd189601f2001a1fc5b0b2a214d9",
deprecated=True,
)
version(
"4.5.5",
sha256="e0605e4810b0d552a8761fef5540c545beeaf85893f4a6e21df9905a33f871ba",
deprecated=True,
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
@@ -113,11 +283,22 @@ class Gromacs(CMakePackage, CudaPackage):
variant(
"heffte",
default=False,
when="@2021: +sycl+mpi",
when="@2021: +mpi",
description="Enable multi-GPU FFT support with HeFFTe",
)
depends_on("heffte +cuda", when="+heffte +cuda")
depends_on("heffte +sycl", when="+heffte +sycl")
variant("opencl", default=False, description="Enable OpenCL support")
variant("sycl", default=False, when="@2021: %clang", description="Enable SYCL support")
variant("sycl", default=False, when="@2021:", description="Enable SYCL support")
requires(
"^intel-oneapi-runtime",
"^hipsycl %clang",
policy="one_of",
when="+sycl",
msg="GROMACS SYCL support comes either from intel-oneapi-runtime or a "
+ "package that provides the virtual package `sycl`, such as AdaptiveCpp "
+ "plus a clang compiler.",
)
variant(
"intel-data-center-gpu-max",
default=False,
@@ -296,6 +477,15 @@ class Gromacs(CMakePackage, CudaPackage):
+ "The g++ location is written to icp{c,x}.cfg",
)
variant(
"itt",
default=False,
when="@2024:",
description="Enable Instrumentation and Tracing Technology (ITT)"
+ " profiling API (from Intel)",
)
depends_on("intel-oneapi-vtune", "+itt")
depends_on("fftw-api@3")
depends_on("cmake@2.8.8:3", type="build")
depends_on("cmake@3.4.3:3", type="build", when="@2018:")
@@ -614,6 +804,13 @@ def cmake_args(self):
options.append("-DGMX_GPU_NB_CLUSTER_SIZE=8")
options.append("-DGMX_GPU_NB_NUM_CLUSTER_PER_CELL_X=1")
if "+itt" in self.spec:
options.append("-DGMX_USE_ITT=on")
options.append(
"-DITTNOTIFY_INCLUDE_DIR=%s"
% self.spec["intel-oneapi-vtune"].package.headers.directories[0]
)
if self.spec.satisfies("~nblib"):
options.append("-DGMX_INSTALL_NBLIB_API=OFF")
if self.spec.satisfies("~gmxapi"):

View File

@@ -58,6 +58,9 @@ class Hip(CMakePackage):
conflicts("+asan", when="os=centos7")
conflicts("+asan", when="os=centos8")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("cuda", when="+cuda")
depends_on("cmake@3.16.8:", type="build")
@@ -531,12 +534,6 @@ def patch(self):
"clr/hipamd/hip-config-amd.cmake",
string=True,
)
filter_file(
'"${ROCM_PATH}/llvm"',
self.spec["llvm-amdgpu"].prefix,
"clr/hipamd/src/hiprtc/CMakeLists.txt",
string=True,
)
perl = self.spec["perl"].command
if self.spec.satisfies("@:5.5"):
@@ -561,7 +558,12 @@ def patch(self):
filter_file(" -lnuma", f" -L{numactl} -lnuma", "hipBin_amd.h")
def cmake_args(self):
args = []
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),
]
if self.spec.satisfies("+rocm"):
args.append(self.define("HSA_PATH", self.spec["hsa-rocr-dev"].prefix))
args.append(self.define("HIP_COMPILER", "clang"))

View File

@@ -19,7 +19,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
git = "https://github.com/hypre-space/hypre.git"
tags = ["e4s", "radiuss"]
maintainers("ulrikeyang", "osborn9", "balay")
maintainers("ulrikeyang", "osborn9", "victorapm", "balay")
test_requires_compiler = True
@@ -74,6 +74,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
variant(
"superlu-dist", default=False, description="Activates support for SuperLU_Dist library"
)
variant("lapack", default=True, description="Use external blas/lapack")
variant("int64", default=False, description="Use 64bit integers")
variant("mixedint", default=False, description="Use 64bit integers while reducing memory use")
variant("complex", default=False, description="Use complex values")
@@ -123,8 +124,8 @@ def patch(self): # fix sequential compilation in 'src/seq_mv'
filter_file("\tmake", "\t$(MAKE)", "src/seq_mv/Makefile")
depends_on("mpi", when="+mpi")
depends_on("blas")
depends_on("lapack")
depends_on("blas", when="+lapack")
depends_on("lapack", when="+lapack")
depends_on("magma", when="+magma")
depends_on("superlu-dist", when="+superlu-dist+mpi")
depends_on("rocsparse", when="+rocm")
@@ -198,17 +199,20 @@ def url_for_version(self, version):
def configure_args(self):
spec = self.spec
# Note: --with-(lapack|blas)_libs= needs space separated list of names
lapack = spec["lapack"].libs
blas = spec["blas"].libs
configure_args = [f"--prefix={prefix}"]
configure_args = [
"--prefix=%s" % prefix,
"--with-lapack-libs=%s" % " ".join(lapack.names),
"--with-lapack-lib-dirs=%s" % " ".join(lapack.directories),
"--with-blas-libs=%s" % " ".join(blas.names),
"--with-blas-lib-dirs=%s" % " ".join(blas.directories),
]
# Note: --with-(lapack|blas)_libs= needs space separated list of names
if spec.satisfies("+lapack"):
configure_args.append("--with-lapack")
configure_args.append("--with-blas")
configure_args.append("--with-lapack-libs=%s" % " ".join(spec["lapack"].libs.names))
configure_args.append("--with-blas-libs=%s" % " ".join(spec["blas"].libs.names))
configure_args.append(
"--with-lapack-lib-dirs=%s" % " ".join(spec["lapack"].libs.directories)
)
configure_args.append(
"--with-blas-lib-dirs=%s" % " ".join(spec["blas"].libs.directories)
)
if spec.satisfies("+mpi"):
os.environ["CC"] = spec["mpi"].mpicc
@@ -245,7 +249,9 @@ def configure_args(self):
configure_args.append("--without-superlu")
# MLI and FEI do not build without superlu on Linux
configure_args.append("--without-mli")
configure_args.append("--without-fei")
# FEI option was removed in hypre 2.17
if self.version < Version("2.17.0"):
configure_args.append("--without-fei")
if spec.satisfies("+superlu-dist"):
configure_args.append(

View File

@@ -14,6 +14,7 @@ class Igraph(CMakePackage, AutotoolsPackage):
license("GPL-2.0-or-later")
version("0.10.15", sha256="03ba01db0544c4e32e51ab66f2356a034394533f61b4e14d769b9bbf5ad5e52c")
version("0.10.13", sha256="c6dc44324f61f52c098bedb81f6a602365d39d692d5068ca4fc3734b2a15e64c")
version("0.10.6", sha256="99bf91ee90febeeb9a201f3e0c1d323c09214f0b5f37a4290dc3b63f52839d6d")
version("0.7.1", sha256="d978030e27369bf698f3816ab70aa9141e9baf81c56cc4f55efbe5489b46b0df")

View File

@@ -22,6 +22,12 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage):
homepage = "https://github.com/oneapi-src/oneDPL"
version(
"2022.7.1",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/de3c613f-829c-4bdc-aa2b-6129eece3bd9/intel-onedpl-2022.7.1.15_offline.sh",
sha256="737f8d29f50fcb26abf7a39373305c177d8b91a70dbc5fed9d41aabfcc8bad5a",
expand=False,
)
version(
"2022.7.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/85ad74ff-f4fa-45e2-b50d-67d637d42baa/intel-onedpl-2022.7.0.647_offline.sh",

View File

@@ -21,6 +21,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/mpi-library.html"
version(
"2021.14.1",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1acd5e79-796c-401a-ab31-a3dc7b20c6a2/intel-mpi-2021.14.1.7_offline.sh",
sha256="6459b9fc81fad9b9955de7fd9904e67fcf2ada3564ce0a74b9c14ea8fb533ddf",
expand=False,
)
version(
"2021.14.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4b14b28c-2ca6-4559-a0ca-8a157627e0c8/intel-mpi-2021.14.0.791_offline.sh",

View File

@@ -70,6 +70,7 @@ class Ip(CMakePackage):
depends_on("sp precision=d", when="@4.1:4 precision=d")
depends_on("sp precision=8", when="@4.1:4 precision=8")
depends_on("lapack", when="@5.1:")
depends_on("cmake@3.18:", when="@5.1:")
def cmake_args(self):
args = [

View File

@@ -53,8 +53,9 @@ class Julia(MakefilePackage):
version("1.6.5", sha256="b70ae299ff6b63a9e9cbf697147a48a31b4639476d1947cb52e4201e444f23cb")
version("1.6.4", sha256="a4aa921030250f58015201e28204bff604a007defc5a379a608723e6bb1808d4")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
variant("precompile", default=True, description="Improve julia startup time")
variant("openlibm", default=True, description="Use openlibm instead of libm")
@@ -249,6 +250,9 @@ class Julia(MakefilePackage):
depends_on("zlib-api")
depends_on("zlib +shared +pic +optimize", when="^[virtuals=zlib-api] zlib")
# https://github.com/JuliaLang/julia/pull/45649#issuecomment-1192377430
conflicts("%gcc@12:", when="@:1.7")
# Patches for julia
patch("julia-1.6-system-libwhich-and-p7zip-symlink.patch", when="@1.6.0:1.6")
patch("use-add-rpath.patch", when="@:1.8.0")

View File

@@ -66,9 +66,6 @@ class LinaroForge(Package):
version(
"22.1.4", sha256="4e2af481a37b4c99dba0de6fac75ac945316955fc4170d06e321530adea7ac9f"
)
version(
"21.1.3", sha256="4a4ff7372aad5a31fc9e18b7b6c493691ab37d8d44a3158584e62d1ab82b0eeb"
)
elif platform.machine() == "ppc64le":
# N.B. support for ppc64le was dropped in 24.0
version(
@@ -97,9 +94,6 @@ class LinaroForge(Package):
version(
"22.0.4", sha256="f4cb5bcbaa67f9209299fe4653186a2829760b8b16a2883913aa43766375b04c"
)
version(
"21.1.3", sha256="eecbc5686d60994c5468b2d7cd37bebe5d9ac0ba37bd1f98fbfc69b071db541e"
)
elif platform.machine() == "x86_64":
version("24.1", sha256="0b96878ab73c20b39c4730ed15f24ca86dc5985637ff5d8e68f55e1e802e5fe3")
version(
@@ -147,9 +141,6 @@ class LinaroForge(Package):
version(
"22.0.4", sha256="a2c8c1da38b9684d7c4656a98b3fc42777b03fd474cd0bf969324804f47587e5"
)
version(
"21.1.3", sha256="03dc82f1d075deb6f08d1e3e6592dc9b630d406c08a1316d89c436b5874f3407"
)
variant(
"probe",

View File

@@ -3,8 +3,6 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from os import symlink
from spack.package import *
@@ -42,9 +40,7 @@ def install(self, spec, prefix):
"^TEsorter=.*$", "TEsorter={}".format(spec["py-tesorter"].prefix.bin), "paths"
)
mkdirp(prefix.opt)
mkdirp(prefix.bin)
install_tree(".", prefix)
install_tree(".", prefix.opt.ltr_retriever)
symlink(prefix.opt.ltr_retriever.LTR_retriever, prefix.bin.LTR_retriever)
def setup_run_environment(self, env):
env.prepend_path("PATH", self.prefix)

View File

@@ -26,7 +26,8 @@ class LuaSol2(CMakePackage):
version("3.0.3", sha256="bf089e50387edfc70063e24fd7fbb693cceba4a50147d864fabedd1b33483582")
version("3.0.2", sha256="3f5f369eae6732ae9a315fe4370bbdc9900d2f2f4f291206aeb5b2d5533f0c99")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
# Lua is not needed when building, since sol2 is headers-only
depends_on("lua", type=("link", "run"))

View File

@@ -383,6 +383,7 @@ def cmake_args(self):
# - MVAPICH --> mvapich
# - HPE MPT --> mpt
# - Cray MPICH --> mpich
# - HPC-X --> openmpi
if self.spec.satisfies("^mpich"):
args.append(self.define("MPI_STACK", "mpich"))
@@ -398,6 +399,8 @@ def cmake_args(self):
args.append(self.define("MPI_STACK", "mpt"))
elif self.spec.satisfies("^cray-mpich"):
args.append(self.define("MPI_STACK", "mpich"))
elif self.spec.satisfies("^hpcx-mpi"):
args.append(self.define("MPI_STACK", "openmpi"))
else:
raise InstallError("Unsupported MPI stack")

View File

@@ -702,8 +702,10 @@ def find_optional_library(name, prefix):
if "+mpi" in spec:
options += ["MPICXX=%s" % spec["mpi"].mpicxx]
hypre = spec["hypre"]
# The hypre package always links with 'blas' and 'lapack'.
all_hypre_libs = hypre.libs + hypre["lapack"].libs + hypre["blas"].libs
all_hypre_libs = hypre.libs
if "+lapack" in hypre:
all_hypre_libs += hypre["lapack"].libs + hypre["blas"].libs
hypre_gpu_libs = ""
if "+cuda" in hypre:
hypre_gpu_libs = " -lcusparse -lcurand -lcublas"

View File

@@ -92,6 +92,8 @@ def cmake_args(self):
or spec.satisfies("%apple-clang")
or spec.satisfies("%oneapi")
or spec.satisfies("%arm")
or spec.satisfies("%cce")
or spec.satisfies("%rocmcc")
):
c_flags.append("-Wno-error=implicit-function-declaration")
@@ -116,6 +118,8 @@ class NetlibScalapack(ScalapackBase):
git = "https://github.com/Reference-ScaLAPACK/scalapack"
tags = ["e4s"]
maintainers("etiennemlb")
license("BSD-3-Clause-Open-MPI")
version("2.2.0", sha256="40b9406c20735a9a3009d863318cb8d3e496fb073d201c5463df810e01ab2a57")

View File

@@ -15,6 +15,7 @@ class Nghttp2(AutotoolsPackage):
license("MIT")
version("1.64.0", sha256="20e73f3cf9db3f05988996ac8b3a99ed529f4565ca91a49eb0550498e10621e8")
version("1.63.0", sha256="9318a2cc00238f5dd6546212109fb833f977661321a2087f03034e25444d3dbb")
version("1.62.1", sha256="d0b0b9d00500ee4aa3bfcac00145d3b1ef372fd301c35bff96cf019c739db1b4")
version("1.62.0", sha256="482e41a46381d10adbdfdd44c1942ed5fd1a419e0ab6f4a5ff5b61468fe6f00d")

View File

@@ -27,7 +27,8 @@ class OpenclClhpp(CMakePackage):
version("2.0.10", sha256="fa27456295c3fa534ce824eb0314190a8b3ebd3ba4d93a0b1270fc65bf378f2b")
version("2.0.9", sha256="ba8ac4977650d833804f208a1b0c198006c65c5eac7c83b25dc32cea6199f58c")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
root_cmakelists_dir = "include"

View File

@@ -58,8 +58,8 @@ class Openscenegraph(CMakePackage):
) # Qt windowing system was moved into separate osgQt project
depends_on("qt@4:", when="@3.2:3.5.4")
depends_on("qt@:4", when="@:3.1")
depends_on("libxinerama")
depends_on("libxrandr")
depends_on("libxinerama", when="platform=linux")
depends_on("libxrandr", when="platform=linux")
depends_on("libpng")
depends_on("jasper")
depends_on("libtiff")

View File

@@ -22,7 +22,8 @@ class Pagmo2(CMakePackage):
version("master", branch="master")
version("2.18.0", sha256="5ad40bf3aa91857a808d6b632d9e1020341a33f1a4115d7a2b78b78fd063ae31")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("boost+system+serialization+thread")
depends_on("intel-tbb")

View File

@@ -38,7 +38,8 @@ class Pdt(AutotoolsPackage):
version("3.19", sha256="d57234077e2e999f2acf9860ea84369a4694b50cc17fa6728e5255dc5f4a2160")
version("3.18.1", sha256="d06c2d1793fadebf169752511e5046d7e02cf3fead6135a35c34b1fee6d6d3b2")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
variant("pic", default=False, description="Builds with pic")
@@ -50,21 +51,21 @@ def patch(self):
filter_file(r"PDT_GXX=g\+\+ ", r"PDT_GXX=clang++ ", "ductape/Makefile")
def configure(self, spec, prefix):
options = ["-prefix=%s" % prefix]
if self.compiler.name == "xl":
options = [f"-prefix={prefix}"]
if spec.satisfies("%xl"):
options.append("-XLC")
elif self.compiler.name == "intel":
elif spec.satisfies("%intel"):
options.append("-icpc")
elif self.compiler.name == "oneapi":
elif spec.satisfies("%oneapi"):
if spec.satisfies("@3.25.2:"):
options.append("-icpx")
else:
options.append("-icpc")
elif self.compiler.name == "gcc":
elif spec.satisfies("%gcc"):
options.append("-GNU")
elif self.compiler.name in ["clang", "apple-clang", "aocc"]:
elif spec.satisfies("%clang") or spec.satisfies("%apple-clang") or spec.satisfies("%aocc"):
options.append("-clang")
elif self.compiler.name == "cce":
elif spec.satisfies("%cce"):
options.append("-CC")
else:
raise InstallError("Unknown/unsupported compiler family: " + self.compiler.name)

View File

@@ -11,8 +11,9 @@ class PyAzureBatch(PythonPackage):
"""Microsoft Azure Batch Client Library for Python."""
homepage = "https://github.com/Azure/azure-sdk-for-python"
pypi = "azure-batch/azure-batch-9.0.0.zip"
pypi = "azure-batch/azure-batch-14.2.0.tar.gz"
version("14.2.0", sha256="c79267d6c3d3fe14a16a422ab5bbfabcbd68ed0b58b6bbcdfa0c8345c4c78532")
version("14.0.0", sha256="165b1e99b86f821024c4fae85fb34869d407aa0ebb0ca4b96fb26d859c26c934")
version("13.0.0", sha256="e9295de70404d276eda0dd2253d76397439abe5d8f18c1fca199c49b8d6ae30a")
version("12.0.0", sha256="1a9b1e178984a7bf495af67bcce51f0db1e4a8a957afb29e33554a14a9674deb")
@@ -20,7 +21,7 @@ class PyAzureBatch(PythonPackage):
version("10.0.0", sha256="83d7a2b0be42ca456ac2b56fa3dc6ce704c130e888d37d924072c1d3718f32d0")
version("9.0.0", sha256="47ca6f50a640915e1cdc5ce3c1307abe5fa3a636236e561119cf62d9df384d84")
# https://github.com/Azure/azure-sdk-for-python/blob/azure-batch_14.0.0/sdk/batch/azure-batch/setup.py
# https://github.com/Azure/azure-sdk-for-python/blob/azure-batch_14.2.0/sdk/batch/azure-batch/setup.py
depends_on("py-setuptools", type="build")
@@ -30,3 +31,11 @@ class PyAzureBatch(PythonPackage):
with when("@:12"):
depends_on("py-msrest@0.6.21:", when="@11:", type=("build", "run"))
depends_on("py-msrest@0.5.0:", type=("build", "run"))
def url_for_version(self, version):
if version < Version("14.1.0"):
return "https://pypi.io/packages/source/a/azure-batch/azure-batch-{0}.zip".format(
version
)
return super().url_for_version(version)

View File

@@ -15,6 +15,7 @@ class PyAzureCore(PythonPackage):
license("MIT")
version("1.30.2", sha256="a14dc210efcd608821aa472d9fb8e8d035d29b68993819147bc290a8ac224472")
version("1.30.0", sha256="6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35")
version("1.29.7", sha256="2944faf1a7ff1558b1f457cabf60f279869cabaeef86b353bed8eb032c7d8c5e")
version("1.29.2", sha256="beb0fe88d1043d8457318e8fb841d9caa648211092eda213c16b376401f3710d")
@@ -26,8 +27,9 @@ class PyAzureCore(PythonPackage):
version("1.7.0", sha256="a66da240a287f447f9867f54ba09ea235895cec13ea38c5f490ce4eedefdd75c")
version("1.6.0", sha256="d10b74e783cff90d56360e61162afdd22276d62dc9467e657ae866449eae7648")
# https://github.com/Azure/azure-sdk-for-python/blob/azure-core_1.30.0/sdk/core/azure-core/setup.py
# https://github.com/Azure/azure-sdk-for-python/blob/azure-core_1.30.2/sdk/core/azure-core/setup.py
depends_on("python@3.8:", type=("build", "run"), when="@1.30.2:")
depends_on("py-setuptools", type="build")
depends_on("py-anyio@3:4", when="@1.29.6", type=("build", "run"))
depends_on("py-requests@2.21:", when="@1.29.6:", type=("build", "run"))

View File

@@ -21,6 +21,7 @@ class PyAzureIdentity(PythonPackage):
license("MIT")
version("1.17.1", sha256="32ecc67cc73f4bd0595e4f64b1ca65cd05186f4fe6f98ed2ae9f1aa32646efea")
version("1.15.0", sha256="4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8")
version("1.14.1", sha256="48e2a9dbdc59b4f095f841d867d9a8cbe4c1cdbbad8251e055561afd47b4a9b8")
version("1.13.0", sha256="c931c27301ffa86b07b4dcf574e29da73e3deba9ab5d1fe4f445bb6a3117e260")
@@ -28,20 +29,26 @@ class PyAzureIdentity(PythonPackage):
version("1.3.1", sha256="5a59c36b4b05bdaec455c390feda71b6495fc828246593404351b9a41c2e877a")
version("1.2.0", sha256="b32acd1cdb6202bfe10d9a0858dc463d8960295da70ae18097eb3b85ab12cb91")
# https://github.com/Azure/azure-sdk-for-python/blob/azure-identity_1.15.0/sdk/identity/azure-identity/setup.py
# https://github.com/Azure/azure-sdk-for-python/blob/azure-identity_1.17.1/sdk/identity/azure-identity/setup.py
depends_on("python@3.8:", type=("build", "run"), when="@1.16:")
depends_on("py-setuptools", type="build")
depends_on("py-azure-core@1.23:1", type=("build", "run"), when="@1.15:")
depends_on("py-azure-core@1.11:1", type=("build", "run"), when="@1.12:")
depends_on("py-azure-core@1", type=("build", "run"))
depends_on("py-azure-core@1.23:", type=("build", "run"), when="@1.16:")
depends_on("py-azure-core@1.23:1", type=("build", "run"), when="@1.15")
depends_on("py-azure-core@1.11:1", type=("build", "run"), when="@1.12:1.14")
depends_on("py-azure-core@1", type=("build", "run"), when="@:1.15")
depends_on("py-cryptography@2.5:", type=("build", "run"), when="@1.12:")
depends_on("py-cryptography@2.1.4:", type=("build", "run"))
depends_on("py-msal@1.24:1", type=("build", "run"), when="@1.15:")
depends_on("py-msal@1.20:1", type=("build", "run"), when="@1.13:")
depends_on("py-msal@1.12:1", type=("build", "run"), when="@1.12:")
depends_on("py-msal@1", type=("build", "run"))
depends_on("py-msal-extensions@0.3:1", type=("build", "run"), when="@1.12:")
depends_on("py-msal@1.24:", type=("build", "run"), when="@1.16:")
depends_on("py-msal@1.24:1", type=("build", "run"), when="@1.15")
depends_on("py-msal@1.20:1", type=("build", "run"), when="@1.13:1.14")
depends_on("py-msal@1.12:1", type=("build", "run"), when="@1.12")
depends_on("py-msal@1", type=("build", "run"), when="@:1.15")
depends_on("py-msal-extensions@0.3:", type=("build", "run"), when="@1.16:")
depends_on("py-msal-extensions@0.3:1", type=("build", "run"), when="@1.12:1.15")
depends_on("py-msal-extensions@0.1.3:0.1", type=("build", "run"), when="@:1.11")
depends_on("py-typing-extensions@4:", type=("build", "run"), when="@1.17:")
depends_on("py-six@1.12:", type=("build", "run"), when="@1.12")
depends_on("py-six@1.6:", type=("build", "run"), when="@:1.11")

View File

@@ -16,6 +16,7 @@ class PyAzureStorageBlob(PythonPackage):
license("MIT")
version("12.22.0", sha256="b3804bb4fe8ab1c32771fa464053da772a682c2737b19da438a3f4e5e3b3736e")
version("12.19.0", sha256="26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897")
version("12.18.3", sha256="d8ced0deee3367fa3d4f3d1a03cd9edadf4440c0a371f503d623fa6c807554ee")
version("12.17.0", sha256="c14b785a17050b30fc326a315bdae6bc4a078855f4f94a4c303ad74a48dc8c63")
@@ -28,16 +29,19 @@ class PyAzureStorageBlob(PythonPackage):
version("12.10.0", sha256="3c7dc2c93e7ff2a731acd66a36a1f0a6266072b4154deba4894dab891285ea3a")
version("12.9.0", sha256="cff66a115c73c90e496c8c8b3026898a3ce64100840276e9245434e28a864225")
# https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-blob_12.19.0/sdk/storage/azure-storage-blob/setup.py
# https://github.com/Azure/azure-sdk-for-python/blob/azure-storage-blob_12.22.0/sdk/storage/azure-storage-blob/setup.py
depends_on("python@3.8:", type=("build", "run"), when="@12.20:")
depends_on("py-setuptools", type="build")
depends_on("py-azure-core@1.28:1", type=("build", "run"), when="@12.17:")
depends_on("py-azure-core@1.26:1", type=("build", "run"), when="@12.15:")
depends_on("py-azure-core@1.24.2:1", type=("build", "run"), when="@12.14:")
depends_on("py-azure-core@1.23.1:1", type=("build", "run"), when="@12.12:")
depends_on("py-azure-core@1.15:1", type=("build", "run"), when="@12.10:")
depends_on("py-azure-core@1.10:1", type=("build", "run"))
depends_on("py-azure-core@1.28:", type=("build", "run"), when="@12.20:")
depends_on("py-azure-core@1.28:1", type=("build", "run"), when="@12.17:12.19")
depends_on("py-azure-core@1.26:1", type=("build", "run"), when="@12.15:12.16")
depends_on("py-azure-core@1.24.2:1", type=("build", "run"), when="@12.14")
depends_on("py-azure-core@1.23.1:1", type=("build", "run"), when="@12.12:12.13")
depends_on("py-azure-core@1.15:1", type=("build", "run"), when="@12.10:12.11")
depends_on("py-azure-core@1.10:1", type=("build", "run"), when="@:12.19")
depends_on("py-cryptography@2.1.4:", type=("build", "run"))
depends_on("py-typing-extensions@4.6:", type=("build", "run"), when="@12.20:")
depends_on("py-typing-extensions@4.3:", type=("build", "run"), when="@12.17:")
depends_on("py-typing-extensions@4.0.1:", type=("build", "run"), when="@12.15:")
depends_on("py-isodate@0.6.1:", type=("build", "run"), when="@12.15:")

View File

@@ -22,6 +22,7 @@ class PyBlosc2(PythonPackage):
version("2.0.0", sha256="f19b0b3674f6c825b490f00d8264b0c540c2cdc11ec7e81178d38b83c57790a1")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("python@3.9:3", when="@2.2:", type=("build", "link", "run"))
depends_on("python@3.8:3", when="@2.0", type=("build", "link", "run"))

View File

@@ -12,6 +12,7 @@ class PyBoto3(PythonPackage):
homepage = "https://github.com/boto/boto3"
pypi = "boto3/boto3-1.10.44.tar.gz"
version("1.34.162", sha256="873f8f5d2f6f85f1018cbb0535b03cceddc7b655b61f66a0a56995238804f41f")
version("1.34.44", sha256="86bcf79a56631609a9f8023fe8f53e2869702bdd4c9047c6d9f091eb39c9b0fa")
version("1.26.26", sha256="a2349d436db6f6aa1e0def5501e4884572eb6f008f35063a359a6fa8ba3539b7")
version("1.25.5", sha256="aec7db139429fe0f3fbe723170461192b0483b0070114a4b56351e374e0f294d")
@@ -37,7 +38,8 @@ class PyBoto3(PythonPackage):
depends_on("python@2.6:", when="@1.9:", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("py-botocore@1.34.44:1.34", when="@1.34", type=("build", "run"))
depends_on("py-botocore@1.34.162:1.34", when="@1.34.162", type=("build", "run"))
depends_on("py-botocore@1.34.44:1.34", when="@1.34.44", type=("build", "run"))
depends_on("py-botocore@1.29.26:1.29", when="@1.26", type=("build", "run"))
depends_on("py-botocore@1.28.5:1.28", when="@1.25", type=("build", "run"))
depends_on("py-botocore@1.27.96:1.27", when="@1.24", type=("build", "run"))

View File

@@ -12,6 +12,7 @@ class PyBotocore(PythonPackage):
homepage = "https://github.com/boto/botocore"
pypi = "botocore/botocore-1.13.44.tar.gz"
version("1.34.162", sha256="adc23be4fb99ad31961236342b7cbf3c0bfc62532cd02852196032e8c0d682f3")
version("1.34.44", sha256="b0f40c54477e8e0a5c43377a927b8959a86bb8824aaef2d28db7c9c367cdefaa")
version("1.31.41", sha256="4dad7c5a5e70940de54ebf8de3955450c1f092f43cacff8103819d1e7d5374fa")
version("1.29.84", sha256="a36f7f6f8eae5dbd4a1cc8cb6fc747f6315500541181eff2093ee0529fc8e4bc")
@@ -48,4 +49,9 @@ class PyBotocore(PythonPackage):
depends_on("py-urllib3@1.25.4:1.25", type=("build", "run"), when="@1.19.0:1.19.15")
depends_on("py-urllib3@1.25.4:1.26", type=("build", "run"), when="@1.19.16:1.31.61")
depends_on("py-urllib3@1.25.4:1.26", type=("build", "run"), when="@1.31.62: ^python@:3.9")
depends_on("py-urllib3@1.25.4:2.0", type=("build", "run"), when="@1.31.62: ^python@3.10:")
depends_on(
"py-urllib3@1.25.4:2.0", type=("build", "run"), when="@1.31.62:1.34.62 ^python@3.10:"
)
depends_on(
"py-urllib3@1.25.4:2.1,2.2.1:2", type=("build", "run"), when="@1.34.63: ^python@3.10:"
)

View File

@@ -12,10 +12,13 @@ class PyEmailValidator(PythonPackage):
homepage = "https://github.com/JoshData/python-email-validator"
pypi = "email_validator/email_validator-1.3.1.tar.gz"
license("CC0-1.0")
license("Unlicense", when="@2.1.1:", checked_by="wdconinc")
license("CC0-1.0", when="@:2.1.0", checked_by="wdconinc")
version("2.2.0", sha256="cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7")
version("1.3.1", sha256="d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2")
depends_on("py-setuptools", type="build")
depends_on("py-dnspython@2:", type=("build", "run"), when="@2:")
depends_on("py-dnspython@1.15:", type=("build", "run"))
depends_on("py-idna@2:", type=("build", "run"))

View File

@@ -10,34 +10,60 @@
class PyFastapi(PythonPackage):
"""FastAPI framework, high performance, easy to learn, fast to code, ready for production"""
homepage = "https://github.com/tiangolo/fastapi"
homepage = "https://github.com/fastapi/fastapi"
pypi = "fastapi/fastapi-0.88.0.tar.gz"
license("MIT")
version("0.98.0", sha256="0d3c18886f652038262b5898fec6b09f4ca92ee23e9d9b1d1d24e429f84bf27b")
version("0.88.0", sha256="915bf304180a0e7c5605ec81097b7d4cd8826ff87a02bb198e336fb9f3b5ff02")
version("0.115.4", sha256="db653475586b091cb8b2fec2ac54a680ac6a158e07406e1abae31679e8826349")
version("0.110.2", sha256="b53d673652da3b65e8cd787ad214ec0fe303cad00d2b529b86ce7db13f17518d")
with default_args(deprecated=True):
# https://nvd.nist.gov/vuln/detail/CVE-2024-24762
version(
"0.98.0", sha256="0d3c18886f652038262b5898fec6b09f4ca92ee23e9d9b1d1d24e429f84bf27b"
)
version(
"0.88.0", sha256="915bf304180a0e7c5605ec81097b7d4cd8826ff87a02bb198e336fb9f3b5ff02"
)
variant("all", default=False, description="Build all optional dependencies")
depends_on("py-hatchling@1.13:", when="@0.98:", type="build")
depends_on("py-hatchling", type="build")
depends_on("py-starlette@0.27", when="@0.95.2:", type=("build", "run"))
depends_on("python@3.8:", when="@0.104:", type=("build", "run"))
depends_on("py-pdm-backend", when="@0.110.3:", type="build")
depends_on("py-hatchling@1.13:", when="@0.98:0.110.2", type="build")
depends_on("py-hatchling", when="@:0.110.2", type="build")
depends_on("py-starlette@0.40:0.41", when="@0.115.3:", type=("build", "run"))
depends_on("py-starlette@0.37.2:0.40", when="@0.115.2", type=("build", "run"))
depends_on("py-starlette@0.37.2:0.38", when="@0.112.1:0.115.1", type=("build", "run"))
depends_on("py-starlette@0.37.2:0.37", when="@0.110.1:0.112.0", type=("build", "run"))
depends_on("py-starlette@0.36.3:0.36", when="@0.109.2:0.110.0", type=("build", "run"))
depends_on("py-starlette@0.35:0.35", when="@0.109.0:0.109.1", type=("build", "run"))
depends_on("py-starlette@0.29:0.32", when="@0.108.0:0.108", type=("build", "run"))
depends_on("py-starlette@0.28", when="@0.107.0:0.107", type=("build", "run"))
depends_on("py-starlette@0.27", when="@0.95.2:0.106", type=("build", "run"))
depends_on("py-starlette@0.22.0", when="@:0.89.1", type=("build", "run"))
depends_on("py-pydantic@1.7.4:1,2.1.1:2", when="@0.101:", type=("build", "run"))
depends_on("py-pydantic@1.7.4:1", when="@0.96.1:", type=("build", "run"))
depends_on("py-pydantic@1.6.2:1", when="@:0.96.0", type=("build", "run"))
depends_on("py-typing-extensions@4.8.0:", when="@0.104:", type=("build", "run"))
conflicts("^py-pydantic@1.7.0:1.7.3,1.8.0:1.8.1")
conflicts("^py-pydantic@1.7.0:1.7.3,1.8.0:1.8.1,2.0,2.1.0")
with when("+all"):
depends_on("py-httpx@0.23:", type=("build", "run"))
depends_on("py-jinja2@2.11.2:", type=("build", "run"))
depends_on("py-python-multipart@0.0.7:", when="@0.109.1:", type=("build", "run"))
depends_on("py-python-multipart@0.0.5:", type=("build", "run"))
depends_on("py-itsdangerous@1.1:", type=("build", "run"))
depends_on("py-pyyaml@5.3.1:", type=("build", "run"))
depends_on("py-ujson@4.0.1:", type=("build", "run"))
depends_on("py-orjson@3.2.1:", type=("build", "run"))
depends_on("py-email-validator@2.0.0:", when="@0.100:", type=("build", "run"))
depends_on("py-email-validator@1.1.1:", type=("build", "run"))
depends_on("py-uvicorn@0.12:+standard", type=("build", "run"))
depends_on("py-pydantic-settings@2.0.0:", when="@0.100:", type=("build", "run"))
depends_on("py-pydantic-extra-types@2.0.0:", when="@0.100:", type=("build", "run"))
conflicts("^py-ujson@4.0.2,4.1.0,4.2.0,4.3.0,5.0.0,5.1.0")

View File

@@ -10,24 +10,37 @@ class PyFlask(PythonPackage):
"""A simple framework for building complex web applications."""
homepage = "https://palletsprojects.com/p/flask/"
pypi = "Flask/Flask-1.1.1.tar.gz"
pypi = "flask/flask-3.0.3.tar.gz"
git = "https://github.com/pallets/flask.git"
license("BSD-3-Clause")
version("3.0.3", sha256="ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842")
version("2.3.2", sha256="8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef")
version("2.2.2", sha256="642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b")
version("2.0.2", sha256="7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2")
version("1.1.2", sha256="4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060")
version("1.1.1", sha256="13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52")
version("0.12.4", sha256="2ea22336f6d388b4b242bc3abf8a01244a8aa3e236e7407469ef78c16ba355dd")
version("0.12.2", sha256="49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1")
version("0.12.1", sha256="9dce4b6bfbb5b062181d3f7da8f727ff70c1156cbb4024351eafd426deb5fb88")
version("0.11.1", sha256="b4713f2bfb9ebc2966b8a49903ae0d3984781d5c878591cf2f7b484d28756b0e")
with default_args(deprecated=True):
# https://nvd.nist.gov/vuln/detail/CVE-2023-30861
version("2.2.2", sha256="642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b")
version("2.0.2", sha256="7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2")
version("1.1.2", sha256="4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060")
version("1.1.1", sha256="13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52")
version(
"0.12.4", sha256="2ea22336f6d388b4b242bc3abf8a01244a8aa3e236e7407469ef78c16ba355dd"
)
version(
"0.12.2", sha256="49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1"
)
version(
"0.12.1", sha256="9dce4b6bfbb5b062181d3f7da8f727ff70c1156cbb4024351eafd426deb5fb88"
)
version(
"0.11.1", sha256="b4713f2bfb9ebc2966b8a49903ae0d3984781d5c878591cf2f7b484d28756b0e"
)
depends_on("python@3.8:", when="@2.3:", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run"), when="@:2")
depends_on("py-flit-core@:3", type=("build", "run"), when="@3:")
depends_on("py-werkzeug@3:", when="@3:", type=("build", "run"))
depends_on("py-werkzeug@2.3.3:", when="@2.3.2:", type=("build", "run"))
depends_on("py-werkzeug@2.2.2:", when="@2.2.2:", type=("build", "run"))
depends_on("py-werkzeug@2:", when="@2:", type=("build", "run"))
@@ -44,3 +57,11 @@ class PyFlask(PythonPackage):
depends_on("py-click@5.1:", type=("build", "run"))
depends_on("py-blinker@1.6.2:", when="@2.3:", type=("build", "run"))
depends_on("py-importlib-metadata@3.6:", when="@2.1: ^python@:3.9", type=("build", "run"))
def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/source/f/flask/{}-{}.tar.gz"
if self.spec.satisfies("@:0.18.3"):
name = "Flask"
else:
name = "flask"
return url.format(name, version)

View File

@@ -14,7 +14,18 @@ class PyGradio(PythonPackage):
license("Apache-2.0")
version("3.36.1", sha256="1d821cee15da066c24c197248ba9aaed5f5e59505d17754561c2f96f90e73a89")
version("5.1.0", sha256="d2153668e6de2df7a01bb33f01a074fc7716ec863c40f472d8e439439ef1e153")
with default_args(deprecated=True):
# https://nvd.nist.gov/vuln/detail/CVE-2024-47871
version(
"4.44.1", sha256="a68a52498ac6b63f8864ef84bf7866a70e7d07ebe913edf921e1d2a3708ad5ae"
)
version(
"3.50.2", sha256="c6c81320566ba3e5688a1a58201d0729565a97b828b2bf6895e54f7bf25c01de"
)
version(
"3.36.1", sha256="1d821cee15da066c24c197248ba9aaed5f5e59505d17754561c2f96f90e73a89"
)
depends_on("python@3.8:", type=("build", "run"))
depends_on("py-hatchling", type="build")

View File

@@ -19,6 +19,7 @@ class PyJoblib(PythonPackage):
license("BSD-3-Clause")
version("1.4.2", sha256="2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e")
version("1.2.0", sha256="e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018")
version("1.1.0", sha256="4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35")
version("1.0.1", sha256="9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7")
@@ -35,7 +36,10 @@ class PyJoblib(PythonPackage):
version("0.10.2", sha256="3123553bdad83b143428033537c9e1939caf4a4d8813dade6a2246948c94494b")
version("0.10.0", sha256="49b3a0ba956eaa2f077e1ebd230b3c8d7b98afc67520207ada20a4d8b8efd071")
depends_on("python@3.7:", when="@1.2:", type=("build", "run"))
depends_on("python@3.6:", when="@0.15:", type=("build", "run"))
depends_on("python@2.7:2.8,3.4:", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run"))
with default_args(type=("build", "run")):
# https://github.com/joblib/joblib/pull/1361
depends_on("python@:3.11", when="@:1.2")
with default_args(type="build"):
depends_on("py-setuptools@61.2:", when="@1.4:")
depends_on("py-setuptools")

View File

@@ -23,6 +23,7 @@ class PyKeras(PythonPackage):
maintainers("adamjstewart")
license("Apache-2.0")
version("3.7.0", sha256="a4451a5591e75dfb414d0b84a3fd2fb9c0240cc87ebe7e397f547ce10b0e67b7")
version("3.6.0", sha256="405727525a3522ed8f9ec0b46e0667e4c65fcf714a067322c16a00d902ded41d")
version("3.5.0", sha256="53ae4f9472ec9d9c6941c82a3fda86969724ace3b7630a94ba0a1f17ba1065c3")
version("3.4.1", sha256="34cd9aeaa008914715149234c215657ca758e1b473bd2aab2e211ac967d1f8fe")
@@ -74,10 +75,12 @@ class PyKeras(PythonPackage):
)
with default_args(type="build"):
# pyproject.toml
depends_on("py-setuptools@61:", when="@3.7:")
depends_on("py-setuptools")
with default_args(type=("build", "run")):
# setup.py
# pyproject.toml
depends_on("python@3.9:", when="@3:")
depends_on("python@3.8:", when="@2.12:")
depends_on("py-absl-py", when="@2.6:")
@@ -98,7 +101,8 @@ class PyKeras(PythonPackage):
# requirements-tensorflow-cuda.txt
with when("backend=tensorflow"):
depends_on("py-tensorflow@2.17", when="@3.5:")
depends_on("py-tensorflow@2.18", when="@3.7:")
depends_on("py-tensorflow@2.17", when="@3.5:3.6")
depends_on("py-tensorflow@2.16.1:2.16", when="@3.0:3.4")
# requirements-jax-cuda.txt
@@ -109,13 +113,15 @@ class PyKeras(PythonPackage):
# requirements-torch-cuda.txt
with when("backend=torch"):
depends_on("py-torch@2.4.1", when="@3.6:")
depends_on("py-torch@2.5.1", when="@3.7:")
depends_on("py-torch@2.4.1", when="@3.6")
depends_on("py-torch@2.4.0", when="@3.5")
depends_on("py-torch@2.2.1", when="@3.1:3.4")
depends_on("py-torch@2.1.2", when="@3.0.3:3.0.5")
depends_on("py-torch@2.1.1", when="@3.0.1:3.0.2")
depends_on("py-torch@2.1.0", when="@3.0.0")
depends_on("py-torchvision@0.19.1", when="@3.6:")
depends_on("py-torchvision@0.20.1", when="@3.7:")
depends_on("py-torchvision@0.19.1", when="@3.6")
depends_on("py-torchvision@0.19.0", when="@3.5")
depends_on("py-torchvision@0.17.1", when="@3.1:3.4")
depends_on("py-torchvision@0.16.2", when="@3.0.3:3.0.5")

View File

@@ -9,15 +9,15 @@
class PyNetifaces(PythonPackage):
"""Portable network interface information"""
homepage = (
"https://0xbharath.github.io/python-network-programming/libraries/netifaces/index.html"
)
homepage = "https://github.com/al45tair/netifaces"
pypi = "netifaces/netifaces-0.10.5.tar.gz"
license("Unlicense")
license("MIT", checked_by="wdconinc")
version("0.11.0", sha256="043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32")
version("0.10.9", sha256="2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3")
version("0.10.5", sha256="59d8ad52dd3116fcb6635e175751b250dc783fb011adba539558bd764e5d628b")
depends_on("c", type="build") # generated
depends_on("c", type="build")
depends_on("py-setuptools", type="build")

View File

@@ -73,6 +73,7 @@ class PyPandas(PythonPackage):
variant("excel", when="@1.4:", default=False, description="Build with support for Excel")
depends_on("c", type="build")
depends_on("cxx", type="build")
with default_args(type="build"):
depends_on("py-meson-python@0.13.1:", when="@2.1:")

View File

@@ -13,6 +13,7 @@ class PyPdmBackend(PythonPackage):
license("MIT", checked_by="matz-e")
version("2.4.3", sha256="dbd9047a7ac10d11a5227e97163b617ad5d665050476ff63867d971758200728")
version("2.3.0", sha256="e39ed2da206d90d4a6e9eb62f6dce54ed4fa65ddf172a7d5700960d0f8a09e09")
depends_on("python@3.8:", type=("build", "run"))

View File

@@ -0,0 +1,23 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyPydanticExtraTypes(PythonPackage):
"""A place for pydantic types that probably shouldn't
exist in the main pydantic lib."""
homepage = "https://github.com/pydantic/pydantic-extra-types"
pypi = "pydantic_extra_types/pydantic_extra_types-2.10.0.tar.gz"
license("MIT", checked_by="wdconinc")
version("2.10.0", sha256="552c47dd18fe1d00cfed75d9981162a2f3203cf7e77e55a3d3e70936f59587b9")
depends_on("python@3.8:", type=("build", "run"))
depends_on("py-hatchling", type="build")
depends_on("py-pydantic@2.5.2:", type=("build", "run"))
depends_on("py-typing-extensions", type=("build", "run"))

View File

@@ -0,0 +1,22 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyPydanticSettings(PythonPackage):
"""Settings management using Pydantic."""
homepage = "https://github.com/pydantic/pydantic-settings"
pypi = "pydantic_settings/pydantic_settings-2.6.1.tar.gz"
license("MIT", checked_by="wdconinc")
version("2.6.1", sha256="e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0")
depends_on("python@3.8:", type=("build", "run"))
depends_on("py-hatchling", type="build")
depends_on("py-pydantic@2.7.0:", type=("build", "run"))
depends_on("py-python-dotenv@0.21:", type=("build", "run"))

View File

@@ -15,8 +15,18 @@ class PyPythonMultipart(PythonPackage):
license("Apache-2.0")
version("0.0.17", sha256="41330d831cae6e2f22902704ead2826ea038d0419530eadff3ea80175aec5538")
version("0.0.5", sha256="f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43")
depends_on("py-setuptools", type="build")
depends_on("py-setuptools", type="build", when="@:0.0.5")
depends_on("py-hatchling", type="build", when="@0.0.6:")
depends_on("py-six@1.4.0:", type=("build", "run"))
def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/source/p/python-multipart/{}-{}.tar.gz"
if self.spec.satisfies("@:0.0.5"):
name = "python-multipart"
else:
name = "python_multipart"
return url.format(name, version)

View File

@@ -33,7 +33,8 @@ class PyPyvista(PythonPackage):
depends_on("pil", type=("build", "run"))
depends_on("py-pooch", when="@0.37:", type=("build", "run"))
depends_on("py-scooby@0.5.1:", type=("build", "run"))
depends_on("vtk+python", type=("build", "run"))
# https://github.com/pyvista/pyvista/issues/6857
depends_on("vtk@:9.3+python", type=("build", "run"))
depends_on("py-typing-extensions", when="^python@:3.7", type=("build", "run"))
# Historical dependencies

View File

@@ -24,6 +24,10 @@ class PyPyzmq(PythonPackage):
license("BSD-3-Clause")
version("26.2.0", sha256="070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f")
version("26.1.1", sha256="a7db05d8b7cd1a8c6610e9e9aa55d525baae7a44a43e18bc3260eb3f92de96c6")
version("26.0.3", sha256="dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a")
version("25.1.2", sha256="93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226")
version("25.0.2", sha256="6b8c1bbb70e868dc88801aa532cae6bd4e3b5233784692b786f17ad2962e5149")
version("24.0.1", sha256="216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77")
version("22.3.0", sha256="8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c")
@@ -39,13 +43,17 @@ class PyPyzmq(PythonPackage):
depends_on("python@2.6:2.7,3.2:3.8", type=("build", "run"), when="@:14")
# pyproject.toml
depends_on("py-setuptools", type="build")
# https://github.com/zeromq/pyzmq/issues/1278
# https://github.com/zeromq/pyzmq/pull/1317
depends_on("py-setuptools@:59", when="@17:18.0", type="build")
depends_on("py-packaging", type="build")
with when("@26:"):
depends_on("py-scikit-build-core +pyproject", type="build")
with when("@:25"):
depends_on("py-setuptools", type="build")
# https://github.com/zeromq/pyzmq/issues/1278
# https://github.com/zeromq/pyzmq/pull/1317
depends_on("py-setuptools@:59", when="@17:18.0", type="build")
# setup.py
depends_on("py-packaging", type="build")
depends_on("py-cython@3:", type="build", when="@26:")
depends_on("py-cython@0.29.35:", type="build", when="@25.1.1: ^python@3.12:")
depends_on("py-cython@0.29:", type="build", when="@22.3.0:")
depends_on("py-cython@0.20:", type="build", when="@18:")
depends_on("py-cython@0.16:", type="build")
@@ -66,7 +74,7 @@ def remove_cythonized_files(self):
for f in find(".", "*.pyx"):
touch(f)
@run_before("install")
@run_before("install", when="@:25")
def setup(self):
"""Create config file listing dependency information."""

View File

@@ -11,21 +11,40 @@ class PyQuart(PythonPackage):
Flask."""
homepage = "https://gitlab.com/pgjones/quart/"
pypi = "Quart/Quart-0.16.3.tar.gz"
pypi = "quart/quart-0.16.3.tar.gz"
license("MIT")
version("0.19.8", sha256="ef567d0be7677c99890d5c6ff30e679699fe7e5fca1a90fa3b6974edd8421794")
version("0.16.3", sha256="16521d8cf062461b158433d820fff509f98fb997ae6c28740eda061d9cba7d5e")
depends_on("python@3.8:", type=("build", "run"), when="@0.19:")
depends_on("python@3.7:", type=("build", "run"))
depends_on("py-poetry-core@1:", type="build")
depends_on("py-aiofiles", type=("build", "run"))
depends_on("py-blinker@1.6:", type=("build", "run"), when="@0.19:")
depends_on("py-blinker", type=("build", "run"))
depends_on("py-click@8.0.0:", type=("build", "run"), when="@0.18.1:")
depends_on("py-click", type=("build", "run"))
depends_on("py-flask@3.0.0:", type=("build", "run"), when="@0.19:")
depends_on("py-hypercorn@0.11.2:", type=("build", "run"))
depends_on("py-itsdangerous", type=("build", "run"))
depends_on("py-jinja2", type=("build", "run"))
depends_on("py-toml", type=("build", "run"))
depends_on("py-markupsafe", type=("build", "run"), when="@0.17:")
depends_on("py-werkzeug@3:", type=("build", "run"), when="@0.19:")
depends_on("py-werkzeug@2:", type=("build", "run"))
depends_on("py-importlib-metadata", type=("build", "run"), when="@0.18: ^python@:3.9")
depends_on("py-importlib-metadata", type=("build", "run"), when="^python@:3.7")
depends_on("py-typing-extensions", type=("build", "run"), when="@0.19: ^python@:3.9")
depends_on("py-typing-extensions", type=("build", "run"), when="^python@:3.7")
# Historical dependencies
depends_on("py-toml", type=("build", "run"), when="@:0.17")
def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/source/q/quart/{}-{}.tar.gz"
if self.spec.satisfies("@:0.18.3"):
name = "Quart"
else:
name = "quart"
return url.format(name, version)

View File

@@ -30,3 +30,6 @@ class PyRiver(PythonPackage):
depends_on("py-numpy@1.22:", type=("build", "run"))
depends_on("py-scipy@1.5:", type=("build", "run"))
depends_on("py-pandas@1.3:", type=("build", "run"))
# https://github.com/online-ml/river/pull/1632
depends_on("py-numpy@:1", when="@:0.21", type=("build", "run"))

View File

@@ -14,6 +14,10 @@ class PyScooby(PythonPackage):
license("MIT")
version("0.10.0", sha256="7ea33c262c0cc6a33c6eeeb5648df787be4f22660e53c114e5fff1b811a8854f")
version("0.5.7", sha256="ae2c2b6f5f5d10adf7aaab32409028f1e28d3ce833664bdd1e8c2072e8da169a")
# https://github.com/banesullivan/scooby/pull/83
depends_on("python@:3.11", when="@:0.5", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("py-setuptools-scm", when="@0.10:", type="build")

View File

@@ -15,6 +15,12 @@ class PyStarlette(PythonPackage):
license("BSD-3-Clause")
version("0.41.2", sha256="9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62")
version("0.37.2", sha256="9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823")
version("0.36.3", sha256="90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080")
version("0.35.1", sha256="3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc")
version("0.32.0", sha256="87c899fe3aee6a42f711380b03e1d244a21079529cb3dbe1a5109e60915e0bbb")
version("0.28.0", sha256="7bf3da5e997e796cc202cef2bd3f96a7d9b1e1943203c2fe2b42e020bc658482")
version("0.27.0", sha256="6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75")
version("0.23.1", sha256="8510e5b3d670326326c5c1d4cb657cc66832193fe5d5b7015a51c7b1e1b1bf42")
version("0.22.0", sha256="b092cbc365bea34dd6840b42861bdabb2f507f8671e642e8272d2442e08ea4ff")

View File

@@ -18,7 +18,8 @@ class PyTorchCluster(PythonPackage):
version("1.6.3", sha256="78d5a930a5bbd0d8788df8c6d66addd68d6dd292fe3edb401e3dacba26308152")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("python", type=("build", "link", "run"))
depends_on("py-setuptools", type="build")

View File

@@ -18,7 +18,8 @@ class PyTorchScatter(PythonPackage):
version("2.1.2", sha256="69b3aa435f2424ac6a1bfb6ff702da6eb73b33ca0db38fb26989c74159258e47")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("python", type=("build", "link", "run"))
depends_on("py-setuptools", type="build")

View File

@@ -18,7 +18,8 @@ class PyTorchSplineConv(PythonPackage):
version("1.2.2", sha256="ed45a81da29f774665dbdd4709d7e534cdf16d2e7006dbd06957f35bd09661b2")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("python", type=("build", "link", "run"))
depends_on("py-setuptools", type="build")

View File

@@ -15,24 +15,50 @@ class PyWerkzeug(PythonPackage):
license("BSD-3-Clause", checked_by="wdconinc")
version("3.1.3", sha256="60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746")
version("3.0.4", sha256="34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306")
version("3.0.0", sha256="3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0")
version("2.3.7", sha256="2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8")
version("2.3.4", sha256="1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76")
version("2.2.2", sha256="7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f")
version("2.0.2", sha256="aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a")
version("0.16.0", sha256="7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7")
version("0.15.6", sha256="0a24d43be6a7dce81bae05292356176d6c46d63e42a0dd3f9504b210a9cfaa43")
version("0.15.5", sha256="a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6")
version("0.15.4", sha256="a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6")
version("0.15.3", sha256="cfd1281b1748288e59762c0e174d64d8bcb2b70e7c57bc4a1203c8825af24ac3")
version("0.15.2", sha256="0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a")
version("0.15.1", sha256="ca5c2dcd367d6c0df87185b9082929d255358f5391923269335782b213d52655")
version("0.15.0", sha256="590abe38f8be026d78457fe3b5200895b3543e58ac3fc1dd792c6333ea11af64")
version("0.12.2", sha256="903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26")
version("0.11.15", sha256="455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0")
version("0.11.11", sha256="e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5")
with default_args(deprecated=True):
# https://nvd.nist.gov/vuln/detail/CVE-2023-46136
version("2.3.7", sha256="2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8")
version("2.3.4", sha256="1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76")
version("2.2.2", sha256="7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f")
version("2.0.2", sha256="aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a")
version(
"0.16.0", sha256="7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7"
)
version(
"0.15.6", sha256="0a24d43be6a7dce81bae05292356176d6c46d63e42a0dd3f9504b210a9cfaa43"
)
version(
"0.15.5", sha256="a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6"
)
version(
"0.15.4", sha256="a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6"
)
version(
"0.15.3", sha256="cfd1281b1748288e59762c0e174d64d8bcb2b70e7c57bc4a1203c8825af24ac3"
)
version(
"0.15.2", sha256="0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a"
)
version(
"0.15.1", sha256="ca5c2dcd367d6c0df87185b9082929d255358f5391923269335782b213d52655"
)
version(
"0.15.0", sha256="590abe38f8be026d78457fe3b5200895b3543e58ac3fc1dd792c6333ea11af64"
)
version(
"0.12.2", sha256="903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26"
)
version(
"0.11.15", sha256="455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0"
)
version(
"0.11.11", sha256="e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5"
)
depends_on("python@3.9:", when="@3.1:", type=("build", "run"))
depends_on("python@3.8:", when="@2.3:", type=("build", "run"))
depends_on("python@:3.9", when="@:0.12", type=("build", "run"))
depends_on("py-flit-core@:3", when="@2.3.7:", type="build")

View File

@@ -21,7 +21,8 @@ class Pygmo(CMakePackage):
version("master", branch="master")
version("2.18.0", sha256="9f081cc973297894af09f713f889870ac452bfb32b471f9f7ba08a5e0bb9a125")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
variant("shared", default=True, description="Build shared libraries")

View File

@@ -58,3 +58,8 @@ class RRsamtools(RPackage):
# this is not a listed dependency but is needed
depends_on("curl")
depends_on("zlib-api")
def patch(self):
with working_dir("src"):
filter_file(r"(^PKG_LIBS=)(\$\(RHTSLIB_LIBS\))", "\\1\\2 -lz", "Makevars")

View File

@@ -17,6 +17,7 @@ class Raylib(CMakePackage):
license("Zlib", checked_by="georgemalerbo")
version("5.5", sha256="aea98ecf5bc5c5e0b789a76de0083a21a70457050ea4cc2aec7566935f5e258e")
version("5.0", sha256="98f049b9ea2a9c40a14e4e543eeea1a7ec3090ebdcd329c4ca2cf98bc9793482")
depends_on("c", type="build") # generated

View File

@@ -40,7 +40,8 @@ class Rocfft(CMakePackage):
version("5.3.3", sha256="678c18710578c1fb36a0009311bb79de7607c3468f9102cfba56a866ebb7ff78")
version("5.3.0", sha256="d655c5541c4aff4267e80e36d002fc3a55c2f84a0ae8631197c12af3bf03fa7d")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
amdgpu_targets = ROCmPackage.amdgpu_targets

View File

@@ -19,6 +19,7 @@ class RocmTensile(CMakePackage):
license("MIT")
maintainers("srekolam", "renjithravindrankannath", "haampie")
version("6.2.1", sha256="29802dc65a7cea29f0e2608782c75db87e9c71eea8aeb485e856cf2861d83098")
version("6.2.0", sha256="6f7d679bfffd1f723f2788b00fdcb1b4673b597f9f85c2cdaab3c2aa17afb33d")
version("6.1.2", sha256="6a08190f6d9c8cc76764a68e2dd3e7af4759d4146ddc1c4b3370c7762a6f6d83")
version("6.1.1", sha256="04fd76e6a0e9b7528e61df0721b03c0e977c145a2a1ea331d515c9167d7ac35f")
@@ -80,6 +81,7 @@ class RocmTensile(CMakePackage):
"6.1.1",
"6.1.2",
"6.2.0",
"6.2.1",
]:
depends_on(f"rocm-cmake@{ver}", type="build", when=f"@{ver}")
depends_on(f"hip@{ver}", when=f"@{ver}")

View File

@@ -26,6 +26,7 @@ class RocprofilerRegister(CMakePackage):
version("6.1.1", sha256="38242443d9147a04d61374de4cecee686578a3140fed17e88480f564a1f67cc7")
version("6.1.0", sha256="c6e60447ea2ccca8d6acd8758ac00037347892b16b450e1f99ddd04cc4b6cac1")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fmt")
depends_on("glog")

View File

@@ -41,7 +41,8 @@ class RoctracerDev(CMakePackage, ROCmPackage):
version("5.3.3", sha256="f2cb1e6bb69ea1a628c04f984741f781ae1d8498dc58e15795bb03015f924d13")
version("5.3.0", sha256="36f1da60863a113bb9fe2957949c661f00a702e249bb0523cda1fb755c053808")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
variant("asan", default=False, description="Build with address-sanitizer enabled or disabled")

View File

@@ -12,6 +12,8 @@
from spack.package import *
from spack.util.environment import is_system_path
_is_macos = sys.platform == "darwin"
class Root(CMakePackage):
"""ROOT is a data analysis framework."""
@@ -156,7 +158,7 @@ class Root(CMakePackage):
when="@6.32.0:6.32.02",
)
if sys.platform == "darwin":
if _is_macos:
# Resolve non-standard use of uint, _cf_
# https://sft.its.cern.ch/jira/browse/ROOT-7886.
patch("math_uint.patch", when="@6.06.02")
@@ -186,7 +188,7 @@ class Root(CMakePackage):
# See README.md for specific notes about what ROOT configuration
# options are or are not supported, and why.
variant("aqua", default=False, description="Enable Aqua interface")
variant("aqua", default=_is_macos, description="Enable native macOS (Cocoa) interface")
variant("arrow", default=False, description="Enable Arrow interface")
variant("cuda", when="@6.08.00:", default=False, description="Enable CUDA support")
variant("cudnn", when="@6.20.02:", default=False, description="Enable cuDNN support")
@@ -288,7 +290,7 @@ class Root(CMakePackage):
variant(
"webgui", default=True, description="Enable web-based UI components of ROOT", when="+root7"
)
variant("x", default=True, description="Enable set of graphical options")
variant("x", default=(not _is_macos), description="Enable set of graphical options")
variant("xml", default=True, description="Enable XML parser interface")
variant("xrootd", default=False, description="Build xrootd file server and its client")
@@ -429,7 +431,7 @@ class Root(CMakePackage):
conflicts("target=ppc64le:", when="@:6.24")
# Incompatible variants
if sys.platform == "darwin":
if _is_macos:
conflicts("+opengl", when="~x ~aqua", msg="root+opengl requires X or Aqua")
# https://github.com/root-project/root/issues/7160
conflicts("+aqua", when="~opengl", msg="+aqua requires OpenGL to be enabled")
@@ -455,15 +457,15 @@ class Root(CMakePackage):
conflicts("%clang@16:", when="@:6.26.07", msg="clang 16+ support was added in root 6.26.08")
# See https://github.com/spack/spack/pull/44826
if sys.platform == "darwin" and macos_version() == Version("12"):
if _is_macos and macos_version() == Version("12"):
conflicts("@:6.27", when="+python", msg="macOS 12 python support for 6.28: only")
# See https://github.com/root-project/root/issues/11714
if sys.platform == "darwin" and macos_version() >= Version("13"):
if _is_macos and macos_version() >= Version("13"):
conflicts("@:6.26.09", msg="macOS 13 support was added in root 6.26.10")
# See https://github.com/root-project/root/issues/16219
if sys.platform == "darwin" and macos_version() >= Version("15"):
if _is_macos and macos_version() >= Version("15"):
conflicts("@:6.32.05", msg="macOS 15 support was added in root 6.32.06")
# ROOT <6.14 is incompatible with Python >=3.7, which is the minimum supported by spack
@@ -627,8 +629,6 @@ def cmake_args(self):
# Options related to ROOT's ability to download and build its own
# dependencies. Per Spack convention, this should generally be avoided.
afterimage_enabled = ("+x" in self.spec) if "platform=darwin" not in self.spec else True
options += [
define("builtin_cfitsio", False),
define("builtin_davix", False),
@@ -655,7 +655,12 @@ def cmake_args(self):
]
if self.spec.satisfies("@:6.32"):
options.append(define("builtin_afterimage", afterimage_enabled))
options.append(
define(
"builtin_afterimage",
("+x" in self.spec) if "platform=darwin" not in self.spec else True,
)
)
# Features
options += [
@@ -764,7 +769,7 @@ def cmake_args(self):
# #################### Compiler options ####################
if sys.platform == "darwin" and self.compiler.cc == "gcc":
if _is_macos and self.compiler.cc == "gcc":
cflags = "-D__builtin_unreachable=__builtin_trap"
options.extend([define("CMAKE_C_FLAGS", cflags), define("CMAKE_CXX_FLAGS", cflags)])

View File

@@ -12,7 +12,7 @@ class Rsync(AutotoolsPackage):
"""An open source utility that provides fast incremental file transfer."""
homepage = "https://rsync.samba.org"
url = "https://download.samba.org/pub/rsync/src/rsync-3.2.4.tar.gz"
url = "https://download.samba.org/pub/rsync/src/rsync-3.3.0.tar.gz"
license("GPL-3.0-or-later")
@@ -20,16 +20,42 @@ class Rsync(AutotoolsPackage):
version("3.2.7", sha256="4e7d9d3f6ed10878c58c5fb724a67dacf4b6aac7340b13e488fb2dc41346f2bb")
version("3.2.6", sha256="fb3365bab27837d41feaf42e967c57bd3a47bc8f10765a3671efd6a3835454d3")
version("3.2.5", sha256="2ac4d21635cdf791867bc377c35ca6dda7f50d919a58be45057fd51600c69aba")
version("3.2.4", sha256="6f761838d08052b0b6579cf7f6737d93e47f01f4da04c5d24d3447b7f2a5fad1")
version("3.2.3", sha256="becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e")
version("3.2.2", sha256="644bd3841779507665211fd7db8359c8a10670c57e305b4aab61b4e40037afa8")
version("3.1.3", sha256="55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0")
version("3.1.2", sha256="ecfa62a7fa3c4c18b9eccd8c16eaddee4bd308a76ea50b5c02a5840f09c0a1c2")
version("3.1.1", sha256="7de4364fcf5fe42f3bdb514417f1c40d10bbca896abe7e7f2c581c6ea08a2621")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
# Releases before 3.2.5 are deprecated because of CVE-2022-29154
# https://nvd.nist.gov/vuln/detail/CVE-2022-29154
version(
"3.2.4",
sha256="6f761838d08052b0b6579cf7f6737d93e47f01f4da04c5d24d3447b7f2a5fad1",
deprecated=True,
)
version(
"3.2.3",
sha256="becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e",
deprecated=True,
)
version(
"3.2.2",
sha256="644bd3841779507665211fd7db8359c8a10670c57e305b4aab61b4e40037afa8",
deprecated=True,
)
version(
"3.1.3",
sha256="55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0",
deprecated=True,
)
version(
"3.1.2",
sha256="ecfa62a7fa3c4c18b9eccd8c16eaddee4bd308a76ea50b5c02a5840f09c0a1c2",
deprecated=True,
)
version(
"3.1.1",
sha256="7de4364fcf5fe42f3bdb514417f1c40d10bbca896abe7e7f2c581c6ea08a2621",
deprecated=True,
)
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("zlib-api")
depends_on("popt")
depends_on("openssl", when="@3.2:")

View File

@@ -304,6 +304,9 @@ class Seacas(CMakePackage):
when="@:2023-10-24",
)
# Based on install-tpl.sh script, cereal seems to only be used when faodel enabled
depends_on("cereal", when="@2021-04-02: +faodel")
def setup_run_environment(self, env):
env.prepend_path("PYTHONPATH", self.prefix.lib)
@@ -486,6 +489,15 @@ def cmake_args(self):
if pkg.lower() in spec:
options.append(define(pkg + "_ROOT", spec[pkg.lower()].prefix))
if "+faodel" in spec:
# faodel headers are under $faodel_prefix/include/faodel but seacas
# leaves off the faodel part
faodel_incdir = spec["faodel"].prefix.include
faodel_incdir2 = spec["faodel"].prefix.include.faodel
faodel_incdirs = [faodel_incdir, faodel_incdir2]
options.append(define("Faodel_INCLUDE_DIRS", ";".join(faodel_incdirs)))
options.append(define("Faodel_LIBRARY_DIRS", spec["faodel"].prefix.lib))
options.append(from_variant("TPL_ENABLE_ADIOS2", "adios2"))
if "+adios2" in spec:
options.append(define("ADIOS2_ROOT", spec["adios2"].prefix))

View File

@@ -190,9 +190,6 @@ def edit(self, spec, prefix):
spec["netcdf-fortran"].prefix
)
)
libs_arg.append(
"-L{0}/lib -lhdf5_fortran -lhdf5".format(spec["hdf5"].prefix)
)
if "+metis" in spec:
libs_arg.append("-L{0} -lmetis".format(self.spec["metis"].prefix.lib))

View File

@@ -22,7 +22,8 @@ class Voropp(CMakePackage):
version("master", branch="master")
version("0.4.6", sha256="ef7970071ee2ce3800daa8723649ca069dc4c71cc25f0f7d22552387f3ea437e")
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
patch("voro++-0.4.6-cmake.patch", when="@0.4.6")

View File

@@ -243,6 +243,7 @@ class Warpx(CMakePackage, PythonExtension):
variant("shared", default=True, description="Build a shared version of the library")
variant("tprof", default=True, description="Enable tiny profiling features")
depends_on("c", type="build")
depends_on("cxx", type="build")
for v in ["24.10", "24.08", "develop"]: