diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2016-10-13 22:48:26 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2016-10-13 22:48:52 +0200 |
commit | 180eeb25679dbf994da5571521187938e8ec8354 (patch) | |
tree | 810a9e32d114941ae30014b60e9c7e8d04636b29 /app-admin/collectd | |
parent | app-office/libreoffice-bin: move hunspell to BIN_COMMON_DEPEND (diff) | |
download | gentoo-180eeb25679dbf994da5571521187938e8ec8354.tar.gz gentoo-180eeb25679dbf994da5571521187938e8ec8354.tar.bz2 gentoo-180eeb25679dbf994da5571521187938e8ec8354.zip |
app-admin/collectd: Revision bump to address multiple issues
- When collectd was emerged with "filecaps" USE flag set and at least one
chosen plugin required special capabilities systemd was unable to start
collectd because CapabilityBoundingSet option in collectd's systemd unit
file did not match with the capabilities actual set for
"/usr/sbin/collectd". (bug #596852)
- Cherry picked upstream commit 5e4f2ae61d to get rid of
> capability: warning: `collectd' uses 32-bit capabilities (legacy support in use)
message.
Gentoo-Bug: https://bugs.gentoo.org/596852
Package-Manager: portage-2.3.2
Diffstat (limited to 'app-admin/collectd')
-rw-r--r-- | app-admin/collectd/Manifest | 1 | ||||
-rw-r--r-- | app-admin/collectd/collectd-5.6.0.ebuild | 499 | ||||
-rw-r--r-- | app-admin/collectd/collectd-5.6.1-r1.ebuild (renamed from app-admin/collectd/collectd-5.6.1.ebuild) | 54 | ||||
-rw-r--r-- | app-admin/collectd/files/collectd-5.6.0-fix-apache-plugin.patch | 26 | ||||
-rw-r--r-- | app-admin/collectd/files/collectd-5.6.0-issue-1896.patch | 76 | ||||
-rw-r--r-- | app-admin/collectd/files/collectd-5.6.0-use-_LINUX_CAPABILITY_VERSION_3.patch | 37 |
6 files changed, 75 insertions, 618 deletions
diff --git a/app-admin/collectd/Manifest b/app-admin/collectd/Manifest index 2485930d77a3..ad706b179a0f 100644 --- a/app-admin/collectd/Manifest +++ b/app-admin/collectd/Manifest @@ -1,3 +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 DIST collectd-5.6.1.tar.bz2 1903962 SHA256 c30ff644f91407b4dc2d99787b99cc45ec00e538bd1cc269429d3c5e8a4aee2c SHA512 da25f1a9cbaf47533f5a4d2f5f78b966317d4f21865c5a714954ad9d7d02b4798a3e0471ce52199dc80e01dc2808376cb10a7e19c402aafc984bf595f09951a6 WHIRLPOOL 68ed2b27bbd48f5af5e29743dcd2871ab4c2904d5593bbb6f3e68129f318389e32e13b256d489ea7842b90c406974511c8f324383253c7b438e7b6a9d36d299d diff --git a/app-admin/collectd/collectd-5.6.0.ebuild b/app-admin/collectd/collectd-5.6.0.ebuild deleted file mode 100644 index 92338745d674..000000000000 --- a/app-admin/collectd/collectd-5.6.0.ebuild +++ /dev/null @@ -1,499 +0,0 @@ -# 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? ( <sci-libs/libsigrok-0.4 ) - collectd_plugins_smart? ( dev-libs/libatasmart ) - collectd_plugins_snmp? ( net-analyzer/net-snmp ) - collectd_plugins_tokyotyrant? ( net-misc/tokyotyrant ) - collectd_plugins_varnish? ( www-servers/varnish ) - collectd_plugins_virt? ( app-emulation/libvirt:= dev-libs/libxml2:2= ) - collectd_plugins_write_http? ( net-misc/curl:0= ) - collectd_plugins_write_kafka? ( >=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: <plugin 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} 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 - - # 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_newunit "contrib/systemd.${PN}.service" ${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# <LoadPlugin perl>\n# Globals true\n# </LoadPlugin>:' "${ED}"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>:' "${ED}"etc/collectd.conf || die -} - -pkg_postinst() { - local caps=() - use collectd_plugins_ceph && caps+=('cap_dac_override') - use collectd_plugins_exec && caps+=('cap_setuid' 'cap_setgid') - use collectd_plugins_iptables && caps+=('cap_net_admin') - use collectd_plugins_filecount && caps+=('cap_dac_read_search') - use collectd_plugins_turbostat && caps+=('cap_sys_rawio') - - if use collectd_plugins_dns || use collectd_plugins_ping; then - caps+=('cap_net_raw') - fi - - 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/collectd-5.6.1.ebuild b/app-admin/collectd/collectd-5.6.1-r1.ebuild index fc4601c474d6..d4d794e2dd70 100644 --- a/app-admin/collectd/collectd-5.6.1.ebuild +++ b/app-admin/collectd/collectd-5.6.1-r1.ebuild @@ -152,6 +152,7 @@ REQUIRED_USE=" PATCHES=( "${FILESDIR}"/${PN}-5.6.0-gentoo.patch + "${FILESDIR}"/${PN}-5.6.0-use-_LINUX_CAPABILITY_VERSION_3.patch ) # @FUNCTION: collectd_plugin_kernel_linux @@ -283,6 +284,14 @@ src_prepare() { # fix installdirs for perl, bug 444360 sed -i -e 's/INSTALL_BASE=$(DESTDIR)$(prefix) //' bindings/Makefile.am || die + # Adjust upstream's systemd unit + # - Get rid of EnvironmentFile directive; These files don't exist on Gentoo! + # - Add User=collectd to run collectd as user "collectd" per default + sed -i \ + -e '/^EnvironmentFile=.*/d' \ + -e '/^\[Service\]/aUser=collectd' \ + contrib/systemd.${PN}.service || 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 @@ -458,23 +467,36 @@ src_install() { } pkg_postinst() { - local caps=() - use collectd_plugins_ceph && caps+=('cap_dac_override') - use collectd_plugins_exec && caps+=('cap_setuid' 'cap_setgid') - use collectd_plugins_iptables && caps+=('cap_net_admin') - use collectd_plugins_filecount && caps+=('cap_dac_read_search') - use collectd_plugins_turbostat && caps+=('cap_sys_rawio') - - if use collectd_plugins_dns || use collectd_plugins_ping; then - caps+=('cap_net_raw') - fi + if use filecaps; then + local caps=() + use collectd_plugins_ceph && caps+=('CAP_DAC_OVERRIDE') + use collectd_plugins_exec && caps+=('CAP_SETUID' 'CAP_SETGID') + use collectd_plugins_iptables && caps+=('CAP_NET_ADMIN') + use collectd_plugins_filecount && caps+=('CAP_DAC_READ_SEARCH') + use collectd_plugins_turbostat && caps+=('CAP_SYS_RAWIO') + + if use collectd_plugins_dns || use collectd_plugins_ping; then + caps+=('CAP_NET_RAW') + fi - 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 + 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 + + local systemd_unit="${EROOT}usr/lib/systemd/system/collectd.service" + if [[ -e "${systemd_unit}" ]]; then + caps_str="${caps[*]}" + sed -i -e "s:^CapabilityBoundingSet=.*:CapabilityBoundingSet=${caps_str}:" "${systemd_unit}" || \ + die "Failed to set CapabilityBoundingSet in '${systemd_unit}'" + + elog "CapabilityBoundingSet in '${systemd_unit}'" + elog "updated to match capabilities set above." + elog + fi + fi fi elog "Note: Collectd is only the collector." 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 deleted file mode 100644 index e3afaeb5d607..000000000000 --- a/app-admin/collectd/files/collectd-5.6.0-fix-apache-plugin.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 60ec28dd104bdeef4c5ed6882fb2b663ca9da2eb Mon Sep 17 00:00:00 2001 -From: Florian Forster <octo@collectd.org> -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-issue-1896.patch b/app-admin/collectd/files/collectd-5.6.0-issue-1896.patch deleted file mode 100644 index afcd8d0a1bbb..000000000000 --- a/app-admin/collectd/files/collectd-5.6.0-issue-1896.patch +++ /dev/null @@ -1,76 +0,0 @@ -From ba52f94929822b1968f05cfbb37985af2e0b83a4 Mon Sep 17 00:00:00 2001 -From: Florian Forster <octo@collectd.org> -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/files/collectd-5.6.0-use-_LINUX_CAPABILITY_VERSION_3.patch b/app-admin/collectd/files/collectd-5.6.0-use-_LINUX_CAPABILITY_VERSION_3.patch new file mode 100644 index 000000000000..6c7e63501825 --- /dev/null +++ b/app-admin/collectd/files/collectd-5.6.0-use-_LINUX_CAPABILITY_VERSION_3.patch @@ -0,0 +1,37 @@ +From 5e4f2ae61dc39938c4df857854724ba1d36f3232 Mon Sep 17 00:00:00 2001 +From: Thomas Deutschmann <whissi@gentoo.org> +Date: Tue, 11 Oct 2016 16:16:23 +0200 +Subject: [PATCH] common.c: Use _LINUX_CAPABILITY_VERSION_3 in cap_header + +While check_capability() function already requires +_LINUX_CAPABILITY_VERSION_3 via "#ifdef" since commit 448627953c we still +set the cap_header's version to deprecated _LINUX_CAPABILITY_VERSION. This +results in a warning like + + > capability: warning: `collectd' uses 32-bit capabilities (legacy support in use) + +from the kernel when a plugin (like iptables) calls our check_capability() +function. + +With this commit we will set cap_header to kernel's current capability +version (_LINUX_CAPABILITY_VERSION_3), which is default since +kernel 2.6.26. + +Signed-off-by: Florian Forster <octo@collectd.org> +--- + src/daemon/common.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/daemon/common.c b/src/daemon/common.c +index e489449..477d759 100644 +--- a/src/daemon/common.c ++++ b/src/daemon/common.c +@@ -1698,7 +1698,7 @@ int check_capability (int capability) /* {{{ */ + } + + cap_header->pid = getpid(); +- cap_header->version = _LINUX_CAPABILITY_VERSION; ++ cap_header->version = _LINUX_CAPABILITY_VERSION_3; + if (capget(cap_header, cap_data) < 0) + { + ERROR("check_capability: capget failed"); |