diff --git a/VirtualBox-5.0.16-patched.tar.bz2 b/VirtualBox-5.0.16-patched.tar.bz2 deleted file mode 100644 index 4aabde9..0000000 --- a/VirtualBox-5.0.16-patched.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4af95a125b2ce3f80915c9cc5df88b0a9899ae5a5985a71ea26aee94e4fd4bb -size 76698645 diff --git a/VirtualBox-5.0.17-patched.tar.bz2 b/VirtualBox-5.0.17-patched.tar.bz2 new file mode 100644 index 0000000..1750822 --- /dev/null +++ b/VirtualBox-5.0.17-patched.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe6c170f395ae3caa10e1f06ffb5999e3258bbf37723ce7fa0c7ed7ac5e76cce +size 77502602 diff --git a/VirtualBox-5.0.17-r106108-r106140.patch b/VirtualBox-5.0.17-r106108-r106140.patch new file mode 100644 index 0000000..5df91ec --- /dev/null +++ b/VirtualBox-5.0.17-r106108-r106140.patch @@ -0,0 +1,267 @@ +Index: src/VBox/Additions/linux/drm/vbox_drv.h +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_drv.h (revision 106108) ++++ src/VBox/Additions/linux/drm/vbox_drv.h (revision 106140) +@@ -118,6 +118,9 @@ + + struct mutex hw_mutex; + bool isr_installed; ++ /** Have we finished fbdev initialisation? We limit reported display ++ * modes to 800x600 until this point to get a sensible console size. */ ++ bool fbdev_init; + struct work_struct hotplug_work; + }; + +Index: src/VBox/Additions/linux/drm/vbox_mode.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_mode.c (revision 106108) ++++ src/VBox/Additions/linux/drm/vbox_mode.c (revision 106140) +@@ -426,11 +426,15 @@ + { + struct vbox_connector *vbox_connector = NULL; + struct drm_display_mode *mode = NULL; ++ struct vbox_private *vbox = NULL; + unsigned num_modes = 0; + int preferred_width, preferred_height; + + LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector)); + vbox_connector = to_vbox_connector(connector); ++ vbox = connector->dev->dev_private; ++ if (!vbox->fbdev_init) ++ return drm_add_modes_noedid(connector, 800, 600); + num_modes = drm_add_modes_noedid(connector, 2560, 1600); + preferred_width = vbox_connector->mode_hint.width ? vbox_connector->mode_hint.width : 1024; + preferred_height = vbox_connector->mode_hint.height ? vbox_connector->mode_hint.height : 768; +@@ -691,5 +695,8 @@ + static int vbox_cursor_move(struct drm_crtc *crtc, + int x, int y) + { ++ struct vbox_private *vbox = crtc->dev->dev_private; ++ ++ VBoxHGSMICursorPosition(&vbox->submit_info, true, x, y, NULL, NULL); + return 0; + } +Index: src/VBox/Additions/linux/drm/vbox_fb.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_fb.c (revision 106108) ++++ src/VBox/Additions/linux/drm/vbox_fb.c (revision 106140) +@@ -438,6 +438,7 @@ + ret = drm_fb_helper_initial_config(&fbdev->helper, 32); + if (ret) + goto fini; ++ vbox->fbdev_init = true; + + LogFunc(("vboxvideo: %d\n", __LINE__)); + return 0; +Index: src/VBox/Additions/linux/drm/vbox_drv.c +=================================================================== +--- src/VBox/Additions/linux/drm/vbox_drv.c (revision 106108) ++++ src/VBox/Additions/linux/drm/vbox_drv.c (revision 106140) +@@ -257,7 +257,7 @@ + /* Do not load if any of the virtual consoles is in graphics mode to be + * sure that we do not pick a fight with a user-mode driver or VESA. */ + for (i = 0; i < MAX_NR_CONSOLES - 1; ++i) +- if (vc_cons[i].d->vc_mode == KD_GRAPHICS) ++ if (vc_cons[i].d && vc_cons[i].d->vc_mode == KD_GRAPHICS) + return -EINVAL; + + return drm_pci_init(&driver, &vbox_pci_driver); +Index: src/VBox/Additions/linux/installer/vboxadd-x11.sh +=================================================================== +--- src/VBox/Additions/linux/installer/vboxadd-x11.sh (revision 106108) ++++ src/VBox/Additions/linux/installer/vboxadd-x11.sh (revision 106140) +@@ -424,7 +424,7 @@ + } + # Do not install if we can use the kernel driver. + case `uname -r` in +- 1.* | 2.* | 3.[0-9].* | 3.11 ) ;; ++ 1.* | 2.* | 3.[0-9].* | 3.10.* ) ;; + * ) vboxvideo_src="" ;; + esac + ;; +Index: src/VBox/Additions/common/crOpenGL/egl.c +=================================================================== +--- src/VBox/Additions/common/crOpenGL/egl.c (revision 106108) ++++ src/VBox/Additions/common/crOpenGL/egl.c (revision 106140) +@@ -910,6 +910,13 @@ + return setEGLError(EGL_BAD_MATCH); + } + ++DECLEXPORT(EGLBoolean) eglSwapInterval (EGLDisplay dpy, EGLint interval) ++{ ++ NOREF(dpy); ++ NOREF(interval); ++ return EGL_TRUE; ++} ++ + typedef void (*VBEGLFuncPtr)(void); + DECLEXPORT(VBEGLFuncPtr)eglGetProcAddress(const char *pszName) + { +Index: src/VBox/Additions/x11/vboxvideo/vboxvideo.c +=================================================================== +--- src/VBox/Additions/x11/vboxvideo/vboxvideo.c (revision 106108) ++++ src/VBox/Additions/x11/vboxvideo/vboxvideo.c (revision 106140) +@@ -1010,102 +1010,8 @@ + } + #endif + +-#ifdef VBOXVIDEO_13 ++#ifndef VBOXVIDEO_13 + +-static void setVirtualSizeRandR12(ScrnInfoPtr pScrn, bool fScreenInitTime) +-{ +- VBOXPtr pVBox = VBOXGetRec(pScrn); +- unsigned i; +- unsigned cx = 0; +- unsigned cy = 0; +- +- for (i = 0; i < pVBox->cScreens; ++i) +- { +- if ( pVBox->fHaveHGSMIModeHints && pVBox->pScreens[i].afHaveLocation) +- { +- pVBox->pScreens[i].paCrtcs->x = pVBox->pScreens[i].aPreferredLocation.x; +- pVBox->pScreens[i].paCrtcs->y = pVBox->pScreens[i].aPreferredLocation.y; +- } +- if ( pVBox->pScreens[i].paOutputs->status == XF86OutputStatusConnected +- && pVBox->pScreens[i].paCrtcs->x + pVBox->pScreens[i].aPreferredSize.cx < VBOX_VIDEO_MAX_VIRTUAL +- && pVBox->pScreens[i].paCrtcs->y + pVBox->pScreens[i].aPreferredSize.cy < VBOX_VIDEO_MAX_VIRTUAL) +- { +- cx = max(cx, pVBox->pScreens[i].paCrtcs->x + pVBox->pScreens[i].aPreferredSize.cx); +- cy = max(cy, pVBox->pScreens[i].paCrtcs->y + pVBox->pScreens[i].aPreferredSize.cy); +- } +- } +- if (cx != 0 && cy != 0) +- { +- /* Do not set the virtual resolution in limited context as that can +- * cause problems setting up RandR 1.2 which needs it set to the +- * maximum size at this point. */ +- if (!fScreenInitTime) +- { +- TRACE_LOG("cx=%u, cy=%u\n", cx, cy); +- xf86ScrnToScreen(pScrn)->width = cx; +- xf86ScrnToScreen(pScrn)->height = cy; +- xf86ScrnToScreen(pScrn)->mmWidth = cx * 254 / 960; +- xf86ScrnToScreen(pScrn)->mmHeight = cy * 254 / 960; +- adjustScreenPixmap(pScrn, cx, cy); +- vbvxSetSolarisMouseRange(cx, cy); +- } +- } +-} +- +-static void setScreenSizesRandR12(ScrnInfoPtr pScrn, bool fScreenInitTime) +-{ +- VBOXPtr pVBox = VBOXGetRec(pScrn); +- unsigned i; +- +- for (i = 0; i < pVBox->cScreens; ++i) +- { +- if (!pVBox->pScreens[i].afConnected) +- continue; +- /* The Crtc can get "unset" if the screen was disconnected previously. +- * I couldn't find an API to re-set it which did not have side-effects. +- */ +- pVBox->pScreens[i].paOutputs->crtc = pVBox->pScreens[i].paCrtcs; +- xf86CrtcSetMode(pVBox->pScreens[i].paCrtcs, pVBox->pScreens[i].paOutputs->probed_modes, RR_Rotate_0, +- pVBox->pScreens[i].paCrtcs->x, pVBox->pScreens[i].paCrtcs->y); +- if (!fScreenInitTime) +- RRCrtcNotify(pVBox->pScreens[i].paCrtcs->randr_crtc, pVBox->pScreens[i].paOutputs->randr_output->modes[0], +- pVBox->pScreens[i].paCrtcs->x, pVBox->pScreens[i].paCrtcs->y, RR_Rotate_0, +-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 5 +- NULL, +-#endif +- 1, &pVBox->pScreens[i].paOutputs->randr_output); +- } +-} +- +-static void setSizesRandR12(ScrnInfoPtr pScrn, bool fScreenInitTime) +-{ +- VBOXPtr pVBox = VBOXGetRec(pScrn); +- +- if (!fScreenInitTime) +- { +-# if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 5 +- RRGetInfo(xf86ScrnToScreen(pScrn), TRUE); +-# else +- RRGetInfo(xf86ScrnToScreen(pScrn)); +-# endif +- } +- setVirtualSizeRandR12(pScrn, fScreenInitTime); +- setScreenSizesRandR12(pScrn, fScreenInitTime); +- if (!fScreenInitTime) +- { +- /* We use RRScreenSizeSet() here and not RRScreenSizeNotify() because +- * the first also pushes the virtual screen size to the input driver. +- * We were doing this manually by setting screenInfo.width and height +- * and calling xf86UpdateDesktopDimensions() where appropriate, but this +- * failed on Ubuntu 12.04.0 due to a problematic X server back-port. */ +- RRScreenSizeSet(xf86ScrnToScreen(pScrn), xf86ScrnToScreen(pScrn)->width, xf86ScrnToScreen(pScrn)->height, +- xf86ScrnToScreen(pScrn)->mmWidth, xf86ScrnToScreen(pScrn)->mmHeight); +- RRTellChanged(xf86ScrnToScreen(pScrn)); +- } +-} +- +-#else +- + #define PREFERRED_MODE_ATOM_NAME "VBOXVIDEO_PREFERRED_MODE" + + static void setSizesRandR11(ScrnInfoPtr pScrn) +@@ -1131,7 +1037,11 @@ + + TRACE_LOG("fScreenInitTime=%d\n", (int)fScreenInitTime); + #ifdef VBOXVIDEO_13 +- setSizesRandR12(pScrn, fScreenInitTime); ++# if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 5 ++ RRGetInfo(xf86ScrnToScreen(pScrn), TRUE); ++# else ++ RRGetInfo(xf86ScrnToScreen(pScrn)); ++# endif + #else + setSizesRandR11(pScrn); + #endif +@@ -1246,8 +1156,6 @@ + if (ShadowFBInit2(pScreen, NULL, vbvxHandleDirtyRect) != TRUE) + return FALSE; + VBoxInitialiseSizeHints(pScrn); +- /* Get any screen size hints from HGSMI. */ +- vbvxReadSizesAndCursorIntegrationFromHGSMI(pScrn, NULL); + + #ifdef VBOXVIDEO_13 + /* Initialise CRTC and output configuration for use with randr1.2. */ +@@ -1304,7 +1212,9 @@ + } + + /* set first video mode */ +- setSizesAndCursorIntegration(pScrn, true); ++ if (!xf86SetDesiredModes(pScrn)) { ++ return FALSE; ++ } + #else + /* set first video mode */ + setModeRandR11(pScrn, pScrn->currentMode, true, false, 0, 0); +@@ -1368,8 +1278,9 @@ + vboxEnableVbva(pScrn); + /* Re-set video mode */ + #ifdef VBOXVIDEO_13 +- vbvxReadSizesAndCursorIntegrationFromHGSMI(pScrn, NULL); +- setSizesAndCursorIntegration(pScrn, false); ++ if (!xf86SetDesiredModes(pScrn)) { ++ return FALSE; ++ } + #else + updateGraphicsCapability(pScrn, TRUE); + setModeRandR11(pScrn, pScrn->currentMode, false, true, cXOverRide, cYOverRide); +Index: src/VBox/Frontends/VirtualBox/src/platform/darwin/UICocoaApplication.mm +=================================================================== +--- src/VBox/Frontends/VirtualBox/src/platform/darwin/UICocoaApplication.mm (revision 106108) ++++ src/VBox/Frontends/VirtualBox/src/platform/darwin/UICocoaApplication.mm (revision 106140) +@@ -88,6 +88,10 @@ + if (self) + m_pCallbacks = [[NSMutableArray alloc] init]; + ++ /* Gently disable El Capitan tries to break everything with the Enter Full Screen action. ++ * S.a. https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/ for reference. */ ++ [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"]; ++ + return self; + } + diff --git a/vbox_prevent_wrong_SONAME.patch b/vbox_prevent_wrong_SONAME.patch new file mode 100644 index 0000000..a31b20b --- /dev/null +++ b/vbox_prevent_wrong_SONAME.patch @@ -0,0 +1,13 @@ +Index: VirtualBox-5.0.17/src/VBox/Additions/common/crOpenGL/Makefile.kmk +=================================================================== +--- VirtualBox-5.0.17.orig/src/VBox/Additions/common/crOpenGL/Makefile.kmk ++++ VirtualBox-5.0.17/src/VBox/Additions/common/crOpenGL/Makefile.kmk +@@ -227,7 +227,7 @@ if1of ($(KBUILD_TARGET), linux solaris f + dl + endif + else +- VBoxOGL_SONAME.linux = libGL.so.1 ++ VBoxOGL_SONAME.linux = VBoxOGL.so.1 + VBoxOGL_LDFLAGS.linux += -Wl,-e,LibMain + endif + endif diff --git a/virtualbox-guest-kmp-files b/virtualbox-guest-kmp-files index d1e56e3..ec5ab30 100644 --- a/virtualbox-guest-kmp-files +++ b/virtualbox-guest-kmp-files @@ -1,6 +1,6 @@ %defattr (-,root,root) %dir /lib/modules/%2-%1/ -%dir /lib/modules/%2-%1/updates -/lib/modules/%2-%1/updates/vboxsf.ko -/lib/modules/%2-%1/updates/vboxvideo.ko -/lib/modules/%2-%1/updates/vboxguest.ko +%dir /lib/modules/%2-%1/misc +/lib/modules/%2-%1/misc/vboxsf.ko +/lib/modules/%2-%1/misc/vboxvideo.ko +/lib/modules/%2-%1/misc/vboxguest.ko diff --git a/virtualbox-host-kmp-files b/virtualbox-host-kmp-files index f8c3f45..6a68fab 100644 --- a/virtualbox-host-kmp-files +++ b/virtualbox-host-kmp-files @@ -1,7 +1,7 @@ %defattr (-,root,root) %dir /lib/modules/%2-%1/ -%dir /lib/modules/%2-%1/updates -/lib/modules/%2-%1/updates/vboxdrv.ko -/lib/modules/%2-%1/updates/vboxnetadp.ko -/lib/modules/%2-%1/updates/vboxnetflt.ko -/lib/modules/%2-%1/updates/vboxpci.ko +%dir /lib/modules/%2-%1/misc +/lib/modules/%2-%1/misc/vboxdrv.ko +/lib/modules/%2-%1/misc/vboxnetadp.ko +/lib/modules/%2-%1/misc/vboxnetflt.ko +/lib/modules/%2-%1/misc/vboxpci.ko diff --git a/virtualbox.changes b/virtualbox.changes index 0ecd399..b5d5d27 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,42 @@ +------------------------------------------------------------------- +Mon Apr 4 00:01:12 UTC 2016 - Larry.Finger@lwfinger.net + +- Fix problem with SONAME for VBoxOGL.so. With the Oracle code, it is libGL.so.1 rather than VBoxOGL.so.1. + Thanks to Max Lin for notifying me about the problem. + This fix adds file "vbox_prevent_wrong_SONAME.patch" + +------------------------------------------------------------------- +Thu Mar 31 16:49:11 UTC 2016 - Larry.Finger@lwfinger.net + +- Fix problems with previous submission + + Removed copy of user manual from download site as there is no special manual for 5.0.17. + File VirtualBox-5.0.17-r106108-r106140.patch is added to update the Oracle source to the latest commit. + +------------------------------------------------------------------- +Wed Mar 30 21:06:08 UTC 2016 - Larry.Finger@lwfinger.net + +- Modify Guest Additions so that openSUSE build works with new Oracle code. The following changes have been made: + + Added Oracle patch to bring code to r106140 commit. + Moved VB guest modules to /lib/modules/.../misc/. This layout matches that of the Oracle Guest Additions ISO. + Added missing copy of Module.symvers from vboxguest build so that loads of vboxvideo can resolve all symbols. + Remove patch added in previous cycle to build under kernel 4.5.0. The Oracle code now has this fix. + + With these changes, both Gnome and KDE desktops as VB virtual machines work with gdm and the versions of X.Org that do not run as root. + The only known defect is that the mouse pointer is missing when 3D acceleration is turned on in the VB control panel. + +------------------------------------------------------------------- +Mon Mar 7 22:20:56 UTC 2016 - Larry.Finger@lwfinger.net + +- Version bump to 5.0.17 (released 2016-03-07 by Oracle) + + Following the 5.0.16 release, the Guest Additions were updated to support Linux guests + with X.Org Server running without root privileges and to fix certain 3D acceleration-related issues. + There are no other changes to VirtualBox. + + A patch "vbox-guest-add.diff" is needed to enable the Oracle code to build with kernel 4.5. + ------------------------------------------------------------------- Sat Mar 5 18:19:56 UTC 2016 - Larry.Finger@lwfinger.net diff --git a/virtualbox.spec b/virtualbox.spec index 716b936..c27b98b 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -19,7 +19,7 @@ %define _vbox_instdir %{_libexecdir}/virtualbox %define _udevrulesdir %{_libexecdir}/udev/rules.d Name: virtualbox -Version: 5.0.16 +Version: 5.0.17 Release: 0 Summary: VirtualBox is an Emulator License: GPL-2.0+ @@ -31,7 +31,7 @@ Url: http://www.virtualbox.org/ # WARNING: This is not a comment, but the real command to repack souce #%(bash %{_sourcedir}/virtualbox-patch-source.sh VirtualBox-%{version}.tar.bz2) Source0: VirtualBox-%{version}-patched.tar.bz2 -Source1: http://download.virtualbox.org/%{name}/%{version}/UserManual.pdf +Source1: UserManual.pdf Source2: %{name}-60-vboxdrv.rules Source3: %{name}-60-vboxguest.rules Source4: %{name}-default.virtualbox @@ -83,6 +83,10 @@ Patch107: virtualbox-sed-params.patch Patch108: virtualbox-snpritnf-buffer-overflow.patch # Patch to add code to explain USB Passthru Patch109: vbox-usb-warning.diff +# Upgrade sources from r106108 to r106140 +Patch110: VirtualBox-5.0.17-r106108-r106140.patch +# Prevent Guest Additions from creating wrong SONAME +Patch111: vbox_prevent_wrong_SONAME.patch # BuildRequires: LibVNCServer-devel BuildRequires: SDL-devel @@ -104,7 +108,7 @@ BuildRequires: kbuild >= 0.1.9998svn2689 BuildRequires: kernel-syms BuildRequires: libcap-devel BuildRequires: libcurl-devel -BuildRequires: libgsoap-devel +#BuildRequires: libgsoap-devel BuildRequires: libidl-devel BuildRequires: libopenssl-devel BuildRequires: libqt4-devel @@ -313,6 +317,8 @@ This package contains icons for guest desktop files that were created on the des %patch107 -p1 %patch108 -p1 %patch109 -p1 +%patch110 -p0 +%patch111 -p1 #copy user manual cp %{SOURCE1} UserManual.pdf #copy kbuild config @@ -405,6 +411,11 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \ cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ $PWD/modules_build_dir/$flavor/$module_name fi + # copy vboxguest (for guest) module symbols which are used by vboxvideo km: + if [ "$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 %{?_smp_mflags} -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules \ M=$PWD/modules_build_dir/$flavor/$module_name @@ -436,7 +447,7 @@ install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d echo "entering virtualbox-kmp-guest and virtualbox-kmp-host install section" #################################################################################### export INSTALL_MOD_PATH=%{buildroot} -export INSTALL_MOD_DIR=updates +export INSTALL_MOD_DIR=misc #to install modules we use here similar steps like in build phase, go trought the all modules : for module_name in vbox{drv,netflt,pci,netadp,guest,sf,video} do