Skip to content

Document Arch/Omarchy and non-mise use, run builds in parallel - #6

Open
jeremy wants to merge 2 commits into
mainfrom
docs-and-parallel-tests
Open

Document Arch/Omarchy and non-mise use, run builds in parallel#6
jeremy wants to merge 2 commits into
mainfrom
docs-and-parallel-tests

Conversation

@jeremy

@jeremy jeremy commented Jul 31, 2026

Copy link
Copy Markdown
Member

The README claimed macOS and Ubuntu only, though Arch support landed a few commits back. This documents Arch/Omarchy, covers rbenv and bare ruby-build alongside mise, and makes the test suite fast enough to actually run.

Verified

All six definitions on both platforms, 12/12 green. Each build checked for stdlib requires (openssl, zlib, digest/sha2, readline, socket, bigdecimal, psych-or-yaml), a real TLS fetch from rubygems.org — which exercises both cipher negotiation and the cert store — bundler, and C extension compilation, all under GCC 16.1.1.

Version OpenSSL Arch Ubuntu Noble
1.8.7-p374 1.0.2u
1.9.3-p551 1.0.2u
2.3.3 1.0.2u
2.3.8 1.0.2u
2.5.9 1.1.1w
2.7.8 1.1.1w

README

Covers mise, rbenv, and bare ruby-build as peers rather than being mise-only. The bare ruby-build section also covers the chruby-style "build into ~/.rubies" flow, where no version manager is involved at all.

The three tool sections now point at one shared warning, which is the practical thing to know: ruby-build appends its own bundled definition directory to the search list and takes the first match, so a relative path or an unexpanded ~/... doesn't error — it silently builds the upstream definition, which is precisely the one that fails on a modern compiler. Confusing compiler errors are the symptom. The old README example had the tilde inside double quotes, where it never expands.

Also adds per-platform prerequisites and a table of what each definition pins.

test/build

Ran the matrix serially, ~40 minutes for a full run — long enough that nobody runs it. Now builds concurrently: JOBS containers at a time (defaults to cores/4), make -j MAKE_JOBS inside each. Full matrix takes about 6 minutes.

Results stream as they finish, so they arrive out of order; a sorted summary prints at the end and failure logs are held back rather than interleaving between jobs. The failure path was exercised deliberately with a bogus definition to confirm the reporting and the nonzero exit code.

Notes, not addressed here

  • One run showed arch 1.9.3-p551 red on getaddrinfo: Temporary failure in name resolution during gem install bundler, after Ruby had already built. Re-ran alone: clean pass. DNS flake under 12-wide concurrency, not the definition. If it recurs, a retry around install_bundler is the fix — it needs the network at build time.
  • 2.5.9 and 2.7.8 pass -march=native, pinning those binaries to the building machine's CPU. Fine locally; would SIGILL if an installs tree moved between different machines. The older definitions don't do this.

The README claimed macOS and Ubuntu only, though Arch support landed a few
commits back. Verified all six definitions build and run on both Arch and
Ubuntu Noble under GCC 16: stdlib requires, a real TLS fetch from rubygems.org
(exercises both cipher negotiation and the cert store), bundler, and C
extension compilation.

Document rbenv and bare ruby-build alongside mise so this isn't mise-only,
and pull the RUBY_BUILD_DEFINITIONS caveats into one section they all point
at. That warning is the practical one: ruby-build appends its own bundled
definitions to the search list and takes the first match, so a relative path
or an unexpanded "~/..." doesn't error — it silently builds the upstream
definition, which is precisely the one that fails on a modern compiler. The
old README example had the tilde inside double quotes, where it never expands.

test/build ran the matrix serially, ~40 minutes for a full run, which is long
enough that nobody runs it. Build concurrently instead, JOBS containers at a
time with make -j MAKE_JOBS inside each; the full matrix now takes about 6.
Results stream as they finish and failure logs are held back to the end rather
than interleaving between jobs.
Copilot AI review requested due to automatic review settings July 31, 2026 23:26

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 395a0841eb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread test/build Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

macOS ships Bash 3.2 as /bin/bash, which has no `wait -n`. The error was
swallowed, so the throttle loop never blocked — it just respun `jobs` until a
build finished, burning a core for the whole run. Poll with a sleep instead;
builds take minutes, so a second of latency is free.

Same portability problem one line up: nproc doesn't exist on macOS, so CORES
fell back to 4 and JOBS to 1, running the matrix serially on exactly the
platform this was meant to speed up. Fall back to sysctl before the constant.
Copilot AI review requested due to automatic review settings July 31, 2026 23:31
@jeremy

jeremy commented Jul 31, 2026

Copy link
Copy Markdown
Member Author

Pushed 8070dc7 for the Codex finding — the wait -n throttle would not block on macOS's Bash 3.2, so it spun a core for the whole run. Now polls jobs -rp with a sleep. Same fix covers nproc, which is also absent on macOS and was silently collapsing JOBS to 1 there.

Re-requested Copilot, which errored instead of reviewing.

@codex review

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 8070dc71b3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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