From 512f169418e3705b9852be12a61fb9e593040ecd Mon Sep 17 00:00:00 2001 From: Alexander Miroshnichenko Date: Sat, 31 Aug 2024 21:22:07 +0300 Subject: [PATCH] add net-vpn/amneziawg-linux-kernel-module package --- .../amneziawg-linux-kernel-module/Manifest | 2 + ...wg-linux-kernel-module-1.0.20240711.ebuild | 97 +++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 net-vpn/amneziawg-linux-kernel-module/Manifest create mode 100644 net-vpn/amneziawg-linux-kernel-module/amneziawg-linux-kernel-module-1.0.20240711.ebuild diff --git a/net-vpn/amneziawg-linux-kernel-module/Manifest b/net-vpn/amneziawg-linux-kernel-module/Manifest new file mode 100644 index 0000000..435f516 --- /dev/null +++ b/net-vpn/amneziawg-linux-kernel-module/Manifest @@ -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 diff --git a/net-vpn/amneziawg-linux-kernel-module/amneziawg-linux-kernel-module-1.0.20240711.ebuild b/net-vpn/amneziawg-linux-kernel-module/amneziawg-linux-kernel-module-1.0.20240711.ebuild new file mode 100644 index 0000000..e01c303 --- /dev/null +++ b/net-vpn/amneziawg-linux-kernel-module/amneziawg-linux-kernel-module-1.0.20240711.ebuild @@ -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 +}