From b438c6045ea9a7514718620450c3da5fcbbc9688 Mon Sep 17 00:00:00 2001 From: nocci Date: Fri, 12 Dec 2025 11:27:01 +0000 Subject: [PATCH] Allow vendor/libeufin tarball; add tarball args --- .env.example | 1 + Dockerfile | 23 +++++++++++++++++++++-- README-DE.md | 2 +- README.md | 2 +- scripts/build-image.sh | 1 + 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 1b57444..9515602 100644 --- a/.env.example +++ b/.env.example @@ -47,6 +47,7 @@ LIBEUFIN_REF=master GNUNET_TARBALL_URL=https://git-www.taler.net/gnunet.git/snapshot/gnunet-512c42a713e52a2033928a302e445376d3bcb3a7.tar.gz EXCHANGE_TARBALL_URL= MERCHANT_TARBALL_URL= +LIBEUFIN_TARBALL_URL= # Secrets path (host path mounted into /etc/taler/secrets) EXCHANGE_SECRETS_PATH=./exchange/secrets diff --git a/Dockerfile b/Dockerfile index d02c1bf..0336faf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ ARG LIBEUFIN_REF=master ARG GNUNET_TARBALL_URL= ARG EXCHANGE_TARBALL_URL= ARG MERCHANT_TARBALL_URL= +ARG LIBEUFIN_TARBALL_URL= RUN apt-get update && apt-get install -y \ build-essential git automake libtool pkg-config \ @@ -109,8 +110,26 @@ RUN set -e; \ ./configure --prefix=/usr && make -j$(nproc) && make install # LibEuFin (Bank) -RUN git clone --depth 1 --branch "${LIBEUFIN_REF}" https://git.taler.net/libeufin.git /src/libeufin && \ - cd /src/libeufin && ./bootstrap && \ +RUN set -e; \ + LIBEUFIN_DIR=""; \ + if ls /vendor/libeufin*.tar.gz >/dev/null 2>&1; then \ + LOCAL_TARBALL="$(ls /vendor/libeufin*.tar.gz | head -1)"; \ + echo "Using local LibEuFin tarball from ${LOCAL_TARBALL}"; \ + mkdir -p /src && cd /src; \ + cp "${LOCAL_TARBALL}" libeufin.tar.gz; \ + tar xzf libeufin.tar.gz; \ + LIBEUFIN_DIR="$(ls -d libeufin-* | head -1)"; \ + elif [ -n "${LIBEUFIN_TARBALL_URL}" ]; then \ + echo "Fetching LibEuFin tarball ${LIBEUFIN_TARBALL_URL}"; \ + mkdir -p /src && cd /src; \ + curl -L "${LIBEUFIN_TARBALL_URL}" -o libeufin.tar.gz; \ + tar xzf libeufin.tar.gz; \ + LIBEUFIN_DIR="$(ls -d libeufin-* | head -1)"; \ + else \ + git clone --depth 1 --branch "${LIBEUFIN_REF}" https://git.taler.net/libeufin.git /src/libeufin; \ + LIBEUFIN_DIR="/src/libeufin"; \ + fi; \ + cd "${LIBEUFIN_DIR}" && ./bootstrap && \ ./configure --prefix=/usr && make -j$(nproc) && make install # Shared entrypoint for dbinit + service start diff --git a/README-DE.md b/README-DE.md index e3f97ab..4002503 100644 --- a/README-DE.md +++ b/README-DE.md @@ -47,7 +47,7 @@ Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionale - Bei eigener CA `EXCHANGE_CURL_OPTS="-k"` setzen, wenn der Offline-Job `/keys` über HTTPS abfragt. - Nach Passwortänderungen in `.env` ist kein manuelles SQL-Rendering nötig; das Init-Skript liest sie beim Start. - Release-Refs/Tarballs: Tags/Commits unter `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` ansehen (Tarballs via `.../snapshot/.tar.gz`) und `*_REF`/`GNUNET_TARBALL_URL` entsprechend setzen. -- Offline-Tarballs: Lege Tarballs unter `vendor/` ab (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`); bei unvollständigem Tarball fällt der Build auf Git zurück. +- Offline-Tarballs: Lege Tarballs unter `vendor/` ab (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`, `libeufin-*.tar.gz`); bei unvollständigem Tarball fällt der Build auf Git zurück. ## Nützliche Kommandos - Logs: `docker compose logs -f exchange` (oder bank/merchant/caddy/wordpress). diff --git a/README.md b/README.md index 123efba..0addb32 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Container stack for GNU Taler (Exchange, Merchant, LibEuFin Bank) with optional - With custom CAs, set `EXCHANGE_CURL_OPTS="-k"` if the offline job needs to curl `/keys` over HTTPS. - After changing DB passwords in `.env`, no manual SQL rendering is needed—the init script reads them at container start. - Release refs/tarballs: Browse tags/commits at `https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/` (Tarballs via `.../snapshot/.tar.gz`) and set `*_REF`/`GNUNET_TARBALL_URL` accordingly. -- Offline tarball drop-in: place tarballs under `vendor/` (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`); the build picks the first match and falls back to git if incomplete. +- Offline tarball drop-in: place tarballs under `vendor/` (`gnunet-*.tar.gz`, `exchange-*.tar.gz`, `merchant-*.tar.gz`, `libeufin-*.tar.gz`); the build picks the first match and falls back to git if incomplete. ## Useful commands - Logs: `docker compose logs -f exchange` (or bank/merchant/caddy/wordpress). diff --git a/scripts/build-image.sh b/scripts/build-image.sh index 8508209..168ec6d 100755 --- a/scripts/build-image.sh +++ b/scripts/build-image.sh @@ -21,6 +21,7 @@ docker build \ --build-arg MERCHANT_REF="${MERCHANT_REF:-master}" \ --build-arg MERCHANT_TARBALL_URL="${MERCHANT_TARBALL_URL:-}" \ --build-arg LIBEUFIN_REF="${LIBEUFIN_REF:-master}" \ + --build-arg LIBEUFIN_TARBALL_URL="${LIBEUFIN_TARBALL_URL:-}" \ -t "${IMAGE_TAG}" . echo "Built image ${IMAGE_TAG}"