CARGO-MODULE(5) | File Formats Manual | CARGO-MODULE(5)

# NAME

`cargo-module` — devel/cargo port module

# DESCRIPTION

This manual page documents the behavior of setting `MODULES=devel/cargo` in the ports(7) tree.

Automates download and compilation of dependencies of a Rust project using cargo(1).

During `fetch`, static dependencies ("crates") listed in `MODCARGO_CRATES` are downloaded using `MODCARGO_DIST_SUBDIR` as `DIST_SUBDIR`.

During `post-extract`, crates defined in `MODCARGO_CRATES` are moved to the `MODCARGO_VENDOR_DIR` directory.

During `post-patch`, crate-metadata are generated using devel/cargo-generate-vendor.

With `CONFIGURE_STYLE` set to ‘cargo’, cargo is configured to use `MODCARGO_VENDOR_DIR` instead of the standard crates-io network source. Finally, any crates listed in `MODCARGO_CRATES_UPDATE` are updated.

`MODCARGO_RUSTFLAGS` can be used to pass custom flags to all rustc(1) invocations.

lang/rust is added to `MODULES`, and devel/cargo-generate-vendor is added to `BUILD_DEPENDS`.

This module defines:

`MODCARGO_CARGOTOML`
  Path to cargo manifest. Defaults to ${WRKSRC}/Cargo.toml.
`MODCARGO_CARGOLOCK`
  Path to Cargo.lock, which is used only by the `modcargo-gen-crates` target. Defaults to ${MODCARGO_CARGOTOML:toml=lock}.
`MODCARGO_CRATES`
  Crates that will be downloaded by the module.
`MODCARGO_CRATES_UPDATE`
  List of crates to update, overriding the version listed in Cargo.lock.
`MODCARGO_FEATURES`
  List of features to be used when building.
`MODCARGO_INSTALL_TARGET_PATHS`
  List of paths to pass to `cargo install` instead of .. Needs to be set for some virtual manifests.
`MODCARGO_VENDOR_DIR`
  Name of the local directory for vendoring crates. Defaults to ${WRKSRC}/modcargo-crates.
`MODCARGO_WANTLIB`
  Architecture-specific `WANTLIB` entries required by all Rust code. It is a copy of `MODRUST_WANTLIB` provided for simplicity.

This module adds three make(1) targets:

`modcargo-metadata`
  Rerun the generation of crates' metadata.
`modcargo-gen-crates`
  Generate the `MODCARGO_CRATES` list from Cargo.lock (a preliminary crates list is not required).
`modcargo-gen-crates-licenses`
  Generate the `MODCARGO_CRATES` list with license information from crates present in the `MODCARGO_VENDOR_DIR` directory.

# SEE ALSO

port-modules(5)

January 13, 2025 | Debian