Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
338 commits
Select commit Hold shift + click to select a range
cf48a8f
solver: choose `virtual_on_edge` and derive `depends_on` (#52003)
alalazo Feb 24, 2026
34ea965
spack-completion.bash: completion after --foo bar (#51974)
haampie Feb 24, 2026
db75cdd
new_installer.py: parse build log on failure (#52000)
haampie Feb 24, 2026
c8d02b2
solver: turn a choice rule into an integrity constraint (#52001)
alalazo Feb 25, 2026
ed39087
new_installer.py: small log file improvements (#51998)
haampie Feb 25, 2026
23461b8
new_installer.py: delayed database write (#51951)
haampie Feb 25, 2026
1345bf3
Include parent scopes: consistent validation, add unit test (#51966)
tldahlgren Feb 26, 2026
2e5c7c0
tests: isolate binary index cache in some tests (#52007)
haampie Feb 26, 2026
bdfad3c
environment: allow group of specs with dependencies (#51891)
alalazo Feb 26, 2026
18ea99c
lock.py: reduce syscalls to a minimum (#51996)
haampie Feb 26, 2026
06f3ac4
spack find: display group of specs in environment (#52009)
alalazo Feb 26, 2026
d78301c
config.py: fix invalid scope error message (#52010)
tldahlgren Feb 27, 2026
5d258c7
new_installer.py: improve non-TTY output format (#52005)
haampie Feb 27, 2026
b99e4b7
new_installer.py: always pivot prefix, decouple from `--overwrite` (#…
haampie Feb 27, 2026
b67fc81
new_installer.py: initial multi-process support (#51985)
haampie Feb 27, 2026
28c3b2c
setup-env.sh: if exe contains qemu, use /proc/$$/comm instead (#41710)
wdconinc Mar 2, 2026
8206de1
spack repo list: machine readable output with --json (#51950)
becker33 Mar 2, 2026
bf1345e
solver: add virtuals to the correct unification sets (#52015)
alalazo Mar 3, 2026
2bbb9d1
lmod layout: support non-virtuals in hierarchy (#51824)
becker33 Mar 3, 2026
8841665
packages.yaml: mark opengl as buildable:false (#52019)
alalazo Mar 3, 2026
3e99a43
solver: fix rule for virtuals that are provided together (#52021)
alalazo Mar 4, 2026
9cc9492
Support named git includes (#51939)
tldahlgren Mar 5, 2026
6a903a9
Bugfix/cmd list: return proper path for json and html output (#51914)
tldahlgren Mar 5, 2026
e520b87
solver: fix issues with the computation of `max_dupes` (#52027)
alalazo Mar 5, 2026
341772b
variant.py: Sequence -> Iterable (#51859)
haampie Mar 5, 2026
3d24559
spack config: add --group option (#52025)
alalazo Mar 6, 2026
0257aeb
build(deps): bump sphinxcontrib-svg2pdfconverter in /lib/spack/docs (…
dependabot[bot] Mar 6, 2026
6e8e241
tests: print autocompletion diff when it needs updating (#52032)
scheibelp Mar 6, 2026
c9e77cd
new_installer.py: event-driven terminal resize (#52011)
haampie Mar 6, 2026
50271c2
Support cxx and fortran for Lmod compiler hierarchy (#52018)
vanderwb Mar 6, 2026
580bc2d
color.py: fix @@ unescaping (#52034)
haampie Mar 6, 2026
7842cb4
new_installer.py: read locks on installed deps (#52012)
haampie Mar 7, 2026
66cec54
config.py: atomic writes to prevent parallel test races (#52041)
haampie Mar 9, 2026
f0731ae
new_installer.py: concurrent overwrite installs (#52013)
haampie Mar 9, 2026
b476196
ci: try new installer in bootstrap.yml (#51784)
haampie Mar 9, 2026
ec3367b
Fix some typos found with codespell (#52038)
xdelaruelle Mar 9, 2026
d6df756
new_installer.py: archive build provenance metadata (#51999)
haampie Mar 10, 2026
7ab5c18
mailmap: add Harmen Stoppels (#52035)
haampie Mar 10, 2026
638120f
lock.py: re-affirm POSIX lock to support forking (#52004)
haampie Mar 10, 2026
c8dc13e
new_installer.py: reset stdout/stderr on Tee exit (#52053)
haampie Mar 11, 2026
f6ae52c
new_installer.py: no log file for externals (#52055)
haampie Mar 11, 2026
a7bfaf7
spack buildcache update-index: add timing when verbose is active (#52…
alalazo Mar 11, 2026
fee5e77
new_installer.py: integration testing (#52049)
haampie Mar 11, 2026
22f600d
Revert "variant.py: Sequence -> Iterable (#51859)" (#52056)
alalazo Mar 11, 2026
d5c1d9e
package_base.py: unit_test_check is not public API (#52060)
haampie Mar 11, 2026
a8fb9ef
new_installer.py: add --test support (#52047)
haampie Mar 11, 2026
cfccf30
new_installer.py: --verbose in non-TTY mode (#52048)
haampie Mar 12, 2026
9922e02
new_installer.py: reporters (#52058)
haampie Mar 12, 2026
bbeff4b
installer.py: pass debug=True to logger for clarity (#52067)
becker33 Mar 12, 2026
6b91d63
new_installer.py: enable debug like old installer (#52059)
haampie Mar 12, 2026
ad8b410
concretize.lp: avoid imposing transitive link deps of compiler run de…
haampie Mar 12, 2026
5a8a793
Deprecate `include_concrete:` in favor of `include:`
tldahlgren Mar 13, 2026
54135ed
modules: ease tcl template & modulefile readability (#52046)
xdelaruelle Mar 13, 2026
2e154c5
new_installer.py: log filtering of path padding (#52071)
haampie Mar 13, 2026
dfead31
new_installer.py: drain logs pipe before close (#52080)
haampie Mar 14, 2026
9a0390d
new_installer.py: always try build cache (#52073)
haampie Mar 14, 2026
08dac53
new_installer.py: better color support (and a small path filtering fi…
haampie Mar 15, 2026
428b2ab
fetch: retry urllib downloads with back-off (#52081)
haampie Mar 16, 2026
e0997bb
spec_parser.py: extract toolchain expansion from SpecParser (#52076)
alalazo Mar 16, 2026
58f0e6a
Add test for resolving git-based relative includes in environments (#…
alalazo Mar 16, 2026
2f1ef9a
new_installer.py: join timeout in finally block (#52082)
haampie Mar 16, 2026
f65b58c
new_installer.py: clean up state_buffers on exit (#52083)
haampie Mar 16, 2026
bf89694
new_installer.py: use longer timeout for non-TTY (#52085)
haampie Mar 16, 2026
7344031
new_installer.py: fix non-blocking I/O (#52086)
haampie Mar 16, 2026
95a4aab
new_installer.py: ensure newlines between logs (#52087)
haampie Mar 16, 2026
e2c49f2
new_installer.py: catch JSONDecodeError (#52084)
haampie Mar 16, 2026
b80b32c
ci: only use --verbose for root install, not deps (#52090)
haampie Mar 17, 2026
96cae55
new_installer.py: fork safety of ssl/boto3/urllib3 (#52089)
haampie Mar 17, 2026
0a126d6
install_test.py: break circular import (#52092)
haampie Mar 17, 2026
585e25c
urlopen: clean up resources (#52091)
haampie Mar 17, 2026
721add3
environment: reconstruct groups from lockfiles (#52095)
alalazo Mar 17, 2026
3878e80
new_installer.py: build failure ui improvements (#52093)
haampie Mar 17, 2026
453adc9
new_installer.py: two log fixes (#52096)
haampie Mar 17, 2026
e90f050
new_installer.py: no status line at the end (#52098)
haampie Mar 18, 2026
b18ad34
Remove amdblis and amdlibflame as defaults (#52099)
alalazo Mar 18, 2026
248e95e
git: ensure git server configured for tests (#51989)
psakievich Mar 18, 2026
e958367
new_installer.py: clear progress line on ^C (#52103)
haampie Mar 19, 2026
c052a32
test/cmd/install.py: enable new installer more (#52097)
haampie Mar 19, 2026
3cae9d1
detection: deduplicate specs at different prefixes (#52100)
alalazo Mar 19, 2026
1dd8c81
solver: prefer best provider above one with no penalty on variants (#…
alalazo Mar 19, 2026
f1cb12f
requirements.py: fix toolchain expansion for preferences (#52106)
alalazo Mar 19, 2026
7b37863
Revert "solver: prefer best provider above one with no penalty on var…
haampie Mar 19, 2026
8153569
Add Changelog to Package API section (#52110)
alalazo Mar 20, 2026
e88dce1
audit: catch propagation in directives (#52113)
alalazo Mar 20, 2026
edfe62a
urlopen: improved retry on transient error (#52088)
haampie Mar 20, 2026
436c22b
solver: rename `NodeArgument` to `NodeId`. (#52116)
tgamblin Mar 20, 2026
7a17cfc
`spack_json`: add `pretty` option to `to_json()` (#52118)
tgamblin Mar 20, 2026
041eeb2
executable.py: refactor to improve static type analysis (#52111)
haampie Mar 20, 2026
c11fda3
`.gitignore`: ignore coding agents state directories (#52125)
tgamblin Mar 21, 2026
b742ce9
new_installer.py: support --source (#52122)
haampie Mar 22, 2026
cd9f9d3
new_installer.py: dynamic --jobs (#51997)
haampie Mar 22, 2026
0714f2f
lock.py: add non-blocking api (#52126)
haampie Mar 23, 2026
3b6064d
new_installer.py: improve SIGTERM handler of build (#52102)
haampie Mar 23, 2026
618dd72
solver: prefer best compiler above one with no penalty on variants (t…
alalazo Mar 23, 2026
f66589c
installer: improve spawn/forkserver (#52127)
haampie Mar 23, 2026
84721f0
solver: remove unused `asp` attribute from `Result` (#52136)
alalazo Mar 24, 2026
9ff2ef8
debug.py: avoid pdb import, simplify (#52139)
haampie Mar 25, 2026
33d863b
new_installer: mark explicit if already installed but implicit in db …
haampie Mar 25, 2026
30883e6
solver: switch version_constraints from set of tuples to dictionary (…
alalazo Mar 25, 2026
1b010c5
Mirror all skip placeholder packages (#51991)
alstar555 Mar 26, 2026
0875e9b
build(deps): bump black in /.github/workflows/requirements/style (#52…
dependabot[bot] Mar 26, 2026
86fccfa
Revert "build(deps): bump black in /.github/workflows/requirements/st…
haampie Mar 26, 2026
0517e97
config.yaml: default to `installer: new` (#52149)
haampie Mar 26, 2026
625e9f5
new_installer.py: support --until (#52123)
haampie Mar 26, 2026
bf1637a
remote include path: cache under enclosing scope ({spack|include}.yam…
tldahlgren Mar 26, 2026
a5b4056
languages: add hip-lang, cuda-lang (#52145)
haampie Mar 27, 2026
2e0cf4d
Document correct practices for specifying dependency version ranges (…
sethrj Mar 30, 2026
6901e4a
new_installer.py: suspend, background, foreground (#52101)
haampie Mar 30, 2026
87dd2ba
conf.py: do not document re-export of spack.package classes (#52169)
haampie Mar 30, 2026
60bdc99
new_installer.py: elapsed time (#52163)
haampie Mar 30, 2026
e2e28b8
docs: pygments v2.20.0 (#52171)
dependabot[bot] Mar 30, 2026
c974ccb
new_installer.py: fix cursor movement compatibility (#52173)
haampie Mar 30, 2026
a1dbb85
new_installer.py: docs (#52164)
haampie Mar 31, 2026
91849fe
ci: print spec in each rebuild job (#49021)
becker33 Mar 31, 2026
abd879b
Update Completion: turn off argparse color for 3.14 and newer (#52174)
johnwparent Apr 1, 2026
b1f8182
docs: minor modification on the example (#52180)
alalazo Apr 1, 2026
fd7e3d6
repo: improve patch lookup speed (#52157)
haampie Apr 1, 2026
3451e95
spec.py: avoid cache validation in satisfies (#52176)
haampie Apr 1, 2026
ed06dce
tags.py: fix integration test (#52184)
haampie Apr 1, 2026
e1d7af8
environment.py: use tag from pkg for view regen (#52182)
haampie Apr 1, 2026
10f6348
new_installer.py: remove pkg->mtime dict ipc (#52183)
haampie Apr 1, 2026
61627c0
main.py: cache spack commit (#52185)
haampie Apr 1, 2026
41351d3
build(deps): bump mypy in /.github/workflows/requirements/style (#52178)
dependabot[bot] Apr 1, 2026
af1edd4
new_installer.py: new process group instead of session (#52192)
haampie Apr 2, 2026
36a7126
new_installer: make build cache index optional (#52188)
vbrunini Apr 6, 2026
d42d88d
schema: reduce schema size with $ref and definitions (#52206)
haampie Apr 7, 2026
fe59468
environment.py: minor comment fix (#52213)
haampie Apr 7, 2026
dee44d7
docs: cleanup installer output (#52204)
haampie Apr 7, 2026
e0e272c
new_installer.py: defensive prefix checks (#52146)
haampie Apr 7, 2026
ef7d9bc
Pin remaining versioned GHAs to SHAs (#52218)
johnwparent Apr 7, 2026
d58206b
display_specs: display abstract hash if present (#52219)
becker33 Apr 8, 2026
21167cc
lock.py: fix release_write when _read > 0 (#52202)
haampie Apr 8, 2026
0bc681a
database.py: fix toctou bugs (#52200)
haampie Apr 8, 2026
0734189
file_cache.py: single-file byte-range locking (#52199)
haampie Apr 8, 2026
80e8c08
installer.py: avoid chmod when --fake (#52196)
haampie Apr 8, 2026
cf79a2b
installer.py: --until <last phase> (#52195)
haampie Apr 8, 2026
0a62e2b
spack env create: do not call regen views (#52190)
haampie Apr 8, 2026
5a1576c
environment: replace included environment list attributes with Concre…
alalazo Apr 8, 2026
b8e5192
Don't drop compiler flags when `packages:all:require` sets a target (…
scheibelp Apr 8, 2026
45b9069
new_installer.py: sub_process < /dev/null (#52221)
haampie Apr 8, 2026
0060267
spack buildcache push: add --group argument (#52224)
alalazo Apr 9, 2026
cb9daa2
new_installer.py: fix line wrap issues (#52193)
haampie Apr 9, 2026
0ed3c47
file_cache: drop init_entry/mtime and simplify (#52201)
haampie Apr 10, 2026
3eeebb0
Add more tests for error messages (#52228)
alalazo Apr 10, 2026
ddff444
LockTransaction: fix typing, context-manager path (#52203)
haampie Apr 10, 2026
359b160
reporters: fix hard failure with non-UTF-8 logs (#52235)
haampie Apr 10, 2026
6775e4e
new_installer.py: use buffered io in log (#52231)
haampie Apr 10, 2026
30f02a2
new_installer.py: fix stdin double buffering bug (#52234)
haampie Apr 10, 2026
7c0cc38
core: fix two typos (#52240)
haampie Apr 13, 2026
9c6e8b2
new_installer.py: extract two functions (#52241)
haampie Apr 13, 2026
ac5ae7d
environment groups: add "explicit" attribute (#52244)
alalazo Apr 13, 2026
8d5979d
setup-env.sh: speed up when no module command (#52245)
haampie Apr 13, 2026
322df1a
file_cache.py: use mkstemp instead of .tmp suffix (#52238)
kwryankrattiger Apr 13, 2026
42a7a32
ctest_log_parser.py: respect configured concurrency level (#52215)
johnwparent Apr 13, 2026
ac19751
Fix Dependabot config and add coverage requirements (#52253)
alecbcs Apr 13, 2026
b4ca17b
Update actions/checkout to v6 (#52252)
kwryankrattiger Apr 14, 2026
0ae120f
build(deps): bump mypy in /.github/workflows/requirements/style (#52254)
dependabot[bot] Apr 14, 2026
7077069
build(deps): bump julia-actions/cache from 2.1.0 to 3.0.2 (#52255)
dependabot[bot] Apr 14, 2026
83941b1
build(deps): bump docker/setup-buildx-action from 3.8.0 to 4.0.0 (#52…
dependabot[bot] Apr 14, 2026
c306c49
build(deps): bump codecov/codecov-action from 5.1.2 to 6.0.0 (#52257)
dependabot[bot] Apr 14, 2026
4e89fcd
build(deps): bump actions/stale from 9.1.0 to 10.2.0 (#52259)
dependabot[bot] Apr 14, 2026
8112906
build(deps): bump coverage in /.github/workflows/requirements (#52260)
dependabot[bot] Apr 14, 2026
39f0ec1
build(deps): bump docker/login-action from 3.3.0 to 4.1.0 (#52258)
dependabot[bot] Apr 14, 2026
e8e692e
externals: fix parsing single-valued variants (#52250)
alalazo Apr 14, 2026
698572e
solver: fix weights for unshifted priorities (#52267)
alalazo Apr 14, 2026
c330943
test: fix chmod issue (#52230)
haampie Apr 14, 2026
410e216
requirements.py: warn on `prefer:all:[%foo]` (#52142)
haampie Apr 14, 2026
804a031
spack repo: render help docs for sub-commands like spack ci (#52159)
alecbcs Apr 14, 2026
dce16ac
Update checkout action (#52272)
kwryankrattiger Apr 14, 2026
61cbce3
build(deps): bump docker/setup-qemu-action from 3.2.0 to 4.0.0 (#52277)
dependabot[bot] Apr 15, 2026
5f1050c
build(deps): bump docker/metadata-action from 5.6.1 to 6.0.0 (#52276)
dependabot[bot] Apr 15, 2026
9409119
build(deps): bump actions/upload-artifact from 4.5.0 to 7.0.1 (#52273)
dependabot[bot] Apr 15, 2026
1cb6b2f
build(deps): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#52275)
dependabot[bot] Apr 15, 2026
346bfdc
build(deps): bump docker/build-push-action from 6.10.0 to 7.1.0 (#52274)
dependabot[bot] Apr 15, 2026
bbc543b
ctest_log_parser.py: faster and sequential (#52249)
haampie Apr 15, 2026
e362be2
concretizer: raise a clear error on unknown concrete targets (#52246)
alalazo Apr 15, 2026
852dee2
log parser: change formatting (#52269)
haampie Apr 15, 2026
b4dff70
main: error on unrecognized top-level flags (#52283)
haampie Apr 15, 2026
9ae226e
build(deps): bump actions/download-artifact from 4.1.8 to 8.0.1 (#52287)
dependabot[bot] Apr 16, 2026
54365b0
build(deps): bump actions/setup-python from 5.3.0 to 6.2.0 (#52286)
dependabot[bot] Apr 16, 2026
18f78d0
new_installer.py: take db write lock if needed (#52268)
haampie Apr 16, 2026
db1102b
main.py: deprecate --pdb, drop SIGINT handler (#52281)
haampie Apr 16, 2026
80377d0
globals: use cast(..., singleton) (#52242)
haampie Apr 16, 2026
3dc8127
ci: remove unused types-six (#52290)
haampie Apr 16, 2026
82d2873
new_installer.py: bump log buffer (#52232)
haampie Apr 16, 2026
b0f0aa7
reporters: disable when not needed (#52229)
haampie Apr 16, 2026
42611f0
spack env view: fix bash tab completion (#52288)
haampie Apr 16, 2026
58885ee
environment: minor code cleanup (#52293)
alalazo Apr 16, 2026
ef80d66
docs: explain stage_name config option (#52220)
cmelone Apr 16, 2026
2bad556
Add a check that load_module succeeds (#51957)
becker33 Apr 17, 2026
c21db15
Spack Style: Ruff (#52156)
johnwparent Apr 17, 2026
ec2a0f4
build(deps): bump pytest from 9.0.2 to 9.0.3 in /lib/spack/docs (#52303)
dependabot[bot] Apr 17, 2026
14304d7
spack repo: add show-version-updates command (#52170)
alecbcs Apr 17, 2026
e686a9b
environment: fix failure to remove + create an environment (#52294)
alalazo Apr 17, 2026
14acd56
build(deps): bump sphinxcontrib-programoutput in /lib/spack/docs (#51…
dependabot[bot] Apr 18, 2026
85b1612
main.py: deprecate --profile flags (#52301)
haampie Apr 18, 2026
db368d2
build(deps): bump CI dependencies (#52316)
haampie Apr 18, 2026
7e86478
Allow disabling develop package reference stage links via config. (#5…
vbrunini Apr 19, 2026
d40ab30
log parser: optimize regexes by grouping prefixes (#52295)
haampie Apr 23, 2026
9c7e557
phase logging: fixes for Windows (#51791)
johnwparent Apr 23, 2026
b7ab4c3
`CITATION.cff`: use `collection-title` field to help `ruby-cff` (#52319)
tgamblin Apr 23, 2026
1f5251b
Revert "phase logging: fixes for Windows (#51791)" (#52335)
scheibelp Apr 23, 2026
d3ac7d4
phase logging: fixes for Windows (#52336)
johnwparent Apr 23, 2026
2229638
new_installer.py: blocked by other process message (#52321)
haampie Apr 24, 2026
97642b6
log parser: drop profiler context manager (#52300)
haampie Apr 24, 2026
70a3efe
buildcache_prune updates (#51818)
zackgalbreath Apr 24, 2026
9172992
reporters: use stage log file in new installer (#52236)
haampie Apr 24, 2026
8c108f3
log parser: `tail -n` like support (#52279)
haampie Apr 25, 2026
218f5ad
build(deps): bump julia-actions/setup-julia from 3.0.0 to 3.0.1 (#52337)
dependabot[bot] Apr 26, 2026
b607dd3
new_installer.py: keep logs on failure (#52338)
haampie Apr 27, 2026
c4b9b9d
file_cache.py: use str key (#52345)
haampie Apr 27, 2026
8fe8354
Simplify `BinaryCacheIndex.update` + some fixes (#52344)
alalazo Apr 28, 2026
81e1e25
json: fix call sites of SpackJSONError (#52352)
haampie Apr 28, 2026
2ed678c
new_installer.py: improve error formatting (#52280)
haampie Apr 28, 2026
1085230
new_installer.py: only call schedule if pending builds (#52342)
haampie Apr 28, 2026
acb0df4
Split `sjson.dump` to avoid ambiguous type-hints (#52350)
alalazo Apr 28, 2026
1942aed
mirror.py: add type-hints and minor cleanup (#52347)
alalazo Apr 28, 2026
77de25e
ctest_log_parser: type hints, bug fixes, refactor (#52346)
haampie Apr 28, 2026
fad6103
Rename a few classes in binary_distribution.py (#52351)
kwryankrattiger Apr 28, 2026
a26ef0d
solver: pre-check if unknown virtuals are in the input specs (#52317)
alalazo Apr 29, 2026
7d9f209
config edit: create the scope directory if it does not exist (#52297)
alalazo Apr 29, 2026
078f8fa
environment: Make mutate capable of handling multiple selectors/mutat…
vbrunini Apr 29, 2026
243f50f
documentation: faq on how to debug concretization errors (#52315)
alalazo Apr 29, 2026
79c9381
new_installer.py: schedule build deps dynamically (#52222)
haampie Apr 30, 2026
9513d26
buildcache: --allow-missing flag for partial pushes (#52354)
alstar555 Apr 30, 2026
e0a74b0
views: collapse unique subtrees in symlink case (#52135)
haampie Apr 30, 2026
92f56c6
build(deps): bump julia-actions/cache from 3.0.2 to 3.1.0 (#52362)
dependabot[bot] May 4, 2026
4254eca
sbang: install ahead of time (#52369)
haampie May 5, 2026
dc375fd
Bump the package API version to v2.5 (#52359)
alalazo May 5, 2026
7c3216c
download cache: fix race (#52365)
haampie May 5, 2026
2e49541
commands: consistency in exit codes, improved cli errors (#52284)
haampie May 6, 2026
7590ac7
Warn about missing index only during concretization (#52376)
alalazo May 6, 2026
2f9910e
new_installer.py: do not add token if decrease is pending (#52378)
haampie May 6, 2026
67df5f9
bootstrap env: cleanup environment lockfile on failure (#52304)
johnwparent May 7, 2026
86305d0
new_installer.py: bold, not bold white (#52383)
haampie May 8, 2026
7aa4d90
pyproject: configure ruff check to implicitly fix (#52387)
johnwparent May 11, 2026
83d07ab
add command 'location --view' (#52177)
dabele May 11, 2026
d2e004d
build(deps): bump julia-actions/setup-julia from 3.0.1 to 3.0.2 (#52392)
dependabot[bot] May 12, 2026
ae7f79f
build(deps): bump coverage in /.github/workflows/requirements/coverag…
dependabot[bot] May 12, 2026
74faab1
new_installer.py: landlock sandbox (#52334)
haampie May 13, 2026
1e9438d
solver: fix a bug with toolchain expansion in `prefer` rules (#52388)
alalazo May 13, 2026
84cb7ff
new_installer.py: close proc after join (#52401)
haampie May 13, 2026
8001bb2
add audit check for placeholder maintainers (#52399)
cmelone May 13, 2026
5e55a51
Fix setup failure when nonexist directory has '.' in basename (#52355)
sethrj May 15, 2026
afd4002
Windows: Remove pywin32 dependency (#52331)
johnwparent May 16, 2026
3791c7b
parallel.py: enable under forkserver/spawn (#52410)
haampie May 18, 2026
e88eef4
Windows Shells: Allow bin/spack to work as expected (#52298)
johnwparent May 18, 2026
687ba45
Use temporary_store to prevent permission errors with xdist parallel …
alecbcs May 20, 2026
59f0949
Bootstrap Environment: ensure paths are posix (#52409)
johnwparent May 20, 2026
6fb75bd
Merge remote-tracking branch 'upstream/develop' into update-spack-fro…
AlexanderHrabski-NOAA May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.bat text eol=crlf
*.py diff=python
*.py text eol=lf
lib/spack/spack/vendor/* linguist-vendored
*.bat text eol=crlf
7 changes: 4 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
# Requirements to run style checks and build documentation

- package-ecosystem: "pip"
directories:
- "/.github/workflows/requirements/style/*"
- "/.github/workflows/requirements/coverage"
- "/.github/workflows/requirements/style"
- "/.github/workflows/requirements/unit_tests"
- "/lib/spack/docs"
schedule:
interval: "daily"
56 changes: 44 additions & 12 deletions .github/workflows/bootstrap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,16 @@ jobs:
make patch unzip which xz python3 python3-devel tree \
cmake bison
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Bootstrap clingo
run: |
. share/spack/setup-env.sh
spack config add config:installer:new
spack bootstrap disable github-actions-v2
spack bootstrap disable github-actions-v0.6
spack -d solve zlib
spack solve zlib
tree ~/.spack/bootstrap/store/

clingo-sources:
Expand All @@ -60,19 +61,20 @@ jobs:
if: ${{ matrix.runner != 'ubuntu-latest' }}
run: brew install bison tree
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.12"
- name: Bootstrap clingo
run: |
. share/spack/setup-env.sh
spack config add config:installer:new
spack bootstrap disable github-actions-v2
spack bootstrap disable github-actions-v0.6
export PATH="$(brew --prefix bison)/bin:$(brew --prefix cmake)/bin:$PATH"
spack -d solve zlib
spack solve zlib
tree ~/.spack/bootstrap/store/

gnupg-sources:
Expand All @@ -91,16 +93,17 @@ jobs:
sudo rm $(command -v gpg gpg2 patchelf)
done
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Bootstrap GnuPG
run: |
. share/spack/setup-env.sh
spack config add config:installer:new
spack solve zlib
spack bootstrap disable github-actions-v2
spack bootstrap disable github-actions-v0.6
spack -d gpg list
spack gpg list
tree ~/.spack/bootstrap/store/

from-binaries:
Expand All @@ -119,10 +122,10 @@ jobs:
sudo rm $(command -v gpg gpg2 patchelf)
done
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.8
Expand Down Expand Up @@ -153,18 +156,19 @@ jobs:
- name: Bootstrap GnuPG
run: |
. share/spack/setup-env.sh
spack -d gpg list
spack config add config:installer:new
spack gpg list
tree ~/.spack/bootstrap/store/

windows:
if: github.repository == 'spack/spack'
runs-on: "windows-latest"
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.12"
- name: Setup Windows
Expand All @@ -185,3 +189,31 @@ jobs:
spack -d gpg list
./share/spack/qa/validate_last_exit.ps1
tree $env:userprofile/.spack/bootstrap/store/

dev-bootstrap:
runs-on: ubuntu-latest
container: registry.access.redhat.com/ubi8/ubi
steps:
- name: Install dependencies
run: |
dnf install -y \
bzip2 curl gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
make patch python3.11 tcl unzip which xz
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup repo and non-root user
run: |
git --version
git config --global --add safe.directory '*'
git fetch --unshallow
. .github/workflows/bin/setup_git.sh
- name: Setup a virtual environment with platform-python
run: |
python3.11 -m venv ~/platform-spack-311
source ~/platform-spack-311/bin/activate
pip install --upgrade pip clingo
- name: Bootstrap Spack development environment
run: |
source ~/platform-spack-311/bin/activate
source share/spack/setup-env.sh
spack debug report
spack -d bootstrap now --dev
18 changes: 9 additions & 9 deletions .github/workflows/build-containers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ jobs:
if: github.repository == 'spack/spack'
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Determine latest release tag
id: latest
run: |
git fetch --quiet --tags
echo "tag=$(git tag --list --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)" | tee -a $GITHUB_OUTPUT

- uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96
- uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
id: docker_meta
with:
images: |
Expand Down Expand Up @@ -94,33 +94,33 @@ jobs:
fi

- name: Upload Dockerfile
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dockerfiles_${{ matrix.dockerfile[0] }}
path: dockerfiles

- name: Set up QEMU
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Log in to GitHub Container Registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Log in to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build & Deploy ${{ matrix.dockerfile[0] }}
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: dockerfiles/${{ matrix.dockerfile[0] }}
platforms: ${{ matrix.dockerfile[1] }}
Expand All @@ -133,7 +133,7 @@ jobs:
needs: deploy-images
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@6f51ac03b9356f520e9adb1b1b7802705f340c2b
uses: actions/upload-artifact/merge@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dockerfiles
pattern: dockerfiles_*
Expand Down
28 changes: 14 additions & 14 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ jobs:
core: ${{ steps.filter.outputs.core }}
packages: ${{ steps.filter.outputs.packages }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: ${{ github.event_name == 'push' || github.event_name == 'merge_group' }}
with:
fetch-depth: 0
# For pull requests it's not necessary to checkout the code
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: filter
with:
# For merge group events, compare against the target branch (main)
Expand Down Expand Up @@ -88,12 +88,10 @@ jobs:
steps:
- name: Success
run: |
if [ "${{ needs.prechecks.result }}" == "failure" ] || [ "${{ needs.prechecks.result }}" == "canceled" ]; then
echo "Unit tests failed."
exit 1
else
exit 0
fi
[ "${{ needs.prechecks.result }}" = "success" ] && exit 0
[ "${{ needs.prechecks.result }}" = "skipped" ] && exit 0
echo "Unit tests failed."
exit 1

coverage:
needs: [ unit-tests, prechecks ]
Expand All @@ -109,12 +107,14 @@ jobs:
steps:
- name: Status summary
run: |
if [ "${{ needs.unit-tests.result }}" == "failure" ] || [ "${{ needs.unit-tests.result }}" == "canceled" ]; then
if [ "${{ needs.unit-tests.result }}" = "success" ] || [ "${{ needs.unit-tests.result }}" = "skipped" ]; then
if [ "${{ needs.bootstrap.result }}" = "success" ] || [ "${{ needs.bootstrap.result }}" = "skipped" ]; then
exit 0
else
echo "Bootstrap tests failed."
exit 1
fi
else
echo "Unit tests failed."
exit 1
elif [ "${{ needs.bootstrap.result }}" == "failure" ] || [ "${{ needs.bootstrap.result }}" == "canceled" ]; then
echo "Bootstrap tests failed."
exit 1
else
exit 0
fi
8 changes: 4 additions & 4 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'

- name: Install python dependencies
run: pip install -r .github/workflows/requirements/coverage/requirements.txt

- name: Download coverage artifact files
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: coverage-*
path: coverage
Expand All @@ -28,7 +28,7 @@ jobs:
- run: coverage xml

- name: "Upload coverage report to CodeCov"
uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2
with:
verbose: true
fail_ci_if_error: false
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/import-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ jobs:
continue-on-error: true
runs-on: ubuntu-latest
steps:
- uses: julia-actions/setup-julia@v2
- uses: julia-actions/setup-julia@fa02766e078afaaf09b14210362cee14137e6a32 # v3.0.2
with:
version: '1.10'
- uses: julia-actions/cache@v2
- uses: julia-actions/cache@a45e8fa8be21c18a06b7177052533149e61e9b38 # v3.1.0

# PR: use the base of the PR as the old commit
- name: Checkout PR base commit
if: github.event_name == 'pull_request'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.base.sha }}
path: old
# not a PR: use the previous commit as the old commit
- name: Checkout previous commit
if: github.event_name != 'pull_request'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
path: old
Expand All @@ -33,11 +33,11 @@ jobs:
run: git -C old reset --hard HEAD^

- name: Checkout new commit
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: new
- name: Install circular import checker
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: haampie/circular-import-fighter
ref: f1c56367833f3c82f6a85dc58595b2cd7995ad48
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/prechecks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Revert spack-stack modifications
run: ./REMOVE_SPACK_STACK_MODS_FOR_CI.sh
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.13'
- name: Install Python Packages
Expand All @@ -60,12 +60,12 @@ jobs:
style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
- name: Revert spack-stack modifications
run: ./REMOVE_SPACK_STACK_MODS_FOR_CI.sh
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.13'
- name: Install Python packages
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/requirements/coverage/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
coverage==7.11.0
coverage==7.14.0
6 changes: 3 additions & 3 deletions .github/workflows/requirements/style/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ black==25.12.0
clingo==5.8.0
flake8==7.3.0
isort==7.0.0
mypy==1.19.1
types-six==1.17.0.20251009
mypy==1.20.1
vermin==1.8.0
pylint==4.0.4
pylint==4.0.5
docutils==0.22.4
ruamel.yaml==0.19.1
slotscheck==0.19.1
ruff==0.15.11
5 changes: 5 additions & 0 deletions .github/workflows/requirements/unit_tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pytest==9.0.3
pytest-cov==7.1.0
pytest-xdist==3.8.0
coverage[toml]<=7.11.0
clingo==5.8.0
Loading