diff --git a/.env.example b/.env.example index 9515602..662bc36 100644 --- a/.env.example +++ b/.env.example @@ -44,7 +44,7 @@ GNUNET_REF=v0.26.1 EXCHANGE_REF=master MERCHANT_REF=master LIBEUFIN_REF=master -GNUNET_TARBALL_URL=https://git-www.taler.net/gnunet.git/snapshot/gnunet-512c42a713e52a2033928a302e445376d3bcb3a7.tar.gz +GNUNET_TARBALL_URL= EXCHANGE_TARBALL_URL= MERCHANT_TARBALL_URL= LIBEUFIN_TARBALL_URL= diff --git a/Dockerfile b/Dockerfile index a51781a..2842ee6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -92,7 +92,17 @@ RUN set -e; \ if [ -f "${EXCHANGE_DIR}/configure" ]; then \ echo "Using existing configure for Exchange tarball"; \ else \ - cd "${EXCHANGE_DIR}" && autoreconf -fi; \ + set +e; \ + (cd "${EXCHANGE_DIR}" && autoreconf -fi); \ + rc=$?; \ + set -e; \ + if [ $rc -ne 0 ]; then \ + echo "Autoreconf failed for Exchange tarball; falling back to git clone ${EXCHANGE_REF}"; \ + rm -rf "${EXCHANGE_DIR}"; \ + git clone --depth 1 --branch "${EXCHANGE_REF}" https://git.taler.net/exchange.git /src/exchange; \ + EXCHANGE_DIR="/src/exchange"; \ + cd "${EXCHANGE_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \ + fi; \ fi; \ else \ if [ ! -f "${EXCHANGE_DIR}/configure" ]; then \ @@ -127,7 +137,17 @@ RUN set -e; \ if [ -f "${MERCHANT_DIR}/configure" ]; then \ echo "Using existing configure for Merchant tarball"; \ else \ - cd "${MERCHANT_DIR}" && autoreconf -fi; \ + set +e; \ + (cd "${MERCHANT_DIR}" && autoreconf -fi); \ + rc=$?; \ + set -e; \ + if [ $rc -ne 0 ]; then \ + echo "Autoreconf failed for Merchant tarball; falling back to git clone ${MERCHANT_REF}"; \ + rm -rf "${MERCHANT_DIR}"; \ + git clone --depth 1 --branch "${MERCHANT_REF}" https://git.taler.net/merchant.git /src/merchant; \ + MERCHANT_DIR="/src/merchant"; \ + cd "${MERCHANT_DIR}" && env GNUNET_PREFIX=/usr ./bootstrap; \ + fi; \ fi; \ else \ if [ ! -f "${MERCHANT_DIR}/configure" ]; then \ diff --git a/README-DE.md b/README-DE.md index 4002503..56f525a 100644 --- a/README-DE.md +++ b/README-DE.md @@ -48,6 +48,7 @@ Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionale - 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`, `libeufin-*.tar.gz`); bei unvollständigem Tarball fällt der Build auf Git zurück. +- Release-Tarballs laden: `./scripts/fetch-tarballs.sh` (nutzt aktuelle Stable-Versionen; per `*_VERSION` oder `*_TARBALL_URL` überschreibbar). ## Nützliche Kommandos - Logs: `docker compose logs -f exchange` (oder bank/merchant/caddy/wordpress). diff --git a/README.md b/README.md index 0addb32..0a4fc05 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Container stack for GNU Taler (Exchange, Merchant, LibEuFin Bank) with optional - 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`, `libeufin-*.tar.gz`); the build picks the first match and falls back to git if incomplete. +- Fetch release tarballs: `./scripts/fetch-tarballs.sh` (uses current stable versions; override with `*_VERSION` or `*_TARBALL_URL` env vars). ## Useful commands - Logs: `docker compose logs -f exchange` (or bank/merchant/caddy/wordpress). diff --git a/scripts/fetch-tarballs.sh b/scripts/fetch-tarballs.sh new file mode 100755 index 0000000..c06e35a --- /dev/null +++ b/scripts/fetch-tarballs.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Downloads release tarballs into ./vendor (skips existing files). +# Defaults to current stable versions; override via env: +# GNUNET_VERSION, EXCHANGE_VERSION, MERCHANT_VERSION, LIBEUFIN_VERSION +# GNUNET_TARBALL_URL, EXCHANGE_TARBALL_URL, MERCHANT_TARBALL_URL, LIBEUFIN_TARBALL_URL + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +VENDOR_DIR="${ROOT_DIR}/vendor" +mkdir -p "${VENDOR_DIR}" + +GNUNET_VERSION="${GNUNET_VERSION:-0.26.1}" +EXCHANGE_VERSION="${EXCHANGE_VERSION:-1.2.2}" +MERCHANT_VERSION="${MERCHANT_VERSION:-1.1.6}" +LIBEUFIN_VERSION="${LIBEUFIN_VERSION:-1.2.3}" + +GNUNET_URL="${GNUNET_TARBALL_URL:-https://ftp.fau.de/gnu/taler/gnunet-debian-${GNUNET_VERSION}.tar.gz}" +EXCHANGE_URL="${EXCHANGE_TARBALL_URL:-https://ftp.fau.de/gnu/taler/exchange-${EXCHANGE_VERSION}.tar.gz}" +MERCHANT_URL="${MERCHANT_TARBALL_URL:-https://ftp.fau.de/gnu/taler/merchant-${MERCHANT_VERSION}.tar.gz}" +LIBEUFIN_URL="${LIBEUFIN_TARBALL_URL:-https://ftp.fau.de/gnu/taler/libeufin-${LIBEUFIN_VERSION}.tar.gz}" + +fetch() { + local url="$1" + local dest="${VENDOR_DIR}/$(basename "$url")" + local name + name="$(basename "$dest")" + + if [[ -f "$dest" ]]; then + echo "✔ ${name} already present" + return 0 + fi + + echo "→ Downloading ${name}" + curl -fL "$url" -o "$dest" +} + +fetch "$GNUNET_URL" +fetch "$EXCHANGE_URL" +fetch "$MERCHANT_URL" +fetch "$LIBEUFIN_URL" + +echo "Done. Tarballs are in ${VENDOR_DIR}"