Repository navigation
sdk%build: take rust-bitcoin crates from rust-dashcore's revision - #72
Conversation
Its `bitcoin-crypto` pin carries the same versions, so consumers held one crate from two sources and `cargo vendor` failed. That revision drops `base58ck::decode`, so read checksums from `decode_check`.
|
Note This pull request has no conflicts! 🎊 🎉 🎊 |
The docs samples are a separate workspace and still used crates.io for these crates while the path dependencies moved to git. Cargo held two incompatible copies of `bitcoin-primitives`, so the site build failed.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Summary
Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to
|
Put `bitcoin_hashes` in the same group as `rstest`, after a blank line following the `crate` imports, to satisfy the import grouping query.
… workflow double-triggers, refresh lockfiles, resolve Dependabot warnings, resolve Markdown lint errors from version bump (#98) * [2fdbcfb] sdk%lint(markdown): disable MD059 to allow "here" as link text (Kittywhiskers Van Gogh) * [4286c27] sdk%doc: use autolinks instead of bare URLs to resolve MD034 (Kittywhiskers Van Gogh) * [999da8d] sdk%doc: use underscore for italics to resolve MD049 (Kittywhiskers Van Gogh) * [18e4e34] sdk%doc: attach pragmas to their targets to resolve MD012 (Kittywhiskers Van Gogh) * [8b7b378] sdk%doc: use compact style for tables with long rows to resolve MD060 (Kittywhiskers Van Gogh) * [304d077] sdk%doc: suppress MD060 on aligned tables with escaped characters (Kittywhiskers Van Gogh) * [d32c6f1] sdk%doc: suppress MD051 on a link to an included heading (Kittywhiskers Van Gogh) * [c984c7d] sdk%ci(gha): limit push builds to `develop` avoid duplicated runner use (Kittywhiskers Van Gogh) * [9c8c3b4] sdk%ci(bazel): revert 4723841 due to bazelbuild/bazel#26628 (Kittywhiskers Van Gogh) * [9f80b26] sdk%chore: bump `semgrep` and `pyjwt` to mitigate GHSA-ffc3-869f-jxw9 (Kittywhiskers Van Gogh) * [5d7816b] sdk%chore: bump `urllib3` to mitigate CVE-2026-{97687,97688,97689} (Kittywhiskers Van Gogh) * [dd0e5a3] sdk%chore: refresh Nix lockfile to incorporate NixOS/nixpkgs#562624 (Kittywhiskers Van Gogh) * [b63dc7e] sdk%chore: update Python lockfile (Kittywhiskers Van Gogh) * [bbc3972] sdk%chore: update Rust lockfiles (Kittywhiskers Van Gogh) Description: ````` ## Motivation Build failures ([source](https://github.com/dashpay/base-sdk/actions/runs/41189139520)) that did not appear until after the cache was warmed by the merger of [base-sdk#96](https://github.com/dashpay/base-sdk) causing failures in an unrelated PR, [base-sdk#97](#97). Request for backporting the fix for the underlying cause has been made in [bazelbuild/bazel#32219](bazelbuild/bazel#32219 (comment)) but until it makes it into a released version of Bazel or we get to revert [base-sdk#72](#72), we have to revert the change itself. ## How Has This Been Tested? ``` BAZELISK_HOME=.cache/bazelisk bazelisk mod deps --lockfile_mode=error cargo check --locked uv lock --check just lint ``` ## Checklist - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional tests - [ ] I have made corresponding changes to the documentation - [x] I did not use agentic assistance (i.e. LLMs, AI) except as [disclosed](#agent-disclosure) and can answer questions, comments and concerns without said assistance. I assume authorship of the code submitted. - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ### Agent disclosure Not applicable. `````
Summary
Take the rust-bitcoin crates from the same git revision that
rust-dashcore'sbitcoin-cryptouses (7ba35c7c), instead of from crates.io.base58ck,bitcoin_hashes,bitcoin-consensus-encoding,bitcoin-internals,bitcoin-primitivesandbitcoin-unitsbecome{ version, git, rev }workspace dependencies. Keepingversionmeanscargo publishstill resolves them from crates.io.base58ck::decode, sopkgs/pkc/src/ecdsa/secret_bytes.rsreads checksums throughdecode_check.Cargo.lockis regenerated.Why
rust-dashcoreneeds secp256k1 0.33, but the publishedbitcoin-crypto0.3.0 still uses 0.32, so it takesbitcoin-cryptofrom a rust-bitcoin git revision. A git dependency also pulls its sibling crates from that revision, sorust-dashcoreends up with git copies ofbase58ck0.5.0,bitcoin_hashes1.2.0,bitcoin-internals0.7.0 andbitcoin-units0.5.0.base-sdktakes the same crates by version from crates.io. The two copies share a name and version but not code (base58ck'ssrc/lib.rsdiffers by 428 lines), so Cargo builds both side by side.cargo vendorcannot: it keys vendored directories by name and version and fails withDash Core's depends and Guix builds vendor the Platform workspace offline, so this blocks any Platform commit that pulls in both. dashpay/platform#5473 works around it with a root
[patch.crates-io], which Cargo only honours at the top level of a build; this change removes the disagreement at its source.Follow-ups (not in this PR)
rust-dashcore: point its directbase58ck(andbitcoin_hashes) dependency at the same git revision and bump itsbase-sdkpin.platform: bump therust-dashcorepin and drop the[patch.crates-io]workaround from #5473.The git revision is temporary; once a
bitcoin-cryptorelease on secp256k1 0.33 is published, all of these can return to crates.io versions.Testing
cargo test --workspace --locked: passes.cargo clippy --workspace --all-targets --locked -- -D warningsandcargo fmt --all --check: clean.cargo deny check(advisories, bans, licenses, sources): ok.cargo vendor --locked: succeeds; each of the six crates appears once inCargo.lock, all from the git source.maint/lint/lint_commit.py -c HEAD: passes.Not run locally:
taplo(TOML format), CodeQL and semgrep lints.🤖 Generated with Claude Code