%global pkg wireguard
%global kernel_version 4.18.0-331.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: 3%{?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
* Thu Aug 19 2021 Peter Georg <peter.georg@physik.uni-regensburg.de> - 1.0.20210606-3
- Rebuild for 4.18.0-331.el8
* Wed Aug 11 2021 Peter Georg <peter.georg@physik.uni-regensburg.de> - 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 <peter.georg@physik.uni-regensburg.de> - 1.0.20210606-1
- Initial version