%global pkg vbox-guest-additions %global kernel 5.14.0-570.12.1.el9_6 %global baserelease 1 %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 %{nil} Name: kmod-%{pkg} Epoch: 1 Version: %(echo %{kernel} | sed 's/-/~/g; s/\.el.*$//g') Release: %{baserelease}%{?dist} Summary: Virtual Box Guest Additions License: GPLv2 and (GPLv2 or CDDL-1.0) and MIT URL: https://www.kernel.org/ Patch0: source-git.patch ExclusiveArch: x86_64 BuildRequires: elfutils-libelf-devel BuildRequires: gcc BuildRequires: kernel-rpm-macros BuildRequires: kmod BuildRequires: make BuildRequires: redhat-rpm-config BuildRequires: kernel-abi-stablelists = %{kernel} BuildRequires: kernel-devel-uname-r = %{kernel}.%{_arch} Requires: kernel-uname-r >= %{kernel}.%{_arch} Provides: installonlypkg(kernel-module) Provides: kernel-modules >= %{kernel}.%{_arch} Requires(posttrans): %{_sbindir}/depmod Requires(postun): %{_sbindir}/depmod Requires(posttrans): %{_sbindir}/weak-modules Requires(postun): %{_sbindir}/weak-modules Requires(posttrans): %{_bindir}/sort Requires(postun): %{_bindir}/sort Supplements: virtualbox-guest-additions Recommends: virtualbox-guest-additions %if %{epoch} Obsoletes: kmod-%{pkg} < %{epoch}: %endif Obsoletes: kmod-%{pkg} = %{?epoch:%{epoch}:}%{version} %description This package provides the following drivers: Driver (vboxguest) for the Virtual Box Guest PCI device used in Virtual Box virtual machines. Enabling this driver will add support for Virtual Box Guest integration features such as copy-and-paste, seamless mode and OpenGL pass-through. Driver (vboxfs) required to mount folders exported by the Virtual Box host to be shared with guests. KMS driver (vboxvideo) for the virtual Graphics Card used in Virtual Box virtual machines. %prep %autosetup -p1 -c -T %build pushd src %{__make} -C /usr/src/kernels/%{kernel}.%{_arch} %{?_smp_mflags} M=$PWD modules popd %install %{__install} -D -t %{buildroot}/lib/modules/%{kernel}.%{_arch}/extra/drivers/virt/vboxguest src/vboxguest/vboxguest.ko %{__install} -D -t %{buildroot}/lib/modules/%{kernel}.%{_arch}/extra/fs/vboxsf src/vboxsf/vboxsf.ko %{__install} -D -t %{buildroot}/lib/modules/%{kernel}.%{_arch}/extra/drivers/gpu/drm/vboxvideo src/vboxvideo/vboxvideo.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} %triggerin -- %{name} mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/drivers/virt/vboxguest/vboxguest.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/fs/vboxsf/vboxsf.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/drivers/gpu/drm/vboxvideo/vboxvideo.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules %triggerun -- %{name} mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/drivers/virt/vboxguest/vboxguest.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/fs/vboxsf/vboxsf.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules printf '%s\n' "/lib/modules/%{kernel}.%{_arch}/extra/drivers/gpu/drm/vboxvideo/vboxvideo.ko" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules %preun mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods rpm -ql kmod-%{pkg}-%{?epoch:%{epoch}:}%{version}-%{release}.%{_arch} | grep '/lib/modules/%{kernel}.%{_arch}/.*\.ko$' >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove %postun if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules ] then while read -r MODULE do if [ -f "$MODULE" ] then printf '%s\n' "$MODULE" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add fi done < %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules fi if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove ] then modules=( $(cat %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove | sort -u -V -t '/' -k 5 -k 4,4) ) rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add ] then printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --remove-modules --no-initramfs else printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --remove-modules fi fi if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add ] then modules=( $(cat %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add | sort -u -V -t '/' -k 5 -k 4,4) ) rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --add-modules fi if [ -d %{_localstatedir}/lib/rpm-state/sig-kmods ] then rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods fi %posttrans if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules ] then while read -r MODULE do if [ -f "$MODULE" ] then printf '%s\n' "$MODULE" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add fi done < %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules fi if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add ] then modules=( $(cat %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add | sort -u -V -t '/' -k 5 -k 4,4) ) rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --add-modules fi if [ -d %{_localstatedir}/lib/rpm-state/sig-kmods ] then rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods fi %files %defattr(644,root,root,755) /lib/modules/%{kernel}.%{_arch} %license licenses %changelog * Wed May 14 2025 Kmods SIG - 1:5.14.0~570.12.1-1 - kABI tracking kmod package (kernel >= 5.14.0-570.12.1.el9_6)