forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
build: add optional Rust and CXX bridge support #7580
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
PastaPastaPasta
wants to merge
60
commits into
dashpay:develop
from
PastaPastaPasta:feat/optional-rust-components
Closed
Changes from 55 commits
Commits
Show all changes
60 commits
Select commit
Hold shift + click to select a range
e189a09
build: add Rust to CI docker image, cross-compile targets
kwvg 01fd416
build: add minimal stub crate to validate Rust integration
kwvg fc23f36
lint: exclude `rust/` from linters
kwvg 57c75bf
build: introduce barebones Autotools integration with Rust
kwvg 2c640ab
build: propagate SDK version to Rust compiler
kwvg d5cc457
build: propagate macOS SDK path to Rust compiler
kwvg bc820fc
build: use debug profile for Rust components if `--enable-debug` set
kwvg d546501
build: propagate target build variables to Rust components
kwvg 1190de3
build: propagate host build variables to Rust components
kwvg 0c91bbb
debug: Add log that validates successful FFI invocation at init
kwvg 5353138
depends: integrate Rust and `cxxbridge` into depends
kwvg 8e74d07
build: drop Rust from CI docker image
kwvg e53ac71
depends: add support for vendored crates for offline builds
kwvg fb32452
fix: avoid triggering `rustup` if building from depends
kwvg e152249
fix: workaround `Directory renamed before its status could be extracted`
kwvg 9c88a95
fix: copy native binaries for access within Guix context
kwvg a1a681b
fix: patch loader paths to Guix store locations
kwvg 42e20d9
refactor: split rust runner (builder) and standard library (cross)
kwvg a8016ed
build: switch to Rust 1.85.1, use musl stdlib to avoid Guix glibc issues
kwvg dedefdd
fix: resolve issues with dist builds
kwvg a48f5c4
build: aggregate Rust components via umbrella crate instead of ar-mer…
PastaPastaPasta aed498f
build: bump pinned Rust toolchain from 1.85.1 to 1.92.0
PastaPastaPasta 8258d25
build: write cargo config and sentinels to builddir, not srcdir
PastaPastaPasta e94961c
build: support git-sourced crates in offline vendored builds
PastaPastaPasta 6e28684
build: make Rust integration optional and CI-covered
PastaPastaPasta fef0b06
build: harden optional Rust integration
PastaPastaPasta 29add8a
build: distribute Rust vendor helper
PastaPastaPasta 61f9b77
build: validate offline Rust vendor sources
PastaPastaPasta 4037a02
build: complete Rust toolchain validation
PastaPastaPasta 25ff38d
build: populate Rust source cache
PastaPastaPasta fc2c792
ci: align Rust source cache consumers
PastaPastaPasta 83a6aeb
build: validate Rust toolchain selection
PastaPastaPasta a0bf590
ci: provide vendored crates to Rust source builds
PastaPastaPasta 2fdf0b8
build: support canonical ARMv7 Rust targets
PastaPastaPasta 6b62e30
build: reject stale generated Rust bridges
PastaPastaPasta 7900d20
build: preserve system Rust toolchain selection
PastaPastaPasta 9ad0760
build: preserve native musl Rust targets
PastaPastaPasta d05aa50
build: preserve native Rust host ABI
PastaPastaPasta c594dda
build: harden Rust source provenance
PastaPastaPasta 88d0e2f
fix: require matching bridge generator stamp
PastaPastaPasta 043706d
fix: preserve ARM Rust floating-point ABI
PastaPastaPasta cb4e8fa
fix: support Rust on 32-bit Linux
PastaPastaPasta 1427f5b
ci: isolate Guix source cache
PastaPastaPasta 93325c0
fix: provision soft-float ARM Rust stdlib
PastaPastaPasta cbf098b
fix: reject unsupported Rust stdlib targets
PastaPastaPasta 3bf1f79
fix: preserve system PowerPC Rust ABI
PastaPastaPasta 1bbef7d
fix: make Rust vendor setup retryable
PastaPastaPasta 0afa9e4
fix: preserve developer Cargo configuration
PastaPastaPasta f5ebb59
build: require matching Cargo toolchain
PastaPastaPasta fbff015
build: hash external depends recipe helpers
PastaPastaPasta 9c94e2c
build: scope Rust helper cache invalidation
PastaPastaPasta 684495e
build: fix cxxbridge updater fetch guidance
PastaPastaPasta 9fa7a39
build: synchronize Rust updater version pins
PastaPastaPasta f8fde51
build: make cxxbridge updater self-contained
PastaPastaPasta a0cee68
build: avoid partial cxxbridge updater changes
PastaPastaPasta 4b2ec38
build: confine Rust support to validated hosts
PastaPastaPasta 594f394
fix: match Rust macOS deployment target to the C++ toolchain
PastaPastaPasta eeb3b91
build: dist the cxxbridge stamp before generated sources
PastaPastaPasta ecafbb8
build: accept equal-mtime cxxbridge artifacts from source tarballs
PastaPastaPasta 480126c
docs: describe the optional Rust build support
PastaPastaPasta File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| # Linux | ||
| [target.aarch64-unknown-linux-musl] | ||
| linker = "aarch64-linux-gnu-gcc" | ||
|
|
||
| [target.armv7-unknown-linux-musleabihf] | ||
| linker = "arm-linux-gnueabihf-gcc" | ||
|
|
||
| [target.powerpc64le-unknown-linux-musl] | ||
| linker = "powerpc64le-linux-gnu-gcc" | ||
|
|
||
| [target.riscv64gc-unknown-linux-musl] | ||
| linker = "riscv64-linux-gnu-gcc" | ||
|
|
||
| [target.x86_64-unknown-linux-musl] | ||
| linker = "x86_64-linux-gnu-gcc" | ||
|
|
||
| # Windows | ||
| [target.x86_64-pc-windows-gnu] | ||
| linker = "x86_64-w64-mingw32-gcc" | ||
|
|
||
| # macOS | ||
| # [target.aarch64-apple-darwin] | ||
| # linker = "aarch64-apple-darwin-gcc" | ||
|
|
||
| # [target.x86_64-apple-darwin] | ||
| # linker = "x86_64-apple-darwin-gcc" | ||
|
|
||
| [source.crates-io] | ||
| replace-with = "vendored-sources" | ||
|
|
||
| [source.vendored-sources] | ||
| # The directory for this source is set to RUST_VENDORED_SOURCES by rust/Makefile.am |
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.