From f55dce43dae3f9443511c413245a855ddb2ea2e1 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <nicolas.richart@epfl.ch>
Date: Sat, 20 Jul 2024 00:49:50 +0200
Subject: [PATCH] overlayfs did not work moved things to squashfuse

---
 .gitlab-ci.yml          |  4 ++--
 ci/apptainer_by_hand.sh |  6 +++---
 ci/fuse-overlayfs.sh    | 22 +++++++---------------
 ci/prepare_squashfs.sh  |  2 --
 ci/squashfuse_ll.sh     | 18 ++++++++++++++++++
 5 files changed, 30 insertions(+), 22 deletions(-)
 create mode 100755 ci/squashfuse_ll.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8f35937..073afc8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -78,8 +78,8 @@ variables:
          --bind ${CI_DATA}/spack-mirror:${MOUNT_POINT}/spack-mirror
          --bind ${CI_DATA}/squashfs-cache/:/squashfs-cache
          --bind ${CI_DATA}/overlayfs:/overlayfs
-         --fusemount "host:/usr/libexec/apptainer/bin/squashfuse_ll ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}"
-         --fusemount "host:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
+         --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}"
+         --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
   after_script:
     - if [ $CI_JOB_STATUS != "success" ]; then exit 0; fi
     - ${CI_PROJECT_DIR}/ci/update_squashfs.sh
diff --git a/ci/apptainer_by_hand.sh b/ci/apptainer_by_hand.sh
index e716e27..7b7d41d 100755
--- a/ci/apptainer_by_hand.sh
+++ b/ci/apptainer_by_hand.sh
@@ -19,7 +19,7 @@ export STACK_VERSION=$(jq -Mrc .stack.version ${CI_PROJECT_DIR}/stacks/${stack}/
 
 APPTAINER_IMAGE=~/rhel9-kuma.sif
 
-./ci/prepare_squashfs.sh
+#./ci/prepare_squashfs.sh
 
 echo "host:/usr/libexec/apptainer/bin/squashfuse_ll ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}"
 echo "host:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
@@ -39,7 +39,7 @@ srun ${srun_options} --pty apptainer run \
     --env CI_PROJECT_DIR=${CI_PROJECT_DIR} \
     --env CI_JOB_ID=${CI_JOB_ID} \
     --env SQUASHFS_ID=${SQUASHFS_ID} \
-    --fusemount "host:/usr/libexec/apptainer/bin/squashfuse_ll ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}" \
-    --fusemount "host:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}" \
+    --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}" \
+    --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}" \
     ${APPTAINER_IMAGE} \
     bash
diff --git a/ci/fuse-overlayfs.sh b/ci/fuse-overlayfs.sh
index f9723f0..6bc9af3 100755
--- a/ci/fuse-overlayfs.sh
+++ b/ci/fuse-overlayfs.sh
@@ -1,22 +1,14 @@
 #!/usr/bin/env sh
 
-CI_DATA=$1
-suffix=$2
-mount_point=$3
+suffix=$1
+mount_point=$2
 
-for i in upper wd
-do
-    if [ -d ${CI_DATA}/overlayfs/$i-${suffix} ]
-    then
-        rm -rf ${CI_DATA}/overlayfs/$i-${suffix}
-    fi
-    mkdir -p ${CI_DATA}/overlayfs/$i-${suffix}
-done
 
-/usr/libexec/apptainer/bin/fuse-overlayfs \
+#/usr/libexec/apptainer/bin/fuse-overlayfs \
+fuse-overlayfs \
     -o squash_to_uid=$(id -u) \
     -o squash_to_gid=$(id -g) \
-    -o lowerdir=${CI_DATA}/overlayfs/lower-${suffix} \
-    -o upperdir=${CI_DATA}/overlayfs/upper-${suffix} \
-    -o workdir=${CI_DATA}/overlayfs/wd-${suffix} \
+    -o lowerdir=/overlayfs/lower-${suffix} \
+    -o upperdir=/overlayfs/upper-${suffix} \
+    -o workdir=/overlayfs/wd-${suffix} \
     $mount_point
diff --git a/ci/prepare_squashfs.sh b/ci/prepare_squashfs.sh
index 178c2a8..e25e459 100755
--- a/ci/prepare_squashfs.sh
+++ b/ci/prepare_squashfs.sh
@@ -13,7 +13,6 @@ do
     fi
 done
 
-
 # Check if MR as squashfs
 sqfs_image=$(ls -t1 ${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_id}*.sqfs 2> /dev/null | head -1)
 if [ $? -ne 0 ]
@@ -49,4 +48,3 @@ else
     fi
     echo "Found ${sqfs_image}"
 fi
-
diff --git a/ci/squashfuse_ll.sh b/ci/squashfuse_ll.sh
new file mode 100755
index 0000000..60c7b20
--- /dev/null
+++ b/ci/squashfuse_ll.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env sh
+
+CI_DATA=$1
+suffix=$2
+image=$3
+mount_point=$4
+
+for i in upper wd
+do
+    if [ -d ${CI_DATA}/overlayfs/$i-${suffix} ]
+    then
+        rm -rf ${CI_DATA}/overlayfs/$i-${suffix}
+    fi
+    mkdir -p ${CI_DATA}/overlayfs/$i-${suffix}
+done
+
+
+/usr/libexec/apptainer/bin/squashfuse_ll $image $mount_point
-- 
GitLab