1
0
forked from pool/virtualbox

Accepting request 383715 from Virtualization

1

OBS-URL: https://build.opensuse.org/request/show/383715
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virtualbox?expand=0&rev=114
This commit is contained in:
Dominique Leuenberger 2016-04-06 09:51:14 +00:00 committed by Git OBS Bridge
commit 9d297d8144
8 changed files with 346 additions and 16 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c4af95a125b2ce3f80915c9cc5df88b0a9899ae5a5985a71ea26aee94e4fd4bb
size 76698645

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fe6c170f395ae3caa10e1f06ffb5999e3258bbf37723ce7fa0c7ed7ac5e76cce
size 77502602

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <mlin@suse.com> 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

View File

@ -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