zabbix: add full variants, add-on support for others, and update packaging#28585
zabbix: add full variants, add-on support for others, and update packaging#28585danielfdickinson wants to merge 2 commits intoopenwrt:masterfrom
Conversation
|
@mhei @hnyman @systemcrash @GeorgeSapkin This is a significant change to the Zabbix package that gains users many features. Any comments, concerns, or approvals? |
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>
|
sqlite3 ftw :) |
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>
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>
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>
ecc3fef to
625ac12
Compare
| PKG_NAME:=zabbix | ||
| PKG_VERSION:=7.0.22 | ||
| PKG_RELEASE:=5 | ||
| PKG_RELEASE:=7 |
There was a problem hiding this comment.
I know there are multiple commits, but is it necessary to jump 2 releases?
There was a problem hiding this comment.
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.
625ac12 to
763cb13
Compare
admin/zabbix/Makefile
Outdated
| $(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)) |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
It would also help if the expected feature set was described somewhere.
And are these variants all cross-compatible or do you need all
smallor alltinyones?
I'll add some 'help text for the feature set. The variants are (at least in my testing) cross-compatible.
There was a problem hiding this comment.
If with that information you have suggestions for naming, please share.
There was a problem hiding this comment.
I'm thinking of 'core', 'core-ssl', 'full', with possibly a 'core-db' and 'core-db-ssl'
763cb13 to
a07102d
Compare
|
Currently testing. Also, would there be objections to merging all but the php8 dependency commit into one? EDIT: Fixing foreach now. |
97a4e9d to
a286061
Compare
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>
a286061 to
35f35df
Compare
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>
35f35df to
3a1cb05
Compare
📦 Package Details
Maintainer: @danielfdickinson
Description:
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).
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.
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.
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
✅ Formalities