Prefer MSRV-compatible deps in the ubrn build - #1797
Merged
Conversation
The uniffi-bindgen-react-native command is compiled from source during
binding generation, from a workspace that ships no lock file, so cargo
resolves its dependency graph fresh on every run and takes the newest
semver-compatible release of each crate. When one of those raises its
MSRV past the javascript dev shell's pinned toolchain, the build breaks:
error: rustc 1.85.0 is not supported by the following package:
globset@0.4.20 requires rustc 1.88
globset 0.4.20, published 2026-08-04, did exactly that. The existing
workaround pinned each offending crate by hand with cargo add, a list
that only grows as dependencies drift, and wrote those pins into
node_modules as a side effect.
Set CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=fallback instead. Cargo's
MSRV-aware resolver then prefers versions compatible with the rustc in
use, deriving globset 0.4.19 and home 0.5.11 on its own, the same
versions the manual pins named.
This only breaks CI on pull requests that touch payjoin-ffi/**, the
workflow's path filter, which is why master looks green.
Collaborator
Coverage Report for CI Build 31029745925Coverage remained the same at 86.685%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
2 tasks
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.
Fixes the javascript CI job, which has been broken since 2026-08-04 on every
PR that touches
payjoin-ffi/**.ubrnis compiled from source during binding generation, out of a workspacethat ships no lock file, so cargo resolves it fresh on every run and takes the
newest semver-compatible release of each crate.
globset 0.4.20raised itsMSRV to 1.88, so that resolution now yields a crate the javascript dev shell's
pinned 1.85.0 toolchain refuses to build:
Rather than extend the existing
cargo addpin list with a second entry, thissets
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=fallbackand drops the listentirely. Cargo's MSRV-aware resolver prefers versions compatible with the
rustc in use, and derives
globset 0.4.19andhome 0.5.11on its own, thesame two versions the manual pins named. Future MSRV drift resolves the same
way with no further edits.
It also stops the build mutating
node_modules.cargo addwas writing pinsinto
node_modules/uniffi-bindgen-react-native/crates/ubrn_cli/Cargo.toml;that manifest now stays pristine.
Verified locally on macOS with
nix develop .#javascript -c ./payjoin-ffi/javascript/contrib/test.shagainst a cleannpm ci: 31 testspass, and the generated lock records globset 0.4.19 / home 0.5.11.
Pull Request Checklist
Please confirm the following before requesting review:
AI
in the body of this PR.
Disclosure: co-authored by Claude Opus 5