summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2020-11-28 16:27:10 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2020-11-28 16:28:14 -0800
commit0e95c6e912a781a82fa7394ca5a4aa0dc92b2b8b (patch)
tree7a84296851fc3c7b6f52077d88204d7f7d9d5c11
parentprofiles: add slotted-lua dev-lua/lgi to package.mask (diff)
downloadgentoo-0e95c6e9.tar.gz
gentoo-0e95c6e9.tar.bz2
gentoo-0e95c6e9.zip
dev-lua/lgi: revbump with slotted lua support
Builds & passes all src_test runs with Xvfb on lua5.1..5.3. Not tested with luajit, but presumed to work. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r--dev-lua/lgi/lgi-0.9.2-r100.ebuild124
1 files changed, 124 insertions, 0 deletions
diff --git a/dev-lua/lgi/lgi-0.9.2-r100.ebuild b/dev-lua/lgi/lgi-0.9.2-r100.ebuild
new file mode 100644
index 000000000000..908e5804dfbd
--- /dev/null
+++ b/dev-lua/lgi/lgi-0.9.2-r100.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+VIRTUALX_REQUIRED="manual"
+LUA_COMPAT=( lua5-{1..3} luajit )
+
+inherit lua eutils toolchain-funcs flag-o-matic virtualx
+
+DESCRIPTION="Lua bindings using gobject-introspection"
+HOMEPAGE="https://github.com/pavouk/lgi"
+SRC_URI="https://github.com/pavouk/lgi/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+IUSE="examples test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+BDEPEND="${LUA_DEPS}"
+RDEPEND="${LUA_DEPS}
+ dev-libs/gobject-introspection
+ dev-libs/glib
+ dev-libs/libffi:0="
+DEPEND="${RDEPEND}
+ test? (
+ x11-libs/cairo[glib]
+ x11-libs/gtk+[introspection]
+ ${VIRTUALX_DEPEND}
+ )"
+
+lua_src_prepare() {
+ pushd "${BUILD_DIR}" || die
+ # The Makefile & several source files use the LUA version as part of the
+ # direct filename, dynamically created, and we respect that.
+ _slug=${ELUA}
+ _slug=${_slug/.}
+ _slug=${_slug/-}
+ _slug=${_slug/_}
+
+ # Makefile: CORE = corelgilua51.so (and similar lines)
+ sed -r -i \
+ -e "/^CORE\>/s,lua5.,${_slug},g" \
+ lgi/Makefile \
+ || die "sed failed"
+
+ # ./lgi/core.lua:local core = require 'lgi.corelgilua51'
+ # ./lgi/core.c:luaopen_lgi_corelgilua51 (lua_State* L)
+ sed -r -i \
+ -e "/lgi.corelgilua5./s,lua5.,${_slug},g" \
+ lgi/core.lua \
+ lgi/core.c \
+ || die "sed failed"
+
+ # Verify the change as it's important!
+ for f in lgi/core.lua lgi/core.c lgi/Makefile ; do
+ grep -sq "corelgi${_slug}" "${f}" || die "Failed to sed .lua & .c for corelgi${_slug}: ${f}"
+ done
+
+ # Cleanup
+ unset _slug
+ popd
+}
+
+src_prepare() {
+ default
+ lua_copy_sources
+ lua_foreach_impl lua_src_prepare
+}
+
+lgi_emake_wrapper() {
+ emake \
+ CC="$(tc-getCC)" \
+ COPTFLAGS="-Wall -Wextra ${CFLAGS}" \
+ LIBFLAG="-shared ${LDFLAGS}" \
+ LUA_CFLAGS="$(lua_get_CFLAGS)" \
+ LUA="${LUA}" \
+ LUA_VERSION="${ELUA#lua}" \
+ LUA_LIBDIR="$(lua_get_cmod_dir)" \
+ LUA_SHAREDIR="$(lua_get_lmod_dir)" \
+ "$@"
+}
+
+lua_src_compile() {
+ pushd "${BUILD_DIR}" || die
+ lgi_emake_wrapper all
+ popd
+}
+
+src_compile() {
+ lua_foreach_impl lua_src_compile
+}
+
+lua_src_test() {
+ pushd "${BUILD_DIR}" || die
+ virtx \
+ lgi_emake_wrapper \
+ check
+ popd
+}
+
+src_test() {
+ lua_foreach_impl lua_src_test
+}
+
+lua_src_install() {
+ pushd "${BUILD_DIR}" || die
+ lgi_emake_wrapper \
+ DESTDIR="${D}" \
+ install
+ popd
+}
+
+src_install() {
+ lua_foreach_impl lua_src_install
+ docompress -x /usr/share/doc/${PF}
+ dodoc README.md
+ dodoc -r docs/*
+ if use examples; then
+ dodoc -r samples
+ fi
+}