# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils linux-info flag-o-matic DESCRIPTION="A small daemon which collects system performance statistics" HOMEPAGE="http://collectd.org/" SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2" LICENSE="GPL-3" SLOT="0" KEYWORDS="~x86 ~amd64" IUSE=" apache2 lighttpd nginx apcups hddtemp network dns email qemu xen vserver memcache mysql nfs ntp nut perl rrdtool lm_sensors snmp syslog hal ithreads " DEPEND=" apache2? ( >=net-misc/curl-7.17.0 ) lighttpd? ( >=net-misc/curl-7.17.0 ) nginx? ( >=net-misc/curl-7.17.0 ) dns? ( >=net-libs/libpcap-0.9.8 ) qemu? ( >=app-emulation/libvirt-0.3.3 ) xen? ( >=app-emulation/libvirt-0.3.3 ) mysql? ( >=virtual/mysql-5.0 ) perl? ( >=dev-lang/perl-5.8.8-r4 ) nut? ( >=sys-power/nut-2.2.0 ) rrdtool? ( >=net-analyzer/rrdtool-1.2.27 ) lm_sensors? ( >=sys-apps/lm_sensors-2.10.4 ) snmp? ( >=net-analyzer/net-snmp-5.4.1-r3 ) hal? ( >=sys-apps/hal-0.5.9.1-r3 ) >=dev-libs/libxml2-2.6.31 " RDEPEND=" ${DEPEND} apcups? ( >=sys-power/apcupsd-3.14.2 ) hddtemp? ( >=app-admin/hddtemp-0.3_beta15-r3 ) memcache? ( >=net-misc/memcached-1.2.2-r2 ) ntp? ( >=net-misc/ntp-4.2.4_p4 ) syslog? ( virtual/logger ) !hal? ( >=sys-apps/dmidecode-2.9 ) " pkg_setup() { linux-info_pkg_setup } src_compile() { local myconf local mykern local disabled_plugins ### NEEDS TO BE FIXED PROBABLY append-flags -I/usr/src/linux/include ### Kernel options if (linux_chkconfig_present PROC_FS); then mykern="$(mykern) proc_fs" fi if (linux_chkconfig_present IP_VS); then mykern="$(mykern) ip_vs" fi ################################################# myconf="${myconf} --without-libiptc --with-liboconfig --with-libpthread --without-libstatgrab --without-libxmms " ### no checks myconf="${myconf} --enable-csv" myconf="${myconf} --enable-df" myconf="${myconf} --enable-logfile" myconf="${myconf} --enable-uuid" ## Depends on hal or dmidecode ### procfs dependents if ( hasq proc_fs ${mykern} ); then myconf="${myconf} --enable-battery" ## NEEDS KERNEL CHECK myconf="${myconf} --enable-cpu" myconf="${myconf} --enable-cpufreq" ## NEEDS KERNEL CHECK myconf="${myconf} --enable-disk" myconf="${myconf} --enable-entropy" myconf="${myconf} --enable-irq" myconf="${myconf} --enable-load" myconf="${myconf} --enable-memory" myconf="${myconf} --enable-processes" myconf="${myconf} --enable-serial" myconf="${myconf} --enable-swap" myconf="${myconf} --enable-users" ## NEEDS KERNEL CHECK ### Network myconf="${myconf} $(use_enable network interface)" #myconf="${myconf} $(use_enable network netlink) $(use_with network libnetlink)" ## BREAKS myconf="${myconf} --disable-netlink --without-libnetlink" disabled_plugins="${disabled_plugins} netlink" myconf="${myconf} $(use_enable network)" myconf="${myconf} $(use_enable network ping) $(use_with network liboping)" myconf="${myconf} $(use_enable network tcpconns)" myconf="${myconf} $(use_enable network unixsock)" myconf="${myconf} $(use_enable network wireless)" ## NEEDS KERNEL CHECK if ( use network ); then myconf="${myconf} $(use_enable dns) $(use_with dns libpcap)" myconf="${myconf} $(use_enable nfs)" myconf="${myconf} $(use_enable ntp ntpd)" myconf="${myconf} $(use_enable snmp) $(use_with snmp libnetsnmp)" if ( hasq ip_vs ${mykern} ); then myconf="${myconf} $(use_enable vserver)" myconf="${myconf} $(use_enable vserver ipvs)" #NEEDS CFLAGS -I -- FIX LATER else if ( use vserver ); then die "${P} requires that IP_VS is enabled in the kernel for the USE flag vserver"; fi fi else myconf="${myconf} \ --disable-dns --without-libpcap --disable-nfs --disable-ntpd --disable-snmp --disable-vserver --disable-ipvs " if ( use dns ); then die "USE flag dns requires USE flag network"; fi if ( use nfs ); then die "USE flag nfs requires USE flag network"; fi if ( use ntp ); then die "USE flag ntp requires USE flag network"; fi if ( use snmp ); then die "USE flag snmp requires USE flag network"; fi if ( use vserver ); then die "USE flag vserver requires USE flag network"; fi fi else ### Network if ( use network ); then die "${P} requires that PROC_FS is enabled in the kernel for the USE flag network"; fi die "${P} requires that PROC_FS is enabled in the kernel" ## UPDATE LATER fi ### Web Servers if ( use apache2 || use lighttpd || use nginx ); then myconf="${myconf} --with-libcurl" else myconf="${myconf} --without-libcurl" fi if ( use apache2 || use lighttpd ); then myconf="${myconf} --enable-apache" else myconf="${myconf} --disable-apache" fi myconf="${myconf} $(use_enable nginx)" ### APC UPS myconf="${myconf} $(use_enable apcups)" ### Apple myconf="${myconf} --disable-apple_sensors" ## DISABLED disabled_plugins="${disabled_plugins} apple_sensors" ### Email myconf="${myconf} $(use_enable email)" ### hddtemp myconf="${myconf} $(use_enable hddtemp)" ### Virtualization -- NEEDS KERNEL CHECK if ( use qemu || use xen ) then myconf="${myconf} --enable-libvirt"; if (built_with_use libvirt qemu); then die "USE flag qemu requires that libvirt was compiled with the USE flag qemu"; fi if (built_with_use libvirt xen); then die "USE flag xen requires that libvirt was compiled with the USE flag xen"; fi else myconf="${myconf} --disable-libvirt"; fi ### Memcached myconf="${myconf} $(use_enable memcache memcached)" ### Mysql myconf="${myconf} $(use_enable mysql) $(use_with mysql libmysql)" ### Network UPS myconf="${myconf} $(use_enable nut) $(use_with nut libupsclient)" ### Perl if (use perl); then myconf="${myconf} $(use_with perl libperl)" myconf="${myconf} $(use_with perl perl-bindings)" if (use ithreads); then if (built_with_use perl ithreads); then myconf="${myconf} --enable-perl" else die "The perl plug-in requires that libperl was compiled with the USE flag ithreads"; fi else myconf="${myconf} --disable-perl" einfo einfo "The perl plug-in requires the ithreads USE flag." fi fi ### RRDtool myconf="${myconf} $(use_enable rrdtool) $(use_with rrdtool)" ### lm_sensors myconf="${myconf} $(use_enable lm_sensors sensors) $(use_with lm_sensors lm-sensors)" ### Syslog myconf="${myconf} $(use_enable syslog)" ### DISABLED myconf="${myconf} --disable-exec" ## NEEDS USERS disabled_plugins="${disabled_plugins} exec" myconf="${myconf} --disable-iptables" ## BREAKS disabled_plugins="${disabled_plugins} iptables" myconf="${myconf} --disable-mbmon" ## COULD NOT FIND DAEMON disabled_plugins="${disabled_plugins} mbmon" myconf="${myconf} --disable-multimeter" ## DISABLED disabled_plugins="${disabled_plugins} multimeter" myconf="${myconf} --disable-tape" ## SOLARIS ??? disabled_plugins="${disabled_plugins} tape" myconf="${myconf} --disable-xmms" ## NOT IN GENTOO disabled_plugins="${disabled_plugins} xmms" einfo einfo "The following plug-ins have been disabled in the ebuild" einfo ${disabled_plugins} einfo ### Configure econf \ ${myconf} \ --localstatedir=/var \ || die "econf failed" einfo einfo "The above plug-ins have been configured" einfo ebeep 3 ### Build emake \ || die "emake failed" } src_install() { emake \ DESTDIR="${D}" \ install || die "emake install failed" ### Documentation docinto contrib/SpamAssassin dodoc contrib/SpamAssassin/* \ || die "dodoc contrib failed" docinto contrib/examples dodoc contrib/examples/* \ || die "dodoc contrib failed" docinto contrib/iptables dodoc contrib/iptables/* \ || die "dodoc contrib failed" docinto contrib docinto contrib dodoc contrib/README contrib/*\.[a-z]* \ || die "dodoc contrib failed" dodoc AUTHORS ChangeLog NEWS README TODO \ || die "dodoc failed" keepdir /var/lib/collectd \ || die "keepdir failed" newinitd "${FILESDIR}/${P}.initd" collectd \ || die "newinitd failed" newconfd "${FILESDIR}/${P}.confd" collectd \ || die "newconfd failed" } pkg_postinst() { einfo "collectd introduced some changes in the new 4.x series." einfo "For further information, read http://collectd.org/migrate-v3-v4.shtml" einfo "The migration script can be found at:" einfo "/usr/share/doc/${P}/contrib/migrate-3-4.px.bz2" }