# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ EAPI="5" PYTHON_COMPAT=( python2_7 ) inherit eutils linux-info python-any-r1 DESCRIPTION="Free client for Cisco AnyConnect SSL VPN software" HOMEPAGE="http://www.infradead.org/openconnect.html" # New versions of openconnect-script can be found here: # http://git.infradead.org/users/dwmw2/vpnc-scripts.git/history/HEAD:/vpnc-script SRC_URI="ftp://ftp.infradead.org/pub/${PN}/${P}.tar.gz https://dev.gentoo.org/~hwoarang/distfiles/openconnect-script-20121108205904.tar.gz" LICENSE="LGPL-2.1 GPL-2" SLOT="0/2" KEYWORDS="amd64 ppc64 x86" IUSE="doc static-libs nls -gnutls" ILINGUAS="ar as ast bg bg_BG bn bn_IN bs ca ca@valencia cs da de el en_GB en_US eo es es_CR es_MX et eu fa fi fr gd gl gu he hi hi_IN hu id it ja km kn ko ku lo lt lv ml mr ms nb nl nn no or pa pl pt pt_BR pt_PT ro ru sk sl sq sr sr@latin sv ta te tg th tl tr ug uk ur_PK vi vi_VN wa zh_CN zh_HK zh_TW" for lang in $ILINGUAS; do IUSE="${IUSE} linguas_${lang}" done DEPEND="dev-libs/libxml2 net-libs/libproxy sys-libs/zlib !gnutls? ( dev-libs/openssl[static-libs?] ) gnutls? ( || ( ( >=net-libs/gnutls-3[static-libs?] dev-libs/nettle ) ( =net-libs/gnutls-2.12*[nettle,static-libs?] dev-libs/nettle ) ( =net-libs/gnutls-2.12*[-nettle,static-libs?] dev-libs/libgcrypt:0[static-libs?] ) ) app-misc/ca-certificates ) doc? ( ${PYTHON_DEPS} )" RDEPEND="${DEPEND} sys-apps/iproute2" tun_tap_check() { ebegin "Checking for TUN/TAP support" if { ! linux_chkconfig_present TUN; }; then eerror "Please enable TUN/TAP support in your kernel config, found at:" eerror eerror " Device Drivers --->" eerror " [*] Network device support --->" eerror " <*> Universal TUN/TAP device driver support" eerror eerror "and recompile your kernel ..." die "no CONFIG_TUN support detected!" fi eend $? } pkg_setup() { if use doc; then python-any-r1_pkg_setup fi if use kernel_linux; then get_version if linux_config_exists; then tun_tap_check else ewarn "Was unable to determine your kernel .config" ewarn "Please note that OpenConnect requires CONFIG_TUN to be set in your" ewarn "kernel .config, Without it, it will not work correctly." # We don't die here, so it's possible to compile this package without # kernel sources available. Required for cross-compilation. fi fi } src_configure() { strip-linguas $ILINGUAS echo ${LINGUAS} > po/LINGUAS # Override vpn-script test since the build system violates the sandbox and # needs the path set to the real default path after it's installed sed -e "s#-x \"\$with_vpnc_script\"#-n \"${WORKDIR}/openconnect-script\"#" \ -i configure || die if ! use doc; then # If the python cannot be found, the docs will not build sed -e 's#"${ac_cv_path_PYTHON}"#""#' -i configure || die fi econf \ --with-vpnc-script=/etc/openconnect/openconnect.sh \ $(use_enable static-libs static) \ $(use_enable nls ) \ $(use_with !gnutls openssl) \ $(use_with gnutls ) } src_install() { emake DESTDIR="${D}" install dodoc AUTHORS TODO newinitd "${FILESDIR}"/openconnect.init.in openconnect dodir /etc/openconnect insinto /etc/openconnect newconfd "${FILESDIR}"/openconnect.conf.in openconnect exeinto /etc/openconnect newexe "${WORKDIR}"/openconnect-script openconnect.sh insinto /etc/logrotate.d newins "${FILESDIR}"/openconnect.logrotate openconnect keepdir /var/log/openconnect # Remove useless .la files find "${D}" -name '*.la' -delete || die "la file removal failed" } pkg_postinst() { elog "The init script for openconnect has changed and now supports multiple vpn tunnels." elog elog "You need to create a symbolic link to /etc/init.d/openconnect in /etc/init.d" elog "instead of calling it directly:" elog elog "ln -s /etc/init.d/openconnect /etc/init.d/openconnect.vpn0" elog elog "You can then start the vpn tunnel like this:" elog elog "/etc/init.d/openconnect.vpn0 start" elog elog "If you would like to run preup, postup, predown, and/or postdown scripts," elog "You need to create a directory in /etc/openconnect with the name of the vpn:" elog elog "mkdir /etc/openconnect/vpn0" elog elog "Then add executable shell files:" elog elog "mkdir /etc/openconnect/vpn0" elog "cd /etc/openconnect/vpn0" elog "echo '#!/bin/sh' > preup.sh" elog "cp preup.sh predown.sh" elog "cp preup.sh postup.sh" elog "cp preup.sh postdown.sh" elog "chmod 755 /etc/openconnect/vpn0/*" }