net-vpn/amneziawg-linux-kernel-module: unkeyword 1.0.20251009

Signed-off-by: Alexander Miroshnichenko <alex@millerson.name>
This commit is contained in:
2025-10-11 22:31:32 +03:00
parent 4f2be050e9
commit 4b50bbbe7e
2 changed files with 47 additions and 52 deletions

View File

@@ -2,7 +2,6 @@
EAPI=8 EAPI=8
MODULES_OPTIONAL_IUSE="module"
inherit linux-mod-r1 inherit linux-mod-r1
DESCRIPTION="AmneziaWG kernel module" DESCRIPTION="AmneziaWG kernel module"
@@ -14,12 +13,12 @@ if [[ ${PV} == 9999 ]]; then
else else
SRC_URI="https://github.com/amnezia-vpn/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" 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. # 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" KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
fi fi
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
IUSE="debug +module module-src" IUSE="debug"
CONFIG_CHECK="NET INET NET_UDP_TUNNEL CRYPTO_ALGAPI" CONFIG_CHECK="NET INET NET_UDP_TUNNEL CRYPTO_ALGAPI"
@@ -31,11 +30,9 @@ CONFIG_CHECK="NET INET NET_UDP_TUNNEL CRYPTO_ALGAPI"
BDEPEND="|| ( sys-kernel/gentoo-sources sys-kernel/vanilla-sources )" BDEPEND="|| ( sys-kernel/gentoo-sources sys-kernel/vanilla-sources )"
pkg_setup() { pkg_setup() {
if use module; then linux-mod-r1_pkg_setup
linux-mod-r1_pkg_setup if kernel_is -lt 3 10 0; then
if kernel_is -lt 3 10 0; then die "This version of ${PN} requires Linux >= 3.10"
die "This version of ${PN} requires Linux >= 3.10"
fi
fi fi
} }
@@ -48,7 +45,8 @@ src_prepare() {
# If /usr/src/linux contains no sources (distribution kernel), we check # If /usr/src/linux contains no sources (distribution kernel), we check
# other subdirectories in /usr/src sorted by version in reverse order. # other subdirectories in /usr/src sorted by version in reverse order.
echo "Searching for kernel sources..." echo "Searching for kernel sources..."
dirs=$(find /usr/src -maxdepth 1 -name 'linux-*' -type d | sort --reverse --version-sort --field-separator=- --key=2,2) dirs=$(find /usr/src -maxdepth 1 -name 'linux-*' -type d | \
sort --reverse --version-sort --field-separator=- --key=2,2)
dirs="/usr/src/linux ${dirs}" dirs="/usr/src/linux ${dirs}"
for kernel_dir in ${dirs}; do for kernel_dir in ${dirs}; do
[ -d "$kernel_dir" ] || continue [ -d "$kernel_dir" ] || continue
@@ -66,9 +64,9 @@ src_prepare() {
die "Kernel sources not found, but required for building." die "Kernel sources not found, but required for building."
fi fi
sed -i "s@^KERNELRELEASE ?= .*@KERNELRELEASE ?= ${KV_FULL}@" src/Makefile || die "Fail to set desired kernel verion in the Makefile" sed -i "s@^KERNELRELEASE ?= .*@KERNELRELEASE ?= ${KV_FULL}@" src/Makefile || die "Fail to set desired kernel verion in the Makefile"
ln -s ${KERNEL_SOURCES_DIR} src/kernel || die "Creation link to kernel sources directory fail" ln -s ${KERNEL_SOURCES_DIR} src/kernel || die "Creation link to kernel sources directory fail"
emake -C ${S}/src apply-patches || die "Fail to apply amnezia patches over wireguard" emake -C "${S}/src" apply-patches || die "Fail to apply amnezia patches over wireguard"
fi fi
} }
@@ -78,52 +76,38 @@ src_compile() {
KERNELDIR=${KV_OUT_DIR} KERNELDIR=${KV_OUT_DIR}
) )
use debug && modargs+=( CONFIG_WIREGUARD_DEBUG=y ) use debug && modargs+=( CONFIG_WIREGUARD_DEBUG=y )
use module && linux-mod-r1_src_compile linux-mod-r1_src_compile
} }
src_install() { src_install() {
use module && linux-mod-r1_src_install linux-mod-r1_src_install
use module-src && emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src dkms-install
} }
pkg_postinst() { pkg_postinst() {
if use module-src && ! use module; then linux-mod-r1_pkg_postinst
einfo local old new
einfo "You have enabled the module-src USE flag without the module USE" if [[ $(uname -r) != "${KV_FULL}" ]]; then
einfo "flag. This means that sources are installed to" ewarn
einfo "${ROOT}/usr/src/amneziawg instead of having the" ewarn "You have just built AmneziaWG for kernel ${KV_FULL}, yet the currently running"
einfo "kernel module compiled. You will need to compile the module" ewarn "kernel is $(uname -r). If you intend to use this AmneziaWG module on the currently"
einfo "yourself. Most likely, you don't want this USE flag, and should" ewarn "running machine, you will first need to reboot it into the kernel ${KV_FULL}, for"
einfo "rather use USE=module" ewarn "which this module was built."
einfo ewarn
fi elif [[ -f /sys/module/amneziawg/version ]] && \
old="$(< /sys/module/amneziawg/version)" && \
if use module; then new="$(modinfo -F version "${ROOT}/lib/modules/${KV_FULL}/net/amneziawg.ko" 2>/dev/null)" && \
linux-mod-r1_pkg_postinst [[ $old != "$new" ]]; then
local old new ewarn
if [[ $(uname -r) != "${KV_FULL}" ]]; then ewarn "You appear to have just upgraded AmneziaWG from version v$old to v$new."
ewarn ewarn "However, the old version is still running on your system. In order to use the"
ewarn "You have just built AmneziaWG for kernel ${KV_FULL}, yet the currently running" ewarn "new version, you will need to remove the old module and load the new one. As"
ewarn "kernel is $(uname -r). If you intend to use this AmneziaWG module on the currently" ewarn "root, you can accomplish this with the following commands:"
ewarn "running machine, you will first need to reboot it into the kernel ${KV_FULL}, for" ewarn
ewarn "which this module was built." ewarn " # rmmod amneziawg"
ewarn ewarn " # modprobe amneziawg"
elif [[ -f /sys/module/amneziawg/version ]] && \ ewarn
old="$(< /sys/module/amneziawg/version)" && \ ewarn "Do note that doing this will remove current AmneziaWG interfaces, so you may want"
new="$(modinfo -F version "${ROOT}/lib/modules/${KV_FULL}/net/amneziawg.ko" 2>/dev/null)" && \ ewarn "to gracefully remove them yourself prior."
[[ $old != "$new" ]]; then ewarn
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 fi
} }

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>alex@millerson.name</email>
<name>Alexander Miroshnichenko</name>
</maintainer>
<upstream>
<remote-id type="github">amnezia-vpn/amneziawg-linux-kernel-module</remote-id>
</upstream>
</pkgmetadata>