diff --git a/Dockerfile b/Dockerfile index d191096..c19adad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,17 +20,26 @@ RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/* # GNUnet (falls nicht schon systemweit neu genug) -RUN if [ -n "${GNUNET_TARBALL_URL}" ]; then \ - mkdir -p /src && cd /src && \ - curl -L "${GNUNET_TARBALL_URL}" -o gnunet.tar.gz && \ - tar xzf gnunet.tar.gz && \ - cd gnunet-* && ./bootstrap && \ - ./configure --prefix=/usr && make -j$(nproc) && make install; \ +RUN set -e; \ + mkdir -p /src && cd /src; \ + GNUNET_DIR=""; \ + if [ -n "${GNUNET_TARBALL_URL}" ]; then \ + echo "Fetching GNUnet tarball ${GNUNET_TARBALL_URL}"; \ + curl -L "${GNUNET_TARBALL_URL}" -o gnunet.tar.gz; \ + tar xzf gnunet.tar.gz; \ + GNUNET_DIR="$(ls -d gnunet-* | head -1)"; \ + if [ ! -f "${GNUNET_DIR}/doc/handbook/meson.build" ]; then \ + echo "Tarball seems incomplete (doc/handbook/meson.build missing); falling back to git clone ${GNUNET_REF}"; \ + rm -rf "${GNUNET_DIR}"; \ + git clone --depth 1 --branch "${GNUNET_REF}" https://git.taler.net/gnunet.git gnunet; \ + GNUNET_DIR="gnunet"; \ + fi; \ else \ - git clone --depth 1 --branch "${GNUNET_REF}" https://git.taler.net/gnunet.git /src/gnunet && \ - cd /src/gnunet && ./bootstrap && \ - ./configure --prefix=/usr && make -j$(nproc) && make install; \ - fi + git clone --depth 1 --branch "${GNUNET_REF}" https://git.taler.net/gnunet.git gnunet; \ + GNUNET_DIR="gnunet"; \ + fi; \ + cd "${GNUNET_DIR}" && ./bootstrap && \ + ./configure --prefix=/usr && make -j$(nproc) && make install # Taler Exchange + Merchant RUN git clone --depth 1 --branch "${EXCHANGE_REF}" https://git.taler.net/exchange.git /src/exchange && \