PYTHON-SINGLE-R1.ECLASS

章节: eclass-manpages (5)
更新时间: 2024 年 11 月
索引 返回主目录

名称

python-single-r1.eclass - 用于未安装到多个实现的 Python 包的 eclass。

描述

python-r1 eclass 套件的扩展,用于不支持安装到多个 Python 实现的包。这主要包括嵌入 Python 的工具和使用外部构建系统的包。

此 eclass 设置正确的 IUSE。它还提供需要添加到相应 ebuild 元数据变量中的 PYTHON_DEPS 和 PYTHON_REQUIRED_USE。

此 eclass 导出 PYTHON_SINGLE_USEDEP,适用于依赖于使用此 eclass 的其他包。使用 python-r1 的包的依赖关系应该通过 python_gen_cond_dep() 函数创建,使用 PYTHON_USEDEP 占位符。

请注意,支持多个 Python 实现(使用 python-r1 eclass)的包不能依赖于不支持它们(使用此 eclass)的包。

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

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

支持的 EAPIS

7 8

传递提供的 ECLASSES

python-utils-r1

函数

python_gen_useflags [<pattern>...]
输出 Python 实现的 USE 标志列表,这些实现既在 PYTHON_COMPAT 中,又与传递给函数的参数中的任何模式匹配。

有关模式语法的详细信息,请参阅 python-utils-r1.eclass 中的 _python_impl_matches。

示例

PYTHON_COMPAT=( python{2_7,3_4} )
REQUIRED_USE="doc? ( ^^ ( $(python_gen_useflags 'python2*') ) )"

这将导致变量看起来像

REQUIRED_USE="doc? ( ^^ ( python_single_target_python2_7 ) )"
python_gen_cond_dep <dependency> [<pattern>...]
输出 <dependency> 的列表,这些依赖关系根据与传递给函数的参数中的任何模式匹配的 Python 实现的 USE 标志进行条件化。

有关模式语法的详细信息,请参阅 python-utils-r1.eclass 中的 _python_impl_matches。

为了在包上强制执行 USE 约束,可以将文字“${PYTHON_SINGLE_USEDEP}”和“${PYTHON_USEDEP}”(带引号!)放在依赖关系规范中。它将在函数内部展开成一个正确的 USE 依赖关系字符串。

示例

PYTHON_COMPAT=( python{2_7,3_{3,4}} pypy )
RDEPEND="$(python_gen_cond_dep \
  'dev-python/unittest2[${PYTHON_USEDEP}]' python2_7 pypy )"

这将导致变量看起来像

RDEPEND="python_single_target_python2_7? (
    dev-python/unittest2[python_targets_python2_7(-)?,...] )
        python_single_target_pypy? (
    dev-python/unittest2[python_targets_pypy(-)?,...] )"
python_gen_impl_dep [<requested-use-flags> [<impl-pattern>...]]
输出对 Python 实现的依赖关系,并附加指定的 USE 依赖关系字符串,如果在不带参数(或带空参数)的情况下调用,则不输出 USE 依赖关系字符串。如果传递了任何实现模式,则只会为与它们匹配的实现生成输出依赖关系。

有关模式语法的详细信息,请参阅 python-utils-r1.eclass 中的 _python_impl_matches。

当您需要根据包的 USE 标志请求 Python 解释器上的不同 USE 标志时,请使用此函数。如果您只需要一组解释器 USE 标志,只需设置 PYTHON_REQ_USE 并全局使用 ${PYTHON_DEPS}。

示例

PYTHON_COMPAT=( python{2_7,3_{3,4}} pypy )
RDEPEND="foo? ( $(python_gen_impl_dep 'xml(+)') )"

这将导致变量看起来像

RDEPEND="foo? (
  python_single_target_python2_7? (
    dev-lang/python:2.7[xml(+)] )
        python_single_target_pypy? (
    dev-python/pypy[xml(+)] ) )"
python_setup
确定所选的 Python 实现是什么,并为其设置 Python 构建环境。
python-single-r1_pkg_setup
运行 python_setup。

ECLASS 变量

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

示例

PYTHON_COMPAT=( python2_7 python3_3 python3_4 )

请注意,如果您愿意,也可以使用 bash 大括号扩展

PYTHON_COMPAT=( python2_7 python3_{3,4} )
PYTHON_COMPAT_OVERRIDE (用户变量)
此变量可在处理 ebuild 时使用,以覆盖 ebuild 中的 PYTHON_COMPAT。它是一个字符串,用于命名将为其构建包的实现。它需要在调用环境中指定,而不是在 ebuild 中指定。

需要注意的是,为了保持元数据不变性,PYTHON_COMPAT_OVERRIDE 不会影响 IUSE 也不影响依赖关系。PYTHON_SINGLE_TARGET 的状态将被忽略,并将构建 PYTHON_COMPAT_OVERRIDE 中的实现。需要手动满足依赖关系。

示例

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

这应该在调用 `inherit` 之前设置。

示例

PYTHON_REQ_USE="gdbm,ncurses(-)?"

这将导致 Python 依赖关系看起来像

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

依赖关系字符串取决于 PYTHON_SINGLE_TARGET。

示例用法

RDEPEND="${PYTHON_DEPS}
        dev-foo/mydep"
BDEPEND="${PYTHON_DEPS}"

示例值

python_single_target_python2_7? ( dev-lang/python:2.7[gdbm] )
python_single_target_pypy? ( dev-python/pypy[gdbm] )
PYTHON_SINGLE_USEDEP (由 ECLASS 生成)
这是一个 eclass 生成的 USE 依赖关系字符串,可用于依赖于为相同 Python 实现构建的另一个 python-single-r1 包。

如果您需要依赖于多实现(python-r1)包,请使用 python_gen_cond_dep 和 PYTHON_USEDEP 占位符。

示例用法

RDEPEND="dev-python/foo[${PYTHON_SINGLE_USEDEP}]"

示例值

python_single_target_python3_4(-)?
PYTHON_USEDEP (由 ECLASS 生成)
这是一个由 python_gen_cond_dep 支持的占位符变量,用于依赖于为相同 Python 实现构建的 python-r1 包。

示例用法

RDEPEND="$(python_gen_cond_dep '
    dev-python/foo[${PYTHON_USEDEP}]
  ')"

示例值

python_targets_python3_4(-)
PYTHON_REQUIRED_USE (由 ECLASS 生成)
这是一个 eclass 生成的必需使用表达式,它确保已启用恰好一个 PYTHON_SINGLE_TARGET 值。

此表达式应该在 ebuild 中使用,方法是在 REQUIRED_USE 中包含它,可选地在 use 标志之后。

示例用法

REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"

示例值

^^ ( python_single_target_python2_7 python_single_target_python3_3 )

作者

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

维护者

Python 团队 <[email protected]>

报告漏洞

请通过 https://bugs.gentoo.org/ 报告漏洞。

文件

python-single-r1.eclass

另请参阅

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


索引

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

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