#cargo-build #docker-build #build #docker #build-kit #rustc-wrapper

build rustcbuildx

$RUSTC_WRAPPER tool to sandbox cargo builds and execute jobs remotely

5 releases (breaking)

0.5.0 Aug 16, 2024
0.4.0 Jun 23, 2024
0.3.0 Jun 11, 2024
0.2.0 May 12, 2024
0.1.0 Dec 3, 2023

#28 in Build Utils

Download history 85/week @ 2024-08-10 52/week @ 2024-08-17 1/week @ 2024-08-24 23/week @ 2024-09-14 18/week @ 2024-09-21 17/week @ 2024-09-28 1/week @ 2024-10-05 1/week @ 2024-10-12

360 downloads per month

MIT license

135KB
2.5K SLoC

rustcbuildx

Forwards rustc calls to BuildKit builders.

rustcbuildx is a RUSTC_WRAPPER for cached and remote building of Rust projects (on BuildKit).

Configuration

Reads envs

  • $RUSTCBUILDX
  • $RUSTCBUILDX_BASE_IMAGE
  • $RUSTCBUILDX_BUILDER_IMAGE
  • $RUSTCBUILDX_CACHE_IMAGE
  • $RUSTCBUILDX_INCREMENTAL
  • $RUSTCBUILDX_LOG
  • $RUSTCBUILDX_LOG_PATH
  • $RUSTCBUILDX_LOG_STYLE
  • $RUSTCBUILDX_RUNNER
  • $RUSTCBUILDX_RUNS_ON_NETWORK
  • $RUSTCBUILDX_SYNTAX

Usage

  • Ensure at least either a docker or podman client is installed
  • Known to work on Ubuntu 22.04 with github.com/docker/buildx v0.11.2 9872040 and rust 1.73
# Keep images in sync with your local tools
rustcbuildx pull

export RUSTC_WRAPPER=rustcbuildx
cargo build ...
cargo check ...
cargo clippy ...
cargo install ...
cargo test ...

# or
RUSTC_WRAPPER=rustcbuildx cargo build ...
RUSTC_WRAPPER=rustcbuildx cargo check ...
RUSTC_WRAPPER=rustcbuildx cargo clippy ...
RUSTC_WRAPPER=rustcbuildx cargo install ...
RUSTC_WRAPPER=rustcbuildx cargo test ...

Fine tuning settings

rustcbuildx@version: $RUSTC_WRAPPER tool to sandbox cargo builds and execute jobs remotely
    https://github.com/fenollp/supergreen

Usage:
  rustcbuildx env             Show used values
  rustcbuildx pull            Pulls images (respects $DOCKER_HOST)
  rustcbuildx -h | --help
  rustcbuildx -V | --version

Remote execution

Say you have a bigger machine in your ~/.ssh/config called extra_oomph:

export DOCKER_HOST=ssh://extra_oomph
# Then
export RUSTC_WRAPPER=rustcbuildx
cargo test ...

Installation

# Installs to ~/.cargo/bin
cargo install --locked --force --git https://github.com/fenollp/supergreen.git rustcbuildx

# Make sur $CARGO_HOME/bin is in your $PATH
which rustcbuildx

En vrac

Dependencies

~9–20MB
~269K SLoC