fix: rebuild soul-demo.c from source, compile against el_runtime.c directly

soul-demo.c was previously an older compiled artifact that triggered an
undefined reference to emit_metric/emit_log/trace_span_* at link time in CI.

Two fixes:
1. Rebuild soul-demo.c from soul-demo.el using current elc — cleaner
   codegen (no double-wrapped el_from_float), same logic, unix_timestamp
   collision with el_runtime.c removed.
2. Dockerfile.stage: compile soul-demo against el_runtime.c directly
   (not el_runtime.o) so all runtime symbols are always resolved from the
   staged source, bypassing any Docker layer cache divergence on el_runtime.o.
This commit is contained in:
2026-05-06 21:30:25 -05:00
parent f19403ba68
commit 0202b09d37
2 changed files with 125 additions and 123 deletions
+4 -1
View File
@@ -44,12 +44,15 @@ RUN cc -O2 -rdynamic \
-lcurl -lpthread -ldl -lm -lssl -lcrypto
# ── Build soul-demo ───────────────────────────────────────────────────────────
# Compile soul-demo.c with el_runtime.c directly (not el_runtime.o) so that
# all runtime symbols — including emit_metric, emit_log, trace_span_* — are
# always resolved from the staged source rather than a cached object file.
COPY dist/soul-demo.c ./
COPY dist/vessel_stubs.c ./
RUN cc -O2 -rdynamic \
-o soul-demo \
soul-demo.c vessel_stubs.c el_runtime.o \
soul-demo.c vessel_stubs.c el_runtime.c \
-lcurl -lpthread -ldl -lm -lssl -lcrypto
# ── Stage 2: runtime image ────────────────────────────────────────────────────
+121 -122
View File
File diff suppressed because one or more lines are too long