Re-enable the Nix flake on aarch64-darwin#5173
Open
krisajenkins wants to merge 1 commit into
Open
Conversation
PR clockworklabs#3422 added the flake but bailed out on Darwin pending a fix for "could not find native static library `rusty_v8`". With v8 now on 145.0.0 (PR clockworklabs#4073) the build itself works on aarch64-darwin, so this removes the `builtins.abort` guard and fills in the real sha256 for the v145.0.0 rusty_v8 archive on aarch64-darwin. The underlying bug — v8s build.rs writing `librusty_v8.a` outside the locations cargo and crane treat as authoritative — already has a known workaround in PR clockworklabs#3921, but that fix only lives in `.github/workflows/ci.yml` and so does not protect the Nix build. This ports the equivalent guard into the flake as a `preBuild` on `commonArgs`: if the v8 build directory exists but `librusty_v8.a` is missing, clean and rebuild just the v8 crate. With current nixpkgs/crane the file does in fact survive the `buildDepsOnly` → `buildPackage` handoff on aarch64-darwin, so the guard no-ops on the happy path; it is defence-in-depth for the next time crane or nixpkgs shifts. x86_64-darwin and aarch64-linux still use placeholder hashes; users on those platforms will continue to hit the existing fail-then-paste-hash loop documented in `librusty_v8.nix`. # API and ABI breaking changes None. Build-system only, no runtime change. # Expected complexity level and risk 1. # Testing - [x] `nix flake check --no-build` passes on aarch64-darwin. - [x] `nix build .#default` produces working `spacetime`, `spacetimedb-cli`, and `spacetimedb-standalone` binaries; all three report `spacetimedb tool version 2.3.0`. - [x] `nix build .#checks.aarch64-darwin.workspace-fmt` passes. - [x] `nix develop --command rustc --version` succeeds (the command originally reported failing before this change). - [ ] Confirmation from a reviewer with x86_64-linux that the change has not regressed the previously working platform.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Re-enable the Nix flake on aarch64-darwin.
PR #3422 added the flake but bailed out on Darwin pending a fix for
"could not find native static library
rusty_v8". With v8 now on145.0.0 (PR #4073) the build itself works on aarch64-darwin, so this
removes the
builtins.abortguard and fills in the real sha256 for thev145.0.0 rusty_v8 archive on aarch64-darwin.
The underlying bug — v8's build.rs writing
librusty_v8.aoutside thelocations cargo and crane treat as authoritative — already has a known
workaround in PR #3921, but that fix only lives in
.github/workflows/ci.ymland so does not protect the Nix build. Thisports the equivalent guard into the flake as a
preBuildoncommonArgs: if the v8 build directory exists butlibrusty_v8.aismissing, clean and rebuild just the v8 crate. With current
nixpkgs/crane the file does in fact survive the
buildDepsOnly→buildPackagehandoff on aarch64-darwin, so the guard no-ops on thehappy path; it is defence-in-depth for the next time crane or nixpkgs
shifts.
x86_64-darwin and aarch64-linux still use placeholder hashes; users on
those platforms will continue to hit the existing fail-then-paste-hash
loop documented in
librusty_v8.nix.API and ABI breaking changes
None. Build-system only, no runtime change.
Expected complexity level and risk
Testing
nix flake check --no-buildpasses on aarch64-darwin.nix build .#defaultproduces workingspacetime,spacetimedb-cli, andspacetimedb-standalonebinaries; all threereport
spacetimedb tool version 2.3.0.nix build .#checks.aarch64-darwin.workspace-fmtpasses.nix develop --command rustc --versionsucceeds (the commandoriginally reported failing before this change).
has not regressed the previously working platform.