diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 724e9db99a2c1377b487cf8bcf7ac2e9b5b927cd..effc0a8d8e92f738644c7d713d9d359abc6ab455 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,10 +5,10 @@ variables: DOCKER_IMAGE: docker.io/docker:24.0.7 SINGULARITY_IMAGE: quay.io/singularity/singularity:v3.11.5 - ## Application versions used for the main release + ## Default versions are specified in packages.yaml but can be overridden ## note: nightly builds will always use the master/main branch - JUGGLER_VERSION: "v13.0.0" - EICRECON_VERSION: "v1.9.1" + JUGGLER_VERSION: "" + EICRECON_VERSION: "" ## Local registry CI_PUSH: 1 @@ -337,8 +337,12 @@ jug_dev: --build-arg S3_SECRET_KEY=${S3_SECRET_KEY} --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD) ${IF_BUILD_DEFAULT:+ - --build-arg JUGGLER_VERSION=${JUGGLER_VERSION} - --build-arg EICRECON_VERSION=${EICRECON_VERSION} + ${JUGGLER_VERSION:+--build-arg JUGGLER_VERSION=${JUGGLER_VERSION}} + ${EICRECON_VERSION:+--build-arg EICRECON_VERSION=${EICRECON_VERSION}} + } + ${IF_BUILD_NIGHTLY:+ + --build-arg JUGGLER_VERSION=main + --build-arg EICRECON_VERSION=main } --build-arg ENV=${ENV} --build-arg jobs=${JOBS} diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile index ab0e5c9addca2cbe6dbf619a37840988c6851d66..b68cb505442c81d773f30fd420d7d31591ac6172 100644 --- a/containers/jug/dev.Dockerfile +++ b/containers/jug/dev.Dockerfile @@ -123,13 +123,9 @@ EOF ## ======================================================================================== FROM spack as builder -## Setup our custom environment (secret mount for write-enabled mirror) +## 1. Setup our default environment (secret mount for write-enabled mirror) COPY --from=spack-environment . /opt/spack-environment/ ARG ENV=dev -ARG JUGGLER_VERSION="main" -ADD https://api.github.com/repos/eic/juggler/commits/${JUGGLER_VERSION} /tmp/juggler.json -ARG EICRECON_VERSION="main" -ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json ENV SPACK_ENV=/opt/spack-environment/${ENV} RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ --mount=type=cache,target=/var/cache/spack \ @@ -137,14 +133,47 @@ RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ <<EOF set -e export CCACHE_DIR=/ccache +source ${SPACK_ROOT}/share/spack/setup-env.sh mkdir -p /var/cache/spack/blobs/sha256/ find /var/cache/spack/blobs/sha256/ -atime +7 -delete -JUGGLER_VERSION=$(jq -r .sha /tmp/juggler.json) -EICRECON_VERSION=$(jq -r .sha /tmp/eicrecon.json) spack buildcache update-index eics3rw spack env activate --dir ${SPACK_ENV} -spack add juggler@git.${JUGGLER_VERSION} -spack add eicrecon@git.${EICRECON_VERSION} +spack concretize --fresh --force --quiet +make --jobs ${jobs} --keep-going --directory /opt/spack-environment \ + SPACK_ENV=${SPACK_ENV} \ + BUILDCACHE_OCI_PROMPT="eicweb" \ + BUILDCACHE_OCI_FINAL="ghcr" \ + BUILDCACHE_S3_FINAL="eics3rw" +ccache --show-stats +ccache --zero-stats +EOF + +## 2. Setup our environment with custom versions (on top of cached layer) +## Note: these default versions are just the very first commit. +ARG JUGGLER_VERSION="df87bf1f8643afa8e80bece9d36d6dc26dfe8132" +ARG EICRECON_VERSION="28108da4a1e8919a05dfdb5f11e114800a2cbe96" +ADD https://api.github.com/repos/eic/juggler/commits/${JUGGLER_VERSION} /tmp/juggler.json +ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json +RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM} \ + --mount=type=cache,target=/var/cache/spack \ + --mount=type=secret,id=mirrors,target=/opt/spack/etc/spack/mirrors.yaml \ + <<EOF +source ${SPACK_ROOT}/share/spack/setup-env.sh +export CCACHE_DIR=/ccache +spack buildcache update-index eics3rw +spack env activate --dir ${SPACK_ENV} +if [ "${JUGGLER_VERSION}" != "df87bf1f8643afa8e80bece9d36d6dc26dfe8132" ] ; then + export JUGGLER_VERSION=$(jq -r .sha /tmp/juggler.json) + spack config add "packages:juggler::require:['@git.${JUGGLER_VERSION}=main']" + spack deconcretize -y juggler +fi +if [ "${EICRECON_VERSION}" != "28108da4a1e8919a05dfdb5f11e114800a2cbe96" ] ; then + export EICRECON_VERSION=$(jq -r .sha /tmp/eicrecon.json) + spack config add "packages:eicrecon::require:['@git.${EICRECON_VERSION}=main']" + spack deconcretize -y eicrecon +fi +cat ${SPACK_ENV}/spack.yaml +cat ${SPACK_ENV}/../packages.yaml spack concretize --fresh --force --quiet make --jobs ${jobs} --keep-going --directory /opt/spack-environment \ SPACK_ENV=${SPACK_ENV} \ diff --git a/eic-spack.sh b/eic-spack.sh index 055ad44f6254c9076368d2236fc5c7bf47ec0b47..d77d563dcbeb7454d9931b6ef8b3a3b8dfb82d35 100644 --- a/eic-spack.sh +++ b/eic-spack.sh @@ -3,7 +3,7 @@ EICSPACK_ORGREPO="eic/eic-spack" ## EIC spack commit hash or github version, e.g. v0.19.7 ## note: nightly builds could use a branch e.g. releases/v0.19 -EICSPACK_VERSION="5d8ba97ea6b021a50aa11e924a55a4726c689d65" +EICSPACK_VERSION="bc6a4382636dd8c8bcd8c665163840815d48a25e" ## Space-separated list of eic-spack cherry-picks read -r -d '' EICSPACK_CHERRYPICKS <<- \ diff --git a/spack-environment/dev/spack.yaml b/spack-environment/dev/spack.yaml index 7ec9666618a095df0ca0d0899e28b36b966e3940..73cba0f6b1c16ea101b625ce869c96b6225d4234 100644 --- a/spack-environment/dev/spack.yaml +++ b/spack-environment/dev/spack.yaml @@ -24,6 +24,7 @@ spack: - edm4eic - edm4hep - eic-smear + - eicrecon - eigen - emacs - fastjet @@ -40,6 +41,7 @@ spack: - iwyu - jana2 - k4actstracking + - juggler - k4fwcore - lcov - lhapdf diff --git a/spack-environment/packages.yaml b/spack-environment/packages.yaml index c700a560ea427459dbf93f7cafaac0ae27aac82d..d2afb467cb9be624e45c50dc4584a40b952e9283 100644 --- a/spack-environment/packages.yaml +++ b/spack-environment/packages.yaml @@ -92,6 +92,9 @@ packages: eic-smear: require: - '@1.1.12' + eicrecon: + require: + - '@1.9.1' eigen: require: - '@3.4.0' @@ -160,6 +163,7 @@ packages: - -ipo +podio +root +zmq juggler: require: + - '@13.0.0' - cxxstd=20 k4actstracking: require: diff --git a/spack-environment/prod/spack.yaml b/spack-environment/prod/spack.yaml index 3f05ab1b4fc24dc4faf8c85edd1997749d87c85b..c56f72a99dc2fe110c2bc875f56d0e256fda8860 100644 --- a/spack-environment/prod/spack.yaml +++ b/spack-environment/prod/spack.yaml @@ -1,5 +1,5 @@ spack: - include: + include: - ../concretizer.yaml - ../packages.yaml config: @@ -9,6 +9,7 @@ spack: - cmake - dd4hep -ddeve - edm4eic + - eicrecon - fastjet - fjcontrib - gaudi @@ -17,6 +18,7 @@ spack: - intel-tbb - irt - jana2 + - juggler - npsim -geocad - py-boto3 - py-jinja2