Build optimization: pre-built PM3 binaries, ARM64 CI, base image caching

Replace PM3 compile-from-source in pi-gen with pre-built tarball extraction
(saves 43-58 min). Merge stagePM3 into stageDangerousPi as 02-pm3-install
substage, renumber all subsequent substages. Switch CI PM3 build to native
ARM64 runner (ubuntu-24.04-arm64) eliminating QEMU overhead. Add weekly
base-image workflow for pre-baking stages 0-2. Support PM3_TARBALL,
BASE_IMAGE, and APT_PROXY env vars in build-image.sh.

Also includes prior Phase 5 work: theme system, design system integration,
component update system, OS updates, CI build pipeline, and test results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
michael
2026-03-04 12:01:01 -08:00
parent 2ec89041ef
commit a9acdb85ce
163 changed files with 8124 additions and 921 deletions

View File

@@ -38,7 +38,7 @@ echo "1. Checking for commands used before installation..."
echo "------------------------------------------------"
# Check PM3 stage
PM3_SCRIPT="$PROJECT_DIR/pi-gen/stagePM3/01-proxmark3/00-run-chroot.sh"
PM3_SCRIPT="$PROJECT_DIR/pi-gen/stageDangerousPi/02-pm3-install/00-run-chroot.sh"
if [ -f "$PM3_SCRIPT" ]; then
# Check if cmake is used before apt-get install
if grep -q "cmake" "$PM3_SCRIPT"; then
@@ -60,7 +60,7 @@ if [ -f "$PM3_SCRIPT" ]; then
fi
# Check DangerousPi stage
DTPI_SCRIPT="$PROJECT_DIR/pi-gen/stageDangerousPi/03-dangerous-pi/00-run-chroot.sh"
DTPI_SCRIPT="$PROJECT_DIR/pi-gen/stageDangerousPi/04-dangerous-pi/00-run-chroot.sh"
if [ -f "$DTPI_SCRIPT" ]; then
# Check for pip3
if grep -q "pip3 install" "$DTPI_SCRIPT"; then
@@ -169,7 +169,7 @@ echo ""
echo "7. Checking for required EXPORT_IMAGE markers..."
echo "----------------------------------------------"
for stage in "$PROJECT_DIR"/pi-gen/stage{PM3,DangerousPi}; do
for stage in "$PROJECT_DIR"/pi-gen/stageDangerousPi; do
if [ -d "$stage" ]; then
stage_name=$(basename "$stage")
if [ -f "$stage/EXPORT_IMAGE" ]; then

View File

@@ -246,7 +246,7 @@ elif ls $PM3_SCRIPT 2>/dev/null | head -1 | xargs -I {} bash -c '
fi
# Check dangerous-pi stage for pip3
DTPI_SCRIPT="$PROJECT_DIR/pi-gen/stage*/*/03-dangerous-pi/00-run-chroot.sh"
DTPI_SCRIPT="$PROJECT_DIR/pi-gen/stage*/*/04-dangerous-pi/00-run-chroot.sh"
if ls $DTPI_SCRIPT 2>/dev/null | head -1 | xargs -I {} bash -c '
script="$1"
if grep -q "pip3 install" "$script"; then
@@ -277,7 +277,7 @@ fi
# Check PM3 dependencies by analyzing source
info "Analyzing PM3 source for required dependencies..."
PM3_SCRIPT_PATH="$PROJECT_DIR/pi-gen/stagePM3/01-proxmark3/00-run-chroot.sh"
PM3_SCRIPT_PATH="$PROJECT_DIR/pi-gen/stageDangerousPi/02-pm3-install/00-run-chroot-compile.sh"
if [ -f "$PM3_SCRIPT_PATH" ]; then
# Clone PM3 temporarily to analyze (lightweight, just for analysis)
@@ -316,7 +316,7 @@ if [ -f "$PM3_SCRIPT_PATH" ]; then
pass " PM3: $pkg (for $header)"
else
error " PM3: Missing $pkg (required for #include <$header>)"
info " Add '$pkg' to apt-get install in stagePM3/01-proxmark3/00-run-chroot.sh"
info " Add '$pkg' to apt-get install in stageDangerousPi/02-pm3-install/00-run-chroot-compile.sh"
fi
fi
done
@@ -328,7 +328,7 @@ if [ -f "$PM3_SCRIPT_PATH" ]; then
pass " PM3: $dep (build tool)"
else
error " PM3: Missing $dep (essential build tool)"
info " Add '$dep' to apt-get install in stagePM3/01-proxmark3/00-run-chroot.sh"
info " Add '$dep' to apt-get install in stageDangerousPi/02-pm3-install/00-run-chroot-compile.sh"
fi
done
else