Tuesday, July 09, 2024

Re: nginx: imrpove compatibiliy with unwind and

On Mon, 08 Jul 2024 22:07:45 +0100,
Stuart Henderson <stu@spacehopper.org> wrote:
>
> Here's an updated version. I also sorted subpackages in the Makefile,
> tweaked DESCR-cache_purge (tweak grammar, remove URL and set HOMEPAGE
> for subpackages instead), and changed PKGNAME to use nginx- prefix
> instead of ngx- (like the other subpackages).
>

Works on all my use cases, thanks!

Thus, given that we discussion the nginx port, I'd like to raise a question
regarding freenginx.

As you may know, about six months ago, Maxim Dounin created a fork of Nginx
and left the original project. Since then, freenginx (his fork) has been
actively maintained. I've submitted patches to both projects, and while some
were accepted into freenginx and others led to discussions, I received no
response from Nginx. Comparing the commit logs, it appears that most
development and bug fixing is now occurring in Maxim's fork. Notably, the
only commits that have occurred within the original Nginx project seem to be
related to the conflict that led to Maxim's decision to fork the project.
You can see this by comparing:
- https://freenginx.org/hg/nginx
- https://hg.nginx.org/nginx/

This raises several questions:
1. Should we switch our port to freenginx?
2. Should we create a separate freenginx port? Note that this is a complex
port, and I've tried adding a flavor, but it seems awkward.
3. Should we replace nginx with freenginx entirely?
4. Should we do nothing?

Personally, I think that supporting two nearly identical ports is wrong,
so I suggesting to either switching to freenginx or replacing nginx with
it inside the same port.

Thought?

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/www/nginx/Makefile,v
> diff -u -p -r1.182 Makefile
> --- Makefile 8 Jul 2024 20:42:28 -0000 1.182
> +++ Makefile 8 Jul 2024 21:05:29 -0000
> @@ -3,46 +3,44 @@ PORTROACH= limitw:1,even
> BROKEN-hppa= src/core/ngx_rwlock.c:116:2: error: \#error ngx_atomic_cmp_set() is not defined!
>
> COMMENT-main= robust and small HTTP server and mail proxy server
> -COMMENT-image_filter= nginx image filter module
> +COMMENT-cache_purge= nginx module which adds ability to purge cache content
> COMMENT-geoip2= nginx GeoIP2 module
> -COMMENT-xslt= nginx XSLT filter module
> -COMMENT-mailproxy= nginx mail proxy module
> -COMMENT-stream= nginx TCP/UDP proxy module
> -COMMENT-naxsi= nginx web application firewall module
> +COMMENT-headers_more= nginx module for setting/adding/clearing headers
> +COMMENT-image_filter= nginx image filter module
> COMMENT-ldap_auth= nginx LDAP authentication module
> COMMENT-lua= nginx lua scripting (lua-nginx-module and ngx_devel_kit)
> -COMMENT-headers_more= nginx module for setting/adding/clearing headers
> -COMMENT-perl= nginx perl scripting module
> +COMMENT-mailproxy= nginx mail proxy module
> +COMMENT-naxsi= nginx web application firewall module
> COMMENT-njs= nginx javascript scripting module
> COMMENT-passenger= nginx passenger (ruby/python/nodejs) integration module
> +COMMENT-perl= nginx perl scripting module
> COMMENT-rtmp= nginx module for RTMP streaming
> COMMENT-securelink= nginx HMAC secure link module
> +COMMENT-stream= nginx TCP/UDP proxy module
> +COMMENT-xslt= nginx XSLT filter module
>
> VERSION= 1.26.1
> DISTNAME= nginx-${VERSION}
> CATEGORIES= www
> -REVISION-geoip2= 0
> -REVISION-lua= 0
> -REVISION-main= 1
> -REVISION-njs= 0
> -REVISION-passenger= 0
> -REVISION-rtmp= 0
> +REVISION-main= 2
> +REVISION= 1
>
> PKGNAME-main= ${DISTNAME}
> -PKGNAME-image_filter= nginx-image_filter-${VERSION}
> +PKGNAME-cache_purge= nginx-cache_purge-${VERSION}
> PKGNAME-geoip2= nginx-geoip2-${VERSION}
> -PKGNAME-xslt= nginx-xslt-${VERSION}
> -PKGNAME-mailproxy= nginx-mailproxy-${VERSION}
> -PKGNAME-stream= nginx-stream-${VERSION}
> -PKGNAME-naxsi= nginx-naxsi-${VERSION}
> +PKGNAME-headers_more= nginx-headers-more-${VERSION}
> +PKGNAME-image_filter= nginx-image_filter-${VERSION}
> PKGNAME-ldap_auth= nginx-ldap_auth-${VERSION}
> PKGNAME-lua= nginx-lua-${VERSION}
> -PKGNAME-headers_more= nginx-headers-more-${VERSION}
> -PKGNAME-perl= nginx-perl-${VERSION}
> +PKGNAME-mailproxy= nginx-mailproxy-${VERSION}
> +PKGNAME-naxsi= nginx-naxsi-${VERSION}
> PKGNAME-njs= nginx-njs-${VERSION}
> PKGNAME-passenger= nginx-passenger-${VERSION}
> +PKGNAME-perl= nginx-perl-${VERSION}
> PKGNAME-rtmp= nginx-rtmp-${VERSION}
> PKGNAME-securelink= nginx-securelink-${VERSION}
> +PKGNAME-stream= nginx-stream-${VERSION}
> +PKGNAME-xslt= nginx-xslt-${VERSION}
>
> ONLY_FOR_ARCHS-passenger= aarch64 amd64 arm i386
>
> @@ -51,18 +49,30 @@ SITES.p=https://raw.githubusercontent.co
> https://raw.githubusercontent.com/sthen/nginx_chroot_patch/add_1.20.1/
>
> DIST_TUPLE= \
> + github FRiCKLE ngx_cache_purge 2.3 ngx_cache_purge \
> + github leev ngx_http_geoip2_module 3.4 ngx_http_geoip2_module \
> github openresty headers-more-nginx-module v0.34 headers-more-nginx-module \
> + github kvspb nginx-auth-ldap 83c059b73566c2ee9cbda920d91b66657cf120b7 nginx-auth-ldap \
> github openresty lua-nginx-module v0.10.11 lua-nginx-module \
> + github vision5 ngx_devel_kit v0.3.3 ngx_devel_kit \
> github nbs-system naxsi d714f1636ea49a9a9f4f06dba14aee003e970834 naxsi \
> - github kvspb nginx-auth-ldap 83c059b73566c2ee9cbda920d91b66657cf120b7 nginx-auth-ldap \
> - github arut nginx-rtmp-module v1.2.2 nginx-rtmp-module \
> github nginx njs 0.8.4 njs \
> - github vision5 ngx_devel_kit v0.3.3 ngx_devel_kit \
> - github leev ngx_http_geoip2_module 3.4 ngx_http_geoip2_module \
> - github nginx-modules ngx_http_hmac_secure_link_module 48c4625fbbf51ed5a95bfec23fa444f6c3702e50 ngx_http_hmac_secure_link_module
> + github arut nginx-rtmp-module v1.2.2 nginx-rtmp-module \
> + github nginx-modules ngx_http_hmac_secure_link_module 48c4625fbbf51ed5a95bfec23fa444f6c3702e50 ngx_http_hmac_secure_link_module \
>
> HOMEPAGE= https://nginx.org/
>
> +HOMEPAGE-cache_purge= https://github.com/FRiCKLE/ngx_cache_purge
> +HOMEPAGE-geoip2= https://github.com/leev/ngx_http_geoip2_module
> +HOMEPAGE-headers_more= https://github.com/openresty/headers-more-nginx-module
> +HOMEPAGE-ldap_auth= https://github.com/kvspb/nginx-auth-ldap
> +HOMEPAGE-lua= https://github.com/openresty/lua-nginx-module
> +HOMEPAGE-naxsi= https://github.com/wargio/naxsi
> +HOMEPAGE-njs= https://github.com/nginx/njs
> +HOMEPAGE-passenger= https://www.phusionpassenger.com/
> +HOMEPAGE-rtmp= https://github.com/arut/nginx-rtmp-module
> +HOMEPAGE-securelink= https://github.com/nginx-modules/ngx_http_hmac_secure_link_module
> +
> MAINTAINER= Robert Nagy <robert@openbsd.org>
>
> # BSD-like
> @@ -70,9 +80,10 @@ PERMIT_PACKAGE= Yes
>
> MULTI_PACKAGES = -main -naxsi -perl ${MODULE_PACKAGES}
>
> -MODULE_PACKAGES = -image_filter -geoip2 -xslt -mailproxy -stream \
> - -passenger -headers_more -ldap_auth -lua -njs \
> - -rtmp -securelink
> +MODULE_PACKAGES = -cache_purge -geoip2 -headers_more \
> + -image_filter -ldap_auth -lua -mailproxy \
> + -njs -passenger -rtmp -securelink -stream \
> + -xslt
>
> FLAVOR ?=
> PSEUDO_FLAVORS = no_lua no_njs no_passenger
> @@ -82,34 +93,36 @@ COMPILER = base-clang ports-gcc base-gc
> .include <bsd.port.arch.mk>
>
> WANTLIB-main= c crypto pcre2-8 ssl z
> -WANTLIB-mailproxy=
> -WANTLIB-stream=
> -WANTLIB-image_filter= gd
> +WANTLIB-cache_purge=
> WANTLIB-geoip2= maxminddb
> -WANTLIB-rtmp=
> -WANTLIB-njs= exslt m xml2 xslt
> -WANTLIB-xslt= exslt xml2 xslt
> -WANTLIB-naxsi=
> +WANTLIB-headers_more=
> +WANTLIB-image_filter= gd
> WANTLIB-ldap_auth= ldap
> WANTLIB-lua= ${MODLUA_WANTLIB} m pcre
> -WANTLIB-headers_more=
> -WANTLIB-perl= c m perl
> +WANTLIB-mailproxy=
> +WANTLIB-naxsi=
> +WANTLIB-njs= exslt m xml2 xslt
> WANTLIB-passenger= m pthread ${COMPILER_LIBCXX}
> +WANTLIB-perl= c m perl
> +WANTLIB-rtmp=
> WANTLIB-securelink= crypto
> +WANTLIB-stream=
> +WANTLIB-xslt= exslt xml2 xslt
>
> LIB_DEPENDS-main= devel/pcre2
> -LIB_DEPENDS-xslt= textproc/libxml \
> - textproc/libxslt
> -LIB_DEPENDS-image_filter=graphics/gd
> +LIB_DEPENDS-cache_purge=
> LIB_DEPENDS-geoip2= net/libmaxminddb
> +LIB_DEPENDS-image_filter=graphics/gd
> LIB_DEPENDS-ldap_auth= databases/openldap
> LIB_DEPENDS-lua= ${MODLUA_LIB_DEPENDS} \
> devel/pcre
> -LIB_DEPENDS-rtmp=
> -LIB_DEPENDS-securelink=
> LIB_DEPENDS-njs= devel/pcre2 \
> textproc/libxslt \
> textproc/libxml
> +LIB_DEPENDS-rtmp=
> +LIB_DEPENDS-securelink=
> +LIB_DEPENDS-xslt= textproc/libxml \
> + textproc/libxslt
>
> MODLUA_RUNDEP= No
> RUN_DEPENDS= www/nginx,-main=${VERSION}
> @@ -198,7 +211,8 @@ CONFIGURE_ARGS+= --prefix=${NGINX_DIR} \
> --add-dynamic-module=${WRKSRC}/headers-more-nginx-module \
> --add-dynamic-module=${WRKSRC}/nginx-auth-ldap \
> --add-dynamic-module=${WRKSRC}/ngx_http_geoip2_module \
> - --add-dynamic-module=${WRKSRC}/ngx_http_hmac_secure_link_module
> + --add-dynamic-module=${WRKSRC}/ngx_http_hmac_secure_link_module \
> + --add-dynamic-module=${WRKSRC}/ngx_cache_purge
>
> SUBSTFILES= conf/nginx.conf */config
>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/www/nginx/distinfo,v
> diff -u -p -r1.86 distinfo
> --- distinfo 8 Jul 2024 20:42:28 -0000 1.86
> +++ distinfo 8 Jul 2024 21:05:29 -0000
> @@ -1,3 +1,4 @@
> +SHA256 (FRiCKLE-ngx_cache_purge-2.3.tar.gz) = y31fIpGcYT8fAzQaGuuWCWUmkwLp6yNCXMqr0vXcu+w=
> SHA256 (arut-nginx-rtmp-module-v1.2.2.tar.gz) = B/Gbe//sXjV7uIIMY+UoHevUX1oubUaxY22SAsPgnXg=
> SHA256 (kvspb-nginx-auth-ldap-83c059b73566c2ee9cbda920d91b66657cf120b7.tar.gz) = aQxOW9sq4ZsP7nXNNW0YATRo20cmFrYJeloLvjRshGQ=
> SHA256 (leev-ngx_http_geoip2_module-3.4.tar.gz) = rXL8IzSNcVozCZSYRTH6ubNgbhYEgyNnN/mkppV9lFI=
> @@ -9,6 +10,7 @@ SHA256 (nginx-njs-0.8.4.tar.gz) = /hl+JU
> SHA256 (openresty-headers-more-nginx-module-v0.34.tar.gz) = DA0s7SzolbP0XrKyMM2QUIqyp3MpnxU94UpD5EwSCbM=
> SHA256 (openresty-lua-nginx-module-v0.10.11.tar.gz) = wPuR/P0cbn3sNMpkgm74H/66/e9hdNJURnY284BWZiY=
> SHA256 (vision5-ngx_devel_kit-v0.3.3.tar.gz) = +qL81RaLEHZNNQgTVlEdX4TbXFJqGqS2rdLblLaFOys=
> +SIZE (FRiCKLE-ngx_cache_purge-2.3.tar.gz) = 11717
> SIZE (arut-nginx-rtmp-module-v1.2.2.tar.gz) = 519934
> SIZE (kvspb-nginx-auth-ldap-83c059b73566c2ee9cbda920d91b66657cf120b7.tar.gz) = 18542
> SIZE (leev-ngx_http_geoip2_module-3.4.tar.gz) = 8877
> Index: patches/patch-ngx_cache_purge_config
> ===================================================================
> RCS file: patches/patch-ngx_cache_purge_config
> diff -N patches/patch-ngx_cache_purge_config
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-ngx_cache_purge_config 8 Jul 2024 21:05:29 -0000
> @@ -0,0 +1,25 @@
> +Build ngx_cache_purge as dynamic module
> +
> +Index: ngx_cache_purge/config
> +--- ngx_cache_purge/config.orig
> ++++ ngx_cache_purge/config
> +@@ -15,7 +15,17 @@ if [ "$HTTP_UWSGI" = "YES" ]; then
> + fi
> +
> + ngx_addon_name=ngx_http_cache_purge_module
> +-HTTP_MODULES="$HTTP_MODULES ngx_http_cache_purge_module"
> +-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_cache_purge_module.c"
> ++CACHE_PURGE_SRCS="$ngx_addon_dir/ngx_cache_purge_module.c"
> ++
> ++if [ -n "$ngx_module_link" ]; then
> ++ ngx_module_type=HTTP
> ++ ngx_module_name="$ngx_addon_name"
> ++ ngx_module_srcs="$CACHE_PURGE_SRCS"
> ++
> ++ . auto/module
> ++else
> ++ HTTP_MODULES="$HTTP_MODULES $ngx_addon_name"
> ++ NGX_ADDON_SRCS="$NGX_ADDON_SRCS $CACHE_PURGE_SRCS"
> ++fi
> +
> + have=NGX_CACHE_PURGE_MODULE . auto/have
> Index: patches/patch-src_core_ngx_resolver_c
> ===================================================================
> RCS file: patches/patch-src_core_ngx_resolver_c
> diff -N patches/patch-src_core_ngx_resolver_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_core_ngx_resolver_c 8 Jul 2024 21:05:29 -0000
> @@ -0,0 +1,12 @@
> +Index: src/core/ngx_resolver.c
> +--- src/core/ngx_resolver.c.orig
> ++++ src/core/ngx_resolver.c
> +@@ -1774,7 +1774,7 @@ ngx_resolver_process_response(ngx_resolver_t *r, u_cha
> + (response->nar_hi << 8) + response->nar_lo);
> +
> + /* response to a standard query */
> +- if ((flags & 0xf870) != 0x8000 || (trunc && tcp)) {
> ++ if ((flags & 0xf850) != 0x8000 || (trunc && tcp)) {
> + ngx_log_error(r->log_level, r->log, 0,
> + "invalid %s DNS response %ui fl:%04Xi",
> + tcp ? "TCP" : "UDP", ident, flags);
> Index: pkg/DESCR-cache_purge
> ===================================================================
> RCS file: pkg/DESCR-cache_purge
> diff -N pkg/DESCR-cache_purge
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ pkg/DESCR-cache_purge 8 Jul 2024 21:05:29 -0000
> @@ -0,0 +1,6 @@
> +ngx_cache_purge is nginx module which adds ability to purge content from
> +FastCGI, proxy, SCGI and uWSGI caches.
> +
> +It is built as a separate dynamic module and should be loaded with:
> +
> + load_module modules/ngx_http_cache_purge_module.so;
> Index: pkg/PLIST-cache_purge
> ===================================================================
> RCS file: pkg/PLIST-cache_purge
> diff -N pkg/PLIST-cache_purge
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ pkg/PLIST-cache_purge 8 Jul 2024 21:05:29 -0000
> @@ -0,0 +1 @@
> +@so ngx_http_cache_purge_module.so
>

--
wbr, Kirill

No comments:

Post a Comment