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 <dfdpublic@wildtechgarden.ca>
This commit is contained in:
Daniel F. Dickinson
2026-01-25 18:11:10 -05:00
committed by Michael Heimpold
parent 0a897f7042
commit 75146ea2be

View File

@@ -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))