1
0
forked from jengelh/virtualbox

Accepting request 706136 from home:frispete:kernel

Hi Larry,

here we go..

this version of VB is tested successfully with TW and 15.0, builds
with 42.3, 15.0, 15.0 with Kernel:stable, 15.1, TW, and behaves 
properly autostart-wise.

So it's good to go from my POV.

Cheers,
Pete

- separate vboxautostart.sh from vboxdrv.sh
- add vboxautostart.service
- clean up vboxdrv.sh
- fix build of vboxvideo kernel module by replacing the relative
  drm include patch with an absolute include path (with sed)
- build vboxvideo kernel module for openSUSE >= 15.0
- apply fixes_for_Leap15.1.patch conditionally only
- add minimal patch fixes_for_Leap42.3.patch to build for 42.3
- fix path typo: %{_datadir}/pixmaps/virtalbox
              -> %{_datadir}/pixmaps/virtualbox

OBS-URL: https://build.opensuse.org/request/show/706136
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=489
This commit is contained in:
Larry Finger
2019-05-29 14:36:37 +00:00
committed by Git OBS Bridge
parent d72c0caca1
commit cbf52ea5f0
7 changed files with 218 additions and 83 deletions

View File

@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -78,6 +78,8 @@ Source19: vboxdrv.sh
Source20: README.autostart
Source21: vboxweb-service.service
Source22: vboxweb-service.sh
Source23: vboxautostart.service
Source24: vboxautostart.sh
Source98: %{name}-rpmlintrc
Source99: %{name}-patch-source.sh
#rework init scripts to fit suse needs
@@ -139,6 +141,8 @@ Patch125: remove_vbox_video_build.patch
Patch128: fix_lib_search.patch
# Fixes for modified kernel in Leap 15.1
Patch129: fixes_for_Leap15.1.patch
# Fixes for modified kernel in Leap 42.3
Patch130: fixes_for_Leap42.3.patch
# Fixes for Qt5.13
Patch131: fixes_for_qt5.13.patch
#endif
@@ -441,11 +445,19 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL.
%patch123 -p1
%patch125 -p1
%patch128 -p1
# Tumbleweed, Leap 15.1 and above drm adjustments
%if 0%{?suse_version} > 1500 || (0%{?sle_version} >= 150100 && 0%{?is_opensuse})
%patch129 -p1
%if %{qt5ver} >= 51300
%endif
# Leap 42.3 adjustments
%if 0%{?sle_version} == 120300 && 0%{?is_opensuse}
%patch130 -p1
%endif
# Qt5.13 adjustments
%if %{qt5ver} >= 51300
%patch131 -p1
%endif
# make VB UI background colors look sane again
%patch999 -p1
#copy user manual
@@ -473,6 +485,8 @@ echo "SED = $RPM_BUILD_DIR/VirtualBox-%{version}/kmk_sed" >> LocalConfig.kmk
####workaround kmk_sed --^
##########################
#
# fix build of vboxvideo kernel module: replace relative drm include path with absolute include path
sed -i 's:include/drm:/usr/src/linux/include/drm:' src/VBox/Additions/linux/drm/Makefile.module.kms
%build
# Disable LTO - Link Time Optimization
@@ -525,7 +539,7 @@ install -D -m 644 "COPYING" "%{buildroot}%{_datadir}/licenses/LICENSE.vnc"
# host modules : vboxdrv,vboxnetflt,vboxnetadp,vboxpci
# guest modules : vboxguest,vboxsf vboxvideo (for Leap 15.1)
echo "build kernel modules"
%if 0%{?suse_version} == 1500
%if 0%{?suse_version} >= 1500
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \
out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do
%else
@@ -553,14 +567,15 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \
cp $PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name
fi
# copy vboxguest (for guest) module symbols which are used by vboxsf km:
if [ "$module_name" = "vboxsf" ]; then
# copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's:
if [ "$module_name" = "vboxsf" -o \
"$module_name" = "vboxvideo" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name
fi
# build the module for the specific flavor
make -j2 -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor %{?linux_make_arch} modules \
M=$PWD/modules_build_dir/$flavor/$module_name
M=$PWD/modules_build_dir/$flavor/$module_name V=1
done
done
@@ -597,7 +612,7 @@ export INSTALL_MOD_DIR=extra
export INITRD_IN_POSTTRANS=1
export KMP_NEEDS_MKINITRD=0
#to install modules we use here similar steps like in build phase, go through all the modules :
%if 0%{?suse_version} == 1500
%if 0%{?suse_version} >= 1500
for module_name in vbox{drv,netflt,pci,netadp,guest,sf,video}
%else
for module_name in vbox{drv,netflt,pci,netadp,guest,sf}
@@ -712,13 +727,18 @@ install -m 0755 %{SOURCE18} %{buildroot}/sbin/vbox-fix-usb-rules.sh
install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh
install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxweb-service.service
install -m 0755 %{SOURCE22} %{buildroot}%{_vbox_instdir}/vboxweb-service.sh
# Init script to start virtual boxes during boot
install -m 0644 %{SOURCE23} %{buildroot}%{_unitdir}/vboxautostart.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxautostart
install -m 0755 %{SOURCE24} %{buildroot}%{_vbox_instdir}/vboxautostart.sh
# Init scripts to start virtualbox during boot
ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
ln -sf %{_unitdir}/vboxautostart.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxautostart.service
# config file for vboxdrv script and vboxweb
# config file for vboxdrv and vboxweb
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
echo -e "#settings for vboxwebsrn\nVBOXWEB_USER=root" > %{buildroot}%{_sysconfdir}/vbox/vbox.cfg
# config file for vboxautostart
cat > %{buildroot}%{_sysconfdir}/vbox/autostart.cfg << EOF
default_policy = deny
# Create an entry for each user allowed to use autostart
@@ -764,11 +784,11 @@ popd
######################################################
echo "entering virtualbox-guest-desktop-icons install section"
######################################################
install -d -m 755 %{buildroot}%{_datadir}/pixmaps/virtalbox
install -d -m 755 %{buildroot}%{_datadir}/pixmaps/virtualbox
pushd src/VBox/Frontends/VirtualBox/images
for icon in os_*.png; do
install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtalbox/"$icon";
install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtualbox/"$icon";
done
popd
#
@@ -780,7 +800,7 @@ popd
#also some translation files are duplicated
%fdupes %{buildroot}/%{_datadir}/virtualbox/nls
#also some icon files are duplicated
%fdupes %{buildroot}/%{_datadir}/pixmaps/virtalbox
%fdupes %{buildroot}/%{_datadir}/pixmaps/virtualbox
#
#
@@ -791,12 +811,13 @@ popd
%pre
getent group vboxusers >/dev/null || groupadd -r vboxusers
%service_add_pre vboxdrv.service
%service_add_pre vboxautostart.service
%pre guest-tools
# Add groups for seamless mode and shared folders:
getent group vboxguest >/dev/null || groupadd -r vboxguest
getent group vboxsf >/dev/null || groupadd -r vboxsf
%if 0%{?suse_version} == 1500
%if 0%{?suse_version} >= 1500
getent group vboxvideo >/dev/null || groupadd -r vboxvideo
%endif
%service_add_pre vboxadd-service.service
@@ -816,6 +837,7 @@ getent group vboxvideo >/dev/null || groupadd -r vboxvideo
%set_permissions %{_vbox_instdir}/VBoxNetAdpCtl
%set_permissions %{_vbox_instdir}/VBoxHeadless
%service_add_post vboxdrv.service
%service_add_post vboxautostart.service
# add new autostart stuff to the existing default config, if missing
grep -q VBOXAUTOSTART /etc/default/virtualbox || {
cat >> /etc/default/virtualbox << EOF
@@ -859,7 +881,9 @@ VBoxManage extpack install --replace "${EXTPACK}" --accept-license="${ACCEPT}" >
#######################################################
%preun
%stop_on_removal vboxautostart
%stop_on_removal vboxdrv
%service_del_preun vboxautostart.service
%service_del_preun vboxdrv.service
exit 0
@@ -881,8 +905,10 @@ exit 0
%postun
/sbin/ldconfig
%restart_on_update vboxdrv
%restart_on_update vboxautostart
# immediately restarting virtualbox may not work. As such wait for the next reboot to restart
export DISABLE_RESTART_ON_UPDATE=yes
%service_del_postun vboxautostart.service
%service_del_postun vboxdrv.service
%postun guest-tools
@@ -952,9 +978,13 @@ export DISABLE_RESTART_ON_UPDATE=yes
%dir %{_unitdir}
%dir %{_unitdir}/multi-user.target.wants
/usr/lib/virtualbox/vboxdrv.sh
/usr/lib/virtualbox/vboxautostart.sh
%{_unitdir}/vboxdrv.service
%{_unitdir}/vboxautostart.service
%{_unitdir}/multi-user.target.wants/vboxdrv.service
%{_unitdir}/multi-user.target.wants/vboxautostart.service
%{_sbindir}/rcvboxdrv
%{_sbindir}/rcvboxautostart
/sbin/vboxconfig
%{_vbox_instdir}/VBoxCreateUSBNode.sh
%verify(not mode) %attr(0750,root,vboxusers) %{_vbox_instdir}/VBoxNetNAT
@@ -1064,8 +1094,8 @@ export DISABLE_RESTART_ON_UPDATE=yes
%files guest-desktop-icons
%defattr(-,root, root)
%dir %{_datadir}/pixmaps/virtalbox
%{_datadir}/pixmaps/virtalbox/*.png
%dir %{_datadir}/pixmaps/virtualbox
%{_datadir}/pixmaps/virtualbox/*.png
%files vnc
%defattr(-,root, root)