diff --git a/.github/workflows/build-push.yml b/.github/workflows/build-push.yml index 667ef1e34..d4e8175f5 100644 --- a/.github/workflows/build-push.yml +++ b/.github/workflows/build-push.yml @@ -407,6 +407,15 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64 target: builder_concretization_default + - BUILD_IMAGE: eic_ + BUILD_TYPE: default + BUILDER_IMAGE: cuda_devel + RUNTIME_IMAGE: cuda_devel + ENV: tf + arch: amd64 + runner: ubuntu-latest + PLATFORM: linux/amd64 + target: builder_concretization_default fail-fast: false steps: - name: Free Disk Space (Ubuntu) diff --git a/containers/debian/Dockerfile b/containers/debian/Dockerfile index 4546e083d..7a2bdbade 100644 --- a/containers/debian/Dockerfile +++ b/containers/debian/Dockerfile @@ -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" diff --git a/containers/eic/Dockerfile b/containers/eic/Dockerfile index 5be9e16af..bc8c4f554 100644 --- a/containers/eic/Dockerfile +++ b/containers/eic/Dockerfile @@ -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 @@ -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" @@ -194,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" diff --git a/spack-environment/ci/spack.yaml b/spack-environment/ci/spack.yaml index 586aff5ff..38349bcaf 100644 --- a/spack-environment/ci/spack.yaml +++ b/spack-environment/ci/spack.yaml @@ -2,6 +2,7 @@ spack: include: - ../concretizer.yaml - ../packages.yaml + - ../packages_root_without_opengl.yaml - ../view.yaml specs: - acts @@ -9,7 +10,7 @@ spack: - afterburner - cmake - covfie - - dd4hep -ddeve + - dd4hep - edm4hep - eigen - fastjet @@ -67,7 +68,7 @@ spack: - py-toml - py-uproot - py-vector - - root -opengl -webgui + - root - snakemake - spdlog - xrootd diff --git a/spack-environment/packages.yaml b/spack-environment/packages.yaml index 91be0c278..b4d7fe769 100644 --- a/spack-environment/packages.yaml +++ b/spack-environment/packages.yaml @@ -265,7 +265,6 @@ packages: - +python llvm: require: - - ~gold - any_of: [~ipo, '@:'] madx: require: @@ -349,7 +348,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' @@ -378,6 +380,9 @@ packages: py-epic-capybara: require: - '@git.ef2a8790312b9b697655b28a07b353e601bfa3b8' + py-flatbuffers: + require: + - '@25.9.23:' py-hatchling: require: - '@1.27:' diff --git a/spack-environment/packages_root_with_opengl.yaml b/spack-environment/packages_root_with_opengl.yaml new file mode 100644 index 000000000..ced3cc10f --- /dev/null +++ b/spack-environment/packages_root_with_opengl.yaml @@ -0,0 +1,4 @@ +packages: + root: + require: + - +opengl +webgui diff --git a/spack-environment/packages_root_without_opengl.yaml b/spack-environment/packages_root_without_opengl.yaml new file mode 100644 index 000000000..e57a100c9 --- /dev/null +++ b/spack-environment/packages_root_without_opengl.yaml @@ -0,0 +1,4 @@ +packages: + root: + require: + - ~opengl ~webgui diff --git a/spack-environment/xl/spack.yaml b/spack-environment/xl/spack.yaml index 28ea008b5..a4bf66d97 100644 --- a/spack-environment/xl/spack.yaml +++ b/spack-environment/xl/spack.yaml @@ -2,6 +2,7 @@ spack: include: - ../concretizer.yaml - ../packages.yaml + - ../packages_root_with_opengl.yaml - ../view.yaml concretizer: unify: when_possible # multiple epic versions @@ -23,7 +24,7 @@ spack: - cppcoro - dawn - dawncut - - dd4hep +ddeve + - dd4hep - east - edm4hep - eic-smear @@ -117,7 +118,7 @@ spack: - py-wurlitzer - py-yapf - rivet - - root +opengl +webgui +x + - root - sherpa - simsipm - slurm sysconfdir=/etc/slurm diff --git a/spack-packages.sh b/spack-packages.sh index 14449e5bf..7fb8328d3 100644 --- a/spack-packages.sh +++ b/spack-packages.sh @@ -71,6 +71,7 @@ be6546b82b43d82edba804f1e362a709809ba537 f5742718da7bd1d078ddc8423011a82ef2e3c759 56e5282f7ef78180895b5d99db57d2a166b6d0e1 922b2f6011dbf01aebb332a1ebf949b105c74247 +2ba80e697faf80613b038615b2345b7a777cc438 --- ## Optional hash table with comma-separated file list ## For these commits, the cherry-pick will be restricted to the listed files only. @@ -147,4 +148,5 @@ read -r -d '' SPACKPACKAGES_CHERRYPICKS_FILES <<- \ ## be6546b82b43d82edba804f1e362a709809ba537: gaudi: allow newer fmt for v39 ## f5742718da7bd1d078ddc8423011a82ef2e3c759: gaudi: workaround test-dependency bug with a when ## 56e5282f7ef78180895b5d99db57d2a166b6d0e1: celeritas: new versions 0.6.1, 0.6.2 -## 922b2f6011dbf01aebb332a1ebf949b105c74247: celeritas: add v0.6.3 \ No newline at end of file +## 922b2f6011dbf01aebb332a1ebf949b105c74247: celeritas: add v0.6.3 +## 2ba80e697faf80613b038615b2345b7a777cc438: py-flatbuffers: add v25.9.23 diff --git a/spack.sh b/spack.sh index 45e5a83f1..5aedca8e5 100644 --- a/spack.sh +++ b/spack.sh @@ -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 <<- \