Skip to content

feat: live progress indicator for the evsieve build - #123

Merged
aradanmn merged 5 commits into
mainfrom
feat/evsieve-build-progress
Jul 22, 2026
Merged

feat: live progress indicator for the evsieve build#123
aradanmn merged 5 commits into
mainfrom
feat/evsieve-build-progress

Conversation

@aradanmn

Copy link
Copy Markdown
Owner

The evsieve build runs cargo build --release in a distrobox with output to /dev/null — the multi-minute build looks hung. Adds run_with_spinner (utilities.sh): animated elapsed-time spinner on a TTY, one-line inline on a pipe; returns the command's exit status. Wraps the box-create + cargo-build steps. Tests 6/6; CI baseline +6.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hm7DmagTa2EttH8aHxGji2

Scott and others added 2 commits July 21, 2026 23:30
…ait)

The evsieve install builds in a distrobox with all output sent to /dev/null,
so the multi-minute `cargo build --release` looks hung with zero feedback.

- utilities.sh: new run_with_spinner(label, cmd...) — animates an elapsed-time
  spinner on stderr while a long quiet command runs; on a non-TTY (piped/CI
  install) it prints one start line and runs inline so logs stay clean. Returns
  the command's own exit status (fail-open handling in install_evsieve unchanged).
- evsieve_management.sh: wrap the box-create and cargo-build steps with it.
- tests/test_utilities.sh (6/6) — exit-status + stdout passthrough, label never
  leaks to stdout (non-TTY path, deterministic); CI baseline +6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hm7DmagTa2EttH8aHxGji2
…TTIN stop

A backgrounded command that reads the controlling TTY gets SIGTTIN-stopped
(T state) and wedges — the failure the evsieve build hit on a hidden sudo
prompt. NOT yet validated through a real install (per the hardware+real-process
rule); PR held as draft until then.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hm7DmagTa2EttH8aHxGji2
Scott and others added 3 commits July 22, 2026 00:25
Root cause: _evsieve_ensure_box returned right after `distrobox create` without
entering the box, so the container's first-run init — which configures the box
user's passwordless (NOPASSWD) sudo — had not run when _evsieve_build_in_box
issued its first `sudo apt-get`. sudo then prompted for a password; stdin was
still on the TTY, so the backgrounded podman/distrobox session was SIGTTIN-stopped
(T state) and the whole install wedged until the 15-min build timeout.

- ensure_box: always `distrobox enter -- true </dev/null` after create (both the
  fresh-create and the heal paths) so the box is initialized before the build.
- build_in_box: `sudo -n` (fail fast, fail-open, never prompt) and detach stdin
  `< /dev/null` so a prompt can never SIGTTIN-stop the build.

NOT yet validated through a real install (per the hardware+real-process rule) —
that's next on the Deck.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hm7DmagTa2EttH8aHxGji2
…s a dep)

evsieve_management.sh now wraps its box-create/build steps with run_with_spinner
(utilities.sh); the runtime sources utilities.sh first, but this suite doesn't,
so T11 hit 'run_with_spinner: command not found'. Transparent stub restores 11/11.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hm7DmagTa2EttH8aHxGji2
@aradanmn
aradanmn marked this pull request as ready for review July 22, 2026 11:37
@aradanmn
aradanmn merged commit 89da2a1 into main Jul 22, 2026
4 checks passed
@aradanmn
aradanmn deleted the feat/evsieve-build-progress branch July 22, 2026 11:39
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.

1 participant