From 43c9ab900b884bd981e00d59845bb07d042794d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Sun, 23 Jun 2013 13:06:03 +0200 Subject: [PATCH 1/3] virtualbox-guestadditions: fix xorg incompatibility A recent X update broke VirtualBox guest additions (vboxvideo driver version mismatch, desktop won't start). This fixes it. Here is the error log: (II) "glx" will be loaded by default. (II) LoadModule: "glx" (II) Loading /nix/store/kzvmnjlps51q4piqmwr7zbmxcg2z9vgk-xorg-server-1.13.4/lib/xorg/modules/extensions/libglx.so (II) Module glx: vendor="X.Org Foundation" compiled for 1.13.4, module version = 1.0.0 ABI class: X.Org Server Extension, version 7.0 (==) AIGLX enabled Loading extension GLX (II) LoadModule: "vboxvideo" (II) Loading /nix/store/4kbxi00h8xsmfgbws2qqh674lcfp03h6-VirtualBox-GuestAdditions-4.2.14-3.2.46/lib/xorg/modules/drivers/vboxvideo_drv.so (II) Module vboxvideo: vendor="Oracle Corporation" compiled for 10.12.0, module version = 1.0.1 Module class: X.Org Video Driver ABI class: X.Org Video Driver, version 12.0 (EE) module ABI major version (12) doesn't match the server's version (13) (II) UnloadModule: "vboxvideo" (II) Unloading vboxvideo (EE) Failed to load module "vboxvideo" (module requirement mismatch, 0) (II) LoadModule: "vboxmouse" (WW) Warning, couldn't open module vboxmouse (II) UnloadModule: "vboxmouse" (II) Unloading vboxmouse (EE) Failed to load module "vboxmouse" (module does not exist, 0) (EE) No drivers available. Fatal server error: no screens found --- .../virtualization/virtualbox/guest-additions/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index f3d7c18a2c6..98fffe90ff6 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -104,7 +104,7 @@ stdenv.mkDerivation { # Install Xorg drivers mkdir -p $out/lib/xorg/modules/{drivers,input} - install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_112.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so + install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_113.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so # Install kernel modules cd src From 45f7b9c319d9f5659278391ea660025953b0a07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 23 Jun 2013 13:57:13 +0200 Subject: [PATCH 2/3] virtualbox: make guest additions use driver according to xserver version --- .../virtualbox/guest-additions/default.nix | 13 ++++++++----- pkgs/servers/x11/xorg/overrides.nix | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index 98fffe90ff6..50449b8f094 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -1,8 +1,11 @@ { stdenv, fetchurl, lib, patchelf, cdrkit, kernelDev, which, makeWrapper -, libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor -, dbus }: +, xorg, dbus }: -let version = "4.2.12"; in +let + version = "4.2.12"; + xserverVListFunc = builtins.elemAt (stdenv.lib.splitString "." xorg.xorgserver.version); + xserverABI = xserverVListFunc 0 + xserverVListFunc 1; +in stdenv.mkDerivation { name = "VirtualBox-GuestAdditions-${version}-${kernelDev.version}"; @@ -22,7 +25,7 @@ stdenv.mkDerivation { ''; - buildCommand = '' + buildCommand = with xorg; '' ${if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" then '' isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run chmod 755 ./VBoxLinuxAdditions.run @@ -104,7 +107,7 @@ stdenv.mkDerivation { # Install Xorg drivers mkdir -p $out/lib/xorg/modules/{drivers,input} - install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_113.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so + install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so # Install kernel modules cd src diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index ff815fb1cf5..22e0096ad65 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -209,6 +209,7 @@ in rm -fr $out/share/X11/xkb/compiled ln -s /var/tmp $out/share/X11/xkb/compiled ''; + passthru.version = (builtins.parseDrvName attrs.name).version; # needed by virtualbox guest additions }; From 6c86398ff3f56794b0ef08f7613cabe8ef5652fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 23 Jun 2013 14:35:33 +0200 Subject: [PATCH 3/3] virtualbox: minor update, lock versions with guest-additions I saw no reason to use requireFile, it seems normally downloadable. --- .../virtualization/virtualbox/default.nix | 15 +++++++-------- .../virtualbox/guest-additions/default.nix | 6 +++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 3dd020dfa10..6ca2c66a35a 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -11,8 +11,7 @@ with stdenv.lib; let - version = "4.2.12"; - extpackRevision = "84980"; + version = "4.2.14"; # changes ./guest-additions as well forEachModule = action: '' for mod in \ @@ -31,12 +30,10 @@ let done ''; - extensionPack = requireFile { - name = "Oracle_VM_VirtualBox_Extension_Pack-${version}-${extpackRevision}" - + ".vbox-extpack"; + extensionPack = fetchurl { + url = "http://download.virtualbox.org/virtualbox/${version}/Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack"; # Has to be base16 because it's used as an input to VBoxExtPackHelperApp! - sha256 = "ad15a92e49095c2115bd1793b3b957d3eaf44af0f5d24bb53d6b4fc81c3e2fc4"; - url = "https://www.virtualbox.org/wiki/Downloads"; + sha256 = "5813cae72790de4893cadb839ffbd148290a44ec6913d901d84c9b3740ab1b1e"; }; in stdenv.mkDerivation { @@ -44,7 +41,7 @@ in stdenv.mkDerivation { src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"; - sha256 = "eb65ecac94f63d6292a967d39cb5e28326404c10d0e8c2c50399eedb59c17ee6"; + sha256 = "038k65cdvr80da5nfan5r3rjrnxqab2fbf2pr2jq8g1gc4cxrxpq"; }; buildInputs = @@ -137,6 +134,8 @@ in stdenv.mkDerivation { done ''; + passthru = { inherit version; /* for guest additions */ }; + meta = { description = "PC emulator"; homepage = http://www.virtualbox.org/; diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index 50449b8f094..e7843b07fc3 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -1,8 +1,8 @@ { stdenv, fetchurl, lib, patchelf, cdrkit, kernelDev, which, makeWrapper -, xorg, dbus }: +, xorg, dbus, virtualbox }: let - version = "4.2.12"; + version = virtualbox.version; xserverVListFunc = builtins.elemAt (stdenv.lib.splitString "." xorg.xorgserver.version); xserverABI = xserverVListFunc 0 + xserverVListFunc 1; in @@ -12,7 +12,7 @@ stdenv.mkDerivation { src = fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso"; - sha256 = "aed4730b643aca8daa0829e1122b7c8d592b9f6cea902a98e390c4d22373dfb8"; + sha256 = "9f08f13bbd818fb3ef9916658542ad0999c35e11afc1f6e8ff0b944405486e8a"; }; KERN_DIR = "${kernelDev}/lib/modules/*/build";