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
索引
此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日格林威治标准时间 03:27:01