%global pkg wireguard %global kernel_version 4.18.0-338.el8 %global _use_internal_dependency_generator 0 %global __find_requires %{nil} %global __find_provides /usr/lib/rpm/find-provides %global debug_package %{nil} %global __spec_install_post \ %{?__debug_package:%{__debug_install_post}} \ %{__arch_install_post} \ %{__os_install_post} \ %{__mod_compress_install_post} %global __mod_compress_install_post find %{buildroot}/lib/modules -type f -name \*.ko -exec xz \{\} \\; Name: kmod-%{pkg} Version: 1.0.20210606 Release: 4%{?dist} Summary: Fast, modern, secure VPN tunnel License: GPLv2 URL: https://www.wireguard.com/ Source0: https://git.zx2c4.com/%{pkg}-linux-compat/snapshot/%{pkg}-linux-compat-%{version}.tar.xz Patch1: 0001-compat-account-for-latest-c8s-backports.patch ExclusiveArch: x86_64 aarch64 BuildRequires: elfutils-libelf-devel BuildRequires: gcc BuildRequires: kmod BuildRequires: make BuildRequires: redhat-rpm-config BuildRequires: xz BuildRequires: kernel-devel = %{kernel_version} BuildRequires: kernel-devel-uname-r = %{kernel_version}.%{_arch} Requires: kernel-core = %{kernel_version} Requires: kernel-core-uname-r = %{kernel_version}.%{_arch} Requires: kernel-modules = %{kernel_version} Requires: kernel-modules-uname-r = %{kernel_version}.%{_arch} Provides: installonlypkg(kernel-module) Provides: kernel-modules = %{kernel_version}.%{_arch} Provides: %{name}-%{kernel_version}.%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} Requires(post): /usr/sbin/depmod Requires(postun): /usr/sbin/depmod Requires(post): /usr/bin/dracut Requires(postun): /usr/bin/dracut Supplements: wireguard-tools Recommends: wireguard-tools %description WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. %prep %autosetup -p1 -n %{pkg}-linux-compat-%{version} %build pushd src %{__make} -C /usr/src/kernels/%{kernel_version}.%{_arch} %{?_smp_mflags} M=$PWD modules popd %install %{__install} -D -t %{buildroot}/lib/modules/%{kernel_version}.%{_arch}/extra/drivers/net/%{pkg} src/%{pkg}.ko # Make .ko objects temporarily executable for automatic stripping find %{buildroot}/lib/modules -type f -name \*.ko -exec chmod u+x \{\} \+ %clean %{__rm} -rf %{buildroot} %post mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods touch %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} %preun mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods touch %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} %postun if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} ] then if [ -f /lib/modules/%{kernel_version}.%{_arch}/System.map ] then /usr/sbin/depmod -aeF /lib/modules/%{kernel_version}.%{_arch}/System.map %{kernel_version}.%{_arch} fi if [ -f /boot/initramfs-%{kernel_version}.%{_arch}.img ] then if /usr/bin/dracut -f --rebuild /boot/initramfs-%{kernel_version}.%{_arch}.img /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew %{kernel_version}.%{_arch} then if ! cmp -s /boot/initramfs-%{kernel_version}.%{_arch}.img /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew then mv /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew /boot/initramfs-%{kernel_version}.%{_arch}.img else rm -f /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew fi fi fi rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods fi %posttrans if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} ] then if [ -f /lib/modules/%{kernel_version}.%{_arch}/System.map ] then /usr/sbin/depmod -aeF /lib/modules/%{kernel_version}.%{_arch}/System.map %{kernel_version}.%{_arch} fi if [ -f /boot/initramfs-%{kernel_version}.%{_arch}.img ] then if /usr/bin/dracut -f --rebuild /boot/initramfs-%{kernel_version}.%{_arch}.img /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew %{kernel_version}.%{_arch} then if ! cmp -s /boot/initramfs-%{kernel_version}.%{_arch}.img /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew then mv /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew /boot/initramfs-%{kernel_version}.%{_arch}.img else rm -f /boot/initramfs-%{kernel_version}.%{_arch}.img.rpmnew fi fi fi rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/%{kernel_version}.%{_arch} rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods fi %files %defattr(644,root,root,755) /lib/modules/%{kernel_version}.%{_arch} %license COPYING %doc README.md %changelog * Mon Aug 30 2021 Peter Georg - 1.0.20210606-4 - Set specific kernel version to use - Add Provides kernel-modules - Add .%{_arch} to kernel-modules provides version - Rebuild for 4.18.0-338.el8 * Thu Aug 19 2021 Peter Georg - 1.0.20210606-3 - Rebuild for 4.18.0-331.el8 * Wed Aug 11 2021 Peter Georg - 1.0.20210606-2 - Rebuild for 4.18.0-326.el8 - Fix provides/requires - Fix kernel dependencies - Add convenient provides kmod-aacraid-`uname -r` - Fix installonlypkg detection - Recreate source tarballs - Rebuild for dist = .el8s * Wed Jul 21 2021 Peter Georg - 1.0.20210606-1 - Initial version