summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2011-04-24 17:10:05 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2011-04-24 17:10:05 +0000
commitdff889908560f005ca1a7bbe6401636fb3e4b376 (patch)
tree5fab5367fade8f6649789af0e29d7d19a19605fa /app-admin/collectd
parentMove libunique:3 from the gnome overlay to tree, ~hppa dropped w.r.t. KEYWORD... (diff)
downloadgentoo-2-dff889908560f005ca1a7bbe6401636fb3e4b376.tar.gz
gentoo-2-dff889908560f005ca1a7bbe6401636fb3e4b376.tar.bz2
gentoo-2-dff889908560f005ca1a7bbe6401636fb3e4b376.zip
Add useflag for perl bindings and static libs, run as unprivileged user; bug 361723. Thanks to Bruno 'bonbons' on #collectd.
(Portage version: 2.1.9.46/cvs/Linux x86_64)
Diffstat (limited to 'app-admin/collectd')
-rw-r--r--app-admin/collectd/ChangeLog12
-rw-r--r--app-admin/collectd/collectd-4.10.2-r3.ebuild315
-rw-r--r--app-admin/collectd/collectd-4.10.3-r1.ebuild (renamed from app-admin/collectd/collectd-4.10.3.ebuild)33
-rw-r--r--app-admin/collectd/collectd-5.0.0-r1.ebuild (renamed from app-admin/collectd/collectd-5.0.0.ebuild)33
-rw-r--r--app-admin/collectd/files/collectd.confd12
-rw-r--r--app-admin/collectd/files/collectd.initd10
6 files changed, 86 insertions, 329 deletions
diff --git a/app-admin/collectd/ChangeLog b/app-admin/collectd/ChangeLog
index b3f60f1b7461..52eff544153b 100644
--- a/app-admin/collectd/ChangeLog
+++ b/app-admin/collectd/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for app-admin/collectd
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/ChangeLog,v 1.19 2011/04/24 16:01:24 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/ChangeLog,v 1.20 2011/04/24 17:10:05 dilfridge Exp $
+
+*collectd-5.0.0-r1 (24 Apr 2011)
+*collectd-4.10.3-r1 (24 Apr 2011)
+
+ 24 Apr 2011; Andreas K. Huettel <dilfridge@gentoo.org>
+ -collectd-4.10.2-r3.ebuild, -collectd-4.10.3.ebuild,
+ +collectd-4.10.3-r1.ebuild, -collectd-5.0.0.ebuild,
+ +collectd-5.0.0-r1.ebuild, files/collectd.confd, files/collectd.initd:
+ Add useflag for perl bindings and static libs, run as unprivileged user;
+ bug 361723. Thanks to Bruno 'bonbons' on #collectd.
24 Apr 2011; Andreas K. Huettel <dilfridge@gentoo.org>
collectd-4.10.3.ebuild, +files/collectd-4.10.3-lt.patch,
diff --git a/app-admin/collectd/collectd-4.10.2-r3.ebuild b/app-admin/collectd/collectd-4.10.2-r3.ebuild
deleted file mode 100644
index 0a92c7d68739..000000000000
--- a/app-admin/collectd/collectd-4.10.2-r3.ebuild
+++ /dev/null
@@ -1,315 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-4.10.2-r3.ebuild,v 1.1 2011/02/07 21:21:52 dilfridge Exp $
-
-EAPI="2"
-
-inherit eutils base linux-info perl-app autotools
-
-DESCRIPTION="A small daemon which collects system performance statistics - with a near-infinite number of plugins"
-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"
-
-# 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="netapp pinba xmms"
-
-# Plugins that still need some work
-COLLECTD_UNTESTED_PLUGINS="ipvs apple_sensors routeros tape zfs_arc nut modbus"
-
-# Plugins that have been (compile) tested and can be enabled via COLLECTD_PLUGINS
-COLLECTD_TESTED_PLUGINS="apache apcups ascent battery bind conntrack contextswitch
- cpu cpufreq curl curl_json curl_xml dbi df disk dns email entropy exec filecount fscache gmond
- hddtemp interface ipmi iptables irq java libvirt load madwifi mbmon memcachec
- memcached memory multimeter mysql netlink network nfs nginx ntpd olsrd
- onewire openvpn perl ping postgresql powerdns processes protocols python
- rrdcached sensors serial snmp swap table tail tcpconns teamspeak2 ted thermal
- tokyotyrant uptime users vmem vserver wireless csv exec logfile network
- notify_desktop notify_email oracle perl python rrdcached rrdtool syslog unixsock write_http
- match_empty_counter match_hashed match_regex match_timediff match_value
- target_notification target_replace target_scale target_set uuid"
-
-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="
- 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.9.1-r2 )
- collectd_plugins_java? ( virtual/jre dev-java/java-config-wrapper )
- collectd_plugins_libvirt? ( app-emulation/libvirt dev-libs/libxml2 )
- collectd_plugins_memcachec? ( dev-libs/libmemcached )
- collectd_plugins_mysql? ( >=virtual/mysql-5.0 )
- collectd_plugins_netlink? ( >=sys-apps/iproute2-2.6.34 )
- collectd_plugins_network? ( dev-libs/libgcrypt )
- collectd_plugins_nginx? ( net-misc/curl )
- collectd_plugins_notify_desktop? ( x11-libs/libnotify )
- collectd_plugins_notify_email? ( >=net-libs/libesmtp-1.0.4 dev-libs/openssl )
- collectd_plugins_onewire? ( sys-fs/owfs )
- collectd_plugins_oracle? ( >=dev-db/oracle-instantclient-basic-11.2.0.1.0 )
- 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-8.2 )
- collectd_plugins_python? ( =dev-lang/python-2* )
- collectd_plugins_rrdcached? ( >=net-analyzer/rrdtool-1.4 )
- collectd_plugins_rrdtool? ( >=net-analyzer/rrdtool-1.2.27 )
- collectd_plugins_sensors? ( sys-apps/lm_sensors )
- collectd_plugins_snmp? ( net-analyzer/net-snmp )
- collectd_plugins_tokyotyrant? ( net-misc/tokyotyrant )
- collectd_plugins_write_http? ( net-misc/curl )
-
- kernel_FreeBSD? (
- collectd_plugins_disk? ( >=sys-libs/libstatgrab-0.16 )
- collectd_plugins_interface? ( >=sys-libs/libstatgrab-0.16 )
- collectd_plugins_load? ( >=sys-libs/libstatgrab-0.16 )
- collectd_plugins_memory? ( >=sys-libs/libstatgrab-0.16 )
- collectd_plugins_swap? ( >=sys-libs/libstatgrab-0.16 )
- collectd_plugins_users? ( >=sys-libs/libstatgrab-0.16 )
- )"
-
-DEPEND="${COMMON_DEPEND}
- dev-util/pkgconfig
- kernel_linux? (
- collectd_plugins_vserver? ( sys-kernel/vserver-sources )
- )"
-
-RDEPEND="${COMMON_DEPEND}
- collectd_plugins_syslog? ( virtual/logger )"
-
-PATCHES=(
- "${FILESDIR}/${PN}-4.10.1"-{libperl,libiptc,noowniptc}.patch
- "${FILESDIR}/${P}"-{libocci,libnotify-0.7,nohal}.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
-
- # 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
-}
-
-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
-
- 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 interface iptables ipvs irq load
- memory netlink nfs 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
- 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
-
- # Finally, run econf.
- KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl --disable-static --localstatedir=/var ${myconf}
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die
-
- fixlocalpod
-
- find "${D}/usr/" -name "*.la" -exec rm -f {} +
-
- dodoc AUTHORS ChangeLog NEWS README TODO || die
-
- if use contrib ; then
- insinto /usr/share/doc/${PF}
- doins -r contrib || die
- fi
-
- keepdir /var/lib/${PN} || die
-
- newinitd "${FILESDIR}/${PN}.initd" ${PN} || die
- newconfd "${FILESDIR}/${PN}.confd" ${PN} || die
-
- insinto /etc/logrotate.d
- newins "${FILESDIR}/logrotate" collectd || 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"
-
- 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-4.10.3.ebuild b/app-admin/collectd/collectd-4.10.3-r1.ebuild
index 28f76037532f..58e73fd8ac05 100644
--- a/app-admin/collectd/collectd-4.10.3.ebuild
+++ b/app-admin/collectd/collectd-4.10.3-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-4.10.3.ebuild,v 1.3 2011/04/24 16:01:24 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-4.10.3-r1.ebuild,v 1.1 2011/04/24 17:10:05 dilfridge Exp $
EAPI=3
@@ -13,7 +13,7 @@ SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
-IUSE="contrib debug kernel_linux kernel_FreeBSD kernel_Darwin"
+IUSE="contrib debug kernel_linux kernel_FreeBSD kernel_Darwin perl static-libs"
# The plugin lists have to follow here since they extend IUSE
@@ -47,6 +47,7 @@ unset plugin
# Now come the dependencies.
COMMON_DEPEND="
+ 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 )
@@ -185,6 +186,7 @@ pkg_setup() {
fi
enewgroup collectd
+ enewuser collectd -1 -1 /var/lib/collectd collectd
}
src_prepare() {
@@ -250,6 +252,13 @@ src_configure() {
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
@@ -265,8 +274,11 @@ src_configure() {
myconf+=" --with-libiptc=no"
fi
+ # The perl bindings
+ myconf+=" $(use_with perl perl-bindings)"
+
# Finally, run econf.
- KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl --disable-static --localstatedir=/var ${myconf}
+ KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl $(use_enable static-libs static) --localstatedir=/var ${myconf}
}
src_install() {
@@ -275,6 +287,13 @@ src_install() {
fixlocalpod
find "${D}/usr/" -name "*.la" -exec rm -f {} +
+ rm "${D}/usr/$(get_libdir)"/collectd/*.a
+
+ # use collectd_plugins_ping && setcap cap_net_raw+ep ${D}/usr/sbin/collectd
+ # we cannot do this yet
+
+ chown root:collectd "${D}/etc/collectd.conf" || die
+ chmod u=rw,g=r,o= "${D}/etc/collectd.conf" || die
dodoc AUTHORS ChangeLog NEWS README TODO || die
@@ -284,6 +303,7 @@ src_install() {
fi
keepdir /var/lib/${PN} || die
+ chown collectd:collectd "${D}/var/lib/${PN}" || die
newinitd "${FILESDIR}/${PN}.initd" ${PN} || die
newconfd "${FILESDIR}/${PN}.confd" ${PN} || die
@@ -291,6 +311,8 @@ src_install() {
insinto /etc/logrotate.d
newins "${FILESDIR}/logrotate" collectd || die
+ 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
}
@@ -309,6 +331,11 @@ pkg_postinst() {
collectd_rdeps ntpd net-misc/ntp
collectd_rdeps openvpn ">=net-misc/openvpn-2.0.9"
+ 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
diff --git a/app-admin/collectd/collectd-5.0.0.ebuild b/app-admin/collectd/collectd-5.0.0-r1.ebuild
index bd5f421eaa2d..bd2cd36217c9 100644
--- a/app-admin/collectd/collectd-5.0.0.ebuild
+++ b/app-admin/collectd/collectd-5.0.0-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-5.0.0.ebuild,v 1.2 2011/04/24 16:01:24 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/collectd-5.0.0-r1.ebuild,v 1.1 2011/04/24 17:10:05 dilfridge Exp $
EAPI=4
@@ -13,7 +13,7 @@ SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
-IUSE="contrib debug kernel_linux kernel_FreeBSD kernel_Darwin"
+IUSE="contrib debug kernel_linux kernel_FreeBSD kernel_Darwin perl static-libs"
# The plugin lists have to follow here since they extend IUSE
@@ -47,6 +47,7 @@ unset plugin
# Now come the dependencies.
COMMON_DEPEND="
+ 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 )
@@ -185,6 +186,7 @@ pkg_setup() {
fi
enewgroup collectd
+ enewuser collectd -1 -1 /var/lib/collectd collectd
}
src_prepare() {
@@ -250,6 +252,13 @@ src_configure() {
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
@@ -265,8 +274,11 @@ src_configure() {
myconf+=" --with-libiptc=no"
fi
+ # The perl bindings
+ myconf+=" $(use_with perl perl-bindings)"
+
# Finally, run econf.
- KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl --disable-static --localstatedir=/var ${myconf}
+ KERNEL_DIR="${KERNEL_DIR}" econf --config-cache --without-included-ltdl $(use_enable static-libs static) --localstatedir=/var ${myconf}
}
src_install() {
@@ -275,6 +287,13 @@ src_install() {
fixlocalpod
find "${D}/usr/" -name "*.la" -exec rm -f {} +
+ rm "${D}/usr/$(get_libdir)"/collectd/*.a
+
+ # use collectd_plugins_ping && setcap cap_net_raw+ep ${D}/usr/sbin/collectd
+ # we cannot do this yet
+
+ chown root:collectd "${D}/etc/collectd.conf" || die
+ chmod u=rw,g=r,o= "${D}/etc/collectd.conf" || die
dodoc AUTHORS ChangeLog NEWS README TODO
@@ -284,6 +303,7 @@ src_install() {
fi
keepdir /var/lib/${PN}
+ chown collectd:collectd "${D}/var/lib/${PN}" || die
newinitd "${FILESDIR}/${PN}.initd" ${PN}
newconfd "${FILESDIR}/${PN}.confd" ${PN}
@@ -291,6 +311,8 @@ src_install() {
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
}
@@ -309,6 +331,11 @@ pkg_postinst() {
collectd_rdeps ntpd net-misc/ntp
collectd_rdeps openvpn ">=net-misc/openvpn-2.0.9"
+ 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
diff --git a/app-admin/collectd/files/collectd.confd b/app-admin/collectd/files/collectd.confd
index a08b9175fca5..ebb18efa8dc1 100644
--- a/app-admin/collectd/files/collectd.confd
+++ b/app-admin/collectd/files/collectd.confd
@@ -1,6 +1,6 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/files/collectd.confd,v 1.1 2010/09/28 15:17:05 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/files/collectd.confd,v 1.2 2011/04/24 17:10:05 dilfridge Exp $
# Nice value used to launch collectd, to change priority of the process. As
# you usually will want to run it in background, a default of 5 is used.
@@ -13,4 +13,10 @@
# File used to store the PID file. Usually you won't need to touch it.
#
-#COLLECTD_PIDFILE='/var/run/collectd.pid'
+#COLLECTD_PIDFILE='/var/run/collectd/collectd.pid'
+
+# User to run collectd as (default is collectd, change to root or give
+# collectd user appropriate privileges if you use one of the plugins that
+# require it, as e.g. ping or iptables plugins)
+#
+#COLLECTD_USER='collectd'
diff --git a/app-admin/collectd/files/collectd.initd b/app-admin/collectd/files/collectd.initd
index 3240bfb0732f..6028c93f5efd 100644
--- a/app-admin/collectd/files/collectd.initd
+++ b/app-admin/collectd/files/collectd.initd
@@ -1,11 +1,12 @@
#!/sbin/runscript
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/files/collectd.initd,v 1.3 2010/12/16 17:33:45 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/collectd/files/collectd.initd,v 1.4 2011/04/24 17:10:05 dilfridge Exp $
-: ${COLLECTD_PIDFILE:='/var/run/collectd.pid'}
+: ${COLLECTD_PIDFILE:='/var/run/collectd/collectd.pid'}
: ${COLLECTD_CFGFILE:='/etc/collectd.conf'}
: ${COLLECTD_NICELVL:='5'}
+: ${COLLECTD_USER:='collectd'}
opts="${opts} configtest"
@@ -42,9 +43,10 @@ checkconfig() {
start() {
checkconfig || return 1
+ [ -d /var/run/collectd ] || mkdir /var/run/collectd && chown collectd:collectd /var/run/collectd
ebegin "Starting collectd"
- start-stop-daemon --start \
+ start-stop-daemon --start -c "${COLLECTD_USER}:collectd" \
--nicelevel "${COLLECTD_NICELVL}" --exec /usr/sbin/collectd -- \
-P "${COLLECTD_PIDFILE}" -C "${COLLECTD_CFGFILE}"
eend $? "Failed to start collectd"