diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-20 08:05:38 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-20 08:05:38 -0500 |
| commit | 6ed8697ae38e30bd7990553d26ea6bb4ef4d3e46 (patch) | |
| tree | fb28cc7f5f2540ac49217dc3bf8f4707440ac1af | |
| parent | e9f82d19c75ac8602f5840794d6bd62e30576c30 (diff) | |
| download | archangel-6ed8697ae38e30bd7990553d26ea6bb4ef4d3e46.tar.gz archangel-6ed8697ae38e30bd7990553d26ea6bb4ef4d3e46.zip | |
The 2026-08-02 build ran without ARCHSETUP_DIR set and produced a bare ISO with no complaint. A recovery image missing its setup tooling only reveals that on the machine you're recovering, which is the worst place to find out.
The build now warns when ARCHSETUP_DIR is unset or points at a non-directory, and the closing summary reports baked or not baked either way. Both go to the build log, since mkarchiso's output buries anything printed mid-run.
The remediation hint uses sudo's VAR=value form because build.sh needs root and env_reset drops an exported variable. It uses $HOME rather than a tilde, which zsh leaves unexpanded in an assignment.
| -rwxr-xr-x | build.sh | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -548,6 +548,26 @@ if [[ -d "$ARCHSETUP_DIR" ]]; then --exclude='*.qcow2' \ --exclude='*.iso' \ "$ARCHSETUP_DIR" "$PROFILE_DIR/airootfs/code/" + ARCHSETUP_BAKED=yes +else + # A recovery ISO without archsetup only reveals itself on the machine + # you're recovering, so say it at build time AND in the closing + # summary — mkarchiso's output buries anything printed here, and the + # operator walks away during the build. The 2026-08-02 build shipped + # bare this way and nobody knew until the reinstall. + # + # The hint uses sudo's VAR=value form on purpose: build.sh requires + # root, and sudo's env_reset drops an exported ARCHSETUP_DIR. It uses + # $HOME rather than ~ because zsh leaves the tilde unexpanded in an + # assignment-shaped argument, which would set the literal string and + # ship a bare ISO from following this very hint. + ARCHSETUP_BAKED=no + if [[ -n "$ARCHSETUP_DIR" ]]; then + warn "ARCHSETUP_DIR is not a directory: '$ARCHSETUP_DIR' — ISO ships WITHOUT archsetup" | tee -a "$BUILD_LOG" + else + warn "ARCHSETUP_DIR unset — ISO ships WITHOUT archsetup" | tee -a "$BUILD_LOG" + fi + warn " to bake it in: sudo ARCHSETUP_DIR=\"\$HOME/code/archsetup\" ./build.sh" | tee -a "$BUILD_LOG" fi # Pre-populate tealdeer (tldr) cache for offline use @@ -627,6 +647,11 @@ if [[ -f "$ISO_FILE" ]]; then info "ISO location: $ISO_FILE" info "ISO size: $(du -h "$ISO_FILE" | cut -f1)" info "Build log: $BUILD_LOG" + if [[ "${ARCHSETUP_BAKED:-no}" == "yes" ]]; then + info "archsetup: baked in at /code/archsetup" + else + warn "archsetup: NOT baked in — this ISO cannot set up a machine offline" + fi echo "" info "To test: ./scripts/test-vm.sh" echo "" |
