summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Wijsman <tomwij@gentoo.org>2013-08-22 09:42:58 +0000
committerTom Wijsman <tomwij@gentoo.org>2013-08-22 09:42:58 +0000
commit26a02de94eb8425f4747c803c50b344d767fdcd6 (patch)
treebcfc1d22bcd5b2f2683ee1572115b7673cc682d0 /app-admin/collectd
parentAdd missing inherit to systemd eclass (diff)
downloadgentoo-2-26a02de94eb8425f4747c803c50b344d767fdcd6.tar.gz
gentoo-2-26a02de94eb8425f4747c803c50b344d767fdcd6.tar.bz2
gentoo-2-26a02de94eb8425f4747c803c50b344d767fdcd6.zip
EAPI 5. Version bump to 5.4.0. Added cgroups, lvm and statsd plugins; amongst other fixes. Proxied commit for Johan Bergström, fixes bug #482070.
(Portage version: 2.2.0/cvs/Linux x86_64, signed Manifest commit with key 6D34E57D)
Diffstat (limited to 'app-admin/collectd')
-rw-r--r--app-admin/collectd/ChangeLog9
-rw-r--r--app-admin/collectd/collectd-5.4.0.ebuild371
-rw-r--r--app-admin/collectd/metadata.xml3
3 files changed, 382 insertions, 1 deletions
diff --git a/app-admin/collectd/ChangeLog b/app-admin/collectd/ChangeLog
index 626448e5b4fe..8ed91c501984 100644
--- a/app-admin/collectd/ChangeLog
+++ b/app-admin/collectd/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for app-admin/collectd
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/ChangeLog,v 1.53 2013/05/12 10:34:14 hwoarang Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/ChangeLog,v 1.54 2013/08/22 09:42:58 tomwij Exp $
+
+*collectd-5.4.0 (22 Aug 2013)
+
+ 22 Aug 2013; Tom Wijsman <TomWij@gentoo.org> +collectd-5.4.0.ebuild,
+ metadata.xml:
+ EAPI 5. Version bump to 5.4.0. Added cgroups, lvm and statsd plugins; amongst
+ other fixes. Proxied commit for Johan Bergström, fixes bug #482070.
*collectd-5.2.2 (12 May 2013)
diff --git a/app-admin/collectd/collectd-5.4.0.ebuild b/app-admin/collectd/collectd-5.4.0.ebuild
new file mode 100644
index 000000000000..8591cb3b04e6
--- /dev/null
+++ b/app-admin/collectd/collectd-5.4.0.ebuild
@@ -0,0 +1,371 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-5.4.0.ebuild,v 1.1 2013/08/22 09:42:58 tomwij Exp $
+
+EAPI="5"
+
+inherit autotools base eutils linux-info multilib perl-app systemd user
+
+DESCRIPTION="A a daemon which collects system statistic and provides mechanisms to store the values"
+
+HOMEPAGE="http://collectd.org"
+SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="contrib debug kernel_linux kernel_FreeBSD kernel_Darwin perl static-libs"
+
+# The plugin lists have to follow here since they extend IUSE
+
+# Plugins that to my knowledge cannot be supported (eg. dependencies not in gentoo)
+COLLECTD_IMPOSSIBLE_PLUGINS="aquaero mic netapp pinba sigrok xmms"
+
+# Plugins that still need some work
+COLLECTD_UNTESTED_PLUGINS="amqp apple_sensors genericjmx ipvs lpar modbus redis
+ tape write_redis zfs_arc"
+
+# Plugins that have been (compile) tested and can be enabled via COLLECTD_PLUGINS
+COLLECTD_TESTED_PLUGINS="aggregation apache apcups ascent battery bind cgroups
+ conntrack contextswitch cpu cpufreq csv curl curl_json curl_xml dbi df disk dns
+ email entropy ethstat exec filecount fscache gmond hddtemp interface ipmi
+ iptables irq java libvirt load logfile lvm madwifi match_empty_counter
+ match_hashed match_regex match_timediff match_value mbmon md memcachec memcached
+ memory multimeter mysql netlink network network nfs nginx notify_desktop
+ notify_email ntpd numa nut olsrd onewire openvpn oracle perl perl ping postgresql
+ powerdns processes protocols python python routeros rrdcached rrdcached rrdtool
+ sensors serial snmp statsd swap syslog table tail target_notification
+ target_replace target_scale target_set tcpconns teamspeak2 ted thermal threshold
+ tokyotyrant unixsock uptime users uuid varnish vmem vserver wireless
+ write_graphite write_http write_mongodb"
+
+COLLECTD_DISABLED_PLUGINS="${COLLECTD_IMPOSSIBLE_PLUGINS} ${COLLECTD_UNTESTED_PLUGINS}"
+
+COLLECTD_ALL_PLUGINS=${COLLECTD_TESTED_PLUGINS}
+
+for plugin in ${COLLECTD_ALL_PLUGINS}; do
+ IUSE="${IUSE} collectd_plugins_${plugin}"
+done
+unset plugin
+
+# Now come the dependencies.
+
+COMMON_DEPEND="
+ dev-libs/libgcrypt
+ sys-devel/libtool
+ perl? ( dev-lang/perl[ithreads] ( || ( sys-devel/libperl[ithreads] >=sys-devel/libperl-5.10 ) ) )
+ collectd_plugins_apache? ( net-misc/curl )
+ collectd_plugins_ascent? ( net-misc/curl dev-libs/libxml2 )
+ collectd_plugins_bind? ( dev-libs/libxml2 )
+ collectd_plugins_curl? ( net-misc/curl )
+ collectd_plugins_curl_json? ( net-misc/curl dev-libs/yajl )
+ collectd_plugins_curl_xml? ( net-misc/curl dev-libs/libxml2 )
+ collectd_plugins_dbi? ( dev-db/libdbi )
+ collectd_plugins_dns? ( net-libs/libpcap )
+ collectd_plugins_gmond? ( sys-cluster/ganglia )
+ collectd_plugins_ipmi? ( >=sys-libs/openipmi-2.0.16-r1 )
+ collectd_plugins_iptables? ( >=net-firewall/iptables-1.4.13 )
+ collectd_plugins_java? ( virtual/jre dev-java/java-config-wrapper )
+ collectd_plugins_libvirt? ( app-emulation/libvirt dev-libs/libxml2 )
+ collectd_plugins_lvm? ( sys-fs/lvm2 )
+ collectd_plugins_memcachec? ( dev-libs/libmemcached )
+ collectd_plugins_mysql? ( >=virtual/mysql-5.0 )
+ collectd_plugins_netlink? ( net-libs/libmnl )
+ collectd_plugins_nginx? ( net-misc/curl )
+ collectd_plugins_notify_desktop? ( x11-libs/libnotify )
+ collectd_plugins_notify_email? ( net-libs/libesmtp dev-libs/openssl )
+ collectd_plugins_nut? ( sys-power/nut )
+ collectd_plugins_onewire? ( sys-fs/owfs )
+ collectd_plugins_oracle? ( dev-db/oracle-instantclient-basic )
+ collectd_plugins_perl? ( dev-lang/perl[ithreads] ( || ( sys-devel/libperl[ithreads] >=sys-devel/libperl-5.10 ) ) )
+ collectd_plugins_ping? ( net-libs/liboping )
+ collectd_plugins_postgresql? ( dev-db/postgresql-base )
+ collectd_plugins_python? ( =dev-lang/python-2* )
+ collectd_plugins_routeros? ( net-libs/librouteros )
+ collectd_plugins_rrdcached? ( net-analyzer/rrdtool )
+ collectd_plugins_rrdtool? ( net-analyzer/rrdtool )
+ collectd_plugins_sensors? ( sys-apps/lm_sensors )
+ collectd_plugins_snmp? ( net-analyzer/net-snmp )
+ collectd_plugins_tokyotyrant? ( net-misc/tokyotyrant )
+ collectd_plugins_varnish? ( www-servers/varnish )
+ collectd_plugins_write_http? ( net-misc/curl )
+ collectd_plugins_write_mongodb? ( dev-libs/mongo-c-driver )
+
+ kernel_FreeBSD? (
+ collectd_plugins_disk? ( sys-libs/libstatgrab )
+ collectd_plugins_interface? ( sys-libs/libstatgrab )
+ collectd_plugins_load? ( sys-libs/libstatgrab )
+ collectd_plugins_memory? ( sys-libs/libstatgrab )
+ collectd_plugins_swap? ( sys-libs/libstatgrab )
+ collectd_plugins_users? ( sys-libs/libstatgrab )
+ )"
+
+DEPEND="${COMMON_DEPEND}
+ virtual/pkgconfig
+ kernel_linux? (
+ collectd_plugins_vserver? ( sys-kernel/vserver-sources )
+ )"
+
+RDEPEND="${COMMON_DEPEND}
+ collectd_plugins_syslog? ( virtual/logger )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.10.2"-{libocci,nohal}.patch
+ "${FILESDIR}/${PN}-4.10.3"-werror.patch
+ "${FILESDIR}/${PN}-5.1.0"-libperl.patch
+ "${FILESDIR}/${PN}-5.1.1"-lt.patch
+)
+
+# @FUNCTION: collectd_plugin_kernel_linux
+# @DESCRIPTION:
+# USAGE: <plug-in name> <kernel_options> <severity>
+# kernel_options is a list of kernel configurations options; the check tests whether at least
+# one of them is enabled. If no, depending on the third argument an elog, ewarn, or eerror message
+# is emitted.
+collectd_plugin_kernel_linux() {
+ local multi_opt opt
+ if has ${1} ${COLLECTD_ALL_PLUGINS}; then
+ if use collectd_plugins_${1}; then
+ for opt in ${2}; do
+ if linux_chkconfig_present ${opt}; then return 0; fi
+ done
+ multi_opt=${2//\ /\ or\ }
+ case ${3} in
+ (info)
+ elog "The ${1} plug-in can use kernel features that are disabled now; enable ${multi_opt} in your kernel"
+ ;;
+ (warn)
+ ewarn "The ${1} plug-in uses kernel features that are disabled now; enable ${multi_opt} in your kernel"
+ ;;
+ (error)
+ eerror "The ${1} plug-in needs kernel features that are disabled now; enable ${multi_opt} in your kernel"
+ ;;
+ (*)
+ die "function collectd_plugin_kernel_linux called with invalid third argument"
+ ;;
+ esac
+ fi
+ fi
+}
+
+collectd_linux_kernel_checks() {
+ linux-info_pkg_setup
+
+ # battery.c:/proc/pmu/battery_%i
+ # battery.c:/proc/acpi/battery
+ collectd_plugin_kernel_linux battery ACPI_BATTERY warn
+
+ # cgroups.c:/sys/fs/cgroup/
+ collectd_plugin_kernel_linux cgroups CONFIG_CGROUPS warn
+
+ # cpufreq.c:/sys/devices/system/cpu/cpu%d/cpufreq/
+ collectd_plugin_kernel_linux cpufreq SYSFS warn
+ collectd_plugin_kernel_linux cpufreq CPU_FREQ_STAT warn
+
+ # nfs.c:/proc/net/rpc/nfs
+ # nfs.c:/proc/net/rpc/nfsd
+ collectd_plugin_kernel_linux nfs NFS_COMMON warn
+
+ # serial.c:/proc/tty/driver/serial
+ # serial.c:/proc/tty/driver/ttyS
+ collectd_plugin_kernel_linux serial SERIAL_CORE warn
+
+ # swap.c:/proc/meminfo
+ collectd_plugin_kernel_linux swap SWAP warn
+
+ # thermal.c:/proc/acpi/thermal_zone
+ # thermal.c:/sys/class/thermal
+ collectd_plugin_kernel_linux thermal "PROC_FS SYSFS" warn
+ collectd_plugin_kernel_linux thermal ACPI_THERMAL warn
+
+ # vmem.c:/proc/vmstat
+ collectd_plugin_kernel_linux vmem VM_EVENT_COUNTERS warn
+
+ # uuid.c:/sys/hypervisor/uuid
+ collectd_plugin_kernel_linux uuid SYSFS info
+
+ # wireless.c:/proc/net/wireless
+ collectd_plugin_kernel_linux wireless "MAC80211 IEEE80211" warn
+}
+
+pkg_setup() {
+ if use kernel_linux; then
+ if linux_config_exists; then
+ einfo "Checking your linux kernel configuration:"
+ collectd_linux_kernel_checks
+ else
+ elog "Cannot find a linux kernel configuration. Continuing anyway."
+ fi
+ fi
+
+ enewgroup collectd
+ enewuser collectd -1 -1 /var/lib/collectd collectd
+}
+
+src_prepare() {
+ base_src_prepare
+
+ # There's some strange prefix handling in the default config file, resulting in
+ # paths like "/usr/var/..."
+ sed -i -e "s:@prefix@/var:/var:g" src/collectd.conf.in || die
+
+ sed -i -e "s:/etc/collectd/collectd.conf:/etc/collectd.conf:g" contrib/collectd.service || die
+
+ # fix installdirs for perl, bug 444360
+ sed -i -e 's/INSTALL_BASE=$(DESTDIR)$(prefix) //' bindings/Makefile.am || die
+
+ rm -r libltdl || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # Now come the lists of os-dependent plugins. Any plugin that is not listed anywhere here
+ # should work independent of the operating system.
+
+ local linux_plugins="battery cpu cpufreq disk entropy ethstat interface iptables ipvs irq load
+ memory md netlink nfs numa processes serial swap tcpconns thermal users vmem vserver
+ wireless"
+
+ local libstatgrab_plugins="cpu disk interface load memory swap users"
+ local bsd_plugins="cpu tcpconns ${libstatgrab_plugins}"
+
+ local darwin_plugins="apple_sensors battery cpu disk interface memory processes tcpconns"
+
+ local osdependent_plugins="${linux_plugins} ${bsd_plugins} ${darwin_plugins}"
+ local myos_plugins=""
+ if use kernel_linux; then
+ einfo "Enabling Linux plugins."
+ myos_plugins=${linux_plugins}
+ elif use kernel_FreeBSD; then
+ einfo "Enabling FreeBSD plugins."
+ myos_plugins=${bsd_plugins}
+ elif use kernel_Darwin; then
+ einfo "Enabling Darwin plugins."
+ myos_plugins=${darwin_plugins}
+ fi
+
+ # Do we debug?
+ local myconf="$(use_enable debug)"
+
+ local plugin
+
+ # Disable what needs to be disabled.
+ for plugin in ${COLLECTD_DISABLED_PLUGINS}; do
+ myconf+=" --disable-${plugin}"
+ done
+
+ # Set enable/disable for each single plugin.
+ for plugin in ${COLLECTD_ALL_PLUGINS}; do
+ if has ${plugin} ${osdependent_plugins}; then
+ # plugin is os-dependent ...
+ if has ${plugin} ${myos_plugins}; then
+ # ... and available in this os
+ myconf+=" $(use_enable collectd_plugins_${plugin} ${plugin})"
+ else
+ # ... and NOT available in this os
+ if use collectd_plugins_${plugin}; then
+ ewarn "You try to enable the ${plugin} plugin, but it is not available for this"
+ ewarn "kernel. Disabling it automatically."
+ fi
+ myconf+=" --disable-${plugin}"
+ fi
+ elif [[ "${plugin}" = "collectd_plugins_perl" ]]; then
+ if use collectd_plugins_perl && ! use perl; then
+ ewarn "Perl plugin disabled as perl bindings disabled by -perl use flag"
+ myconf+= --disable-perl
+ else
+ myconf+=" $(use_enable collectd_plugins_${plugin} ${plugin})"
+ fi
+ else
+ myconf+=" $(use_enable collectd_plugins_${plugin} ${plugin})"
+ fi
+ done
+
+ # Need JAVA_HOME for java.
+ if use collectd_plugins_java; then
+ myconf+=" --with-java=$(java-config -g JAVA_HOME)"
+ fi
+
+ # Need libiptc ONLY for iptables. If we try to use it otherwise bug 340109 happens.
+ if ! use collectd_plugins_iptables; then
+ myconf+=" --with-libiptc=no"
+ fi
+
+ if use perl; then
+ myconf+=" --with-perl-bindings=INSTALLDIRS=vendor"
+ else
+ myconf+=" --without-perl-bindings"
+ fi
+
+ # No need for v5upgrade
+ myconf+=" --disable-target_v5upgrade"
+
+ # Finally, run econf.
+ KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl $(use_enable static-libs static) --localstatedir=/var ${myconf}
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ fixlocalpod
+
+ find "${D}/usr/" -name "*.la" -exec rm -f {} +
+
+ # use collectd_plugins_ping && setcap cap_net_raw+ep ${D}/usr/sbin/collectd
+ # we cannot do this yet
+
+ fowners root:collectd /etc/collectd.conf
+ fperms u=rw,g=r,o= /etc/collectd.conf
+
+ dodoc AUTHORS ChangeLog NEWS README TODO
+
+ if use contrib ; then
+ insinto /usr/share/doc/${PF}
+ doins -r contrib
+ fi
+
+ keepdir /var/lib/${PN}
+ fowners collectd:collectd /var/lib/${PN}
+
+ newinitd "${FILESDIR}/${PN}.initd" ${PN}
+ newconfd "${FILESDIR}/${PN}.confd" ${PN}
+ systemd_dounit "contrib/${PN}.service"
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/logrotate" collectd
+
+ sed -i -e 's:^.*PIDFile "/var/run/collectd.pid":PIDFile "/var/run/collectd/collectd.pid":' "${D}"/etc/collectd.conf || die
+ sed -i -e 's:^# SocketFile "/var/run/collectd-unixsock":# SocketFile "/var/run/collectd/collectd-unixsock":' "${D}"/etc/collectd.conf || die
+ sed -i -e 's:^.*LoadPlugin perl$:# The new, correct way to load the perl plugin -- \n# <LoadPlugin perl>\n# Globals true\n# </LoadPlugin>:' "${D}"/etc/collectd.conf || die
+ sed -i -e 's:^.*LoadPlugin python$:# The new, correct way to load the python plugin -- \n# <LoadPlugin python>\n# Globals true\n# </LoadPlugin>:' "${D}"/etc/collectd.conf || die
+}
+
+collectd_rdeps() {
+ if (use collectd_plugins_${1} && ! has_version "${2}"); then
+ elog "The ${1} plug-in needs ${2} to be installed locally or remotely to work."
+ fi
+}
+
+pkg_postinst() {
+ collectd_rdeps apcups sys-power/apcupsd
+ collectd_rdeps hddtemp app-admin/hddtemp
+ collectd_rdeps mbmon sys-apps/xmbmon
+ collectd_rdeps memcached ">=net-misc/memcached-1.2.2-r2"
+ collectd_rdeps ntpd net-misc/ntp
+ collectd_rdeps openvpn ">=net-misc/openvpn-2.0.9"
+ collectd_rdeps write_mongodb "dev-db/mongodb"
+
+ echo
+ elog "collectd is now started as unprivileged user by default."
+ elog "You may want to recheck the configuration."
+ elog
+
+ if use collectd_plugins_email; then
+ ewarn "The email plug-in is deprecated. To submit statistics please use the unixsock plugin."
+ fi
+ if use contrib; then
+ elog "The scripts in /usr/share/doc/${PF}/collection3 for generating graphs need dev-perl/HTML-Parser,"
+ elog "dev-perl/config-general, dev-perl/regexp-common, and net-analyzer/rrdtool[perl] to be installed."
+ fi
+}
diff --git a/app-admin/collectd/metadata.xml b/app-admin/collectd/metadata.xml
index d113b154cc86..e3c5cb0a0345 100644
--- a/app-admin/collectd/metadata.xml
+++ b/app-admin/collectd/metadata.xml
@@ -15,6 +15,7 @@
<flag name='collectd_plugins_ascent'>Build the ascent input plugin (statistics about a free server for World of Warcraft)</flag>
<flag name='collectd_plugins_battery'>Build the battery input plugin (charge, current and voltage of ACPI and PMU based laptop batteries)</flag>
<flag name='collectd_plugins_bind'>Build the bind input plugin (name server and resolver statistics)</flag>
+ <flag name='collectd_plugins_cgroups'>Build the cgroups CPU accounting collection plugin</flag>
<flag name='collectd_plugins_conntrack'>Build the conntrack input plugin (number of nf_conntrack entries)</flag>
<flag name='collectd_plugins_contextswitch'>Build the contextswitch input plugin (number of context switches done by the operating system)</flag>
<flag name='collectd_plugins_cpu'>Build the cpu input plugin (time spent in the system, user, nice, idle, and related states)</flag>
@@ -43,6 +44,7 @@
<flag name='collectd_plugins_libvirt'>Build the libvirt input plugin (statistics about virtualized guests on a system)</flag>
<flag name='collectd_plugins_load'>Build the load input plugin (system load)</flag>
<flag name='collectd_plugins_logfile'>Build the logfile output plugin (writes log messages to a text file)</flag>
+ <flag name='collectd_plugins_lvm'>Build the LVM input plugin</flag>
<flag name='collectd_plugins_madwifi'>Build the madwifi input plugin (information about Atheros wireless LAN chipsets)</flag>
<flag name='collectd_plugins_match_empty_counter'>Build the match_empty_counter filter plugin</flag>
<flag name='collectd_plugins_match_hashed'>Build the match_hashed filter plugin</flag>
@@ -82,6 +84,7 @@
<flag name='collectd_plugins_sensors'>Build the sensors input plugin (uses lm-sensors to read hardware sensors)</flag>
<flag name='collectd_plugins_serial'>Build the serial input plugin (collects the traffic on serial interfaces)</flag>
<flag name='collectd_plugins_snmp'>Build the snmp input plugin (read values from network devices using SNMP)</flag>
+ <flag name='collectd_plugins_statsd'>Build the statsd input plugin (accepts statsd-type metrics from a UDP socket)</flag>
<flag name='collectd_plugins_swap'>Build the swap input plugin (amount of memory currently written to swap)</flag>
<flag name='collectd_plugins_syslog'>Build the syslog output plugin (receives messages from collectd and dispatches them to syslog)</flag>
<flag name='collectd_plugins_table'>Build the table input plugin (parses table-like structured plain text)</flag>