net-analyzer/netdata: openrc and systemd fixes
authorCraig Andrews <candrews@gentoo.org>
Wed, 4 Oct 2017 13:19:52 +0000 (09:19 -0400)
committerCraig Andrews <candrews@gentoo.org>
Wed, 4 Oct 2017 13:20:22 +0000 (09:20 -0400)
Create the var/cache/netdata directory if it doesn't already exist in the systemd script
Fix the path to the netdata executable in the openrc script
Eliminate bashisms in openrc script

Gentoo-bug: 633380
Package-Manager: Portage-2.3.11, Repoman-2.3.3

net-analyzer/netdata/files/netdata-1.8.0-openrc-fixes.patch [new file with mode: 0644]
net-analyzer/netdata/netdata-1.8.0-r1.ebuild [new file with mode: 0644]
net-analyzer/netdata/netdata-9999.ebuild

diff --git a/net-analyzer/netdata/files/netdata-1.8.0-openrc-fixes.patch b/net-analyzer/netdata/files/netdata-1.8.0-openrc-fixes.patch
new file mode 100644 (file)
index 0000000..517eaec
--- /dev/null
@@ -0,0 +1,105 @@
+From 3f4db620484e777265a7e5f0cfe10ba840f7eefd Mon Sep 17 00:00:00 2001
+From: Craig Andrews <candrews@integralblue.com>
+Date: Tue, 3 Oct 2017 10:52:02 -0400
+Subject: [PATCH 1/3] Eliminate bashisms in openrc script
+
+---
+ system/netdata-openrc.in | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/system/netdata-openrc.in b/system/netdata-openrc.in
+index 465e1232c..5c4eafa57 100644
+--- a/system/netdata-openrc.in
++++ b/system/netdata-openrc.in
+@@ -38,13 +38,13 @@ depend() {
+ }
+ start_post() {
+-      if [[ ! -f @sysconfdir_POST@/netdata/netdata.conf ]]; then
++      if [ ! -f @sysconfdir_POST@/netdata/netdata.conf ]; then
+               ebegin "Downloading default configuration to @sysconfdir_POST@/netdata/netdata.conf"
+               sleep 2
+               curl -s -o @sysconfdir_POST@/netdata/netdata.conf.new "${NETDATA_CONFIG_URL}"
+               ret=$?
+-              if [[ $ret -eq 0 && -s @sysconfdir_POST@/netdata/netdata.conf.new ]]; then
+-                      mv @sysconfdir_POST@/netdata/netdata.conf{.new,}
++              if [ $ret -eq 0 && -s @sysconfdir_POST@/netdata/netdata.conf.new ]; then
++                      mv @sysconfdir_POST@/netdata/netdata.conf.new @sysconfdir_POST@/netdata/netdata.conf
+               else
+                       ret=1
+                       rm @sysconfdir_POST@/netdata/netdata.conf.new 2>/dev/null
+@@ -57,20 +57,20 @@ stop_post() {
+       local result ret=0 count=0 sigkill=0
+       ebegin "Waiting for netdata to save its database"
+-      while [[ -f "${pidfile}" ]]; do
+-              if [[ $count -gt ${NETDATA_WAIT_EXIT_TIMEOUT} ]]; then
++      while [ -f "${pidfile}" ]; do
++              if [ $count -gt ${NETDATA_WAIT_EXIT_TIMEOUT} ]; then
+                       sigkill=1
+                       break
+               fi
+-              count=$[count + 1]
++              count=$((count + 1))
+               kill -0 $(cat ${pidfile}) 2>/dev/null
+               ret=$?
+               test $ret -eq 0 && sleep 1
+       done
+       eend $sigkill
+-      if [[ $sigkill -eq 1 && -f "${pidfile}" ]]; then
++      if [ $sigkill -eq 1 && -f "${pidfile}" ]; then
+               ebegin "Netdata is taking too long to exit, forcing it to quit"
+               kill -SIGKILL $(cat ${pidfile}) 2>/dev/null
+               eend $?
+
+From b6d80fb3a3ae60077cbbc1e8dd0d01e1eb3ff67d Mon Sep 17 00:00:00 2001
+From: Craig Andrews <candrews@integralblue.com>
+Date: Tue, 3 Oct 2017 14:56:53 -0400
+Subject: [PATCH 2/3] Fix the path to the netdata executable in the openrc
+ script
+
+Fixes #2826
+---
+ system/netdata-openrc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/system/netdata-openrc.in b/system/netdata-openrc.in
+index 5c4eafa57..512d48278 100644
+--- a/system/netdata-openrc.in
++++ b/system/netdata-openrc.in
+@@ -23,7 +23,7 @@
+ extra_started_commands="getconf"
+ pidfile="/run/netdata.pid"
+-command="${NETDATA_INSTALL_PATH}/usr/sbin/netdata"
++command="@sbindir_POST@/netdata"
+ command_background="yes"
+ command_args="-P ${pidfile} ${NETDATA_EXTRA_ARGS}"
+ # start_stop_daemon_args="-u ${NETDATA_OWNER}"
+
+From b5823e7865851c3cc2381c4fb45716f269a4e85f Mon Sep 17 00:00:00 2001
+From: Craig Andrews <candrews@integralblue.com>
+Date: Tue, 3 Oct 2017 15:56:39 -0400
+Subject: [PATCH 3/3] Create the var/cache/netdata directory if it doesn't
+ already exist in the systemd script
+
+---
+ system/netdata.service.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/system/netdata.service.in b/system/netdata.service.in
+index 1d4af988a..58cdff225 100644
+--- a/system/netdata.service.in
++++ b/system/netdata.service.in
+@@ -9,6 +9,9 @@ Group=netdata
+ RuntimeDirectory=netdata
+ RuntimeDirectoryMode=0775
+ ExecStart=@sbindir_POST@/netdata -P /run/netdata/netdata.pid -D
++ExecStartPre=/bin/mkdir -p @localstatedir_POST@/cache/netdata
++ExecStartPre=/bin/chown -R netdata:netdata @localstatedir_POST@/cache/netdata
++PermissionsStartOnly=true
+ # saving a big db on slow disks may need some time
+ TimeoutStopSec=60
diff --git a/net-analyzer/netdata/netdata-1.8.0-r1.ebuild b/net-analyzer/netdata/netdata-1.8.0-r1.ebuild
new file mode 100644 (file)
index 0000000..d23f323
--- /dev/null
@@ -0,0 +1,108 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
+
+inherit autotools fcaps linux-info python-r1 systemd user
+
+if [[ ${PV} == *9999 ]] ; then
+       EGIT_REPO_URI="https://github.com/firehol/${PN}.git"
+       inherit git-r3
+else
+       SRC_URI="https://github.com/firehol/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+       KEYWORDS="~amd64 ~x86"
+fi
+
+DESCRIPTION="Linux real time system monitoring, done right!"
+HOMEPAGE="https://github.com/firehol/netdata https://my-netdata.io/"
+PATCHES=( "${FILESDIR}/${P}-openrc-fixes.patch" )
+
+LICENSE="GPL-3+ MIT BSD"
+SLOT="0"
+IUSE="caps +compression cpu_flags_x86_sse2 ipmi mysql nfacct nodejs postgres +python"
+REQUIRED_USE="
+       mysql? ( python )
+       python? ( ${PYTHON_REQUIRED_USE} )"
+# most unconditional dependencies are for plugins.d/charts.d.plugin:
+RDEPEND="
+       >=app-shells/bash-4:0
+       || (
+               net-analyzer/netcat6
+               net-analyzer/netcat
+       )
+       net-analyzer/tcpdump
+       net-analyzer/traceroute
+       net-misc/curl
+       net-misc/wget
+       sys-apps/util-linux
+       virtual/awk
+       caps? ( sys-libs/libcap )
+       compression? ( sys-libs/zlib )
+       ipmi? ( sys-libs/freeipmi )
+       nfacct? (
+               net-firewall/nfacct
+               net-libs/libmnl
+       )
+       nodejs? ( net-libs/nodejs )
+       python? (
+               ${PYTHON_DEPS}
+               dev-python/pyyaml[${PYTHON_USEDEP}]
+               mysql? (
+                       || (
+                               dev-python/mysqlclient[${PYTHON_USEDEP}]
+                               dev-python/mysql-python[${PYTHON_USEDEP}]
+                       )
+               )
+               postgres? ( dev-python/psycopg:2[${PYTHON_USEDEP}] )
+       )"
+DEPEND="${RDEPEND}
+       virtual/pkgconfig"
+
+: ${NETDATA_USER:=netdata}
+: ${NETDATA_GROUP:=netdata}
+
+FILECAPS=(
+       'cap_dac_read_search,cap_sys_ptrace+ep' 'usr/libexec/netdata/plugins.d/apps.plugin'
+)
+
+pkg_setup() {
+       linux-info_pkg_setup
+
+       enewgroup ${PN}
+       enewuser ${PN} -1 -1 / ${PN}
+}
+
+src_prepare() {
+       default
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --localstatedir="${EPREFIX}"/var \
+               --with-user=${NETDATA_USER} \
+               $(use_enable nfacct plugin-nfacct) \
+               $(use_enable ipmi plugin-freeipmi) \
+               $(use_enable cpu_flags_x86_sse2 x86-sse) \
+               $(use_with compression zlib)
+}
+
+src_install() {
+       default
+
+       rm -rf "${D}/var/cache/netdata" || die
+
+       # Remove unneeded .keep files
+       find "${ED}" -name ".keep" -delete || die
+
+       fowners -Rc ${NETDATA_USER}:${NETDATA_GROUP} /var/log/netdata
+       fowners -Rc ${NETDATA_USER}:${NETDATA_GROUP} /var/lib/netdata
+
+       fowners -Rc root:${NETDATA_GROUP} /usr/share/${PN}
+
+       newinitd system/netdata-openrc ${PN}
+       systemd_dounit system/netdata.service
+       insinto /etc/netdata
+       doins system/netdata.conf
+}
index e2948db1d7647bc8e2212866d55fb04f84d93e99..7c343955b89791b8c50e4ca27d21808fd8df9a53 100644 (file)
@@ -90,8 +90,12 @@ src_configure() {
 src_install() {
        default
 
+       rm -rf "${D}/var/cache/netdata" || die
+
+       # Remove unneeded .keep files
+       find "${ED}" -name ".keep" -delete || die
+
        fowners -Rc ${NETDATA_USER}:${NETDATA_GROUP} /var/log/netdata
-       fowners -Rc ${NETDATA_USER}:${NETDATA_GROUP} /var/cache/netdata
        fowners -Rc ${NETDATA_USER}:${NETDATA_GROUP} /var/lib/netdata
 
        fowners -Rc root:${NETDATA_GROUP} /usr/share/${PN}