View Raw Ebuild
# Copyright 2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN="lua-compat-5.3"
LUA_COMPAT=(lua5-{1..4} luajit)
inherit edo flag-o-matic lua toolchain-funcs
DESCRIPTION="Compatibility module providing Lua-5.3-style APIs for Lua 5.2 and 5.1"
HOMEPAGE="
https://luarocks.org/modules/lunarmodules/compat53
https://github.com/lunarmodules/lua-compat-5.3
"
SRC_URI="https://github.com/lunarmodules/${MY_PN}/archive/v${PV}.tar.gz -> lua-${P}.tar.gz"
S="${WORKDIR}/${MY_PN}-${PV}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64"
DEPEND="${LUA_DEPS}"
RDEPEND="${DEPEND}"
ROCKSPEC="rockspecs/${P}-1.rockspec"
src_prepare() {
default
lua_copy_sources
}
rockspec_foreach_build_module() {
local rockspec="${1:?}"
local func="${2:?}"
[ -f "${rockspec}" ] || die "'${rockspec}' file does not exist"
local old_IFS="${IFS}"
IFS=$'\n'
local lines=($(
edo "${LUA}" -e '
dofile("'"${rockspec}"'");
for dst, src in pairs(build.modules) do
print(dst, src)
end
'
))
IFS="${old_IFS}"
local line=''
for line in "${lines[@]}"; do
IFS=$'\t'
set -- ${line}
IFS="${old_IFS}"
"${func}" "${1:?}" "${2:?}" || die "${func} failed: ${?}"
done
}
rockspec_compile_c_module() {
local dst="${1:?}"
local src="${2:?}"
case "${src}" in
*.c)
edo "${CC}" -shared -o "${dst#*.}.so" \
${CPPFLAGS} \
${CFLAGS} $(lua_get_CFLAGS) \
"${src}" \
${LDFLAGS} $(lua_get_LIBS)
;;
esac
}
lua_src_compile() {
(
cd "${BUILD_DIR}" || die
filter-flags -ffinite-math-only
rockspec_foreach_build_module "${ROCKSPEC}" rockspec_compile_c_module ||
die "rockspec_foreach_build_module failed"
)
}
src_compile() {
lua_foreach_impl tc-env_build lua_src_compile
}
rockspec_install_module() {
local dst="${1:?}"
local src="${2:?}"
case "${src}" in
*.c)
doexe "${dst#*.}.so"
;;
*.lua)
doins "${src}"
;;
*)
die "unexpected rockspec module: '${dst}' -> '${src}'"
;;
esac
}
lua_src_install() {
(
cd "${BUILD_DIR}" || die
exeinto "$(lua_get_cmod_dir)/${PN}"
insinto "$(lua_get_lmod_dir)/${PN}"
rockspec_foreach_build_module "${ROCKSPEC}" rockspec_install_module ||
die "rockspec_foreach_build_module failed"
)
}
src_install() {
lua_foreach_impl lua_src_install
}