Compare commits

..

73 Commits

Author SHA1 Message Date
Harmen Stoppels
ae3bcf9937 Spec.satisfies, Spec.intersects: drop spack.repo
Currently Spec.satisfies is stateful both for concrete and abstract
specs, even after our changes where concrete specs list virtuals as edge
attributes.

Virtuals on edges basically provide too little information:

1. They don't specify what version of the virtual is provided, so you
   cannot know the return value of `s.satisfies("^mpi@3:")` without
   looking in the current state of the package.
2. It's not all about edges: `mpich.satisfies("mpi")` is expected to be
   true (difference is *can* provide versus *provides*).

This commit tries to reduce the statefulness by only letting satisfies
and intersects access `spec.package`, instead of looking up the package.
The idea is that it reduces the surface area with `spack.repo`, as in
principle `spec.package` can be set upon construction.

The commit is breaking for abstract specs. The idea is you cannot answer
queries about abstract specs unless you associate a repo.
2025-02-11 16:50:21 +01:00
Piotr Sacharuk
01e16b58a3 lua-sol2: Apply workaround for oneAPI compiler for problem with build (#48920) 2025-02-10 21:51:57 -07:00
Tim Haines
f71e202f24 cbtf-krell: Update Boost dependency (#47133)
* Update Boost
* Add gotcha
* Add patch for build errors
* Allow building with latest Dyninst
* Fix patch url
2025-02-10 13:05:05 -08:00
Stephen Nicholas Swatman
f7edd10c17 acts dependencies: new versions as of 2025/02/10 (#48969)
This commit adds detray v0.88.0 and GeoModel v6.9.0.
2025-02-10 13:27:54 -07:00
Richard Berger
153c0805dd ports-of-call: add v1.6.0, v1.7.0, v1.7.1 (#48870) 2025-02-10 11:55:59 -08:00
Harmen Stoppels
5d8517ef69 import-check: bump (#48968) 2025-02-10 20:48:59 +01:00
Fernando Ayats
f23cae6a86 py-iterative-stats: add 0.1.1 (#48959) 2025-02-10 07:42:20 -08:00
jgraciahlrs
e6e67f8e0a extrae: tighten dependencies on boost for +dyninst (#48938) 2025-02-10 10:43:31 +01:00
Howard Pritchard
e6bef4ca9b OpenMPI: add version 4.1.8 (#48922)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2025-02-10 10:00:14 +01:00
Matt Thompson
e3e0bef0de Update GFE packages (#48899) 2025-02-10 09:59:15 +01:00
Buldram
42486d93ec nim: add v2.2.2 (#48929) 2025-02-10 09:58:15 +01:00
Harmen Stoppels
6d608a9664 log.py: remove setenv calls (#48933) 2025-02-10 09:53:36 +01:00
Matt Thompson
04313afc63 mapl: add v2.53.1, v2.54.1 (#48944) 2025-02-10 09:42:35 +01:00
Teague Sterling
f839d2ba56 duckdb: add v1.2.0 (#48902)
Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2025-02-10 09:37:46 +01:00
Paul R. C. Kent
2b1a8b1913 Quantum ESPRESSO: add v7.4.1 (#48949) 2025-02-10 09:20:21 +01:00
Vanessasaurus
8907003648 flux-sched: add v0.42.1 (#48952)
Co-authored-by: github-actions <github-actions@users.noreply.github.com>
2025-02-10 09:17:56 +01:00
Adam J. Stewart
8afdba4bf7 py-einops: add v0.8.1 (#48954) 2025-02-10 09:13:54 +01:00
Paul R. C. Kent
57cabbfb10 qmcpack: add v4.0.0 (#48921) 2025-02-10 09:02:38 +01:00
Paul
c71efb9040 go: add v1.23.6 (#48955) 2025-02-10 08:37:34 +01:00
Robert Mijakovic
c5dd2d43d2 reframe: add v4.6.4 -> v4.7.2 (#48242) 2025-02-10 08:25:12 +01:00
Adam J. Stewart
34338ef757 Python: add new versions (#48950)
* Python: add new versions

* black
2025-02-09 17:20:19 +01:00
Piotr Sacharuk
c0bdc37226 nwchem: add master (#48919)
* Add possibility to build nwchem from master branch

* add oneapi@2025: patch for @7.2.3

---------

Co-authored-by: eugeneswalker <eugenesunsetwalker@gmail.com>
2025-02-07 10:56:04 -08:00
Sergey Kosukhin
8bad9fb804 serialbox: add version 2.6.2 (#48937) 2025-02-07 10:30:31 -08:00
Harmen Stoppels
2df7cc0087 libgcrypt: fix enforced -O0 (#48940)
Signed-off-by: Shane Nehring <snehring@iastate.edu>
Co-authored-by: Shane Nehring <snehring@iastate.edu>
2025-02-07 19:08:51 +01:00
Piotr Sacharuk
40d40ccc52 Apply workarounds for oneAPI compiler for ascent problem with build (#48918)
* Apply workarounds for oneAPI compiler for ascent problem with build

* Use the way with use patch through the PR address

* stylecheck - missing comma
2025-02-07 06:20:19 -07:00
Harmen Stoppels
afe7d6c39e package_base.py: remove use_cray_compiler_names (#48932) 2025-02-07 12:47:17 +01:00
Rocco Meli
113733d9fb trexio: fix issues with autotools build system (#48923) 2025-02-07 03:42:46 -07:00
Massimiliano Culpo
a8e2da5bb8 Fix regression due to dyninst update (#48935) 2025-02-07 10:46:42 +01:00
Harmen Stoppels
97750189b6 clingo-bootstrap: fix +optimized build (#48931)
* fix regression `apple-clang` vs `%apple-clang`
* use f-strings
* remove --verbose flag from LDFLAGS
2025-02-07 09:46:05 +01:00
Teague Sterling
bcd40835a0 py-maturin: add v1.8.2 and refined dependencies (#48915) 2025-02-07 01:23:33 -07:00
John W. Parent
2c3f2c5733 Windows: Update default config for stage location (#48511)
Current location is within the Spack prefix, which causes builds to
pollute VCS with stage artifacts and generally inflates the Spack
install prefix.

This PR moves it to the user cache location now that we can
consistently support paths with spaces on Windows.
2025-02-06 23:25:11 -08:00
Massimiliano Culpo
302d74394b dyninst: cleanup package (#47637)
* Use more idiomatic construct, shorten recipe
* Remove deprecated versions, and associated patches
* Remove v10.0.0
2025-02-07 08:20:05 +01:00
Vinícius
cf94dc7823 simgrid: add v3.36 (#48909) 2025-02-06 21:03:00 -07:00
Rocco Meli
4411ee3382 dla-future-fortran: add v0.3.0 (#48900) 2025-02-06 18:56:10 -07:00
John W. Parent
f790ce0f72 icu4c: no cxxstd flag option on Windows (#48510)
* ICU4C: Don't reference a spec variant on a platform on which it's not defined

* icu4c: no cxx flag on Windows
2025-02-06 18:55:57 -07:00
Mikael Simberg
64d53037db pika: Add 0.32.0 (#48897) 2025-02-06 18:49:55 -07:00
Chris Marsh
4aef50739b Add new version of r-curl (#48912) 2025-02-06 18:38:09 -07:00
Wouter Deconinck
a6e966f6f2 dcap: depends_on libxcrypt (#48903) 2025-02-06 18:37:51 -07:00
psakievich
1f428c4188 Add a message for CMake incremental build (#48905)
* Add a message for CMake incremental build

Requested message to explain CMake phase is getting skipped.

* [@spackbot] updating style on behalf of psakievich

* Update import

---------

Co-authored-by: psakievich <psakievich@users.noreply.github.com>
2025-02-07 01:32:06 +00:00
Thomas Madlener
731e48b1bd lcio: add v2.22.4 (#48895) 2025-02-06 18:20:34 -07:00
Wouter Deconinck
74ff9ad821 hep stack: build also with cuda and rocm where possible (#48528) 2025-02-06 17:09:15 -07:00
Alberto Invernizzi
16a4eff689 nvpl-blas, nvpl-lapack: add v0.4.0.1, v0.3.0 (#48901) 2025-02-06 15:27:28 -07:00
Alberto Sartori
d0b0d8db50 justbuild: add v1.4.3 (#48898) 2025-02-06 15:21:16 -07:00
AMD Toolchain Support
54f591cce5 amdfftw: fix broken build, adjust flags for performance tuning (#48754)
With CFLAGS, the code path in the amdfftw build system will bypass the logic around AMD_ARCH.

---------

Co-authored-by: vijay kallesh <Vijay-teekinavar.Kallesh@amd.com>
2025-02-06 15:14:44 -07:00
Chris Marsh
8677bb4d43 py-numba: Add version 0.61 (#48837) 2025-02-06 07:54:53 -08:00
SXS Bot
b66b80a96a spectre: add v2025.01.30 (#48803)
Co-authored-by: sxs-bot <sxs-bot@users.noreply.github.com>
2025-02-06 13:49:46 +01:00
Adam J. Stewart
10e21f399c py-shapely: add v2.0.7 (#48810) 2025-02-06 13:45:08 +01:00
Matt Thompson
56892f6140 fms: add 2025.01, 2024.03 (#48812) 2025-02-06 13:44:46 +01:00
George Young
7eddc4b1f8 mummer4: patching to allow building with %gcc@13: (#38292)
Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-02-06 13:37:42 +01:00
Adam J. Stewart
3c7392bbcc PyTorch: add v2.6.0 (#48794) 2025-02-06 13:32:53 +01:00
ddement
bb0517f4d9 openturbine: add new package (#48683) 2025-02-06 13:32:14 +01:00
Izaak "Zaak" Beekman
c8994ee50f salt: add v0.3.0 (#48877)
* salt: Add v0.3.0 of SALT

This version contains important bug fixes for building and parsing
projects containing Fortran

* salt: Be more explicit about dependency types

 - llvm+clang+flang is needed at build, link and runtime for the
   correct operation of SALT
 - Testing with llvm@master ( llvm > 19.x ) shows that SALT is
   currently incompatible with the latest llvm API so an updated salt
   will be required when LLVM 20 is released
2025-02-06 13:02:08 +01:00
Wouter Deconinck
4b2f5638f2 sherpa: +hepmc3root only when +root (#48827)
* sherpa: +hepmc3root only when +root

* sherpa: fix style
2025-02-06 12:33:27 +01:00
Richard Berger
31312a379f spiner: add v1.6.3 (#48871)
* spiner: update package logic

* singularity-eos: remove spiner cuda_arch propagation

* spiner: add version 1.6.3
2025-02-06 11:47:44 +01:00
Harmen Stoppels
b0d5f272b0 llvm: fix @15 %apple-clang@16 (#48887) 2025-02-06 10:52:36 +01:00
Harmen Stoppels
1c93fef160 spec.py: ensure == is false if true modulo precomputed dag hash (#48889) 2025-02-06 09:55:27 +01:00
Axel Huebl
8bb5f4faf4 enzyme: add v0.0.172 (#48881) 2025-02-06 09:40:14 +01:00
Dom Heinzeller
f76ab5f72f Update py-arch, py-statsmodels (add 0.14.1), py-patsy (add 0.5.4) to be able to use py-cython@3 (#48769)
* Add py-patsy@0.5.4
* Correct py-numpy dependency in py-arch
* Add py-statsmodels@0.14.1 and update dependencies
* Add climbfuji as maintainer for py-patsy
* Add climbfuji as maintainer for py-statsmodels
* Update var/spack/repos/builtin/packages/py-statsmodels/package.py
2025-02-05 16:23:33 -08:00
Richard Berger
49c831edc3 flecsi: new version 2.3.1 (#48867)
* flecsi: add new version 2.3.1, remove develop
* flecsi: remove kokkos and openmp variants moving forward
* flecsi: propagate cuda and rocm settings from kokkos
* Update var/spack/repos/builtin/packages/flecsi/package.py
   Co-authored-by: Davis Herring <herring@lanl.gov>
* flecsi: remove redundant depends_on lines
* flecsi: correct legion dependency
* flecsi: deprecate v2.0.0 and v2.1.0
* flecsi: force +openmp if ^kokkos+openmp

---------

Co-authored-by: Davis Herring <herring@lanl.gov>
2025-02-05 16:18:58 -08:00
afzpatel
c943c8c1d2 hip-tests: new package (#47273)
* hip-tests: add new package
* remove hip-tests from hip recipe
* remove old versions
* fix style
* add missing import
* bump hip-tests to 6.3.1
* fix style
2025-02-05 15:35:04 -08:00
Harmen Stoppels
e0e6f29584 relocate.py: don't warn about symlinks (#48904)
`relocate_links` warns when the target is absolute and not matched by
any prefix from the prefix to prefix map.

This can lead to false positives, cause the prefix to prefix map does
not contain trivial/identity entries whenever a package is installed to
its original location.

Since relocate_links is the odd one out there (we don't warn about
similar issues with rpaths, etc), just remove the warning.
2025-02-05 12:33:44 -07:00
Wouter Deconinck
72bc3bb803 libice: add v1.1.2 (#48861) 2025-02-05 10:35:34 -08:00
Wouter Deconinck
dba8fe2b96 harfbuzz: add v10.2.0 (#48857) 2025-02-05 10:35:18 -08:00
Harmen Stoppels
4487598d60 spec.py: ensure spec.extra_attributes is {} if is null in json (#48896) 2025-02-05 17:55:53 +01:00
Stephen Nicholas Swatman
495537cf56 acts: add v39.0.0 (#48839)
This commit adds version 39.0.0 of the ACTS package which, as far as I
can tell, doesn't require any dependency updates.
2025-02-05 09:39:21 -06:00
George Young
22c3b4099f code-server: update to v4.96.4 (#48828) 2025-02-05 04:38:11 -07:00
japlews
13978d11a0 Scotch: add v7.0.6, add testing option (#48781) 2025-02-05 12:04:00 +01:00
Alec Scott
a22114b20b bash: add autotools dependencies (#48874) 2025-02-05 11:26:43 +01:00
Chris Marsh
c10624390f Fix esmf usage, add new version (#48835) 2025-02-05 11:24:48 +01:00
Felix Thaler
fb3d9de80b nnn: new package (#46174)
Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
2025-02-05 11:23:28 +01:00
Harmen Stoppels
fbb688af07 spec.py: fix hash change due to None vs {} (#48854)
* Fix hash change due to None vs {}

* Enforce null for empty list of external_modules
2025-02-05 09:48:00 +01:00
Chris Marsh
d34b709425 py-elevation: new package (#48836) 2025-02-05 09:46:49 +01:00
rfbgo
cb0b188cf6 pfind: new package (#48685) 2025-02-05 09:31:10 +01:00
108 changed files with 1224 additions and 786 deletions

View File

@@ -39,7 +39,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
repository: haampie/circular-import-fighter
ref: e38bcd0aa46368e30648b61b7f0d8c1ca68aadff
ref: 4cdb0bf15f04ab6b49041d5ef1bfd9644cce7f33
path: circular-import-fighter
- name: Install dependencies
working-directory: circular-import-fighter

View File

@@ -1,5 +1,5 @@
config:
locks: false
build_stage::
- '$spack/.staging'
- '$user_cache_path/stage'
stage_name: '{name}-{version}-{hash:7}'

View File

@@ -344,26 +344,6 @@ def close(self):
self.file.close()
@contextmanager
def replace_environment(env):
"""Replace the current environment (`os.environ`) with `env`.
If `env` is empty (or None), this unsets all current environment
variables.
"""
env = env or {}
old_env = os.environ.copy()
try:
os.environ.clear()
for name, val in env.items():
os.environ[name] = val
yield
finally:
os.environ.clear()
for name, val in old_env.items():
os.environ[name] = val
def log_output(*args, **kwargs):
"""Context manager that logs its output to a file.
@@ -447,7 +427,6 @@ def __init__(
self.echo = echo
self.debug = debug
self.buffer = buffer
self.env = env # the environment to use for _writer_daemon
self.filter_fn = filter_fn
self._active = False # used to prevent re-entry
@@ -519,21 +498,20 @@ def __enter__(self):
# just don't forward input if this fails
pass
with replace_environment(self.env):
self.process = multiprocessing.Process(
target=_writer_daemon,
args=(
input_fd,
read_fd,
self.write_fd,
self.echo,
self.log_file,
child_pipe,
self.filter_fn,
),
)
self.process.daemon = True # must set before start()
self.process.start()
self.process = multiprocessing.Process(
target=_writer_daemon,
args=(
input_fd,
read_fd,
self.write_fd,
self.echo,
self.log_file,
child_pipe,
self.filter_fn,
),
)
self.process.daemon = True # must set before start()
self.process.start()
finally:
if input_fd:
@@ -729,10 +707,7 @@ class winlog:
Does not support the use of 'v' toggling as nixlog does.
"""
def __init__(
self, file_like=None, echo=False, debug=0, buffer=False, env=None, filter_fn=None
):
self.env = env
def __init__(self, file_like=None, echo=False, debug=0, buffer=False, filter_fn=None):
self.debug = debug
self.echo = echo
self.logfile = file_like
@@ -789,11 +764,10 @@ def background_reader(reader, echo_writer, _kill):
reader.close()
self._active = True
with replace_environment(self.env):
self._thread = Thread(
target=background_reader, args=(self.reader, self.echo_writer, self._kill)
)
self._thread.start()
self._thread = Thread(
target=background_reader, args=(self.reader, self.echo_writer, self._kill)
)
self._thread.start()
return self
def __exit__(self, exc_type, exc_val, exc_tb):

View File

@@ -11,6 +11,7 @@
from typing import Any, List, Optional, Tuple
import llnl.util.filesystem as fs
from llnl.util import tty
from llnl.util.lang import stable_partition
import spack.builder
@@ -469,6 +470,11 @@ def cmake(
configure_artifact = "ninja.build"
if os.path.isfile(os.path.join(self.build_directory, configure_artifact)):
tty.msg(
"Incremental build criteria satisfied."
"Skipping CMake configure step. To force configuration run"
f" `spack clean {pkg.name}`"
)
return
options = self.std_cmake_args

View File

@@ -8,6 +8,7 @@
import llnl.util.tty as tty
import spack.config
import spack.error
import spack.repo
import spack.util.path
from spack.cmd.common import arguments
@@ -129,7 +130,7 @@ def repo_remove(args):
spack.config.set("repos", repos, args.scope)
tty.msg("Removed repository %s with namespace '%s'." % (repo.root, repo.namespace))
return
except spack.repo.RepoError:
except spack.error.RepoError:
continue
tty.die("No repository with path or namespace: %s" % namespace_or_path)
@@ -142,7 +143,7 @@ def repo_list(args):
for r in roots:
try:
repos.append(spack.repo.from_path(r))
except spack.repo.RepoError:
except spack.error.RepoError:
continue
if sys.stdout.isatty():

View File

@@ -263,6 +263,18 @@ def from_dict(cls, spec, dictionary):
return InstallRecord(spec, **d)
class ForbiddenLockError(SpackError):
"""Raised when an upstream DB attempts to acquire a lock"""
class ForbiddenLock:
def __getattr__(self, name):
raise ForbiddenLockError(f"Cannot access attribute '{name}' of lock")
def __reduce__(self):
return ForbiddenLock, tuple()
class LockConfiguration(NamedTuple):
"""Data class to configure locks in Database objects
@@ -605,12 +617,16 @@ def __init__(
self.db_lock_timeout = lock_cfg.database_timeout
tty.debug(f"DATABASE LOCK TIMEOUT: {str(self.db_lock_timeout)}s")
self.lock = lk.Lock(
str(self._lock_path),
default_timeout=self.db_lock_timeout,
desc="database",
enable=not self.is_upstream and lock_cfg.enable,
)
self.lock: Union[ForbiddenLock, lk.Lock]
if self.is_upstream:
self.lock = ForbiddenLock()
else:
self.lock = lk.Lock(
str(self._lock_path),
default_timeout=self.db_lock_timeout,
desc="database",
enable=lock_cfg.enable,
)
self._data: Dict[str, InstallRecord] = {}
# For every installed spec we keep track of its install prefix, so that
@@ -1034,9 +1050,6 @@ def _write(self, type=None, value=None, traceback=None):
This routine does no locking.
"""
if self.is_upstream:
raise UpstreamDatabaseLockingError("Cannot write to an upstream database")
self._ensure_parent_directories()
# Do not write if exceptions were raised
@@ -1657,24 +1670,38 @@ def query(
"""
valid_trees = ["all", "upstream", "local", self.root] + [u.root for u in self.upstream_dbs]
if install_tree not in valid_trees:
raise ValueError(
f"Invalid install_tree argument to Database.query(). Try one of {valid_trees}"
msg = "Invalid install_tree argument to Database.query()\n"
msg += f"Try one of {', '.join(valid_trees)}"
tty.error(msg)
return []
upstream_results = []
upstreams = self.upstream_dbs
if install_tree not in ("all", "upstream"):
upstreams = [u for u in self.upstream_dbs if u.root == install_tree]
for upstream_db in upstreams:
# queries for upstream DBs need to *not* lock - we may not
# have permissions to do this and the upstream DBs won't know about
# us anyway (so e.g. they should never uninstall specs)
upstream_results.extend(
upstream_db._query(
query_spec,
predicate_fn=predicate_fn,
installed=installed,
explicit=explicit,
start_date=start_date,
end_date=end_date,
hashes=hashes,
in_buildcache=in_buildcache,
origin=origin,
)
or []
)
if install_tree == "all":
databases = [self, *self.upstream_dbs]
elif install_tree == "upstream":
databases = self.upstream_dbs
elif install_tree == "local" or self.root == install_tree:
databases = [self]
else:
databases = [u for u in self.upstream_dbs if u.root == install_tree]
results: List[spack.spec.Spec] = []
for db in databases:
results.extend(
db.query_local(
local_results: Set["spack.spec.Spec"] = set()
if install_tree in ("all", "local") or self.root == install_tree:
local_results = set(
self.query_local(
query_spec,
predicate_fn=predicate_fn,
installed=installed,
@@ -1687,13 +1714,8 @@ def query(
)
)
# Stable deduplication on dag hash picks local specs over upstreams.
if len(databases) > 1:
results = list(llnl.util.lang.dedupe(results, key=lambda x: x.dag_hash()))
# reduce number of comparisons with slow default __lt__
results.sort(key=lambda s: s.name)
results.sort()
results = list(local_results) + list(x for x in upstream_results if x not in local_results)
results.sort() # type: ignore[call-overload]
return results
def query_one(

View File

@@ -202,3 +202,11 @@ class MirrorError(SpackError):
def __init__(self, msg, long_msg=None):
super().__init__(msg, long_msg)
class RepoError(SpackError):
"""Superclass for repository-related errors."""
class UnknownEntityError(RepoError):
"""Raised when we encounter a package spack doesn't have."""

View File

@@ -560,7 +560,7 @@ def dump_packages(spec: "spack.spec.Spec", path: str) -> None:
try:
source_repo = spack.repo.from_path(source_repo_root)
source_pkg_dir = source_repo.dirname_for_package_name(node.name)
except spack.repo.RepoError as err:
except spack.error.RepoError as err:
tty.debug(f"Failed to create source repo for {node.name}: {str(err)}")
source_pkg_dir = None
tty.warn(f"Warning: Couldn't copy in provenance for {node.name}")
@@ -2436,11 +2436,7 @@ def _real_install(self) -> None:
# DEBUGGING TIP - to debug this section, insert an IPython
# embed here, and run the sections below without log capture
log_contextmanager = log_output(
log_file,
self.echo,
True,
env=self.unmodified_env,
filter_fn=self.filter_fn,
log_file, self.echo, True, filter_fn=self.filter_fn
)
with log_contextmanager as logger:

View File

@@ -2109,7 +2109,7 @@ def uninstall_by_spec(spec, force=False, deprecator=None):
# Try to get the package for the spec
try:
pkg = spec.package
except spack.repo.UnknownEntityError:
except spack.error.UnknownEntityError:
pkg = None
# Pre-uninstall hook runs first.
@@ -2284,14 +2284,6 @@ def rpath_args(self):
build_system_flags = PackageBase.build_system_flags
def use_cray_compiler_names():
"""Compiler names for builds that rely on cray compiler names."""
os.environ["CC"] = "cc"
os.environ["CXX"] = "CC"
os.environ["FC"] = "ftn"
os.environ["F77"] = "ftn"
def possible_dependencies(
*pkg_or_spec: Union[str, spack.spec.Spec, typing.Type[PackageBase]],
transitive: bool = True,

View File

@@ -236,22 +236,15 @@ def relocate_elf_binaries(binaries: Iterable[str], prefix_to_prefix: Dict[str, s
_set_elf_rpaths_and_interpreter(path, rpaths=rpaths, interpreter=interpreter)
def _warn_if_link_cant_be_relocated(link: str, target: str):
if not os.path.isabs(target):
return
tty.warn(f'Symbolic link at "{link}" to "{target}" cannot be relocated')
def relocate_links(links: Iterable[str], prefix_to_prefix: Dict[str, str]) -> None:
"""Relocate links to a new install prefix."""
regex = re.compile("|".join(re.escape(p) for p in prefix_to_prefix.keys()))
for link in links:
old_target = readlink(link)
if not os.path.isabs(old_target):
continue
match = regex.match(old_target)
# No match.
if match is None:
_warn_if_link_cant_be_relocated(link, old_target)
continue
new_target = prefix_to_prefix[match.group()] + old_target[match.end() :]

View File

@@ -663,7 +663,7 @@ def __init__(
repo = Repo(repo, cache=cache, overrides=overrides)
repo.finder(self)
self.put_last(repo)
except RepoError as e:
except spack.error.RepoError as e:
tty.warn(
f"Failed to initialize repository: '{repo}'.",
e.message,
@@ -1241,7 +1241,7 @@ def get_pkg_class(self, pkg_name: str) -> Type["spack.package_base.PackageBase"]
raise UnknownPackageError(fullname)
except Exception as e:
msg = f"cannot load package '{pkg_name}' from the '{self.namespace}' repository: {e}"
raise RepoError(msg) from e
raise spack.error.RepoError(msg) from e
cls = getattr(module, class_name)
if not isinstance(cls, type):
@@ -1501,27 +1501,19 @@ def recipe_filename(self, name):
return os.path.join(self.root, "packages", name, "package.py")
class RepoError(spack.error.SpackError):
"""Superclass for repository-related errors."""
class NoRepoConfiguredError(RepoError):
class NoRepoConfiguredError(spack.error.RepoError):
"""Raised when there are no repositories configured."""
class InvalidNamespaceError(RepoError):
class InvalidNamespaceError(spack.error.RepoError):
"""Raised when an invalid namespace is encountered."""
class BadRepoError(RepoError):
class BadRepoError(spack.error.RepoError):
"""Raised when repo layout is invalid."""
class UnknownEntityError(RepoError):
"""Raised when we encounter a package spack doesn't have."""
class UnknownPackageError(UnknownEntityError):
class UnknownPackageError(spack.error.UnknownEntityError):
"""Raised when we encounter a package spack doesn't have."""
def __init__(self, name, repo=None):
@@ -1558,7 +1550,7 @@ def __init__(self, name, repo=None):
self.name = name
class UnknownNamespaceError(UnknownEntityError):
class UnknownNamespaceError(spack.error.UnknownEntityError):
"""Raised when we encounter an unknown namespace"""
def __init__(self, namespace, name=None):
@@ -1568,7 +1560,7 @@ def __init__(self, namespace, name=None):
super().__init__(msg, long_msg)
class FailedConstructorError(RepoError):
class FailedConstructorError(spack.error.RepoError):
"""Raised when a package's class constructor fails."""
def __init__(self, name, exc_type, exc_obj, exc_tb):

View File

@@ -3831,7 +3831,7 @@ def _is_reusable(spec: spack.spec.Spec, packages, local: bool) -> bool:
try:
provided = spack.repo.PATH.get(spec).provided_virtual_names()
except spack.repo.RepoError:
except spack.error.RepoError:
provided = []
for name in {spec.name, *provided}:

View File

@@ -91,7 +91,6 @@
import spack.hash_types as ht
import spack.paths
import spack.platforms
import spack.provider_index
import spack.repo
import spack.spec_parser
import spack.store
@@ -1527,9 +1526,8 @@ def __init__(self, spec_like=None, *, external_path=None, external_modules=None)
self._external_path = external_path
self.external_modules = Spec._format_module_list(external_modules)
# This attribute is used to store custom information for
# external specs. None signal that it was not set yet.
self.extra_attributes = None
# This attribute is used to store custom information for external specs.
self.extra_attributes: dict = {}
# This attribute holds the original build copy of the spec if it is
# deployed differently than it was built. None signals that the spec
@@ -1894,9 +1892,7 @@ def root(self):
@property
def package(self):
assert self.concrete, "{0}: Spec.package can only be called on concrete specs".format(
self.name
)
assert self.concrete, f"{self.name}: Spec.package can only be called on concrete specs"
if not self._package:
self._package = spack.repo.PATH.get(self)
return self._package
@@ -2351,15 +2347,10 @@ def to_node_dict(self, hash=ht.dag_hash):
)
if self.external:
if self.extra_attributes:
extra_attributes = syaml.sorted_dict(self.extra_attributes)
else:
extra_attributes = None
d["external"] = {
"path": self.external_path,
"module": self.external_modules,
"extra_attributes": extra_attributes,
"module": self.external_modules or None,
"extra_attributes": syaml.sorted_dict(self.extra_attributes),
}
if not self._concrete:
@@ -3273,7 +3264,7 @@ def _constrain_dependencies(self, other):
def common_dependencies(self, other):
"""Return names of dependencies that self an other have in common."""
common = set(s.name for s in self.traverse(root=False))
common = {s.name for s in self.traverse(root=False)}
common.intersection_update(s.name for s in other.traverse(root=False))
return common
@@ -3321,7 +3312,7 @@ def intersects(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
elif other.concrete:
return other.satisfies(self)
# From here we know both self and other are not concrete
# From here we know both self and other are abstract
self_hash = self.abstract_hash
other_hash = other.abstract_hash
@@ -3332,32 +3323,8 @@ def intersects(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
):
return False
# If the names are different, we need to consider virtuals
# We do not consider virtuals for two abstract specs, since no package is associated
if self.name != other.name and self.name and other.name:
if self.virtual and other.virtual:
# Two virtual specs intersect only if there are providers for both
lhs = spack.repo.PATH.providers_for(str(self))
rhs = spack.repo.PATH.providers_for(str(other))
intersection = [s for s in lhs if any(s.intersects(z) for z in rhs)]
return bool(intersection)
# A provider can satisfy a virtual dependency.
elif self.virtual or other.virtual:
virtual_spec, non_virtual_spec = (self, other) if self.virtual else (other, self)
try:
# Here we might get an abstract spec
pkg_cls = spack.repo.PATH.get_pkg_class(non_virtual_spec.fullname)
pkg = pkg_cls(non_virtual_spec)
except spack.repo.UnknownEntityError:
# If we can't get package info on this spec, don't treat
# it as a provider of this vdep.
return False
if pkg.provides(virtual_spec.name):
for when_spec, provided in pkg.provided.items():
if non_virtual_spec.intersects(when_spec, deps=False):
if any(vpkg.intersects(virtual_spec) for vpkg in provided):
return True
return False
# namespaces either match, or other doesn't require one.
@@ -3387,40 +3354,16 @@ def intersects(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
return False
# If we need to descend into dependencies, do it, otherwise we're done.
if deps:
return self._intersects_dependencies(other)
return True
def _intersects_dependencies(self, other):
if not other._dependencies or not self._dependencies:
# one spec *could* eventually satisfy the other
if not deps or not self._dependencies or not other._dependencies:
return True
# Handle first-order constraints directly
return self._intersects_dependencies(other)
def _intersects_dependencies(self, other: "Spec") -> bool:
for name in self.common_dependencies(other):
if not self[name].intersects(other[name], deps=False):
return False
# For virtual dependencies, we need to dig a little deeper.
self_index = spack.provider_index.ProviderIndex(
repository=spack.repo.PATH, specs=self.traverse(), restrict=True
)
other_index = spack.provider_index.ProviderIndex(
repository=spack.repo.PATH, specs=other.traverse(), restrict=True
)
# These two loops handle cases where there is an overly restrictive
# vpkg in one spec for a provider in the other (e.g., mpi@3: is not
# compatible with mpich2)
for spec in self.virtual_dependencies():
if spec.name in other_index and not other_index.providers_for(spec):
return False
for spec in other.virtual_dependencies():
if spec.name in self_index and not self_index.providers_for(spec):
return False
return True
def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
@@ -3445,24 +3388,22 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
if not compare_hash or not compare_hash.startswith(other.abstract_hash):
return False
# If the names are different, we need to consider virtuals
if self.name != other.name and self.name and other.name:
# A concrete provider can satisfy a virtual dependency.
if not self.virtual and other.virtual:
try:
# Here we might get an abstract spec
pkg_cls = spack.repo.PATH.get_pkg_class(self.fullname)
pkg = pkg_cls(self)
except spack.repo.UnknownEntityError:
# If we can't get package info on this spec, don't treat
# it as a provider of this vdep.
return False
# If the names are different, we need to consider virtuals. We return false for two
# abstract specs with different names because no package is associated with them.
if other.name and self.name != other.name:
try:
pkg = self.package
except (AssertionError, spack.error.RepoError):
# If we can't get package info on this spec, don't treat it as a provider of this
# vdep.
return False
if pkg.provides(other.name):
for when, provided in pkg.provided.items():
if self.satisfies(when, deps=False):
if any(p.intersects(other) for p in provided):
return True
if pkg.provides(other.name):
for when_spec, provided in pkg.provided.items():
if self.satisfies(when_spec, deps=False):
if any(vpkg.intersects(other) for vpkg in provided):
return True
return False
# namespaces either match, or other doesn't require one.
@@ -3515,10 +3456,6 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
# will be verified later.
lhs_edges: Dict[str, Set[DependencySpec]] = collections.defaultdict(set)
for rhs_edge in other.traverse_edges(root=False, cover="edges"):
# If we are checking for ^mpi we need to verify if there is any edge
if rhs_edge.spec.virtual:
rhs_edge.update_virtuals(virtuals=(rhs_edge.spec.name,))
if not rhs_edge.virtuals:
continue
@@ -3560,10 +3497,6 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool:
for rhs in other.traverse(root=False)
)
def virtual_dependencies(self):
"""Return list of any virtual deps in this spec."""
return [spec for spec in self.traverse() if spec.virtual]
@property # type: ignore[misc] # decorated prop not supported in mypy
def patches(self):
"""Return patch objects for any patch sha256 sums on this Spec.
@@ -3861,6 +3794,13 @@ def _cmp_iter(self):
for item in self._cmp_node():
yield item
# If there is ever a breaking change to hash computation, whether accidental or purposeful,
# two specs can be identical modulo DAG hash, depending on what time they were concretized
# From the perspective of many operation in Spack (database, build cache, etc) a different
# DAG hash means a different spec. Here we ensure that two otherwise identical specs, one
# serialized before the hash change and one after, are considered different.
yield self.dag_hash() if self.concrete else None
# This needs to be in _cmp_iter so that no specs with different process hashes
# are considered the same by `__hash__` or `__eq__`.
#
@@ -4908,7 +4848,7 @@ def from_node_dict(cls, node):
spec.external_modules = node["external"]["module"]
if spec.external_modules is False:
spec.external_modules = None
spec.extra_attributes = node["external"].get("extra_attributes", {})
spec.extra_attributes = node["external"].get("extra_attributes") or {}
# specs read in are concrete unless marked abstract
if node.get("concrete", True):

View File

@@ -165,8 +165,10 @@ def test_installed_upstream(upstream_and_downstream_db, tmpdir):
upstream_db._read()
for dep in spec.traverse(root=False):
assert downstream_db.get_by_hash(dep.dag_hash()) is not None
assert upstream_db.get_by_hash(dep.dag_hash()) is not None
record = downstream_db.get_by_hash(dep.dag_hash())
assert record is not None
with pytest.raises(spack.database.ForbiddenLockError):
upstream_db.get_by_hash(dep.dag_hash())
new_spec = spack.concretize.concretize_one("w")
downstream_db.add(new_spec)
@@ -256,7 +258,7 @@ def test_cannot_write_upstream(tmp_path, mock_packages, config):
# Create it as an upstream
db = spack.database.Database(str(tmp_path), is_upstream=True)
with pytest.raises(spack.database.UpstreamDatabaseLockingError):
with pytest.raises(spack.database.ForbiddenLockError):
db.add(spack.concretize.concretize_one("pkg-a"))

View File

@@ -457,7 +457,7 @@ def bpp_path(spec):
def _repoerr(repo, name):
if name == "cmake":
raise spack.repo.RepoError(repo_err_msg)
raise spack.error.RepoError(repo_err_msg)
else:
return orig_dirname(repo, name)
@@ -476,7 +476,7 @@ def _repoerr(repo, name):
# Now try the error path, which requires the mock directory structure
# above
monkeypatch.setattr(spack.repo.Repo, "dirname_for_package_name", _repoerr)
with pytest.raises(spack.repo.RepoError, match=repo_err_msg):
with pytest.raises(spack.error.RepoError, match=repo_err_msg):
inst.dump_packages(spec, path)
out = str(capsys.readouterr()[1])

View File

@@ -472,9 +472,6 @@ def test_concrete_specs_which_satisfies_abstract(self, lhs, rhs, default_mock_co
("mpileaks^mpich@2.0^callpath@1.7", "^mpich@1:3^callpath@1.4:1.6"),
("mpileaks^mpich@4.0^callpath@1.7", "^mpich@1:3^callpath@1.4:1.6"),
("mpileaks^mpi@3", "^mpi@1.2:1.6"),
("mpileaks^mpi@3:", "^mpich2@1.4"),
("mpileaks^mpi@3:", "^mpich2"),
("mpileaks^mpi@3:", "^mpich@1.0"),
("mpich~foo", "mpich+foo"),
("mpich+foo", "mpich~foo"),
("mpich foo=True", "mpich foo=False"),
@@ -705,9 +702,9 @@ def test_copy_satisfies_transitive(self):
assert copy[s.name].satisfies(s)
def test_intersects_virtual(self):
assert Spec("mpich").intersects(Spec("mpi"))
assert Spec("mpich2").intersects(Spec("mpi"))
assert Spec("zmpi").intersects(Spec("mpi"))
assert spack.concretize.concretize_one("mpich").intersects("mpi")
assert spack.concretize.concretize_one("mpich2").intersects("mpi")
assert spack.concretize.concretize_one("zmpi").intersects("mpi")
def test_intersects_virtual_providers(self):
"""Tests that we can always intersect virtual providers from abstract specs.
@@ -1829,9 +1826,6 @@ def test_abstract_contains_semantic(lhs, rhs, expected, mock_packages):
(Spec, "cppflags=-foo", "cflags=-foo", (True, False, False)),
# Versions
(Spec, "@0.94h", "@:0.94i", (True, True, False)),
# Different virtuals intersect if there is at least package providing both
(Spec, "mpi", "lapack", (True, False, False)),
(Spec, "mpi", "pkgconfig", (False, False, False)),
# Intersection among target ranges for different architectures
(Spec, "target=x86_64:", "target=ppc64le:", (False, False, False)),
(Spec, "target=x86_64:", "target=:power9", (False, False, False)),
@@ -1989,3 +1983,26 @@ def test_equality_discriminate_on_propagation(lhs, rhs):
def test_comparison_multivalued_variants():
assert Spec("x=a") < Spec("x=a,b") < Spec("x==a,b") < Spec("x==a,b,c")
def test_comparison_after_breaking_hash_change():
# We simulate a breaking change in DAG hash computation in Spack. We have two specs that are
# entirely equal modulo DAG hash. When deserializing these specs, we don't want them to compare
# as equal, because DAG hash is used throughout in Spack to distinguish between specs
# (e.g. database, build caches, install dir).
s = Spec("example@=1.0")
s._mark_concrete(True)
# compute the dag hash and a change to it
dag_hash = s.dag_hash()
new_dag_hash = f"{'b' if dag_hash[0] == 'a' else 'a'}{dag_hash[1:]}"
before_breakage = s.to_dict()
after_breakage = s.to_dict()
after_breakage["spec"]["nodes"][0]["hash"] = new_dag_hash
assert before_breakage != after_breakage
x = Spec.from_dict(before_breakage)
y = Spec.from_dict(after_breakage)
assert x != y
assert len({x, y}) == 2

View File

@@ -11,6 +11,7 @@
import spack.binary_distribution
import spack.cmd
import spack.concretize
import spack.error
import spack.platforms.test
import spack.repo
import spack.spec
@@ -1139,7 +1140,7 @@ def test_parse_filename_missing_slash_as_spec(specfile_for, tmpdir, filename):
# Check that if we concretize this spec, we get a good error
# message that mentions we might've meant a file.
with pytest.raises(spack.repo.UnknownEntityError) as exc_info:
with pytest.raises(spack.error.UnknownEntityError) as exc_info:
spack.concretize.concretize_one(spec)
assert exc_info.value.long_message
assert (

View File

@@ -10,6 +10,7 @@
from llnl.util.filesystem import mkdirp, working_dir
import spack.caches
import spack.error
import spack.fetch_strategy
import spack.paths
import spack.repo
@@ -78,7 +79,7 @@ def pkg(self):
try:
pkg = spack.repo.PATH.get_pkg_class(self.pkg_name)
pkg.git
except (spack.repo.RepoError, AttributeError) as e:
except (spack.error.RepoError, AttributeError) as e:
raise VersionLookupError(f"Couldn't get the git repo for {self.pkg_name}") from e
self._pkg = pkg
return self._pkg

View File

@@ -13,29 +13,41 @@ spack:
mpi: [mpich]
tbb: [intel-tbb]
variants: +mpi
acts:
require: +analysis +dd4hep +edm4hep +examples +fatras +geant4 +hepmc3 +podio +pythia8 +python ~svg +tgeo cxxstd=20
celeritas:
require: +geant4 +hepmc3 +root +shared cxxstd=20
hip:
require: '@5.7.1 +rocm'
root:
require: +davix +dcache +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +tmva-cpu +unuran +vc +vdt +veccore +webgui +x +xml +xrootd # cxxstd=20
# note: root cxxstd=20 not concretizable within sherpa
vecgeom:
require: +gdml +geant4 +root +shared cxxstd=20
# Mark geant4 data as external to prevent wasting bandwidth on GB-scale files
geant4-data:
buildable: false
externals:
- spec: geant4-data@11.3.0
prefix: /usr
- spec: geant4-data@11.2.2
prefix: /usr
- spec: geant4-data@11.2.0
prefix: /usr
- spec: geant4-data@11.1.0
prefix: /usr
- spec: geant4-data@11.0.0
prefix: /usr
- spec: geant4-data@11.3.0
prefix: /usr
- spec: geant4-data@11.2.2
prefix: /usr
- spec: geant4-data@11.2.0
prefix: /usr
- spec: geant4-data@11.1.0
prefix: /usr
- spec: geant4-data@11.0.0
prefix: /usr
specs:
# CPU
- acts +analysis +dd4hep +edm4hep +examples +fatras +geant4 +hepmc3 +podio +pythia8 +python +tgeo cxxstd=20
- acts ~cuda
#- agile # fails on c++>11 compiler
- alpgen
- ampt
- apfel +lhapdf +python
- celeritas +geant4 +hepmc3 +openmp +root +shared +vecgeom cxxstd=20
- celeritas ~cuda +openmp ~rocm +vecgeom
- cepgen
- cernlib +shared
- collier
@@ -82,19 +94,28 @@ spack:
- py-vector
- pythia8 +evtgen +fastjet +hdf5 +hepmc +hepmc3 +lhapdf ~madgraph5amc +python +rivet ~root # pythia8 and root circularly depend
- rivet hepmc=3
- root +davix +dcache +examples +fftw +fits +fortran +gdml +graphviz +gsl +http +math +minuit +mlp +mysql +opengl +postgres +pythia8 +python +r +roofit +root7 +rpath ~shadow +spectrum +sqlite +ssl +tbb +threads +tmva +unuran +vc +vdt +veccore +webgui +x +xml +xrootd
- root ~cuda
- sherpa +analysis ~blackhat +gzip +hepmc3 +hepmc3root +lhapdf +lhole +openloops +pythia ~python ~recola ~rivet +root +ufo cxxstd=20
- tauola +hepmc3 +lhapdf cxxstd=20
- thepeg hepmc=3 ~rivet
- vecgeom +gdml +geant4 +root
- vecgeom ~cuda
- whizard +fastjet +gosam hepmc=3 +lcio +lhapdf +openloops +openmp +pythia8
- xrootd +davix +http +krb5 +python +readline +scitokens-cpp
- yoda +root
# CUDA
#- acts +cuda +traccc cuda_arch=80
#- celeritas +cuda ~openmp +vecgeom cuda_arch=80
- root +cuda +cudnn +tmva-gpu
- vecgeom +cuda cuda_arch=80
# ROCm
- celeritas +rocm amdgpu_target=gfx90a ~openmp ~vecgeom # only available with ORANGE
ci:
pipeline-gen:
- build-job:
image: "ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4:2024.03.01"
image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4:2024.03.01
cdash:
build-group: HEP

View File

@@ -36,7 +36,7 @@ bin/spack -h
bin/spack help -a
# Profile and print top 20 lines for a simple call to spack spec
spack -p --lines 20 spec mpileaks%gcc ^dyninst@10.0.0 ^elfutils@0.170
spack -p --lines 20 spec mpileaks%gcc
$coverage_run $(which spack) bootstrap status --dev --optional
# Check that we can import Spack packages directly as a first import

View File

@@ -40,6 +40,7 @@ class Acts(CMakePackage, CudaPackage):
# Supported Acts versions
version("main", branch="main")
version("master", branch="main", deprecated=True) # For compatibility
version("39.0.0", commit="b055202e2fbdd509bc186eb4782714bc46f38f3f", submodules=True)
version("38.2.0", commit="9cb8f4494656553fd9b85955938b79b2fac4c9b0", submodules=True)
version("38.1.0", commit="8a20c88808f10bf4fcdfd7c6e077f23614c3ab90", submodules=True)
version("38.0.0", commit="0a6b5155e29e3b755bf351b8a76067fff9b4214b", submodules=True)

View File

@@ -4,7 +4,6 @@
import os
from spack.build_environment import optimization_flags
from spack.package import *
from spack.pkg.builtin.fftw import FftwBase
@@ -95,14 +94,14 @@ class Amdfftw(FftwBase):
)
variant(
"amd-dynamic-dispatcher",
default=True,
default=False,
when="@4.1: %aocc@4.1.0:",
description="Single portable optimized library"
" to execute on different x86 CPU architectures",
)
variant(
"amd-dynamic-dispatcher",
default=True,
default=False,
when="@3.2: %gcc",
description="Single portable optimized library"
" to execute on different x86 CPU architectures",
@@ -203,11 +202,10 @@ def configure(self, spec, prefix):
if not self.compiler.f77 or not self.compiler.fc:
options.append("--disable-fortran")
# Cross compilation is supported in amd-fftw by making use of target
# variable to set AMD_ARCH configure option.
# Spack user can not directly use AMD_ARCH for this purpose but should
# use target variable to set appropriate -march option in AMD_ARCH.
options.append(f"AMD_ARCH={optimization_flags(self.compiler, spec.target)}")
if "avx512" in spec.target:
options.append("CFLAGS=-mprefer-vector-width=512")
else:
options.append("CFLAGS=-mprefer-vector-width=256")
# Specific SIMD support.
# float and double precisions are supported

View File

@@ -148,6 +148,14 @@ class Ascent(CMakePackage, CudaPackage):
# https://github.com/Alpine-DAV/ascent/pull/1123
patch("ascent-find-raja-pr1123.patch", when="@0.9.0")
# patch for fix typo in coord_type
# https://github.com/Alpine-DAV/ascent/pull/1408
patch(
"https://github.com/Alpine-DAV/ascent/pull/1408.patch?full_index=1",
when="@0.9.3 %oneapi@2025:",
sha256="7de7f51e57f3d743c39ad80d8783a4eb482be1def51eb2d3f9259246c661f164",
)
##########################################################################
# package dependencies
###########################################################################
@@ -468,6 +476,9 @@ def hostconfig(self):
if cflags:
cfg.write(cmake_cache_entry("CMAKE_C_FLAGS", cflags))
cxxflags = cppflags + " ".join(spec.compiler_flags["cxxflags"])
if spec.satisfies("%oneapi@2025:"):
cxxflags += "-Wno-error=missing-template-arg-list-after-template-kw "
cxxflags += "-Wno-missing-template-arg-list-after-template-kw"
if cxxflags:
cfg.write(cmake_cache_entry("CMAKE_CXX_FLAGS", cxxflags))
fflags = " ".join(spec.compiler_flags["fflags"])

View File

@@ -23,6 +23,10 @@ class Bash(AutotoolsPackage, GNUMirrorPackage):
depends_on("c", type="build") # generated
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("ncurses")
depends_on("readline@8.2:", when="@5.2:")
depends_on("readline@5.0:")

View File

@@ -4,7 +4,6 @@
import spack.store
from spack.package import *
from spack.pkg.builtin.boost import Boost
class CbtfKrell(CMakePackage):
@@ -51,9 +50,17 @@ class CbtfKrell(CMakePackage):
description="build only the FE tool using the runtime_dir to point to target build.",
)
# Fix build errors with gcc >= 10
patch(
"https://github.com/OpenSpeedShop/cbtf-krell/commit/7d47761c6cd9110883bff9ca1e694af1475676f5.patch?full_index=1",
sha256="64ed80d18163ca04a67be4a13ac2d2553243fc24c6274d26981472e6e2050b8a",
)
# Dependencies for cbtf-krell
depends_on("cmake@3.0.2:", type="build")
depends_on("gotcha")
# For rpcgen
depends_on("rpcsvc-proto", type="build")
@@ -64,16 +71,11 @@ class CbtfKrell(CMakePackage):
depends_on("binutils@2.32")
# For boost
depends_on("boost@1.70.0:")
# TODO: replace this with an explicit list of components of Boost,
# for instance depends_on('boost +filesystem')
# See https://github.com/spack/spack/pull/22303 for reference
depends_on(Boost.with_default_variants)
depends_on("boost@1.70.0:+filesystem+graph+program_options+python+test+thread")
# For Dyninst
depends_on("dyninst@10.1.0", when="@develop")
depends_on("dyninst@10.1.0", when="@1.9.3:9999")
depends_on("dyninst@10.1.0:", when="@develop")
depends_on("dyninst@10.1.0:", when="@1.9.3:9999")
# For MRNet
depends_on("mrnet@5.0.1-3:+lwthreads", when="@develop", type=("build", "link", "run"))

View File

@@ -2,6 +2,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.build_systems.cmake import CMakeBuilder
from spack.package import *
@@ -81,13 +82,22 @@ class Celeritas(CMakePackage, CudaPackage, ROCmPackage):
depends_on("py-breathe", type="build", when="+doc")
depends_on("py-sphinx", type="build", when="+doc")
with when("+cuda"):
depends_on("thrust")
with when("+rocm"):
depends_on("hiprand")
depends_on("rocprim")
depends_on("rocrand")
depends_on("rocthrust")
for _std in _cxxstd_values:
depends_on("geant4 cxxstd=" + _std, when="+geant4 cxxstd=" + _std)
depends_on("root cxxstd=" + _std, when="+root cxxstd=" + _std)
depends_on("vecgeom cxxstd=" + _std, when="+vecgeom cxxstd=" + _std)
depends_on("vecgeom +cuda cuda_arch=none", when="+vecgeom +cuda cuda_arch=none")
for _arch in CudaPackage.cuda_arch_values:
depends_on("vecgeom+cuda cuda_arch=" + _arch, when="+vecgeom +cuda cuda_arch=" + _arch)
depends_on(f"vecgeom +cuda cuda_arch={_arch}", when=f"+vecgeom +cuda cuda_arch={_arch}")
conflicts("+rocm", when="+cuda", msg="AMD and NVIDIA accelerators are incompatible")
conflicts("+rocm", when="+vecgeom", msg="HIP support is only available with ORANGE")
@@ -111,7 +121,7 @@ def cmake_args(self):
from_variant("CELERITAS_BUILD_DOCS", "doc"),
define("CELERITAS_BUILD_DEMOS", False),
define("CELERITAS_BUILD_TESTS", False),
from_variant("Celeritas_USE_HIP", "rocm"),
from_variant("CELERITAS_USE_HIP", "rocm"),
define("CELERITAS_USE_MPI", False),
define("CELERITAS_USE_Python", True),
]
@@ -119,6 +129,22 @@ def cmake_args(self):
for pkg in ["CUDA", "Geant4", "HepMC3", "OpenMP", "ROOT", "SWIG", "VecGeom"]:
args.append(from_variant("CELERITAS_USE_" + pkg, pkg.lower()))
if self.spec.satisfies("+cuda"):
args.append(CMakeBuilder.define_cuda_architectures(self))
if self.spec.satisfies("+rocm"):
args.append(CMakeBuilder.define_hip_architectures(self))
args.append(
define(
"CMAKE_HIP_FLAGS",
" ".join(
[
f"-I{self.spec[p].prefix.include}"
for p in ["hiprand", "rocprim", "rocrand", "rocthrust"]
]
),
)
)
if self.version < Version("0.5"):
# JSON is required for 0.5 and later
args.append(define("CELERITAS_USE_JSON", True))

View File

@@ -92,9 +92,9 @@ def pgo_train(self):
# Set PGO training flags.
generate_mods = EnvironmentModifications()
generate_mods.append_flags("CFLAGS", "-fprofile-generate={}".format(reports))
generate_mods.append_flags("CXXFLAGS", "-fprofile-generate={}".format(reports))
generate_mods.append_flags("LDFLAGS", "-fprofile-generate={} --verbose".format(reports))
generate_mods.append_flags("CFLAGS", f"-fprofile-generate={reports}")
generate_mods.append_flags("CXXFLAGS", f"-fprofile-generate={reports}")
generate_mods.append_flags("LDFLAGS", f"-fprofile-generate={reports}")
with working_dir(self.build_directory, create=True):
cmake(*cmake_options, sources, extra_env=generate_mods)
@@ -118,14 +118,14 @@ def pgo_train(self):
# Clean the build dir.
rmtree(self.build_directory, ignore_errors=True)
if self.spec.satisfies("%clang") or self.spec.satisfies("apple-clang"):
if self.spec.satisfies("%clang") or self.spec.satisfies("%apple-clang"):
# merge reports
use_report = join_path(reports, "merged.prof")
raw_files = glob.glob(join_path(reports, "*.profraw"))
llvm_profdata("merge", "--output={}".format(use_report), *raw_files)
use_flag = "-fprofile-instr-use={}".format(use_report)
llvm_profdata("merge", f"--output={use_report}", *raw_files)
use_flag = f"-fprofile-instr-use={use_report}"
else:
use_flag = "-fprofile-use={}".format(reports)
use_flag = f"-fprofile-use={reports}"
# Set PGO use flags for next cmake phase.
use_mods = EnvironmentModifications()

View File

@@ -12,58 +12,11 @@ class CodeServer(Package):
homepage = "https://coder.com/docs/code-server/latest"
url = "https://github.com/coder/code-server/releases/download/v4.4.0/code-server-4.4.0-linux-amd64.tar.gz"
version("4.12.0", sha256="d50ee947c4144a6ff2656e664ecbb3f70b75168b8a6e8c3eef47787f3c240c26")
version("4.11.0", sha256="4eb233054941ec298caec6fc84dfba0a72c1bc5fadc0fe4896b10f3f4a291d51")
version("4.10.1", sha256="f34ce611a9c058982a5e9d200fdf009788e3a564e970b053f4145574bce21b09")
version("4.4.0", sha256="e3dd265acb18c2230c72d19bbce619ac5c1bd800ebb26e5e169c4d613069500d")
version("4.3.0", sha256="42c71e98de85270b164b023ef8eb0692cf7700c03081ba5a44eaca014a92eb57")
version("4.2.0", sha256="98be5bc43ac604c49ae11da259e318b581757a59a25edeee5cf55317ca589ec6")
version("4.1.0", sha256="f720b20d1f615b78f3a1be9b1614f3d99ed722b8da3047a4143dbe5835e52ce3")
version("4.0.2", sha256="68c11afa3288707a6880920013d8bac7404cd590eb4f63cac92979d0b0bf4fd1")
version("4.0.1", sha256="5fe6d26e9d19e685946f0f392d9c822e5303a800cac3ac54a6a2c26104d239fd")
version("3.12.0", sha256="d3ca41a55e36d73d80300702af2687e25d440cff6b613bb58a2c88d9b8a0a38f")
version("3.11.1", sha256="d34b0b79582196d59d44ac971aabb7f15cb05d837318b94f62470dc8475665e9")
version("3.11.0", sha256="dddb97f044ed615a4b8a526328fca6ad703b9c671a28a6090d84668a18755589")
version("3.10.2", sha256="47154a6b9e61a0313ba499dd5d948613a17841c2f580612f9721c31964622bf5")
version("3.10.1", sha256="18175624df78976488dbcc2a26f2582a71cef5ca0a419e691b1b70da0b27c7ef")
version("3.10.0", sha256="5dfce848747f3dd5074cba435cca6730ac99d6d3aa3f50e0a9bf222ad12d3e97")
version("3.9.3", sha256="eba42eaf868c2144795b1ac54929e3b252ae35403bf8553b3412a5ac4f365a41")
version("3.9.2", sha256="5dbda5ac598223006f72bcb700b133a752aabe4468ed8105806d1d69b5364408")
version("3.9.1", sha256="f2648a4387c5a5be8666fb82a7b8a58274c45b91942251ab337e202e078ae8a5")
version("3.9.0", sha256="229b0fb95d78a7f7ff0dd55bc151a7521fcd699af50151faf67f6c7ce51110f4")
version("3.8.1", sha256="130cf94e3921d0e2adfa33e875bf1aa81fd28548aac94fd31fbc589baa68d45f")
version("3.8.0", sha256="70b069f26b30c38cca5fa07b5f25db4d15976de80af3a644b9105d1b5e23e7d5")
version("3.7.4", sha256="01ca0e48df44df70cdf702644b013102024a5b30edf6c1fbb2e10b0310056382")
version("3.7.3", sha256="7a90f3171c9bc6f65266066e35cc34d48a032910c136ea21116d28f3d7214547")
version("3.7.2", sha256="c3054f214392b1b2eb4c77c57cb950ac5d733d349a426975e8bf32028e65a226")
version("3.7.1", sha256="bebd9e0c46e0fd4b4f295fd91fc2db135a694614db972095e9842bf7969f4cee")
version("3.7.0", sha256="5f8df8ed3924e8e594674d73fb50b00a06efa529f96a0495a5ee8c39c68f3ce1")
version("3.6.2", sha256="fd4ac7d61f3e1b2a5034f1706e409c77fad299adef0ede204828d8ecfe317e45")
version("3.6.1", sha256="bbe4ef9585e093b3521deb34a0820d2136172271862d6396df21c2e9a26c6374")
version("3.6.0", sha256="d1ae4f7263741e0551358d3ed77dad587b33b352d827623d4df25e98f9e21019")
version("3.5.0", sha256="90c19c84611becac4af1fb0bd5324ab30f9200769fa7914cd10ccb6b88c657bb")
version("3.4.1", sha256="afdb89f4dc7201c03cb35d4f8dc1ccb6060bd0da324a6789089de264d3406817")
version("3.4.0", sha256="918c28696b73b96dc9361977f93e788d5c8884b5d4a088d206f05d5b8bccb738")
version("3.3.1", sha256="57b9855b20f511e22776ee8a53d1ff30f864498814c4c0b0af3510f71d7a2969")
version("3.3.0", sha256="6ca5148a447b41753d5151c5a49a8af24122c7b0808609782aec454e66be4f2c")
version("3.2.0", sha256="a8157e8766d6a0e255c72db25e8677a57adb8d889d653e78750b4d26a6ff7400")
version("3.1.1", sha256="5dd922d28b2e351c146081849d987fb1e439ee7d53b941434b2eecb2a194da71")
version("3.1.0", sha256="5ef85c8f280ce781a176a8b77386b333efe892755a5c325a1782e4eac6016e59")
version("3.0.2", sha256="04367cfeb23991f3dc3f1ef8e3dfe5e9d683bb50c9e1fa69e3c21757facfd7ee")
version("4.96.4", sha256="b3f9025d00f2cdf61caf83945ef7225d4a3eb576c4c007e45868f45713e39c8e")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
def url_for_version(self, version):
if version <= Version("3.2.0"):
return "https://github.com/coder/code-server/releases/download/{0}/code-server-{0}-linux-x86_64.tar.gz".format(
version
)
else:
return "https://github.com/coder/code-server/releases/download/v{0}/code-server-{0}-linux-amd64.tar.gz".format(
version
)
def install(self, spec, prefix):
install_tree(".", prefix)

View File

@@ -18,7 +18,8 @@ class Cpuinfo(CMakePackage):
license("BSD-2-Clause")
version("main", branch="main")
version("2024-09-06", commit="094fc30b9256f54dad5ad23bcbfb5de74781422f") # py-torch@2.5.1:
version("2024-09-26", commit="1e83a2fdd3102f65c6f1fb602c1b320486218a99") # py-torch@2.6:
version("2024-09-06", commit="094fc30b9256f54dad5ad23bcbfb5de74781422f") # py-torch@2.5.1
version("2024-08-30", commit="fa1c679da8d19e1d87f20175ae1ec10995cd3dd3") # py-torch@2.5.0
version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3:2.4
version("2023-01-13", commit="6481e8bef08f606ddd627e4d3be89f64d62e1b8a") # py-torch@2.1:2.2

View File

@@ -25,6 +25,7 @@ class Dcap(AutotoolsPackage):
depends_on("m4", type="build")
depends_on("openssl")
depends_on("libxcrypt")
depends_on("zlib-api")
variant("plugins", default=True, description="Build plugins")

View File

@@ -19,6 +19,7 @@ class Detray(CMakePackage):
license("MPL-2.0", checked_by="stephenswat")
version("0.88.0", sha256="bda15501c9c96af961e24ce243982f62051c535b9fe458fb28336a19b54eb47d")
version("0.87.0", sha256="2d4a76432dd6ddbfc00b88b5d482072e471fefc264b60748bb1f9a123963576e")
version("0.86.0", sha256="98350c94e8a2395b8712b7102fd449536857e8158b38a96cc913c79b70301170")
version("0.85.0", sha256="a0121a27fd08243d4a6aab060e8ab379ad5129e96775b45f6a683835767fa8e7")

View File

@@ -20,6 +20,7 @@ class DlaFutureFortran(CMakePackage):
license("BSD-3-Clause")
version("main", branch="main")
version("0.3.0", sha256="404ce0d2d3df9317764450158901fd6cb2198b37f5687e9616519100ad6e9ece")
version("0.2.0", sha256="7fd3e1779c111b35f0d2701a024398b4f6e8dea4af523b6c8617d28c0b7ae61a")
version("0.1.0", sha256="9fd8a105cbb2f3e1daf8a49910f98fce68ca0b954773dba98a91464cf2e7c1da")
@@ -36,6 +37,7 @@ class DlaFutureFortran(CMakePackage):
depends_on("dla-future@0.4.1:0.5 +scalapack", when="@0.1.0")
depends_on("dla-future@0.6.0: +scalapack", when="@0.2.0:")
depends_on("dla-future@0.7.3: +scalapack", when="@0.3:")
depends_on("dla-future +shared", when="+shared")
depends_on("mpi", when="+test")

View File

@@ -17,6 +17,7 @@ class Duckdb(MakefilePackage):
maintainers("glentner", "teaguesterling")
version("master", branch="master")
version("1.2.0", sha256="f22c97e18c071fa8e43b5e150c03c6ab4bcc510cca6e6b50cbe13af8535fa701")
version("1.1.3", sha256="2aea0af898ad753fee82b776fea1bf78ccbc9648986e7f7a87372df5e74cdb98")
version("1.1.2", sha256="a3319a64c390ed0454c869b2e4fc0af2413cd49f55cd0f1400aaed9069cdbc4c")
version("1.1.1", sha256="a764cef80287ccfd8555884d8facbe962154e7c747043c0842cd07873b4d6752")
@@ -92,7 +93,6 @@ class Duckdb(MakefilePackage):
# Extensions
variant("autocomplete", default=True, description="Include autocomplete for CLI in build")
variant("excel", default=True, description="Include Excel formatting extension in build")
variant("fts", default=True, description="Include FTS (full text search) support in build")
variant("httpfs", default=True, description="Include HTTPFS (& S3) support in build")
variant("inet", default=True, description="Include INET (ip address) support in build")
variant("json", default=True, description="Include JSON support in build")
@@ -100,6 +100,14 @@ class Duckdb(MakefilePackage):
variant("tpce", default=False, description="Include TPCE in build")
variant("tpch", default=False, description="Include TPCH in build")
# FTS was moved to an out-of-tree extension after v1.1.3
variant(
"fts",
default=True,
description="Include FTS (full text search) support in build",
when="@:1.1",
)
# APIs
variant("python", default=True, description="Build with Python driver")
extends("python", when="+python")

View File

@@ -33,60 +33,30 @@ class Dyninst(CMakePackage):
version("10.2.1", sha256="8077c6c7a12577d2ffdcd07521c1eb1b7367da94d9a7ef10bf14053aeaae7ba1")
version("10.2.0", sha256="4212b93bef4563c7de7dce4258e899bcde52315a571087e87fde9f8040123b43")
version("10.1.0", sha256="4a121d70c1bb020408a7a697d74602e18250c3c85800f230566fcccd593c0129")
version("10.0.0", sha256="542fccf5c57c4fe784b1a9a9e3db01d40b16ad04e7174dc6f7eb23440485ba06")
version(
"9.3.2", tag="v9.3.2", commit="5d2ddacb273682daa014ae22f17f3575e05b411e", deprecated=True
)
version(
"9.3.0", tag="v9.3.0", commit="9b8e9c1f16d4616b827d2d36955604a8e3fb915c", deprecated=True
)
version(
"9.2.0", tag="v9.2.0", commit="3a6ad66df7294417cf61618acdcfcc0fecccb045", deprecated=True
)
version(
"9.1.0", tag="v9.1.0", commit="df6d090061bae7ff2ba5a6bd57bb2ecbf538ef7a", deprecated=True
)
version(
"8.2.1", tag="v8.2.1", commit="939afcbad1a8273636a3686a31b51dae4f1f0c11", deprecated=True
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
variant(
"openmp",
default=True,
description="Enable OpenMP support for ParseAPI " "(version 10.0.0 or later)",
)
variant("openmp", default=True, description="Enable OpenMP support for ParseAPI ")
variant("static", default=False, description="Build static libraries")
variant("stat_dysect", default=False, description="Patch for STAT's DySectAPI")
boost_libs = (
"+atomic+chrono+date_time+filesystem+system+thread+timer+container+random+exception"
depends_on(
"boost+atomic+chrono+date_time+filesystem+system+thread+timer+container+random+exception"
)
depends_on("boost@1.61.0:" + boost_libs, when="@10.1.0:")
depends_on("boost@1.61.0:1.69" + boost_libs, when="@:10.0")
depends_on("boost@1.67.0:" + boost_libs, when="@11.0.0:")
depends_on("boost@1.70.0:" + boost_libs, when="@12:12.3.0")
depends_on("boost@1.71.0:" + boost_libs, when="@13:")
depends_on("boost@1.61.0:", when="@10.1.0:")
depends_on("boost@1.67.0:", when="@11.0.0:")
depends_on("boost@1.70.0:", when="@12:12.3.0")
depends_on("boost@1.71.0:", when="@13:")
depends_on("libiberty+pic")
# Dyninst uses elfutils starting with 9.3.0, and used libelf
# before that.
# NB: Parallel DWARF parsing in Dyninst 10.2.0 requires a thread-
# safe libdw
# Parallel DWARF parsing requires a thread-safe libdw
depends_on("elfutils", type="link")
depends_on("elfutils@0.186:", type="link", when="@12.0.1:")
depends_on("elfutils@0.178:", type="link", when="@10.2.0:")
depends_on("elfutils", type="link", when="@9.3.0:10.1")
depends_on("libelf", type="link", when="@:9.2")
# Dyninst uses libdw from elfutils starting with 10.0, and used
# libdwarf before that.
depends_on("libdwarf", when="@:9")
with when("@:12.3.0"):
# findtbb.cmake in the dynist repo does not work with recent tbb
@@ -95,21 +65,16 @@ class Dyninst(CMakePackage):
conflicts("^intel-oneapi-tbb@2021.1:")
conflicts("^intel-parallel-studio")
depends_on("intel-tbb@2019.9:", when="@13.0.0:")
depends_on("tbb@2018.6.0:", when="@10.0.0:12.3.0")
depends_on("tbb")
requires("^[virtuals=tbb] intel-tbb@2019.9:", when="@13.0.0:")
with when("@13.0.0:"):
depends_on("cmake@3.14.0:", type="build")
conflicts("cmake@3.19.0")
depends_on("cmake@3.4.0:", type="build", when="@10.1.0:")
depends_on("cmake@3.0.0:", type="build", when="@10.0.0:10.0")
depends_on("cmake@2.8:", type="build", when="@:9")
patch("stat_dysect.patch", when="+stat_dysect")
patch("stackanalysis_h.patch", when="@9.2.0")
patch("v9.3.2-auto.patch", when="@9.3.2 %gcc@:4.7")
patch("tribool.patch", when="@9.3.0:10.0.0 ^boost@1.69:")
patch(
"missing_include_deque.patch",
when="@10.0.0:12.2.0",
@@ -124,92 +89,21 @@ class Dyninst(CMakePackage):
# Version 11.0 requires a C++11-compliant ABI
conflicts("%gcc@:5", when="@11.0.0:")
# Versions 9.3.x used cotire, but have no knob to turn it off.
# Cotire has no real use for one-time builds and can break
# parallel builds with both static and shared libs.
@when("@9.3.0:9.3")
def patch(self):
filter_file("USE_COTIRE true", "USE_COTIRE false", "cmake/shared.cmake")
# New style cmake args, starting with 10.1.
@when("@10.1.0:")
def cmake_args(self):
spec = self.spec
args = [
"-DBoost_ROOT_DIR=%s" % spec["boost"].prefix,
"-DElfUtils_ROOT_DIR=%s" % spec["elf"].prefix,
"-DLibIberty_ROOT_DIR=%s" % spec["libiberty"].prefix,
"-DTBB_ROOT_DIR=%s" % spec["tbb"].prefix,
self.define("Boost_ROOT_DIR", spec["boost"].prefix),
self.define("ElfUtils_ROOT_DIR", spec["elfutils"].prefix),
self.define("LibIberty_ROOT_DIR", spec["libiberty"].prefix),
self.define("TBB_ROOT_DIR", spec["tbb"].prefix),
self.define("LibIberty_LIBRARIES", spec["libiberty"].libs),
self.define_from_variant("USE_OpenMP", "openmp"),
self.define_from_variant("ENABLE_STATIC_LIBS", "static"),
]
if spec.satisfies("+openmp"):
args.append("-DUSE_OpenMP=ON")
else:
args.append("-DUSE_OpenMP=OFF")
if spec.satisfies("+static"):
args.append("-DENABLE_STATIC_LIBS=YES")
else:
args.append("-DENABLE_STATIC_LIBS=NO")
# Make sure Dyninst doesn't try to build its own dependencies
# outside of Spack
# Make sure Dyninst doesn't try to build its own dependencies outside of Spack
if spec.satisfies("@10.2.0:12.3.0"):
args.append("-DSTERILE_BUILD=ON")
return args
# Old style cmake args, up through 10.0.
@when("@:10.0")
def cmake_args(self):
spec = self.spec
# Elf -- the directory containing libelf.h.
elf = spec["elf"].prefix
elf_include = os.path.dirname(find_headers("libelf", elf.include, recursive=True)[0])
# Dwarf -- the directory containing elfutils/libdw.h or
# libdwarf.h, and the path to libdw.so or libdwarf.so.
if spec.satisfies("@10.0.0:"):
dwarf_include = elf.include
dwarf_lib = find_libraries("libdw", elf, recursive=True)
else:
dwarf_include = spec["libdwarf"].prefix.include
dwarf_lib = spec["libdwarf"].libs
args = [
"-DPATH_BOOST=%s" % spec["boost"].prefix,
"-DIBERTY_LIBRARIES=%s" % spec["libiberty"].libs,
"-DLIBELF_INCLUDE_DIR=%s" % elf_include,
"-DLIBELF_LIBRARIES=%s" % spec["elf"].libs,
"-DLIBDWARF_INCLUDE_DIR=%s" % dwarf_include,
"-DLIBDWARF_LIBRARIES=%s" % dwarf_lib,
]
# TBB include and lib directories, version 10.x or later.
if spec.satisfies("@10.0.0:"):
args.extend(
[
"-DTBB_INCLUDE_DIRS=%s" % spec["tbb"].prefix.include,
"-DTBB_LIBRARY=%s" % spec["tbb"].prefix.lib,
]
)
# Openmp applies to version 10.x or later.
if spec.satisfies("@10.0.0:"):
if spec.satisfies("+openmp"):
args.append("-DUSE_OpenMP=ON")
else:
args.append("-DUSE_OpenMP=OFF")
# Static libs started with version 9.1.0.
if spec.satisfies("@9.1.0:"):
if spec.satisfies("+static"):
args.append("-DENABLE_STATIC_LIBS=1")
else:
args.append("-DENABLE_STATIC_LIBS=NO")
args.append(self.define("STERILE_BUILD", True))
return args

View File

@@ -1,11 +0,0 @@
--- a/dataflowAPI/h/stackanalysis.h 2016-06-29 14:54:14.000000000 -0700
+++ b/dataflowAPI/h/stackanalysis.h 2016-08-02 09:50:13.619079000 -0700
@@ -331,7 +331,7 @@
// To build intervals, we must replay the effect of each instruction.
// To avoid sucking enormous time, we keep those transfer functions around...
- typedef std::map<ParseAPI::Block *, std::map<Offset, TransferFuncs>>
+ typedef std::map<ParseAPI::Block *, std::map<Offset, TransferFuncs> >
InstructionEffects;
DATAFLOW_EXPORT StackAnalysis();

View File

@@ -1,34 +0,0 @@
Add explicit casts from boost::tribool to bool. Starting with 1.69,
tribool added 'explicit' to the conversion operator to bool, and this
was breaking the build when using boost >= 1.69.
Patch is from: https://github.com/dyninst/dyninst/commit/54a2debd9
diff --git a/dataflowAPI/rose/util/Message.C b/dataflowAPI/rose/util/Message.C
index a8a66ad4c..5e276f97d 100644
--- a/dataflowAPI/rose/util/Message.C
+++ b/dataflowAPI/rose/util/Message.C
@@ -1123,7 +1123,7 @@ StreamBuf::bake() {
destination_->bakeDestinations(message_.properties(), baked_/*out*/);
anyUnbuffered_ = false;
for (BakedDestinations::const_iterator bi=baked_.begin(); bi!=baked_.end() && !anyUnbuffered_; ++bi)
- anyUnbuffered_ = !bi->second.isBuffered;
+ anyUnbuffered_ = static_cast<bool>(!bi->second.isBuffered);
isBaked_ = true;
}
}
diff --git a/dataflowAPI/rose/util/Message.h b/dataflowAPI/rose/util/Message.h
index 816f68d2e..03592cb97 100644
--- a/dataflowAPI/rose/util/Message.h
+++ b/dataflowAPI/rose/util/Message.h
@@ -386,7 +386,8 @@ struct SAWYER_EXPORT ColorSpec {
ColorSpec(AnsiColor fg, AnsiColor bg, bool bold): foreground(fg), background(bg), bold(bold) {}
/** Returns true if this object is in its default-constructed state. */
- bool isDefault() const { return COLOR_DEFAULT==foreground && COLOR_DEFAULT==background && !bold; }
+ bool isDefault() const { return COLOR_DEFAULT==foreground && COLOR_DEFAULT==background
+ && static_cast<bool>(!bold); }
};
/** Colors to use for each message importance.

View File

@@ -1,73 +0,0 @@
Change some 'for (const auto& t: type)' usage to the older but
equivalent 'for (auto t = type.begin(); ...)'. This patch allows
dyninst 9.3.2 to build with gcc 4.4 which doesn't support the newer
syntax.
diff --git a/dyninstAPI/src/BPatch.C b/dyninstAPI/src/BPatch.C
index ebf7db0c4..49fe69f9a 100644
--- a/dyninstAPI/src/BPatch.C
+++ b/dyninstAPI/src/BPatch.C
@@ -166,16 +166,16 @@ BPatch::BPatch()
stdTypes = BPatch_typeCollection::getGlobalTypeCollection();
vector<Type *> *sTypes = Symtab::getAllstdTypes();
BPatch_type* type = NULL;
- for(const auto& t: *sTypes) {
- stdTypes->addType(type = new BPatch_type(t));
+ for(auto t = sTypes->begin(); t != sTypes->end(); ++t) {
+ stdTypes->addType(type = new BPatch_type(*t));
type->decrRefCount();
}
delete sTypes;
builtInTypes = new BPatch_builtInTypeCollection;
sTypes = Symtab::getAllbuiltInTypes();
- for(const auto& t: *sTypes) {
- builtInTypes->addBuiltInType(type = new BPatch_type(t));
+ for(auto t = sTypes->begin(); t != sTypes->end(); ++t) {
+ builtInTypes->addBuiltInType(type = new BPatch_type(*t));
type->decrRefCount();
}
delete sTypes;
diff --git a/dyninstAPI/src/BPatch_collections.C b/dyninstAPI/src/BPatch_collections.C
index f4e2986a3..129f8b74a 100644
--- a/dyninstAPI/src/BPatch_collections.C
+++ b/dyninstAPI/src/BPatch_collections.C
@@ -172,12 +172,12 @@ BPatch_typeCollection::~BPatch_typeCollection()
assert(refcount == 0 ||
refcount == 1);
- for(const auto& t: typesByName) {
- t.second->decrRefCount();
+ for(auto t = typesByName.begin(); t != typesByName.end(); ++t) {
+ t->second->decrRefCount();
}
- for(const auto& t: typesByID) {
- t.second->decrRefCount();
+ for(auto t = typesByID.begin(); t != typesByID.end(); ++t) {
+ t->second->decrRefCount();
}
}
diff --git a/symtabAPI/src/Collections.C b/symtabAPI/src/Collections.C
index 7431dd6bf..43c339f45 100644
--- a/symtabAPI/src/Collections.C
+++ b/symtabAPI/src/Collections.C
@@ -318,12 +318,12 @@ typeCollection::typeCollection() :
typeCollection::~typeCollection()
{
// delete all of the types
- for(const auto& t: typesByName) {
- t.second->decrRefCount();
+ for(auto t = typesByName.begin(); t != typesByName.end(); ++t) {
+ t->second->decrRefCount();
}
- for(const auto& t: typesByID) {
- t.second->decrRefCount();
+ for(auto t = typesByID.begin(); t != typesByID.end(); ++t) {
+ t->second->decrRefCount();
}
}

View File

@@ -14,7 +14,7 @@ class Enzyme(CMakePackage):
"""
homepage = "https://enzyme.mit.edu"
url = "https://github.com/wsmoses/Enzyme/archive/v0.0.15.tar.gz"
url = "https://github.com/wsmoses/Enzyme/archive/v0.0.172.tar.gz"
list_url = "https://github.com/wsmoses/Enzyme/releases"
git = "https://github.com/wsmoses/Enzyme"
@@ -23,6 +23,7 @@ class Enzyme(CMakePackage):
root_cmakelists_dir = "enzyme"
version("main", branch="main")
version("0.0.172", sha256="688200164787d543641cb446cff20f6a8e8b5c92bb7032ebe7f867efa67ceafb")
version("0.0.135", sha256="49c798534faec7ba524a3ed053dd4352d690a44d3cad5a14915c9398dc9b175b")
version("0.0.100", sha256="fbc53ec02adc0303ff200d7699afface2d9fbc7350664e6c6d4c527ef11c2e82")
version("0.0.81", sha256="4c17d0c28f0572a3ab97a60f1e56bbc045ed5dd64c2daac53ae34371ca5e8b34")
@@ -42,7 +43,8 @@ class Enzyme(CMakePackage):
depends_on("llvm@7:14", when="@0.0.48:0.0.68")
depends_on("llvm@9:16", when="@0.0.69:0.0.79")
depends_on("llvm@11:16", when="@0.0.80:0.0.99")
depends_on("llvm@11:19", when="@0.0.100:")
depends_on("llvm@11:19", when="@0.0.100:0.0.148")
depends_on("llvm@15:19", when="@0.0.149:")
depends_on("cmake@3.13:", type="build")
def cmake_args(self):

View File

@@ -73,10 +73,6 @@ class Extrae(AutotoolsPackage):
depends_on("mpi")
depends_on("libunwind")
# TODO: replace this with an explicit list of components of Boost,
# for instance depends_on('boost +filesystem')
# See https://github.com/spack/spack/pull/22303 for reference
depends_on(Boost.with_default_variants)
depends_on("libdwarf")
depends_on("elf", type="link")
depends_on("libxml2")
@@ -92,6 +88,10 @@ class Extrae(AutotoolsPackage):
variant("dyninst", default=False, description="Use dyninst for dynamic code installation")
with when("+dyninst"):
depends_on("dyninst@10.1.0:")
# TODO: replace this with an explicit list of components of Boost,
# for instance depends_on('boost +filesystem')
# See https://github.com/spack/spack/pull/22303 for reference
depends_on(Boost.with_default_variants)
depends_on("elfutils", when="@4.1.2:")
depends_on("intel-oneapi-tbb", when="@4.1.2:")
@@ -127,7 +127,6 @@ def configure_args(self):
args = [
"--with-mpi=%s" % mpiroot,
"--with-unwind=%s" % spec["libunwind"].prefix,
"--with-boost=%s" % spec["boost"].prefix,
"--with-dwarf=%s" % spec["libdwarf"].prefix,
"--with-elf=%s" % spec["elf"].prefix,
"--with-xml-prefix=%s" % spec["libxml2"].prefix,
@@ -141,7 +140,10 @@ def configure_args(self):
)
if spec.satisfies("+dyninst"):
args += ["--with-dyninst={spec['dyninst'].prefix}"]
args += [
f"--with-dyninst={spec['dyninst'].prefix}",
f"--with-boost={spec['boost'].prefix}",
]
if spec.satisfies("@4.1.2:"):
args += [

View File

@@ -19,6 +19,7 @@ class Fargparse(CMakePackage):
version("develop", branch="develop")
version("main", branch="main")
version("1.9.0", sha256="c83c13fa90b6b45adf8d84fe00571174acfa118d2a0d1e8c467f74bbd7dec49d")
version("1.8.0", sha256="37108bd3c65d892d8c24611ce4d8e5451767e4afe81445fde67eab652178dd01")
version("1.7.0", sha256="9889e7eca9c020b742787fba2be0ba16edcc3fcf52929261ccb7d09996a35f89")
version("1.6.0", sha256="055a0af44f50c302f8f20a8bcf3d26c5bbeacf5222cdbaa5b19da4cff56eb9c0")

View File

@@ -20,12 +20,16 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
tags = ["e4s"]
version("develop", branch="develop", deprecated=True)
version("2.3.1", tag="v2.3.1", commit="6c04b9b21790533e457764bd7f8f26757db1552f")
version("2.3.0", tag="v2.3.0", commit="90bc8267fceb02060e54646f73b45d4252aef491")
version("2.2.1", tag="v2.2.1", commit="84b5b232aebab40610f57387778db80f6c8c84c5")
version("2.2.0", tag="v2.2.0", commit="dd531ac16c5df124d76e385c6ebe9b9589c2d3ad")
version("2.1.0", tag="v2.1.0", commit="533df139c267e2a93c268dfe68f9aec55de11cf0")
version("2.0.0", tag="v2.0.0", commit="5ceebadf75d1c98999ea9e9446926722d061ec22")
version(
"2.1.0", tag="v2.1.0", commit="533df139c267e2a93c268dfe68f9aec55de11cf0", deprecated=True
)
version(
"2.0.0", tag="v2.0.0", commit="5ceebadf75d1c98999ea9e9446926722d061ec22", deprecated=True
)
variant(
"backend",
@@ -46,8 +50,8 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
description="Set Caliper Profiling Detail",
multi=False,
)
variant("kokkos", default=False, description="Enable Kokkos Support")
variant("openmp", default=False, description="Enable OpenMP Support")
variant("kokkos", default=False, description="Enable Kokkos Support", when="@:2.3.1")
variant("openmp", default=False, description="Enable OpenMP Support", when="@:2.3.1")
depends_on("c", type="build")
depends_on("cxx", type="build")
@@ -69,18 +73,22 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
depends_on("boost@1.79.0:", when="@2.2:")
depends_on("kokkos@3.2.00:", when="+kokkos")
depends_on("kokkos@3.7:", when="+kokkos @2.3:")
depends_on("kokkos +cuda +cuda_constexpr +cuda_lambda", when="+kokkos +cuda")
depends_on("kokkos@3.7:", when="@2.4:")
depends_on("kokkos +cuda", when="+kokkos +cuda")
requires("^kokkos +cuda_constexpr +cuda_lambda", when="^kokkos +cuda")
depends_on("kokkos +rocm", when="+kokkos +rocm")
depends_on("kokkos +openmp", when="+kokkos +openmp")
depends_on("legion@cr-20210122", when="backend=legion @2.0:2.2.1")
requires("+openmp", when="@:2.3.1 ^kokkos +openmp")
depends_on("legion@cr-20210122", when="backend=legion @2.0:2.1.0")
depends_on("legion@cr-20230307", when="backend=legion @2.2.0:2.2.1")
depends_on("legion@24.03.0:", when="backend=legion @2.2.2:")
depends_on("legion@24.09.0:", when="backend=legion @2.3.1:")
depends_on("legion+shared", when="backend=legion +shared")
depends_on("legion+hdf5", when="backend=legion +hdf5")
depends_on("legion+kokkos", when="backend=legion +kokkos")
depends_on("legion+openmp", when="backend=legion +openmp")
depends_on("legion+cuda", when="backend=legion +cuda")
depends_on("legion+rocm", when="backend=legion +rocm")
depends_on("legion+kokkos", when="backend=legion ^kokkos")
depends_on("legion+openmp", when="backend=legion ^kokkos+openmp")
depends_on("legion+cuda", when="backend=legion ^kokkos+cuda")
depends_on("legion+rocm", when="backend=legion ^kokkos+rocm")
depends_on("hdf5@1.10.7:", when="backend=legion +hdf5")
depends_on("hpx@1.10.0: cxxstd=17 malloc=system", when="backend=hpx")
depends_on("mpi")
@@ -97,11 +105,13 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
# Propagate cuda_arch requirement to dependencies
for _flag in CudaPackage.cuda_arch_values:
requires(f"+cuda cuda_arch={_flag}", when=f"^kokkos +cuda cuda_arch={_flag}")
depends_on(f"kokkos cuda_arch={_flag}", when=f"+cuda+kokkos cuda_arch={_flag}")
depends_on(f"legion cuda_arch={_flag}", when=f"backend=legion +cuda cuda_arch={_flag}")
# Propagate amdgpu_target requirement to dependencies
for _flag in ROCmPackage.amdgpu_targets:
requires(f"+rocm amdgpu_target={_flag}", when=f"^kokkos +rocm amdgpu_target={_flag}")
depends_on(f"kokkos amdgpu_target={_flag}", when=f"+kokkos +rocm amdgpu_target={_flag}")
depends_on(
f"legion amdgpu_target={_flag}", when=f"backend=legion +rocm amdgpu_target={_flag}"
@@ -130,13 +140,13 @@ def cmake_args(self):
self.define_from_variant("ENABLE_DOCUMENTATION", "doc"),
]
if self.spec.satisfies("+rocm"):
if self.spec.satisfies("^kokkos +rocm"):
options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc))
options.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc))
if self.spec.satisfies("backend=legion"):
# CMake pulled in via find_package(Legion) won't work without this
options.append(self.define("HIP_PATH", "{0}/hip".format(spec["hip"].prefix)))
elif self.spec.satisfies("+kokkos"):
elif self.spec.satisfies("^kokkos"):
options.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx))
else:
# kept for supporing version prior to 2.2

View File

@@ -22,6 +22,7 @@ class FluxSched(CMakePackage, AutotoolsPackage):
license("LGPL-3.0-only")
version("master", branch="master")
version("0.42.1", sha256="ab56b257e4918ad7e26ef6a375d0ea500a4929bf6633937f0c11c06e21db56b9")
version("0.41.0", sha256="c89baf72867031847748c157aa99f3b36755f2801df917aae66010d2112e10fe")
version("0.40.0", sha256="1484befcf8628b0af7833bf550d0bb3864db32b70f2c1bb363c35e30ada1ecc5")
version("0.39.0", sha256="7e87029f8ad17b9286096e4e2d44982b5d6634908aefde3282497bdd3f44f2f8")

View File

@@ -18,6 +18,8 @@ class Fms(CMakePackage):
license("LGPL-3.0-or-later")
maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett", "rem1776", "climbfuji")
version("2025.01", sha256="19997ef5468a06c60c1e7af3a56ab7f8a33da814a30827293ca34df5bd888d6f")
version("2024.03", sha256="4c1e6bdfafcfec19a4a1c08770c313ab3135d47ec8319f6b07f24d2589caf44d")
version("2024.02", sha256="47e5740bb066f5eb032e1de163eb762c7258880a2932f4cc4e34e769e0cc2b0e")
version(
"2024.01.01", sha256="41c8686bad2b1aed76275e35cbe1af855f7dfce9b6d8907744ea2e8174758f6a"
@@ -64,6 +66,13 @@ class Fms(CMakePackage):
when="@2023.03",
)
variant(
"portable_kinds",
description="Use iso_c_binding variable kinds",
when="@2025.01:",
default=False,
)
variant("shared", description="Build shared libraries", when="@2024.02:", default=False)
# What the following patch is providing is available in version 2024.03
# and newer so it is only needed to 2024.02
@@ -131,6 +140,7 @@ def cmake_args(self):
self.define_from_variant("OPENMP"),
self.define_from_variant("ENABLE_QUAD_PRECISION", "quad_precision"),
self.define_from_variant("SHARED_LIBS", "shared"),
self.define_from_variant("PORTABLE_KINDS", "portable_kinds"),
self.define_from_variant("WITH_YAML", "yaml"),
self.define_from_variant("CONSTANTS"),
self.define_from_variant("LARGEFILE", "large_file"),

View File

@@ -17,6 +17,7 @@ class Geomodel(CMakePackage):
license("Apache-2.0", checked_by="wdconinc")
version("6.9.0", sha256="ea34dad8a0cd392e06794b8a1b7407dd6ad617fefd19fb4cccdf36b154749793")
version("6.8.0", sha256="4dfd5a932955ee2618a880bb210aed9ce7087cfadd31f23f92e5ff009c8384eb")
version("6.7.0", sha256="bfa69062ba191d0844d7099b28c0d6c3c0f87e726dacfaa21dba7a6f593d34bf")
version("6.6.0", sha256="3cefeaa409177d45d3fa63e069b6496ca062991b0d7d71275b1748487659e91b")

View File

@@ -24,6 +24,7 @@ class GftlShared(CMakePackage):
version("main", branch="main")
version("1.10.0", sha256="42158fe75fa6bee336516c7531b4c6c4e7252dee2fed541eec740209a07ceafe")
version("1.9.0", sha256="a3291ce61b512fe88628cc074b02363c2ba3081e7b453371089121988482dd6f")
version("1.8.0", sha256="3450161508c573ea053b2a23cdbf2a1d6fd6fdb78c162d31fc0019da0f8dd03c")
version("1.7.0", sha256="8ba567133fcee6b93bc71f61b3bb2053b4b07c6d78f6ad98a04dfc40aa478de7")

View File

@@ -38,6 +38,7 @@ class Gftl(CMakePackage):
version("develop", branch="develop")
version("main", branch="main")
version("1.15.1", sha256="13b9e17b7ec5e9ba19d0ee3ad1957bfa2015055b654891c6bb0bbe68b7a040d7")
version("1.14.0", sha256="bf8e3ba3f708ea327c7eb1a5bd1afdce41358c6df1a323aba0f73575c25d5fc8")
version("1.13.0", sha256="d8ef4bca5fb67e63dcd69e5377a0cef8336b00178a97450e79010552000d0a52")
version("1.12.0", sha256="b50e17cb2109372819b3ee676e6e61fd3a517dc4c1ea293937c8a83f03b0cbd6")

View File

@@ -38,6 +38,8 @@ class Go(Package):
license("BSD-3-Clause")
version("1.23.6", sha256="039c5b04e65279daceee8a6f71e70bd05cf5b801782b6f77c6e19e2ed0511222")
version("1.23.5", sha256="a6f3f4bbd3e6bdd626f79b668f212fbb5649daf75084fb79b678a0ae4d97423b")
version("1.23.4", sha256="ad345ac421e90814293a9699cca19dd5238251c3f687980bbcae28495b263531")
version("1.23.3", sha256="8d6a77332487557c6afa2421131b50f83db4ae3c579c3bc72e670ee1f6968599")
version("1.23.2", sha256="36930162a93df417d90bd22c6e14daff4705baac2b02418edda671cdfa9cd07f")

View File

@@ -23,6 +23,7 @@ class Harfbuzz(MesonPackage, AutotoolsPackage):
license("MIT")
version("10.2.0", sha256="620e3468faec2ea8685d32c46a58469b850ef63040b3565cde05959825b48227")
version("10.1.0", sha256="6ce3520f2d089a33cef0fc48321334b8e0b72141f6a763719aaaecd2779ecb82")
version("10.0.1", sha256="b2cb13bd351904cb9038f907dc0dee0ae07127061242fe3556b2795c4e9748fc")
version("10.0.0", sha256="c2dfe016ad833a5043ecc6579043f04e8e6d50064e02ad449bb466e6431e3e04")

View File

@@ -0,0 +1,177 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import spack.build_systems.cmake
from spack.package import *
class HipTests(CMakePackage):
"""This repository provides unit tests for HIP implementation."""
homepage = "https://github.com/ROCm/hip-tests"
url = "https://github.com/ROCm/hip-tests/archive/refs/tags/rocm-6.1.2.tar.gz"
git = "https://github.com/ROCm/hip-tests.git"
tags = ["rocm"]
maintainers("srekolam", "renjithravindrankannath", "afzpatel")
version("6.3.1", sha256="0fc1cf4f46f2bbef377d65803d86c2489b01b598c468070c79c5114a661f07c6")
version("6.3.0", sha256="8081d4ab1a43ffa1cebd646668d83008b799ab98c14daf7b455922355a439c8a")
version("6.2.4", sha256="1478b49583d09cb3a96e26ec3bf8dc5ff3e3ec72fa133bb6d7768595d825051e")
version("6.2.1", sha256="90fcf0169889533b882d289f9cb8a7baf9bd46a3ce36752b915083931dc839f1")
version("6.2.0", sha256="314837dbac78be71844ceb959476470c484fdcd4fb622ff8de9277783e0fcf1c")
version("6.1.2", sha256="5b14e4a30d8d8fb56c43e262009646ba9188eac1c8ff882d9a606a4bec69b56b")
version("6.1.1", sha256="10c96ee72adf4580056292ab17cfd858a2fd7bc07abeb41c6780bd147b47f7af")
version("6.1.0", sha256="cf3a6a7c43116032d933cc3bc88bfc4b17a4ee1513c978e751755ca11a5ed381")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake", type="run")
for ver in ["6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1", "6.2.4", "6.3.0", "6.3.1"]:
depends_on(f"rocm-cmake@{ver}:", type="build", when=f"@{ver}")
depends_on(f"hip@{ver}", when=f"@{ver}")
depends_on(f"rocm-core@{ver}", when=f"@{ver}")
depends_on(f"rocminfo@{ver}", when=f"@{ver}")
depends_on(f"hipify-clang@{ver}", when=f"@{ver}")
depends_on(f"llvm-amdgpu@{ver}", when=f"@{ver}")
root_cmakelists_dir = "catch"
def patch(self):
filter_file(
"${ROCM_PATH}/bin/rocm_agent_enumerator",
f"{self.spec['rocminfo'].prefix}/bin/rocm_agent_enumerator",
"catch/CMakeLists.txt",
string=True,
)
filter_file(
"/opt/rocm/bin/rocm_agent_enumerator",
f"{self.spec['rocminfo'].prefix}/bin/rocm_agent_enumerator",
"catch/hipTestMain/hip_test_context.cc",
string=True,
)
filter_file(
"${HIP_PATH}/llvm",
self.spec["llvm-amdgpu"].prefix,
"samples/2_Cookbook/17_llvm_ir_to_executable/CMakeLists.txt",
"samples/2_Cookbook/16_assembly_to_executable/CMakeLists.txt",
string=True,
)
filter_file(
"${ROCM_PATH}/llvm",
self.spec["llvm-amdgpu"].prefix,
"catch/CMakeLists.txt",
"samples/2_Cookbook/16_assembly_to_executable/CMakeLists.txt",
"samples/2_Cookbook/21_cmake_hip_cxx_clang/CMakeLists.txt",
"samples/2_Cookbook/18_cmake_hip_device/CMakeLists.txt",
"samples/2_Cookbook/17_llvm_ir_to_executable/CMakeLists.txt",
"samples/2_Cookbook/23_cmake_hiprtc/CMakeLists.txt",
"samples/2_Cookbook/22_cmake_hip_lang/CMakeLists.txt",
"samples/2_Cookbook/19_cmake_lang/CMakeLists.txt",
string=True,
)
filter_file(
"${CMAKE_PREFIX_PATH}/bin/hipify-perl",
f"{self.spec['hipify-clang'].prefix.bin}/hipify-perl",
"samples/0_Intro/square/CMakeLists.txt",
string=True,
)
def setup_build_environment(self, env):
env.set("CXX", self.spec["hip"].hipcc)
def cmake_args(self):
args = [
self.define("HIP_PLATFORM", "amd"),
self.define("HIP_PATH", self.spec["hip"].prefix),
self.define("ROCM_PATH", self.spec["hip"].prefix),
]
if self.spec.satisfies("^cmake@3.21.0:3.21.2"):
args.append(self.define("__skip_rocmclang", "ON"))
return args
def build(self, spec, prefix):
with working_dir(self.build_directory):
make("build_tests")
@run_after("install")
def cache_test_sources(self):
"""Copy the tests source files after the package is installed to an
install test subdirectory for use during `spack test run`."""
cache_extra_test_sources(self, "samples")
def test_samples(self):
"""build and run all hip samples"""
sample_test_binaries = [
"0_Intro/bit_extract/bit_extract",
"0_Intro/module_api/launchKernelHcc.hip.out",
"0_Intro/module_api/runKernel.hip.out",
"0_Intro/module_api/defaultDriver.hip.out",
"0_Intro/module_api_global/runKernel1.hip.out",
"0_Intro/square/square",
"1_Utils/hipDispatchLatency/hipDispatchEnqueueRateMT",
"1_Utils/hipDispatchLatency/hipDispatchLatency",
"1_Utils/hipInfo/hipInfo",
"2_Cookbook/0_MatrixTranspose/MatrixTranspose",
"2_Cookbook/1_hipEvent/hipEvent",
"2_Cookbook/3_shared_memory/sharedMemory",
"2_Cookbook/4_shfl/shfl",
"2_Cookbook/5_2dshfl/2dshfl",
"2_Cookbook/6_dynamic_shared/dynamic_shared",
"2_Cookbook/8_peer2peer/peer2peer",
"2_Cookbook/9_unroll/unroll",
"2_Cookbook/10_inline_asm/inline_asm",
"2_Cookbook/11_texture_driver/texture2dDrv",
"2_Cookbook/12_cmake_hip_add_executable/MatrixTranspose1",
"2_Cookbook/13_occupancy/occupancy",
"2_Cookbook/14_gpu_arch/gpuarch",
"2_Cookbook/15_static_library/device_functions/test_device_static",
"2_Cookbook/15_static_library/host_functions/test_opt_static",
"2_Cookbook/16_assembly_to_executable/square_asm.out",
"2_Cookbook/17_llvm_ir_to_executable/square_ir.out",
"2_Cookbook/18_cmake_hip_device/test_cpp",
"2_Cookbook/19_cmake_lang/test_cpp1",
"2_Cookbook/19_cmake_lang/test_fortran",
"2_Cookbook/21_cmake_hip_cxx_clang/square1",
"2_Cookbook/22_cmake_hip_lang/square2",
"2_Cookbook/23_cmake_hiprtc/test",
]
test_dir = join_path(self.test_suite.current_test_cache_dir, "samples")
prefix_paths = ";".join(spack.build_systems.cmake.get_cmake_prefix_path(self))
clang_cpp_path = join_path(self.spec["llvm-amdgpu"].prefix, "bin", "clang++")
clang_path = join_path(self.spec["llvm-amdgpu"].prefix, "bin", "clang")
cc_options = [
f"-DCMAKE_MODULE_PATH={self.spec['hip'].prefix.lib.cmake.hip}",
f"-DCMAKE_PREFIX_PATH={prefix_paths}",
f"-DCMAKE_CXX_COMPILER={clang_cpp_path}",
f"-DCMAKE_C_COMPILER={clang_path}",
f"-DHIP_HIPCC_EXECUTABLE={self.spec['hip'].prefix.bin}/hipcc",
f"-DCMAKE_HIP_COMPILER_ROCM={clang_cpp_path}",
".",
]
cmake = which(self.spec["cmake"].prefix.bin.cmake)
with working_dir(test_dir, create=True):
cmake(*cc_options)
make("build_samples")
for binary_path in sample_test_binaries:
# binaries need to run in their directories
bin_dir, binary = os.path.split(binary_path)
with working_dir(bin_dir, create=True):
with test_part(
self,
"test_sample_{0}".format(binary),
purpose="configure, build and run test: {0}".format(binary),
):
exe = Executable(binary)
if binary == "hipDispatchEnqueueRateMT":
options = ["16", "0"]
else:
options = []
exe(*options)

View File

@@ -5,7 +5,6 @@
import os
import re
import spack.build_environment
from spack.hooks.sbang import filter_shebang
from spack.package import *
@@ -325,33 +324,6 @@ class Hip(CMakePackage):
when=f"@{d_version} +cuda",
)
# Add hiptests sources thru the below
for d_version, d_shasum in [
("6.3.1", "0fc1cf4f46f2bbef377d65803d86c2489b01b598c468070c79c5114a661f07c6"),
("6.3.0", "8081d4ab1a43ffa1cebd646668d83008b799ab98c14daf7b455922355a439c8a"),
("6.2.4", "1478b49583d09cb3a96e26ec3bf8dc5ff3e3ec72fa133bb6d7768595d825051e"),
("6.2.1", "90fcf0169889533b882d289f9cb8a7baf9bd46a3ce36752b915083931dc839f1"),
("6.2.0", "314837dbac78be71844ceb959476470c484fdcd4fb622ff8de9277783e0fcf1c"),
("6.1.2", "5b14e4a30d8d8fb56c43e262009646ba9188eac1c8ff882d9a606a4bec69b56b"),
("6.1.1", "10c96ee72adf4580056292ab17cfd858a2fd7bc07abeb41c6780bd147b47f7af"),
("6.1.0", "cf3a6a7c43116032d933cc3bc88bfc4b17a4ee1513c978e751755ca11a5ed381"),
("6.0.2", "740ca064f4909c20d83226a63c2f164f7555783ec5f5f70be5bc23d3587ad829"),
("6.0.0", "e8f92a0f5d1f6093ca1fb24ff1b7140128900fcdc6e9f01f153d6907e5c2d807"),
("5.7.1", "28fbdf49f405adfee903bc0f05a43ac392c55b34c514c3582dfb7d6d67e79985"),
("5.7.0", "b1dae3cfc715e71dce92ac1da94265a9398944c76cee85ffab8f0c93665a48d6"),
("5.6.1", "5b3002ddfafda162329e4d9e6ac1200eeb48ff08e666b342aa8aeca30750f48b"),
("5.6.0", "8cf4509bf9c0747dab8ed8fec1365a9156792034b517207a0b2d63270429fd2e"),
]:
resource(
name="hip-tests",
url=f"https://github.com/ROCm/hip-tests/archive/refs/tags/rocm-{d_version}.tar.gz",
sha256=d_shasum,
expand=True,
destination="",
placement="hip-tests",
when=f"@{d_version}",
)
# Improve compilation without git repo and remove compiler rt linkage
# for host and correction in CMake target path variable and
# correcting the CMake path variable.
@@ -673,69 +645,3 @@ def cmake_args(self):
if self.spec.satisfies("@6.0:"):
args.append(self.define("HIPCC_BIN_DIR", self.spec["hipcc"].prefix.bin))
return args
test_src_dir_old = "samples"
test_src_dir = "hip-tests/samples"
@run_after("install")
def install_samples(self):
if self.spec.satisfies("@5.6.0:"):
install_tree(self.test_src_dir, self.spec.prefix.share.samples)
@run_after("install")
def cache_test_sources(self):
"""Copy the tests source files after the package is installed to an
install test subdirectory for use during `spack test run`."""
if self.spec.satisfies("@5.1:5.5"):
cache_extra_test_sources(self, [self.test_src_dir_old])
elif self.spec.satisfies("@5.6:"):
cache_extra_test_sources(self, [self.test_src_dir])
def test_samples(self):
"""build and run all hip samples"""
if self.spec.satisfies("@5.1:5.5"):
test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir_old)
elif self.spec.satisfies("@5.6:"):
test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir)
prefixes = ";".join(spack.build_environment.get_cmake_prefix_path(self))
cc_options = ["-DCMAKE_PREFIX_PATH=" + prefixes, ".."]
amdclang_path = join_path(self.spec["llvm-amdgpu"].prefix, "bin", "amdclang++")
os.environ["CXX"] = amdclang_path
os.environ["FC"] = "/usr/bin/gfortran"
cmake = which(self.spec["cmake"].prefix.bin.cmake)
for root, dirs, files in os.walk(test_dir):
dirs.sort()
if "CMakeLists.txt" in files or "Makefile" in files:
with working_dir(root, create=True):
head, test_name = os.path.split(root)
with test_part(
self,
"test_sample_{0}".format(test_name),
purpose="configure, build and run test: {0}".format(test_name),
):
if "CMakeLists.txt" in files:
print("Configuring test " + test_name)
os.mkdir("build")
os.chdir("build")
cmake(*cc_options)
print("Building test " + test_name)
make(parallel=False)
# iterate through the files in dir to find the newly built binary
for file in os.listdir("."):
if (
file not in files
and os.path.isfile(file)
and os.access(file, os.X_OK)
and not file.endswith(".o")
):
print("Executing test binary: " + file)
exe = which(file)
if file == "hipDispatchEnqueueRateMT":
options = ["16", "0"]
else:
options = []
exe(*options)

View File

@@ -72,7 +72,7 @@ def url_for_version(self, version):
return url.format(version.dashed, version.underscored)
def flag_handler(self, name, flags):
if name == "cxxflags":
if name == "cxxflags" and not self.spec.platform == "windows":
# Control of the C++ Standard is via adding the required "-std"
# flag to CXXFLAGS in env
flags.append(getattr(self.compiler, f"cxx{self.spec.variants['cxxstd'].value}_flag"))
@@ -125,7 +125,7 @@ def msbuild_args(self):
@property
def build_directory(self):
solution_path = pathlib.Path(self.pkg.stage.source_path)
if self.spec.satsifies("@:67"):
if self.spec.satisfies("@:67"):
solution_path = solution_path / "icu"
solution_path = solution_path / "source" / "allinone"
return str(solution_path)

View File

@@ -23,6 +23,7 @@ class Justbuild(Package):
license("Apache-2.0")
version("master", branch="master")
version("1.4.3", tag="v1.4.3", commit="dfbfdc230805a7c92baa7e49d82edc2816e00511")
version("1.4.2", tag="v1.4.2", commit="7fd5d41bc219acf0d15da5dfc75d8dd4a6c53ba3")
version("1.4.1", tag="v1.4.1", commit="2dc306f510c7ba0661d95bd75305f7deb5eb54b2")
version("1.4.0", tag="v1.4.0", commit="562bddf70175a602f896397f41ee5f5e07e834eb")

View File

@@ -20,6 +20,7 @@ class Lcio(CMakePackage):
license("BSD-3-Clause")
version("master", branch="master")
version("2.22.4", sha256="5d60eeb4df8611059f4bc839ac098f5d7e3608a662591e9cbae48aed07995514")
version("2.22.3", sha256="5b9715786c5e953f8854881c5d0c4a48030a5491f1701232b82e960ac7980162")
version("2.22.2", sha256="e5ad9690af85160ef52dd407fc0995451b4293f3aee415a8ea8a950de63d87a1")
version("2.22.1", sha256="4bc3d2c83af7b1c65d6736dd14ee82f41af7ce9bfc7cfe779c5f47417e8dc326")

View File

@@ -0,0 +1,39 @@
From 7cea256ef1a6017e722bdfd5b7381fa90580d55a Mon Sep 17 00:00:00 2001
From: "simit.ghane" <simit.ghane@lge.com>
Date: Tue, 7 May 2024 14:09:03 +0530
Subject: [PATCH] fix o_flag_munging
---
cipher/Makefile.am | 2 +-
random/Makefile.am | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/cipher/Makefile.am b/cipher/Makefile.am
index c3d642b2..04bf25e9 100644
--- a/cipher/Makefile.am
+++ b/cipher/Makefile.am
@@ -153,7 +153,7 @@ gost-s-box: gost-s-box.c
if ENABLE_O_FLAG_MUNGING
-o_flag_munging = sed -e 's/-O\([2-9sgz][2-9sgz]*\)/-O1/' -e 's/-Ofast/-O1/g'
+o_flag_munging = sed -e 's/[[:blank:]]-O\([2-9sgz][2-9sgz]*\)/ -O1 /g' -e 's/[[:blank:]]-Ofast/ -O1 /g'
else
o_flag_munging = cat
endif
diff --git a/random/Makefile.am b/random/Makefile.am
index 0c935a05..a42e4306 100644
--- a/random/Makefile.am
+++ b/random/Makefile.am
@@ -56,7 +56,7 @@ jitterentropy-base.c jitterentropy.h jitterentropy-base-user.h
# The rndjent module needs to be compiled without optimization. */
if ENABLE_O_FLAG_MUNGING
-o_flag_munging = sed -e 's/-O\([1-9sgz][1-9sgz]*\)/-O0/g' -e 's/-Ofast/-O0/g'
+o_flag_munging = sed -e 's/[[:blank:]]-O\([1-9sgz][1-9sgz]*\)/ -O0 /g' -e 's/[[:blank:]]-Ofast/ -O0 /g'
else
o_flag_munging = cat
endif
--
2.43.0

View File

@@ -0,0 +1,50 @@
From 9c11f1e12a6ddbd49b5fd38c94e6a004f8da6e29 Mon Sep 17 00:00:00 2001
From: "simit.ghane" <simit.ghane@lge.com>
Date: Tue, 11 Jun 2024 07:22:28 +0530
Subject: [PATCH] random:cipher: handle substitution in sed command
* cipher/Makefile.am (o_flag_munging): Add 'g' flag for first sed
expression.
* random/Makefile.am (o_flag_munging): Likewise.
--
It was there earlier and accidentally removed from
Makefile.am of cipher and random
Signed-off-by: simit.ghane <simit.ghane@lge.com>
[jk: add changelog to commit message]
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
---
cipher/Makefile.am | 2 +-
random/Makefile.am | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/cipher/Makefile.am b/cipher/Makefile.am
index ea9014cc..149c9f21 100644
--- a/cipher/Makefile.am
+++ b/cipher/Makefile.am
@@ -169,7 +169,7 @@ gost-s-box$(EXEEXT_FOR_BUILD): gost-s-box.c
if ENABLE_O_FLAG_MUNGING
-o_flag_munging = sed -e 's/[[:blank:]]-O\([2-9sgz][2-9sgz]*\)/ -O1 /' -e 's/[[:blank:]]-Ofast/ -O1 /g'
+o_flag_munging = sed -e 's/[[:blank:]]-O\([2-9sgz][2-9sgz]*\)/ -O1 /g' -e 's/[[:blank:]]-Ofast/ -O1 /g'
else
o_flag_munging = cat
endif
diff --git a/random/Makefile.am b/random/Makefile.am
index c7100ef8..a42e4306 100644
--- a/random/Makefile.am
+++ b/random/Makefile.am
@@ -56,7 +56,7 @@ jitterentropy-base.c jitterentropy.h jitterentropy-base-user.h
# The rndjent module needs to be compiled without optimization. */
if ENABLE_O_FLAG_MUNGING
-o_flag_munging = sed -e 's/[[:blank:]]-O\([1-9sgz][1-9sgz]*\)/ -O0 /' -e 's/[[:blank:]]-Ofast/ -O0 /g'
+o_flag_munging = sed -e 's/[[:blank:]]-O\([1-9sgz][1-9sgz]*\)/ -O0 /g' -e 's/[[:blank:]]-Ofast/ -O0 /g'
else
o_flag_munging = cat
endif
--
2.43.0

View File

@@ -17,26 +17,26 @@ class Libgcrypt(AutotoolsPackage):
version("1.11.0", sha256="09120c9867ce7f2081d6aaa1775386b98c2f2f246135761aae47d81f58685b9c")
version("1.10.3", sha256="8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa")
version("1.10.2", sha256="3b9c02a004b68c256add99701de00b383accccf37177e0d6c58289664cce0c03")
version("1.10.1", sha256="ef14ae546b0084cd84259f61a55e07a38c3b53afc0f546bffcef2f01baffe9de")
version("1.10.0", sha256="6a00f5c05caa4c4acc120c46b63857da0d4ff61dc4b4b03933fa8d46013fae81")
# End of life: 2024-03-31
with default_args(deprecated=True):
version("1.9.4", sha256="ea849c83a72454e3ed4267697e8ca03390aee972ab421e7df69dfe42b65caaf7")
version("1.9.3", sha256="97ebe4f94e2f7e35b752194ce15a0f3c66324e0ff6af26659bbfb5ff2ec328fd")
version("1.9.2", sha256="b2c10d091513b271e47177274607b1ffba3d95b188bbfa8797f948aec9053c5a")
version("1.9.1", sha256="c5a67a8b9b2bd370fb415ed1ee31c7172e5683076493cf4a3678a0fbdf0265d9")
version(
"1.10.2", sha256="3b9c02a004b68c256add99701de00b383accccf37177e0d6c58289664cce0c03"
)
version(
"1.10.1", sha256="ef14ae546b0084cd84259f61a55e07a38c3b53afc0f546bffcef2f01baffe9de"
)
version(
"1.10.0", sha256="6a00f5c05caa4c4acc120c46b63857da0d4ff61dc4b4b03933fa8d46013fae81"
)
# End of life: 2024-12-31 (LTS)
version("1.8.9", sha256="2bda4790aa5f0895d3407cf7bf6bd7727fd992f25a45a63d92fef10767fa3769")
version("1.8.7", sha256="03b70f028299561b7034b8966d7dd77ef16ed139c43440925fe8782561974748")
version("1.8.6", sha256="0cba2700617b99fc33864a0c16b1fa7fdf9781d9ed3509f5d767178e5fd7b975")
version("1.8.5", sha256="3b4a2a94cb637eff5bdebbcaf46f4d95c4f25206f459809339cdada0eb577ac3")
version("1.8.4", sha256="f638143a0672628fde0cad745e9b14deb85dffb175709cacc1f4fe24b93f2227")
version("1.8.1", sha256="7a2875f8b1ae0301732e878c0cca2c9664ff09ef71408f085c50e332656a78b3")
# End of life: 2024-12-31 (LTS)
version("1.8.9", sha256="2bda4790aa5f0895d3407cf7bf6bd7727fd992f25a45a63d92fef10767fa3769")
version("1.8.7", sha256="03b70f028299561b7034b8966d7dd77ef16ed139c43440925fe8782561974748")
version("1.8.6", sha256="0cba2700617b99fc33864a0c16b1fa7fdf9781d9ed3509f5d767178e5fd7b975")
version("1.8.5", sha256="3b4a2a94cb637eff5bdebbcaf46f4d95c4f25206f459809339cdada0eb577ac3")
version("1.8.4", sha256="f638143a0672628fde0cad745e9b14deb85dffb175709cacc1f4fe24b93f2227")
version("1.8.1", sha256="7a2875f8b1ae0301732e878c0cca2c9664ff09ef71408f085c50e332656a78b3")
depends_on("c", type="build") # generated
depends_on("c", type="build")
depends_on("libgpg-error@1.25:")
depends_on("libgpg-error@1.27:", when="@1.9:")
@@ -58,6 +58,9 @@ def flag_handler(self, name, flags):
# https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commit;h=b42116d6067a5233f72e5598032d4b396bb8eaac
patch("conditional_avx512.patch", when="@1.11.0")
patch("o_flag_munging-1.10.patch", when="@1.10")
patch("o_flag_munging-1.11.patch", when="@1.11")
def check(self):
# Without this hack, `make check` fails on macOS when SIP is enabled
# https://bugs.gnupg.org/gnupg/issue2056

View File

@@ -15,6 +15,7 @@ class Libice(AutotoolsPackage, XorgPackage):
maintainers("wdconinc")
version("1.1.2", sha256="1da62f732f8679c20045708a29372b82dff9e7eceee543ed488b845002b3b0ff")
version("1.1.1", sha256="04fbd34a11ba08b9df2e3cdb2055c2e3c1c51b3257f683d7fcf42dabcf8e1210")
version("1.1.0", sha256="7a735ec530d7a437955747eabac06bbc0b695da77fd1b4d1df3b0a483d823875")
version("1.0.10", sha256="1116bc64c772fd127a0d0c0ffa2833479905e3d3d8197740b3abd5f292f22d2d")

View File

@@ -730,6 +730,19 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage):
patch("sanitizer-platform-limits-posix-xdr-macos.patch", when="@10:14 platform=darwin")
# https://github.com/spack/spack/issues/48865
patch(
"https://github.com/llvm/llvm-project/commit/f4be5ed6a3fef0b2b0c60b29e1c0638926638d28.patch?full_index=1",
sha256="51740996bbc01a5049fa859134ad44ffc9514da212cc7d9a445c8d16d6cc867e",
when="@15",
)
# https://github.com/spack/spack/issues/48865
patch(
"https://github.com/llvm/llvm-project/commit/73e15b5edb4fa4a77e68c299a6e3b21e610d351f.patch?full_index=1",
sha256="b540ef6e3728d7881d95775a163314fac6e2f9207f5d5e8b79c8c73c73ba4dc3",
when="@15:16",
)
@when("@14:17")
def patch(self):
# https://github.com/llvm/llvm-project/pull/69458

View File

@@ -31,6 +31,12 @@ class LuaSol2(CMakePackage):
# Lua is not needed when building, since sol2 is headers-only
depends_on("lua", type=("link", "run"))
patch(
"https://github.com/ThePhD/sol2/pull/1606.patch?full_index=1",
when="@3.3.0 %oneapi@2025:",
sha256="ed6c5924a0639fb1671e6d7dacbb88dce70aa006bcee2f380b6acd34da89664c",
)
def cmake_args(self):
args = [
self.define("SOL2_ENABLE_INSTALL", True),

View File

@@ -38,6 +38,8 @@ class Mapl(CMakePackage):
version("develop", branch="develop")
version("main", branch="main")
version("2.54.1", sha256="2430ded45a98989e9100037f54cf22f5a5083e17196514b3667d3003413e49e1")
version("2.53.1", sha256="8371a75d4d81294eb9d99d66702f8cf62d4bd954cec3e247e1afae621b4e4726")
version("2.53.0", sha256="68c24e6c0e3340645b1fb685972c96ef80746d5a289572c9883e520680708ebe")
version("2.52.0", sha256="c30be3a6ed3fca40aea903e10ee51e2fb50b4ef2445fdc959d4871baf3c20585")
version("2.51.2", sha256="f6df2be24d0c113af3d0424b674d970621660bf11e59a699373f014a14d0716e")

View File

@@ -0,0 +1,10 @@
--- include/mummer/48bit_index.hpp 2020-10-01 01:47:50.000000000 +0100
+++ include/mummer/48bit_index.hpp.patched 2023-06-09 12:07:09.949856479 +0100
@@ -6,6 +6,7 @@
#endif
+#include <cstdint>
#include "48bit_iterator.hpp"
template<typename IDX>
struct fortyeight_index {

View File

@@ -25,3 +25,6 @@ class Mummer4(AutotoolsPackage):
depends_on("perl@5.6.0:", type=("build", "run"))
depends_on("awk", type="run")
depends_on("sed", type="run")
# Adds missing inclusion of <cstdint>
patch("48bit_index.patch", level=0, when="%gcc@13:")

View File

@@ -15,7 +15,7 @@ class Nim(Package):
"""
homepage = "https://nim-lang.org/"
url = "https://nim-lang.org/download/nim-2.2.0.tar.xz"
url = "https://nim-lang.org/download/nim-2.2.2.tar.xz"
git = "https://github.com/nim-lang/Nim.git"
license("MIT", checked_by="Buldram")
@@ -23,6 +23,7 @@ class Nim(Package):
maintainers("Buldram")
version("devel", branch="devel")
version("2.2.2", sha256="7fcc9b87ac9c0ba5a489fdc26e2d8480ce96a3ca622100d6267ef92135fd8a1f")
version("2.2.0", sha256="ce9842849c9760e487ecdd1cdadf7c0f2844cafae605401c7c72ae257644893c")
version("2.0.14", sha256="d420b955833294b7861e3fb65021dac26d1c19c528c4d6e139ccd379e2c15a43")
version("2.0.12", sha256="c4887949c5eb8d7f9a9f56f0aeb2bf2140fabf0aee0f0580a319e2a09815733a")

View File

@@ -0,0 +1,97 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Nnn(MakefilePackage):
"""nnn (n³) is a full-featured terminal file manager.
It's tiny, nearly 0-config and incredibly fast."""
homepage = "https://github.com/jarun/nnn"
url = "https://github.com/jarun/nnn/archive/refs/tags/v5.0.tar.gz"
maintainers("fthaler")
license("BSD-2-Clause", checked_by="fthaler")
version("5.0", sha256="31e8fd85f3dd7ab2bf0525c3c0926269a1e6d35a5343a6714315642370d8605a")
depends_on("binutils", type="build")
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("pkgconfig", type="build")
depends_on("coreutils")
depends_on("file")
depends_on("git", when="+gitstatus")
depends_on("ncurses")
depends_on("pcre", when="+pcre")
depends_on("readline", when="+readline")
depends_on("sed")
depends_on("tar")
depends_on("zip")
variant("mouse", default=True, description="Enable mouse support")
variant(
"pcre",
default=False,
description="Use Perl Compatible Regular Expressions (default is POSIX)",
)
variant("readline", default=True, description="Compile with readline")
variant(
"icons",
values=("none", "emoji", "nerd", "icons-in-terminal"),
default="emoji",
description="Choose the icons to use "
"(see https://github.com/jarun/nnn/wiki/Advanced-use-cases#file-icons)",
)
variant("colemak", default=False, description="Key bindings for Colemak keyboard layout")
variant("gitstatus", default=True, description="Add git status column to the detail view")
variant("namefirst", default=False, description="Print filenames first in the detail view")
variant(
"restorepreview",
default=False,
description="Add pipe to close and restore preview-tui for internal undetached edits",
)
def setup_build_environment(self, env):
spec = self.spec
env.set("PREFIX", self.prefix)
if "+pcre" in spec:
env.append_flags("CPPFLAGS", spec["pcre"].headers.include_flags)
env.append_flags("LDFLAGS", spec["pcre"].libs.ld_flags)
@property
def build_targets(self):
spec = self.spec
targets = []
if "~mouse" in spec:
targets.append("O_NOMOUSE=1")
if "+pcre" in spec:
targets.append("O_PCRE=1")
if "~readline" in spec:
targets.append("O_NORL=1")
if "icons=emoji" in spec:
targets.append("O_EMOJI=1")
elif "icons=nerd" in spec:
targets.append("O_NERD=1")
elif "icons=icons-in-terminal" in spec:
targets.append("O_ICONS=1")
if "+colemak" in spec:
targets.append("O_COLEMAK=1")
if "+gitstatus" in spec:
targets.append("O_GITSTATUS=1")
if "+namefirst" in spec:
targets.append("O_NAMEFIRST=1")
if "+restorepreview" in spec:
targets.append("O_RESTOREPREVIEW=1")
return targets
@property
def install_targets(self):
return self.build_targets + ["strip", "install"]

View File

@@ -21,6 +21,7 @@ class NvplBlas(Package):
license("UNKNOWN")
version("0.4.0.1", sha256="6655898327ed36afd0242719075447058c3c89640b5b9bbfeb5af4dd5c101174")
version("0.3.0", sha256="b51cb199a440c1e8673d3d845d395950c9a9020d4e83af2655eb96c23c6ec90d")
version("0.2.0.1", sha256="ba29f6a9d3831b6ae5c9265b4d124c13b9b9e0faea025359b02b41ad230975c2")
version("0.1.0", sha256="4ccc894593cbcbfaa1a4f3c54505982691971667acf191c9ab0f4252a37c8063")

View File

@@ -21,6 +21,7 @@ class NvplLapack(Package):
license("UNKNOWN")
version("0.3.0", sha256="41cc18fc52f6869747b4185a96e34de93a53eb9d6aa95aab07082958055161b0")
version("0.2.3.1", sha256="25927df133c5486fd71d5976c93917c96e62275a78dffc354bcaf1b022f56f8e")
version("0.2.2.1", sha256="cdfbf69517a044e99e3e6231c8b2f4e845fd0de57775ccad6b4b0b4fe7e91e84")
version("0.2.0.1", sha256="7054f775b18916ee662c94ad7682ace53debbe8ee36fa926000fe412961edb0b")

View File

@@ -0,0 +1,36 @@
diff -ruN spack-src/src/config/makefile.h spack-src-patched/src/config/makefile.h
--- spack-src/src/config/makefile.h 2024-08-28 02:30:22.000000000 +0000
+++ spack-src-patched/src/config/makefile.h 2025-02-07 16:03:07.315882016 +0000
@@ -2364,15 +2364,14 @@
_GOTAVX2 := $(shell cat /proc/cpuinfo | grep fma | tail -n 1 | awk ' /fma/ {print "Y"}')
_GOTAVX512F := $(shell cat /proc/cpuinfo | grep avx512f | tail -n 1 | awk ' /avx512f/ {print "Y"}')
endif
- _IFCE := $(shell ifort -V 2>&1 |head -1 |awk ' /64/ {print "Y";exit};')
- _IFCV7 := $(shell ifort -v 2>&1|grep "Version "|head -n 1|awk ' /7./ {print "Y";exit}')
- _IFCV11 := $(shell ifort -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 11) {print "Y";exit}}')
- _IFCV12 := $(shell ifort -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 12) {print "Y";exit}}')
- _IFCV14 := $(shell ifort -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 14) {print "Y";exit}}')
- _IFCV15ORNEWER := $(shell ifort -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 15) {print "Y";exit}}')
- _IFCV17 := $(shell ifort -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 17) {print "Y";exit}}')
- _IFCV18 := $(shell ifort -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 18) {print "Y";exit}}')
-
+ _IFCE := $(shell $(FC) -V 2>&1 |head -1 |awk ' /64/ {print "Y";exit};')
+ _IFCV7 := $(shell $(FC) -v 2>&1|grep "Version "|head -n 1|awk ' /7./ {print "Y";exit}')
+ _IFCV11 := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 11) {print "Y";exit}}')
+ _IFCV12 := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 12) {print "Y";exit}}')
+ _IFCV14 := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1|sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 14) {print "Y";exit}}')
+ _IFCV15ORNEWER := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 15) {print "Y";exit}}')
+ _IFCV17 := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 17) {print "Y";exit}}')
+ _IFCV18 := $(shell $(FC) -logo 2>&1|grep "Version "|head -n 1 | sed 's/.*Version \([0-9][0-9]\).*/\1/' | awk '{if ($$1 >= 18) {print "Y";exit}}')
# Intel EM64T is required
ifneq ($(_IFCE),Y)
defineFCE:
@@ -2406,7 +2405,7 @@
# CPP=fpp -P
#
ifeq ($(_IFCV15ORNEWER), Y)
- IFORTVER := $(shell ifort -v 2>&1|cut -d " " -f 3)
+ IFORTVER := $(shell $(FC) -v 2>&1|cut -d " " -f 3)
# ifeq ($(IFORTVER),2021.7.0)
# $(info )
# $(info ifort 2021.7.0 not validated)

View File

@@ -13,11 +13,14 @@ class Nwchem(Package):
homepage = "https://nwchemgit.github.io"
url = "https://github.com/nwchemgit/nwchem/releases/download/v7.2.0-release/nwchem-7.2.0-release.revision-d0d141fd-srconly.2023-03-10.tar.bz2"
git = "https://github.com/nwchemgit/nwchem.git"
tags = ["ecp", "ecp-apps"]
maintainers("jeffhammond")
version("master", branch="master")
version(
"7.2.3",
sha256="8cb4ec065215bc0316d8e01f67f1674a572f7d0f565c52e4a327975c04ddb6eb",
@@ -69,6 +72,9 @@ class Nwchem(Package):
"elpa", default=False, description="Enable optimised diagonalisation routines from ELPA"
)
# https://github.com/nwchemgit/nwchem/pull/1034
patch("oneapi2025.patch", when="@7.2.3 %oneapi@2025:")
# This patch is for the modification of the build system (e.g. compiler flags) and
# Fortran syntax to enable the compilation with Fujitsu compilers. The modification
# will be merged to the next release of NWChem (see https://github.com/nwchemgit/nwchem/issues/347

View File

@@ -64,6 +64,9 @@ class Openmpi(AutotoolsPackage, CudaPackage):
version(
"5.0.0", sha256="9d845ca94bc1aeb445f83d98d238cd08f6ec7ad0f73b0f79ec1668dbfdacd613"
) # libmpi.so.40.40.0
version(
"4.1.8", sha256="466f68e3132a1dc02710cc2011fafced8336d98359fa2dae4dddcfd5719f12a9"
) # libmpi.so.40.30.8
version(
"4.1.7", sha256="54a33cb7ad81ff0976f15a6cc8003c3922f0f3d8ceed14e1813ef3603f22cd34"
) # libmpi.so.40.30.7

View File

@@ -0,0 +1,62 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Openturbine(CMakePackage, CudaPackage, ROCmPackage):
"""An open-source wind turbine structural dynamics simulation code."""
license("MIT License", checked_by="ddement")
homepage = "https://www.exascaleproject.org/research-project/exawind/"
url = "https://github.com/Exawind/openturbine.git"
git = "https://github.com/Exawind/openturbine.git"
maintainers("faisal-bhuiyan", "ddement", "deslaughter")
version("main", branch="main")
variant("tests", default=False, description="Build OpenTurbine Test Suite")
variant("openmp", default=False, description="Build OpenTurbine with OpenMP support")
variant("vtk", default=False, description="Enable VTK")
variant("adi", default=False, description="Build the OpenFAST ADI external project")
variant("rosco", default=False, description="Build the ROSCO controller external project")
depends_on("cxx", type="build")
depends_on("yaml-cpp")
depends_on("kokkos-kernels+blas+lapack")
depends_on("trilinos+amesos2")
depends_on("kokkos-kernels@4.3:")
depends_on("trilinos@16:")
depends_on("kokkos-kernels+cuda+cublas+cusparse+cusolver", when="+cuda")
depends_on("kokkos-kernels+rocblas+rocsparse+rocsolver", when="+rocm")
depends_on("kokkos-kernels+openmp", when="+openmp")
depends_on("trilinos+cuda+basker", when="+cuda")
depends_on("trilinos+rocm+basker", when="+rocm")
depends_on("trilinos+openmp+basker", when="+openmp")
depends_on("kokkos-kernels~cuda", when="~cuda")
depends_on("kokkos-kernels~openmp", when="~openmp")
depends_on("trilinos~cuda", when="~cuda")
depends_on("trilinos~rocm", when="~rocm")
depends_on("trilinos~openmp", when="~openmp")
depends_on("googletest", when="+tests")
depends_on("vtk", when="+vtk")
depends_on("fortran", type="build", when="+adi")
depends_on("fortran", type="build", when="+rosco")
def cmake_args(self):
options = [
self.define_from_variant("OpenTurbine_ENABLE_TESTS", "tests"),
self.define_from_variant("OpenTurbine_ENABLE_VTK", "vtk"),
self.define_from_variant("OpenTurbine_BUILD_OPENFAST_ADI", "adi"),
self.define_from_variant("OpenTurbine_BUILD_ROSCO_CONTROLLER", "rosco"),
]
return options

View File

@@ -0,0 +1,34 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Pfind(Package):
"""
The tool provides parallel access to a single directory. However, this
feature depends on the distribution of the "cookie" returned by telldir().
Depending on the system, it may work.
"""
homepage = "https://github.com/VI4IO/pfind"
git = "https://github.com/VI4IO/pfind.git"
version("main", branch="master")
depends_on("mpi")
def setup_build_environment(self, env):
env.set("CC", self.spec["mpi"].mpicc, force=True)
env.set("CXX", self.spec["mpi"].mpicxx, force=True)
def install(self, spec, prefix):
for installer_path in ["./prepare.sh", "./compile.sh"]:
set_executable(installer_path)
installer = Executable(installer_path)
installer()
mkdirp(prefix.bin)
install("pfind", prefix.bin)

View File

@@ -21,6 +21,7 @@ class Pflogger(CMakePackage):
version("develop", branch="develop")
version("main", branch="main")
version("1.16.1", sha256="82ae8d008dda3984e12df3e92a61486a8f5c0b87182d54087f1d004ecc141fff")
version("1.15.0", sha256="454f05731a3ba50c7ae3ef9463b642c53248ae84ccb3b93455ef2ae2b6858235")
version("1.14.0", sha256="63422493136f66f61d5148b7b1d278b1e5ca76bd37c578e45e4ae0e967351823")
version("1.13.2", sha256="934e573134f7f1a22b14eb582ea38dd68eb9dccb10526bfabe51229efe106352")

View File

@@ -18,6 +18,7 @@ class Pfunit(CMakePackage):
maintainers("mathomp4", "tclune")
version("4.11.1", sha256="db954ce44e857fe17cf4212f91223d2ab73248de0c3af405e2e1224f92ed8d42")
version("4.10.0", sha256="ee5e899dfb786bac46e3629b272d120920bafdb7f6a677980fc345f6acda0f99")
version("4.9.0", sha256="caea019f623d4e02dd3e8442cee88e6087b4c431a2628e9ec2de55b527b51ab6")
version("4.8.0", sha256="b5c66ab949fd23bee5c3b4d93069254f7ea40decb8d21f622fd6aa45ee68ef10")

View File

@@ -18,6 +18,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage):
license("BSL-1.0")
version("0.32.0", sha256="19217e3eecff30a7038f5712b6e161db09f12d7077550e8f66add74b3e524d29")
version("0.31.0", sha256="bdbd8e36afb367cc2c7172e5a819c756e4ee20e74dfdec4905f2e84bf097eb7c")
version("0.30.1", sha256="b0f3689a3edd30f8d674e19b5134fc5013813f843c45797c1015163e51989ac0")
version("0.30.0", sha256="1798bf7de2505bc707bf95716fda8de5630b2e2ae54a6c4ef59f9931394d31cc")

View File

@@ -17,6 +17,9 @@ class PortsOfCall(CMakePackage):
license("BSD-3-Clause")
version("main", branch="main")
version("1.7.1", sha256="18b0b99370ef2adf3374248f653461606f826fe4076d0f19ac8c72d46035fdf5")
version("1.7.0", sha256="99045a7c4e3fbc73f01e930ce870cdc573a39910a28d85c54d65d2135f764bfc")
version("1.6.0", sha256="290da149d4ad79c15787956559aeeefa0a06403be2f08cd324562ef013306797")
version("1.5.2", sha256="73d16fe9236a9475010dbb01bf751c15bef01eb2e15bf92c8d9be2c0a606329f")
version("1.5.1", sha256="b1f0232cd6d2aac65385d77cc061ec5035283ea50d0f167e7003eae034effb78")
version("1.4.1", sha256="82d2c75fcca8bd613273fd4126749df68ccc22fbe4134ba673b4275f9972b78d")
@@ -44,11 +47,32 @@ class PortsOfCall(CMakePackage):
default="None",
when="@:1.2.0",
)
variant("test", default=False, description="Build tests")
variant(
"test_portability_strategy",
description="Portability strategy used by tests",
values=("Kokkos", "Cuda", "None"),
multi=False,
default="None",
when="@1.7.0: +test",
)
depends_on("cmake@3.12:", type="build")
depends_on("catch2@3.0.1:", when="+test", type=("build", "test"))
depends_on("kokkos", when="+test test_portability_strategy=Kokkos", type=("build", "test"))
def cmake_args(self):
args = []
args = [
self.define_from_variant("PORTS_OF_CALL_BUILD_TESTING", "test"),
self.define_from_variant(
"PORTS_OF_CALL_TEST_PORTABILITY_STRATEGY", "test_portability_strategy"
),
]
if self.spec.satisfies("@:1.2.0"):
args.append(self.define_from_variant("PORTABILITY_STRATEGY", "portability_strategy"))
if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+rocm"):
args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc))
args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc))
if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+cuda"):
args.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx))
return args

View File

@@ -31,7 +31,7 @@ class PyArch(PythonPackage):
# "numpy>=2.0.0rc1,<3" ???
# https://github.com/bashtage/arch/blob/9ced09e2566c0ebcad962d2441b1e79e2aaa7c9f/requirements.txt#L1
# numpy>=1.22.3 ???
depends_on("py-numpy@1.22.3", type=("build", "run"))
depends_on("py-numpy@1.22.3:", type=("build", "run"))
depends_on("py-scipy@1.8:", type="run")
depends_on("py-pandas@1.4:", type="run")

View File

@@ -16,6 +16,7 @@ class PyEinops(PythonPackage):
license("MIT")
maintainers("adamjstewart")
version("0.8.1", sha256="de5d960a7a761225532e0f1959e5315ebeafc0cd43394732f103ca44b9837e84")
version("0.8.0", sha256="63486517fed345712a8385c100cb279108d9d47e6ae59099b07657e983deae85")
version("0.7.0", sha256="b2b04ad6081a3b227080c9bf5e3ace7160357ff03043cd66cc5b2319eb7031d1")
version("0.6.1", sha256="f95f8d00f4ded90dbc4b19b6f98b177332614b0357dde66997f3ae5d474dc8c8")

View File

@@ -0,0 +1,37 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyElevation(PythonPackage):
"""
Python script to download global terrain digital elevation models,
SRTM 30m DEM and SRTM 90m DEM.
"""
homepage = "http://elevation.bopen.eu/"
pypi = "elevation/elevation-1.1.3.tar.gz"
maintainers("Chrismarsh")
license("Apache-2.0", checked_by="Chrismarsh")
version("1.1.3", sha256="be27446562e7964f7d8fa78c4829dbbb8ac43df405ad09be8c49633adb8f4877")
depends_on("py-setuptools@42:", type="build")
depends_on("py-setuptools-scm@3.4: +toml", type="build")
depends_on("py-setuptools-scm-git-archive", type="build")
depends_on("py-click", type="build")
depends_on("py-fasteners")
depends_on("py-rasterio")
depends_on("py-fiona")
depends_on("py-appdirs")
# listed in
# https://github.com/bopen/elevation/blob/1.1.3/README.rst
depends_on("curl")
depends_on("unzip")
depends_on("gzip")
depends_on("gdal+python")

View File

@@ -10,25 +10,28 @@ class PyIterativeStats(PythonPackage):
pypi = "iterative-stats/iterative_stats-0.1.0.tar.gz"
git = "https://github.com/IterativeStatistics/BasicIterativeStatistics.git"
maintainers("robcaulk")
maintainers("robcaulk", "viperML", "abhishek1297")
license("BSD-3-Clause")
version("main", branch="main")
version("0.1.1", sha256="c2be6045e720aa7ff5c8dbbcd01d082d1b66f2c2a8613ad825528535e3ce0436")
version("0.1.0", sha256="bb4f378a8fa117d1f24e9ea5ac0f1bd13c04b1ab3693a148ba936ffb237f2fba")
version("0.0.4", sha256="7e838aa79de867b0e312be8cdf9319bb70824b624c684e968636cc8d4c9d5712")
# main dependencies
depends_on("python@3.8.0:3.10", type=("build", "run"))
depends_on("py-poetry-core@1.0.0:", type=("build"))
depends_on("py-pyyaml@6.0", type=("build", "run"))
depends_on("py-numpy@1.19:1", type=("build", "run"))
with default_args(type=("build", "run")):
depends_on("python@3.8:3.10", when="@:0.1.0")
depends_on("python@3.9:3.12", when="@0.1.1:")
depends_on("py-pyyaml@6.0:")
depends_on("py-numpy@1.19:1")
# dev dependencies
depends_on("py-pytest@6.2.1:6", type=("test"))
depends_on("py-autopep8@1.6.0", type=("test"))
depends_on("openturns@1.19+python+libxml2", type=("test"))
depends_on("py-scipy@1.8", type=("test"))
depends_on("py-poetry-core@1.0.0:", type=("build"))
with default_args(type=("test")):
depends_on("py-pytest@6.2.1:6")
depends_on("py-autopep8@1.6.0")
depends_on("openturns@1.19+python+libxml2")
depends_on("py-scipy@1.8:1")
@run_after("install")
@on_package_attributes(run_tests=True)

View File

@@ -14,6 +14,7 @@ class PyLlvmlite(PythonPackage):
license("BSD-2-Clause")
version("0.44.0", sha256="07667d66a5d150abed9157ab6c0b9393c9356f229784a4385c02f99e94fc94d4")
version("0.43.0", sha256="ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5")
version("0.42.0", sha256="f92b09243c0cc3f457da8b983f67bd8e1295d0f5b3746c7a1861d7a99403854a")
version("0.41.1", sha256="f19f767a018e6ec89608e1f6b13348fa2fcde657151137cb64e56d48598a92db")
@@ -51,7 +52,8 @@ class PyLlvmlite(PythonPackage):
depends_on("python@:3.8", when="@0.31:0.35", type=("build", "run"))
# https://github.com/numba/llvmlite#compatibility
depends_on("llvm@14", when="@0.41:")
depends_on("llvm@15", when="@0.44:")
depends_on("llvm@14", when="@0.41:0.43")
depends_on("llvm@11:14", when="@0.40")
depends_on("llvm@11", when="@0.37:0.39")
for t in [
@@ -66,6 +68,7 @@ class PyLlvmlite(PythonPackage):
"x86_64:",
]:
depends_on("llvm@10.0", when=f"@0.34:0.36 target={t}")
depends_on("llvm@9.0", when="@0.34:0.36 target=aarch64:")
depends_on("llvm@9.0", when="@0.33")
depends_on("llvm@7.0:7.1,8.0", when="@0.29:0.32")

View File

@@ -17,6 +17,7 @@ class PyMaturin(PythonPackage):
license("Apache-2.0")
version("1.8.2", sha256="e31abc70f6f93285d6e63d2f4459c079c94c259dd757370482d2d4ceb9ec1fa0")
version("1.6.0", sha256="b955025c24c8babc808db49e0ff90db8b4b1320dcc16b14eb26132841737230d")
version("1.5.1", sha256="3dd834ece80edb866af18cbd4635e0ecac40139c726428d5f1849ae154b26dca")
version("1.4.0", sha256="ed12e1768094a7adeafc3a74ebdb8dc2201fa64c4e7e31f14cfc70378bf93790")
@@ -42,4 +43,5 @@ class PyMaturin(PythonPackage):
# May be an accidental dependency, remove in the future
# https://git.alpinelinux.org/aports/commit/?id=7ad298b467403b96a6b97d050170e367f147a75f
# https://patchwork.yoctoproject.org/project/oe-core/patch/8803dc101b641c948805cab9e5784c38f43b0e51.1702791173.git.tim.orling@konsulko.com/
depends_on("bzip2", when="platform=darwin")
# This seems to still be an issue for others
depends_on("bzip2")

View File

@@ -16,6 +16,7 @@ class PyNumba(PythonPackage):
license("BSD-2-Clause")
version("0.61.0", sha256="888d2e89b8160899e19591467e8fdd4970e07606e1fbc248f239c89818d5f925")
version("0.60.0", sha256="5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16")
version("0.59.1", sha256="76f69132b96028d2774ed20415e8c528a34e3299a40581bae178f0994a2f370b")
version("0.58.1", sha256="487ded0633efccd9ca3a46364b40006dbdaca0f95e99b8b83e778d1195ebcbaa")
@@ -46,6 +47,9 @@ class PyNumba(PythonPackage):
variant("tbb", default=False, description="Build with Intel Threading Building Blocks")
# Be careful that the bounds given in setup.py are exclusive on the upper bound
# i.e., [min, max)
depends_on("python@3.10:3.13", when="@0.61:", type=("build", "run"))
depends_on("python@3.9:3.12", when="@0.59:", type=("build", "run"))
depends_on("python@3.8:3.11", when="@0.57:0.58", type=("build", "run"))
depends_on("python@3.7:3.10", when="@0.55:0.56", type=("build", "run"))
@@ -53,7 +57,7 @@ class PyNumba(PythonPackage):
depends_on("python@3.6:3.9", when="@0.53", type=("build", "run"))
depends_on("python@3.6:3.8", when="@0.52", type=("build", "run"))
depends_on("python@3.6:3.8", when="@0.48:0.51", type=("build", "run"))
depends_on("py-numpy@2.0", when="@0.60:", type=("build", "run"))
depends_on("py-numpy@2.0:2.2", when="@0.60:", type=("build", "run"))
depends_on("py-numpy@1.22:1.26", when="@0.58.1:0.59", type=("build", "run"))
depends_on("py-numpy@1.21:1.25", when="@0.58.0", type=("build", "run"))
depends_on("py-numpy@1.21:1.24", when="@0.57", type=("build", "run"))
@@ -63,6 +67,7 @@ class PyNumba(PythonPackage):
depends_on("py-numpy@1.17:1.20", when="@0.54", type=("build", "run"))
depends_on("py-numpy@1.15:1.20", when="@0.48:0.53", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run"))
depends_on("py-llvmlite@0.44", when="@0.61", type=("build", "run"))
depends_on("py-llvmlite@0.43", when="@0.60", type=("build", "run"))
depends_on("py-llvmlite@0.42", when="@0.59", type=("build", "run"))
depends_on("py-llvmlite@0.41", when="@0.58", type=("build", "run"))

View File

@@ -13,8 +13,11 @@ class PyPatsy(PythonPackage):
homepage = "https://github.com/pydata/patsy"
pypi = "patsy/patsy-0.5.2.tar.gz"
maintainers("climbfuji")
license("PSF-2.0")
version("0.5.4", sha256="7dabc527597308de0e8f188faa20af7e06a89bdaa306756dfc7783693ea16af4")
version("0.5.3", sha256="bdc18001875e319bc91c812c1eb6a10be4bb13cb81eb763f466179dca3b67277")
version("0.5.2", sha256="5053de7804676aba62783dbb0f23a2b3d74e35e5bfa238b88b7cbf148a38b69d")
version("0.5.1", sha256="f115cec4201e1465cd58b9866b0b0e7b941caafec129869057405bfe5b5e3991")

View File

@@ -26,6 +26,7 @@ class PyPybind11(CMakePackage, PythonExtension):
maintainers("ax3l")
version("master", branch="master")
version("2.13.6", sha256="e08cb87f4773da97fa7b5f035de8763abc656d87d5773e62f6da0587d1f0ec20")
version("2.13.5", sha256="b1e209c42b3a9ed74da3e0b25a4f4cd478d89d5efbb48f04b277df427faf6252")
version("2.13.4", sha256="efc901aa0aab439a3fea6efeaf930b5a349fb06394bf845c64ce15a9cf8f0240")
version("2.13.3", sha256="6e7a84ec241544f2f5e30c7a82c09c81f0541dd14e9d9ef61051e07105f9c445")

View File

@@ -20,6 +20,7 @@ class PyShapely(PythonPackage):
license("BSD-3-Clause")
version("main", branch="main")
version("2.0.7", sha256="28fe2997aab9a9dc026dc6a355d04e85841546b2a5d232ed953e3321ab958ee5")
version("2.0.6", sha256="997f6159b1484059ec239cacaa53467fd8b5564dabe186cd84ac2944663b0bf6")
version("2.0.5", sha256="bff2366bc786bfa6cb353d6b47d0443c570c32776612e527ee47b6df63fcfe32")
version("2.0.4", sha256="5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8")

View File

@@ -15,8 +15,11 @@ class PyStatsmodels(PythonPackage):
pypi = "statsmodels/statsmodels-0.8.0.tar.gz"
git = "https://github.com/statsmodels/statsmodels.git"
maintainers("climbfuji")
license("BSD-3-Clause")
version("0.14.1", sha256="2260efdc1ef89f39c670a0bd8151b1d0843567781bcafec6cda0534eb47a94f6")
version("0.14.0", sha256="6875c7d689e966d948f15eb816ab5616f4928706b180cf470fd5907ab6f647a4")
version("0.13.5", sha256="593526acae1c0fda0ea6c48439f67c3943094c542fe769f8b90fe9e6c6cc4871")
version("0.13.2", sha256="77dc292c9939c036a476f1770f9d08976b05437daa229928da73231147cde7d4")
@@ -33,37 +36,44 @@ class PyStatsmodels(PythonPackage):
depends_on("python@3.8:", when="@0.14:", type=("build", "link", "run"))
depends_on("python", type=("build", "link", "run"))
depends_on("py-setuptools@69.0.2:", when="@0.14.1: ^python@3.12:", type="build")
depends_on("py-setuptools@63.4.3:", when="@0.14.1:", type="build")
depends_on("py-setuptools@59.2:", when="@0.13.3:", type="build")
depends_on("py-setuptools@0.6c5:", type="build")
# pyproject.toml
depends_on("py-cython@0.29.26:2", when="@0.14:", type="build")
depends_on("py-cython@0.29.33:3", when="@0.14.1", type="build")
depends_on("py-cython@0.29.26:2", when="@0.14.0", type="build")
depends_on("py-cython@0.29.32:2", when="@0.13.5:0.13", type="build")
depends_on("py-cython@0.29.22:2", when="@0.13:", type="build")
depends_on("py-cython@0.29.14:2", when="@0.12:", type="build")
depends_on("py-cython@0.29:2", type="build")
depends_on("py-setuptools-scm+toml@7.0", when="@0.13.3:", type="build")
depends_on("py-cython@0.29.22:2", when="@0.13:0.13.4", type="build")
depends_on("py-cython@0.29.14:2", when="@0.12", type="build")
depends_on("py-cython@0.29:2", when="@:0.11", type="build")
depends_on("py-setuptools-scm+toml@8", when="@0.14.1:", type="build")
depends_on("py-setuptools-scm+toml@7.0", when="@0.13.3:0.14.0", type="build")
# patsy@0.5.1 works around a Python change
# https://github.com/statsmodels/statsmodels/issues/5343 and
# https://github.com/pydata/patsy/pull/131
# requirements.txt
depends_on("py-numpy@1.18:", when="@0.14:", type=("build", "link", "run"))
depends_on("py-numpy@1.22.3:1", when="@0.14.1:", type=("build", "link", "run"))
depends_on("py-numpy@1.18:1", when="@0.14:", type=("build", "link", "run"))
depends_on("py-numpy@1.17:", when="@0.13:", type=("build", "link", "run"))
depends_on("py-numpy@1.15:", when="@0.12.1:", type=("build", "link", "run"))
depends_on("py-numpy@1.11:", when="@0.10.1:", type=("build", "link", "run"))
# https://github.com/statsmodels/statsmodels/issues/9194
depends_on("py-numpy@:1", when="@:0.14.1", type=("build", "link", "run"))
depends_on("py-scipy@1.4:", when="@0.13.5:", type=("build", "run"))
conflicts("^py-scipy@1.9.2")
conflicts("^py-scipy@1.9.2", when="@:0.14.1")
depends_on("py-scipy@1.3:", when="@0.13:", type=("build", "run"))
depends_on("py-scipy@1.2:", when="@0.12:", type=("build", "run"))
depends_on("py-scipy@0.18:", when="@0.10.1:", type=("build", "run"))
depends_on("py-pandas@1:", when="@0.14:", type=("build", "run"))
conflicts("^py-scipy@2.1.0", when="@:0.14.1")
depends_on("py-pandas@0.25:", when="@0.13:", type=("build", "run"))
depends_on("py-pandas@0.23:", when="@0.12:", type=("build", "run"))
depends_on("py-pandas@0.19:", when="@0.10.1:", type=("build", "run"))
depends_on("py-patsy@0.5.4:", when="@0.14.1:", type=("build", "run"))
depends_on("py-patsy@0.5.2:", when="@0.13:", type=("build", "run"))
depends_on("py-patsy@0.5.1:", when="@0.12:", type=("build", "run"))
depends_on("py-patsy@0.4:", when="@0.10.1:", type=("build", "run"))

View File

@@ -17,13 +17,17 @@ class PyTorchNvidiaApex(PythonPackage, CudaPackage):
license("BSD-3-Clause")
version("master", branch="master")
version("24.04.01", sha256="065bc5c0146ee579d5db2b38ca3949da4dc799b871961a2c9eb19e18892166ce")
version(
"24.04.01",
sha256="065bc5c0146ee579d5db2b38ca3949da4dc799b871961a2c9eb19e18892166ce",
preferred=True,
)
version("23.08", tag="23.08")
version("23.07", tag="23.07")
version("23.06", tag="23.06")
version("23.05", tag="23.05")
version("22.03", tag="22.03")
version("2020-10-19", commit="8a1ed9e8d35dfad26fb973996319965e4224dcdd")
version("2020-10-19", commit="8a1ed9e8d35dfad26fb973996319965e4224dcdd", deprecated=True)
depends_on("c", type="build")
depends_on("cxx", type="build")
@@ -75,6 +79,17 @@ class PyTorchNvidiaApex(PythonPackage, CudaPackage):
# https://github.com/NVIDIA/apex/issues/1498
# https://github.com/NVIDIA/apex/pull/1499
patch("1499.patch", when="@2020-10-19")
patch(
"https://github.com/NVIDIA/apex/pull/1879.patch?full_index=1",
sha256="8e2e21aa883d93e6c0ea0fecb812c8de906b2e77bcffeeb716adabd1dd76650e",
when="@23.05:2019",
)
patch(
"https://github.com/NVIDIA/apex/pull/1855.patch?full_index=1",
sha256="8481b1234a9ce1e8bef4e57a259d8528107761e1843777489e815ec3727397fd",
when="@:24.10",
)
conflicts(
"cuda_arch=none",

View File

@@ -24,6 +24,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
maintainers("adamjstewart")
version("main", branch="main")
version("2.6.0", tag="v2.6.0", commit="1eba9b3aa3c43f86f4a2c807ac8e12c4a7767340")
version("2.5.1", tag="v2.5.1", commit="a8d6afb511a69687bbb2b7e88a3cf67917e1697e")
version("2.5.0", tag="v2.5.0", commit="32f585d9346e316e554c8d9bf7548af9f62141fc")
version("2.4.1", tag="v2.4.1", commit="ee1b6804381c57161c477caa380a840a84167676")
@@ -164,17 +165,18 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
with default_args(type=("build", "run")):
# setup.py
depends_on("py-filelock", when="@2:")
depends_on("py-typing-extensions@4.10:", when="@2.6:")
depends_on("py-typing-extensions@4.8:", when="@2.2:")
depends_on("py-typing-extensions@3.6.2.1:", when="@1.7:")
depends_on("py-setuptools")
depends_on("py-sympy", when="@2:")
depends_on("py-networkx", when="@2:")
depends_on("py-jinja2", when="@2:")
depends_on("py-fsspec", when="@2.1:")
# pyproject.toml
depends_on("py-setuptools")
depends_on("py-astunparse", when="@1.13:")
depends_on("py-numpy@1.16.6:")
depends_on("py-numpy")
# https://github.com/pytorch/pytorch/issues/107302
depends_on("py-numpy@:1", when="@:2.2")
depends_on("py-pyyaml")
@@ -188,15 +190,18 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
# Third party dependencies
depends_on("fp16@2020-05-14", when="@1.6:")
depends_on("fxdiv@2020-04-17", when="@1.6:")
depends_on("nvtx@3.1.0", when="@2.6:")
# https://github.com/pytorch/pytorch/issues/60332
# depends_on("xnnpack@2024-02-29", when="@2.3:+xnnpack")
# depends_on("xnnpack@2024-11-08", when="@2.6:+xnnpack")
# depends_on("xnnpack@2024-02-29", when="@2.3:2.5+xnnpack")
# depends_on("xnnpack@2022-12-21", when="@2.0:2.2+xnnpack")
# depends_on("xnnpack@2022-02-16", when="@1.12:1+xnnpack")
# depends_on("xnnpack@2021-06-21", when="@1.10:1.11+xnnpack")
# depends_on("xnnpack@2021-02-22", when="@1.8:1.9+xnnpack")
# depends_on("xnnpack@2020-03-23", when="@1.6:1.7+xnnpack")
depends_on("benchmark", when="@1.6:+test")
depends_on("cpuinfo@2024-09-06", when="@2.5.1:")
depends_on("cpuinfo@2024-09-26", when="@2.6:")
depends_on("cpuinfo@2024-09-06", when="@2.5.1")
depends_on("cpuinfo@2024-08-30", when="@2.5.0")
depends_on("cpuinfo@2023-11-04", when="@2.3:2.4")
depends_on("cpuinfo@2023-01-13", when="@2.1:2.2")
@@ -216,7 +221,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
depends_on("gloo+libuv", when="@1.6: platform=darwin")
depends_on("nccl", when="+nccl+cuda")
# https://github.com/pytorch/pytorch/issues/60331
# depends_on("onnx@1.16.0", when="@2.3:")
# depends_on("onnx@1.17.0", when="@2.6:")
# depends_on("onnx@1.16.0", when="@2.3:2.5")
# depends_on("onnx@1.15.0", when="@2.2")
# depends_on("onnx@1.14.1", when="@2.1")
# depends_on("onnx@1.13.1", when="@2.0")
@@ -242,7 +248,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
depends_on("pthreadpool@2020-10-05", when="@1.8")
depends_on("pthreadpool@2020-06-15", when="@1.6:1.7")
with default_args(type=("build", "link", "run")):
depends_on("py-pybind11@2.13.5:", when="@2.5:")
depends_on("py-pybind11@2.13.6:", when="@2.6:")
depends_on("py-pybind11@2.13.5:", when="@2.5")
depends_on("py-pybind11@2.12.0:", when="@2.3:2.4")
depends_on("py-pybind11@2.11.0:", when="@2.1:2.2")
depends_on("py-pybind11@2.10.1:", when="@2.0")
@@ -309,6 +316,14 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
conflicts("%gcc@:9.3", when="@2.2:", msg="C++17 support required")
# https://github.com/pytorch/pytorch/issues/146239
patch(
"https://github.com/pytorch/pytorch/pull/140275.patch?full_index=1",
sha256="65f56305a27d47d7065711d1131c6ac1611fabcb55b129c27ed6beabe4b94fe0",
when="@2.6:",
reverse=True,
)
# https://github.com/pytorch/pytorch/issues/90448
patch(
"https://github.com/pytorch/pytorch/pull/97270.patch?full_index=1",
@@ -343,6 +358,9 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
# https://github.com/pytorch/pytorch/pull/35607
# https://github.com/pytorch/pytorch/pull/37865
patch("xnnpack.patch", when="@1.5")
# https://github.com/pytorch/pytorch/issues/141083
# https://github.com/google/XNNPACK/commit/5f23827e66cca435fa400b6e221892ac95af0079
patch("xnnpack2.patch", when="@2.6", working_dir="third_party/XNNPACK")
# Fixes build error when ROCm is enabled for pytorch-1.5 release
patch("rocm.patch", when="@1.5+rocm")
@@ -672,6 +690,7 @@ def enable_or_disable(variant, keyword="USE", var=None):
env.set("USE_SYSTEM_FXDIV", "ON")
env.set("USE_SYSTEM_GLOO", "ON")
env.set("USE_SYSTEM_NCCL", "ON")
env.set("USE_SYSTEM_NVTX", "ON")
# https://github.com/pytorch/pytorch/issues/60331
# env.set("USE_SYSTEM_ONNX", "ON")
env.set("USE_SYSTEM_PSIMD", "ON")

View File

@@ -0,0 +1,34 @@
diff --git a/src/reference/unary-elementwise.cc b/src/reference/unary-elementwise.cc
index bd95ded6c..da892d8be 100644
--- a/src/reference/unary-elementwise.cc
+++ b/src/reference/unary-elementwise.cc
@@ -127,6 +127,16 @@ struct ConvertOp {
}
};
+#ifdef XNN_HAVE_FLOAT16
+template <>
+struct ConvertOp<xnn_bfloat16, _Float16> {
+ explicit ConvertOp(const xnn_unary_uparams*) {}
+ _Float16 operator()(xnn_bfloat16 x) const {
+ return static_cast<_Float16>(static_cast<float>(x));
+ }
+};
+#endif
+
template <typename TIn, typename TOut>
const xnn_unary_elementwise_config* get_convert_config(
std::true_type /*input_quantized*/, std::true_type /*output_quantized*/) {
diff --git a/src/xnnpack/simd/s16-neon.h b/src/xnnpack/simd/s16-neon.h
index 4e8ebcfbd..e8392f4e9 100644
--- a/src/xnnpack/simd/s16-neon.h
+++ b/src/xnnpack/simd/s16-neon.h
@@ -70,7 +70,7 @@ static XNN_INLINE void xnn_store_tail_s16(int16_t* output, xnn_simd_s16_t v,
v_low = vget_high_s16(v);
}
if (num_elements & 2) {
- vst1_lane_s32((void*) output, vreinterpret_s32_s16(v_low), 0);
+ vst1_lane_s32((int32_t*) output, vreinterpret_s32_s16(v_low), 0);
output += 2;
v_low = vext_s16(v_low, v_low, 2);
}

View File

@@ -17,6 +17,7 @@ class PyTorchaudio(PythonPackage):
maintainers("adamjstewart")
version("main", branch="main")
version("2.6.0", tag="v2.6.0", commit="d8831425203385077a03c1d92cfbbe3bf2106008")
version("2.5.1", tag="v2.5.1", commit="1661daf10599ca8889f092ec37814fabbe202bb0")
version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd")
version("2.4.1", tag="v2.4.1", commit="e8cbe17769796ce963fbc71b8990f1474774e6d2")
@@ -66,7 +67,8 @@ class PyTorchaudio(PythonPackage):
with default_args(type=("build", "link", "run")):
# Based on PyPI wheel availability
depends_on("python@3.9:3.12", when="@2.5:")
depends_on("python@3.9:3.13", when="@2.6:")
depends_on("python@3.9:3.12", when="@2.5")
depends_on("python@3.8:3.12", when="@2.2:2.4")
depends_on("python@3.8:3.11", when="@2.0:2.1")
depends_on("python@:3.10", when="@0.12:0")
@@ -74,6 +76,7 @@ class PyTorchaudio(PythonPackage):
depends_on("python@:3.8", when="@:0.7.0")
depends_on("py-torch@main", when="@main")
depends_on("py-torch@2.6.0", when="@2.6.0")
depends_on("py-torch@2.5.1", when="@2.5.1")
depends_on("py-torch@2.5.0", when="@2.5.0")
depends_on("py-torch@2.4.1", when="@2.4.1")
@@ -126,7 +129,7 @@ class PyTorchaudio(PythonPackage):
patch(
"https://github.com/pytorch/audio/pull/3811.patch?full_index=1",
sha256="34dce3403abb03f62827e8a1efcdb2bf7742477a01f155ebb9c7fefe9588b132",
when="@2.2:",
when="@2.2:2.5",
)
conflicts("^cuda@12.5:", when="@:2.1")

View File

@@ -18,6 +18,7 @@ class PyTorchvision(PythonPackage):
license("BSD-3-Clause")
version("main", branch="main")
version("0.21.0", sha256="0a4a967bbb7f9810f792cd0289a07fb98c8fb5d1303fae8b63e3a6b05d720058")
version("0.20.1", sha256="7e08c7f56e2c89859310e53d898f72bccc4987cd83e08cfd6303513da15a9e71")
version("0.20.0", sha256="b59d9896c5c957c6db0018754bbd17d079c5102b82b9be0b438553b40a7b6029")
version("0.19.1", sha256="083e75c467285595ec3eb3c7aa8493c19e53d7eb42f13046fb56a07c8897e5a8")
@@ -85,8 +86,6 @@ class PyTorchvision(PythonPackage):
variant("png", default=True, description=desc.format("PNG"))
variant("jpeg", default=True, description=desc.format("JPEG"))
variant("webp", default=False, description=desc.format("WEBP"), when="@0.20:")
variant("heic", default=False, description=desc.format("HEIC"), when="@0.20:")
variant("avif", default=False, description=desc.format("AVIF"), when="@0.20:")
variant("nvjpeg", default=False, description=desc.format("NVJPEG"))
variant("video_codec", default=False, description=desc.format("video_codec"))
variant("ffmpeg", default=False, description=desc.format("FFMPEG"))
@@ -97,8 +96,8 @@ class PyTorchvision(PythonPackage):
with default_args(type=("build", "link", "run")):
# Based on PyPI wheel availability
depends_on("python@3.9:3.13", when="@0.20:")
depends_on("python@3.8:3.12", when="@0.17:0.19")
depends_on("python@3.9:3.13", when="@0.21:")
depends_on("python@3.8:3.12", when="@0.17:0.20")
depends_on("python@3.8:3.11", when="@0.15:0.16")
depends_on("python@:3.10", when="@0.12:0.14")
depends_on("python@:3.9", when="@0.8.2:0.11")
@@ -106,6 +105,7 @@ class PyTorchvision(PythonPackage):
# https://github.com/pytorch/vision#installation
depends_on("py-torch@main", when="@main")
depends_on("py-torch@2.6.0", when="@0.21.0")
depends_on("py-torch@2.5.1", when="@0.20.1")
depends_on("py-torch@2.5.0", when="@0.20.0")
depends_on("py-torch@2.4.1", when="@0.19.1")
@@ -156,8 +156,6 @@ class PyTorchvision(PythonPackage):
depends_on("libpng@1.6:", when="+png")
depends_on("jpeg", when="+jpeg")
depends_on("libwebp", when="+webp")
depends_on("libheif", when="+heic")
depends_on("libavif", when="+avif")
depends_on("cuda", when="+nvjpeg")
depends_on("cuda", when="+video_codec")
depends_on("ffmpeg@3.1:", when="+ffmpeg")
@@ -214,7 +212,7 @@ def setup_build_environment(self, env):
for gpu in ["cuda", "mps"]:
env.set(f"FORCE_{gpu.upper()}", int(f"+{gpu}" in self.spec["py-torch"]))
extensions = ["png", "jpeg", "webp", "heic", "avif", "nvjpeg", "video_codec", "ffmpeg"]
extensions = ["png", "jpeg", "webp", "nvjpeg", "video_codec", "ffmpeg"]
for extension in extensions:
env.set(f"TORCHVISION_USE_{extension.upper()}", int(f"+{extension}" in self.spec))

View File

@@ -13,6 +13,7 @@ class PyXesmf(PythonPackage):
license("MIT")
version("0.8.8", sha256="8588f83007ce7011379991f516be3691df6fb30486741f0e1c33aa962056ea33")
version("0.8.4", sha256="c5a2c4b3e8dbbc9fccd5772a940f9067d68e824215ef87ba222b06718c4eeb56")
with default_args(type="build"):
@@ -21,9 +22,9 @@ class PyXesmf(PythonPackage):
with default_args(type=("build", "run")):
depends_on("py-cf-xarray@0.5.1:")
# TODO: add optional dependency
# https://github.com/esmf-org/esmf/tree/develop/src/addon/esmpy
# depends_on("py-esmpy@8:")
# esmf +python is only handled correctly in spack for 8.4+
depends_on("esmf@8.4.0: +python")
depends_on("py-numba@0.55.2:")
depends_on("py-numpy@1.16:")
depends_on("py-shapely")

View File

@@ -57,15 +57,21 @@ class Python(Package):
license("0BSD")
version("3.13.2", sha256="b8d79530e3b7c96a5cb2d40d431ddb512af4a563e863728d8713039aa50203f9")
version("3.13.1", sha256="1513925a9f255ef0793dbf2f78bb4533c9f184bdd0ad19763fd7f47a400a7c55")
version("3.13.0", sha256="12445c7b3db3126c41190bfdc1c8239c39c719404e844babbd015a1bc3fafcd4")
version("3.12.9", sha256="45313e4c5f0e8acdec9580161d565cf5fea578e3eabf25df7cc6355bf4afa1ee")
version("3.12.8", sha256="5978435c479a376648cb02854df3b892ace9ed7d32b1fead652712bee9d03a45")
version("3.12.7", sha256="73ac8fe780227bf371add8373c3079f42a0dc62deff8d612cd15a618082ab623")
version("3.12.6", sha256="85a4c1be906d20e5c5a69f2466b00da769c221d6a684acfd3a514dbf5bf10a66")
version("3.12.5", sha256="38dc4e2c261d49c661196066edbfb70fdb16be4a79cc8220c224dfeb5636d405")
version("3.12.4", sha256="01b3c1c082196f3b33168d344a9c85fb07bfe0e7ecfe77fee4443420d1ce2ad9")
version("3.12.3", sha256="a6b9459f45a6ebbbc1af44f5762623fa355a0c87208ed417628b379d762dddb0")
version("3.12.2", sha256="a7c4f6a9dc423d8c328003254ab0c9338b83037bd787d680826a5bf84308116e")
version("3.12.1", sha256="d01ec6a33bc10009b09c17da95cc2759af5a580a7316b3a446eb4190e13f97b2")
version("3.12.0", sha256="51412956d24a1ef7c97f1cb5f70e185c13e3de1f50d131c0aac6338080687afb")
version("3.11.11", sha256="883bddee3c92fcb91cf9c09c5343196953cbb9ced826213545849693970868ed")
version("3.11.10", sha256="92f2faf242681bfa406d53a51e17d42c5373affe23a130cd9697e132ef574706")
version("3.11.9", sha256="e7de3240a8bc2b1e1ba5c81bf943f06861ff494b69fda990ce2722a504c6153d")
version("3.11.8", sha256="d3019a613b9e8761d260d9ebe3bd4df63976de30464e5c0189566e1ae3f61889")
version("3.11.7", sha256="068c05f82262e57641bd93458dfa883128858f5f4997aad7a36fd25b13b29209")
@@ -76,6 +82,8 @@ class Python(Package):
version("3.11.2", sha256="2411c74bda5bbcfcddaf4531f66d1adc73f247f529aee981b029513aefdbf849")
version("3.11.1", sha256="baed518e26b337d4d8105679caf68c5c32630d702614fc174e98cb95c46bdfa4")
version("3.11.0", sha256="64424e96e2457abbac899b90f9530985b51eef2905951febd935f0e73414caeb")
version("3.10.16", sha256="f2e22ed965a93cfeb642378ed6e6cdbc127682664b24123679f3d013fafe9cd0")
version("3.10.15", sha256="a27864e5ba2a4474f8f6c58ab92ff52767ac8b66f1646923355a53fe3ef15074")
version("3.10.14", sha256="cefea32d3be89c02436711c95a45c7f8e880105514b78680c14fe76f5709a0f6")
version("3.10.13", sha256="698ec55234c1363bd813b460ed53b0f108877c7a133d48bde9a50a1eb57b7e65")
version("3.10.12", sha256="a43cd383f3999a6f4a7db2062b2fc9594fefa73e175b3aedafa295a51a7bb65c")
@@ -91,6 +99,8 @@ class Python(Package):
version("3.10.2", sha256="3c0ede893011319f9b0a56b44953a3d52c7abf9657c23fb4bc9ced93b86e9c97")
version("3.10.1", sha256="b76117670e7c5064344b9c138e141a377e686b9063f3a8a620ff674fa8ec90d3")
version("3.10.0", sha256="c4e0cbad57c90690cb813fb4663ef670b4d0f587d8171e2c42bd4c9245bd2758")
version("3.9.21", sha256="667c3ba2ca98d39ead1162f6548c3475768582e2ff89e0821d25eb956ac09944")
version("3.9.20", sha256="1e71f006222666e0a39f5a47be8221415c22c4dd8f25334cc41aee260b3d379e")
version("3.9.19", sha256="f5f9ec8088abca9e399c3b62fd8ef31dbd2e1472c0ccb35070d4d136821aaf71")
version("3.9.18", sha256="504ce8cfd59addc04c22f590377c6be454ae7406cb1ebf6f5a350149225a9354")
version("3.9.17", sha256="8ead58f669f7e19d777c3556b62fae29a81d7f06a7122ff9bc57f7dd82d7e014")
@@ -112,6 +122,9 @@ class Python(Package):
version("3.9.1", sha256="29cb91ba038346da0bd9ab84a0a55a845d872c341a4da6879f462e94c741f117")
version("3.9.0", sha256="df796b2dc8ef085edae2597a41c1c0a63625ebd92487adaef2fed22b567873e8")
with default_args(deprecated=True):
version(
"3.8.20", sha256="9f2d5962c2583e67ef75924cd56d0c1af78bf45ec57035cf8a2cc09f74f4bf78"
)
version(
"3.8.19", sha256="c7fa55a36e5c7a19ec37d8f90f60a2197548908c9ac8b31e7c0dbffdd470eeac"
)
@@ -159,8 +172,8 @@ class Python(Package):
"3.6.15", sha256="54570b7e339e2cfd72b29c7e2fdb47c0b7b18b7412e61de5b463fc087c13b043"
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("c", type="build")
depends_on("cxx", type="build")
extendable = True

View File

@@ -16,13 +16,14 @@ class Qmcpack(CMakePackage, CudaPackage):
maintainers("ye-luo")
tags = ["ecp", "ecp-apps"]
license("CC0-1.0")
license("NCSA", checked_by="prckent")
# This download method is untrusted, and is not recommended by the
# Spack manual. However, it is easier to maintain because github hashes
# can occasionally change.
# NOTE: 12/19/2017 QMCPACK 3.0.0 does not build properly with Spack.
version("develop")
version("4.0.0", tag="v4.0.0", commit="0199944fb644b4798446fdfc0549c81666a4a943")
version("3.17.1", tag="v3.17.1", commit="9d0d968139fc33f71dbf9159f526dd7b47f10a3b")
version("3.17.0", tag="v3.17.0", commit="9049a90626d1fe3c431f55c56a7197f8a13d5fc6")
version("3.16.0", tag="v3.16.0", commit="5b7544c40be105b0aafa1602601ccb0cf23ea547")

View File

@@ -24,6 +24,7 @@ class QuantumEspresso(CMakePackage, Package):
license("GPL-2.0-only")
version("develop", branch="develop")
version("7.4.1", sha256="6ef9c53dbf0add2a5bf5ad2a372c0bff935ad56c4472baa001003e4f932cab97")
version("7.4", sha256="b15dcfe25f4fbf15ccd34c1194021e90996393478226e601d876f7dea481d104")
version("7.3.1", sha256="2c58b8fadfe4177de5a8b69eba447db5e623420b070dea6fd26c1533b081d844")
version("7.3", sha256="edc2a0f3315c69966df4f82ec86ab9f682187bc9430ef6d2bacad5f27f08972c")

View File

@@ -22,6 +22,7 @@ class RCurl(RPackage):
license("MIT")
version("6.2.0", sha256="0399bb6bcad5f31ad2a2a7165ff8c976111707125ca0a9c4b8ccf40bb5eb1635")
version("5.2.1", sha256="4a7a4d8c08aa1bca2fcd9c58ade7b4b0ea2ed9076d0521071be29baac8adfa90")
version("5.0.0", sha256="d7f3cac9b513914ffa8f6f64e6fa5dd96c8273378ace6b0c16b71bc6ba59c9b2")
version("4.3.3", sha256="3567b6acad40dad68acfe07511c853824839d451a50219a96dd6d125ed617c9e")
@@ -63,3 +64,11 @@ class RCurl(RPackage):
depends_on("r@3.0.0:", type=("build", "run"))
depends_on("curl", when="@4.3:")
depends_on("curl@:7.63", when="@:4.0")
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282908
requires("curl@:8.10", when="@:5.2.1")
# (Jan 2025) MacOS ships a very buggy libcurl 8.7.1 so we avoid this until apple updates it
# See: https://github.com/jeroen/curl/issues/376
# from: https://github.com/jeroen/curl/blob/v6.2.0/configure#L18
depends_on("curl@8.8.0:", when="@6.2.0: platform=darwin")

View File

@@ -25,6 +25,11 @@ class Reframe(Package):
license("BSD-3-Clause")
version("develop", branch="develop")
version("4.7.3", sha256="74b8f56dc622d1c75fc1152d15d45e00edab9d2db1f6bc8fd7290125d69c74dd")
version("4.7.2", sha256="90e04eaaa21afd5c29a9c6218204c3df4503f624f21f2fe773f90e148d30c152")
version("4.7.1", sha256="ed693368d8b47327981a0db2b984c88d7dd703add1ffe736c95f9193ef727baf")
version("4.7.0", sha256="4a2604616cd492ab21b09f8234482239eff1a07e1ee61f4e4493fd973e7d5dc2")
version("4.6.4", sha256="6167ecfe6711fb9c412c0198cab549f4826eae502c9b592f18eb0192390e740e")
version("4.6.3", sha256="0f335e588d21a26d76beb011bc86baf80ba633d875512ecd564d0aeb320fcf2c")
version("4.6.2", sha256="d3343815ee3d2c330b91a1cdb924ba184119ed7d9fc88a4a754b939a4259df82")
version("4.6.1", sha256="058b05c430af26d2958851af0da32bac0f4bff1af7d78ce6a132c32bbe40ec5c")
@@ -133,6 +138,8 @@ class Reframe(Package):
depends_on("py-pyyaml", when="@3.4.1:", type="run")
depends_on("py-requests", when="@3.4.1:", type="run")
depends_on("py-semver", when="@3.4.2:", type="run")
depends_on("py-filelock", when="@4.7:", type="run")
depends_on("py-tabulate", when="@4.7:", type="run")
# extension dependencies
depends_on("py-pygelf", when="+gelf", type="run")
@@ -144,7 +151,7 @@ class Reframe(Package):
# sanity check
sanity_check_is_file = ["bin/reframe"]
sanity_check_is_dir = ["bin", "config", "docs", "reframe", "tutorials", "unittests"]
sanity_check_is_dir = ["bin", "docs", "reframe"]
# check if we can run reframe
@run_after("install")

View File

@@ -18,6 +18,8 @@ class Salt(CMakePackage):
license("Apache-2.0", checked_by="wspear")
version("master", branch="master")
version("0.3.0", sha256="7df4c060c292ed625d4c1cc8c0e794cd4380a263df63693b648b3c8e0cf51ccf")
version("0.2.0", sha256="55c80f9d0591752b1e5b40e924718dc28f928ee0a3c7008adec3feab1280c57f")
depends_on("llvm+clang+flang@19:")
depends_on("cxx", type="build")
depends_on("llvm+clang+flang@19", type=("build", "link", "run"))

View File

@@ -19,6 +19,7 @@ class Scotch(CMakePackage, MakefilePackage):
maintainers("pghysels")
version("7.0.6", sha256="b44acd0d2f53de4b578fa3a88944cccc45c4d2961cd8cefa9b9a1d5431de8e2b")
version("7.0.4", sha256="8ef4719d6a3356e9c4ca7fefd7e2ac40deb69779a5c116f44da75d13b3d2c2c3")
version("7.0.3", sha256="5b5351f0ffd6fcae9ae7eafeccaa5a25602845b9ffd1afb104db932dd4d4f3c5")
version("7.0.1", sha256="0618e9bc33c02172ea7351600fce4fccd32fe00b3359c4aabb5e415f17c06fed")
@@ -121,8 +122,8 @@ def libs(self):
class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
def cmake_args(self):
spec = self.spec
args = [
self.define_from_variant("BUILD_LIBSCOTCHMETIS", "metis"),
self.define_from_variant("INSTALL_METIS_HEADERS", "metis"),
@@ -133,7 +134,10 @@ def cmake_args(self):
self.define_from_variant("MPI_THREAD_MULTIPLE", "mpi_thread"),
]
if "+int64" in spec:
if self.pkg.version > Version("7.0.4"):
args.append(self.define("ENABLE_TESTS", self.pkg.run_tests))
if "+int64" in self.spec:
args.append("-DINTSIZE=64")
return args

View File

@@ -18,6 +18,7 @@ class Serialbox(CMakePackage):
license("BSD-2-Clause")
version("2.6.2", sha256="d1b4c79078e3b1d4a45b7b024eb647d21873498ac666e41a5ee8b8e13c95a7ac")
version("2.6.1", sha256="b795ce576e8c4fd137e48e502b07b136079c595c82c660cfa2e284b0ef873342")
version("2.6.0", sha256="9199f8637afbd7f2b3c5ba932d1c63e9e14d553a0cafe6c29107df0e04ee9fae")
version("2.5.4", sha256="f4aee8ef284f58e6847968fe4620e222ac7019d805bbbb26c199e4b6a5094fee")

Some files were not shown because too many files have changed in this diff Show More