From 86dcf81985941b63214710e3b865672b1bf7b700 Mon Sep 17 00:00:00 2001 From: zzstoatzz Date: Sun, 9 Aug 2026 16:05:26 -0500 Subject: [PATCH] powerloss-image: build natively; give the CI guest a real docker network pool The recipe hardcoded --platform=linux/arm64, which is invisible on an arm64 workstation and produces an unrunnable image on x86_64 CI: every RUN dies with 'exec /bin/sh: exec format error'. Build for the host. The guest also exhausted docker's default address pools mid-run, which then broke container setup for later steps. Configure an explicit 10.201.0.0/16 pool (256 networks) and prune leaked networks before the suites. Co-Authored-By: Claude Fable 5 --- .tangled/workflows/admission.yml | 14 +++++++++++++- justfile | 6 +++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.tangled/workflows/admission.yml b/.tangled/workflows/admission.yml index 491a3bf..2274121 100644 --- a/.tangled/workflows/admission.yml +++ b/.tangled/workflows/admission.yml @@ -28,7 +28,16 @@ dependencies: - e2fsprogs virtualisation: - docker: true + docker: + enable: true + # The guest ran out of docker networks mid-run ("all predefined address + # pools have been fully subnetted"), which then failed container setup for + # later steps. Give it an explicit, roomy pool: 256 /24s. + daemon: + settings: + default-address-pools: + - base: "10.201.0.0/16" + size: 24 environment: STREAM_UPSTREAM_REPO: "/workspace/upstream-jetstream" @@ -78,6 +87,9 @@ steps: set -euo pipefail export PATH=/workspace/.zig:$PATH printf '%s' "$ATCR_APP_PASSWORD" | docker login atcr.io -u zat.dev --password-stdin || true + # Suites create and drop containers/networks throughout; reclaim any + # leaked networks first so a long run cannot exhaust the pool. + docker network prune -f >/dev/null 2>&1 || true ./scripts/admit run - name: publish image (best effort) diff --git a/justfile b/justfile index be16ebb..a0dfee0 100644 --- a/justfile +++ b/justfile @@ -422,8 +422,12 @@ oracle: # One-time networked bootstrap for the pinned strict-storage tool image. # Actual power-loss runs never pull or install anything. +# +# No --platform: build for whatever the host is. Hardcoding linux/arm64 (fine +# on an arm64 workstation) produced an arm64 image on x86_64 CI whose every +# RUN died with "exec /bin/sh: exec format error". powerloss-image: - docker build --platform=linux/arm64 --pull=false \ + docker build --pull=false \ -t stream-powerloss-oracle:ubuntu24.04 tests -f tests/powerloss.Dockerfile # Real Linux binary + RocksDB + ext4 + kernel NBD. Expects `just simulator`; -- 2.51.2