Building a Rust package#
Building a Rust package is very straightforward with rattler-build
. In this
example, we build the a package for the cargo-edit
utility, which is a utility
for managing cargo dependencies from the command line.
One tiny challenge is that the rust-compiler is not "pre-configured" and we need to
add a variant_config.yaml
file to the package:
This will tell rattler-build
what to insert for the ${{ compiler('rust') }}
jinja function.
Note
The ${{ compiler(...) }}
functions are very useful in the context of
cross-compilation. When the function is evaluated it will insert the correct
compiler (as selected with the variant config) as well the
target_platform
. The "rendered" compiler will look like rust_linux-64
when you are targeting the linux-64
platform.
You can read more about this in the cross-compilation section.
Then we can write the recipe for the package like so:
context:
version: "0.11.9"
package:
name: cargo-edit
version: ${{ version }}
source:
url: https://github.com/killercup/cargo-edit/archive/refs/tags/v${{ version }}.tar.gz
sha256: 46670295e2323fc2f826750cdcfb2692fbdbea87122fe530a07c50c8dba1d3d7
build:
script:
# Since Rust binaries are statically linked we should record all the licenses
- cargo-bundle-licenses --format yaml --output ${SRC_DIR}/THIRDPARTY.yml
- $BUILD_PREFIX/bin/cargo install --locked --bins --root ${PREFIX} --path .
requirements:
build:
- ${{ compiler('rust') }}
- cargo-bundle-licenses
tests:
- script:
- cargo-upgrade --help
about:
homepage: https://github.com/killercup/cargo-edit
license: MIT
description: A utility for managing cargo dependencies from the command line.
summary: A utility for managing cargo dependencies from the command line.
To build this recipe, just run: