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