From patchwork Thu Apr 23 07:17:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Lukyanchuk X-Patchwork-Id: 1275617 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=skif-web.ru Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=skif-web.ru header.i=@skif-web.ru header.a=rsa-sha256 header.s=mail header.b=lNOeWlpT; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4977vB06bsz9sSM for ; Thu, 23 Apr 2020 17:18:29 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id DF3A022F26; Thu, 23 Apr 2020 07:18:25 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ihykzDsUQIyh; Thu, 23 Apr 2020 07:18:22 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 9D8752278C; Thu, 23 Apr 2020 07:18:22 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id DFFDD1BF3CB for ; Thu, 23 Apr 2020 07:18:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id DC08C86892 for ; Thu, 23 Apr 2020 07:18:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id efj_V-mn4bbH for ; Thu, 23 Apr 2020 07:18:19 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from forward102p.mail.yandex.net (forward102p.mail.yandex.net [77.88.28.102]) by fraxinus.osuosl.org (Postfix) with ESMTPS id C01A2864BD for ; Thu, 23 Apr 2020 07:18:18 +0000 (UTC) Received: from mxback10j.mail.yandex.net (mxback10j.mail.yandex.net [IPv6:2a02:6b8:0:1619::113]) by forward102p.mail.yandex.net (Yandex) with ESMTP id C09FB1D41658 for ; Thu, 23 Apr 2020 10:18:14 +0300 (MSK) Received: from myt6-efff10c3476a.qloud-c.yandex.net (myt6-efff10c3476a.qloud-c.yandex.net [2a02:6b8:c12:13a3:0:640:efff:10c3]) by mxback10j.mail.yandex.net (mxback/Yandex) with ESMTP id 0XNkirqyTP-IEvmVYdQ; Thu, 23 Apr 2020 10:18:14 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skif-web.ru; s=mail; t=1587626294; bh=WK8B5D2Ng+hRCrDELQlLGQX9lPbYstMlmsP8/MGDJnU=; h=Subject:To:From:Cc:Date:Message-Id; b=lNOeWlpT8QROOBKknA63NGThUY0OhRzjSfdKez7zLun4tYN1ybxuVEVVuwKNoA9Yn VBVqlwKs2M0zWaJ7TMMUEdslq8ZDwf0GGDcCQq/r3Cp8cvpGAtRURUg+yX4l4hxOzu Q2QsvfmAA0d1a/+gCp28pPLAE92zMMHMKXQayVDw= Authentication-Results: mxback10j.mail.yandex.net; dkim=pass header.i=@skif-web.ru Received: by myt6-efff10c3476a.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id nM9CrUzJev-IDWawhZP; Thu, 23 Apr 2020 10:18:13 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) From: Alexey Lukyanchuk To: buildroot@buildroot.org Date: Thu, 23 Apr 2020 10:17:52 +0300 Message-Id: <20200423071752.23893-1-skif@skif-web.ru> X-Mailer: git-send-email 2.17.1 Subject: [Buildroot] [PATCH 1/1] package/zabbix: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexey Lukyanchuk MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Signed-off-by: Alexey Lukyanchuk --- DEVELOPERS | 3 + package/Config.in | 1 + package/zabbix/Config.in | 122 +++++++++++++++++++++ package/zabbix/zabbix-agent.service | 17 +++ package/zabbix/zabbix-server.service | 17 +++ package/zabbix/zabbix.hash | 3 + package/zabbix/zabbix.mk | 154 +++++++++++++++++++++++++++ 7 files changed, 317 insertions(+) create mode 100644 package/zabbix/Config.in create mode 100644 package/zabbix/zabbix-agent.service create mode 100644 package/zabbix/zabbix-server.service create mode 100644 package/zabbix/zabbix.hash create mode 100644 package/zabbix/zabbix.mk diff --git a/DEVELOPERS b/DEVELOPERS index c57bc1c5c9..08a9aadf72 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -155,6 +155,9 @@ N: Alexey Brodkin F: board/cubietech/cubieboard2/ F: configs/cubieboard2_defconfig +N: Alexey Lukyanchuk +F: package/zabbix/ + N: Alistair Francis F: board/sifive/ F: boot/opensbi/ diff --git a/package/Config.in b/package/Config.in index a9c6f6fcbc..aa244812db 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2234,6 +2234,7 @@ endif source "package/xinetd/Config.in" source "package/xl2tp/Config.in" source "package/xtables-addons/Config.in" + source "package/zabbix/Config.in" source "package/znc/Config.in" endmenu diff --git a/package/zabbix/Config.in b/package/zabbix/Config.in new file mode 100644 index 0000000000..0ce60a37e5 --- /dev/null +++ b/package/zabbix/Config.in @@ -0,0 +1,122 @@ +config BR2_PACKAGE_ZABBIX + bool "zabbix" + depends on BR2_TOOLCHAIN_USES_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_GLIBC=y || BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y + select BR2_PACKAGE_PCRE + help + Zabbix is an enterprise-class open source distributed + monitoring solution.Zabbix is free of cost. Zabbix + is written and distributed under the GPL General Public + License version 2. + +if (!BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_GLIBC && !BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC) +comment "zabbix need glibc" +endif + +if BR2_PACKAGE_ZABBIX + +if (!BR2_PACKAGE_POSTGRESQL && !BR2_PACKAGE_MYSQL) +comment "zabbix server needs postgresql or mysql support" +endif + +config BR2_PACKAGE_ZABBIX_SERVER + bool "zabbix server" + depends on BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_MYSQL + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBEVENT + +if BR2_PACKAGE_ZABBIX_SERVER + +choice + prompt "server database backend" + +config BR2_PACKAGE_ZABBIX_SERVER_MYSQL + bool "mysql" + depends on BR2_PACKAGE_MYSQL + +config BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL + bool "postgresql" + depends on BR2_PACKAGE_POSTGRESQL + +endchoice + +if BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL || BR2_PACKAGE_ZABBIX_SERVER_MYSQL +config BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS + bool "install sql dumps" + help + Copy inicitial database dumps to /usr/zabbix/ +endif + +if (!BR2_PACKAGE_PHP || (!BR2_PACKAGE_PHP_EXT_MYSQLI && !BR2_PACKAGE_PHP_EXT_PGSQL) || \ + !BR2_PACKAGE_PHP_EXT_MBSTRING || !BR2_PACKAGE_PHP_EXT_BCMATH || \ + !BR2_PACKAGE_PHP_EXT_SOCKETS || !BR2_PACKAGE_PHP_EXT_GD || \ + !BR2_PACKAGE_PHP_EXT_LIBXML2 || !BR2_PACKAGE_PHP_EXT_CTYPE || \ + !BR2_PACKAGE_PHP_EXT_SESSION || !BR2_PACKAGE_PHP_EXT_XMLREADER || \ + !BR2_PACKAGE_PHP_EXT_XMLWRITER ) +comment "zabbix-frontend need php with extensions(bc, sockets, " +comment "mbstring, gd, libxml2, ctype, session, xmlreader, xmlwriter, mysql or postgresql" +endif + +choice + prompt "server ssl/tls backend" + +config BR2_PACKAGE_ZABBIX_SERVER_NOTLS + bool "none" + +config BR2_PACKAGE_ZABBIX_SERVER_OPENSSL + bool "openssl" + depends on BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_ZABBIX_SERVER_GNUTLS + bool "gnutls" + depends on BR2_PACKAGE_GNUTLS + +endchoice + +config BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI + bool "openipmi support" + select BR2_PACKAGE_OPENIPMI + +config BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2 + bool "libssh2 support" + select BR2_PACKAGE_LIBSSH2 + +config BR2_PACKAGE_ZABBIX_SERVER_LDAP + bool "openldap support" + select BR2_PACKAGE_OPENLDAP + +if (!BR2_USE_MMU) +comment "netsnmp support need MMU" +endif + +config BR2_PACKAGE_ZABBIX_SERVER_NETSNMP + bool "net-snmp support" + depends on BR2_USE_MMU # netsnmp + select BR2_PACKAGE_NETSNMP + +config BR2_PACKAGE_ZABBIX_SERVER_LIBCURL + bool "libcurl support" + select BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_ZABBIX_SERVER_LIBXML2 + bool "libxml2 support" + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND + bool "copy php-frontend to target" + depends on BR2_PACKAGE_PHP + depends on BR2_PACKAGE_PHP_EXT_MYSQLI || BR2_PACKAGE_PHP_EXT_PGSQL + depends on BR2_PACKAGE_PHP_EXT_BCMATH + depends on BR2_PACKAGE_PHP_EXT_SOCKETS + depends on BR2_PACKAGE_PHP_EXT_MBSTRING + depends on BR2_PACKAGE_PHP_EXT_GD + depends on BR2_PACKAGE_PHP_EXT_LIBXML2 + depends on BR2_PACKAGE_PHP_EXT_CTYPE + depends on BR2_PACKAGE_PHP_EXT_SESSION + depends on BR2_PACKAGE_PHP_EXT_XMLREADER + depends on BR2_PACKAGE_PHP_EXT_XMLWRITER + help + copy web-frontend to /usr/zabbix/php-frontend + +endif + +endif diff --git a/package/zabbix/zabbix-agent.service b/package/zabbix/zabbix-agent.service new file mode 100644 index 0000000000..8b4f45a4fc --- /dev/null +++ b/package/zabbix/zabbix-agent.service @@ -0,0 +1,17 @@ +[Unit] +Description=Zabbix Agent Daemon +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/zabbix_agentd +ExecReload=/usr/sbin/zabbix_agentd -R config_cache_reload +RuntimeDirectory=zabbix +PIDFile=/run/zabbix/zabbix_agentd.pid +User=zabbix +Group=zabbix +WatchdogSec=30s +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/package/zabbix/zabbix-server.service b/package/zabbix/zabbix-server.service new file mode 100644 index 0000000000..b8ba0d1707 --- /dev/null +++ b/package/zabbix/zabbix-server.service @@ -0,0 +1,17 @@ +[Unit] +Description=Zabbix Server Daemon +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/zabbix_server +ExecReload=/usr/sbin/zabbix_server -R config_cache_reload +RuntimeDirectory=zabbix +PIDFile=/run/zabbix/zabbix_server.pid +User=zabbix +Group=zabbix +WatchdogSec=30s +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/package/zabbix/zabbix.hash b/package/zabbix/zabbix.hash new file mode 100644 index 0000000000..5c4207f168 --- /dev/null +++ b/package/zabbix/zabbix.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 22bb28e667424ad4688f47732853f4241df0e78a7607727b043d704ba726ae0e zabbix-4.4.6.tar.gz +sha256 a823e00bc7f0844874f90fee97136f178e7debc76bace5f09e15ee8ed55f04c3 README diff --git a/package/zabbix/zabbix.mk b/package/zabbix/zabbix.mk new file mode 100644 index 0000000000..a75914a816 --- /dev/null +++ b/package/zabbix/zabbix.mk @@ -0,0 +1,154 @@ +################################################################################ +# +# zabbix +# +################################################################################ + +ZABBIX_VERSION = 4.4.6 +ZABBIX_SITE = https://sourceforge.net/projects/zabbix/files +ZABBIX_LICENSE = GPL-2.0 +ZABBIX_LICENSE_FILES = README + +ZABBIX_DEPENDENCIES = pcre +ZABBIX_CONF_OPTS = --with-libpcre=$(STAGING_DIR)/usr/bin/ \ + --enable-agent + +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION +ZABBIX_SYSTEMD_UNITS += zabbix-agent.service + +define ZABBIX_INSTALL_INIT_SYSTEMD + $(foreach unit,$(ZABBIX_SYSTEMD_UNITS),\ + $(INSTALL) -D -m 0644 $(ZABBIX_PKGDIR)/$(unit) $(TARGET_DIR)/usr/lib/systemd/system/$(unit) && \ + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants && \ + ln -fs -r $(TARGET_DIR)/usr/lib/systemd/system/$(unit) $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(unit) + ) +endef + +define ZABBIX_USERS + zabbix -1 zabbix -1 !- /var/lib/zabbix - zabbix zabbix user +endef + +define ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION + $(SED) 's%\#\ PidFile=/tmp/zabbix_agentd.pid%PidFile=/run/zabbix/zabbix_agentd.pid%g' $(TARGET_DIR)/etc/zabbix_agentd.conf +endef + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER),y) +ZABBIX_SYSTEMD_UNITS += zabbix-server.service +ZABBIX_CONF_OPTS += --enable-server \ + --with-libevent \ + --with-libpthread=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += libevent zlib +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION + +# Need openipmi in staging dir. Patch submitted at 2019.12.16 +# Before this patch enabled, use this crutch +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI),y) +ZABBIX_CONF_OPTS += --with-openipmi=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += openipmi +ZABBIX_PRE_CONFIGURE_HOOKS += BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS + +define BR2_PACKAGE_ZABBIX_SERVER_OPENIPMI_FIX_LIBS + if [ ! -f $(STAGING_DIR)/usr/lib/libOpenIPMI.so ]; then \ + cp -rf $(TARGET_DIR)/usr/lib/libOpenIPMI* $(STAGING_DIR)/usr/lib/ ;\ + cp -rf $(TARGET_DIR)/usr/include/OpenIPMI $(STAGING_DIR)/usr/include/ ;\ + fi +endef +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBCURL),y) +ZABBIX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr/bin/curl-config +ZABBIX_DEPENDENCIES += libcurl +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBXML2),y) +ZABBIX_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr/bin/xml2-config +ZABBIX_DEPENDENCIES += libxml2 +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_NETSNMP),y) +ZABBIX_CONF_OPTS += --with-net-snmp=$(STAGING_DIR)/usr/bin/net-snmp-config +ZABBIX_DEPENDENCIES += netsnmp +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LDAP),y) +ZABBIX_CONF_OPTS += --with-ldap=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += openldap +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_LIBSSH2),y) +ZABBIX_CONF_OPTS += --with-ssh2=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += libssh2 +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_OPENSSL),y) +ZABBIX_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_GNUTLS),y) +ZABBIX_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr +ZABBIX_DEPENDENCIES += gnutls +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_FRONTEND),y) +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_FRONTEND + +define ZABBIX_SERVER_COPY_FRONTEND + mkdir -p $(TARGET_DIR)/usr/zabbix/php-frontend/ + cp -r $(@D)/frontends/php/* $(TARGET_DIR)/usr/zabbix/php-frontend/ +endef + +endif + +define ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION + $(SED) 's%\#\ PidFile=/tmp/zabbix_server.pid%PidFile=/run/zabbix/zabbix_server.pid%g' $(TARGET_DIR)/etc/zabbix_server.conf +endef + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_MYSQL),y) +ZABBIX_DEPENDENCIES += mysql +ZABBIX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr/bin/mysql_config +# Need package/mariadb/0003-add-sysroot-path-to-mariadb_config.patch by Ryan Coe +# While this patch not included, use this crutch +ZABBIX_PRE_CONFIGURE_HOOKS += ZABBIX_DISABLE_MARIADB_CONFIG +ZABBIX_POST_CONFIGURE_HOOKS += ZABBIX_ENABLE_MARIADB_CONFIG + +define ZABBIX_DISABLE_MARIADB_CONFIG + if [ -f "$(STAGING_DIR)/usr/bin/mariadb_config" ]; then \ + mv $(STAGING_DIR)/usr/bin/mariadb_config $(STAGING_DIR)/usr/bin/mariadb_config_save; \ + fi +endef + +define ZABBIX_ENABLE_MARIADB_CONFIG + if [ -f "$(STAGING_DIR)/usr/bin/mariadb_confi_save" ]; then \ + mv $(STAGING_DIR)/usr/bin/mariadb_config_save $(STAGING_DIR)/usr/bin/mariadb_config; \ + fi +endef + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y) +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_MYSQL +endif + +define ZABBIX_SERVER_PREPARE_MYSQL + mkdir -p $(TARGET_DIR)/usr/zabbix/mysql_schema/ + cp -r $(@D) $(@D)/database/mysql/*\.sql $(TARGET_DIR)/usr/zabbix/mysql_schema/ +endef + +endif + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL),y) +ZABBIX_DEPENDENCIES += postgresql +ZABBIX_CONF_OPTS += --with-postgresql=$(STAGING_DIR)/usr/bin/pg_config + +define ZABBIX_SERVER_PREPARE_POSTGRESQL + mkdir -p $(TARGET_DIR)/usr/zabbix/postgresql_schema + cp -r $(@D)/database/postgresql/*\.sql $(TARGET_DIR)/usr/zabbix/postgresql_schema/ +endef + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_COPY_DUMPS),y) +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_POSTGRESQL +endif + +endif + +endif + +$(eval $(autotools-package))