From e1d138470fbe30b7d582097408f2fd3b9707038a Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Sun, 27 Sep 2026 18:16:20 +1000 Subject: [PATCH] Fake Frame on arm64: use Valve's Holo Core image, and show failed builds The menci/archlinuxarm base failed `pacman -Syu` on GitHub's arm64 runner. Valve's Holo Core aarch64 preview is the base the Frame's SteamOS is built on, the iPhone app's frame-container already uses it, and its repos carry every package the fake needs. A failed image build now reruns with the full log. Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/testing.md | 2 +- scripts/e2e.sh | 10 ++++++---- tests/fakeframe/Containerfile | 6 ++++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/testing.md b/docs/testing.md index c95ee75..b06577d 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -48,7 +48,7 @@ its guards want. | On the fake Frame | | |---|---| -| Arch Linux (`archlinux:base`, or `menci/archlinuxarm:base` on arm64), user `steamos`, `/etc/os-release` with BUILD_ID 20260922.6101926 | Real OS, Frame's identity | +| Arch Linux (`archlinux:base`, or Valve's Holo Core aarch64 preview on arm64), user `steamos`, `/etc/os-release` with BUILD_ID 20260922.6101926 | Real OS, Frame's identity | | `sshd` with key and password logins, `rsync`, `python3` | Real | | Valve's steamos-devkit-service on port 32000 and its hooks, vendored unmodified in `tests/fakeframe/steamos-devkit-service` | Real; only its `dbus` import (for mDNS through systemd-resolved) is a stand-in that logs the registration | | Valve's devkit-utils, copied over by Frame Control itself | Real | diff --git a/scripts/e2e.sh b/scripts/e2e.sh index 2c0b1ed..c8d4ef0 100755 --- a/scripts/e2e.sh +++ b/scripts/e2e.sh @@ -6,7 +6,7 @@ # harness itself didn't come up). See docs/testing.md. # # Usage: scripts/e2e.sh [TEST...] e.g. scripts/e2e.sh test_titles test_faults.Faults.test_disk_full -# Env: FAKEFRAME_BASE base image (default: archlinux:base, or menci/archlinuxarm:base on arm64) +# Env: FAKEFRAME_BASE base image (default: archlinux:base, or Valve's Holo Core aarch64 on arm64) # FAKEFRAME_KEEP=1 leave the containers running afterwards set -uo pipefail @@ -14,7 +14,7 @@ root=${0:A:h:h} cd "$root" || exit 2 case $(uname -m) in x86_64|amd64) base=archlinux:base ;; - aarch64|arm64) base=menci/archlinuxarm:base ;; + aarch64|arm64) base=registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel:latest ;; *) print -u2 "No Arch Linux base image known for $(uname -m); set FAKEFRAME_BASE"; exit 2 ;; esac base=${FAKEFRAME_BASE:-$base} @@ -22,8 +22,10 @@ compose=(docker compose -p fakeframe-e2e -f tests/fakeframe/compose.yaml) started=$SECONDS print "==> Building fakeframe-frame (from $base) and fakeframe-host" -docker build -q --build-arg BASE="$base" -t fakeframe-frame -f tests/fakeframe/Containerfile tests/fakeframe || exit 2 -docker build -q -t fakeframe-host -f tests/fakeframe/host.Containerfile tests/fakeframe || exit 2 +# Quiet when it works; if a build fails, build again with the full log so CI shows why. +build() { docker build -q "$@" >/dev/null || { docker build --progress=plain "$@"; exit 2 } } +build --build-arg BASE="$base" -t fakeframe-frame -f tests/fakeframe/Containerfile tests/fakeframe +build -t fakeframe-host -f tests/fakeframe/host.Containerfile tests/fakeframe logs() { print "\n==> Fake Frame logs" diff --git a/tests/fakeframe/Containerfile b/tests/fakeframe/Containerfile index ce1f2e0..eeb3dc6 100644 --- a/tests/fakeframe/Containerfile +++ b/tests/fakeframe/Containerfile @@ -2,8 +2,10 @@ # Valve's steamos-devkit-service and hooks, a fake Steam client and stubs for # the Frame-only commands Frame Control runs. See docs/testing.md. # -# BASE: archlinux:base on x86_64, menci/archlinuxarm:base on arm64 (a daily -# Arch Linux ARM build); scripts/e2e.sh picks one from `uname -m`. +# BASE: archlinux:base on x86_64; on arm64, Valve's Holo Core aarch64 preview +# (registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel), the +# Arch Linux ARM64 port the Frame's SteamOS is built on (docs/recovery-and-images.md). +# scripts/e2e.sh picks one from `uname -m`. ARG BASE=archlinux:base FROM ${BASE}