summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzamat H. Hackimov <azamat.hackimov@gmail.com>2021-10-19 01:29:34 +0300
committerConrad Kostecki <conikost@gentoo.org>2021-10-19 21:55:44 +0200
commit634e9eb09ef7db117ac05ad24926a6078eb07170 (patch)
treeac10fe9505079d5a01d0024a3c8aa1e953acfc6a
parentnet-libs/mbedtls: Security cleanup (diff)
downloadgentoo-634e9eb09ef7db117ac05ad24926a6078eb07170.tar.gz
gentoo-634e9eb09ef7db117ac05ad24926a6078eb07170.tar.bz2
gentoo-634e9eb09ef7db117ac05ad24926a6078eb07170.zip
dev-lua/luasocket: publish API and sonames
Add patches to publish API and sonames for external linking (see #730352 for rationale). Patches available at https://github.com/winterheart/luasocket/tree/public-api Closes: https://github.com/gentoo/gentoo/pull/22631 Bug: https://bugs.gentoo.org/730352 Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Azamat H. Hackimov <azamat.hackimov@gmail.com> Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
-rw-r--r--dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_makefile.patch89
-rw-r--r--dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_publish_API.patch294
-rw-r--r--dev-lua/luasocket/luasocket-3.0_rc1_p20200328-r103.ebuild90
3 files changed, 473 insertions, 0 deletions
diff --git a/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_makefile.patch b/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_makefile.patch
new file mode 100644
index 000000000000..c6e25d7969f6
--- /dev/null
+++ b/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_makefile.patch
@@ -0,0 +1,89 @@
+From 49f935a774661d5d0d9b1727c2eee12d11f3b692 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Tue, 19 Oct 2021 01:13:28 +0300
+Subject: [PATCH 2/2] Fix CFLAGS and LDFLAGS options
+
+Remove CFLAGS optimization overrides, add -Wl,-soname option to LDFLAGS
+for external linking.
+---
+ src/makefile | 21 +++++++++------------
+ 1 file changed, 9 insertions(+), 12 deletions(-)
+
+diff --git a/src/makefile b/src/makefile
+index 522d378..cf4a571 100755
+--- a/src/makefile
++++ b/src/makefile
+@@ -162,7 +162,7 @@ SO_macosx=so
+ O_macosx=o
+ CC_macosx=gcc
+ DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
+-CFLAGS_macosx=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
++CFLAGS_macosx=$(LUAINC:%=-I%) $(DEF) -Wall -fno-common
+ LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
+ LD_macosx=gcc
+ SOCKET_macosx=usocket.o
+@@ -174,8 +174,7 @@ SO_linux=so
+ O_linux=o
+ CC_linux=gcc
+ DEF_linux=-DLUASOCKET_$(DEBUG)
+-CFLAGS_linux=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
+- -Wimplicit -O2 -ggdb3 -fpic
++CFLAGS_linux=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
+ LDFLAGS_linux=-O -shared -fpic -o
+ LD_linux=gcc
+ SOCKET_linux=usocket.o
+@@ -187,8 +186,7 @@ SO_freebsd=so
+ O_freebsd=o
+ CC_freebsd=gcc
+ DEF_freebsd=-DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
+-CFLAGS_freebsd=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
+- -Wimplicit -O2 -ggdb3 -fpic
++CFLAGS_freebsd=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
+ LDFLAGS_freebsd=-O -shared -fpic -o
+ LD_freebsd=gcc
+ SOCKET_freebsd=usocket.o
+@@ -200,8 +198,7 @@ SO_solaris=so
+ O_solaris=o
+ CC_solaris=gcc
+ DEF_solaris=-DLUASOCKET_$(DEBUG)
+-CFLAGS_solaris=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
+- -Wimplicit -O2 -ggdb3 -fpic
++CFLAGS_solaris=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra -Wimplicit -fpic
+ LDFLAGS_solaris=-lnsl -lsocket -lresolv -O -shared -fpic -o
+ LD_solaris=gcc
+ SOCKET_solaris=usocket.o
+@@ -214,7 +211,7 @@ O_mingw=o
+ CC_mingw=gcc
+ DEF_mingw= -DLUASOCKET_$(DEBUG) \
+ -DWINVER=0x0501
+-CFLAGS_mingw=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
++CFLAGS_mingw=$(LUAINC:%=-I%) $(DEF) -Wall -fno-common
+ LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
+ LD_mingw=gcc
+ SOCKET_mingw=wsocket.o
+@@ -396,18 +393,18 @@ none:
+ all: $(SOCKET_SO) $(MIME_SO)
+
+ $(SOCKET_SO): $(SOCKET_OBJS)
+- $(LD) $(SOCKET_OBJS) $(LDFLAGS)$@
++ $(LD) $(SOCKET_OBJS) -Wl,-soname,socket/core.so $(LDFLAGS)$@
+
+ $(MIME_SO): $(MIME_OBJS)
+- $(LD) $(MIME_OBJS) $(LDFLAGS)$@
++ $(LD) $(MIME_OBJS) -Wl,-soname,mime/core.so $(LDFLAGS)$@
+
+ all-unix: all $(UNIX_SO) $(SERIAL_SO)
+
+ $(UNIX_SO): $(UNIX_OBJS)
+- $(LD) $(UNIX_OBJS) $(LDFLAGS)$@
++ $(LD) $(UNIX_OBJS) -Wl,-soname,socket/unix.so $(LDFLAGS)$@
+
+ $(SERIAL_SO): $(SERIAL_OBJS)
+- $(LD) $(SERIAL_OBJS) $(LDFLAGS)$@
++ $(LD) $(SERIAL_OBJS) -Wl,-soname,socket/serial.so $(LDFLAGS)$@
+
+ install:
+ $(INSTALL_DIR) $(INSTALL_TOP_LDIR)
+--
+2.32.0
+
diff --git a/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_publish_API.patch b/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_publish_API.patch
new file mode 100644
index 000000000000..874f0eb26a7c
--- /dev/null
+++ b/dev-lua/luasocket/files/luasocket-3.0_rc1_p20200328_publish_API.patch
@@ -0,0 +1,294 @@
+From 88cefd1ff8e70c10661c81b96baf5da1fc49feef Mon Sep 17 00:00:00 2001
+From: Jonas Wielicki <j.wielicki@sotecware.net>
+Date: Wed, 31 Jul 2013 14:25:23 +0200
+Subject: [PATCH 1/2] Make the API more accessible by publishing constants
+
+---
+ src/buffer.h | 15 ++++++++-------
+ src/common.h | 16 ++++++++++++++++
+ src/io.h | 7 ++++---
+ src/socket.h | 51 ++++++++++++++++++++++++++-------------------------
+ src/timeout.h | 19 ++++++++++---------
+ src/usocket.c | 6 ------
+ src/usocket.h | 16 ++++++++++++++++
+ src/wsocket.c | 4 ----
+ src/wsocket.h | 5 +++++
+ 9 files changed, 85 insertions(+), 54 deletions(-)
+ create mode 100644 src/common.h
+
+diff --git a/src/buffer.h b/src/buffer.h
+index a0901fc..66acf09 100644
+--- a/src/buffer.h
++++ b/src/buffer.h
+@@ -18,6 +18,7 @@
+ #include "luasocket.h"
+ #include "io.h"
+ #include "timeout.h"
++#include "common.h"
+
+ /* buffer size in bytes */
+ #define BUF_SIZE 8192
+@@ -37,13 +38,13 @@ typedef t_buffer *p_buffer;
+ #pragma GCC visibility push(hidden)
+ #endif
+
+-int buffer_open(lua_State *L);
+-void buffer_init(p_buffer buf, p_io io, p_timeout tm);
+-int buffer_meth_getstats(lua_State *L, p_buffer buf);
+-int buffer_meth_setstats(lua_State *L, p_buffer buf);
+-int buffer_meth_send(lua_State *L, p_buffer buf);
+-int buffer_meth_receive(lua_State *L, p_buffer buf);
+-int buffer_isempty(p_buffer buf);
++LUASOCKET_API int buffer_open(lua_State *L);
++LUASOCKET_API void buffer_init(p_buffer buf, p_io io, p_timeout tm);
++LUASOCKET_API int buffer_meth_getstats(lua_State *L, p_buffer buf);
++LUASOCKET_API int buffer_meth_setstats(lua_State *L, p_buffer buf);
++LUASOCKET_API int buffer_meth_send(lua_State *L, p_buffer buf);
++LUASOCKET_API int buffer_meth_receive(lua_State *L, p_buffer buf);
++LUASOCKET_API int buffer_isempty(p_buffer buf);
+
+ #ifndef _WIN32
+ #pragma GCC visibility pop
+diff --git a/src/common.h b/src/common.h
+new file mode 100644
+index 0000000..9bb0666
+--- /dev/null
++++ b/src/common.h
+@@ -0,0 +1,16 @@
++#ifndef LUASOCKET_COMMON_H
++#define LUASOCKET_COMMON_H
++
++#ifndef LUASOCKET_API
++#define LUASOCKET_API extern
++#endif
++
++#ifndef UNIX_API
++#define UNIX_API extern
++#endif
++
++#ifndef MIME_API
++#define MIME_API extern
++#endif
++
++#endif
+diff --git a/src/io.h b/src/io.h
+index b8a54df..6e399fb 100644
+--- a/src/io.h
++++ b/src/io.h
+@@ -14,13 +14,14 @@
+ \*=========================================================================*/
+ #include "luasocket.h"
+ #include "timeout.h"
++#include "common.h"
+
+ /* IO error codes */
+ enum {
+ IO_DONE = 0, /* operation completed successfully */
+ IO_TIMEOUT = -1, /* operation timed out */
+ IO_CLOSED = -2, /* the connection has been closed */
+- IO_UNKNOWN = -3
++ IO_UNKNOWN = -3
+ };
+
+ /* interface to error message function */
+@@ -60,8 +61,8 @@ typedef t_io *p_io;
+ #pragma GCC visibility push(hidden)
+ #endif
+
+-void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx);
+-const char *io_strerror(int err);
++LUASOCKET_API void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx);
++LUASOCKET_API const char *io_strerror(int err);
+
+ #ifndef _WIN32
+ #pragma GCC visibility pop
+diff --git a/src/socket.h b/src/socket.h
+index e541f27..e0b6432 100644
+--- a/src/socket.h
++++ b/src/socket.h
+@@ -10,6 +10,7 @@
+ * creates a interface compatible with the io.h module.
+ \*=========================================================================*/
+ #include "io.h"
++#include "common.h"
+
+ /*=========================================================================*\
+ * Platform specific compatibilization
+@@ -40,31 +41,31 @@ typedef struct sockaddr SA;
+ #pragma GCC visibility push(hidden)
+ #endif
+
+-int socket_waitfd(p_socket ps, int sw, p_timeout tm);
+-int socket_open(void);
+-int socket_close(void);
+-void socket_destroy(p_socket ps);
+-int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm);
+-int socket_create(p_socket ps, int domain, int type, int protocol);
+-int socket_bind(p_socket ps, SA *addr, socklen_t addr_len);
+-int socket_listen(p_socket ps, int backlog);
+-void socket_shutdown(p_socket ps, int how);
+-int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm);
+-int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm);
+-int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
+-int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm);
+-int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
+-int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm);
+-int socket_write(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
+-int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
+-void socket_setblocking(p_socket ps);
+-void socket_setnonblocking(p_socket ps);
+-int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp);
+-int socket_gethostbyname(const char *addr, struct hostent **hp);
+-const char *socket_hoststrerror(int err);
+-const char *socket_strerror(int err);
+-const char *socket_ioerror(p_socket ps, int err);
+-const char *socket_gaistrerror(int err);
++LUASOCKET_API int socket_waitfd(p_socket ps, int sw, p_timeout tm);
++LUASOCKET_API int socket_open(void);
++LUASOCKET_API int socket_close(void);
++LUASOCKET_API void socket_destroy(p_socket ps);
++LUASOCKET_API int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm);
++LUASOCKET_API int socket_create(p_socket ps, int domain, int type, int protocol);
++LUASOCKET_API int socket_bind(p_socket ps, SA *addr, socklen_t addr_len);
++LUASOCKET_API int socket_listen(p_socket ps, int backlog);
++LUASOCKET_API void socket_shutdown(p_socket ps, int how);
++LUASOCKET_API int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm);
++LUASOCKET_API int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm);
++LUASOCKET_API int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
++LUASOCKET_API int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm);
++LUASOCKET_API int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
++LUASOCKET_API int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm);
++LUASOCKET_API int socket_write(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm);
++LUASOCKET_API int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
++LUASOCKET_API void socket_setblocking(p_socket ps);
++LUASOCKET_API void socket_setnonblocking(p_socket ps);
++LUASOCKET_API int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp);
++LUASOCKET_API int socket_gethostbyname(const char *addr, struct hostent **hp);
++LUASOCKET_API const char *socket_hoststrerror(int err);
++LUASOCKET_API const char *socket_strerror(int err);
++LUASOCKET_API const char *socket_ioerror(p_socket ps, int err);
++LUASOCKET_API const char *socket_gaistrerror(int err);
+
+ #ifndef _WIN32
+ #pragma GCC visibility pop
+diff --git a/src/timeout.h b/src/timeout.h
+index 9e5250d..b36bd58 100644
+--- a/src/timeout.h
++++ b/src/timeout.h
+@@ -5,6 +5,7 @@
+ * LuaSocket toolkit
+ \*=========================================================================*/
+ #include "luasocket.h"
++#include "common.h"
+
+ /* timeout control structure */
+ typedef struct t_timeout_ {
+@@ -18,18 +19,18 @@ typedef t_timeout *p_timeout;
+ #pragma GCC visibility push(hidden)
+ #endif
+
+-void timeout_init(p_timeout tm, double block, double total);
+-double timeout_get(p_timeout tm);
+-double timeout_getstart(p_timeout tm);
+-double timeout_getretry(p_timeout tm);
+-p_timeout timeout_markstart(p_timeout tm);
++LUASOCKET_API void timeout_init(p_timeout tm, double block, double total);
++LUASOCKET_API double timeout_get(p_timeout tm);
++LUASOCKET_API double timeout_getstart(p_timeout tm);
++LUASOCKET_API double timeout_getretry(p_timeout tm);
++LUASOCKET_API p_timeout timeout_markstart(p_timeout tm);
+
+-double timeout_gettime(void);
++LUASOCKET_API double timeout_gettime(void);
+
+-int timeout_open(lua_State *L);
++LUASOCKET_API int timeout_open(lua_State *L);
+
+-int timeout_meth_settimeout(lua_State *L, p_timeout tm);
+-int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
++LUASOCKET_API int timeout_meth_settimeout(lua_State *L, p_timeout tm);
++LUASOCKET_API int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
+
+ #ifndef _WIN32
+ #pragma GCC visibility pop
+diff --git a/src/usocket.c b/src/usocket.c
+index acfe186..7490df5 100644
+--- a/src/usocket.c
++++ b/src/usocket.c
+@@ -20,9 +20,6 @@
+ #ifndef SOCKET_SELECT
+ #include <sys/poll.h>
+
+-#define WAITFD_R POLLIN
+-#define WAITFD_W POLLOUT
+-#define WAITFD_C (POLLIN|POLLOUT)
+ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ int ret;
+ struct pollfd pfd;
+@@ -41,9 +38,6 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ }
+ #else
+
+-#define WAITFD_R 1
+-#define WAITFD_W 2
+-#define WAITFD_C (WAITFD_R|WAITFD_W)
+
+ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ int ret;
+diff --git a/src/usocket.h b/src/usocket.h
+index 45f2f99..ca67c95 100644
+--- a/src/usocket.h
++++ b/src/usocket.h
+@@ -56,4 +56,20 @@ typedef struct sockaddr_storage t_sockaddr_storage;
+
+ #define SOCKET_INVALID (-1)
+
++#ifndef SOCKET_SELECT
++#include <sys/poll.h>
++
++#define WAITFD_R POLLIN
++#define WAITFD_W POLLOUT
++#define WAITFD_C (POLLIN|POLLOUT)
++
++#else
++
++#define WAITFD_R 1
++#define WAITFD_W 2
++#define WAITFD_C (WAITFD_R|WAITFD_W)
++
++#endif
++
++
+ #endif /* USOCKET_H */
+diff --git a/src/wsocket.c b/src/wsocket.c
+index 20da330..6101dd6 100755
+--- a/src/wsocket.c
++++ b/src/wsocket.c
+@@ -42,10 +42,6 @@ int socket_close(void) {
+ /*-------------------------------------------------------------------------*\
+ * Wait for readable/writable/connected socket with timeout
+ \*-------------------------------------------------------------------------*/
+-#define WAITFD_R 1
+-#define WAITFD_W 2
+-#define WAITFD_E 4
+-#define WAITFD_C (WAITFD_E|WAITFD_W)
+
+ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ int ret;
+diff --git a/src/wsocket.h b/src/wsocket.h
+index 3986640..55ab0a9 100644
+--- a/src/wsocket.h
++++ b/src/wsocket.h
+@@ -30,4 +30,9 @@ typedef t_socket *p_socket;
+ #define AI_NUMERICSERV (0)
+ #endif
+
++#define WAITFD_R 1
++#define WAITFD_W 2
++#define WAITFD_E 4
++#define WAITFD_C (WAITFD_E|WAITFD_W)
++
+ #endif /* WSOCKET_H */
+--
+2.32.0
+
diff --git a/dev-lua/luasocket/luasocket-3.0_rc1_p20200328-r103.ebuild b/dev-lua/luasocket/luasocket-3.0_rc1_p20200328-r103.ebuild
new file mode 100644
index 000000000000..6011ad7d5976
--- /dev/null
+++ b/dev-lua/luasocket/luasocket-3.0_rc1_p20200328-r103.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+EGIT_COMMIT="5b18e475f38fcf28429b1cc4b17baee3b9793a62"
+LUA_COMPAT=( lua5-{1..4} luajit )
+MY_P="${PN}-${EGIT_COMMIT}"
+
+inherit lua toolchain-funcs
+
+DESCRIPTION="Networking support library for the Lua language"
+HOMEPAGE="
+ http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/
+ https://github.com/diegonehab/luasocket
+"
+SRC_URI="https://github.com/diegonehab/${PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+RESTRICT="test"
+
+RDEPEND="${LUA_DEPS}"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+HTML_DOCS="doc/."
+
+PATCHES=(
+ "${FILESDIR}/${P}_publish_API.patch"
+ "${FILESDIR}/${P}_makefile.patch"
+)
+
+src_prepare() {
+ default
+ lua_copy_sources
+}
+
+lua_src_compile() {
+ pushd "${BUILD_DIR}" || die
+
+ local myemakeargs=(
+ "CC=$(tc-getCC)"
+ "LD=$(tc-getCC)"
+ "LUAINC_linux=$(lua_get_include_dir)"
+ "LUAV=${ELUA}"
+ "MIME_V=1.0.3-${ELUA}"
+ "MYCFLAGS=${CFLAGS}"
+ "MYLDFLAGS=${LDFLAGS}"
+ "SOCKET_V=3.0-rc1-${ELUA}"
+ )
+
+ emake "${myemakeargs[@]}" all
+
+ popd
+}
+
+src_compile() {
+ lua_foreach_impl lua_src_compile
+}
+
+lua_src_install() {
+ pushd "${BUILD_DIR}" || die
+
+ local myemakeargs=(
+ "CDIR=$(lua_get_cmod_dir)"
+ "DESTDIR=${ED}"
+ "LDIR=$(lua_get_lmod_dir)"
+ "LUAPREFIX_linux="
+ "MIME_V=1.0.3-${ELUA}"
+ "SOCKET_V=3.0-rc1-${ELUA}"
+ )
+
+ emake "${myemakeargs[@]}" install
+ emake "${myemakeargs[@]}" install-unix
+
+ insinto "$(lua_get_include_dir)"/luasocket
+ doins src/*.h
+
+ popd
+}
+
+src_install() {
+ lua_foreach_impl lua_src_install
+
+ einstalldocs
+}