From 75146ea2be0b17e4349fe49d4ed0fc94c5de4ff8 Mon Sep 17 00:00:00 2001 From: "Daniel F. Dickinson" Date: Sun, 25 Jan 2026 18:11:10 -0500 Subject: [PATCH] zabbix: deduplicate and reorganize package defines In preparation for further changes, deduplicate package definitions, and reorganize them. At the same time make use of provides to ensure both existing names are preserved, and that it is possible to be specific about the variant of the package one wants. Also, condense the package conffiles, install, postinst, etc handling. This is more maintainable (less copy and paste and less to modify). Signed-off-by: Daniel F. Dickinson --- admin/zabbix/Makefile | 403 ++++++++++++++++++++++++------------------ 1 file changed, 228 insertions(+), 175 deletions(-) diff --git a/admin/zabbix/Makefile b/admin/zabbix/Makefile index d99a67f889..e447599e78 100644 --- a/admin/zabbix/Makefile +++ b/admin/zabbix/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zabbix PKG_VERSION:=7.0.22 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://cdn.zabbix.com/zabbix/sources/stable/$(basename $(PKG_VERSION))/ \ @@ -56,19 +56,23 @@ define Package/zabbix/Default SUBMENU:=Zabbix TITLE:=Zabbix URL:=https://www.zabbix.com/ - DEPENDS+=$(ICONV_DEPENDS) +libpcre2 +zlib endef define Package/zabbix-agentd/Default $(call Package/zabbix/Default) TITLE+= agentd - DEPENDS+= +libevent2-pthreads + DEPENDS:= \ + $(ICONV_DEPENDS) \ + +libevent2-pthreads \ + +libpcre2 \ + +zlib PROVIDES:=zabbix-agentd USERID:=zabbix-agent=53:zabbix-agent=53 endef -define Package/zabbix-agentd +define Package/zabbix-agentd-nossl $(call Package/zabbix-agentd/Default) + TITLE+= (no SSL) VARIANT:=nossl DEFAULT_VARIANT:=1 endef @@ -76,102 +80,110 @@ endef define Package/zabbix-agentd-openssl $(call Package/zabbix-agentd/Default) TITLE+= (with OpenSSL) - DEPENDS+= +libevent2-pthreads +libopenssl + DEPENDS+= +libopenssl + PROVIDES+= zabbix-agentd-ssl VARIANT:=openssl endef define Package/zabbix-agentd-gnutls $(call Package/zabbix-agentd/Default) TITLE+= (with GnuTLS) - DEPENDS+= +libevent2-pthreads +libgnutls + DEPENDS+= +libgnutls + PROVIDES+= zabbix-agentd-ssl VARIANT:=gnutls endef -define Package/zabbix-extra-mac80211 - $(call Package/zabbix/Default) - TITLE+= discovery/userparameters for mac80211 - DEPENDS = +zabbix-agentd @PACKAGE_MAC80211_DEBUGFS @KERNEL_DEBUG_FS - VARIANT:=no-configure -endef - -define Package/zabbix-extra-network - $(call Package/zabbix/Default) - TITLE+= discovery/userparameters for network - DEPENDS = +zabbix-agentd +libubus-lua +lua - VARIANT:=no-configure -endef - -define Package/zabbix-extra-wifi - $(call Package/zabbix/Default) - TITLE+= discovery/userparameters for wifi - DEPENDS = +zabbix-agentd +libiwinfo-lua +libubus-lua +lua - VARIANT:=no-configure -endef - -define Package/zabbix-sender +define Package/zabbix-sender/Default $(call Package/zabbix/Default) TITLE+= sender + DEPENDS:= \ + $(ICONV_DEPENDS) \ + +libpcre2 \ + +zlib PROVIDES:=zabbix-sender +endef + +define Package/zabbix-sender-nossl + $(call Package/zabbix-sender/Default) + TITLE+= (no SSL) VARIANT:=nossl DEFAULT_VARIANT:=1 endef define Package/zabbix-sender-openssl - $(call Package/zabbix/Default) - TITLE+= sender (with OpenSSL) + $(call Package/zabbix-sender/Default) + TITLE+= (with OpenSSL) DEPENDS+= +libopenssl - PROVIDES:=zabbix-sender + PROVIDES+= zabbix-sender-ssl VARIANT:=openssl endef define Package/zabbix-sender-gnutls - $(call Package/zabbix/Default) - TITLE+= sender (with GnuTLS) + $(call Package/zabbix-sender/Default) + TITLE+= (with GnuTLS) DEPENDS+= +libgnutls - PROVIDES:=zabbix-sender + PROVIDES+= zabbix-sender-ssl VARIANT:=gnutls endef -define Package/zabbix-get +define Package/zabbix-get/Default $(call Package/zabbix/Default) TITLE+= get - PROVIDES:=zabbix-get + DEPENDS:= \ + $(ICONV_DEPENDS) \ + +libpcre2 \ + +zlib + PROVIDES:=@zabbix-get +endef + +define Package/zabbix-get-nossl + $(call Package/zabbix-get/Default) + TITLE+= (no SSL) VARIANT:=nossl DEFAULT_VARIANT:=1 endef define Package/zabbix-get-openssl - $(call Package/zabbix/Default) - TITLE+= get (with OpenSSL) + $(call Package/zabbix-get/Default) + TITLE+= (with OpenSSL) DEPENDS+= +libopenssl - PROVIDES:=zabbix-get + PROVIDES+= zabbix-get-ssl VARIANT:=openssl endef define Package/zabbix-get-gnutls - $(call Package/zabbix/Default) - TITLE+= get (with GnuTLS) + $(call Package/zabbix-get/Default) + TITLE+= (with GnuTLS) DEPENDS+= +libgnutls - PROVIDES:=zabbix-get + PROVIDES+= zabbix-get-ssl VARIANT:=gnutls endef -define Package/zabbix-server/Default +define Package/zabbix-server-or-proxy/Default $(call Package/zabbix/Default) - TITLE+= server - DEPENDS += +ZABBIX_POSTGRESQL:libpq \ + DEPENDS:= \ + $(ICONV_DEPENDS) \ +ZABBIX_MYSQL:libmariadbclient \ - @(!ZABBIX_SQLITE) \ + +ZABBIX_POSTGRESQL:libpq \ + +fping \ +libevent2 \ +libevent2-pthreads \ +libevent2-extra \ - +fping + +libpcre2 \ + +zlib USERID:=zabbix-server=70:zabbix-server=70 endef -define Package/zabbix-server - $(call Package/zabbix-server/Default) +define Package/zabbix-server/Default + $(call Package/zabbix-server-or-proxy/Default) + TITLE+= server + DEPENDS+= @(!ZABBIX_SQLITE) PROVIDES:=zabbix-server +endef + +define Package/zabbix-server-nossl + $(call Package/zabbix-server/Default) + TITLE+= (no SSL) VARIANT:=nossl DEFAULT_VARIANT:=1 endef @@ -179,56 +191,29 @@ endef define Package/zabbix-server-openssl $(call Package/zabbix-server/Default) TITLE+= (with OpenSSL) - PROVIDES:=zabbix-server DEPENDS+= +libopenssl + PROVIDES+= zabbix-server-ssl VARIANT:=openssl endef define Package/zabbix-server-gnutls $(call Package/zabbix-server/Default) TITLE+= (with GnuTLS) - PROVIDES:=zabbix-server DEPENDS+= +libgnutls + PROVIDES+= zabbix-server-ssl VARIANT:=gnutls endef -define Package/zabbix-server-frontend - $(call Package/zabbix/Default) - TITLE+= server-frontend - DEPENDS += @PACKAGE_php8 \ - +php8-cgi \ - +php8-mod-gd \ - +php8-mod-bcmath \ - +php8-mod-ctype \ - +php8-mod-filter \ - +php8-mod-xmlreader \ - +php8-mod-xmlwriter \ - +php8-mod-openssl \ - +php8-mod-session \ - +php8-mod-sockets \ - +php8-mod-mbstring \ - +php8-mod-gettext \ - +ZABBIX_POSTGRESQL:php8-mod-pgsql \ - +ZABBIX_MYSQL:php8-mod-mysqli \ - @(!ZABBIX_SQLITE) - VARIANT:=no-configure -endef - define Package/zabbix-proxy/Default - $(call Package/zabbix/Default) + $(call Package/zabbix-server-or-proxy/Default) TITLE+= proxy - DEPENDS += +ZABBIX_POSTGRESQL:libpq \ - +ZABBIX_MYSQL:libmariadbclient \ - +ZABBIX_SQLITE:libsqlite3 \ - +libevent2 \ - +libevent2-pthreads \ - +libevent2-extra \ - +fping + DEPENDS+= +ZABBIX_SQLITE:libsqlite3 + PROVIDES:=zabbix-proxy endef -define Package/zabbix-proxy +define Package/zabbix-proxy-nossl $(call Package/zabbix-proxy/Default) - PROVIDES:=zabbix-proxy + TITLE+= (no SSL) VARIANT:=nossl DEFAULT_VARIANT:=1 endef @@ -236,19 +221,73 @@ endef define Package/zabbix-proxy-openssl $(call Package/zabbix-proxy/Default) TITLE+= (with OpenSSL) - PROVIDES:=zabbix-proxy DEPENDS+= +libopenssl + PROVIDES+= zabbix-proxy-ssl VARIANT:=openssl endef define Package/zabbix-proxy-gnutls $(call Package/zabbix-proxy/Default) TITLE+= (with GnuTLS) - PROVIDES:=zabbix-proxy DEPENDS+= +libgnutls + PROVIDES+= zabbix-proxy-ssl VARIANT:=gnutls endef +define Package/zabbix-extra-mac80211 + $(call Package/zabbix/Default) + TITLE+= discovery/userparameters for mac80211 + DEPENDS:= \ + @KERNEL_DEBUG_FS \ + @PACKAGE_MAC80211_DEBUGFS \ + +zabbix-agentd + VARIANT:=no-configure +endef + +define Package/zabbix-extra-network + $(call Package/zabbix/Default) + TITLE+= discovery/userparameters for network + DEPENDS:= \ + +libubus-lua \ + +lua \ + +zabbix-agentd + VARIANT:=no-configure +endef + +define Package/zabbix-extra-wifi + $(call Package/zabbix/Default) + TITLE+= discovery/userparameters for wifi + DEPENDS:= \ + +libiwinfo-lua \ + +libubus-lua +lua \ + +zabbix-agentd + VARIANT:=no-configure +endef + +define Package/zabbix-frontend-server + $(call Package/zabbix/Default) + TITLE+= frontend server + DEPENDS:= \ + @PACKAGE_php8 \ + +ZABBIX_MYSQL:php8-mod-mysqli \ + +ZABBIX_POSTGRESQL:php8-mod-pgsql \ + @(!ZABBIX_SQLITE) \ + +php8-cgi \ + +php8-mod-gd \ + +php8-mod-bcmath \ + +php8-mod-ctype \ + +php8-mod-filter \ + +php8-mod-gettext \ + +php8-mod-mbstring \ + +php8-mod-openssl \ + +php8-mod-session \ + +php8-mod-sockets \ + +php8-mod-xmlreader \ + +php8-mod-xmlwriter + PROVIDES:=zabbix-server-frontend + VARIANT:=no-configure +endef + define Package/zabbix-extra-mac80211/description An extra package for zabbix-agentd that adds a discovery rule for mac80211 wifi phy and many userparameters. It contains an suid helper to allow zabbix-agentd to still run as zabbix user and not as root. @@ -282,6 +321,10 @@ CONFIGURE_ARGS+= \ --with-libpcre2=$(STAGING_DIR)/usr/include \ --with-zlib=$(STAGING_DIR)/usr/include +ifeq ($(BUILD_VARIANT),nossl) + CONFIGURE_ARGS+= --with-openssl="no" --with-gnutls="no" +endif + ifeq ($(BUILD_VARIANT),openssl) CONFIGURE_ARGS+= --with-openssl="$(STAGING_DIR)/usr" endif @@ -304,6 +347,27 @@ endef endif +ifdef CONFIG_PACKAGE_zabbix-extra-mac80211 +define Build/Prepare + $(call Build/Prepare/Default) + mkdir -p $(PKG_BUILD_DIR)/zabbix-extra-mac80211 + $(CP) ./files/zabbix_helper_mac80211.c $(PKG_BUILD_DIR)/zabbix-extra-mac80211/ +endef + +define Build/Configure + $(call Build/Configure/Default) +endef + +# We use spaces for continued lines so that is if continuation does not parse +# properly we will get a hard error instead of subtle failure. +define Build/Compile + $(call Build/Compile/Default) + $(TARGET_CC) $(TARGET_CFLAGS) \ + $(PKG_BUILD_DIR)/zabbix-extra-mac80211/zabbix_helper_mac80211.c \ + -o $(PKG_BUILD_DIR)/zabbix-extra-mac80211/zabbix_helper_mac80211 +endef +endif + MAKE_FLAGS += ARCH="linux" define Package/zabbix/install/sbin @@ -351,51 +415,82 @@ define Package/zabbix/install/zabbix.conf.d $(1)/etc/zabbix_agentd.conf.d/$(2) endef -define Package/zabbix-agentd/conffiles -/etc/zabbix_agentd.conf +# Due to nested defines, eval, and call, the extra spaces for the nested define, +# and tabs for the part that actually executes in a shell, is essential. +define Package/zabbix-daemon/files + define Package/zabbix-$(1)-$(2)/conffiles + /etc/zabbix_$(1).conf + $(3) + endef + define Package/zabbix-$(1)-$(2)/install + $(INSTALL_DIR) $$(1)/etc/zabbix_$(1).conf.d + $(call Package/zabbix/install/sbin,$$(1),$(1)) + $(4) + endef endef -Package/zabbix-agentd-openssl/conffiles = $(Package/zabbix-agentd/conffiles) -Package/zabbix-agentd-gnutls/conffiles = $(Package/zabbix-agentd/conffiles) -define Package/zabbix-server/conffiles -/etc/zabbix_server.conf +define Package/zabbix-server/conffiles-extra /etc/config/zabbix_server /etc/sysctl.d/90-zabbix-discovery-workers.conf endef -Package/zabbix-server-openssl/conffiles = $(Package/zabbix-server/conffiles) -Package/zabbix-server-gnutls/conffiles = $(Package/zabbix-server/conffiles) -define Package/zabbix-proxy/conffiles -/etc/zabbix_proxy.conf -endef -Package/zabbix-proxy-openssl/conffiles = $(Package/zabbix-proxy/conffiles) -Package/zabbix-proxy-gnutls/conffiles = $(Package/zabbix-proxy/conffiles) - -ifdef CONFIG_PACKAGE_zabbix-extra-mac80211 -define Build/Prepare - $(call Build/Prepare/Default) - mkdir -p $(PKG_BUILD_DIR)/zabbix-extra-mac80211 - $(CP) ./files/zabbix_helper_mac80211.c $(PKG_BUILD_DIR)/zabbix-extra-mac80211/ +define Package/zabbix-agentd/install-extra + $(call Package/zabbix/install/etc,$$(1),agentd) + $(call Package/zabbix/install/init.d,$$(1),agentd) endef -define Build/Configure - $(call Build/Configure/Default) +define Package/zabbix-server/install-extra + $(call Package/zabbix/install/etc,$$(1),server) + $(call Package/zabbix/install/init.d,$$(1),server) + $(INSTALL_DIR) $$(1)/etc/sysctl.d + $(INSTALL_CONF) ./files/zabbix-discovery-workers.conf.sysctl \ + $$(1)/etc/sysctl.d/90-zabbix-discovery-workers.conf + $(INSTALL_DIR) $$(1)/etc/config + $(INSTALL_CONF) ./files/zabbix_server.config $$(1)/etc/config/zabbix_server + $(INSTALL_DIR) $$(1)/etc/uci-defaults + $(INSTALL_BIN) ./files/zabbix_server.defaults $$(1)/etc/uci-defaults/90_zabbix_server endef -define Build/Compile - $(call Build/Compile/Default) - $(TARGET_CC) $(TARGET_CFLAGS) $(PKG_BUILD_DIR)/zabbix-extra-mac80211/zabbix_helper_mac80211.c -o $(PKG_BUILD_DIR)/zabbix-extra-mac80211/zabbix_helper_mac80211 -endef -endif +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-daemon/files,agentd,\ + $(zvariant),\ + ,\ + $(call Package/zabbix-agentd/install-extra)))) +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-daemon/files,server,\ + $(zvariant),\ + $(call Package/zabbix-server/conffiles-extra),\ + $(call Package/zabbix-server/install-extra)))) +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-daemon/files,proxy,\ + $(zvariant)))) -define Package/zabbix-agentd/install - $(INSTALL_DIR) $(1)/etc/zabbix_agentd.conf.d - $(call Package/zabbix/install/sbin,$(1),agentd) - $(call Package/zabbix/install/etc,$(1),agentd) - $(call Package/zabbix/install/init.d,$(1),agentd) +# Due to nested defines, eval, and call, the extra spaces for the nested define +# is essential. +define Package/zabbix-server/postinst/Default + define Package/zabbix-server-$(1)/postinst + #!/bin/sh + [ -n "$$$${IPKG_INSTROOT}" ] || (. /etc/uci-defaults/90_zabbix_server) && rm -f /etc/uci-defaults/90_zabbix_server + exit 0 + endef endef -Package/zabbix-agentd-openssl/install = $(Package/zabbix-agentd/install) -Package/zabbix-agentd-gnutls/install = $(Package/zabbix-agentd/install) + +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-server/postinst/Default,\ + $(zvariant)))) + +define Package/zabbix-program/files + define Package/zabbix-$(1)-$(2)/install + $(call Package/zabbix/install/bin,$$(1),$(1)) + endef +endef + +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-program/files,sender,\ + $(zvariant)))) +$(foreach zvariant,nossl openssl gnutls,\ + $(eval $(call Package/zabbix-program/files,get,\ + $(zvariant)))) define Package/zabbix-extra-mac80211/install $(call Package/zabbix/install/zabbix.conf.d,$(1),mac80211) @@ -430,69 +525,27 @@ if [ -z "$${IPKG_INSTROOT}" ]; then fi endef -define Package/zabbix-sender/install - $(call Package/zabbix/install/bin,$(1),sender) -endef -Package/zabbix-sender-openssl/install = $(Package/zabbix-sender/install) -Package/zabbix-sender-gnutls/install = $(Package/zabbix-sender/install) - -define Package/zabbix-get/install - $(call Package/zabbix/install/bin,$(1),get) -endef -Package/zabbix-get-openssl/install = $(Package/zabbix-get/install) -Package/zabbix-get-gnutls/install = $(Package/zabbix-get/install) - -define Package/zabbix-server/install - $(call Package/zabbix/install/sbin,$(1),server) - $(call Package/zabbix/install/etc,$(1),server) - $(call Package/zabbix/install/init.d,$(1),server) - - $(INSTALL_DIR) $(1)/etc/sysctl.d - $(INSTALL_CONF) ./files/zabbix-discovery-workers.conf.sysctl $(1)/etc/sysctl.d/90-zabbix-discovery-workers.conf - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_CONF) ./files/zabbix_server.config $(1)/etc/config/zabbix_server - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/zabbix_server.defaults $(1)/etc/uci-defaults/90_zabbix_server -endef -Package/zabbix-server-openssl/install = $(Package/zabbix-server/install) -Package/zabbix-server-gnutls/install = $(Package/zabbix-server/install) - -define Package/zabbix-server/postinst -#!/bin/sh -[ -n "$${IPKG_INSTROOT}" ] || (. /etc/uci-defaults/90_zabbix_server) && rm -f /etc/uci-defaults/90_zabbix_server -exit 0 -endef -Package/zabbix-server-openssl/postinst = $(Package/zabbix-server/postinst) -Package/zabbix-server-gnutls/postinst = $(Package/zabbix-server/postinst) - -define Package/zabbix-server-frontend/install +define Package/zabbix-frontend-server/install $(INSTALL_DIR) $(1)/www/zabbix $(CP) $(PKG_BUILD_DIR)/ui/* $(1)/www/zabbix endef -define Package/zabbix-proxy/install - $(call Package/zabbix/install/sbin,$(1),proxy) - $(call Package/zabbix/install/etc,$(1),proxy) -endef -Package/zabbix-proxy-openssl/install = $(Package/zabbix-proxy/install) -Package/zabbix-proxy-gnutls/install = $(Package/zabbix-proxy/install) - -$(eval $(call BuildPackage,zabbix-agentd)) +$(eval $(call BuildPackage,zabbix-agentd-nossl)) $(eval $(call BuildPackage,zabbix-agentd-openssl)) $(eval $(call BuildPackage,zabbix-agentd-gnutls)) +$(eval $(call BuildPackage,zabbix-get-nossl)) +$(eval $(call BuildPackage,zabbix-get-openssl)) +$(eval $(call BuildPackage,zabbix-get-gnutls)) +$(eval $(call BuildPackage,zabbix-sender-nossl)) +$(eval $(call BuildPackage,zabbix-sender-openssl)) +$(eval $(call BuildPackage,zabbix-sender-gnutls)) +$(eval $(call BuildPackage,zabbix-proxy-nossl)) +$(eval $(call BuildPackage,zabbix-proxy-openssl)) +$(eval $(call BuildPackage,zabbix-proxy-gnutls)) +$(eval $(call BuildPackage,zabbix-server-nossl)) +$(eval $(call BuildPackage,zabbix-server-openssl)) +$(eval $(call BuildPackage,zabbix-server-gnutls)) $(eval $(call BuildPackage,zabbix-extra-mac80211)) $(eval $(call BuildPackage,zabbix-extra-network)) $(eval $(call BuildPackage,zabbix-extra-wifi)) -$(eval $(call BuildPackage,zabbix-sender)) -$(eval $(call BuildPackage,zabbix-sender-openssl)) -$(eval $(call BuildPackage,zabbix-sender-gnutls)) -$(eval $(call BuildPackage,zabbix-server)) -$(eval $(call BuildPackage,zabbix-server-openssl)) -$(eval $(call BuildPackage,zabbix-server-gnutls)) -$(eval $(call BuildPackage,zabbix-server-frontend)) -$(eval $(call BuildPackage,zabbix-proxy)) -$(eval $(call BuildPackage,zabbix-proxy-openssl)) -$(eval $(call BuildPackage,zabbix-proxy-gnutls)) -$(eval $(call BuildPackage,zabbix-get)) -$(eval $(call BuildPackage,zabbix-get-openssl)) -$(eval $(call BuildPackage,zabbix-get-gnutls)) +$(eval $(call BuildPackage,zabbix-frontend-server))