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