Skip to content

feat: complete pine live ISO build (supersedes #7) - #87

Open
YuseiIto wants to merge 7 commits into
mainfrom
claude/stoic-meitner-gsiq03
Open

feat: complete pine live ISO build (supersedes #7)#87
YuseiIto wants to merge 7 commits into
mainfrom
claude/stoic-meitner-gsiq03

Conversation

@YuseiIto

Copy link
Copy Markdown
Owner

Summary

Completes the abandoned feature/live-image work (#7): builds the pine
prebuilt live USB image by remastering the official Ubuntu Desktop 24.04 ISO,
adds the gum and installer cookbooks, and wires up the Build Live ISO
workflow.

Rebased on top of the latest main and fixed the issues that were keeping
the branch from completing. Supersedes #7 (which can be closed).

Conflict resolutions (main had superseded several of the branch's changes)

  • arm-none-eabi-gcc, flatcam, neovim: kept main's versions, which already
    adopt the unsupported_platform! helper and lazy.nvim — the branch's
    raise/PackerSync edits are now obsolete.
  • opencode/goss.yaml: kept main's more lenient 30s timeout.
  • Makefile: took the branch version, restoring the dry-run-* targets that
    main's .PHONY still references, plus the new live-* targets.

Fixes to make the build pass

  • gum: install ca-certificates/curl/gnupg before gpg --dearmor
    (the minimal Ubuntu base image ships none of them, which broke the pine
    image build), and fail loudly via unsupported_platform! per cookbook policy.
  • installer: run the package installs and the remote_file as root, and
    replace the silent return unless with unsupported_platform! to match the
    documented platform-handling policy.
  • pine role goss: validate the new gum and installer cookbooks.
  • Makefile: fix the dry-run target to use mitamae local --dry-run
    (mitamae dry-run is not a valid subcommand).

Type of Change

  • New cookbook (package/tool addition)
  • Cookbook update (existing tool configuration change)
  • Role change (variant tier modification)
  • CI / workflow change
  • Dotfile / config change (.config/, .zshrc, etc.)
  • Documentation
  • Bug fix
  • Other

Platforms Tested

  • macOS (Apple Silicon)
  • Debian / Ubuntu (aarch64)
  • Debian / Ubuntu (x86_64)
  • Docker (specify variant: pine)
  • N/A (no platform-specific changes)

Checklist

  • bundle exec rubocop passes (102 files, no offenses)
  • Idempotent: recipes use not_if/only_if guards
  • Platform guards (only_if / not_if) are in place where needed
  • No secrets or personal tokens are included
  • Documentation updated (docs/LIVE_IMAGE.md)
  • Self-checked

Verification performed

  • rubocop over mitamae/: 102 files, no offenses
  • mitamae local --dry-run for the pine role: exit 0 (confirms recipes parse
    and that remote_file ... user 'root' is accepted)
  • shellcheck on live/remaster.sh, live/customize-chroot.sh,
    mitamae/cookbooks/installer/files/yuseiito-dev-install.sh: clean
  • Ubuntu 24.04.4 ISO SHA256 in live/remaster.sh matches upstream SHA256SUMS

Note: the full pine Docker image build and the live ISO build could not be
run in this environment (no Docker daemon / privileged loop+overlay mounts),
so they will be exercised by CI.

https://claude.ai/code/session_01Ls6HsbKTARBr9f3WqvyBjp


Generated by Claude Code

YuseiIto and others added 4 commits March 6, 2026 15:08
Bring the abandoned feature/live-image work (PR #7) up to date with main
and fix the issues that were keeping it from completing.

Conflict resolutions (main superseded several of the branch's changes):
- arm-none-eabi-gcc, flatcam, neovim: keep main's versions, which already
  adopt the `unsupported_platform!` helper and lazy.nvim (the branch's
  `raise`/PackerSync edits are now obsolete).
- opencode/goss.yaml: keep main's more lenient 30s timeout.
- Makefile: take the branch version, which restores the dry-run-* targets
  that main's .PHONY still references, and adds the live-* targets.

Fixes to make the build pass:
- gum: install ca-certificates/curl/gnupg before `gpg --dearmor` (the
  minimal Ubuntu base image ships none of them, which broke the pine image
  build), and fail loudly via `unsupported_platform!` per cookbook policy.
- installer: run package installs and the remote_file as root, and replace
  the silent `return unless` with `unsupported_platform!` to match the
  documented platform-handling policy.
- pine role goss: validate the new gum and installer cookbooks.
- Makefile: fix the dry-run target to use `mitamae local --dry-run`
  (`mitamae dry-run` is not a valid subcommand).

Verified: rubocop (102 files) clean, `mitamae local --dry-run` for pine
exits 0, shellcheck passes on the new live/installer scripts, and the
Ubuntu 24.04.4 ISO checksum matches the upstream SHA256SUMS.

https://claude.ai/code/session_01Ls6HsbKTARBr9f3WqvyBjp
@YuseiIto YuseiIto mentioned this pull request Jun 13, 2026
19 tasks
claude added 3 commits June 13, 2026 17:23
mitamae's `remote_file` does not honour `user 'root'` for the privileged
temp-file staging: it writes the staging file as root under /tmp and then
fails to read it back as the unprivileged mitamae process, aborting both the
pine Docker and LXC builds with `Permission denied - open /tmp/... (Errno::EACCES)`.

Place the script with a root `execute` running `install -m 0755`, mirroring
how docker/Dockerfile.pine installs entrypoint.sh, with a `cmp -s` guard for
idempotency.

https://claude.ai/code/session_01Ls6HsbKTARBr9f3WqvyBjp
gum exposes its version via a kong `--version` flag, not a `version`
subcommand (`gum version` hits the unrelated semver `version-check` path and
exits 80), failing the pine goss validation. Use `gum --version`, matching
gum's CLI and this repo's other version checks.

https://claude.ai/code/session_01Ls6HsbKTARBr9f3WqvyBjp
Resolve Makefile conflict: keep main's improved shellcheck recipe
(git ls-files '*.sh' plus SHELLCHECK_EXTRA_FILES) while preserving the
PR's restored dry-run-* targets (fixed to use `mitamae local --dry-run`)
and the new live-build/live-clean/clean targets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TrRATT5iddBGamRguEY82U
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants