Uh oh!
There was an error while loading. Please reload this page.
Document Arch/Omarchy and non-mise use, run builds in parallel - #6
Conversation
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.
There was a problem hiding this comment.
💡 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".
Uh oh!
There was an error while loading. Please reload this page.
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.
jeremy
commented
Jul 31, 2026
Pushed 8070dc7 for the Codex finding — the Re-requested Copilot, which errored instead of reviewing. @codex review |
Codex Review: Didn't find any major issues. 🎉 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Uh oh!
There was an error while loading. Please reload this page.
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.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:
JOBScontainers at a time (defaults to cores/4),make -j MAKE_JOBSinside 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
arch 1.9.3-p551red ongetaddrinfo: Temporary failure in name resolutionduringgem 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 aroundinstall_bundleris the fix — it needs the network at build time.2.5.9and2.7.8pass-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.