
# Copyright 2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/connman/connman-0.43.ebuild,v 1.1 2009/10/05 12:22:24 dagger Exp $

EAPI="2"
CROS_WORKON_PROJECT="chromiumos/platform/flimflam"
CROS_WORKON_USE_VCSID="1"

inherit autotools cros-workon toolchain-funcs

DESCRIPTION="Provides a daemon for managing internet connections"
HOMEPAGE="http://connman.net"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~x86"
IUSE="bluetooth +bootstat +crosmetrics +debug +dhcpcd +diagnostics dnsproxy doc +ethernet +hostroute +l2tpipsec +modemmanager +newwifi +nss +openvpn policykit +ppp resolvconf resolvfiles threads tools +udev"

RDEPEND=">=dev-libs/glib-2.16
	>=sys-apps/dbus-1.2
	dev-libs/dbus-glib
	bluetooth? ( net-wireless/bluez )
	bootstat? ( chromeos-base/bootstat )
	crosmetrics? ( chromeos-base/metrics )
	dhcpcd? ( net-misc/dhcpcd )
	diagnostics? ( sys-apps/net-tools )
	modemmanager? ( chromeos-base/modem-utilities
		        >=chromeos-base/mobile-providers-0.0.1-r12 )
	>=net-dns/c-ares-1.7.0
	nss? ( dev-libs/nss )
	openvpn? ( net-misc/openvpn )
	policykit? ( >=sys-auth/policykit-0.7 )
	net-misc/curl
	ppp? ( net-dialup/ppp )
	resolvconf? ( net-dns/openresolv )
	udev? ( >=sys-fs/udev-141 )
	l2tpipsec? ( chromeos-base/vpn-manager )
	newwifi? ( net-wireless/wpa_supplicant[dbus] )
        !chromeos-base/entd"

DEPEND="${RDEPEND}
	modemmanager? ( virtual/modemmanager )
	doc? ( dev-util/gtk-doc )"

CROS_WORKON_LOCALNAME="../third_party/flimflam"

src_prepare() {
	eautoreconf
}

src_configure() {
	if tc-is-cross-compiler ; then
		if use dhcpcd ; then
			export ac_cv_path_DHCPCD=/sbin/dhcpcd
		fi
		if use l2tpipsec ; then
			export ac_cv_path_L2TPIPSEC=/usr/sbin/l2tpipsec_vpn
		fi
		if use newwifi ; then
			export ac_cv_path_WPASUPPLICANT=/sbin/wpa_supplicant
		fi
		if use openvpn ; then
			export ac_cv_path_OPENVPN=/usr/sbin/openvpn
		fi
	fi

	econf \
		--localstatedir=/var \
		--enable-loopback=builtin \
		--with-sslroots=/etc/ssl/certs \
		--with-default-pkcs11=libchaps.so \
		$(use_enable bluetooth) \
		$(use_enable bootstat) \
		$(use_enable crosmetrics) \
		$(use_enable debug) \
		$(use_enable dhcpcd dhcpcd builtin) \
		$(use_enable dnsproxy dnsproxy builtin) \
		$(use_enable doc gtk-doc) \
		$(use_enable ethernet ethernet builtin) \
		$(use_enable hostroute) \
		$(use_enable l2tpipsec l2tpipsec builtin) \
		$(use_enable modemmanager modemmgr) \
		$(use_enable nss nss builtin) \
		$(use_enable openvpn openvpn builtin) \
		$(use_enable policykit polkit) \
		$(use_enable ppp) \
		$(use_enable resolvconf) \
		$(use_enable resolvfiles resolvfiles builtin) \
		$(use_enable threads) \
		$(use_enable tools) \
		$(use_enable udev) \
		$(use_enable newwifi newwifi builtin) \
		--disable-iwmx
}

src_compile() {
	emake clean-generic || die "emake clean failed"
	emake || die "emake failed"
}

src_install() {
	emake DESTDIR="${D}" install || die "emake install failed"
	keepdir /var/lib/${PN} || die

	if use resolvfiles ; then
		dodir /etc
		dosym /var/run/flimflam/resolv.conf /etc/resolv.conf || die
		insinto /etc
		echo "hosts: files dns" > nsswitch.conf || die
		doins nsswitch.conf || die
	elif use resolvconf; then
		:
	elif use dnsproxy ; then
		dodir /etc
		insinto /etc
		echo "nameserver 127.0.0.1" > resolv.conf
		doins resolv.conf || die
	fi

	if use ppp; then
		local ppp_dir="${D}"/etc/ppp/ip-up.d/
		mkdir -p ${ppp_dir}
		# pppd-script assumes pppd plugin is being used and crashes
		# trying to create a method call on its bus (which does not
		# exist).
		#cp "${D}"/usr/lib/flimflam/scripts/60-flimflam.sh ${ppp_dir}
	fi

	exeinto /usr/share/userfeedback/scripts
	doexe test/mm.sh test/mm-status || die "Can't copy user feedback scripts"
	dobin bin/ff_debug
	dobin bin/mm_debug
	dobin bin/set_apn
	dobin bin/wpa_debug
	dobin bin/set_arpgw
}
