This is the third iteration of the patch series.

References
===========

GitHub PR: https://github.com/gentoo/gentoo/pull/37590

v2 of the patch series: 
https://public-inbox.gentoo.org/gentoo-dev/20240729215241.13243-1-zurabid2...@gmail.com/

NEWS item patch: 
https://public-inbox.gentoo.org/gentoo-dev/20250221153621.26266-2-zurabid2...@gmail.com/

Abstract
===========

This is an attempt to improve the state of NGINX in the Gentoo tree. The
majority of reasoning for introducing 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 NGINX 1.26.1 revbump commit. 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 two 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 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.


Happy hacking :)

Zurab Kvachadze (40):
  nginx.eclass: Add new eclass for building the NGINX server
  dev-perl/Test-Nginx: new package, add 0.30
  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: revbump 1.26.3-r0 to 1.26.3-r1, use nginx.eclass
  www-servers/nginx: revbump 1.27.4-r0 to 1.27.4-r1, 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

 ...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 +
 .../lua-resty-string-0.16.ebuild              |  38 +
 dev-lua/lua-resty-string/metadata.xml         |  16 +
 dev-perl/Test-Nginx/Manifest                  |   1 +
 dev-perl/Test-Nginx/Test-Nginx-0.30.ebuild    |  36 +
 ...inx-0.30-preset-temp_path-directives.patch |  38 +
 ...est-Nginx-0.30-set-default-error-log.patch |  48 +
 dev-perl/Test-Nginx/metadata.xml              |  17 +
 eclass/nginx-module.eclass                    | 811 +++++++++++++++
 eclass/nginx.eclass                           | 950 ++++++++++++++++++
 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-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-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             |  67 ++
 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-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-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                    |   1 +
 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.26.3-r1.ebuild      |  31 +
 www-servers/nginx/nginx-1.27.4-r1.ebuild      |  31 +
 www-servers/nginx/nginx-9999.ebuild           |  29 +
 92 files changed, 3966 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/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.30.ebuild
 create mode 100644 
dev-perl/Test-Nginx/files/Test-Nginx-0.30-preset-temp_path-directives.patch
 create mode 100644 
dev-perl/Test-Nginx/files/Test-Nginx-0.30-set-default-error-log.patch
 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-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-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-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-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.26.3-r1.ebuild
 create mode 100644 www-servers/nginx/nginx-1.27.4-r1.ebuild
 create mode 100644 www-servers/nginx/nginx-9999.ebuild

-- 
2.45.3


Reply via email to