net-vpn/wireguard: version bump
[gentoo.git] / net-vpn / wireguard / wireguard-0.0.20170629.ebuild
1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 inherit linux-mod bash-completion-r1
7
8 DESCRIPTION="Simple yet fast and modern VPN that utilizes state-of-the-art cryptography."
9 HOMEPAGE="https://www.wireguard.io/"
10
11 if [[ ${PV} == 9999 ]]; then
12         inherit git-r3
13         EGIT_REPO_URI="https://git.zx2c4.com/WireGuard"
14         KEYWORDS=""
15 else
16         SRC_URI="https://git.zx2c4.com/WireGuard/snapshot/WireGuard-${PV}.tar.xz"
17         S="${WORKDIR}/WireGuard-${PV}"
18         KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
19 fi
20
21 LICENSE="GPL-2"
22 SLOT="0"
23 IUSE="debug +module +tools module-src"
24
25 DEPEND="tools? ( net-libs/libmnl )"
26 RDEPEND="${DEPEND}"
27
28 MODULE_NAMES="wireguard(net:src)"
29 BUILD_PARAMS="KERNELDIR=${KERNEL_DIR} V=1"
30 BUILD_TARGETS="module"
31 CONFIG_CHECK="NET INET NET_UDP_TUNNEL CRYPTO_BLKCIPHER ~PADATA"
32 WARNING_PADATA="If you're running a multicore system you likely should enable CONFIG_PADATA for improved performance and parallel crypto."
33
34 pkg_setup() {
35         if use module; then
36                 linux-mod_pkg_setup
37                 kernel_is -lt 3 10 0 && die "This version of ${PN} requires Linux >= 3.10"
38         fi
39 }
40
41 src_compile() {
42         use debug && BUILD_PARAMS="CONFIG_WIREGUARD_DEBUG=y ${BUILD_PARAMS}"
43         use module && linux-mod_src_compile
44         use tools && emake RUNSTATEDIR="${EPREFIX}/run" -C src/tools
45 }
46
47 src_install() {
48         use module && linux-mod_src_install
49         if use tools; then
50                 dodoc README.md
51                 dodoc -r contrib/examples
52                 emake \
53                         WITH_BASHCOMPLETION=yes \
54                         WITH_SYSTEMDUNITS=yes \
55                         WITH_WGQUICK=yes \
56                         DESTDIR="${D}" \
57                         BASHCOMPDIR="$(get_bashcompdir)" \
58                         PREFIX="${EPREFIX}/usr" \
59                         -C src/tools install
60                 insinto /$(get_libdir)/netifrc/net
61                 newins "${FILESDIR}"/wireguard-openrc.sh wireguard.sh
62         fi
63         use module-src && emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src dkms-install
64 }
65
66 pkg_postinst() {
67         if use module-src && ! use module; then
68                 einfo
69                 einfo "You have enabled the module-src USE flag without the module USE"
70                 einfo "flag. This means that sources are installed to"
71                 einfo "${ROOT}usr/src/wireguard instead of having the"
72                 einfo "kernel module compiled. You will need to compile the module"
73                 einfo "yourself. Most likely, you don't want this USE flag, and should"
74                 einfo "rather use USE=module"
75                 einfo
76         fi
77         use module && linux-mod_pkg_postinst
78
79         ewarn
80         ewarn "This software is experimental and has not yet been released."
81         ewarn "As such, it may contain significant issues. Please do not file"
82         ewarn "bug reports with Gentoo, but rather direct them upstream to:"
83         ewarn
84         ewarn "    team@wireguard.io    security@wireguard.io"
85         ewarn
86
87         if use tools; then
88                 einfo
89                 einfo "After installing WireGuard, if you'd like to try sending some packets through"
90                 einfo "WireGuard, you may use, for testing purposes only, the insecure client.sh"
91                 einfo "test example script:"
92                 einfo
93                 einfo "  \$ bzcat ${ROOT}usr/share/doc/${PF}/examples/ncat-client-server/client.sh.bz2 | sudo bash -"
94                 einfo
95                 einfo "This will automatically setup interface wg0, through a very insecure transport"
96                 einfo "that is only suitable for demonstration purposes. You can then try loading the"
97                 einfo "hidden website or sending pings:"
98                 einfo
99                 einfo "  \$ chromium http://192.168.4.1"
100                 einfo "  \$ ping 192.168.4.1"
101                 einfo
102                 einfo "If you'd like to redirect your internet traffic, you can run it with the"
103                 einfo "\"default-route\" argument. You may not use this server for any abusive or illegal"
104                 einfo "purposes. It is for quick testing only."
105                 einfo
106                 einfo "More info on getting started can be found at: https://www.wireguard.io/quickstart/"
107                 einfo
108         fi
109 }