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