container-device-interface 1.1.0

CDI (Container Device Interface), is a specification, for container-runtimes, to support third-party devices.
Documentation
container-device-interface-1.1.0 has been yanked.

Container Device Interface (Rust)

Rust implementation of the Container Device Interface.

Build

The compiler version is pinned in rust-toolchain.toml; rustup installs it on first use.

cargo build --release --locked

Release artifacts (cdi, validate, libcontainer_device_interface.so) are built with ./scripts/build-release.sh <target>, which additionally remaps machine-specific paths so the artifacts are byte-reproducible. The Reproducible build workflow enforces this on every pull request by building twice from different locations and requiring identical hashes.

Codegen policy (size optimization, LTO, panic=abort) lives in [profile.release] in Cargo.toml.

Reproduce a release build

Signature checks prove who built an artifact; a rebuild proves what was built. Building a release tag yourself must yield exactly the published sha256:

git clone --branch "$TAG" --depth 1 \
  https://github.com/cncf-tags/container-device-interface-rs
cd container-device-interface-rs
./scripts/build-release.sh "$TARGET"
sha256sum "target/${TARGET}/release/cdi" \
  "target/${TARGET}/release/validate" \
  "target/${TARGET}/release/libcontainer_device_interface.so"

A mismatch means your toolchain deviates from rust-toolchain.toml (check rustc -V) or the artifact was not built from that tag.