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


Reply via email to