Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
70514e3
Upgrade spack to v1.1.0
wdconinc Nov 15, 2025
78cd012
Create directory for Spack user scope configuration
wdconinc Nov 16, 2025
020b020
fix: concretize: unify: when_possible for new compiler treatment
wdconinc Nov 19, 2025
20564fb
fix: spack cherry-pick: py-flatbuffers: add v25.9.23
wdconinc Nov 19, 2025
c5e3f9c
fix: packages: py-flatbuffers: require: @25.9.23 for py-setuptools
wdconinc Nov 19, 2025
c6ec90c
doc: add comment indicating reason for ~/.spack
wdconinc Nov 20, 2025
0bfb8a8
fix: add extra hinting for dd4hep to avoid duplication
wdconinc Nov 20, 2025
275a1ba
Disable fail-fast in build-push workflow
wdconinc Nov 20, 2025
fdeb63c
fix: add extra hinting for dd4hep to avoid duplication
wdconinc Nov 20, 2025
62a7f90
fix: mv spec hints to package section
wdconinc Nov 20, 2025
654b1d0
fix: separate root requirements and apply per environment
wdconinc Nov 20, 2025
54db1ce
fix: avoid py-urllib3 where not desired
wdconinc Nov 20, 2025
534f080
fix: build argument for spack duplicates
wdconinc Nov 20, 2025
f240f0b
fix: remove py-urllib3 version requirements again
wdconinc Nov 20, 2025
fac8187
fix: packages: pyrobird ~batch
wdconinc Nov 25, 2025
a9bb4e3
Remove llvm gold requirement from packages.yaml
wdconinc Nov 25, 2025
2715ad4
fix: concretizer: unify: true in ci and xl
wdconinc Nov 26, 2025
15ec399
Add docs on duplicate allow list
wdconinc Nov 26, 2025
7c160d3
Add +x to root with opengl
wdconinc Nov 26, 2025
8061f85
Add root ~x requirement to root_without_opengl
wdconinc Nov 26, 2025
620b1e1
Update ~/.spack comment with more context
wdconinc Nov 26, 2025
4847344
Add spack clean command to install step in Dockerfile
wdconinc Nov 27, 2025
8f0e3e5
fix: packages: root: remove +/~x in root_with(out)_opengl
wdconinc Nov 28, 2025
9c84e74
fix: packages: pyrobird: ~batch with when clause
wdconinc Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ jobs:
PLATFORM: linux/arm64
runner: ubuntu-24.04-arm
arch: arm64
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -297,6 +298,7 @@ jobs:
- arch: arm64
runner: ubuntu-24.04-arm
PLATFORM: linux/arm64
fail-fast: false
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@v1.3.1
Expand Down
1 change: 1 addition & 0 deletions containers/debian/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ target=${target[${TARGETPLATFORM}]}
spack config --scope site add "packages:all:require:[target=${target}]"
spack config --scope site add "packages:all:target:[${target}]"
spack config blame packages
mkdir -p $HOME/.spack/ # workaround for Spack not creating config directory automatically in some versions (see https://github.com/spack/spack/issues/51564)
spack config --scope user add "config:suppress_gpg_warnings:true"
spack config --scope user add "config:build_jobs:${jobs}"
spack config --scope user add "config:db_lock_timeout:${jobs}00"
Expand Down
14 changes: 12 additions & 2 deletions containers/eic/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ ARG ENV=xl
ENV SPACK_ENV=/opt/spack-environment/${ENV}
ARG SPACK_FLAGS="--backtrace"
ARG SPACK_INSTALL_FLAGS="--no-check-signature --show-log-on-error --yes-to-all"
# The SPACK_DUPLICATE_ALLOWLIST specifies packages that are allowed to have duplicate concretizations.
# This is necessary for certain packages (e.g., epic, llvm, py-setuptools, py-urllib3, py-dask) due to
# their complex dependency trees or compatibility requirements. The new additions (py-dask-awkward,
# py-dask-histogram, py-distributed, py-requests) are included because they may be required in multiple
# versions or configurations by different packages in the environment, and allowing duplicates prevents
# build failures or conflicts during concretization. This list should be reviewed periodically to ensure
# only necessary packages are included.
ARG SPACK_DUPLICATE_ALLOWLIST="epic|llvm|py-setuptools|py-urllib3|py-dask|py-dask-awkward|py-dask-histogram|py-distributed|py-requests"
ENV SPACK_COLOR="always"
ENV GIT_TERMINAL_PROMPT=0

Expand All @@ -57,7 +65,7 @@ spack external find --not-buildable --scope env:${SPACK_ENV} --path /usr/local/c
spack external find --scope env:${SPACK_ENV} llvm
spack concretize --force
spack --color=never find --long --no-groups --show-concretized --format "{name}" \
| uniq -D -f2 | grep -v -w -e "\(epic\|llvm\|py-setuptools\|py-urllib3\)" \
| uniq -D -f2 | grep -Evw "(${SPACK_DUPLICATE_ALLOWLIST})" \
| tee /tmp/duplicates.txt
if [ -s /tmp/duplicates.txt ] ; then
echo "Duplicate packages found"
Expand Down Expand Up @@ -98,6 +106,7 @@ export CCACHE_DIR=/ccache
mkdir -p /var/cache/spack/blobs/sha256/
find /var/cache/spack/blobs/sha256/ -ignore_readdir_race -atime +7 -delete
spack ${SPACK_FLAGS} install ${SPACK_INSTALL_FLAGS}
spack clean --downloads --stage
ccache --show-stats
ccache --zero-stats
EOF
Expand Down Expand Up @@ -193,7 +202,7 @@ if [ -n "${JUGGLER_SHA}" ] ; then
fi
spack concretize --force
spack --color=never find --long --no-groups --show-concretized --format "{name}" \
| uniq -D -f2 | grep -v -w -e "\(epic\|llvm\|py-setuptools\|py-urllib3\)" \
| uniq -D -f2 | grep -Evw "(${SPACK_DUPLICATE_ALLOWLIST})" \
| tee /tmp/duplicates.txt
if [ -s /tmp/duplicates.txt ] ; then
echo "Duplicate packages found"
Expand Down Expand Up @@ -232,6 +241,7 @@ RUN --mount=type=cache,target=/ccache,id=ccache-${TARGETPLATFORM} \
set -e
export CCACHE_DIR=/ccache
spack ${SPACK_FLAGS} install ${SPACK_INSTALL_FLAGS}
spack clean --downloads --stage
spack gc --yes-to-all go go-bootstrap rust rust-bootstrap py-setuptools-rust py-maturin
ccache --show-stats
ccache --zero-stats
Expand Down
5 changes: 3 additions & 2 deletions spack-environment/ci/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ spack:
include:
- ../concretizer.yaml
- ../packages.yaml
- ../packages_root_without_opengl.yaml
- ../view.yaml
specs:
- acts
- actsvg
- afterburner
- cmake
- covfie
- dd4hep -ddeve
- dd4hep
- edm4hep
- eigen
- fastjet
Expand Down Expand Up @@ -66,7 +67,7 @@ spack:
- py-toml
- py-uproot
- py-vector
- root -opengl -webgui
- root
- snakemake
- spdlog
- xrootd
11 changes: 7 additions & 4 deletions spack-environment/packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,6 @@ packages:
require:
- '@6.5.5'
- +python
llvm:
require:
- ~gold
madx:
require:
- '@5.08.01:'
Expand Down Expand Up @@ -330,7 +327,10 @@ packages:
pyrobird:
require:
- '@0.1.23:'
- +batch +xrootd
- +xrootd
- spec: ~batch
when: '@:0.2.6'
message: "through at least 0.2.6, +batch requires py-pyppeteer which requires py-urllib3@1"
pythia8:
require:
- '@8.315'
Expand All @@ -356,6 +356,9 @@ packages:
py-epic-capybara:
require:
- '@git.ef2a8790312b9b697655b28a07b353e601bfa3b8'
py-flatbuffers:
require:
- '@25.9.23:'
py-hepunits:
require:
- '@2.3.2:'
Expand Down
4 changes: 4 additions & 0 deletions spack-environment/packages_root_with_opengl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
packages:
root:
require:
- +opengl +webgui
4 changes: 4 additions & 0 deletions spack-environment/packages_root_without_opengl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
packages:
root:
require:
- ~opengl ~webgui
7 changes: 3 additions & 4 deletions spack-environment/xl/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ spack:
include:
- ../concretizer.yaml
- ../packages.yaml
- ../packages_root_with_opengl.yaml
- ../view.yaml
concretizer:
unify: when_possible # multiple epic versions
specs:
- acts
- actsvg
Expand All @@ -23,7 +22,7 @@ spack:
- cppcoro
- dawn
- dawncut
- dd4hep +ddeve
- dd4hep
- east
- edm4hep
- eic-smear
Expand Down Expand Up @@ -116,7 +115,7 @@ spack:
- py-wurlitzer
- py-yapf
- rivet
- root +opengl +webgui +x
- root
- sherpa
- simsipm
- slurm sysconfdir=/etc/slurm
Expand Down
4 changes: 3 additions & 1 deletion spack-packages.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ c4d983b764d7b1ee2b63da79f5f25365ac61ce7a
44da889cc86bb8a5315c729a7c79f2c002c9c951
5c37f836753e8f9683fdc547f3661c5045abcbd1
c75e10845431600b163c597545bd099e427c62f5
2ba80e697faf80613b038615b2345b7a777cc438
---
## Optional hash table with comma-separated file list
read -r -d '' SPACKPACKAGES_CHERRYPICKS_FILES <<- \
Expand Down Expand Up @@ -90,4 +91,5 @@ read -r -d '' SPACKPACKAGES_CHERRYPICKS_FILES <<- \
## c4d983b764d7b1ee2b63da79f5f25365ac61ce7a: Julia: add v1.11.6
## 44da889cc86bb8a5315c729a7c79f2c002c9c951: Julia: add v1.11.7
## 5c37f836753e8f9683fdc547f3661c5045abcbd1: root: require openblas ~ilp64 symbol_suffix=none when ^openblas
## c75e10845431600b163c597545bd099e427c62f5: dd4hep: v1.33
## c75e10845431600b163c597545bd099e427c62f5: dd4hep: v1.33
## 2ba80e697faf80613b038615b2345b7a777cc438: py-flatbuffers: add v25.9.23
2 changes: 1 addition & 1 deletion spack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ SPACK_ORGREPO="spack/spack"

## Spack github version, e.g. v0.18.1 or commit hash
## note: nightly builds will use e.g. releases/v1.0
SPACK_VERSION="v1.0.2"
SPACK_VERSION="v1.1.0"

## Space-separated list of spack cherry-picks
read -r -d '' SPACK_CHERRYPICKS <<- \
Expand Down
Loading