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
PKG_NAME:=zabbix
PKG_VERSION:=7.0.22
PKG_RELEASE:=5
PKG_RELEASE:=7
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know there are multiple commits, but is it necessary to jump 2 releases?

Copy link
Contributor Author

@danielfdickinson danielfdickinson Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My plan is to cherry-pick the first commit (the php8 dependency update) but not the rest. So it has a PKG_RELEASE bump. Since after that is also PKG_RELEASE worthy, I have bumped it as well.

@danielfdickinson danielfdickinson force-pushed the pr-add-full-variant-update-packaging branch from 625ac12 to 763cb13 Compare February 21, 2026 14:15
Comment on lines 612 to 625
$(eval $(call BuildPackage,zabbix-agentd-tiny))
$(eval $(call BuildPackage,zabbix-agentd-small-ssl))
$(eval $(call BuildPackage,zabbix-agentd-full))
$(eval $(call BuildPackage,zabbix-get-tiny))
$(eval $(call BuildPackage,zabbix-get-small-ssl))
$(eval $(call BuildPackage,zabbix-sender-tiny))
$(eval $(call BuildPackage,zabbix-sender-small-ssl))
$(eval $(call BuildPackage,zabbix-proxy-tiny))
$(eval $(call BuildPackage,zabbix-proxy-small))
$(eval $(call BuildPackage,zabbix-proxy-small-ssl))
$(eval $(call BuildPackage,zabbix-proxy-full))
$(eval $(call BuildPackage,zabbix-server-small))
$(eval $(call BuildPackage,zabbix-server-small-ssl))
$(eval $(call BuildPackage,zabbix-server-full))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't use these packages, so it might make sense, but from the outside the number of seemingly-random combinations looks quite confusing and comparatively less clear than before. Why do some packages have more variants than the others when before there have been three of each? If it's not the case already, the missing variants should be provided by other ones, e.g. zabbix-sender-small-ssl should also provide zabbix-sender-small.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would also help if the expected feature set was described somewhere.

And are these variants all cross-compatible or do you need all small or all tiny ones?

Copy link
Contributor Author

@danielfdickinson danielfdickinson Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As described in the PR and commit message:

  • 'tiny' indicates no database and nossl (or the sqlite3 database in the case of proxy, there is no no database option; there is no tiny server option because the server requires either postgresql or mariadb/mysql).
  • 'small' database and ssl but not the full feature set
  • 'small-ssl' indicates database and ssl but not full feature set
  • 'full' indicates the full feature set (which include OpenSSL, NetSNMP, cURL, and OpenLDAP support; if OpenWrt gains OpenIPMI it will also include that).

Previously there were three variants per binary because 'full' variant did not exist and those features were not available. There were 'nossl', 'openssl', and 'gnutls' variants of each binary. As I have made OpenSSL vs GnuTLS a configuration option the openssl and gnutls versions are merged into the 'small-ssl' variant (depending on whether no database server is required, or database server is required, respectively).

The reason for tiny vs small was primarily because of the proxy sqlite3 version, and wanting a 'stack' that was no database server required (the 'tiny' stack of agentd, get, sender, and proxy) and no ssl.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would also help if the expected feature set was described somewhere.

And are these variants all cross-compatible or do you need all small or all tiny ones?

I'll add some 'help text for the feature set. The variants are (at least in my testing) cross-compatible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If with that information you have suggestions for naming, please share.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking of 'core', 'core-ssl', 'full', with possibly a 'core-db' and 'core-db-ssl'

@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 from a286061 to 35f35df Compare February 21, 2026 22:47
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 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 35f35df to 3a1cb05 Compare February 21, 2026 22:53
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