summaryrefslogtreecommitdiff
blob: bf0d3a6adfb183d6817a72c3a2e904ffa5bcaa1a (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
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=6

inherit linux-mod

DESCRIPTION="Simple yet fast and modern VPN that utilizes state-of-the-art cryptography."
HOMEPAGE="https://www.wireguard.io/"

if [[ ${PV} == 9999 ]]; then
	inherit git-r3
	EGIT_REPO_URI="https://git.zx2c4.com/WireGuard"
	KEYWORDS=""
else
	SRC_URI="https://git.zx2c4.com/WireGuard/snapshot/WireGuard-experimental-${PV}.tar.xz"
	S="${WORKDIR}/WireGuard-experimental-${PV}"
	KEYWORDS="~amd64 ~x86 ~mips ~arm ~arm64"
fi

LICENSE="GPL-2"
SLOT="0"
IUSE=""

DEPEND="net-libs/libmnl"
RDEPEND="${DEPEND}"

MODULE_NAMES="wireguard(net:src)"
BUILD_PARAMS="KERNELDIR=${KERNEL_DIR} V=1"
CONFIG_CHECK="NET_UDP_TUNNEL IPV6 NETFILTER_XT_MATCH_HASHLIMIT ~PADATA"
ERROR_NET_UDP_TUNNEL="WireGuard requires NET_UDP_TUNNEL."
ERROR_IPV6="WireGuard requires IPV6 support in the kernel."
ERROR_NETFILTER_XT_MATCH_HASHLIMIT="WireGuard requires NETFILTER_XT_MATCH_HASHLIMIT."
ERROR_PADATA="If you're running a multicore system you likely should enable CONFIG_PADATA for improved performance and parallel crypto."

pkg_setup() {
	linux-mod_pkg_setup
	kernel_is -lt 4 1 0 && die "This version of ${PN} requires Linux >= 4.1"
}

src_prepare() {
	default
	sed -i 's/install -s/install/' src/tools/Makefile
}

src_compile() {
	linux-mod_src_compile
	emake -C src/tools
}

src_install() {
	dodoc README.md
	linux-mod_src_install
	emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src/tools install
}

pkg_postinst() {
	linux-mod_pkg_postinst
	ewarn
	ewarn "This software is experimental and has not yet been released."
	ewarn "As such, it may contain significant issues. Please do not file"
	ewarn "bug reports with Gentoo, but rather direct them upstream to:"
	ewarn
	ewarn "    team@wireguard.io    security@wireguard.io"
	ewarn
}