MULTILIB-BUILD.ECLASS
部分: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
multilib-build.eclass - 用于构建多库软件包的标志和实用程序函数描述
multilib-build.eclass 导出 USE 标志和实用程序函数,这些函数对于以干净且统一的方式构建多库软件包是必要的。请注意,多库功能依赖项的依赖项规范应使用 ${MULTILIB_USEDEP} 中的 USE 依赖项字符串来正确请求启用多库。
支持的 EAPIS
7 8函数
- multilib_get_enabled_abis
- 如果启用了多库构建,则返回已启用 ABI 的有序列表。最佳(最优选)ABI 将排在最后。
如果禁用了多库,则将返回默认 ABI 以强制与多库代码进行一致的测试。
- multilib_get_enabled_abi_pairs
- 如果启用了多库构建,则返回已启用 <use-flag>.<ABI> 对的有序列表。最佳(最优选)ABI 将排在最后。
如果禁用了多库,则将返回默认 ABI 以及空的 <use-flag>。
- multilib_foreach_abi <argv>...
- 如果启用了多库支持,则为每个支持的 ABI 设置工具链,以及 ABI 变量和正确的 BUILD_DIR,并使用它们运行给定的命令。
如果禁用了多库支持,它只会运行命令。不会进行任何设置。
- multilib_parallel_foreach_abi <argv>...
- 如果启用了多库支持,则为每个支持的 ABI 设置工具链,以及 ABI 变量和正确的 BUILD_DIR,并使用它们运行给定的命令。
如果禁用了多库支持,它只会运行命令。不会进行任何设置。
此函数用于并行运行多个命令。现在它只是对 multilib_foreach_abi 的一个已弃用别名。
- multilib_check_headers
- 检查头文件在不同 ABI 之间是否一致。
此函数需要在每个 ABI 的安装阶段之后调用。它获取头文件校验和,并将它们与之前的运行(如果有)进行比较。如果头文件不同,则退出。
- multilib_copy_sources
- 为每个启用的 ABI 创建软件包源代码的单个副本。
源代码始终从初始 BUILD_DIR(或未设置时为 S)复制到与 multilib_foreach_abi() 使用的 BUILD_DIR 匹配的特定于 ABI 的构建目录。
- multilib_prepare_wrappers [<install-root>]
- 为当前 ABI 执行所有类型的包装器准备。此函数应在将要包装的文件安装到每个 ABI 之后调用一次。
接受一个可选的自定义 <install-root>,从中使用文件。如果未指定根目录,则使用 ${ED}。
要包装的文件使用单独的变量指定,例如 MULTILIB_WRAPPED_HEADERS。这些变量在对 multilib_prepare_wrappers 和 multilib_install_wrappers 的连续调用之间不应更改。
在所有包装器准备就绪后,应调用 multilib_install_wrappers 将它们提交到安装树。
- multilib_install_wrappers [<install-root>]
- 安装先前准备的包装器。此函数应在所有包装器准备就绪后调用一次。
接受一个可选的自定义 <install-root>,将包装器安装到该位置。如果未指定根目录,则使用 ${ED}。无需使用与准备包装器时相同的根目录。
要包装的文件使用单独的变量指定,例如 MULTILIB_WRAPPED_HEADERS。这些变量在对 multilib_prepare_wrappers 和 multilib_install_wrappers 的调用之间不应更改。
- multilib_is_native_abi
- 确定当前构建的 ABI 是否为配置文件的原生 ABI。如果为真,则返回真状态(0),否则返回假状态(1)。
- multilib_native_use <flag>
- 类似于标准 use 命令,但只有在 multilib_is_native_abi 和 use <flag> 为真时才产生真值,否则为假。
- multilib_native_usev <flag> [<opt-value>]
- 类似于标准 usev 命令,但只有在 multilib_is_native_abi 和 usev <flag> 为真时才打印输出。
- multilib_native_use_with <flag> [<opt-name> [<opt-value>]]
- 类似于 use_with 输出 --with 配置选项,如果 USE <flag> 已启用并且正在构建可执行文件(multilib_is_native_abi 为真)。否则,输出 --without 配置选项。参数与 EAPI 中的 use_with 相同。
- multilib_native_use_enable <flag> [<opt-name> [<opt-value>]]
- 类似于 use_enable 输出 --enable 配置选项,如果 USE <flag> 已启用并且正在构建可执行文件(multilib_is_native_abi 为真)。否则,输出 --disable 配置选项。参数与 EAPI 中的 use_enable 相同。
- multilib_native_enable <opt-name> [<opt-value>]
- 如果正在构建可执行文件(multilib_is_native_abi 为真),则输出 --enable 配置选项。否则,输出 --disable 配置选项。
- multilib_native_with <opt-name> [<opt-value>]
- 如果正在构建可执行文件(multilib_is_native_abi 为真),则输出 --with 配置选项。否则,输出 --without 配置选项。
- multilib_native_usex <flag> [<true1> [<false1> [<true2> [<false2>]]]]
- 如果 USE <flag> 已启用并且正在构建可执行文件(multilib_is_native_abi 为真),则输出 <true1>(如果未指定,则为 'yes')和 <true2> 的串联。否则,输出 <false1>(如果未指定,则为 'no')和 <false2> 的串联。参数与 EAPI 中的 usex 相同。
ECLASS 变量
- MULTILIB_COMPAT
- ebuild 支持的多库 ABI 列表。如果未设置,则默认为 eclass 支持的所有 ABI。
此变量旨在用于预构建的多库软件包,这些软件包只能为有限的 ABI 集提供二进制文件。如果由于源代码中的错误需要限制 ABI,则应使用 package.use.mask。与 MULTILIB_COMPAT 一样,KEYWORDS 应包含 '-*'。
请注意,设置此变量实际上禁用了对所有其他 ABI 的支持,包括其他体系结构。例如,指定 abi_x86_{32,64} 会禁用对 MIPS 的支持。
MULTILIB_COMPAT 的值决定了 IUSE 的值。如果设置,它还会启用 REQUIRED_USE 约束。
示例用法
# Upstream provides binaries for x86 & amd64 only MULTILIB_COMPAT=( abi_x86_{32,64} )
- MULTILIB_USEDEP (ECLASS 生成的)
- 要对需要也支持多库的依赖项(库)使用的 USE 依赖项。
示例用法
RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] net-libs/libbar[ssl,${MULTILIB_USEDEP}]"
- MULTILIB_ABI_FLAG (ECLASS 生成的)
- 完整的 ABI 名称。类似于 USE 标志名称。
这在 multilib_foreach_abi()、multilib_parallel_foreach_abi() 和 multilib-minimal 子阶段函数中设置。
当构建在不受 USE 标志控制的 ABI 上执行时(例如,在非多库架构上或使用多库 portage 时),它可能为 null(空)。然后构建将始终针对单个 ABI 执行。
示例值
abi_x86_64
- MULTILIB_WRAPPED_HEADERS
- 要包装以支持多库的头文件列表。列出的头文件将被移动到非标准位置,并替换为一个包含这些头文件的条件文件,以适应当前的 ABI。
此变量必须是一个 bash 数组。路径应相对于安装根目录 (${ED}),并命名正则文件。不支持递归包装。
请注意,*不鼓励* 包装头文件。最好将所有头文件安装在 libdir 的子目录中,并使用 pkg-config 来定位头文件。一些 C 预处理器无法与包装的头文件一起使用。
示例
MULTILIB_WRAPPED_HEADERS=( /usr/include/foobar/config.h )
- MULTILIB_CHOST_TOOLS
- 要为每个多库 ABI 保留的工具可执行文件列表。列出的可执行文件将被重命名为 ${CHOST}-${basename},而原生变体将被符号链接到通用名称。
此变量必须是一个 bash 数组。路径应相对于安装根目录 (${ED}),并命名正则文件或指向正则文件的符号链接。不支持递归包装。
如果传递了符号链接,则符号链接路径和符号链接目标都将更改。因此,预计符号链接目标也将被包装(通过列出在 MULTILIB_CHOST_TOOLS 中或外部包装)。
请注意,*不鼓励* 包装工具。最好为每个 ABI 安装 pkg-config 文件,并要求反向依赖项使用它。
正确搜索工具的软件包(例如,使用 AC_PATH_TOOL 宏)将自动找到包装的可执行文件。其他软件包将需要显式覆盖工具路径。
示例
MULTILIB_CHOST_TOOLS=( /usr/bin/foo-config )
作者
作者: Michał Górny <[email protected]>维护者
Michał Górny <[email protected]>报告错误
请通过 https://bugs.gentoo.org/ 报告错误文件
multilib-build.eclass另请参见
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/multilib-build.eclass
索引
此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日,格林威治时间 03:27:01