From patchwork Wed Nov 20 08:40:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Lukyanchuk X-Patchwork-Id: 1197981 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.138; helo=whitealder.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.b="pxREXUac"; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47HxDQ6G0yz9sPV for ; Wed, 20 Nov 2019 19:48:22 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 3BA53879E1; Wed, 20 Nov 2019 08:48:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uJEB22KI7AIh; Wed, 20 Nov 2019 08:48:19 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 83B278780A; Wed, 20 Nov 2019 08:48:18 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id B8F5A1BF44C for ; Wed, 20 Nov 2019 08:48:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 9090988454 for ; Wed, 20 Nov 2019 08:48:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zNmE6dTG+Zod for ; Wed, 20 Nov 2019 08:48:13 +0000 (UTC) X-Greylist: delayed 00:07:03 by SQLgrey-1.7.6 Received: from forward100p.mail.yandex.net (forward100p.mail.yandex.net [77.88.28.100]) by hemlock.osuosl.org (Postfix) with ESMTPS id 2EAD488493 for ; Wed, 20 Nov 2019 08:48:13 +0000 (UTC) Received: from mxback7j.mail.yandex.net (mxback7j.mail.yandex.net [IPv6:2a02:6b8:0:1619::110]) by forward100p.mail.yandex.net (Yandex) with ESMTP id D69A75981CF1 for ; Wed, 20 Nov 2019 11:41:06 +0300 (MSK) Received: from myt2-9cef5b996421.qloud-c.yandex.net (myt2-9cef5b996421.qloud-c.yandex.net [2a02:6b8:c00:1caf:0:640:9cef:5b99]) by mxback7j.mail.yandex.net (mxback/Yandex) with ESMTP id hLtp4HzanV-f6LikrdQ; Wed, 20 Nov 2019 11:41:06 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skif-web.ru; s=mail; t=1574239266; bh=7P27dbtwdY0yrEfNYl+MrADzKr81Uy22QKWQW+GM3sg=; h=Subject:To:From:Cc:Date:Message-Id; b=pxREXUacQl9CEkF+FhfV1Vf+dM/t0GKhS3oBvrVIT85ae9Pu0fDZVgvXxy+2Hvwe1 4yo/I0qAY1pM57PoojLQ9kLrf6K3wJCz0k7nIaxtsG6fJfsJcaPhCfQgXgLJH0e1Gw 9ALd/RDtv/6txOY5whP38IRiN25H1f5CI3kw+J8s= Authentication-Results: mxback7j.mail.yandex.net; dkim=pass header.i=@skif-web.ru Received: by myt2-9cef5b996421.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id q4S37Fa4AP-f5VaC68a; Wed, 20 Nov 2019 11:41:05 +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: Wed, 20 Nov 2019 11:40:43 +0300 Message-Id: <20191120084043.975653-1-skif@skif-web.ru> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v4] 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 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Signed-off-by: Alexey Lukyanchuk --- DEVELOPERS | 3 ++ package/Config.in | 1 + package/zabbix/Config.in | 46 ++++++++++++++++ package/zabbix/zabbix-agent.service | 18 +++++++ package/zabbix/zabbix-server.service | 18 +++++++ package/zabbix/zabbix.hash | 2 + package/zabbix/zabbix.mk | 78 ++++++++++++++++++++++++++++ 7 files changed, 166 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 991be89849..94e98ff794 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -133,6 +133,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 f72c77b416..51687f0900 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2141,6 +2141,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..09c1d4b017 --- /dev/null +++ b/package/zabbix/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_ZABBIX + bool "zabbix" + depends on BR2_USE_MMU # netsnmp + select BR2_PACKAGE_ZABBIX_CLIENT + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_NETSNMP + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBCURL # runtime + 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_PACKAGE_ZABBIX + +config BR2_PACKAGE_ZABBIX_SERVER + bool "zabbix server" + depends on BR2_PACKAGE_ORACLE_MYSQL || BR2_PACKAGE_POSTGRESQL +comment "zabbix server needs postgresql or mysql server" + +if BR2_PACKAGE_ZABBIX_SERVER + +choice + prompt "server database backend" + +config BR2_PACKAGE_ZABBIX_SERVER_MYSQL + bool "mysql" + depends on BR2_PACKAGE_ORACLE_MYSQL + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_ORACLE_MYSQL_SERVER # mysql + +config BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL + bool "postgresql" + depends on BR2_USE_WCHAR # postgresql + depends on !BR2_STATIC_LIBS # postgresql + depends on BR2_PACKAGE_POSTGRESQL + +endchoice + +endif + +endif diff --git a/package/zabbix/zabbix-agent.service b/package/zabbix/zabbix-agent.service new file mode 100644 index 0000000000..fd86650cc2 --- /dev/null +++ b/package/zabbix/zabbix-agent.service @@ -0,0 +1,18 @@ +[Unit] +Description=Zabbix Agent Daemon +After=network.target + +[Service] +Type=forking +User=zabbix +Group=zabbix +RuntimeDirectory=zabbix +RuntimeDirectoryMode=0755 +PIDFile=/run/zabbix/zabbix_agentd.pid +ExecStart=/usr/sbin/zabbix_agentd +ExecReload=/usr/sbin/zabbix_agentd -R config_cache_reload +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..6e244f43a2 --- /dev/null +++ b/package/zabbix/zabbix-server.service @@ -0,0 +1,18 @@ +[Unit] +Description=Zabbix Server Daemon +After=network.target + +[Service] +Type=forking +User=zabbix +Group=zabbix +RuntimeDirectory=zabbix +RuntimeDirectoryMode=0755 +PIDFile=/run/zabbix/zabbix_server.pid +ExecStart=/usr/sbin/zabbix_server +ExecReload=/usr/sbin/zabbix_server -R config_cache_reload +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..1d8759936b --- /dev/null +++ b/package/zabbix/zabbix.hash @@ -0,0 +1,2 @@ +# sha256 locally computed: +sha256 f6de0e0b91908d8da72d087931fb232988b391d3724d7c951833488fd96942bd zabbix-4.2.4.tar.gz diff --git a/package/zabbix/zabbix.mk b/package/zabbix/zabbix.mk new file mode 100644 index 0000000000..94130e9a29 --- /dev/null +++ b/package/zabbix/zabbix.mk @@ -0,0 +1,78 @@ +################################################################################ +# +#zabbix +# +################################################################################ + +ZABBIX_VERSION = 4.2.4 +ZABBIX_SITE = https://sourceforge.net/projects/zabbix/files +ZABBIX_LICENSE = GPL-2.0 +ZABBIX_LICENSE_FILES = README + +ZABBIX_DEPENDENCIES = host-libcurl libevent libxml2 netsnmp libcurl pcre zlib host-libxml2 +ZABBIX_CONF_OPTS = \ + --with-libpcre=$(STAGING_DIR)/usr/bin/ \ + --with-libcurl=$(STAGING_DIR)/usr/bin/curl-config \ + --with-libevent \ + --with-libxml2=$(STAGING_DIR)/usr/bin/xml2-config \ + --with-net-snmp=$(STAGING_DIR)/usr/bin/net-snmp-config \ + --enable-agent + +ZABBIX_SYSTEMD_UNITS = zabbix-agent.service +ZABBIX_POST_INSTALL_TARGET_HOOKS = ZABBIX_CLIENT_CHANGE_PIDFILE_LOCATION + +define ZABBIX_INSTALL_INIT_SYSTEMD + $(foreach unit,$(ZABBIX_SYSTEMD_UNITS),\ + $(INSTALL) -D -m 644 $(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 -i '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 +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_COPY_FRONTEND +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION + +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 + +define ZABBIX_SERVER_CHANGE_PIDFILE_LOCATION + sed -i '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 +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)/database/mysql/*\.sql $(TARGET_DIR)/usr/zabbix/mysql_schema/ +endef + +ifeq ($(BR2_PACKAGE_ZABBIX_SERVER_POSTGRESQL),y) +ZABBIX_DEPENDENCIES += postgresql +ZABBIX_CONF_OPTS += --with-postgresql=$(STAGING_DIR)/usr/bin/pg_config +ZABBIX_POST_INSTALL_TARGET_HOOKS += ZABBIX_SERVER_PREPARE_POSTGRESQL +endif + +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 + +endif + +$(eval $(autotools-package))