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


索引

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

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