diff --git a/.github/workflows/build-push.yml b/.github/workflows/build-push.yml index 21276e66..6970fe96 100644 --- a/.github/workflows/build-push.yml +++ b/.github/workflows/build-push.yml @@ -353,6 +353,7 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: debian_stable_base @@ -362,6 +363,7 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64/v3 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: debian_stable_base @@ -371,6 +373,7 @@ jobs: runner: ubuntu-24.04-arm PLATFORM: linux/arm64 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: debian_stable_base @@ -380,6 +383,7 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3|py-dask|py-dask-awkward|py-dask-histogram|py-distributed|py-requests" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: debian_stable_base @@ -389,6 +393,7 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64/v3 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3|py-dask|py-dask-awkward|py-dask-histogram|py-distributed|py-requests" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: debian_stable_base @@ -398,6 +403,7 @@ jobs: runner: ubuntu-24.04-arm PLATFORM: linux/arm64 target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3|py-dask|py-dask-awkward|py-dask-histogram|py-distributed|py-requests" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: cuda_devel @@ -407,6 +413,7 @@ jobs: runner: ubuntu-latest PLATFORM: linux/amd64 target: builder_concretization_default + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3" - BUILD_IMAGE: eic_ BUILD_TYPE: default BUILDER_IMAGE: cuda_devel @@ -415,7 +422,8 @@ jobs: arch: amd64 runner: ubuntu-latest PLATFORM: linux/amd64 - target: builder_concretization_default + target: final + SPACK_DUPLICATE_ALLOWLIST: "epic|llvm|py-setuptools|py-urllib3" fail-fast: false steps: - name: Free Disk Space (Ubuntu) @@ -537,6 +545,7 @@ jobs: RUNTIME_IMAGE=${{ matrix.RUNTIME_IMAGE }} INTERNAL_TAG=${{ env.INTERNAL_TAG }} ENV=${{ matrix.ENV }} + SPACK_DUPLICATE_ALLOWLIST=${{ matrix.SPACK_DUPLICATE_ALLOWLIST }} cache-from: | type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/buildcache:${{ matrix.BUILD_IMAGE }}${{ matrix.ENV }}-${{ matrix.BUILD_TYPE }}-${{ env.GITHUB_REF_POINT_SLUG }}-${{ matrix.arch }} type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/buildcache:${{ matrix.BUILD_IMAGE }}${{ matrix.ENV }}-${{ matrix.BUILD_TYPE }}-${{ env.GITHUB_BASE_REF_SLUG }}-${{ matrix.arch }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2e57257..5d47361c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -473,6 +473,16 @@ eic: --build-arg JUGGLER_SHA=$(sh .ci/resolve_git_ref eic/juggler ${JUGGLER_VERSION:-main}) } --build-arg ENV=${ENV} + --build-arg SPACK_DUPLICATE_ALLOWLIST=$( + case "${ENV}" in + ci|ci_without_acts|cuda|dbg|jl|prod) + echo "epic|llvm|py-setuptools|py-urllib3" ;; + xl|tf) + echo "epic|llvm|py-setuptools|py-urllib3|py-dask|py-dask-awkward|py-dask-histogram|py-distributed|py-requests" ;; + *) + echo "epic|llvm|py-setuptools|py-urllib3" ;; + esac + ) --build-arg jobs=${JOBS} --build-context spack-environment=spack-environment --secret id=mirrors,src=mirrors.yaml diff --git a/containers/debian/Dockerfile b/containers/debian/Dockerfile index 370098e9..4cd6bb02 100644 --- a/containers/debian/Dockerfile +++ b/containers/debian/Dockerfile @@ -231,7 +231,7 @@ if [ -n "${SPACKPACKAGES_CHERRYPICKS}" ] ; then done fi git -C ${SPACKPACKAGES_ROOT} gc --prune=all --aggressive -spack repo add --scope site "${SPACKPACKAGES_ROOT}/repos/spack_repo/builtin" +spack repo add --scope spack "${SPACKPACKAGES_ROOT}/repos/spack_repo/builtin" EOF ## Setup build configuration @@ -246,9 +246,10 @@ declare -A target=( ["linux/arm64"]="aarch64" ) target=${target[${TARGETPLATFORM}]} -spack config --scope site add "packages:all:require:[target=${target}]" -spack config --scope site add "packages:all:target:[${target}]" +spack config --scope spack add "packages:all:require:[target=${target}]" +spack config --scope spack 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" @@ -256,7 +257,7 @@ spack config --scope user add "config:source_cache:/var/cache/spack" spack config --scope user add "config:install_tree:root:/opt/software" spack config --scope user add "config:ccache:true" spack config blame config -spack compiler find --scope site +spack compiler find --scope spack # Ensure GCC externals have LTO‑safe binutils configured. # # 1. LTO issue being worked around: @@ -290,9 +291,9 @@ EOF ## - allow llvm to be buildable for py-numba > py-llvmlite RUN <