CARGO.ECLASS

部分: eclass-manpages (5)
更新: 2024 年 11 月
索引 返回主内容

名称

cargo.eclass - cargo 构建的通用函数和变量

支持的 EAPIS

8

传递提供的 ECLASSES

rust

函数

_cargo_set_crate_uris <crates>
生成要放入 SRC_URI 中的 URI,以帮助获取依赖项。从其参数构建一个箱子列表。如果未提供参数,则使用 CRATES 变量。该值设置为 CARGO_CRATE_URIS。
cargo_crate_uris [<crates>...]
生成要放入 SRC_URI 中的 URI,以帮助获取依赖项。从其参数构建一个箱子列表。如果未提供参数,则使用 CRATES 变量。
cargo_gen_config
生成 $CARGO_HOME/config.toml,以便使用本地注册表和设置。除了下面的 TOML 语法外,Cargo 也可以通过环境变量进行配置。对于每个形式为 foo.bar 的配置键,环境变量 CARGO_FOO_BAR 也可以用来定义值。环境变量优先于 TOML 配置,目前只支持整数、布尔值和字符串键。例如,build.jobs 键也可以通过 CARGO_BUILD_JOBS 来定义。或者在 make.conf 中设置 CARGO_TERM_VERBOSE=false 将使构建更安静。
cargo_target_dir
返回目标目录中包含构建的目录,例如 target/aarch64-unknown-linux-gnu/release。
cargo_src_unpack
解压缩软件包和 cargo 注册表。
cargo_live_src_unpack
运行 'cargo fetch' 并为离线使用而提供下载的箱子,用于实时 ebuilds。注意:如果使用 git 依赖项,可能需要传递 --frozen 到 cargo_src_configure。
cargo_src_configure
配置 cargo 包功能和参数。提供给此函数的额外位置参数将传递给所有阶段的 cargo。确保所有 cargo 子命令都支持此处传递的标志。

显式仅构建 'baz' 二进制文件并启用 'barfeature' 和可选的 'foo' 功能的软件包示例。它将在 src_{compile,test,install} 中传递 '--features barfeature --features foo --bin baz'。

src_configure() {
        local myfeatures=(
                barfeature
                $(usev foo)
        )
        cargo_src_configure --bin baz
}

在某些情况下,箱子可能需要 '--no-default-features' 选项,因为除了禁用所有功能外,没有其他方法可以禁用单个默认功能。它可以直接传递给 cargo_src_configure。

一些实时/9999 ebuild 可能需要 '--frozen' 选项,如果使用 git 箱子。否则 src_install 阶段可能会再次查询网络并失败。

cargo_env 命令及其参数
在执行使用 Cargo 进行任务(如构建)所需的環境下运行给定的命令。RUSTFLAGS 附加到此处设置的额外标志。确保在 Cargo 调用之间一致地设置这些标志,否则将发生重建。针对 [build] 设置的项目特定 rustflags 不会生效,因为 Cargo 的限制,因此如果它们很重要,请将它们添加到您的 ebuild 的 RUSTFLAGS 中。
cargo_src_compile
使用 cargo build 构建软件包。
cargo_src_install
安装 cargo 生成的二进制文件。在某些情况下,工作区需要一个备用的 --path 参数。如果没有指定路径,则默认为 '--path ./。'--path ./somedir' 可以直接传递给 cargo_src_install。
cargo_src_test
使用 cargo test 测试软件包。

ECLASS 变量

CRATES (在继承之前设置)
包含所有要下载的箱子的 bash 字符串。它被 cargo_crate_uris 使用。通常由 app-portage/pycargoebuild 生成。

理想情况下,箱子名称和版本应该用 `@` 字符隔开。还支持使用连字符的旧语法,但它要慢得多。

示例

CRATES="
[email protected]
[email protected]
[email protected]
"
inherit cargo
...
SRC_URI="${CARGO_CRATE_URIS}"
GIT_CRATES (在继承之前设置)
包含所有要通过 git 获取的箱子的 bash 关联数组。它被 cargo_crate_uris 使用。如果定义了此数组,则 cargo_src_install 将向 "cargo install" 添加 --frozen。键是箱子名称,值是分号分隔的列表

- 要从其获取箱子的 URI。
    - 它 智能地 处理 GitHub 和 GitLab URI, 以便
      只需 仓库 路径即可。
    - 字符串 "%commit%" 将 被 替换为 提交的 校验和。 - 要使用的提交的校验和。 - 可选:要查找 Cargo.toml 的路径。
  - 它 也会 将 字符串 "%commit%" 替换为 提交的 校验和。
  - 默认 值为: "${crate}-%commit%"

没有定义到 Cargo.toml 的路径的简单定义示例

declare -A GIT_CRATES=(
        [home]="https://github.com/rbtcollins/home;a243ee2fbee6022c57d56f5aa79aefe194eabe53"
)

定义了路径的示例

declare -A GIT_CRATES=(
        [rustpython-common]="https://github.com/RustPython/RustPython;4f38cb68e4a97aeea9eb19673803a0bd5f655383;RustPython-%commit%/common"
        [rustpython-parser]="https://github.com/RustPython/RustPython;4f38cb68e4a97aeea9eb19673803a0bd5f655383;RustPython-%commit%/compiler/parser"
)
CARGO_OPTIONAL (在继承之前设置)
如果设置为非空值,则 "inherit cargo" 之前的 ebuild 部分将被视为可选。不会添加依赖项,也不会导出阶段函数。

如果启用 CARGO_OPTIONAL,请在使用此 eclass 的其他 src_functions 或 cargo_env 之前至少手动调用 cargo_gen_config。请注意,cargo_gen_config 会由 cargo_src_unpack 自动调用。

myfeatures
定义为 bash 数组的可选 cargo 功能。应在调用 cargo_src_configure 之前定义。

具有 x11 和 wayland 功能并禁用默认功能的软件包示例。

src_configure() {
        local myfeatures=(
                $(usex X x11 '')
                $(usev wayland)
        )
        cargo_src_configure --no-default-features
}
ECARGO_HOME (由 ECLASS 生成)
cargo 主目录的位置。
ECARGO_REGISTRY_DIR (用户变量)
cargo 注册表存储目录。cargo_live_src_unpack 使用它来缓存下载。这应该由用户设置。Ebuilds 绝不能设置它。

如果没有设置,则默认为 "${DISTDIR}/cargo-registry"。

ECARGO_OFFLINE (用户变量)
如果非空,此变量会阻止 cargo_live_src_unpack 中的在线操作。如果没有显式设置,则继承 EVCS_OFFLINE 的值。
ECARGO_VENDOR (由 ECLASS 生成)
cargo 供应商目录的位置。
EVCS_UMASK (用户变量)
将此变量设置为自定义 umask。这应该由用户设置。通过将其设置为类似于 002 的值,它可以使在主目录中使用 cargo 的用户(但属于 portage 组)的生活更容易,然后切换到使用 FEATURES=userpriv 构建。反之亦然。
CARGO_CRATE_URIS (由 ECLASS 生成)
从 CRATES 变量创建的要放入 SRC_URI 中的 URI 列表。

作者

Doug Goldstein <[email protected]>
Georgy Yakovlev <[email protected]>

维护者

[email protected]

报告错误

请通过 https://bugs.gentoo.org/ 报告错误

文件

cargo.eclass

另请参见

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/cargo.eclass


索引

名称
支持的 EAPIS
传递提供的 ECLASSES
函数
ECLASS 变量
作者
维护者
报告错误
文件
另请参见

此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日格林威治标准时间 03:27:01