view app-admin/collectd/collectd-4.4.1.ebuild @ 43:365d3f380d8d

pulled in changes from Holgi
author Dirk Olmes <dirk@xanthippe.ping.de>
date Fri, 20 Jun 2008 15:09:02 +0200
parents 9283c4b8218f
children
line wrap: on
line source

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit autotools eutils flag-o-matic linux-info

DESCRIPTION="A small daemon which collects system performance statistics"
HOMEPAGE="http://collectd.org/"

SRC_URI="${HOMEPAGE}/files/${P}.tar.bz2"
LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86 ~amd64"
IUSE="
    apache2 apcups dns email hal hddtemp ithreads lighttpd lm_sensors memcache
    mysql network nfs nginx ntp nut perl qemu rrdtool snmp syslog vserver xen
"

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

    if ( !(linux_chkconfig_present ACPI_BATTERY) ); then einfo
	ewarn "ACPI_BATTERY needs to be enabled in your kernel for the battery plug-in to work correctly"; fi
    if ( !(linux_chkconfig_present CPU_FREQ) ); then einfo
	ewarn "CPU_FREQ needs to be enabled in your kernel for the cpufreq plug-in to work correctly"; fi
    if ( !(linux_chkconfig_present SERIAL_CORE) ); then einfo
	ewarn "SERIAL_CORE needs to be enabled in your kernel for the serial plug-in to work correctly"; fi
    if ( !(linux_chkconfig_present SWAP) ); then einfo
	ewarn "SWAP needs to be enabled in your kernel for the swap plug-in to work correctly"; fi
    if ( (use vserver) && !(linux_chkconfig_present IP_VS) ); then einfo
	ewarn "IP_VS should to be enabled in your kernel when the USE flag vserver is enabled"; fi
    if (use qemu && !(built_with_use libvirt qemu) ); then
	die "USE flag qemu requires that libvirt was compiled with the USE flag qemu"; fi
    if (use xen  && !(built_with_use libvirt xen) ); then
	die "USE flag xen requires that libvirt was compiled with the USE flag xen"; fi

    if (use perl); then
	if (use ithreads); then
	    (built_with_use perl ithreads) \
	    || die "The perl plug-in requires that libperl was compiled with the USE flag ithreads"
	else
	    einfo
	    ewarn "The perl plug-in requires the ithreads USE flag."
	fi
    fi
    einfo

    if ( !(linux_chkconfig_present PROC_FS) ); then
	## 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 your kernel"	## UPDATE LATER
    fi

    if ( !(use network) ); then
	if ( use dns ); then		die "The USE flag dns requires that the USE flag network is enabled"; fi
	if ( use email ); then		die "The USE flag email requires that the USE flag network is enabled"; fi
	if ( use nfs ); then		die "The USE flag nfs requires that the USE flag network is enabled"; fi
	if ( use ntp ); then		die "The USE flag ntp requires that the USE flag network is enabled"; fi
	if ( use snmp ); then		die "The USE flag snmp requires that the USE flag network is enabled"; fi
	if ( use vserver ); then	die "The USE flag vserver requires that the USE flag network is enabled"; fi
    fi
}

src_unpack() {
    if [ "${A}" != "" ]; then
        unpack ${A}
    fi

    cd ${S}

    sed -i -e '/^AC_PLUGIN/ s/\ [[].*[]],/[no],/' \
	configure.in \
	|| die "sed no-automagic-patch failed"

    eautoreconf \
	|| die "eautoreconf failed"
}

src_compile()
{
    local myconf
    local disabled_plugins
    
    ### NEEDS TO BE FIXED PROBABLY
    append-flags -I/usr/src/linux/include

    if ( use apache2 || use lighttpd );
	then myconf="${myconf} --enable-apache"; fi
    myconf="${myconf} $(use_enable apcups)"
    myconf="${myconf} --disable-apple_sensors"		## DISABLED
	disabled_plugins="${disabled_plugins} apple_sensors"
    myconf="${myconf} --enable-battery"			## Kernel check PROCFS
    myconf="${myconf} --enable-cpu"			## PROCFS
    myconf="${myconf} --enable-cpufreq"			## Kernel check SYSFS
    myconf="${myconf} --enable-csv"			## no checks
    myconf="${myconf} --enable-df"			## no checks
    myconf="${myconf} --enable-disk"			## PROCFS
    myconf="${myconf} $(use network && use_enable dns)"
    myconf="${myconf} $(use network && use_enable email)"
    myconf="${myconf} --enable-entropy"			## PROCFS
    myconf="${myconf} --disable-exec"			## NEEDS USERS
	disabled_plugins="${disabled_plugins} exec"
    myconf="${myconf} $(use_enable hddtemp)"		## PROCFS
    myconf="${myconf} $(use_enable network interface)"	## PROCFS
    myconf="${myconf} --disable-iptables"		## BREAKS
	disabled_plugins="${disabled_plugins} iptables"
    myconf="${myconf} $(use network && use_enable vserver ipvs)"	## Kernel check NEEDS CFLAGS -I -- FIX LATER
    myconf="${myconf} --enable-irq"			## PROCFS
    if ( use qemu || use xen ); then			## NEEDS KERNEL CHECK
	myconf="${myconf} --enable-libvirt"; fi
    myconf="${myconf} --enable-load"			## PROCFS
    myconf="${myconf} --enable-logfile"			## no checks
    myconf="${myconf} --disable-mbmon"			## COULD NOT FIND DAEMON
	disabled_plugins="${disabled_plugins} mbmon"
    myconf="${myconf} $(use_enable memcache memcached)"
    myconf="${myconf} --enable-memory"			## PROCFS
    myconf="${myconf} --enable-multimeter"
    myconf="${myconf} $(use_enable mysql)"
    myconf="${myconf} --disable-netlink"		## BREAKS
	disabled_plugins="${disabled_plugins} netlink"
    myconf="${myconf} $(use_enable network)"		## NO PROCFS
    myconf="${myconf} $(use network && use_enable nfs)"	## PROCFS
    myconf="${myconf} $(use_enable nginx)"
    myconf="${myconf} $(use network && use_enable ntp ntpd)"
    myconf="${myconf} $(use_enable nut)"
    myconf="${myconf} $(use ithreads && use_enable perl)"
    myconf="${myconf} $(use_with perl perl-bindings)"
    myconf="${myconf} $(use_enable network ping)"
    myconf="${myconf} --enable-processes"		## PROCFS
    myconf="${myconf} $(use_enable rrdtool)"
    myconf="${myconf} $(use_enable lm_sensors sensors)"
    myconf="${myconf} --enable-serial"			## Kernel check PROCFS
    myconf="${myconf} $(use network && use_enable snmp)"
    myconf="${myconf} --enable-swap"			## Kernel check PROCFS
    myconf="${myconf} $(use_enable syslog)"
    myconf="${myconf} --disable-tape"			## SOLARIS ???
	disabled_plugins="${disabled_plugins} tape"
    myconf="${myconf} $(use_enable network tcpconns)"	## PROCFS
    myconf="${myconf} $(use_enable network unixsock)"
    myconf="${myconf} --enable-users"
    myconf="${myconf} --enable-uuid"			## Depends on hal or dmidecode PROCFS
    myconf="${myconf} $(use network && use_enable vserver)"		## PROCFS
    myconf="${myconf} $(use_enable network wireless)" 	## NEEDS KERNEL CHECK ## PROCFS
    myconf="${myconf} --disable-xmms"			## NOT IN GENTOO
	disabled_plugins="${disabled_plugins} xmms"

    einfo
    elog "The following plug-ins have been disabled in the ebuild"
    elog ${disabled_plugins}
    einfo

    ### Configure
    econf \
	${myconf} \
	--localstatedir=/var \
	|| die "econf failed"

    ### Build
    emake \
	|| die "emake failed"
}

src_install()
{
    emake \
	DESTDIR="${D}" \
	install || die "emake install failed"

    ### Documentation
    dodoc AUTHORS ChangeLog NEWS README TODO \
	|| die "dodoc failed"

    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"

    
    keepdir /var/lib/collectd \
	|| die "keepdir failed"

    newinitd "${FILESDIR}/${PN}-4.3.2.initd" ${PN} \
	|| die "newinitd failed"
    
    newconfd "${FILESDIR}/${PN}-4.3.2.confd" ${PN} \
	|| die "newconfd failed"
}

pkg_postinst()
{
    einfo
    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"
    einfo
}