net-analyzer/check_mk: version bump, drop bundled livestatus
authorIan Stakenvicius <axs@gentoo.org>
Tue, 24 Jan 2017 17:56:48 +0000 (12:56 -0500)
committerIan Stakenvicius <axs@gentoo.org>
Wed, 1 Feb 2017 21:34:15 +0000 (16:34 -0500)
Significant modifications to sources (shebangs, direct calls to python)
to ensure python2 is used instead of python3.

Livestatus is no longer built and installed, now net-analyzer/mk-livestatus
is expected to be used instead.

net-analyzer/check_mk_agent (new package soon to be committed) is
hard-blocked; stripping the agent out of this package seems not
appropriate as the bundled copies should still exist anyways.

Nagios4 use-flag added to enforce synchronization of nagios-core dep with
the mk-livestatus dependency.  Note: not sure if nagios/icigna
dependencies are needed when not building livestatus anymore; check_mk by
default expects a full nagios/icigna/nagvis/pnp4nagios deployment (for
multisite at least) but whether the package should enforce this via
dependencies is uncertain.

Package-Manager: portage-2.3.0

net-analyzer/check_mk/Manifest
net-analyzer/check_mk/check_mk-1.2.8_p16.ebuild [new file with mode: 0644]
net-analyzer/check_mk/files/check_mk-1.2.8p16-setup.sh.patch [new file with mode: 0644]
net-analyzer/check_mk/metadata.xml

index ba061f483c4285e5803050f4d259c930ca30c74c..1f57ea8ab4d9c494a6d74fa5864268edf32d2dff 100644 (file)
@@ -1 +1,2 @@
 DIST check_mk-1.2.4p5.tar.gz 6626768 SHA256 e71963542d9d79d98e69aadccb37d05552829acab14665207d6af10415179c21 SHA512 ca2c06288b91f44f017ebbc45bd6712ddcbebdc4e293598b793ae1ad19ad96814983a30bd66ee2f19940dc1d1439fba2ae2b171dcbe0e670ce1b7d0a8c18d890 WHIRLPOOL 7399706ac33246e46795c4c55737043782d8ca12b8e9d03bcd5b4f34f3335baf57d699b4f531e32e732bdb9cb3310a803e93cb5efd593f7986395b88af08939b
+DIST check_mk-1.2.8p16.tar.gz 16298683 SHA256 b161d4e37b4313696c93b9272626bcc367c90f4be1798bd283c3b581795e1747 SHA512 601c76b2b62de9176122c69b011b5f7ac6b71650d1b3e411c103f5e9c3e91256ce8d3db6fcd1edc2a11f86dcba4e8ea18ec5a1f9f3eae5b25a4bb3ba712341eb WHIRLPOOL 7ef193c4e9087866ae635e198b2028abb1c245914dcf81240b6939c76a83ab5a4389de7d0e363239bbf12467cd276790d9c85553354ad10a7da1612054438fea
diff --git a/net-analyzer/check_mk/check_mk-1.2.8_p16.ebuild b/net-analyzer/check_mk/check_mk-1.2.8_p16.ebuild
new file mode 100644 (file)
index 0000000..4607dd5
--- /dev/null
@@ -0,0 +1,350 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit toolchain-funcs user systemd python-single-r1
+
+DESCRIPTION="General purpose Nagios/Icinga plugin for retrieving data"
+HOMEPAGE="http://mathias-kettner.de/check_mk.html"
+
+MY_P="${P/_p/p}"
+MY_PV="${MY_P/check_mk-/}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="agent-only apache_status livestatus logwatch mysql +nagios4
+       nfsexports oracle postgres smart wato xinetd zypper"
+
+RDEPEND="wato? ( app-admin/sudo )
+       xinetd? ( || ( sys-apps/xinetd sys-apps/systemd ) )
+       !agent-only? (
+               www-servers/apache[apache2_modules_access_compat(+)]
+               www-apache/mod_python[${PYTHON_USEDEP}]
+               livestatus? ( net-analyzer/mk-livestatus[nagios4=] )
+               nagios4? ( >=net-analyzer/nagios-core-4 )
+               !nagios4? ( || ( <net-analyzer/nagios-core-4 net-analyzer/icinga ) )
+       )
+       media-libs/libpng:0
+       !!net-analyzer/check_mk_agent"
+DEPEND="${DEPEND}"
+
+REQUIRED_USE="
+       livestatus? ( !agent-only )
+       wato? ( !agent-only )"
+
+SRC_URI="http://mathias-kettner.de/download/${MY_P}.tar.gz"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+       # modify setup.sh for gentoo
+       eapply "${FILESDIR}"/${PN}-1.2.8p16-setup.sh.patch
+       eapply_user
+}
+
+src_configure() {
+       if has_version net-analyzer/nagios-core; then
+               einfo "Using nagios as net-analyzer/nagios-core found"
+               export mydaemon=nagios
+               export nagpipe=/var/nagios/rw/nagios.cmd
+               export check_result_path=/var/nagios/spool/checkresults
+               export nagios_status_file=/var/nagios/status.dat
+               export rrd_path=/var/nagios/perfdata
+               if use livestatus; then
+                       export livesock=/var/nagios/rw/live
+               fi
+       else
+               einfo "Using icinga as net-analyzer/nagios-core not found"
+               export mydaemon=icinga
+               export nagpipe=/var/lib/icinga/rw/icinga.cmd
+               export check_result_path=/var/lib/icinga/spool/checkresults
+               export nagios_status_file=/var/lib/icinga/status.dat
+               export rrd_path=/var/lib/icinga/perfdata
+               if use livestatus; then
+                       export livesock=/var/lib/icigna/rw/live
+               fi
+       fi
+
+       export nagiosuser=${mydaemon}
+       export nagios_binary=/usr/sbin/${mydaemon}
+       export nagios_config_file=/etc/${mydaemon}/${mydaemon}.cfg
+       export nagconfdir=/etc/${mydaemon}/check_mk.d
+       export nagios_startscript=/etc/init.d/${mydaemon}
+       export htpasswd_file=/etc/${mydaemon}/htpasswd.users
+       export nagios_auth_name="${mydaemon} Access"
+       export docdir=/usr/share/doc/${PF}
+       export checkmandir=/usr/share/doc/${PF}/checks
+       export check_icmp_path=/usr/lib/nagios/plugins/check_icmp
+       export wwwuser=apache
+       export wwwgroup=apache
+       export apache_config_dir=/etc/apache2/modules.d/
+       export enable_livestatus=no
+       export STRIPPROG=/bin/true
+
+       mkdir -p "${S}"/usr/share/check_mk/agents || die
+       cat <<EOF >"${S}"/usr/share/check_mk/agents/Makefile
+all: waitmax
+
+waitmax: waitmax.c
+       \$(CC) \$(CFLAGS) \$< -o \$@ \$(LDFLAGS)
+
+EOF
+}
+
+src_compile() {
+       DESTDIR=${S} ./setup.sh --yes || die "Error while running setup.sh"
+
+       # compile waitmax
+       pushd "${S}"/usr/share/check_mk/agents &>/dev/null || die
+       if [[ -f waitmax ]]; then
+               rm waitmax || die "Couldn't delete precompiled waitmax file"
+       fi
+       emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)"
+       popd &>/dev/null || die
+
+       # Fix broken png files
+       einfo "Fixing broken png files."
+       local x=0;
+       for png in "${S}"/usr/share/check_mk/web/htdocs/images/icons/*.png ; do
+               echo ${png#${S}}
+               pngfix -q --out="${T}"/out.png "${png}" && \
+               mv -f "${T}"/out.png "${png}" || die
+               x=$((x+1))
+       done
+       einfo "$x png files processed."
+
+       # enforce the correct python in these wrapper scripts
+       sed -i -e "/exec/s/python /${EPYTHON} /" usr/bin/{check_mk,mkp} || die
+       sed -i -e "/command_line/s#python /var#${EPYTHON} /var#" \
+               usr/share/check_mk/check_mk_templates.cfg || die
+
+       # fix all shebangs
+       find usr -type f -name \*.py |while read py ; do
+               grep '^#!' ${py} &>/dev/null && \
+               python_fix_shebang ${py}
+       done
+}
+
+src_install() {
+       if ! use agent-only; then
+               # Apache configuration
+               insinto /etc/apache2/modules.d
+               doins etc/apache2/modules.d/zzz_check_mk.conf
+
+               if use wato; then
+                       # sudoers configuration
+                       cat << EOF > "${T}"/check_mk || die
+# Needed for WATO - the Check_MK Web Administration Tool
+Defaults:apache !requiretty
+apache ALL = (root) NOPASSWD: /usr/bin/check_mk --automation *
+EOF
+                       insinto /etc/sudoers.d
+                       doins "${T}"/check_mk
+               fi
+
+               # check_mk configuration
+               #keepdir /etc/check_mk
+               insinto /etc/check_mk
+               doins etc/check_mk/main.mk
+               doins etc/check_mk/main.mk-${MY_PV}
+               doins etc/check_mk/multisite.mk
+               doins etc/check_mk/multisite.mk-${MY_PV}
+               #keepdir /etc/check_mk/conf.d
+               insinto /etc/check_mk/conf.d
+               doins etc/check_mk/conf.d/README
+               dodir /etc/check_mk/conf.d/wato
+               touch "${D}"/etc/check_mk/conf.d/distributed_wato.mk
+               #keepdir /etc/check_mk/multisite.d
+               dodir /etc/check_mk/multisite.d/wato
+               touch "${D}"/etc/check_mk/multisite.d/sites.mk
+
+               insinto /etc/${mydaemon}
+               doins etc/${mydaemon}/auth.serials
+
+               # Nagios / Icinga check_mk templates
+               insinto /etc/${mydaemon}/check_mk.d
+               doins etc/${mydaemon}/check_mk.d/check_mk_templates.cfg
+
+               dobin usr/bin/check_mk
+               dobin usr/bin/mkp
+               dosym /usr/bin/check_mk /usr/bin/cmk
+
+               # remove compiled agent_modbus
+               if [[ -f ${S}/usr/share/doc/${PF}/treasures/modbus/agent_modbus ]]; then
+                       rm "${S}"/usr/share/doc/${PF}/treasures/modbus/agent_modbus || die "Couldn't remove precompiled agent_modbus"
+               fi
+
+               insinto /usr/share/check_mk
+               doins -r usr/share/check_mk/*
+
+               keepdir /var/lib/check_mk/autochecks
+               keepdir /var/lib/check_mk/cache
+               keepdir /var/lib/check_mk/counters
+               keepdir /var/lib/check_mk/inventory
+               keepdir /var/lib/check_mk/log
+               keepdir /var/lib/check_mk/logwatch
+               keepdir /var/lib/check_mk/notify
+               keepdir /var/lib/check_mk/precompiled
+               keepdir /var/lib/check_mk/snmpwalks
+               keepdir /var/lib/check_mk/tmp
+               keepdir /var/lib/check_mk/wato
+               keepdir /var/lib/check_mk/web
+
+               insinto /var/lib/check_mk/packages
+               doins var/lib/check_mk/packages/check_mk
+
+               # Update check_mk defaults
+               sed -i -e "s#^\(check_mk_automation\s*= 'sudo -u\) portage \(.*\)\$#\1 ${mydaemon} \2#" "${D}"/usr/share/check_mk/modules/defaults || die "Couldn't update check_mk defaults"
+               cp "${D}"/usr/share/check_mk/modules/defaults "${D}"/usr/share/check_mk/web/htdocs/defaults.py || die "Couldn't copy check_mk defaults"
+
+               # Change permissions
+               fowners -R ${mydaemon}:apache /etc/${mydaemon}/auth.serials
+               fperms -R 0660 /etc/${mydaemon}/auth.serials
+               fowners -R ${mydaemon}:${mydaemon} /etc/${mydaemon}/check_mk.d
+               fperms -R 0775 /etc/${mydaemon}/check_mk.d
+               fowners -R root:apache /etc/check_mk/conf.d/wato
+               fperms -R 0775 /etc/check_mk/conf.d/wato
+               fowners root:apache /etc/check_mk/conf.d/distributed_wato.mk
+               fperms 0664 /etc/check_mk/conf.d/distributed_wato.mk
+               fowners -R root:apache /etc/check_mk/multisite.d/wato
+               fperms -R 0775 /etc/check_mk/multisite.d/wato
+               fowners root:apache /etc/check_mk/multisite.d/sites.mk
+               fperms 0664 /etc/check_mk/multisite.d/sites.mk
+               fowners root:${mydaemon} /var/lib/check_mk/cache
+               fperms 0775 /var/lib/check_mk/counters
+               fowners -R root:${mydaemon} /var/lib/check_mk/counters
+               fperms 0775 /var/lib/check_mk/notify
+               fowners -R root:${mydaemon} /var/lib/check_mk/notify
+               fperms 0775 /var/lib/check_mk/inventory
+               fowners -R root:${mydaemon} /var/lib/check_mk/inventory
+               fperms 0775 /var/lib/check_mk/log
+               fowners -R root:${mydaemon} /var/lib/check_mk/log
+               fperms 0775 /var/lib/check_mk/logwatch
+               fowners -R root:${mydaemon} /var/lib/check_mk/logwatch
+               fperms 0775 /var/lib/check_mk/cache
+               fowners -R root:${mydaemon} /var/lib/check_mk/cache
+               fperms -R 0775 /var/lib/check_mk/tmp
+               fowners -R root:apache /var/lib/check_mk/tmp
+               fperms -R 0775 /var/lib/check_mk/web
+               fowners -R root:apache /var/lib/check_mk/web
+               fperms -R 0775 /var/lib/check_mk/wato
+               fowners -R root:apache /var/lib/check_mk/wato
+               fperms -R 0775 /var/lib/check_mk/
+               fowners -R ${mydaeon}:apache /var/lib/check_mk/
+       fi
+
+       # Install agent related files
+       newbin usr/share/check_mk/agents/check_mk_agent.linux check_mk_agent
+       dobin usr/share/check_mk/agents/waitmax
+
+       if use xinetd; then
+               pushd "${S}"/usr/share/check_mk/agents/cfg_examples &>/dev/null || die
+               insinto /etc/xinetd.d
+               newins xinetd.conf check_mk
+               systemd_dounit systemd/check_mk@.service systemd/check_mk.socket
+               popd &>/dev/null || die
+       fi
+
+       keepdir /usr/lib/check_mk_agent/local
+       keepdir /usr/lib/check_mk_agent/plugins
+
+       # Documentation
+       if ! use agent-only; then
+               dodoc -r usr/share/doc/${PF}/*
+               docompress -x /usr/share/doc/${PF}/checks/
+       else
+               dodoc usr/share/doc/${PF}/AUTHORS usr/share/doc/${PF}/COPYING usr/share/doc/${PF}/ChangeLog
+               docompress
+       fi
+
+       # Install the check_mk_agent logwatch plugin
+       if use logwatch; then
+               insinto /etc/check_mk
+               doins usr/share/check_mk/agents/cfg_examples/logwatch.cfg
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/mk_logwatch
+       fi
+
+       # Install the check_mk_agent smart plugin
+       if use smart; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/smart
+       fi
+
+       # Install the check_mk_agent mysql plugin
+       if use mysql; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/mk_mysql
+       fi
+
+       # Install the check_mk_agent postgres plugin
+       if use postgres; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/mk_postgres
+       fi
+
+       # Install the check_mk_agent apache_status plugin
+       if use apache_status; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/apache_status
+       fi
+
+       # Install the check_mk_agent zypper plugin
+       if use zypper; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/mk_zypper
+       fi
+
+       # Install the check_mk_agent oracle plugin
+       if use oracle; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/mk_oracle
+       fi
+
+       # Install the check_mk_agent nfsexports plugin
+       if use nfsexports; then
+               exeinto /usr/lib/check_mk_agent/plugins
+               doexe usr/share/check_mk/agents/plugins/nfsexports
+       fi
+}
+
+pkg_postinst() {
+       if ! use agent-only; then
+               elog "IMPORTANT: Please add the following line to your"
+               elog "/etc/${mydaemon}/${mydaemon}.cfg, so that"
+               elog "${mydaemon} can load your check_mk configuration."
+               elog
+               elog "  cfg_dir=/etc/${mydaemon}/check_mk.d"
+               elog
+       fi
+       if use wato; then
+               elog "INFO: Your webserver needs write access to"
+               elog "/etc/${mydaemon}/htpasswd.users!"
+               elog "otherwise wato will not function correctly!"
+               elog
+               elog "chown ${mydaemon}: /etc/${mydaemon}/htpasswd.users"
+               elog "chmod 660 /etc/${mydaemon}/htpasswd.users"
+               elog
+               elog "Alternatively with ACLs:"
+               elog "setfacl -m u:apache:rw /etc/${mydaemon}/htpasswd.users"
+               elog "setfacl -m g:apache:rw /etc/${mydaemon}/htpasswd.users"
+               elog
+       fi
+       if use livestatus; then
+               elog "In order for livestatus to work, you need to make sure that"
+               if has_version net-analyzer/nagios-core; then
+                       elog "nagios is loading the livestatus broker module.  Please"
+                       elog "ensure to add to your nagios.cfg the lines in"
+                       elog "/usr/share/mk-livestatus/nagios.cfg"
+               else
+                       elog "icigna is loading the livestatus broker module.  Please"
+                       elog "include /usr/share/mk-livestatus/icigna.cfg in your"
+                       elog "icigna configuration."
+               fi
+       fi
+}
diff --git a/net-analyzer/check_mk/files/check_mk-1.2.8p16-setup.sh.patch b/net-analyzer/check_mk/files/check_mk-1.2.8p16-setup.sh.patch
new file mode 100644 (file)
index 0000000..b30d1ad
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/setup.sh 2014-07-04 09:24:45.000000000 +0200
++++ b/setup.sh 2015-08-28 13:22:19.986733809 +0200
+@@ -564,6 +564,17 @@
+ compile_livestatus ()
+ {
++   echo "Skipping internal compile of livestatus, do it in ebuild instead"
++   cat <<EOF > $SRCDIR/livestatus.src/src/livestatus.h 
++#ifndef livestatus_h
++#define livestatus_h
++#define DEFAULT_SOCKET_PATH "$livesock"
++#endif // livestatus_h
++EOF
++}
++
++avoid_compile_livestatus ()
++{
+    local D=$SRCDIR/livestatus.src
+    rm -rf $D
+    mkdir -p $D
+@@ -1018,9 +1029,11 @@
+            # WATO. Also create an empty and Apache-writable auth.serials
+            serials_file=$DESTDIR${htpasswd_file%/*}/auth.serials &&
+            touch "$serials_file" &&
+-           (chown $wwwuser "$serials_file" || true) &&
+-           (chown $wwwuser "$htpasswd_file" || true) &&
+-         create_sudo_configuration &&
++           # Permissions will be set within src_install
++           #(chown $wwwuser "$serials_file" || true) &&
++           #(chown $wwwuser "$htpasswd_file" || true) &&
++         # disable sudo configuration as this will be done within src_install
++         #create_sudo_configuration &&
+            if [ "$enable_mkeventd" = yes ]
+            then
+              if [ -z "$YES" ] ; then echo -n "(Compiling Event Console binaries..." ; fi
index 58d03fa8e3571238a1538d4197756ca0cc0751e3..2e0e199f3a4058ffcb68d317afd14663c9008ab6 100644 (file)
@@ -20,6 +20,7 @@
                <flag name="logwatch">Install check_mk-agent logwatch plugin.</flag>
                <flag name="smart">Install check_mk-agent S.M.A.R.T plugin.</flag>
                <flag name="mysql">Install check_mk-agent mysql plugin.</flag>
+               <flag name="nagios4">Depend on <pkg>net-analyzer/nagios-core</pkg>-4</flag>
                <flag name="postgres">Install check_mk-agent postgres plugin.</flag>
                <flag name="apache_status">Install check_mk-agent apache-status plugin.</flag>
                <flag name="nfsexports">Install check_mk-agent nfsexports plugin.</flag>