Skip to content

Comments

zabbix: add full variants, add-on support for others, and update packaging#28585

Open
danielfdickinson wants to merge 2 commits intoopenwrt:masterfrom
danielfdickinson:pr-add-full-variant-update-packaging
Open

zabbix: add full variants, add-on support for others, and update packaging#28585
danielfdickinson wants to merge 2 commits intoopenwrt:masterfrom
danielfdickinson:pr-add-full-variant-update-packaging

Conversation

@danielfdickinson
Copy link
Contributor

@danielfdickinson danielfdickinson commented Feb 16, 2026

📦 Package Details

Maintainer: @danielfdickinson

Description:

  1. Update the db dependencies on php8 modules. They can be 'select'
    because of the php8 dependency (and the php8 dependency is required
    prevent the various php8 module selects from causing a recursive
    dependency issues for Kconfig).
  2. Rather than having a database selection for SQLITE which prevents
    the server or frontend from building, we add a 'core'
    variant for the proxy which uses sqlite3, and have the database
    Kconfig affect only the server and frontend.
  3. In preparation for adding full variants with more features, we reduce
    the number of packages and variants by making SSL library selection a
    Kconfig choice instead of variants.
    This is a breaking change as -openssl and -gnutls packages will
    no longer exist.
    We choose GnuTLS as the default SSL/TLS provider as it tends to be
    smaller, and we choose the core and core-db variants as the
    default variants, again for size.
  4. Adds a full variant of the agentd, server, and proxy which enables
    cURL, LDAP, and Net-SNMP support. It uses OpenSSL for this variant
    as LDAP and the SSL variant of Net-SNMP already pull it in. We also
    allow other variants to be self-compiled with the their selection of
    those features, for users with unusual requirements.

This approach keeps the number packages reasonable (< 20). With a different set of choices in the patch series at https://gitlab.com/dfd-web/firmware/openwrt-mirrors/packages/-/tree/pr-add-zabbix-variants-and-capabilities?ref_type=heads the number packages exploded to almost 40. In that series I not only kept the different SSL variants, but made database selection variants instead of a Kconfig options.

Even without that, if we do not make SSL a configuration option, we end up with upwards of 30 packages.

I believe this patch series provides the right balance between features and OpenWrt project resources.


🧪 Run Testing Details

  • OpenWrt Version: SNAPSHOT r33092-98e7ed1462
  • OpenWrt Target/Subtarget: bcm27xx/bcm2712
  • OpenWrt Device: Raspberry Pi 5 Model B Rev 1.0

✅ Formalities

  • I have reviewed the CONTRIBUTING.md file for detailed contributing guidelines.

@danielfdickinson
Copy link
Contributor Author

Will also address #15419 and replaces #27716 .

@danielfdickinson
Copy link
Contributor Author

@mhei @hnyman @systemcrash @GeorgeSapkin This is a significant change to the Zabbix package that gains users many features. Any comments, concerns, or approvals?

danielfdickinson added a commit to danielfdickinson/packages that referenced this pull request Feb 17, 2026
Closes openwrt#28587
nginx: many module recursive dependencies

The solution turns out to be pretty trivial.
Replace the +nginx in the module DEPENDS.

This means the modules do not 'select' nginx, but the do 'depend on'
nginx. So nginx is required to install the modules.

This is the same approach taken with PHP8 and openwrt#28585 for Zabbix.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
@systemcrash
Copy link
Contributor

sqlite3 ftw :)

danielfdickinson added a commit to danielfdickinson/packages that referenced this pull request Feb 18, 2026
Closes openwrt#28587
nginx: many module recursive dependencies

The solution turns out to be pretty trivial.
Replace the +nginx in the module DEPENDS.

This means the modules do not 'select' nginx, but the do 'depend on'
nginx. So nginx is required to install the modules.

This is the same approach taken with PHP8 and openwrt#28585 for Zabbix.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
robimarko pushed a commit that referenced this pull request Feb 18, 2026
Closes #28587
nginx: many module recursive dependencies

The solution turns out to be pretty trivial.
Replace the +nginx in the module DEPENDS.

This means the modules do not 'select' nginx, but the do 'depend on'
nginx. So nginx is required to install the modules.

This is the same approach taken with PHP8 and #28585 for Zabbix.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
danielfdickinson added a commit to danielfdickinson/packages that referenced this pull request Feb 19, 2026
We remove the dependency on php8. As pointed out in
openwrt#28585 (comment)
it is not needed as the +php8-cgi and so on depend on php8, so the
dependency exists transitively.

This allows use to go back to using the ZABBIX_POSTGRESQL:php8-mod-pgsql
(and like dependency for mysql/mariadb).

This has two benefits:

1. It avoids the database PHP8 module not being automatically included

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from ecc3fef to 625ac12 Compare February 19, 2026 02:02
@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from 625ac12 to 763cb13 Compare February 21, 2026 14:15
@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from 763cb13 to a07102d Compare February 21, 2026 18:41
@danielfdickinson
Copy link
Contributor Author

danielfdickinson commented Feb 21, 2026

Currently testing. Also, would there be objections to merging all but the php8 dependency commit into one?

EDIT: Fixing foreach now.
EDIT 2: I merged all but the php8 dependency into a single commit. I have kept a copy of the unmerged version in a separate branch, so can bring it back if this is not wanted.

@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch 4 times, most recently from 97a4e9d to a286061 Compare February 21, 2026 19:43
Using the php8 dependency allows use to go back to using the
+ZABBIX_POSTGRESQL:php8-mod-pgsql (and like dependency for
mysql/mariadb).

This has the benefit of being an apk dependency so the user does not
install the frontend without a php8 database module.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch 2 times, most recently from 35f35df to 3a1cb05 Compare February 21, 2026 22:53
@GeorgeSapkin
Copy link
Member

Maybe new variants should provide old ones, e.g. zabbix-proxy-core should provide zabbix-proxy-nossl. Or what is the intended migration path from old names to new ones?

@danielfdickinson
Copy link
Contributor Author

Maybe new variants should provide old ones, e.g. zabbix-proxy-core should provide zabbix-proxy-nossl. Or what is the intended migration path from old names to new ones?

Already did something like this:

https://github.com/openwrt/packages/pull/28585/changes#diff-07c64987bed9bf3c8e2c4b4fd474104686096b489bf33bed2a0f23c9347108ddR337

  PROVIDES += zabbix-proxy-nossl

for all packages.

In case of the ssl variants I have a PROVIDES zabbix-proxy-ssl but not zabbix-proxy-openssl / zabbix-proxy-gnutls for two reasons:

  1. DEFAULT_VARIANT cannot be set separately for different PROVIDES for a package, so it becomes non-deterministic what is the default provider for e.g. zabbix-proxy if one has e.g. a DEFAULT_VARIANT:=1 on both zabbix-proxy-core-ssl and zabbix-proxy-core.
  2. zabbix-proxy-ssl being openssl or gnutls depends on the configuration choice made by the user or buildbot at compile time. As noted I consider this a breaking change, and I think it is better the user is made aware of the change.

@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from 3a1cb05 to 08819f1 Compare February 23, 2026 00:49
1. Rather than having a database selection for SQLITE which prevents
   the server or frontend from building, we add a 'core'
   variant for the proxy which uses sqlite3, and have the database
   Kconfig affect only the server and frontend.
2. In preparation for adding full variants with more features, we reduce
   the number of packages and variants by making SSL library selection a
   Kconfig choice instead of variants.
   **This is a breaking change** as -openssl and -gnutls packages will
   no longer exist.
   We choose GnuTLS as the default SSL/TLS provider as it tends to be
   smaller, and we choose the core-sqlite and core-db variants as the
   default variants, again for size.
3. Adds a full variant of the agentd, server, and proxy which enables
   cURL, LDAP, and Net-SNMP support. It uses OpenSSL for this variant
   as LDAP and the SSL variant of Net-SNMP already pull it in. We also
   allow other variants to be self-compiled with the their selection of
   those features, for users with unusual requirements.

Signed-off-by: Daniel F. Dickinson <dfdpublic@wildtechgarden.ca>
@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from 08819f1 to 7c87a24 Compare February 23, 2026 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants