LUA-SINGLE.ECLASS
部分: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主目录
名称
lua-single.eclass - 用于未安装在多个实现上的 Lua 包的 eclass。描述
lua.eclass 套件的扩展,用于不支持为多个 Lua 实现安装的软件包。 这主要包括嵌入 Lua 的软件。此 eclass 设置了正确的 IUSE。 它还提供 LUA_DEPS 和 LUA_REQUIRED_USE,需要添加到适当的 ebuild 元数据变量中。
此 eclass 导出 LUA_SINGLE_USEDEP,它适用于依赖于使用此 eclass 的其他软件包。 依赖于使用 lua.eclass 的软件包的依赖项应使用 lua_gen_cond_dep() 函数创建,使用 LUA_USEDEP 占位符。
请注意,支持多个 Lua 实现(使用 lua.eclass)的软件包不能依赖于不支持它们的软件包(使用此 eclass)。
请注意,由于此 eclass 始终继承 lua-utils,因此在使用前者的 ebuild 中,无需显式继承后者以使用辅助函数,例如 lua_get_CFLAGS。
支持的 EAPIS
7 8传递提供的 ECLASSES
lua-utils示例
EAPI=8 LUA_COMPAT=( lua5-{3..4} ) inherit lua-single [...] REQUIRED_USE="${LUA_REQUIRED_USE}" DEPEND="${LUA_DEPS}" RDEPEND="${DEPEND} $(lua_gen_cond_dep ' dev-lua/foo[${LUA_USEDEP}] ') " BDEPEND="virtual/pkgconfig" # Only need if the setup phase has to do more than just call lua-single_pkg_setup pkg_setup() { lua-single_pkg_setup [...] } src_install() { emake LUA_VERSION="$(lua_get_version)" install }
函数
- lua_gen_cond_dep <依赖项> [<模式>...]
- 输出一个 <依赖项> 列表,这些依赖项以 LUA_COMPAT 中的 Lua 实现的 USE 标志为条件,这些标志同时也在 LUA_COMPAT 中并且与作为剩余参数传递的任何模式匹配。
模式可以是 fnmatch 风格的模式(通过 bash == 运算符与 LUA_COMPAT 值匹配)。 请记住转义或引用 fnmatch 模式以防止意外的 shell 文件名扩展。
为了在软件包上强制执行 USE 约束,可以将文字 '${LUA_SINGLE_USEDEP}' 和 '${LUA_USEDEP}'(带引号!)放置在依赖项规范中。 它将在函数内部扩展为一个适当的 USE 依赖项字符串。
示例
LUA_COMPAT=( lua5-{1..3} ) RDEPEND="$(lua_gen_cond_dep \ 'dev-lua/backported_core_module[${LUA_USEDEP}]' lua5-1 lua5-3 )"
它将导致变量看起来像
RDEPEND="lua_single_target_lua5-1? ( dev-lua/backported_core_module[lua_targets_lua5-1(-)?,...] ) lua_single_target_lua5-3? ( dev-lua/backported_core_module[lua_targets_lua5-3(-)?,...] )"
- lua_gen_impl_dep [<请求的 USE 标志> [<实现模式>...]]
- 输出对 Lua 实现的依赖项,并附加指定的 USE 依赖项字符串,或者如果在没有参数的情况下调用(或使用空参数)则没有 USE 依赖项字符串。 如果传递了任何实现模式,则只会为与之匹配的实现生成输出依赖项。
模式可以是 fnmatch 风格的模式(通过 bash == 运算符与 LUA_COMPAT 值匹配)。 请记住转义或引用 fnmatch 模式以防止意外的 shell 文件名扩展。
当你需要根据软件包的 USE 标志请求 Lua 解释器上的不同 USE 标志时,使用此函数。 如果你只需要一组 Lua 解释器 USE 标志,只需设置 LUA_REQ_USE 并全局使用 ${LUA_DEPS}。
示例
LUA_COMPAT=( lua5-{1..3} ) RDEPEND="foo? ( $(lua_gen_impl_dep 'deprecated(+)' lua5-4 ) )"
它将导致变量看起来像
RDEPEND="foo? ( lua_single_target_lua5-4? ( dev-lang/lua:5.3[deprecated(+)] ) )"
- lua_setup
- 确定选定的 Lua 实现是什么,并为其设置 Lua 构建环境。
- lua-single_pkg_setup
- 运行 lua_setup。
ECLASS 变量
- LUA_COMPAT (必填) (在继承之前设置)
- 此变量包含软件包支持的 Lua 实现列表。 它必须在 `inherit` 调用之前设置。 它必须是一个数组。
示例
LUA_COMPAT=( lua5-1 lua5-3 lua5-4 )
请注意,如果你愿意,也可以使用 bash 花括号扩展
LUA_COMPAT=( lua5-{1..3} )
- LUA_COMPAT_OVERRIDE (用户变量)
- 此变量可以在使用 ebuild 时用来覆盖 ebuild 中的 LUA_COMPAT。 它是一个字符串,列出了软件包将为其构建的所有实现。 它需要在调用环境中指定,而不是在 ebuild 中指定。
需要注意的是,为了保留元数据的不可变性,LUA_COMPAT_OVERRIDE 不会影响 IUSE 或依赖项。 LUA_TARGETS 的状态被忽略,并且构建 LUA_COMPAT_OVERRIDE 中的所有实现。 需要手动满足依赖项。
示例
LUA_COMPAT_OVERRIDE='luajit' emerge -1v dev-lua/foo
- LUA_REQ_USE (在继承之前设置)
- 在选定的 Lua 实现上需要启用的 USE 标志列表,以 USE 依赖项字符串的形式形成。 它应该对 LUA_COMPAT 中的所有实现有效,因此可能需要使用 USE 默认值。 这必须在调用 `inherit` 之前设置。
示例
LUA_REQ_USE="deprecated"
它将导致 Lua 依赖项看起来像
lua_targets_luaX-Y? ( dev-lang/lua:X.Y[deprecated] )
- LUA_DEPS (由 ECLASS 生成)
- 这是 LUA_COMPAT 中列出的所有实现的 eclass 生成的 Lua 依赖项字符串。
示例用法
RDEPEND="${LUA_DEPS} dev-foo/mydep" DEPEND="${RDEPEND}"
示例值
lua_targets_lua5-1? ( dev-lang/lua:5.1 ) lua_targets_lua5-3? ( dev-lang/lua:5.3 )
- LUA_REQUIRED_USE (由 ECLASS 生成)
- 这是一个 eclass 生成的 required-use 表达式,它确保至少启用了一个 Lua 实现。
此表达式应在 ebuild 中使用,通过将其包含在 REQUIRED_USE 中,可选地在 use 标志后面。
示例用法
REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )"
示例值
|| ( lua_targets_lua5-1 lua_targets_lua5-3 )
- LUA_SINGLE_USEDEP (由 ECLASS 生成)
- 这是一个 eclass 生成的 USE 依赖项字符串,可用于依赖于为相同 Lua 实现构建的另一个 lua-single 软件包。
如果你需要依赖于一个多实现(lua.eclass)软件包,请改用 lua_gen_cond_dep 和 LUA_USEDEP 占位符。
示例用法
RDEPEND="dev-lua/foo[${LUA_SINGLE_USEDEP}]"
示例值
lua_single_target_lua5-1(-)?
- LUA_USEDEP (由 ECLASS 生成)
- 这是一个 eclass 生成的 USE 依赖项字符串,可用于依赖于为相同 Lua 实现构建的另一个 Lua 软件包。
示例用法
RDEPEND="dev-lua/foo[${LUA_USEDEP}]"
示例值
lua_targets_lua5-1(-)?,lua_targets_lua5-3(-)?
作者
Marek Szuba <[email protected]>基于 Michał Górny <[email protected]> 等人的 python-single-r1.eclass。
维护者
William Hubbs <[email protected]>报告错误
请通过 https://bugs.gentoo.org/ 报告错误文件
lua-single.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/lua-single.eclass
索引
此文档由 man2html 创建,使用手册页。
时间: 2024 年 11 月 12 日格林威治标准时间 03:27:01