[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    [gentoo-dev] [PATCH v2 2/3] Add nginx-module.eclass
From:       jonas.licht () fem ! tu-ilmenau ! de
Date:       2021-02-28 17:36:14
Message-ID: 20210228173615.12685-3-jonas.licht () fem ! tu-ilmenau ! de
[Download RAW message or body]

From: Jonas Licht <jonas.licht@fem.tu-ilmenau.de>

Signed-off-by: Jonas Licht <jonas.licht@fem.tu-ilmenau.de>
---
 eclass/nginx-module.eclass | 72 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 eclass/nginx-module.eclass

diff --git a/eclass/nginx-module.eclass b/eclass/nginx-module.eclass
new file mode 100644
index 00000000000..d9f9bbdb89c
--- /dev/null
+++ b/eclass/nginx-module.eclass
@@ -0,0 +1,72 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: nginx-module.eclass
+# @MAINTAINER:
+# Jonas Licht <jonas.licht@gmail.com>
+# @AUTHOR:
+# Jonas Licht <jonas.licht@gmail.com>
+# @BLURB: Provide a set of functions to build nginx dynamic modules.
+# @DESCRIPTION:
+# Eclass to make dynamic nginx modules.
+# As these modules are hardly build against one nginx version we use version cut to \
indicate the nginx version too. +# The first three parts of the version must \
represent the nginx version, +# the remaining part displays the module version.
+#
+# To build a nginx module the whole nginx source code is needed,
+# therfore we set the SRC_URI to the nginx source archive.
+# The module archive must be added with SRC_URI+=
+
+case ${EAPI:-0} in
+	7) ;;
+	*) die "This eclass only supports EAPI 7" ;;
+esac
+
+# @ECLASS-VARIABLE: NGINX_PV
+# @DESCRIPTION:
+# Uses version cut of the first three parts of the version to determine the nginx \
version providing the module. +# This version is used for SRC_URI, BDPEND and \
compiling process. +NGINX_PV=$(ver_cut 1-3)
+
+# @ECLASS-VARIABLE: MODULE_PV
+# @DESCRIPTION:
+# Uses version cut to get the version of the module.
+# Variable can be used for SRC_URI of the nginx module.
+MODULE_PV=$(ver_cut 4-)
+
+BDPEND="=www-servers/nginx-${NGINX_PV}:="
+SRC_URI="https://nginx.org/download/nginx-${NGINX_PV}.tar.gz"
+
+S="${WORKDIR}/nginx-${NGINX_PV}"
+
+EXPORT_FUNCTIONS src_configure src_compile src_install
+
+# @FUNCTION: nginx-module_src_configure
+# @USAGE: [additional-args]
+# @DESCRIPTION:
+# Parses the configure from the original nginx binary by exicution 'nginx -V' and \
adds the package as dynamic module. +nginx-module_src_configure() {
+	if [ $(grep -c "\.[[:space:]]auto/module" "${WORKDIR}/${PN}-${MODULE_PV}/config") \
-eq 0 ]; then +		die "module uses old unsupported static config file syntax: \
https://www.nginx.com/resources/wiki/extending/converting/" +	fi
+	#grep nginx configure from nginx -V add drop all other external modules
+	NGINX_ORIGIN_CONFIGURE=$(nginx -V 2>&1 | grep "configure arguments:" | cut -d: -f2 \
| sed "s/--add-module=\([^\s]\)*\s/ /") +	./configure ${NGINX_ORIGIN_CONFIGURE} \
--add-dynamic-module="../${PN}-${MODULE_PV}" "$@" || die "configure failed" +}
+
+# @FUNCTION: nginx-module_src_compile
+# @USAGE: [additional-args]
+# @DESCRIPTION:
+# Runs 'make modules' to only build our package module.
+nginx-module_src_compile() {
+	emake modules "$@"
+}
+
+# @FUNCTION: nginx-module_src_install
+# @DESCRIPTION:
+# Parses the module config file to get the so file name and install the shared \
object file to '/usr/$(get_libdir)/nginx/modules' +nginx-module_src_install() {
+	NGINX_MODULE_NAME=$(grep ${WORKDIR}/${PN}-${MODULE_PV}/config -e "ngx_addon_name" | \
cut -d= -f2) +	exeinto /usr/$(get_libdir)/nginx/modules
+	doexe ${S}/objs/${NGINX_MODULE_NAME}.so
+}
-- 
2.26.2


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic