Skip to content

Commit faf05e9

Browse files
hyperpolymathclaude
andcommitted
fix(wave3): repair 3 post-rebuild backend defects (metamath/or-tools/tamarin)
Runtime-smoke of the rebuilt Wave-3 images surfaced 3 genuine at-source defects (acl2 + twelf verified REAL; hol4 build in progress): - metamath: metamath-builder installs gcc/make but NOT libc6-dev, so bookworm-slim has no libc headers -> 'gcc m*.c' died with 'fatal error: string.h: No such file or directory' -> graceful stub. Add libc6-dev. (metamath-exe v0.198 layout/glob were already correct.) - or-tools: ORTOOLS_ARCHIVE omitted the mandatory build number; the real v9.12 asset is or-tools_amd64_debian-12_cpp_v9.12.4544.tar.gz (verified via the google/or-tools releases API). Add ORTOOLS_BUILD=4544; the download 404'd -> empty graceful export -> libless image. - tamarin: bookworm apt 'maude' is 3.2, which tamarin-prover 1.12.0 rejects (supported: 3.2.1/3.2.2/3.3+). Replace apt maude with the official SRI-CSL Maude 3.5.1 prebuilt binary (asset verified to exist and run) in both installer and runtime stages; set MAUDE_LIB. Maude fetch is fail-fast by design (a stubbed maude silently recreates the bug). Brittle pins tracked: #75. Root-caused via 3 parallel read-only investigators; applied serially. Runtime-smoke re-verification of these 3 queued to run after the in-flight hol4 build frees the box; verdicts to be posted on #73. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f720165 commit faf05e9

1 file changed

Lines changed: 37 additions & 3 deletions

File tree

.containerization/Containerfile.wave3

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,29 @@ FROM docker.io/library/debian:bookworm-slim AS tamarin-installer
7070
RUN apt-get update && apt-get install -y --no-install-recommends \
7171
curl \
7272
ca-certificates \
73-
maude \
73+
unzip \
7474
&& rm -rf /var/lib/apt/lists/*
7575

76+
# Maude: bookworm's apt `maude` is upstream version 3.2, which tamarin-prover
77+
# 1.12.0 REJECTS (allow-list 2.7.1/3.0/3.1/3.2.1/3.2.2/3.3/3.3.1/3.4/3.5/3.5.1
78+
# — bare 3.2 is "unsupported"). Fetch the official SRI-CSL prebuilt binary at
79+
# a supported point release. The zip holds the `maude` binary + the runtime
80+
# *.maude prelude at its root (Maude needs the prelude on MAUDE_LIB). Hard-fail
81+
# (not graceful-stub) is deliberate: a stubbed maude silently recreates the
82+
# original unsupported-version failure. Re-validate / bump:
83+
# https://github.com/SRI-CSL/Maude/releases (brittle-pin tracking: #75).
84+
ARG MAUDE_VERSION="3.5.1"
85+
ARG MAUDE_ZIP="Maude-${MAUDE_VERSION}-linux-x86_64.zip"
86+
ARG MAUDE_URL="https://github.com/SRI-CSL/Maude/releases/download/Maude${MAUDE_VERSION}/${MAUDE_ZIP}"
87+
RUN set -eux; \
88+
mkdir -p /opt/maude; \
89+
curl -fsSL --retry 3 "${MAUDE_URL}" -o /tmp/maude.zip; \
90+
unzip -o -q /tmp/maude.zip -d /opt/maude; \
91+
chmod +x /opt/maude/maude; \
92+
ln -sf /opt/maude/maude /usr/local/bin/maude; \
93+
rm -f /tmp/maude.zip; \
94+
MAUDE_LIB=/opt/maude /usr/local/bin/maude --version
95+
7696
# Official prebuilt binary from the tamarin-prover/tamarin-prover GitHub
7797
# releases (GPL-3.0; anonymous; reliable). The linux64-ubuntu tarball contains
7898
# a single dynamically-linked x86_64 `tamarin-prover` at the archive root;
@@ -131,7 +151,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
131151
ca-certificates \
132152
libgmp10 \
133153
zlib1g \
134-
maude \
135154
graphviz \
136155
&& rm -rf /var/lib/apt/lists/*
137156

@@ -142,6 +161,12 @@ COPY --from=rust-builder /build/target/release/echidna /app/bin/echidna
142161
# succeeded, a one-file stub otherwise). A directory COPY never hard-fails.
143162
COPY --from=tamarin-installer /opt/tamarin-export/ /opt/tamarin/
144163
RUN ln -sf /opt/tamarin/tamarin-prover /usr/local/bin/tamarin-prover
164+
# Maude (tamarin-supported point release) from the installer stage, NOT apt:
165+
# bookworm apt maude is 3.2 which tamarin-prover 1.12.0 rejects. Prebuilt
166+
# binary's only shared-lib deps (libm/libgcc_s/libc) are in the base image.
167+
COPY --from=tamarin-installer /opt/maude/ /opt/maude/
168+
RUN ln -sf /opt/maude/maude /usr/local/bin/maude
169+
ENV MAUDE_LIB="/opt/maude"
145170

146171
ENV PATH="/app/bin:/usr/local/bin:${PATH}"
147172
ENV ECHIDNA_PROVER_PATH="/usr/local/bin"
@@ -352,8 +377,13 @@ WORKDIR /opt/or-tools
352377
# Download the prebuilt C++ release tarball for Debian 12 (bookworm) / amd64.
353378
# The tarball ships include headers, shared libraries, and CMake config files.
354379
# Check https://github.com/google/or-tools/releases for the latest version.
380+
# NOTE: upstream release assets ALWAYS carry the build number, e.g.
381+
# or-tools_amd64_debian-12_cpp_v9.12.4544.tar.gz (NOT ..._v9.12.tar.gz)
382+
# so ORTOOLS_BUILD must track the exact build for the tag (verified via the
383+
# GitHub releases API for tag v9.12). Bump both together on any version change.
355384
ARG ORTOOLS_VERSION="9.12"
356-
ARG ORTOOLS_ARCHIVE="or-tools_amd64_debian-12_cpp_v${ORTOOLS_VERSION}.tar.gz"
385+
ARG ORTOOLS_BUILD="4544"
386+
ARG ORTOOLS_ARCHIVE="or-tools_amd64_debian-12_cpp_v${ORTOOLS_VERSION}.${ORTOOLS_BUILD}.tar.gz"
357387
ARG ORTOOLS_URL="https://github.com/google/or-tools/releases/download/v${ORTOOLS_VERSION}/${ORTOOLS_ARCHIVE}"
358388

359389
RUN set -eux; \
@@ -737,10 +767,14 @@ CMD ["--help"]
737767
# Re-validate the tag at https://github.com/metamath/metamath-exe/tags (#75).
738768
FROM docker.io/library/debian:bookworm-slim AS metamath-builder
739769

770+
# libc6-dev is REQUIRED: the standalone `gcc` package on bookworm-slim does
771+
# NOT pull in the libc development headers, so `gcc m*.c` failed with
772+
# `fatal error: string.h: No such file or directory` and fell to the stub.
740773
RUN apt-get update && apt-get install -y --no-install-recommends \
741774
curl \
742775
ca-certificates \
743776
gcc \
777+
libc6-dev \
744778
make \
745779
&& rm -rf /var/lib/apt/lists/*
746780

0 commit comments

Comments
 (0)