boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs

commit 3f0910c95106e3d424c191f93ddb9828f67b15f8
parent c8d59c8c378681b5799b96b8d8abf7fc0e2b9fd5
Author: Ryan Sepassi <rsepassi@gmail.com>
Date:   Tue, 21 Apr 2026 12:45:28 -0700

podman 3 arch digests

Diffstat:
MMakefile | 32++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile @@ -52,15 +52,22 @@ endif # sees curdir, so all inputs must already live inside it. UPSTREAM ?= $(abspath $(CURDIR)/../live-bootstrap) -# Pinned to a manifest-list digest (not the :latest tag): podman on macOS -# only stores one image per tag locally, so cross-arch pulls under :latest -# keep overwriting each other's tag and re-pulling every run-all. A digest- -# pinned reference is immutable and lets --platform resolve the right -# per-arch variant from the same stored index, so each platform's image -# survives across invocations. Bump the digest when you want a newer base. +# Pinned to per-arch manifest digests (not the :latest tag, and not the index +# digest): podman's local store keys images by the digest you requested, so +# pulling the same index digest under three different --platforms collapses +# to a single entry — the last pull wins and the other arches run against a +# mismatched image (hence "image platform does not match" warnings). Giving +# each arch its own per-arch manifest digest keeps them as distinct entries +# that coexist in the store and survive across invocations. # -# Current pin: alpine 3.23.4 (index fetched 2026-04-20 from public.ecr.aws). -RUNTIME_IMAGE := public.ecr.aws/docker/library/alpine@sha256:5b10f432ef3da1b8d4c7eb6c487f2f5a8f096bc91145e68878dd4a5019afde11 +# Current pins: alpine 3.23.4 per-arch manifests fetched 2026-04-21 from +# public.ecr.aws (index sha256:5b10f432…). Bump all three together when you +# want a newer base. +ALPINE_IMAGE := public.ecr.aws/docker/library/alpine +RUNTIME_IMAGE_aarch64 := $(ALPINE_IMAGE)@sha256:378c4c5418f7493bd500ad21ffb43818d0689daaad43e3261859fb417d1481a0 +RUNTIME_IMAGE_amd64 := $(ALPINE_IMAGE)@sha256:4d889c14e7d5a73929ab00be2ef8ff22437e7cbc545931e52554a7b00e123d8b +RUNTIME_IMAGE_riscv64 := $(ALPINE_IMAGE)@sha256:667d07bf2f6239f094f64b5682c8ffbe24c9f3139b1fb854f85caf931a3d7439 +RUNTIME_IMAGE := $(RUNTIME_IMAGE_$(ARCH)) OUT_DIR := build/$(ARCH) TOOLS_DIR := $(OUT_DIR)/tools @@ -183,17 +190,22 @@ LISP_TESTS := \ tests/lisp/07-tailcall.scm \ tests/lisp/10-arith.scm \ tests/lisp/11-compare.scm \ + tests/lisp/11-list.scm \ tests/lisp/12-numpred.scm \ + tests/lisp/12-string.scm \ tests/lisp/13-bitwise.scm \ + tests/lisp/13-vector.scm \ + tests/lisp/14-io.scm \ tests/lisp/14-tagpred.scm \ - tests/lisp/15-list.scm + tests/lisp/15-pred.scm \ + tests/lisp/16-prelude.scm test-lisp: | $(IMAGE_STAMP) @$(MAKE) --no-print-directory PROG=lisp ARCH=$(ARCH) build/$(ARCH)/lisp @pass=0; fail=0; \ for scm in $(LISP_TESTS); do \ expected="$${scm%.scm}.expected"; \ - actual=$$($(PODMAN) ./build/$(ARCH)/lisp "$$scm" 2>/dev/null || true); \ + actual=$$($(PODMAN) ./build/$(ARCH)/lisp "$$scm" || true); \ want=$$(cat "$$expected" 2>/dev/null || printf ''); \ if [ "$$actual" = "$$want" ]; then \ echo " PASS [$(ARCH)] $$scm"; \