lua.eclass

Name

lua.eclass -- A common eclass for Lua packages

Description

A common eclass providing helper functions to build and install packages supporting being installed for multiple Lua implementations.

This eclass sets correct IUSE. Modification of REQUIRED_USE has to be done by the author of the ebuild (but LUA_REQUIRED_USE is provided for convenience, see below). The eclass exports LUA_DEPS and LUA_USEDEP so you can create correct dependencies for your package easily. It also provides methods to easily run a command for each enabled Lua implementation and duplicate the sources for them.

Note that since this eclass always inherits lua-utils as well, in ebuilds using the former there is no need to explicitly inherit the latter in order to use helper functions such as lua_get_CFLAGS.

Supported EAPIs

7 8

Transitively Provided Eclasses

  • lua-utils

Example

EAPI=8

LUA_COMPAT=( lua5-{3..4} )

inherit lua

[...]

REQUIRED_USE="${LUA_REQUIRED_USE}"
DEPEND="${LUA_DEPS}"
RDEPEND="${DEPEND}
    dev-lua/foo[${LUA_USEDEP}]"
BDEPEND="virtual/pkgconfig"

lua_src_install() {
    emake LUA_VERSION="$(lua_get_version)" install
}

src_install() {
    lua_foreach_impl lua_src_install
}

Functions

lua_copy_sources

Create a single copy of the package sources for each enabled Lua implementation.

The sources are always copied from initial BUILD_DIR (or S if unset) to implementation-specific build directory matching BUILD_DIR used by lua_foreach_abi().

lua_foreach_impl <command> [<args>...]

Run the given command for each of the enabled Lua implementations. If additional parameters are passed, they will be passed through to the command.

The function will return 0 status if all invocations succeed. Otherwise, the return code from first failing invocation will be returned.

For each command being run, ELUA, LUA and BUILD_DIR are set locally, and the former two are exported to the command environment.

Variables

LUA_COMPAT (REQUIRED) (SET BEFORE INHERIT)

This variable contains a list of Lua implementations the package supports. It must be set before the

inherit' call. It has to be an array.

Example:

LUA_COMPAT=( lua5-1 lua5-3 lua5-4 )

Please note that you can also use bash brace expansion if you like:

LUA_COMPAT=( lua5-{1..3} )
LUA_COMPAT_OVERRIDE (USER VARIABLE)

This variable can be used when working with ebuilds to override the in-ebuild LUA_COMPAT. It is a string listing all the implementations which package will be built for. It need be specified in the calling environment, and not in ebuilds.

It should be noted that in order to preserve metadata immutability, LUA_COMPAT_OVERRIDE does not affect IUSE nor dependencies. The state of LUA_TARGETS is ignored, and all the implementations in LUA_COMPAT_OVERRIDE are built. Dependencies need to be satisfied manually.

Example:

LUA_COMPAT_OVERRIDE='luajit' emerge -1v dev-lua/foo
LUA_REQ_USE (SET BEFORE INHERIT)

The list of USE flags required to be enabled on the chosen Lua implementations, formed as a USE-dependency string. It should be valid for all implementations in LUA_COMPAT, so it may be necessary to use USE defaults. This must be set before calling

inherit'.

Example:

LUA_REQ_USE="deprecated"

It will cause the Lua dependencies to look like:

lua_targets_luaX-Y? ( dev-lang/lua:X.Y[deprecated] )
BUILD_DIR (GENERATED BY ECLASS)

The current build directory. In global scope, it is supposed to contain an initial build directory; if unset, it defaults to ${S}.

In functions run by lua_foreach_impl(), the BUILD_DIR is locally set to an implementation-specific build directory. That path is created through appending a hyphen and the implementation name to the final component of the initial BUILD_DIR.

Example value:

${WORKDIR}/foo-1.3-lua5-1
LUA_DEPS (GENERATED BY ECLASS)

This is an eclass-generated Lua dependency string for all implementations listed in LUA_COMPAT.

Example use:

RDEPEND="${LUA_DEPS}
  dev-foo/mydep"
DEPEND="${RDEPEND}"

Example value:

lua_targets_lua5-1? ( dev-lang/lua:5.1 )
lua_targets_lua5-3? ( dev-lang/lua:5.3 )
LUA_REQUIRED_USE (GENERATED BY ECLASS)

This is an eclass-generated required-use expression which ensures at least one Lua implementation has been enabled.

This expression should be utilized in an ebuild by including it in REQUIRED_USE, optionally behind a use flag.

Example use:

REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )"

Example value:

|| ( lua_targets_lua5-1 lua_targets_lua5-3 )
LUA_USEDEP (GENERATED BY ECLASS)

This is an eclass-generated USE-dependency string which can be used to depend on another Lua package being built for the same Lua implementations.

Example use:

RDEPEND="dev-lua/foo[${LUA_USEDEP}]"

Example value:

lua_targets_lua5-1(-)?,lua_targets_lua5-3(-)?

Authors

Marek Szuba <marecki@gentoo.org>

Based on python-r1.eclass by Michał Górny <mgorny@gentoo.org> et al.

Maintainers

William Hubbs <williamh@gentoo.org>

Marek Szuba <marecki@gentoo.org>

Reporting Bugs

Please report bugs via https://bugs.gentoo.org/