summaryrefslogtreecommitdiff
blob: 8938d5ce2d1a553f37a957c0d0791987acbb67f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/openvpn/openvpn-2.0.4-r1.ebuild,v 1.4 2005/11/03 14:36:55 uberlord Exp $

inherit eutils gnuconfig multilib

DESCRIPTION="OpenVPN is a robust and highly flexible tunneling application compatible with many OSes."
SRC_URI="http://openvpn.net/release/openvpn-${PV}.tar.gz"
HOMEPAGE="http://openvpn.net/"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ppc ppc-macos sparc x86"
IUSE="examples iproute2 minimal pam passwordsave selinux ssl static threads"

RDEPEND=">=dev-libs/lzo-1.07
	kernel_linux? (
		iproute2? ( sys-apps/iproute2 ) !iproute2? ( sys-apps/net-tools )
	)
	!minimal? ( pam? ( virtual/pam ) )
	selinux? ( sec-policy/selinux-openvpn )
	ssl? ( >=dev-libs/openssl-0.9.6 )"
DEPEND="${RDEPEND}
	virtual/os-headers"

src_unpack() {
	unpack "${A}"
	gnuconfig_update
	epatch "${FILESDIR}/${P}"-darwin.patch
}

src_compile() {
	local myconf=""
	# We cannot use use_enable with iproute2 as the Makefile stupidly
	# enables it with --disable-iproute2
	use iproute2 && myconf="${myconf} --enable-iproute2"
	use minimal && myconf="${myconf} --disable-plugins"

	econf ${myconf} \
		$(use_enable passwordsave password-save) \
		$(use_enable ssl) \
		$(use_enable ssl crypto) \
		$(use_enable threads pthread) \
		|| die "configure failed"

	use static && sed -e -i '/^LIBS/s/LIBS = /LIBS = -static /' Makefile

	emake || die "make failed"

	if ! use minimal ; then
		cd plugin
		for i in $( ls 2>/dev/null ); do
			[[ ${i} == "README" || ${i} == "examples" ]] && continue
			[[ ${i} == "auth-pam" ]] && ! use pam && continue
			einfo "Building ${i} plugin"
			cd "${i}"
			emake || die "make failed"
			cd ..
		done
		cd ..
	fi
}

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

	# install documentation
	dodoc AUTHORS ChangeLog INSTALL PORTS README

	# Empty dir
	dodir /etc/openvpn
	keepdir /etc/openvpn

	# Install the init script
	newinitd "${FILESDIR}/openvpn" openvpn

	# Install easy-rsa stuff
	exeinto "/usr/share/${PN}/easy-rsa"
	doexe easy-rsa/*-*
	insinto "/usr/share/${PN}/easy-rsa"
	doins easy-rsa/{README,openssl.cnf,vars}

	# install examples, controlled by the respective useflag
	if use examples ; then
		# dodoc does not supportly support directory traversal, #15193
		insinto /usr/share/doc/${PF}/examples
		doins -r sample-{config-files,keys,scripts} contrib
		prepalldocs
	fi

	# Install plugins
	if ! use minimal ; then
		exeinto "/usr/$(get_libdir)/${PN}"
		doexe plugin/*/*.so
	fi
}

pkg_postinst() {
	ewarn "This version of OpenVPN is NOT COMPATIBLE with older versions!"
	ewarn "If you need compatibility with a version < 2 please emerge"
	ewarn "that one."
	einfo ""
	einfo "The init.d script that comes with OpenVPN expects directories"
	einfo "/etc/openvpn/*/ with a local.conf and any supporting files,"
	einfo "such as keys."
	einfo ""
	ewarn "If you've used 2.0 already make sure to move your configuration"
	ewarn "files into a subdirectory of /etc/openvpn, for example to:"
	ewarn "/etc/openvpn/myconf and rename your configfile to local.conf"
	ewarn ""
	ebeep
}