Skip to content

Commit

Permalink
dev-lua/mpack: migrate to lua.eclass
Browse files Browse the repository at this point in the history
Had to suppress tests for the luajit target (one of the tests
checks for memory leaks and LuaJIT does leak memory) as well as prevent
the module from being unnecessarily linked against liblua (upstream have
already fixed this, unfortunately a bump to a recent version would not be
trivial). Otherwise, simple enough.

Closes: https://bugs.gentoo.org/752906
Signed-off-by: Marek Szuba <[email protected]>
  • Loading branch information
Marek Szuba committed Nov 28, 2020
1 parent 4119516 commit 370d960
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
86 changes: 86 additions & 0 deletions dev-lua/mpack/mpack-1.0.4-r100.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

LUA_COMPAT=( lua5-{1..3} luajit )

inherit lua toolchain-funcs

DESCRIPTION="Lua bindings for libmpack"
HOMEPAGE="https://github.com/libmpack/libmpack/"
SRC_URI="https://github.com/libmpack/libmpack/archive/${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/libmpack-${PV}/binding/lua"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"

RDEPEND="${LUA_DEPS}"
DEPEND="${RDEPEND}"
BDEPEND="virtual/pkgconfig
test? (
${RDEPEND}
dev-lua/busted[${LUA_USEDEP}]
)"

lua_src_compile() {
# Make sure we have got no leftovers from other implementations.
# There is no 'clean' target in the makefile, though.
rm -f ${PN}.so

# We set LUA_LIB to an empty string while building version 1.0.4 because
# compiled Lua modules must not link against liblua. This has already been
# fixed upstream.
emake \
CC="$(tc-getCC)" \
USE_SYSTEM_LUA=yes \
LUA_INCLUDE="$(lua_get_CFLAGS)" \
LUA_LIB=""

# Tag the result with current implementation and move it out of the way.
mv ${PN}.so ${PN}-${ELUA}.so || die
}

src_compile() {
lua_foreach_impl lua_src_compile
}

lua_src_test() {
# "[ FAILED ] test.lua @ 279: mpack should not leak memory"
# It doesn't seem upstream actually support LuaJIT so were this up to me
# I would drop it from LUA_COMPAT, unfortunately there are packages in the
# tree which currently expect it to be supported.
if [[ ${ELUA} == "luajit" ]]; then
ewarn "Not running tests under ${ELUA} because they are known to fail"
return
fi

# The test suite must be able to find the module under its original name.
rm -f ${PN}.so
ln -s ${PN}-${ELUA}.so ${PN}.so || die
busted --lua="${ELUA}" -o gtest test.lua || die
}

src_test() {
lua_foreach_impl lua_src_test
}

lua_src_install() {
# This time we move the correct library file back in order not to risk
# confusing make with symlinks.
mv ${PN}-${ELUA}.so ${PN}.so || die

emake \
DESTDIR="${ED}" \
USE_SYSTEM_LUA=yes \
LUA_CMOD_INSTALLDIR="$(lua_get_cmod_dir)" \
install
}

src_install() {
lua_foreach_impl lua_src_install
einstalldocs
}
1 change: 1 addition & 0 deletions profiles/package.mask
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ dev-lua/luacrypto
>=dev-lua/luv-1.32.0.0-r100
>=dev-lua/mediator_lua-1.1.2_p0-r100
>=dev-lua/messagepack-0.3.2-r100
>=dev-lua/mpack-1.0.4-r100
>=dev-lua/penlight-1.9.2-r100
>=dev-lua/say-1.3_p1-r100
>=dev-lua/toluapp-1.0.93_p20190513-r100
Expand Down

0 comments on commit 370d960

Please sign in to comment.