PYTHON-ANY-R1.ECLASS

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

名称

python-any-r1.eclass - 用于构建时依赖于 Python 的软件包的 eclass。

描述

用于需要安装任何 Python 解释器而无需显式选择且不变的软件包的最小 eclass。这通常涉及在构建时需要 Python 但与 Python 无关的软件包。

此 eclass 提供一个最小的 PYTHON_DEPS 变量,其中包含对任何受支持的 Python 实现的依赖项字符串。它还导出 pkg_setup(),该函数会找到最佳受支持的实现并将其设置为活动实现。

可选地,您可以定义一个 python_check_deps() 函数。它将由 eclass 调用,并将 EPYTHON 设置为每个匹配的 Python 实现,并且预计会检查实现是否满足软件包要求。您可以使用本地导出的 PYTHON_USEDEP 或 PYTHON_SINGLE_USEDEP 来检查相关软件包的 USE 依赖项。如果 Python 实现满足要求,它应该返回一个真值 (0),否则返回一个假值 (非零)。

请注意,python-any-r1 将始终继承 python-utils-r1。因此,那里定义的所有函数都可以在使用 python-any-r1 的软件包中使用,并且永远不需要同时继承两者。

有关更多信息,请参阅 Python 指南:https://projects.gentoo.org/python/guide/

支持的 EAPIS

7 8

传递提供 ECLASSES

python-utils-r1

函数

python_gen_any_dep <依赖项块>
生成一个任何依赖项,该依赖项强制在 Python 解释器和 Python 软件包之间执行版本匹配。<依赖项块> 需要列出具有逐字 '${PYTHON_USEDEP}' 或 '${PYTHON_SINGLE_USEDEP}' 引用(带引号!)的一个或多个依赖项,这些引用将在函数内部展开。

这应该与适当的 python_check_deps() 一起使用,该函数会检查哪个任何块匹配。

示例用法

BDEPEND="$(python_gen_any_dep '
        dev-python/foo[${PYTHON_SINGLE_USEDEP}]
        || ( dev-python/bar[${PYTHON_USEDEP}]
                dev-python/baz[${PYTHON_USEDEP}] )')"

python_check_deps() {
        python_has_version "dev-python/foo[${PYTHON_SINGLE_USEDEP}]" &&
                { python_has_version "dev-python/bar[${PYTHON_USEDEP}]" ||
                        python_has_version "dev-python/baz[${PYTHON_USEDEP}]"; }
}

示例值

|| (
        (
                dev-lang/python:3.7
                dev-python/foo[python_single_target_python3_7(-)]
                || ( dev-python/bar[python_targets_python3_7(-)
                        dev-python/baz[python_targets_python3_7(-) )
        )
        (
                dev-lang/python:3.8
                dev-python/foo[python_single_target_python3_8(-)]
                || ( dev-python/bar[python_targets_python3_8(-)]
                        dev-python/baz[python_targets_python3_8(-)] )
        )
)
python_setup
确定最佳安装的(和受支持的)Python 实现是什么,并为其设置 Python 构建环境。

此函数将调用 python_check_deps()(如果已定义)。

python-any-r1_pkg_setup
在从源代码安装期间运行 python_setup。

在二进制软件包安装中,这是一个无操作。如果您在二进制软件包的 pkg_* 阶段需要 Python,请直接调用 python_setup。

ECLASS 变量

PYTHON_COMPAT (必需)
此变量包含软件包支持的 Python 实现列表。它必须在 `inherit` 调用之前设置。它必须是一个数组。

示例

PYTHON_COMPAT=( python{2_5,2_6,2_7} )
PYTHON_COMPAT_OVERRIDE (用户变量)
当使用 ebuild 时,此变量可用于覆盖 ebuild 中的 PYTHON_COMPAT。它是一个字符串,用于命名将用于构建软件包的实现。它需要在调用环境中指定,而不是在 ebuild 中指定。

需要注意的是,为了保持元数据的不可变性,PYTHON_COMPAT_OVERRIDE 不会影响依赖项。EPYTHON 和 eselect-python 首选项的值将被忽略。依赖项需要手动满足。

示例

PYTHON_COMPAT_OVERRIDE='pypy' emerge -1v dev-python/bar
PYTHON_REQ_USE
要在 Python 实现上启用的 USE 标志列表,以 USE 依赖项字符串的形式形成。它应该对 PYTHON_COMPAT 中的所有实现有效,因此可能需要使用 USE 默认值。

示例

PYTHON_REQ_USE="gdbm,ncurses(-)?"

这将导致 Python 依赖项看起来像

|| ( dev-lang/python:X.Y[gdbm,ncurses(-)?] ... )
PYTHON_DEPS (由 ECLASS 生成)
这是由 eclass 生成的 Python 依赖项字符串,用于 PYTHON_COMPAT 中列出的所有实现。

任何支持的解释器都将满足该依赖项。

示例用法

BDEPEND="${PYTHON_DEPS}"

示例值

|| ( dev-lang/python:2.7[gdbm]
        dev-lang/python:2.6[gdbm] )
PYTHON_USEDEP (由 ECLASS 生成)
当前测试实现的 eclass 生成的 USE 依赖项字符串。它在 python_check_deps() 调用中本地设置。

生成的 USE 标志列表与使用 python-r1 eclass 的软件包兼容。对于 python-single-r1 依赖项,请使用 PYTHON_SINGLE_USEDEP。

示例用法

python_check_deps() {
        python_has_version "dev-python/foo[${PYTHON_USEDEP}]"
}

示例值

python_targets_python3_7(-)
PYTHON_SINGLE_USEDEP (由 ECLASS 生成)
当前测试实现的 eclass 生成的 USE 依赖项字符串。它在 python_check_deps() 调用中本地设置。

生成的 USE 标志列表与使用 python-single-r1 eclass 的软件包兼容。对于 python-r1 依赖项,请使用 PYTHON_USEDEP。

示例用法

python_check_deps() {
        python_has_version "dev-python/bar[${PYTHON_SINGLE_USEDEP}]"
}

示例值

python_single_target_python3_7(-)

作者

作者: Michał Górny <[email protected]>
基于以下人员的工作: Krzysztof Pawlik <[email protected]>

维护者

Python 团队 <[email protected]>

报告错误

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

文件

python-any-r1.eclass

另请参阅

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/python-any-r1.eclass


索引

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

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