From 26b428cbf35e52dde7e530fc81ae3652e3fe8d48 Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Thu, 22 Sep 2016 01:55:38 +0200 Subject: [PATCH] app-admin/collectd: Bump to v5.6.0 New plugins: - chrony - cpusleep - gps - lua - mqtt - notify_nagios - xencpu Package-Manager: portage-2.3.1 --- app-admin/collectd/Manifest | 1 + app-admin/collectd/collectd-5.6.0.ebuild | 495 ++++++++++++++++++ .../collectd-5.6.0-fix-apache-plugin.patch | 26 + .../files/collectd-5.6.0-gentoo.patch | 153 ++++++ .../files/collectd-5.6.0-issue-1896.patch | 76 +++ app-admin/collectd/metadata.xml | 7 + profiles/arch/amd64/package.use.mask | 4 + profiles/arch/x86/package.use.mask | 4 + profiles/base/package.use.mask | 4 + 9 files changed, 770 insertions(+) create mode 100644 app-admin/collectd/collectd-5.6.0.ebuild create mode 100644 app-admin/collectd/files/collectd-5.6.0-fix-apache-plugin.patch create mode 100644 app-admin/collectd/files/collectd-5.6.0-gentoo.patch create mode 100644 app-admin/collectd/files/collectd-5.6.0-issue-1896.patch diff --git a/app-admin/collectd/Manifest b/app-admin/collectd/Manifest index c5865d36d809..31a5a5319670 100644 --- a/app-admin/collectd/Manifest +++ b/app-admin/collectd/Manifest @@ -1 +1,2 @@ DIST collectd-5.5.2.tar.bz2 1800476 SHA256 017f3a4062187e594d8ab6af685655fb82a8a942dc574668e68242bdb8ba820f SHA512 9d311db4f3677b95e3a47c03af01bdf1127957f6fccb6c601455632d0ea3b39e3f4cd9a6f8f510083e208714bbb0da2e04aaa574a90b0ad6fe984506675475b3 WHIRLPOOL 98ed4fb29eec0ae660d3e1651380a3f17f7bf7f22e687633c4a44974bc84e49cf8de11fd6fea349bfe24809ac3c29a407459a1203b72bcf741e1587c6c0b1773 +DIST collectd-5.6.0.tar.bz2 1818470 SHA256 f0ffbbd91fac3682bd324a74b9b4c9eabe781394b303b5cfd457c4cfbe748623 SHA512 5eecd7fe1619850b29e7853e0ab8f9eb7688d0fdf5687cf04930c75a94181c53d7dc0601a1dfa02417bdeb63cccf09b87acd7129e7f155b8d11147ec46982ed8 WHIRLPOOL 690e50f16318e9df39eac62010f8b0a57059356deeedd72505cc4a980876261a198edac095317f97b03913167dcfc49bf9f3b46986bbc3653628856e3a005111 diff --git a/app-admin/collectd/collectd-5.6.0.ebuild b/app-admin/collectd/collectd-5.6.0.ebuild new file mode 100644 index 000000000000..e64baa96dbb0 --- /dev/null +++ b/app-admin/collectd/collectd-5.6.0.ebuild @@ -0,0 +1,495 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="6" + +PYTHON_COMPAT=( python{2_7,3_4,3_5} ) +JAVA_PKG_OPT_USE="collectd_plugins_java" + +inherit autotools fcaps flag-o-matic java-pkg-opt-2 linux-info multilib perl-functions python-single-r1 systemd user + +DESCRIPTION="Collects system statistics and provides mechanisms to store the values" + +HOMEPAGE="https://collectd.org/" +SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="contrib debug java kernel_Darwin kernel_FreeBSD kernel_linux perl selinux static-libs udev xfs" + +# The plugin lists have to follow here since they extend IUSE + +# Plugins that don't build (e.g. dependencies not in Gentoo) +# apple_sensors: Requires libIOKit +# aquaero: Requires aerotools-ng/libaquaero5 +# barometer: Requires libi2c (i2c_smbus_read_i2c_block_data) +# grpc: Requires libgrpc +# lpar: Requires libperfstat (AIX only) +# mic: Requires Intel Many Integrated Core Architecture API +# (part of Intel's Xeon Phi software) +# netapp: Requires libnetapp (http://communities.netapp.com/docs/DOC-1110) +# pf: Requires BSD packet filter +# pinba: Requires MySQL Pinba engine (http://pinba.org/) +# tape: Requires libkstat (Solaris only) +# write_mongodb: https://github.com/collectd/collectd/issues/492 +# write_riemann: Requires riemann-c-client +# xmms: Requires libxmms (v1) +# zone: Solaris only... +COLLECTD_IMPOSSIBLE_PLUGINS="apple_sensors aquaero barometer grpc lpar mic + netapp pf pinba tape write_kafka write_mongodb write_riemann xmms + zone" + +# Plugins that have been (compile) tested and can be enabled via COLLECTD_PLUGINS +COLLECTD_TESTED_PLUGINS="aggregation amqp apache apcups ascent battery bind + ceph cgroups chrony conntrack contextswitch cpu cpufreq cpusleep + csv curl curl_json curl_xml dbi df disk dns drbd email entropy + ethstat exec fhcount filecount fscache gmond gps hddtemp interface + ipc ipmi iptables ipvs irq java lua load logfile log_logstash lvm + madwifi match_empty_counter match_hashed match_regex match_timediff + match_value mbmon md memcachec memcached memory modbus mqtt + multimeter mysql netlink network network nfs nginx notify_desktop + notify_email notify_nagios ntpd numa nut olsrd onewire openldap + openvpn oracle perl ping postgresql powerdns processes protocols + python python redis routeros rrdcached rrdtool sensors serial + sigrok smart snmp statsd swap syslog table tail tail_csv + target_notification target_replace target_scale target_set tcpconns + teamspeak2 ted thermal threshold tokyotyrant turbostat unixsock + uptime users uuid varnish virt vmem vserver wireless write_graphite + write_http write_kafka write_log write_redis write_sensu write_tsdb + xencpu zfs_arc zookeeper" + +COLLECTD_DISABLED_PLUGINS="${COLLECTD_IMPOSSIBLE_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:= + dev-libs/libltdl:0= + perl? ( dev-lang/perl:=[ithreads] ) + udev? ( virtual/udev ) + xfs? ( sys-fs/xfsprogs ) + collectd_plugins_amqp? ( net-libs/rabbitmq-c ) + collectd_plugins_apache? ( net-misc/curl:0= ) + collectd_plugins_ascent? ( net-misc/curl:0= dev-libs/libxml2:2= ) + collectd_plugins_bind? ( dev-libs/libxml2:2= ) + collectd_plugins_ceph? ( dev-libs/yajl:= ) + collectd_plugins_curl? ( net-misc/curl:0= ) + collectd_plugins_curl_json? ( net-misc/curl:0= dev-libs/yajl:= ) + collectd_plugins_curl_xml? ( net-misc/curl:0= dev-libs/libxml2:2= ) + collectd_plugins_dbi? ( dev-db/libdbi ) + collectd_plugins_dns? ( net-libs/libpcap ) + collectd_plugins_gmond? ( sys-cluster/ganglia ) + collectd_plugins_gps? ( sci-geosciences/gpsd ) + collectd_plugins_ipmi? ( >=sys-libs/openipmi-2.0.16-r1 ) + collectd_plugins_iptables? ( >=net-firewall/iptables-1.4.13:0= ) + collectd_plugins_log_logstash? ( dev-libs/yajl:= ) + collectd_plugins_lua? ( dev-lang/lua:0= ) + collectd_plugins_lvm? ( sys-fs/lvm2 ) + collectd_plugins_memcachec? ( dev-libs/libmemcached ) + collectd_plugins_modbus? ( dev-libs/libmodbus ) + collectd_plugins_mqtt? ( app-misc/mosquitto ) + collectd_plugins_mysql? ( >=virtual/mysql-5.0 ) + collectd_plugins_netlink? ( net-libs/libmnl ) + collectd_plugins_nginx? ( net-misc/curl:0= ) + collectd_plugins_notify_desktop? ( x11-libs/libnotify ) + collectd_plugins_notify_email? ( net-libs/libesmtp ) + collectd_plugins_nut? ( >=sys-power/nut-2.7.2-r2 ) + collectd_plugins_openldap? ( net-nds/openldap ) + collectd_plugins_onewire? ( >=sys-fs/owfs-3.1:= ) + collectd_plugins_oracle? ( dev-db/oracle-instantclient-basic ) + collectd_plugins_perl? ( dev-lang/perl:=[ithreads] ) + collectd_plugins_ping? ( net-libs/liboping ) + collectd_plugins_postgresql? ( dev-db/postgresql:= ) + collectd_plugins_python? ( ${PYTHON_DEPS} ) + collectd_plugins_redis? ( dev-libs/hiredis:= ) + 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_sigrok? ( =dev-libs/librdkafka-0.9.0.99:= ) + collectd_plugins_write_redis? ( dev-libs/hiredis:= ) + collectd_plugins_xencpu? ( app-emulation/xen-tools ) + + 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:= ) + )" + +# Enforcing <=sys-kernel/linux-headers-4.4 due to #577846 +DEPEND="${COMMON_DEPEND} + collectd_plugins_iptables? ( <=sys-kernel/linux-headers-4.4 ) + collectd_plugins_java? ( >=virtual/jdk-1.6 ) + virtual/pkgconfig" + +RDEPEND="${COMMON_DEPEND} + collectd_plugins_java? ( >=virtual/jre-1.6 ) + collectd_plugins_syslog? ( virtual/logger ) + selinux? ( sec-policy/selinux-collectd )" + +REQUIRED_USE=" + collectd_plugins_python? ( ${PYTHON_REQUIRED_USE} ) + collectd_plugins_smart? ( udev )" + +PATCHES=( + "${FILESDIR}"/${PN}-5.6.0-gentoo.patch + "${FILESDIR}"/${PN}-5.6.0-issue-1896.patch + "${FILESDIR}"/${PN}-5.6.0-fix-apache-plugin.patch +) + +# @FUNCTION: collectd_plugin_kernel_linux +# @DESCRIPTION: +# USAGE: +# 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} plugin can use kernel features that are disabled now; enable ${multi_opt} in your kernel" + ;; + (warn) + ewarn "The ${1} plugin uses kernel features that are disabled now; enable ${multi_opt} in your kernel" + ;; + (error) + eerror "The ${1} plugin 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() { + if ! linux_chkconfig_present PROC_FS; then + ewarn "/proc file system support is disabled, many plugins will not be able to read any statistics from your system unless you enable PROC_FS in your kernel" + fi + + if ! linux_chkconfig_present SYSFS; then + ewarn "/sys file system support is disabled, many plugins will not be able to read any statistics from your system unless you enable SYSFS in your kernel" + fi + + # 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 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 + + # drbd.c: /proc/drbd + collectd_plugin_kernel_linux drbd BLK_DEV_DRBD warn + + # conntrack.c: /proc/sys/net/netfilter/* + collectd_plugin_kernel_linux conntrack NETFILTER warn + + # fscache.c: /proc/fs/fscache/stats + collectd_plugin_kernel_linux fscache FSCACHE 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 ACPI_THERMAL warn + + # turbostat.c: /dev/cpu/%d/msr + collectd_plugin_kernel_linux turbostat X86_MSR warn + + # vmem.c: /proc/vmstat + collectd_plugin_kernel_linux vmem VM_EVENT_COUNTERS warn + + # vserver.c: /proc/virtual + collectd_plugin_kernel_linux vserver VSERVER warn + + # uuid.c: /sys/hypervisor/uuid + collectd_plugin_kernel_linux uuid SYSFS info + + # wireless.c: /proc/net/wireless + collectd_plugin_kernel_linux wireless "WIRELESS MAC80211 IEEE80211" warn + + # zfs_arc.c: /proc/spl/kstat/zfs/arcstats + collectd_plugin_kernel_linux zfs_arc "SPL ZFS" warn +} + +pkg_setup() { + if use kernel_linux; then + linux-info_pkg_setup + + 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 + + if use collectd_plugins_java; then + java-pkg-opt-2_pkg_setup + fi + + use collectd_plugins_python && python-single-r1_pkg_setup + + enewgroup collectd + enewuser collectd -1 -1 /var/lib/collectd collectd +} + +src_prepare() { + default + + # 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 + + if use collectd_plugins_java; then + # Set javac -source and -target flags according to (R)DEPEND. + sed -i -e "s/\$(JAVAC)/\0 $(java-pkg_javac-args)/g" bindings/java/Makefile.am || die + fi + + ebegin "Removing bundled libltdl" + rm -rf libltdl || die + eend 0 + + 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="barometer battery cpu cpufreq disk drbd entropy + ethstat interface iptables ipvs irq ipc load memory md netlink nfs + numa processes serial swap tcpconns thermal turbostat users vmem + wireless zfc_arc" + + local need_libstatgrab=0 + local libstatgrab_plugins="cpu disk interface load memory swap users" + local bsd_plugins="cpu tcpconns ${libstatgrab_plugins} zfc_arc" + + 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 + + local myconf="--disable-werror" + + # Do we debug? + myconf+=" $(use_enable debug)" + + # udev support? + # Required for smart plugin via REQUIRED_USE; Optional for disk plugin + if use udev; then + myconf+=" --with-libudev" + else + myconf+=" --without-libudev" + fi + + 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})" + # ... must we link against libstatgrab? Bug #541518 + if use kernel_FreeBSD && has ${plugin} ${libstatgrab_plugins}; then + einfo "We must link against libstatgrab due to plugin \"${plugin}\" ..." + need_libstatgrab=1 + fi + 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 + + if [ "${need_libstatgrab}" -eq 1 ]; then + myconf+=" --with-libstatgrab" + else + myconf+=" --without-libstatgrab" + fi + + # JAVA_HOME is set by eclasses. + if use collectd_plugins_java; then + myconf+=" --with-java" + fi + + # Need libiptc ONLY for iptables. If we try to use it otherwise bug 340109 happens. + # lots of libs are only needed for plugins, if they are disabled, also disable the lib + use collectd_plugins_iptables || myconf+=" --with-libiptc=no" + use collectd_plugins_openldap || myconf+=" --with-libldap=no" + use collectd_plugins_redis || use collectd_plugins_write_redis || myconf+=" --with-libhiredis=no" + use collectd_plugins_smart || myconf+=" --with-libatasmart=no" + use collectd_plugins_gps || myconf+=" --with-libgps=no" + + if use perl; then + myconf+=" --with-perl-bindings=INSTALLDIRS=vendor" + else + myconf+=" --without-perl-bindings" + fi + + # No need for v5upgrade + myconf+=" --disable-target_v5upgrade" + + # Python + if use collectd_plugins_python; then + myconf+=" --with-libpython=yes" + export PYTHON_CONFIG=$(python_get_PYTHON_CONFIG) + else + myconf+=" --with-libpython=no" + fi + + # XFS support + myconf+=" $(use_enable xfs)" + + # Finally, run econf. + KERNEL_DIR="${KERNEL_DIR}" econf --config-cache \ + $(use_enable static-libs static) \ + --localstatedir=/var ${myconf} +} + +src_install() { + emake DESTDIR="${D%/}" install + + perl_delete_localpod + + find "${ED}"usr/ -name "*.la" -delete || die + + if use collectd_plugins_java; then + java-pkg_regjar "${ED}"usr/share/${PN}/java/*.jar + fi + + 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-r1" ${PN} + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + systemd_dounit "contrib/systemd.${PN}.service" + + insinto /etc/logrotate.d + newins "${FILESDIR}/${PN}.logrotate" ${PN} + + sed -i -e 's:^.*PIDFile "/var/run/collectd.pid":PIDFile "/run/collectd/collectd.pid":' "${ED}"etc/collectd.conf || die + sed -i -e 's:^# SocketFile "/var/run/collectd-unixsock":# SocketFile "/run/collectd/collectd.socket":' "${ED}"etc/collectd.conf || die + sed -i -e 's:^.*LoadPlugin perl$:# The new, correct way to load the perl plugin -- \n# \n# Globals true\n# :' "${ED}"etc/collectd.conf || die + sed -i -e 's:^.*LoadPlugin python$:# The new, correct way to load the python plugin -- \n# \n# Globals true\n# :' "${ED}"etc/collectd.conf || die +} + +pkg_postinst() { + local caps=() + use collectd_plugins_ping && caps+=('cap_net_raw') + use collectd_plugins_iptables && caps+=('cap_net_admin') + use collectd_plugins_filecount && caps+=('cap_dac_read_search') + + if [ ${#caps[@]} -gt 0 ]; then + local caps_str=$(IFS=","; echo "${caps[*]}") + fcaps ${caps_str} usr/sbin/collectd + elog "Capabilities for ${EROOT}usr/sbin/collectd set to:" + elog " ${caps_str}+ep" + elog + fi + + elog "Note: Collectd is only the collector." + elog " You need to install 'data' sources (applications) locally or" + elog " remotely on your own." + + elog + elog "Collectd is configured to run as unprivileged user by default." + elog "You may want to revisit 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/files/collectd-5.6.0-fix-apache-plugin.patch b/app-admin/collectd/files/collectd-5.6.0-fix-apache-plugin.patch new file mode 100644 index 000000000000..e3afaeb5d607 --- /dev/null +++ b/app-admin/collectd/files/collectd-5.6.0-fix-apache-plugin.patch @@ -0,0 +1,26 @@ +From 60ec28dd104bdeef4c5ed6882fb2b663ca9da2eb Mon Sep 17 00:00:00 2001 +From: Florian Forster +Date: Sun, 11 Sep 2016 20:31:31 +0200 +Subject: [PATCH] apache plugin: End statements with semi-colons. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If only I knew why this wasn't considered a syntax error … +--- + src/apache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/apache.c b/src/apache.c +index c515e3c..5b6914c 100644 +--- a/src/apache.c ++++ b/src/apache.c +@@ -250,7 +250,7 @@ static int config_add (oconfig_item_t *ci) + ssnprintf (callback_name, sizeof (callback_name), + "apache/%s/%s", + (st->host != NULL) ? st->host : hostname_g, +- (st->name != NULL) ? st->name : "default"), ++ (st->name != NULL) ? st->name : "default"); + + status = plugin_register_complex_read (/* group = */ NULL, + /* name = */ callback_name, diff --git a/app-admin/collectd/files/collectd-5.6.0-gentoo.patch b/app-admin/collectd/files/collectd-5.6.0-gentoo.patch new file mode 100644 index 000000000000..dd8c1576354c --- /dev/null +++ b/app-admin/collectd/files/collectd-5.6.0-gentoo.patch @@ -0,0 +1,153 @@ +From 8fe20883e248572690798e4dd1423511aa2f4e5d Mon Sep 17 00:00:00 2001 +From: Thomas Deutschmann +Date: Thu, 22 Sep 2016 00:53:58 +0200 +Subject: [PATCH 1/3] Remove bundled libltdl + +--- + Makefile.am | 6 ------ + configure.ac | 8 ++++---- + 2 files changed, 4 insertions(+), 10 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 03bdd39..ad04a3c 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,11 +1,5 @@ +-ACLOCAL_AMFLAGS = -I libltdl/m4 +- + SUBDIRS = + +-if BUILD_INCLUDED_LTDL +-SUBDIRS += libltdl +-endif +- + SUBDIRS += proto src bindings . + + AM_CPPFLAGS = $(LTDLINCL) +diff --git a/configure.ac b/configure.ac +index 9a6da11..68e15e0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3,7 +3,6 @@ AC_PREREQ([2.60]) + AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)]) + AC_CONFIG_SRCDIR(src/target_set.c) + AC_CONFIG_HEADERS(src/config.h) +-AC_CONFIG_AUX_DIR([libltdl/config]) + + dnl older automake's default of ARFLAGS=cru is noisy on newer binutils; + dnl we don't really need the 'u' even in older toolchains. Then there is +@@ -13,7 +12,6 @@ m4_divert_text([DEFAULTS], [: "${ARFLAGS=cr} ${AR_FLAGS=cr}"]) + m4_ifdef([LT_PACKAGE_VERSION], + # libtool >= 2.2 + [ +- LT_CONFIG_LTDL_DIR([libltdl]) + LT_INIT([dlopen]) + LTDL_INIT([convenience]) + AC_DEFINE(LIBTOOL_VERSION, 2, [Define to used libtool version.]) +@@ -25,12 +23,14 @@ m4_ifdef([LT_PACKAGE_VERSION], + AC_SUBST(LTDLINCL) + AC_SUBST(LIBLTDL) + AC_LIBTOOL_DLOPEN +- AC_CONFIG_SUBDIRS(libltdl) + AC_DEFINE(LIBTOOL_VERSION, 1, [Define to used libtool version.]) + ] + ) + +-AM_CONDITIONAL([BUILD_INCLUDED_LTDL], [test "x$LTDLDEPS" != "x"]) ++if test "x$LTDLDEPS" != "x" ++then ++ AC_MSG_ERROR(["system's libltdl is too old! Should never happen. Please file a bug at https://bugs.gentoo.org"]) ++fi + + AM_INIT_AUTOMAKE([subdir-objects tar-pax dist-bzip2 no-dist-gzip foreign]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +-- +2.10.0 + + +From 0b00f519ce183b8ceaab5cf8e56f574ecd2cb7c4 Mon Sep 17 00:00:00 2001 +From: Thomas Deutschmann +Date: Thu, 22 Sep 2016 00:54:08 +0200 +Subject: [PATCH 2/3] Remove libhal dependency + +X-Gentoo-Bug: 353839 +X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=353839 +--- + configure.ac | 24 ------------------------ + 1 file changed, 24 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 68e15e0..1700c44 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1663,30 +1663,6 @@ AM_CONDITIONAL(BUILD_WITH_LIBRESOLV, test "x$with_libresolv" = "xyes") + + dnl Check for HAL (hardware abstraction library) + with_libhal="no" +-PKG_CHECK_MODULES([HAL], [hal], +- [ +- SAVE_LIBS="$LIBS" +- LIBS="$HAL_LIBS $LIBS" +- AC_CHECK_LIB([hal], [libhal_device_property_exists], +- [ +- SAVE_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$HAL_CFLAGS $CPPFLAGS" +- AC_CHECK_HEADERS([libhal.h], +- [ +- with_libhal="yes" +- BUILD_WITH_LIBHAL_CFLAGS="$HAL_CFLAGS" +- BUILD_WITH_LIBHAL_LIBS="$HAL_LIBS" +- ]) +- CPPFLAGS="$SAVE_CPPFLAGS" +- ], +- [ : ] +- ) +- LIBS="$SAVE_LIBS" +- ], +- [ : ] +-) +-AC_SUBST(BUILD_WITH_LIBHAL_CFLAGS) +-AC_SUBST(BUILD_WITH_LIBHAL_LIBS) + + + SAVE_LIBS="$LIBS" +-- +2.10.0 + + +From 380c61888bed5856319fa32816d8f2f4c88ee7bc Mon Sep 17 00:00:00 2001 +From: Thomas Deutschmann +Date: Thu, 22 Sep 2016 00:54:19 +0200 +Subject: [PATCH 3/3] Link Oracle plug-in against libocci + +Author: Aurelien Minet +X-Gentoo-Bug: 347607 +X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=347607 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1700c44..83909a0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3587,14 +3587,14 @@ AC_ARG_WITH(oracle, [AS_HELP_STRING([--with-oracle@<:@=ORACLE_HOME@:>@], [Path t + ]) + if test "x$ORACLE_HOME" != "x" + then +- with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public" ++ with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public -locci" + + if test -e "$ORACLE_HOME/lib/ldflags" + then + with_oracle_libs=`cat "$ORACLE_HOME/lib/ldflags"` + fi + #with_oracle_libs="-L$ORACLE_HOME/lib $with_oracle_libs -lclntsh" +- with_oracle_libs="-L$ORACLE_HOME/lib -lclntsh" ++ with_oracle_libs="-L$ORACLE_HOME/lib -lclntsh -locci" + fi + if test "x$with_oracle" = "xyes" + then +-- +2.10.0 + diff --git a/app-admin/collectd/files/collectd-5.6.0-issue-1896.patch b/app-admin/collectd/files/collectd-5.6.0-issue-1896.patch new file mode 100644 index 000000000000..afcd8d0a1bbb --- /dev/null +++ b/app-admin/collectd/files/collectd-5.6.0-issue-1896.patch @@ -0,0 +1,76 @@ +From ba52f94929822b1968f05cfbb37985af2e0b83a4 Mon Sep 17 00:00:00 2001 +From: Florian Forster +Date: Tue, 13 Sep 2016 10:44:46 +0200 +Subject: [PATCH] curl_json plugin: Skip unexpected non-map values. + +Assume, for example, the config `Key "*/foo"`. This config expects JSON +in the form: + + { + "bar": { + "foo": 1337 + } + } + +If the available JSON is instead: + + { + "error_code": 0, + "bar": { + "foo": 1337 + } + } + +the code will take a look at the zero associated with "error_code" and +determine that a map (with key "foo") is expected instead. Previously +the code would continue, eventually calling `cj_get_type()` which +expects that `key->type` is a valid pointer, resulting in a segmentation +fault. + +This patch does three things to ensure that this segmentation fault does +not happen again: + +1. `cj_get_type()` checks its argument to make sure it is valid before + dereferencing any pointers. +2. In case a non-map is found when a map is expected, the code will + return instead of limping on. +3. After calling `cj_cb_inc_array_index()`, which may update the key, + make sure that it actually did and that key is valid now. + +Fixes: #1896 +--- + src/curl_json.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/curl_json.c b/src/curl_json.c +index 4188f37..a547ddc 100644 +--- a/src/curl_json.c ++++ b/src/curl_json.c +@@ -143,6 +143,9 @@ static int cj_get_type (cj_key_t *key) + { + const data_set_t *ds; + ++ if ((key == NULL) || !CJ_IS_KEY (key)) ++ return -EINVAL; ++ + ds = plugin_get_ds (key->type); + if (ds == NULL) + { +@@ -226,12 +229,15 @@ static int cj_cb_number (void *ctx, + buffer[sizeof (buffer) - 1] = 0; + + if ((key == NULL) || !CJ_IS_KEY (key)) { +- if (key != NULL && !db->state[db->depth].in_array/*can be inhomogeneous*/) ++ if (key != NULL && !db->state[db->depth].in_array/*can be inhomogeneous*/) { + NOTICE ("curl_json plugin: Found \"%s\", but the configuration expects" + " a map.", buffer); ++ return (CJ_CB_CONTINUE); ++ } ++ + cj_cb_inc_array_index (ctx, /* update_key = */ 1); + key = db->state[db->depth].key; +- if (key == NULL) { ++ if ((key == NULL) || !CJ_IS_KEY (key)) { + return (CJ_CB_CONTINUE); + } + } diff --git a/app-admin/collectd/metadata.xml b/app-admin/collectd/metadata.xml index 29a819a96d01..250736f04588 100644 --- a/app-admin/collectd/metadata.xml +++ b/app-admin/collectd/metadata.xml @@ -33,10 +33,12 @@ Build the bind input plugin (collects statistics from bind instances) Build the Ceph input plugin (collects statistics from the Ceph distributed storage system) Build the cgroups input plugin (collects CPU accounting information for processes in a cgroup) + Build the chrony input plugin (collects statistics from a chrony NTP server) Build the conntrack input plugin (tracks the number of entries in Linux's connection tracking table) Build the contextswitch input plugin (collects the number of context switches done by the operating system) Build the cpu input plugin (collects the amount of time spent by the CPU in various states) Build the cpufreq input plugin (collects the current CPU's frequency) + Build the cpusleep input plugin (measures time spent by CPU in deep sleep mode) Build the csv output plugin (writes to comma separated values (CSV) files) Build the curl input plugin (reads streams using net-misc/curl and then parses them according to the configuration) Build the curl_json input plugin (queries JavaScript Object Notation (JSON) data using net-misc/curl and parses it according to the user's configuration using dev-libs/yajl) @@ -55,6 +57,7 @@ Build the fscache input plugin (collects information about the file-system based caching infrastructure for network file-systems and other slow media) Build the GenericJMX input plugin (reads Managed Beans (MBeans) from an MBeanServer using JMX input plugin; Requires JAVA) Build the gmond input plugin (receives data from gmond, the client daemon of the Ganglia project) + Build the gps input plugin (collects number of satellites seen by a GPS receiver using sci-geosciences/gpsd) Build the hddtemp input plugin (collects the temperature of disks from hddtemp daemon) Build the interface input plugin (collects information about the traffic, packets per second and errors of interfaces) Build the IPC input plugin (collects information related to shared memory) @@ -66,6 +69,7 @@ Build the load input plugin (collects the system load) Build the logfile output plugin (receives log messages from collectd and writes them to a text file) Build the Logstash output plugin (writes collectd logs and events as Logstash JSON formatted events) + Build the LUA language binding plugin (uses dev-lang/lua) for writing plugins Build the LVM input plugin (collects the size of logical volumes (LV) and free space inside a volume group (VG) from Linux' Logical Volume Manager (LVM)) Build the madwifi input plugin (collects information about Atheros wireless LAN chipsets from the MadWifi driver) Build the match_empty_counter filter plugin @@ -79,6 +83,7 @@ Build the memcached input plugin (collects statistics from memcached daemon) Build the memory input plugin (collects physical memory utilization) Build the Modbus input plugin (reads register values from a Modbus "slave" via Modbus/TCP) + Build the MQTT plugin (sends metrics to and/or receives metrics from an MQTT broker using app-misc/mosquitto) Build the multimeter input plugin (reads a voltage or current from a multimeter connected to a serial bus) Build the mysql input plugin (collects values from 'SHOW STATUS' command of a MySQL server) Build the netlink input plugin (collects statistics for interfaces, qdiscs, classes and filters using netlink socket) @@ -87,6 +92,7 @@ Build the nginx input plugin (collects number of requests handled and the number of current connections by connection state by the nginx daemon) Build the notify_desktop output plugin (uses x11-libs/libnotify to display notifications to the user) Build the notify_email output plugin (uses net-libs/libesmtp to send notifications to a configured email address) + Build the notify_nagios output plugin (sends notifications to Nagios as a passive check result) Build the ntpd input plugin (collects statistics from a NTP server) Build the numa input plugin (collects statistics of the Linux Non-Uniform Memory Access (NUMA) subsystem) Build the nut input plugin (collects UPS statistics using the Network UPS Tools) @@ -145,6 +151,7 @@ Build the Riemann output plugin (stores values in Riemann, a stream processing and monitoring system) Build the Sensu output plugin (sends metrics to Sensu Core, an open-source monitoring project) Build the TSDB output plugin (writes metrics to OpenTSDB, an open-source distributed time-series database based on Apache HBase) + Build the XEN CPU input plugin (collects XEN Hypervisor CPU stats using app-emulation/xen-tools) Build the ZFS ARC input plugin (reports information such as the cache size, the various hits and misses (also as a ratio) and the transferred data) Build the zookeeper input plugin (reads data from Apache Zookeeper MNTR command) Install user-contributed files in the doc directory diff --git a/profiles/arch/amd64/package.use.mask b/profiles/arch/amd64/package.use.mask index aa560c7d4133..7df2430ae6a3 100644 --- a/profiles/arch/amd64/package.use.mask +++ b/profiles/arch/amd64/package.use.mask @@ -18,6 +18,10 @@ #--- END OF EXAMPLES --- +# Thomas Deutschmann (22 Sep 2016) +# Enable MQTT support on supported architectures +app-admin/collectd -collectd_plugins_mqtt + # Thomas Deutschmann (26 Aug 2016) # Enable numa support on supported architectures dev-db/percona-server -numa diff --git a/profiles/arch/x86/package.use.mask b/profiles/arch/x86/package.use.mask index 368d17b6771e..fde9a053fb53 100644 --- a/profiles/arch/x86/package.use.mask +++ b/profiles/arch/x86/package.use.mask @@ -4,6 +4,10 @@ # This file requires >=portage-2.1.1 +# Thomas Deutschmann (22 Sep 2016) +# Enable MQTT support on supported architectures +app-admin/collectd -collectd_plugins_mqtt + # Thomas Deutschmann (26 Aug 2016) # Enable numa support on supported architectures dev-db/percona-server -numa diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask index 2e73a2586fb0..3fb00f6353f7 100644 --- a/profiles/base/package.use.mask +++ b/profiles/base/package.use.mask @@ -5,6 +5,10 @@ # This file requires >=portage-2.1.1 # New entries go on top. +# Thomas Deutschmann (22 Sep 2016) +# Dependency is only keyworded on amd64 and x86 +app-admin/collectd collectd_plugins_mqtt + # Michael Palimaka (15 Sep 2016) # Requires unreleased dependency dev-qt/qtspeech. kde-apps/kpimtextedit speech -- 2.26.2