From eadd12cad4b44ff2e42b9d6d5bf14d2acd4c6c08 Mon Sep 17 00:00:00 2001 From: Stephen Boddy Date: Mon, 13 Jul 2026 06:37:51 +0100 Subject: [PATCH] Share ccache volume across checkouts, cap at 2G The ccache named volume had no explicit name, so Docker Compose namespaced it under the per-checkout project name (derived from UNIQUE_ID), giving each checkout its own cache even though docker/README.md already documented them as shared. Give the volume a fixed name so all checkouts attach the same one. Measured cache size after a full build (IfcParse+IfcGeom+IfcConvert+ wrapper, one Python version) is ~300MB, only ~5% of the previous 5G cap. Shrink CCACHE_MAXSIZE to 2G, which comfortably covers the shared baseline plus per-branch deltas from several diverging checkouts. Generated with the assistance of an AI coding tool. (cherry picked from commit b1470223d360642721df1d05abb0b63067cb4d71) --- docker/Dockerfile | 5 ++++- docker/compose.yaml | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4133cf96f1..8db37e4383 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -28,8 +28,11 @@ RUN git config --system --add safe.directory '*' # volume mount point at runtime - anything `ccache -M` writes to a config # file under it during this build gets shadowed once the real volume is # mounted, so the size cap only actually takes effect via the env var. +# 2G is generous: a full build (IfcParse+IfcGeom+IfcConvert+wrapper, one +# Python version) measures ~300MB, and the volume is now shared across all +# checkouts (see compose.yaml), so this covers several diverging branches. ENV CCACHE_DIR=/ccache -ENV CCACHE_MAXSIZE=5G +ENV CCACHE_MAXSIZE=2G ENV PATH="/usr/lib/ccache:$PATH" # Non-root user matching the host UID/GID that bind-mounts the repo (default diff --git a/docker/compose.yaml b/docker/compose.yaml index fcd5f17745..e2bb7d1c31 100644 --- a/docker/compose.yaml +++ b/docker/compose.yaml @@ -20,3 +20,4 @@ services: volumes: ccache: + name: ifcopenshell-ccache-shared