39 lines
1.3 KiB
Markdown
39 lines
1.3 KiB
Markdown
|
|
## Introduction
|
||
|
|
|
||
|
|
This provides the Rust compiler, tools for building packages (cargo), and
|
||
|
|
a few example projects.
|
||
|
|
|
||
|
|
## Building a rust package
|
||
|
|
|
||
|
|
When building a rust package in bitbake, it's usually easiest to build with
|
||
|
|
cargo using cargo.bbclass. If the package already has a Cargo.toml file (most
|
||
|
|
rust packages do), then it's especially easy. Otherwise you should probably
|
||
|
|
get the code building in cargo first.
|
||
|
|
|
||
|
|
Once your package builds in cargo, you can use
|
||
|
|
[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
|
||
|
|
recipe for it. This allows bitbake to fetch all the necessary dependent
|
||
|
|
crates, as well as a pegged version of the crates.io index, to ensure maximum
|
||
|
|
reproducibility. Once the Rust SDK support is added to oe-core, cargo-bitbake
|
||
|
|
may also be added to the SDK.
|
||
|
|
|
||
|
|
NOTE: You will have to edit the generated recipe based on the comments
|
||
|
|
contained within it
|
||
|
|
|
||
|
|
## Pitfalls
|
||
|
|
|
||
|
|
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust
|
||
|
|
configuration options are tracked for different targets. This is the reason
|
||
|
|
we use the Yocto triples instead of the native Rust triples. See rust-lang/cargo#3349.
|
||
|
|
|
||
|
|
## Dependencies
|
||
|
|
|
||
|
|
On the host:
|
||
|
|
- Any `-sys` packages your project might need must have RDEPENDs for
|
||
|
|
the native library.
|
||
|
|
|
||
|
|
On the target:
|
||
|
|
- Any `-sys` packages your project might need must have RDEPENDs for
|
||
|
|
the native library.
|
||
|
|
|