From 11de0974f9951e160f0ecc378b3643e8e4701780 Mon Sep 17 00:00:00 2001
From: Wouter Deconinck <wdconinc@gmail.com>
Date: Sat, 19 Aug 2023 22:14:05 +0000
Subject: [PATCH] feat: install juggler and eicrecon with spack

---
 .gitlab-ci.yml                | 10 ++++----
 containers/jug/dev.Dockerfile |  4 ++++
 containers/jug/xl.Dockerfile  | 44 -----------------------------------
 spack.sh                      |  2 ++
 4 files changed, 12 insertions(+), 48 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3d62d6279..cd1bf270c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -311,7 +311,11 @@ jug_dev:
                    --build-arg EICSPACK_CHERRYPICKS="${EICSPACK_CHERRYPICKS}"
                    --build-arg S3_ACCESS_KEY=${S3_ACCESS_KEY}
                    --build-arg S3_SECRET_KEY=${S3_SECRET_KEY}
-                   --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD)-$(date +%Y-%m-%d_%H-%M-%S)
+                   --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}
+                   }
                    --build-arg ENV=${ENV}
                    --build-arg jobs=${JOBS}
                    --build-context spack-environment=spack-environment
@@ -345,9 +349,7 @@ jug_xl:default:
                    --build-arg DOCKER_REGISTRY=${CI_REGISTRY}/${CI_PROJECT_PATH}/
                    --build-arg BASE_IMAGE=${BASE_IMAGE}
                    --build-arg INTERNAL_TAG=${INTERNAL_TAG}-default
-                   --build-arg JUGGLER_VERSION=${JUGGLER_VERSION}
-                   --build-arg EICRECON_VERSION=${EICRECON_VERSION}
-                   --build-arg JUG_VERSION=${EXPORT_TAG}-$(git rev-parse HEAD)-$(date +%Y-%m-%d_%H-%M-%S)
+                   --build-arg JUG_VERSION=${EXPORT_TAG}-$(git rev-parse HEAD)
                    --build-arg jobs=${JOBS}
                    --build-context detectors=.
                    containers/jug
diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile
index d07f83851..b383137c0 100644
--- a/containers/jug/dev.Dockerfile
+++ b/containers/jug/dev.Dockerfile
@@ -105,6 +105,8 @@ FROM spack as builder
 ## Setup our custom environment (secret mount for write-enabled mirror)
 COPY --from=spack-environment . /opt/spack-environment/
 ARG ENV=dev
+ARG JUGGLER_VERSION="main"
+ARG EICRECON_VERSION="main"
 ENV SPACK_ENV=/opt/spack-environment/${ENV}
 RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
     --mount=type=cache,target=/var/cache/spack                          \
@@ -112,6 +114,8 @@ RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
     source $SPACK_ROOT/share/spack/setup-env.sh                         \
  && export CCACHE_DIR=/ccache                                           \
  && spack env activate --dir ${SPACK_ENV}                               \
+ && spack add juggler@git.${JUGGLER_VERSION}                            \
+ && spack add eicrecon@git.${EICRECON_VERSION}                          \
  && make --jobs ${jobs} --keep-going --directory /opt/spack-environment \
     SPACK_ENV=${SPACK_ENV}                                              \
     BUILDCACHE_MIRROR="local eics3rw"                                   \
diff --git a/containers/jug/xl.Dockerfile b/containers/jug/xl.Dockerfile
index 73e99d015..bbe6d3b8c 100644
--- a/containers/jug/xl.Dockerfile
+++ b/containers/jug/xl.Dockerfile
@@ -11,8 +11,6 @@ FROM ${DOCKER_REGISTRY}${BASE_IMAGE}:${INTERNAL_TAG}
 ARG TARGETPLATFORM
 
 ARG EICWEB="https://eicweb.phy.anl.gov/api/v4/projects"
-ARG JUGGLER_VERSION="main"
-ARG EICRECON_VERSION="main"
 ARG jobs=8
 
 ## version will automatically bust cache for nightly, as it includes
@@ -22,48 +20,6 @@ ARG JUG_VERSION=1
 RUN cd /tmp                                                                     \
  && echo " - jug_xl: ${JUG_VERSION}" >> /etc/jug_info
 
-ADD ${EICWEB}/369/repository/tree?ref=${JUGGLER_VERSION} /tmp/369.json
-RUN --mount=type=cache,target=/ccache/,sharing=locked,id=${TARGETPLATFORM}      \
-    cd /tmp                                                                     \
- && echo "INSTALLING JUGGLER"                                                   \
- && git clone -b ${JUGGLER_VERSION} --depth 1                                   \
-        https://eicweb.phy.anl.gov/EIC/juggler.git                              \
- && export CCACHE_DIR=/ccache                                                   \     
- && cmake -B build -S juggler                                                   \
-          -DCMAKE_CXX_FLAGS="-Wno-psabi"                                        \
-          -DCMAKE_CXX_STANDARD=17                                               \
-          -DCMAKE_INSTALL_PREFIX=/usr/local                                     \
-          -DCMAKE_BUILD_TYPE=Release                                            \
-          -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
- && cmake --build build -j${jobs} -- install                                    \
- && pushd juggler                                                               \
- && echo " - juggler: ${JUGGLER_VERSION}-$(git rev-parse HEAD)"                 \
-          >> /etc/jug_info                                                      \
- && popd                                                                        \
- && rm -rf build juggler
-
-ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json
-RUN --mount=type=cache,target=/ccache/,sharing=locked,id=${TARGETPLATFORM}      \
-    cd /tmp                                                                     \
- && echo "INSTALLING EICRECON"                                                  \
- && git clone -b ${EICRECON_VERSION} --depth 1                                  \
-        https://github.com/eic/eicrecon.git                                     \
- && export CCACHE_DIR=/ccache                                                   \
- && cmake -B build -S eicrecon                                                  \
-          -DCMAKE_CXX_FLAGS="-Wno-psabi"                                        \
-          -DCMAKE_CXX_STANDARD=17                                               \
-          -DCMAKE_INSTALL_PREFIX=/usr/local                                     \
-          -DCMAKE_BUILD_TYPE=Release                                            \
-          -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
- && cmake --build build -j${jobs} -- install                                    \
- && pushd eicrecon                                                              \
- && echo " - eicrecon: ${EICRECON_VERSION}-$(git rev-parse HEAD)"               \
-          >> /etc/jug_info                                                      \
- && echo "export JANA_PLUGIN_PATH=/usr/local/lib/EICrecon/plugins"              \
-    > /etc/profile.d/z12_eicrecon.sh                                            \
- && popd                                                                        \
- && rm -rf build eicrecon
-
 ## also install detector/ip geometries into opt
 ARG NIGHTLY=''
 ## cache bust when updated repositories
diff --git a/spack.sh b/spack.sh
index 34a43a18e..eb8f0bb70 100644
--- a/spack.sh
+++ b/spack.sh
@@ -25,6 +25,7 @@ ea1439dfa11a3996c9927ed792dc9fe4b7efc1b8
 ed76eab6943221f17776fd8d128ade6ba69e492c
 6c5d125cb06a86ce05bec27ae9fb9b07103bc1c5
 e3e7609af4903be7df42b6ae5ccf9a20293503d2
+df4a2457a41e7ab634e86d3148d8b22a9f433a6a
 ---
 ## Ref: https://github.com/spack/spack/commit/[hash]
 ## [hash]: [description]
@@ -45,3 +46,4 @@ e3e7609af4903be7df42b6ae5ccf9a20293503d2
 ## ed76eab6943221f17776fd8d128ade6ba69e492c: geant4: new version 11.1.2
 ## 6c5d125cb06a86ce05bec27ae9fb9b07103bc1c5: cernlib: new variant shared
 ## e3e7609af4903be7df42b6ae5ccf9a20293503d2: edm4hep: Add version 0.9
+## df4a2457a41e7ab634e86d3148d8b22a9f433a6a: Fix broken semver regex
-- 
GitLab