Blob Blame History Raw
%global pkg vbox-guest-additions

%global driver_version 5.14.0-87.el9

%global kernel_version 5.14.0-105.el9

%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:          5.14.0.87
Release:          5%{?dist}
Summary:          Virtual Box Guest Additions

License:          GPLv2 and (GPLv2 or CDDL-1.0) and MIT
URL:              https://www.kernel.org/

Source0:          %{pkg}-%{driver_version}.tar.xz
Patch9997:        9997-enable-vboxguest.patch
Patch9998:        9998-enable-vboxsf.patch
Patch9999:        9999-enable-vboxvideo.patch

ExclusiveArch:    x86_64

BuildRequires:    elfutils-libelf-devel
BuildRequires:    gcc
BuildRequires:    kernel-rpm-macros
BuildRequires:    kmod
BuildRequires:    make
BuildRequires:    redhat-rpm-config
BuildRequires:    xz

BuildRequires:    kernel-abi-stablelists = %{kernel_version}
BuildRequires:    kernel-devel = %{kernel_version}
BuildRequires:    kernel-devel-uname-r = %{kernel_version}.%{_arch}

Requires:         kernel >= %{kernel_version}
Requires:         kernel-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}

Requires(post):   %{_sbindir}/depmod
Requires(postun): %{_sbindir}/depmod

Requires(post):   %{_sbindir}/weak-modules
Requires(postun): %{_sbindir}/weak-modules

Supplements:      virtualbox-guest-additions
Recommends:       virtualbox-guest-additions


%if "%{version}" == "5.14.0.87" && "%{release}" == "3%{?dist}"
Obsoletes:        kmod-%{pkg} = %{?epoch:%{epoch}:}%{version}-1%{?dist}
%endif


%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 -n %{pkg}-%{driver_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/virt/vboxguest src/vboxguest/vboxguest.ko
%{__install} -D -t %{buildroot}/lib/modules/%{kernel_version}.%{_arch}/extra/fs src/vboxsf/vboxsf.ko
%{__install} -D -t %{buildroot}/lib/modules/%{kernel_version}.%{_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}


%post
mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods
printf '%s\n' "/lib/modules/%{kernel_version}.%{_arch}/extra/drivers/virt/vboxguest/vboxguest.ko.xz" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add
printf '%s\n' "/lib/modules/%{kernel_version}.%{_arch}/extra/fs/vboxsf/vboxsf.ko.xz" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add
printf '%s\n' "/lib/modules/%{kernel_version}.%{_arch}/extra/drivers/gpu/drm/vboxvideo/vboxvideo.ko.xz" >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add


%preun
mkdir -p %{_localstatedir}/lib/rpm-state/sig-kmods
rpm -ql kmod-%{pkg}-%{?epoch:%{epoch}:}%{version}-%{release}.%{_arch} | grep '/lib/modules/%{kernel_version}.%{_arch}/.*\.ko\.xz$' >> %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove


%postun
if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove ]
then
    modules=( $(cat %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove) )
    rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove
    rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods
    printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --remove-modules
fi


%pretrans -p <lua>
posix.unlink("%{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add")
posix.unlink("%{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-remove")


%posttrans
if [ -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add ]
then
    modules=( $(cat %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add) )
    rm -f %{_localstatedir}/lib/rpm-state/sig-kmods/weak-modules-add
    rmdir --ignore-fail-on-non-empty %{_localstatedir}/lib/rpm-state/sig-kmods
    printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --add-modules
fi


%files
%defattr(644,root,root,755)
/lib/modules/%{kernel_version}.%{_arch}
%license LICENSES


%changelog
* Tue Jun 07 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.87-5
- Rebuild for 5.14.0-105.el9

* Wed Jun 01 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.87-4
- Rebuild for 5.14.0-101.el9

* Fri May 27 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.87-3
- Rebuild for 5.14.0-96.el9

* Fri May 27 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.87-2
- Update to 5.14.0-87.el9
- Build for 5.14.0-92.el9

* Fri May 27 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-15
- Rebuild for 5.14.0-85.el9

* Thu May 26 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-14
- Rebuild for 5.14.0-83.el9

* Fri Apr 22 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-13
- Rebuild for 5.14.0-79.el9

* Tue Apr 12 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-12
- Rebuild for 5.14.0-77.el9

* Tue Mar 22 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-11
- Rebuild for 5.14.0-73.el9

* Sun Feb 20 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-10
- Rebuild for 5.14.0-62.el9

* Fri Feb 18 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-9
- Rebuild for 5.14.0-60.el9

* Tue Feb 15 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-8
- Rebuild for 5.14.0-58.el9

* Sat Feb 12 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-7
- Rebuild for 5.14.0-57.el9

* Thu Feb 10 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-6
- Rebuild for 5.14.0-56.el9

* Mon Feb 07 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-5
- Rebuild for 5.14.0-55.el9

* Wed Feb 02 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-4
- Rebuild for 5.14.0-51.el9

* Thu Jan 27 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-3
- Rebuild for 5.14.0-48.el9

* Tue Jan 25 2022 Kmods SIG <sig-kmods@centosproject.org> - 5.14.0.1-2
- Rebuild for 5.14.0-47.el9

* Fri Jan 21 2022 Peter Georg <peter.georg@physik.uni-regensburg.de> - 5.14.0.1-1
- Use EL kernel source and versioning
- kABI tracking kmod package (kernel >= 5.14.0-44.el9)