This package requires two environmental variables being set in order to use Lua: LUAJIT_LIB and LUAJIT_INC. The former is set to /usr/${libdir}, for the latter one, the ebuild uses pkg-config directly to get the include directory.
Signed-off-by: Zurab Kvachadze <zurabid2...@gmail.com> --- www-nginx/ngx-lua-module/Manifest | 1 + ...lua-module-0.10.27-always-define-NDK.patch | 29 ++++++++ ...0.10.27-do-not-log-non-openresty-lua.patch | 41 ++++++++++++ .../ngx-lua-module}/metadata.xml | 8 ++- .../ngx-lua-module-0.10.27.ebuild | 67 +++++++++++++++++++ 5 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 www-nginx/ngx-lua-module/Manifest create mode 100644 www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-always-define-NDK.patch create mode 100644 www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-do-not-log-non-openresty-lua.patch copy {dev-lua/lua-resty-lrucache => www-nginx/ngx-lua-module}/metadata.xml (56%) create mode 100644 www-nginx/ngx-lua-module/ngx-lua-module-0.10.27.ebuild diff --git a/www-nginx/ngx-lua-module/Manifest b/www-nginx/ngx-lua-module/Manifest new file mode 100644 index 000000000000..245ccaf878bd --- /dev/null +++ b/www-nginx/ngx-lua-module/Manifest @@ -0,0 +1 @@ +DIST ngx-lua-module-0.10.27.tar.gz 758952 BLAKE2B 3c0a85fac3452a50eb4009405d7a8f76262d3d36c844139ce3eb829eefef098641b161e0ff27487332fa21269667a838bd2d913cea1c4b183cd9cad87ac76783 SHA512 ff1f7bb593a91402453709d63c95b304ef14d805f5a7f8e6689e95b93522823b80f76baced70664c9f46e9fc8da3941f153b9cf5d1dfbabfb0ee9d9bcc8151b4 diff --git a/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-always-define-NDK.patch b/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-always-define-NDK.patch new file mode 100644 index 000000000000..309670bcb3d5 --- /dev/null +++ b/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-always-define-NDK.patch @@ -0,0 +1,29 @@ +From e156f14b262ec3dce32e87dfeb0dabce4821646c Mon Sep 17 00:00:00 2001 +From: Zurab Kvachadze <zurabid2...@gmail.com> +Date: Sun, 16 Feb 2025 22:51:03 +0100 +Subject: [PATCH] src/ngx_http_lua_common.h: always #define NDK + +In Gentoo, NDK is a mandatory dependency. Make life easier for everybody +and just define the NDK macro. + +Signed-off-by: Zurab Kvachadze <zurabid2...@gmail.com> +--- + src/ngx_http_lua_common.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/ngx_http_lua_common.h b/src/ngx_http_lua_common.h +index cc2d36a3..42a7df6b 100644 +--- a/src/ngx_http_lua_common.h ++++ b/src/ngx_http_lua_common.h +@@ -23,6 +23,8 @@ + #include <lualib.h> + #include <lauxlib.h> + ++#define NDK 1 ++ + + #if defined(NDK) && NDK + #include <ndk.h> +-- +2.45.3 + diff --git a/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-do-not-log-non-openresty-lua.patch b/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-do-not-log-non-openresty-lua.patch new file mode 100644 index 000000000000..98c5967da149 --- /dev/null +++ b/www-nginx/ngx-lua-module/files/ngx-lua-module-0.10.27-do-not-log-non-openresty-lua.patch @@ -0,0 +1,41 @@ +From 87a7e04982a2d2963b10965304d822554d1ec848 Mon Sep 17 00:00:00 2001 +From: Zurab Kvachadze <zurabid2...@gmail.com> +Date: Tue, 11 Feb 2025 10:57:14 +0100 +Subject: [PATCH] Do not log error if non-OpenResty Lua is used + +Users are perfectly capable of reading the recommendation on README and +deciding themselves which distribution of Lua to use. There is no need +to scream at the users each time NGINX is started. + +Signed-off-by: Zurab Kvachadze <zurabid2...@gmail.com> +--- + src/ngx_http_lua_module.c | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/src/ngx_http_lua_module.c b/src/ngx_http_lua_module.c +index 63367f46..4ddf7b21 100644 +--- a/src/ngx_http_lua_module.c ++++ b/src/ngx_http_lua_module.c +@@ -895,18 +895,7 @@ ngx_http_lua_init(ngx_conf_t *cf) + if (lmcf->lua == NULL) { + dd("initializing lua vm"); + +-#ifndef OPENRESTY_LUAJIT +- if (ngx_process != NGX_PROCESS_SIGNALLER && !ngx_test_config) { +- ngx_log_error(NGX_LOG_ALERT, cf->log, 0, +- "detected a LuaJIT version which is not OpenResty's" +- "; many optimizations will be disabled and " +- "performance will be compromised (see " +- "https://github.com/openresty/luajit2 for " +- "OpenResty's LuaJIT or, even better, consider using " +- "the OpenResty releases from https://openresty.org/" +- "en/download.html)"); +- } +-#else ++#ifdef OPENRESTY_LUAJIT + # if !defined(HAVE_LUA_RESETTHREAD) + ngx_log_error(NGX_LOG_ALERT, cf->log, 0, + "detected an old version of OpenResty's LuaJIT missing " +-- +2.45.3 + diff --git a/dev-lua/lua-resty-lrucache/metadata.xml b/www-nginx/ngx-lua-module/metadata.xml similarity index 56% copy from dev-lua/lua-resty-lrucache/metadata.xml copy to www-nginx/ngx-lua-module/metadata.xml index 81d1558075b9..42a518e970f5 100644 --- a/dev-lua/lua-resty-lrucache/metadata.xml +++ b/www-nginx/ngx-lua-module/metadata.xml @@ -10,10 +10,12 @@ <name>Proxy Maintainers</name> </maintainer> <longdescription> - This library implements a simple LRU cache for OpenResty and the ngx_lua module. + The ngx-lua module embeds LuaJIT 2.0/2.1 into NGINX. By leveraging NGINX's subrequests, this + module allows the integration of the powerful Lua threads (known as Lua "coroutines") into + the NGINX event model. </longdescription> <upstream> - <bugs-to>https://github.com/openresty/lua-resty-lrucache/issues</bugs-to> - <remote-id type="github">openresty/lua-resty-lrucache</remote-id> + <bugs-to>https://github.com/openresty/lua-nginx-module/issues</bugs-to> + <remote-id type="github">openresty/lua-nginx-module</remote-id> </upstream> </pkgmetadata> diff --git a/www-nginx/ngx-lua-module/ngx-lua-module-0.10.27.ebuild b/www-nginx/ngx-lua-module/ngx-lua-module-0.10.27.ebuild new file mode 100644 index 000000000000..1f29f1fc2be8 --- /dev/null +++ b/www-nginx/ngx-lua-module/ngx-lua-module-0.10.27.ebuild @@ -0,0 +1,67 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Upstream supports luajit only. +LUA_COMPAT=( luajit ) + +MY_PN="lua-nginx-module" +NGINX_MOD_S="${WORKDIR}/${MY_PN}-${PV}" + +NGINX_MOD_LINK_MODULES=( www-nginx/ngx_devel_kit ) + +inherit lua-single toolchain-funcs nginx-module + +DESCRIPTION="A module embedding the power of Lua into NGINX HTTP Servers" +HOMEPAGE="https://github.com/openresty/lua-nginx-module" +SRC_URI=" + https://github.com/openresty/lua-nginx-module/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz +" + +LICENSE="BSD-2" +SLOT="0" + +IUSE="+ssl" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +# Tests require too much manual patching to get working. +RESTRICT="test" + +BDEPEND="virtual/pkgconfig" +DEPEND="${LUA_DEPS}" +# ngx-lua-module does not use OpenSSL by itself, rather some of the modules, +# like lua-resty-string, use SHA functions through LuaJIT's FFI. +DEPEND+=" ssl? ( dev-libs/openssl:= )" +RDEPEND=" + ${DEPEND} + dev-lua/lua-resty-core[${LUA_SINGLE_USEDEP}] + dev-lua/lua-resty-lrucache[${LUA_SINGLE_USEDEP}] +" + +PATCHES=( + "${FILESDIR}/${PN}-0.10.27-always-define-NDK.patch" + "${FILESDIR}/${PN}-0.10.27-do-not-log-non-openresty-lua.patch" +) + +src_configure() { + # The config script does some manual auto-detection, which only looks for + # luajit-2.0, so we set the necessary variables manually. + export LUAJIT_LIB="${ESYSROOT}/usr/$(get_libdir)" + export LUAJIT_INC="$(lua_get_include_dir)" + + # Link to dev-libs/openssl so that SHA functions are available for Lua + # modules like lua-resty-string. + use ssl && ngx_mod_append_libs "$("$(tc-getPKG_CONFIG)" --libs libcrypto)" + + nginx-module_src_configure +} + +src_install() { + nginx-module_src_install + + # Install headers from 'src/api' into '/usr/include/nginx/modules'. + insinto /usr/include/nginx/modules + find "${NGINX_MOD_S}/src/api" -type f -name '*.h' -print0 | xargs -0 doins + assert "find failed" +} -- 2.45.3