This is the fourth iteration of the patch series.
Abstract
===========
This is an attempt to improve the state of NGINX in the Gentoo tree. The full
reasoning for doing this series can be found in the nginx.eclass commit, whereas
the actual differences between the previous and the new versions are outlined in
the commit adding NGINX 1.29.0. All the commits are pretty self-descriptive,
explaining the rationale and implementation in way more details than I could
describe here. I recommend you to start with the nginx.eclass commit.
Such "refreshes" are important for Gentoo, in my belief. NGINX has not been
"full-time" maintained for 2-3 years now, let alone being rewritten. Thus, NGINX
ebuilds are around 42K in size, having accumulated rust over the years. The
sheer size and monstrosity of the ebuild hinders the discourages developers from
adopting the package. These patches aim to drastically reduce the size and fix
numerous issues that NGINX has acquired throughout its lifetime.
This MR closes the following bugs as RESOLVED FIXED:
* 573710, 481456, 928131, 576414, 578658, 735020, 700866
Makes progress towards solving these bugs:
* 886537
And otherwise mentions these bugs:
* 925098
Changelog
===========
The changes between v3 and v4:
* Stylistic changes in both eclasses to utilise edo that now quotes the
arguments containing whitespace properly.
* Porting of dav-ext, ngx-fancyindex, geoip2, vod and modsecurity
third-party modules.
The changes between v2 and v3:
* Fully support the upstream transition to Git from Mercurial.
* Fix NGINX uwsgi tests.
* Greatly simplify dependency handling for third-party modules by
introducing the ngx_mod_append_libs() function.
* Enable specifying NGINX module dependencies declaratively via the
NGINX_MOD_LINK_MODULES array.
* Add tests support for NGINX modules via Test::Nginx (dev-perl/Test-Nginx).
* Port 10 more modules to nginx-module.eclass.
* Some minor improvements to NGINX miscellaneous files.
The changes between v1 and v2:
* nginx.eclass: Add support for installing tmpfiles.d(5) files via
NGINX_MISC_FILES. Add RDEPEND on virtual/tmpfiles. Also, the
_ngx_set_mod_*() functions now work properly, by checking the module
in
question against the NGINX_MODULES array with the '+' sign stripped.
* nginx.tmpfiles: Add tmpfiles.d(5) file to manage the /var/tmp/nginx
directory used to store temporary NGINX files.
* nginx-r5.initd: Set pidfile to /run/${RC_SVCNAME}.pid, make NGINX use
that
instead of the pidfile specified in its configuration file. Allows for
seamlessly running multiple instances of NGINX. Set NGINX_CONFIGFILE
to
/etc/nginx/${RC_SVCNAME}.conf. Remove 'need net' from depend().
Remove the
start_pre() function with the call to checkpath. Its functionality is
now
delegated to systemd-tmpfiles(8).
* nginx-r1.confd: The relevant NGINX_PIDFILE option is removed since the
pidfile is unconditionally saved to /run/${RC_SVCNAME}.pid.
* nginx-*.ebuild: Declare nginx.tmpfiles in NGINX_MISC_FILES, thus
installing it.
* One more paragraph was added to the third party modules section (2) in
the "Question and problems", which suggest issuing NEWS item, due to
the impact of the changes.
References
===========
GitHub PR: https://github.com/gentoo/gentoo/pull/37590
v3 of the patch series:
https://public-inbox.gentoo.org/gentoo-dev/[email protected]/
Happy hacking :)
Zurab Kvachadze (44):
nginx.eclass: Add new eclass for building the NGINX server
dev-perl/Test-Nginx: new package, add 0.31
nginx-module.eclass: Add new eclass for building NGINX external
modules
profiles/arch/powerpc/ppc64: mask tests for www-servers/nginx
profiles/arch/riscv: mask tests for www-servers/nginx
www-servers/nginx: add myself as a proxy maintainer; update
metadata.xml
www-servers/nginx: add nginx.tmpfiles for managing /var/tmp/nginx
www-servers/nginx: add nginx-r5.initd
www-servers/nginx: add nginx-r1.confd
www-servers/nginx: add nginx-r2.service
www-servers/nginx: add nginx-r2.logrotate
www-servers/nginx: add nginx-r4.conf
profiles/desc: reword and update nginx_modules_http.desc
profiles/desc: reword and update nginx_modules_mail.desc
profiles/desc: reword and update nginx_modules_stream.desc
profiles/categories: Add www-nginx category for external NGINX modules
app-metrics/nginx-lua-prometheus: revbump to r101, update EAPI 7 -> 8,
remove r100
www-servers/nginx: add 1.29.0, use nginx.eclass
www-servers/nginx: add 9999 live version, use nginx.eclass
www-nginx/ngx_devel_kit: new package, add 0.3.4
www-nginx/ngx-echo: new package, add 0.63
www-nginx/ngx-encrypted-session: new package, add 0.09
www-nginx/ngx-set-misc: new package, add 0.33
www-nginx/ngx-brotli: new package, add 20231109
www-nginx/ngx-headers-more: new package, add 0.37
www-nginx/ngx-upload-progress: new package, add 0.9.3
dev-lua/lua-resty-core: new package, add 0.1.30
dev-lua/lua-resty-lrucache: new package, add 0.15
www-nginx/ngx-lua-module: new package, add 0.10.27
dev-lua/lua-resty-string: new package, add 0.16
dev-lua/lua-resty-mysql: new package, add 0.27
dev-lua/lua-resty-memcached: new package, add 0.17
www-nginx/ngx-xss: new package, add 0.06
www-nginx/ngx-eval: new package, add 0_p20240817
www-nginx/ngx-iconv: new package, add 0.14
www-nginx/ngx-srcache: new package, add 0.33
www-nginx/ngx-lua-upstream: new package, add 0.07
www-nginx/ngx-memc: new package, add 0.20
www-nginx: enable tests for OpenResty modules
www-nginx/ngx-dav-ext: new package, add 3.0.0
www-nginx/ngx-geoip2: new package, add 3.4
www-nginx/ngx-fancyindex: new package, add 0.5.2
www-nginx/ngx-vod: new package, add 1.33
www-nginx/ngx-modsecurity: new package, add 1.0.3
...ua-prometheus-0.1_pre20170610-r101.ebuild} | 17 +-
dev-lua/lua-resty-core/Manifest | 1 +
.../lua-resty-core-0.1.30.ebuild | 33 +
dev-lua/lua-resty-core/metadata.xml | 24 +
dev-lua/lua-resty-lrucache/Manifest | 1 +
.../lua-resty-lrucache-0.15.ebuild | 33 +
dev-lua/lua-resty-lrucache/metadata.xml | 19 +
dev-lua/lua-resty-memcached/Manifest | 1 +
.../lua-resty-memcached-0.17.ebuild | 33 +
dev-lua/lua-resty-memcached/metadata.xml | 16 +
dev-lua/lua-resty-mysql/Manifest | 1 +
.../lua-resty-mysql-0.27.ebuild | 37 +
dev-lua/lua-resty-mysql/metadata.xml | 22 +
dev-lua/lua-resty-string/Manifest | 1 +
...tring-0.16-explicitly-load-libcrypto.patch | 73 ++
.../lua-resty-string-0.16.ebuild | 40 +
dev-lua/lua-resty-string/metadata.xml | 16 +
dev-perl/Test-Nginx/Manifest | 1 +
dev-perl/Test-Nginx/Test-Nginx-0.31.ebuild | 37 +
dev-perl/Test-Nginx/metadata.xml | 17 +
eclass/nginx-module.eclass | 809 +++++++++++++++
eclass/nginx.eclass | 951 ++++++++++++++++++
profiles/arch/powerpc/ppc64/package.use.mask | 4 +
profiles/arch/riscv/package.use.mask | 4 +
profiles/categories | 1 +
profiles/desc/nginx_modules_http.desc | 147 +--
profiles/desc/nginx_modules_mail.desc | 9 +-
profiles/desc/nginx_modules_stream.desc | 34 +-
www-nginx/metadata.xml | 7 +
www-nginx/ngx-brotli/Manifest | 2 +
www-nginx/ngx-brotli/metadata.xml | 24 +
.../ngx-brotli/ngx-brotli-20231109.ebuild | 30 +
www-nginx/ngx-dav-ext/Manifest | 1 +
www-nginx/ngx-dav-ext/metadata.xml | 20 +
.../ngx-dav-ext/ngx-dav-ext-3.0.0.ebuild | 28 +
www-nginx/ngx-echo/Manifest | 1 +
www-nginx/ngx-echo/metadata.xml | 24 +
www-nginx/ngx-echo/ngx-echo-0.63.ebuild | 26 +
www-nginx/ngx-encrypted-session/Manifest | 1 +
www-nginx/ngx-encrypted-session/metadata.xml | 22 +
.../ngx-encrypted-session-0.09.ebuild | 38 +
www-nginx/ngx-eval/Manifest | 1 +
www-nginx/ngx-eval/metadata.xml | 16 +
.../ngx-eval/ngx-eval-0_p20240817.ebuild | 43 +
www-nginx/ngx-fancyindex/Manifest | 1 +
www-nginx/ngx-fancyindex/metadata.xml | 27 +
.../ngx-fancyindex-0.5.2.ebuild | 18 +
www-nginx/ngx-geoip2/Manifest | 1 +
www-nginx/ngx-geoip2/metadata.xml | 23 +
www-nginx/ngx-geoip2/ngx-geoip2-3.4.ebuild | 36 +
www-nginx/ngx-headers-more/Manifest | 1 +
www-nginx/ngx-headers-more/metadata.xml | 23 +
.../ngx-headers-more-0.37.ebuild | 29 +
www-nginx/ngx-iconv/Manifest | 1 +
.../ngx-iconv-0.14-skip-rds-json-tests.patch | 30 +
www-nginx/ngx-iconv/metadata.xml | 20 +
www-nginx/ngx-iconv/ngx-iconv-0.14.ebuild | 36 +
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 +
www-nginx/ngx-lua-module/metadata.xml | 21 +
.../ngx-lua-module-0.10.27.ebuild | 59 ++
www-nginx/ngx-lua-upstream/Manifest | 1 +
...lua-upstream-0.07-skip-invalid-tests.patch | 26 +
www-nginx/ngx-lua-upstream/metadata.xml | 16 +
.../ngx-lua-upstream-0.07.ebuild | 45 +
www-nginx/ngx-memc/Manifest | 1 +
...0.20-stats_t-do-not-run-timeout-test.patch | 31 +
www-nginx/ngx-memc/metadata.xml | 27 +
www-nginx/ngx-memc/ngx-memc-0.20.ebuild | 48 +
www-nginx/ngx-modsecurity/Manifest | 1 +
www-nginx/ngx-modsecurity/metadata.xml | 24 +
.../ngx-modsecurity-1.0.3.ebuild | 25 +
www-nginx/ngx-set-misc/Manifest | 1 +
.../ngx-set-misc-0.33-hmac-configurable.patch | 71 ++
...isc-0.33-skip-hashed-upstream_t-test.patch | 31 +
www-nginx/ngx-set-misc/metadata.xml | 25 +
.../ngx-set-misc/ngx-set-misc-0.33.ebuild | 47 +
www-nginx/ngx-srcache/Manifest | 1 +
...x-srcache-0.33-disable-invalid-tests.patch | 147 +++
www-nginx/ngx-srcache/metadata.xml | 25 +
www-nginx/ngx-srcache/ngx-srcache-0.33.ebuild | 53 +
www-nginx/ngx-upload-progress/Manifest | 1 +
www-nginx/ngx-upload-progress/metadata.xml | 24 +
.../ngx-upload-progress-0.9.3.ebuild | 20 +
www-nginx/ngx-vod/Manifest | 1 +
...-1.33-fix-clock-gettime-config-check.patch | 36 +
www-nginx/ngx-vod/metadata.xml | 16 +
www-nginx/ngx-vod/ngx-vod-1.33.ebuild | 34 +
www-nginx/ngx-xss/Manifest | 1 +
...x-xss-0.06-add-dynamic-build-support.patch | 34 +
www-nginx/ngx-xss/metadata.xml | 21 +
www-nginx/ngx-xss/ngx-xss-0.06.ebuild | 28 +
www-nginx/ngx_devel_kit/Manifest | 1 +
www-nginx/ngx_devel_kit/metadata.xml | 25 +
.../ngx_devel_kit/ngx_devel_kit-0.3.4.ebuild | 45 +
www-servers/nginx/Manifest | 2 +
www-servers/nginx/files/nginx-r1.confd | 32 +
www-servers/nginx/files/nginx-r2.logrotate | 11 +
www-servers/nginx/files/nginx-r2.service | 11 +
www-servers/nginx/files/nginx-r4.conf | 39 +
www-servers/nginx/files/nginx-r5.initd | 112 +++
www-servers/nginx/files/nginx.tmpfiles | 2 +
www-servers/nginx/metadata.xml | 62 +-
www-servers/nginx/nginx-1.29.0.ebuild | 31 +
www-servers/nginx/nginx-9999.ebuild | 29 +
106 files changed, 4209 insertions(+), 118 deletions(-)
rename
app-metrics/nginx-lua-prometheus/{nginx-lua-prometheus-0.1_pre20170610-r100.ebuild
=> nginx-lua-prometheus-0.1_pre20170610-r101.ebuild} (79%)
create mode 100644 dev-lua/lua-resty-core/Manifest
create mode 100644 dev-lua/lua-resty-core/lua-resty-core-0.1.30.ebuild
create mode 100644 dev-lua/lua-resty-core/metadata.xml
create mode 100644 dev-lua/lua-resty-lrucache/Manifest
create mode 100644 dev-lua/lua-resty-lrucache/lua-resty-lrucache-0.15.ebuild
create mode 100644 dev-lua/lua-resty-lrucache/metadata.xml
create mode 100644 dev-lua/lua-resty-memcached/Manifest
create mode 100644 dev-lua/lua-resty-memcached/lua-resty-memcached-0.17.ebuild
create mode 100644 dev-lua/lua-resty-memcached/metadata.xml
create mode 100644 dev-lua/lua-resty-mysql/Manifest
create mode 100644 dev-lua/lua-resty-mysql/lua-resty-mysql-0.27.ebuild
create mode 100644 dev-lua/lua-resty-mysql/metadata.xml
create mode 100644 dev-lua/lua-resty-string/Manifest
create mode 100644
dev-lua/lua-resty-string/files/lua-resty-string-0.16-explicitly-load-libcrypto.patch
create mode 100644 dev-lua/lua-resty-string/lua-resty-string-0.16.ebuild
create mode 100644 dev-lua/lua-resty-string/metadata.xml
create mode 100644 dev-perl/Test-Nginx/Manifest
create mode 100644 dev-perl/Test-Nginx/Test-Nginx-0.31.ebuild
create mode 100644 dev-perl/Test-Nginx/metadata.xml
create mode 100644 eclass/nginx-module.eclass
create mode 100644 eclass/nginx.eclass
create mode 100644 www-nginx/metadata.xml
create mode 100644 www-nginx/ngx-brotli/Manifest
create mode 100644 www-nginx/ngx-brotli/metadata.xml
create mode 100644 www-nginx/ngx-brotli/ngx-brotli-20231109.ebuild
create mode 100644 www-nginx/ngx-dav-ext/Manifest
create mode 100644 www-nginx/ngx-dav-ext/metadata.xml
create mode 100644 www-nginx/ngx-dav-ext/ngx-dav-ext-3.0.0.ebuild
create mode 100644 www-nginx/ngx-echo/Manifest
create mode 100644 www-nginx/ngx-echo/metadata.xml
create mode 100644 www-nginx/ngx-echo/ngx-echo-0.63.ebuild
create mode 100644 www-nginx/ngx-encrypted-session/Manifest
create mode 100644 www-nginx/ngx-encrypted-session/metadata.xml
create mode 100644
www-nginx/ngx-encrypted-session/ngx-encrypted-session-0.09.ebuild
create mode 100644 www-nginx/ngx-eval/Manifest
create mode 100644 www-nginx/ngx-eval/metadata.xml
create mode 100644 www-nginx/ngx-eval/ngx-eval-0_p20240817.ebuild
create mode 100644 www-nginx/ngx-fancyindex/Manifest
create mode 100644 www-nginx/ngx-fancyindex/metadata.xml
create mode 100644 www-nginx/ngx-fancyindex/ngx-fancyindex-0.5.2.ebuild
create mode 100644 www-nginx/ngx-geoip2/Manifest
create mode 100644 www-nginx/ngx-geoip2/metadata.xml
create mode 100644 www-nginx/ngx-geoip2/ngx-geoip2-3.4.ebuild
create mode 100644 www-nginx/ngx-headers-more/Manifest
create mode 100644 www-nginx/ngx-headers-more/metadata.xml
create mode 100644 www-nginx/ngx-headers-more/ngx-headers-more-0.37.ebuild
create mode 100644 www-nginx/ngx-iconv/Manifest
create mode 100644
www-nginx/ngx-iconv/files/ngx-iconv-0.14-skip-rds-json-tests.patch
create mode 100644 www-nginx/ngx-iconv/metadata.xml
create mode 100644 www-nginx/ngx-iconv/ngx-iconv-0.14.ebuild
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
create mode 100644 www-nginx/ngx-lua-module/metadata.xml
create mode 100644 www-nginx/ngx-lua-module/ngx-lua-module-0.10.27.ebuild
create mode 100644 www-nginx/ngx-lua-upstream/Manifest
create mode 100644
www-nginx/ngx-lua-upstream/files/ngx-lua-upstream-0.07-skip-invalid-tests.patch
create mode 100644 www-nginx/ngx-lua-upstream/metadata.xml
create mode 100644 www-nginx/ngx-lua-upstream/ngx-lua-upstream-0.07.ebuild
create mode 100644 www-nginx/ngx-memc/Manifest
create mode 100644
www-nginx/ngx-memc/files/ngx-memc-0.20-stats_t-do-not-run-timeout-test.patch
create mode 100644 www-nginx/ngx-memc/metadata.xml
create mode 100644 www-nginx/ngx-memc/ngx-memc-0.20.ebuild
create mode 100644 www-nginx/ngx-modsecurity/Manifest
create mode 100644 www-nginx/ngx-modsecurity/metadata.xml
create mode 100644 www-nginx/ngx-modsecurity/ngx-modsecurity-1.0.3.ebuild
create mode 100644 www-nginx/ngx-set-misc/Manifest
create mode 100644
www-nginx/ngx-set-misc/files/ngx-set-misc-0.33-hmac-configurable.patch
create mode 100644
www-nginx/ngx-set-misc/files/ngx-set-misc-0.33-skip-hashed-upstream_t-test.patch
create mode 100644 www-nginx/ngx-set-misc/metadata.xml
create mode 100644 www-nginx/ngx-set-misc/ngx-set-misc-0.33.ebuild
create mode 100644 www-nginx/ngx-srcache/Manifest
create mode 100644
www-nginx/ngx-srcache/files/ngx-srcache-0.33-disable-invalid-tests.patch
create mode 100644 www-nginx/ngx-srcache/metadata.xml
create mode 100644 www-nginx/ngx-srcache/ngx-srcache-0.33.ebuild
create mode 100644 www-nginx/ngx-upload-progress/Manifest
create mode 100644 www-nginx/ngx-upload-progress/metadata.xml
create mode 100644
www-nginx/ngx-upload-progress/ngx-upload-progress-0.9.3.ebuild
create mode 100644 www-nginx/ngx-vod/Manifest
create mode 100644
www-nginx/ngx-vod/files/ngx-vod-1.33-fix-clock-gettime-config-check.patch
create mode 100644 www-nginx/ngx-vod/metadata.xml
create mode 100644 www-nginx/ngx-vod/ngx-vod-1.33.ebuild
create mode 100644 www-nginx/ngx-xss/Manifest
create mode 100644
www-nginx/ngx-xss/files/ngx-xss-0.06-add-dynamic-build-support.patch
create mode 100644 www-nginx/ngx-xss/metadata.xml
create mode 100644 www-nginx/ngx-xss/ngx-xss-0.06.ebuild
create mode 100644 www-nginx/ngx_devel_kit/Manifest
create mode 100644 www-nginx/ngx_devel_kit/metadata.xml
create mode 100644 www-nginx/ngx_devel_kit/ngx_devel_kit-0.3.4.ebuild
create mode 100644 www-servers/nginx/files/nginx-r1.confd
create mode 100644 www-servers/nginx/files/nginx-r2.logrotate
create mode 100644 www-servers/nginx/files/nginx-r2.service
create mode 100644 www-servers/nginx/files/nginx-r4.conf
create mode 100644 www-servers/nginx/files/nginx-r5.initd
create mode 100644 www-servers/nginx/files/nginx.tmpfiles
create mode 100644 www-servers/nginx/nginx-1.29.0.ebuild
create mode 100644 www-servers/nginx/nginx-9999.ebuild
--
2.49.0