add net-vpn/amneziawg-linux-kernel-module package

master
Alexander Miroshnichenko 2024-08-31 21:22:07 +03:00
parent 5a7506f5e4
commit 512f169418
Signed by: alex
GPG Key ID: E93720C6C73A77F4
2 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,2 @@
DIST amneziawg-linux-kernel-module-1.0.20240711.tar.gz 413963 BLAKE2B d34128d0ac5aaaabd9d4a96c8df21115d18d71c1065b911a0a5bb4fd2fc0bdbee877f8c21a8e7aa3f69420ea87fa2f4f797f0cab86e2fb9b4279a37d27871375 SHA512 0499fc3c29ceaa3e57611fd86c943e57b9621aa2db31f8fdafcfe0ff0dfaf5aa07381d462d9b194c8ea206f5eb9d1160976bfc6d0fdaf112b81b87ad3d391538
EBUILD amneziawg-linux-kernel-module-1.0.20240711.ebuild 3443 BLAKE2B f3e1079b11abaf8a9fed9ac7dfc3cf510247386474c92ade0a554bc17772eadd8a41fda19e44cd2f1e7bb14041c929e8643011947c72f4bed50668349a412652 SHA512 4ab7a4b9e5df0e9f7fcb0825e1ce574dd00b7c2b367953ea335a3fee2c219a4770a7ffd204abb799ca2d4467be65a7fbb35e427b40735d4b5b6156296a8d87da

View File

@ -0,0 +1,97 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MODULES_OPTIONAL_IUSE="module"
inherit linux-mod-r1
DESCRIPTION="AmneziaWG kernel module"
HOMEPAGE="https://github.com/amnezia-vpn/amneziawg-linux-kernel-module"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git"
else
SRC_URI="https://github.com/amnezia-vpn/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
# Please don't stabilize this package. Stable users should use gentoo-sources 5.4 or 5.10.
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="debug +module module-src"
CONFIG_CHECK="NET INET NET_UDP_TUNNEL CRYPTO_ALGAPI"
pkg_setup() {
if use module; then
linux-mod-r1_pkg_setup
if [[ -f $KERNEL_DIR/include/uapi/linux/wireguard.h ]]; then
eerror
eerror "WireGuard has been merged upstream into this kernel. Therefore,"
eerror "you no longer need this compatibility ebuild. Instead, simply"
eerror "enable CONFIG_WIREGUARD=y in your kernel configuration."
eerror
die "Use CONFIG_WIREGUARD=y for this kernel, and do not use this package."
elif kernel_is -lt 3 10 0 || kernel_is -ge 5 6 0; then
die "This version of ${PN} requires Linux >= 3.10 and < 5.6."
fi
fi
}
src_compile() {
local modlist=( amneziawg=net:src::module )
local modargs=(
KERNELDIR=${KV_OUT_DIR}
)
use debug && modargs+=( CONFIG_WIREGUARD_DEBUG=y )
use module && linux-mod-r1_src_compile
}
src_install() {
use module && linux-mod-r1_src_install
use module-src && emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src dkms-install
}
pkg_postinst() {
if use module-src && ! use module; then
einfo
einfo "You have enabled the module-src USE flag without the module USE"
einfo "flag. This means that sources are installed to"
einfo "${ROOT}/usr/src/wireguard instead of having the"
einfo "kernel module compiled. You will need to compile the module"
einfo "yourself. Most likely, you don't want this USE flag, and should"
einfo "rather use USE=module"
einfo
fi
if use module; then
linux-mod-r1_pkg_postinst
local old new
if [[ $(uname -r) != "${KV_FULL}" ]]; then
ewarn
ewarn "You have just built AmneziaWG for kernel ${KV_FULL}, yet the currently running"
ewarn "kernel is $(uname -r). If you intend to use this AmneziaWG module on the currently"
ewarn "running machine, you will first need to reboot it into the kernel ${KV_FULL}, for"
ewarn "which this module was built."
ewarn
elif [[ -f /sys/module/amneziawg/version ]] && \
old="$(< /sys/module/amneziawg/version)" && \
new="$(modinfo -F version "${ROOT}/lib/modules/${KV_FULL}/net/amneziawg.ko" 2>/dev/null)" && \
[[ $old != "$new" ]]; then
ewarn
ewarn "You appear to have just upgraded AmneziaWG from version v$old to v$new."
ewarn "However, the old version is still running on your system. In order to use the"
ewarn "new version, you will need to remove the old module and load the new one. As"
ewarn "root, you can accomplish this with the following commands:"
ewarn
ewarn " # rmmod amneziawg"
ewarn " # modprobe amneziawg"
ewarn
ewarn "Do note that doing this will remove current AmneziaWG interfaces, so you may want"
ewarn "to gracefully remove them yourself prior."
ewarn
fi
fi
}