From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 2DF2B1382C5 for ; Sun, 14 Feb 2021 17:56:38 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 337B9E0971; Sun, 14 Feb 2021 17:56:35 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id ED136E095D for ; Sun, 14 Feb 2021 17:56:34 +0000 (UTC) Message-ID: <6edb60da73d53a7e04f1b76dc4c16cba5e042d43.camel@gentoo.org> Subject: Re: [gentoo-dev] [PATCH 2/3] Add nginx-module.eclass From: =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?= To: gentoo-dev@lists.gentoo.org Cc: Jonas Licht Date: Sun, 14 Feb 2021 18:56:27 +0100 In-Reply-To: <20210214162035.16786-3-jonas.licht@fem.tu-ilmenau.de> References: <20210214162035.16786-1-jonas.licht@fem.tu-ilmenau.de> <20210214162035.16786-3-jonas.licht@fem.tu-ilmenau.de> Organization: Gentoo Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.3 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Archives-Salt: 92eb5a0a-f390-4b76-bf67-cf083586b571 X-Archives-Hash: be7b9b4730eefd79b4ad6ca3ba4ac69a On Sun, 2021-02-14 at 17:20 +0100, jonas.licht@fem.tu-ilmenau.de wrote: > From: Jonas Licht > > Signed-off-by: Jonas Licht > --- >  eclass/nginx-module.eclass | 73 ++++++++++++++++++++++++++++++++++++++ >  1 file changed, 73 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..178982af285 > --- /dev/null > +++ b/eclass/nginx-module.eclass > @@ -0,0 +1,73 @@ > +# Copyright 2021 Gentoo Authors > +# Distributed under the terms of the GNU General Public License v2 > + > +# @ECLASS: nginx-module.eclass > +# @MAINTAINER: > +# Jonas Licht > +# @AUTHOR: > +# Jonas Licht > +# @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: NGX_PV It seems you've used tab instead of space here. Also is there any reason to use 'NGX' instead of 'NGINX'? This doesn't seem to save much. > +# @DESCRIPTION: > +# Uses version cut of the first three parts of the version to determine the proposed nginx version. 'proposed nginx version' sounds weird. Maybe 'nginx version providing the module' or sth like that. > +# This version is used for SRC_URI, BDPEND and compiling process. > +NGX_PV=$(ver_cut 1-3) > + > +# @ECLASS-VARIABLE: MODULE_PV > +# @DESCRIPTION: > +# Uses version cut to get the version of the module. > +# Variable can uses for SRC_URI. This seems to entirely miss the point that it's used pretty much everywhere. > +MODULE_PV=$(ver_cut 4-) > + > +BDPEND="=www-servers/nginx-${NGX_PV}:=" > +SRC_URI="https://nginx.org/download/nginx-${NGX_PV}.tar.gz > + " Why the extra newline + indent? > + > +S="${WORKDIR}/nginx-${NGX_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 Use $() instead of ``, quote ${WORKDIR}. > + 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 > + NGX_ORIGIN_CONFIGURE=`nginx -V 2>&1 | grep "configure arguments:" | cut -d: -f2 | sed "s/--add-module=\([^\s]\)*\s/ /"` > + ./configure ${NGX_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() { > + NGX_MODULE_NAME=`grep ${WORKDIR}/${PN}-${MODULE_PV}/config -e "ngx_addon_name" | cut -d= -f2` > + exeinto /usr/$(get_libdir)/nginx/modules > + doexe ${S}/objs/${NGX_MODULE_NAME}.so > +} -- Best regards, Michał Górny