commit
b93d3473d3
@ -104,7 +104,7 @@ in
|
|||||||
"VBoxNetNAT"
|
"VBoxNetNAT"
|
||||||
"VBoxSDL"
|
"VBoxSDL"
|
||||||
"VBoxVolInfo"
|
"VBoxVolInfo"
|
||||||
"VirtualBox"
|
"VirtualBoxVM"
|
||||||
]));
|
]));
|
||||||
|
|
||||||
users.groups.vboxusers.gid = config.ids.gids.vboxusers;
|
users.groups.vboxusers.gid = config.ids.gids.vboxusers;
|
||||||
|
@ -2,9 +2,26 @@
|
|||||||
config ? {},
|
config ? {},
|
||||||
pkgs ? import ../.. { inherit system config; },
|
pkgs ? import ../.. { inherit system config; },
|
||||||
debug ? false,
|
debug ? false,
|
||||||
enableUnfree ? false
|
enableUnfree ? false,
|
||||||
|
# Nested KVM virtualization (https://www.linux-kvm.org/page/Nested_Guests)
|
||||||
|
# requires a modprobe flag on the build machine: (kvm-amd for AMD CPUs)
|
||||||
|
# boot.extraModprobeConfig = "options kvm-intel nested=Y";
|
||||||
|
# Without this VirtualBox will use SW virtualization and will only be able
|
||||||
|
# to run 32-bit guests.
|
||||||
|
useKvmNestedVirt ? false,
|
||||||
|
# Whether to run 64-bit guests instead of 32-bit. Requires nested KVM.
|
||||||
|
use64bitGuest ? false,
|
||||||
|
# Whether to enable the virtual UART in VirtualBox guests, allowing to see
|
||||||
|
# the guest console. There is currently a bug in VirtualBox where this will
|
||||||
|
# cause a crash if running with SW virtualization
|
||||||
|
# (https://www.virtualbox.org/ticket/18632). If you need to debug the tests
|
||||||
|
# then enable this and nested KVM to work around the crash (see above).
|
||||||
|
enableVBoxUART ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert use64bitGuest -> useKvmNestedVirt;
|
||||||
|
assert enableVBoxUART -> useKvmNestedVirt; # VirtualBox bug, see above
|
||||||
|
|
||||||
with import ../lib/testing.nix { inherit system pkgs; };
|
with import ../lib/testing.nix { inherit system pkgs; };
|
||||||
with pkgs.lib;
|
with pkgs.lib;
|
||||||
|
|
||||||
@ -94,7 +111,7 @@ let
|
|||||||
|
|
||||||
testVM = vmName: vmScript: let
|
testVM = vmName: vmScript: let
|
||||||
cfg = (import ../lib/eval-config.nix {
|
cfg = (import ../lib/eval-config.nix {
|
||||||
system = "i686-linux";
|
system = if use64bitGuest then "x86_64-linux" else "i686-linux";
|
||||||
modules = [
|
modules = [
|
||||||
../modules/profiles/minimal.nix
|
../modules/profiles/minimal.nix
|
||||||
(testVMConfig vmName vmScript)
|
(testVMConfig vmName vmScript)
|
||||||
@ -141,13 +158,15 @@ let
|
|||||||
sharePath = "/home/alice/vboxshare-${name}";
|
sharePath = "/home/alice/vboxshare-${name}";
|
||||||
|
|
||||||
createFlags = mkFlags [
|
createFlags = mkFlags [
|
||||||
"--ostype Linux26"
|
"--ostype ${if use64bitGuest then "Linux26_64" else "Linux26"}"
|
||||||
"--register"
|
"--register"
|
||||||
];
|
];
|
||||||
|
|
||||||
vmFlags = mkFlags ([
|
vmFlags = mkFlags (
|
||||||
"--uart1 0x3F8 4"
|
(optionals enableVBoxUART [
|
||||||
"--uartmode1 client /run/virtualbox-log-${name}.sock"
|
"--uart1 0x3F8 4"
|
||||||
|
"--uartmode1 client /run/virtualbox-log-${name}.sock"
|
||||||
|
]) ++ [
|
||||||
"--memory 768"
|
"--memory 768"
|
||||||
"--audio none"
|
"--audio none"
|
||||||
] ++ (attrs.vmFlags or []));
|
] ++ (attrs.vmFlags or []));
|
||||||
@ -180,7 +199,7 @@ let
|
|||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
machine = {
|
machine = {
|
||||||
systemd.sockets."vboxtestlog-${name}" = {
|
systemd.sockets."vboxtestlog-${name}" = mkIf enableVBoxUART {
|
||||||
description = "VirtualBox Test Machine Log Socket For ${name}";
|
description = "VirtualBox Test Machine Log Socket For ${name}";
|
||||||
wantedBy = [ "sockets.target" ];
|
wantedBy = [ "sockets.target" ];
|
||||||
before = [ "multi-user.target" ];
|
before = [ "multi-user.target" ];
|
||||||
@ -188,7 +207,7 @@ let
|
|||||||
socketConfig.Accept = true;
|
socketConfig.Accept = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services."vboxtestlog-${name}@" = {
|
systemd.services."vboxtestlog-${name}@" = mkIf enableVBoxUART {
|
||||||
description = "VirtualBox Test Machine Log For ${name}";
|
description = "VirtualBox Test Machine Log For ${name}";
|
||||||
serviceConfig.StandardInput = "socket";
|
serviceConfig.StandardInput = "socket";
|
||||||
serviceConfig.StandardOutput = "syslog";
|
serviceConfig.StandardOutput = "syslog";
|
||||||
@ -346,6 +365,8 @@ let
|
|||||||
vmConfigs = mapAttrsToList mkVMConf vms;
|
vmConfigs = mapAttrsToList mkVMConf vms;
|
||||||
in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs;
|
in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs;
|
||||||
virtualisation.memorySize = 2048;
|
virtualisation.memorySize = 2048;
|
||||||
|
virtualisation.qemu.options =
|
||||||
|
if useKvmNestedVirt then ["-cpu" "kvm64,vmx=on"] else [];
|
||||||
virtualisation.virtualbox.host.enable = true;
|
virtualisation.virtualbox.host.enable = true;
|
||||||
services.xserver.displayManager.auto.user = "alice";
|
services.xserver.displayManager.auto.user = "alice";
|
||||||
users.users.alice.extraGroups = let
|
users.users.alice.extraGroups = let
|
||||||
@ -412,9 +433,14 @@ in mapAttrs (mkVBoxTest false vboxVMs) {
|
|||||||
);
|
);
|
||||||
$machine->sleep(5);
|
$machine->sleep(5);
|
||||||
$machine->screenshot("gui_manager_started");
|
$machine->screenshot("gui_manager_started");
|
||||||
|
# Home to select Tools, down to move to the VM, enter to start it.
|
||||||
|
$machine->sendKeys("home");
|
||||||
|
$machine->sendKeys("down");
|
||||||
$machine->sendKeys("ret");
|
$machine->sendKeys("ret");
|
||||||
$machine->screenshot("gui_manager_sent_startup");
|
$machine->screenshot("gui_manager_sent_startup");
|
||||||
waitForStartup_simple (sub {
|
waitForStartup_simple (sub {
|
||||||
|
$machine->sendKeys("home");
|
||||||
|
$machine->sendKeys("down");
|
||||||
$machine->sendKeys("ret");
|
$machine->sendKeys("ret");
|
||||||
});
|
});
|
||||||
$machine->screenshot("gui_started");
|
$machine->screenshot("gui_started");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, stdenv, fetchurl, lib, fetchpatch, iasl, dev86, pam, libxslt, libxml2
|
{ config, stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2
|
||||||
, libX11, xorgproto, libXext, libXcursor, libXmu, qt5, libIDL, SDL, libcap
|
, libX11, xorgproto, libXext, libXcursor, libXmu, qt5, libIDL, SDL, libcap
|
||||||
, libpng, glib, lvm2, libXrandr, libXinerama, libopus
|
, libpng, glib, lvm2, libXrandr, libXinerama, libopus
|
||||||
, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43
|
, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43
|
||||||
@ -21,8 +21,8 @@ let
|
|||||||
buildType = "release";
|
buildType = "release";
|
||||||
# Remember to change the extpackRev and version in extpack.nix and
|
# Remember to change the extpackRev and version in extpack.nix and
|
||||||
# guest-additions/default.nix as well.
|
# guest-additions/default.nix as well.
|
||||||
main = "0jmrbyhs92lyarpvylxqn2ajxdg9b290w5nd4g0i4h83d28bwbw0";
|
main = "0lp584a350ya1zn03lhgmdbi91yp8yfja9hlg2jz1xyfj2dc869l";
|
||||||
version = "5.2.28";
|
version = "6.0.6";
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
name = "virtualbox-${version}";
|
name = "virtualbox-${version}";
|
||||||
|
|
||||||
@ -76,11 +76,12 @@ in stdenv.mkDerivation {
|
|||||||
optional enableHardening ./hardened.patch
|
optional enableHardening ./hardened.patch
|
||||||
++ [
|
++ [
|
||||||
./qtx11extras.patch
|
./qtx11extras.patch
|
||||||
(fetchpatch {
|
# https://www.virtualbox.org/ticket/18620
|
||||||
name = "010-qt-5.11.patch";
|
./fix_kbuild.patch
|
||||||
url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/010-qt-5.11.patch?h=packages/virtualbox";
|
# https://www.virtualbox.org/ticket/18621
|
||||||
sha256 = "0hjx99pg40wqyggnrpylrp5zngva4xrnk7r90i0ynrqc7n84g9pn";
|
./fix_module_makefile_sed.patch
|
||||||
})
|
# https://forums.virtualbox.org/viewtopic.php?f=7&t=92815
|
||||||
|
./fix_printk_test.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
@ -192,6 +193,6 @@ in stdenv.mkDerivation {
|
|||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
homepage = https://www.virtualbox.org/;
|
homepage = https://www.virtualbox.org/;
|
||||||
maintainers = with maintainers; [ flokli sander ];
|
maintainers = with maintainers; [ flokli sander ];
|
||||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let version = "5.2.28";
|
let version = "6.0.6";
|
||||||
in
|
in
|
||||||
fetchurl rec {
|
fetchurl rec {
|
||||||
name = "Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack";
|
name = "Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack";
|
||||||
@ -10,7 +10,7 @@ fetchurl rec {
|
|||||||
sha256 =
|
sha256 =
|
||||||
# Manually sha256sum the extensionPack file, must be hex!
|
# Manually sha256sum the extensionPack file, must be hex!
|
||||||
# Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
|
# Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
|
||||||
let value = "376e07cbf2ff2844c95c800346c8e4697d7bc671ae0e21e46153b2e7b4ccc1d6";
|
let value = "794f023a186bd217c29c3d30bd1434b6e9de3b242c7bf740d06d10f2d3d981c6";
|
||||||
in assert (builtins.stringLength value) == 64; value;
|
in assert (builtins.stringLength value) == 64; value;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
@ -18,6 +18,6 @@ fetchurl rec {
|
|||||||
license = licenses.virtualbox-puel;
|
license = licenses.virtualbox-puel;
|
||||||
homepage = https://www.virtualbox.org/;
|
homepage = https://www.virtualbox.org/;
|
||||||
maintainers = with maintainers; [ flokli sander cdepillabout ];
|
maintainers = with maintainers; [ flokli sander cdepillabout ];
|
||||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
platforms = [ "x86_64-linux" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
12
pkgs/applications/virtualization/virtualbox/fix_kbuild.patch
Normal file
12
pkgs/applications/virtualization/virtualbox/fix_kbuild.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -urN a/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile b/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
|
||||||
|
--- a/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
|
||||||
|
+++ b/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
|
||||||
|
@@ -58,7 +58,7 @@
|
||||||
|
RT_WITH_VBOX \
|
||||||
|
VBOX_WITH_HARDENING \
|
||||||
|
VBOX_WITH_64_BITS_GUESTS # <-- must be consistent with Config.kmk!
|
||||||
|
-VBOXMOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie -Wno-declaration-after-statement
|
||||||
|
+VBOXMOD_CFLAGS = -include $(VBOXNETADPT_DIR)include/VBox/SUPDrvMangling.h -fno-pie -Wno-declaration-after-statement
|
||||||
|
|
||||||
|
include $(obj)/Makefile-footer.gmk
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
diff -urN VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
|
||||||
|
--- VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk 2019-04-16 12:16:38.000000000 +0200
|
||||||
|
+++ VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk 2019-05-04 15:19:14.545497602 +0200
|
||||||
|
@@ -175,7 +175,7 @@
|
||||||
|
| $$(dir $$@)
|
||||||
|
$(QUIET)$(RM) -f -- $@
|
||||||
|
ifndef VBOX_WITH_HARDENING
|
||||||
|
- $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
+ $(QUIET)$(SED) -e "s;VBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
else
|
||||||
|
$(QUIET)$(CP) -f $< $@
|
||||||
|
endif
|
||||||
|
diff -urN VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
|
||||||
|
--- VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk 2019-04-16 12:16:39.000000000 +0200
|
||||||
|
+++ VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk 2019-05-04 15:19:13.809493324 +0200
|
||||||
|
@@ -525,7 +525,7 @@
|
||||||
|
| $$(dir $$@)
|
||||||
|
$(QUIET)$(RM) -f -- $@
|
||||||
|
ifndef VBOX_WITH_HARDENING
|
||||||
|
- $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
+ $(QUIET)$(SED) -e "s;VBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
else
|
||||||
|
$(QUIET)$(CP) -f $< $@
|
||||||
|
endif
|
||||||
|
diff -urN VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxPci/Makefile.kmk VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
|
||||||
|
--- VirtualBox-6.0.6/src/VBox/HostDrivers/VBoxPci/Makefile.kmk 2019-04-16 12:16:40.000000000 +0200
|
||||||
|
+++ VirtualBox-6.0.6.new/src/VBox/HostDrivers/VBoxPci/Makefile.kmk 2019-05-04 15:42:12.029664987 +0200
|
||||||
|
@@ -67,7 +67,7 @@
|
||||||
|
| $$(dir $$@)
|
||||||
|
$(QUIET)$(RM) -f -- $@
|
||||||
|
ifndef VBOX_WITH_HARDENING
|
||||||
|
- $(QUIET)$(SED) -e "s;-DVBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
+ $(QUIET)$(SED) -e "s;VBOX_WITH_HARDENING;;g" --output $@ $<
|
||||||
|
else
|
||||||
|
$(QUIET)$(CP) -f $< $@
|
||||||
|
endif
|
@ -0,0 +1,14 @@
|
|||||||
|
diff -urN VirtualBox-6.0.6/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c VirtualBox-6.0.6.new/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
|
||||||
|
--- VirtualBox-6.0.6/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c 2019-04-16 12:16:37.000000000 +0200
|
||||||
|
+++ VirtualBox-6.0.6.new/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c 2019-05-04 15:59:44.439905223 +0200
|
||||||
|
@@ -426,10 +426,8 @@
|
||||||
|
int rc;
|
||||||
|
PSUPDRVSESSION pSession;
|
||||||
|
Log(("VBoxDrvLinuxCreate: pFilp=%p pid=%d/%d %s\n", pFilp, RTProcSelf(), current->pid, current->comm));
|
||||||
|
- printk("test1\n");
|
||||||
|
|
||||||
|
#ifdef VBOX_WITH_HARDENING
|
||||||
|
- printk("test2\n");
|
||||||
|
/*
|
||||||
|
* Only root is allowed to access the unrestricted device, enforce it!
|
||||||
|
*/
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
|
{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
|
||||||
, xorg, dbus, virtualbox }:
|
, zlib, xorg, dbus, virtualbox }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = virtualbox.version;
|
version = virtualbox.version;
|
||||||
@ -19,32 +19,23 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
|
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
|
||||||
sha256 = "0cwdmdgcd1jysyw7c9b3cdk1ngk5nq7slh1zkhxkvvq142cnm1v9";
|
sha256 = "1srcsf9264l5yxbq2x83z66j38blbfrywq5lkzwb5kih6sv548c3";
|
||||||
};
|
};
|
||||||
|
|
||||||
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||||
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
|
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
|
||||||
|
|
||||||
patchFlags = [ "-p1" "-d" "install/src/vboxguest-${version}" ];
|
# If you add a patch you probably need this.
|
||||||
|
#patchFlags = [ "-p1" "-d" "install/src/vboxguest-${version}" ];
|
||||||
patches = [
|
|
||||||
./fix_kerndir.patch
|
|
||||||
./fix_kernincl.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
hardeningDisable = [ "pic" ];
|
hardeningDisable = [ "pic" ];
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
|
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
|
||||||
|
|
||||||
nativeBuildInputs = [ patchelf makeWrapper ];
|
nativeBuildInputs = [ patchelf makeWrapper ];
|
||||||
buildInputs = [ cdrkit dbus ] ++ kernel.moduleBuildDependencies;
|
buildInputs = [ cdrkit ] ++ kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
installPhase = ''
|
unpackPhase = ''
|
||||||
mkdir -p $out
|
|
||||||
cp -r install/* $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildCommand = with xorg; ''
|
|
||||||
${if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then ''
|
${if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then ''
|
||||||
isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run
|
isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run
|
||||||
chmod 755 ./VBoxLinuxAdditions.run
|
chmod 755 ./VBoxLinuxAdditions.run
|
||||||
@ -63,39 +54,30 @@ stdenv.mkDerivation {
|
|||||||
''
|
''
|
||||||
else throw ("Architecture: "+stdenv.hostPlatform.system+" not supported for VirtualBox guest additions")
|
else throw ("Architecture: "+stdenv.hostPlatform.system+" not supported for VirtualBox guest additions")
|
||||||
}
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
cd ../
|
doConfigure = false;
|
||||||
patchPhase
|
|
||||||
cd install/src
|
|
||||||
|
|
||||||
# Build kernel modules
|
|
||||||
export INSTALL_MOD_PATH=$out
|
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
# Build kernel modules.
|
||||||
|
cd src
|
||||||
find . -type f | xargs sed 's/depmod -a/true/' -i
|
find . -type f | xargs sed 's/depmod -a/true/' -i
|
||||||
|
|
||||||
cd vboxguest-${version}
|
cd vboxguest-${version}
|
||||||
|
# Run just make first. If we only did make install, we get symbol warnings during build.
|
||||||
make
|
make
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
# Change the interpreter for various binaries
|
# Change the interpreter for various binaries
|
||||||
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} other/mount.vboxsf
|
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} other/mount.vboxsf; do
|
||||||
do
|
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} $i
|
||||||
${if stdenv.hostPlatform.system == "i686-linux" then ''
|
patchelf --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc zlib
|
||||||
patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $i
|
xorg.libX11 xorg.libXt xorg.libXext xorg.libXmu xorg.libXfixes xorg.libXrandr xorg.libXcursor ]} $i
|
||||||
''
|
|
||||||
else if stdenv.hostPlatform.system == "x86_64-linux" then ''
|
|
||||||
patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2 $i
|
|
||||||
''
|
|
||||||
else throw ("Architecture: "+stdenv.hostPlatform.system+" not supported for VirtualBox guest additions")
|
|
||||||
}
|
|
||||||
patchelf --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc dbus libX11 libXt libXext libXmu libXfixes libXrandr libXcursor ]} $i
|
|
||||||
done
|
done
|
||||||
|
|
||||||
for i in lib/VBoxOGL*.so
|
for i in lib/VBoxOGL*.so
|
||||||
do
|
do
|
||||||
patchelf --set-rpath ${lib.makeLibraryPath [ "$out" dbus libXcomposite libXdamage libXext libXfixes ]} $i
|
patchelf --set-rpath ${lib.makeLibraryPath [ "$out"
|
||||||
|
xorg.libXcomposite xorg.libXdamage xorg.libXext xorg.libXfixes ]} $i
|
||||||
done
|
done
|
||||||
|
|
||||||
# FIXME: Virtualbox 4.3.22 moved VBoxClient-all (required by Guest Additions
|
# FIXME: Virtualbox 4.3.22 moved VBoxClient-all (required by Guest Additions
|
||||||
@ -105,6 +87,13 @@ stdenv.mkDerivation {
|
|||||||
# Remove references to /usr from various scripts and files
|
# Remove references to /usr from various scripts and files
|
||||||
sed -i -e "s|/usr/bin|$out/bin|" other/vboxclient.desktop
|
sed -i -e "s|/usr/bin|$out/bin|" other/vboxclient.desktop
|
||||||
sed -i -e "s|/usr/bin|$out/bin|" bin/VBoxClient-all
|
sed -i -e "s|/usr/bin|$out/bin|" bin/VBoxClient-all
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
# Install kernel modules.
|
||||||
|
cd src/vboxguest-${version}
|
||||||
|
make install INSTALL_MOD_PATH=$out
|
||||||
|
cd ../..
|
||||||
|
|
||||||
# Install binaries
|
# Install binaries
|
||||||
install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
|
install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
|
||||||
@ -131,21 +120,18 @@ stdenv.mkDerivation {
|
|||||||
# Install Xorg drivers
|
# Install Xorg drivers
|
||||||
mkdir -p $out/lib/xorg/modules/{drivers,input}
|
mkdir -p $out/lib/xorg/modules/{drivers,input}
|
||||||
install -m 644 other/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
|
install -m 644 other/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
|
||||||
|
'';
|
||||||
|
|
||||||
# Install kernel modules
|
# Stripping breaks these binaries for some reason.
|
||||||
cd src
|
dontStrip = true;
|
||||||
|
|
||||||
for i in *
|
# Some code dlopen() libdbus, patch RUNPATH in fixupPhase so it isn't stripped.
|
||||||
do
|
postFixup = ''
|
||||||
cd $i
|
for i in $(grep -F libdbus-1.so -l -r $out/{lib,bin}); do
|
||||||
kernelVersion=$(cd ${kernel.dev}/lib/modules; ls)
|
origRpath=$(patchelf --print-rpath "$i")
|
||||||
export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
|
patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ dbus ]}" "$i"
|
||||||
find . -type f | xargs sed -i -e "s|-o root||g" \
|
|
||||||
-e "s|-g root||g"
|
|
||||||
make install
|
|
||||||
cd ..
|
|
||||||
done
|
done
|
||||||
''; # */
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Guest additions for VirtualBox";
|
description = "Guest additions for VirtualBox";
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
diff --git a/vboxsf/Makefile.include.header b/vboxsf/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxsf/Makefile.include.header
|
|
||||||
+++ b/vboxsf/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
|
|
||||||
diff --git a/vboxguest/Makefile.include.header b/vboxguest/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxguest/Makefile.include.header
|
|
||||||
+++ b/vboxguest/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
|
|
||||||
diff --git a/vboxvideo/Makefile.include.header b/vboxvideo/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxvideo/Makefile.include.header
|
|
||||||
+++ b/vboxvideo/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
@ -1,12 +0,0 @@
|
|||||||
diff --git a/vboxvideo/Makefile.include.header b/vboxvideo/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxvideo/Makefile.include.header
|
|
||||||
+++ b/vboxvideo/Makefile.include.header
|
|
||||||
@@ -122,7 +122,6 @@ ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
endif
|
|
||||||
# Kernel include folder
|
|
||||||
-KERN_INCL := $(KERN_DIR)/include
|
|
||||||
# module install folder
|
|
||||||
INSTALL_MOD_DIR ?= misc
|
|
||||||
MODULE_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KERN_VER)/$(INSTALL_MOD_DIR)
|
|
@ -2,30 +2,15 @@ diff --git a/kBuild/units/qt5.kmk b/kBuild/units/qt5.kmk
|
|||||||
index 71b96a3..73391f0 100644
|
index 71b96a3..73391f0 100644
|
||||||
--- a/kBuild/units/qt5.kmk
|
--- a/kBuild/units/qt5.kmk
|
||||||
+++ b/kBuild/units/qt5.kmk
|
+++ b/kBuild/units/qt5.kmk
|
||||||
@@ -1019,9 +1019,10 @@ else
|
@@ -1054,9 +1054,9 @@ else
|
||||||
$(eval $(target)_LIBS += $(PATH_SDK_QT5_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) )
|
$(eval $(target)_LIBS += $(PATH_SDK_QT5_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) )
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
- $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT5_LIB)/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) )
|
- $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT5_LIB)/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) )
|
||||||
+ $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT5_LIB)/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) \
|
+ $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(if $(filter X11Extras,$(module)),$(PATH_QT5_X11_EXTRAS_LIB),$(PATH_SDK_QT5_LIB))/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) )
|
||||||
+ $(PATH_QT5_X11_EXTRAS_LIB)/lib$(qt_prefix)Qt5X11Extras$(qt_infix)$(SUFF_DLL))
|
|
||||||
endif
|
endif
|
||||||
- $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) )
|
- $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) )
|
||||||
+ $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) $(PATH_QT5_X11_EXTRAS_INC)/QtX11Extras )
|
+ $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT5_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT5_INC) $(PATH_QT5_X11_EXTRAS_INC)/QtX11Extras )
|
||||||
endif
|
endif
|
||||||
$(eval $(target)_DEFS += $(foreach module,$(toupper $(qt_modules)), QT_$(module)_LIB) )
|
$(eval $(target)_DEFS += $(foreach module,$(toupper $(qt_modules)), QT_$(module)_LIB) )
|
||||||
|
|
||||||
diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk
|
|
||||||
index 3295bfefe7..796370623c 100644
|
|
||||||
--- a/src/VBox/Frontends/VirtualBox/Makefile.kmk
|
|
||||||
+++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk
|
|
||||||
@@ -916,9 +916,6 @@ endif
|
|
||||||
# The Qt modules we're using.
|
|
||||||
# (The include directory and lib/framework for each module will be added by the Qt unit.)
|
|
||||||
VirtualBox_QT_MODULES = Core Gui Widgets PrintSupport
|
|
||||||
-VirtualBox_QT_MODULES.linux += X11Extras
|
|
||||||
-VirtualBox_QT_MODULES.solaris += X11Extras
|
|
||||||
-VirtualBox_QT_MODULES.freebsd += X11Extras
|
|
||||||
VirtualBox_QT_MODULES.darwin += MacExtras
|
|
||||||
VirtualBox_QT_MODULES.win += WinExtras
|
|
||||||
if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_GUI_USE_QGL)
|
|
||||||
|
@ -9,13 +9,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
patches = [
|
|
||||||
./fix_kerndir.patch
|
|
||||||
./fix_kbuild.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||||
INCLUDE_BASE = "${virtualbox.modsrc}";
|
|
||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
diff --git a/vboxdrv/Makefile b/vboxdrv/Makefile
|
|
||||||
index e262c61..4af8dac 100644
|
|
||||||
--- a/vboxdrv/Makefile
|
|
||||||
+++ b/vboxdrv/Makefile
|
|
||||||
@@ -131,7 +131,7 @@ ifdef VBOX_WITH_NATIVE_DTRACE
|
|
||||||
MOD_OBJS += SUPDrvDTrace.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
|
|
||||||
+MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
|
|
||||||
ifdef VBOX_WITH_NATIVE_DTRACE
|
|
||||||
MOD_INCL += -I/usr/include/linux -I/usr/include
|
|
||||||
endif
|
|
||||||
@@ -157,7 +157,7 @@ ifdef VBOX_WITH_TEXT_MODMEM_HACK
|
|
||||||
endif
|
|
||||||
|
|
||||||
# build defs
|
|
||||||
-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h \
|
|
||||||
+MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h \
|
|
||||||
-fno-omit-frame-pointer -fno-pie
|
|
||||||
|
|
||||||
include $(obj)/Makefile.include.footer
|
|
||||||
diff --git a/vboxnetadp/Makefile b/vboxnetadp/Makefile
|
|
||||||
index e262c61..4af8dac 100644
|
|
||||||
--- a/vboxnetadp/Makefile
|
|
||||||
+++ b/vboxnetadp/Makefile
|
|
||||||
@@ -34,7 +34,7 @@ MOD_OBJS += math/gcc/divdi3.o \
|
|
||||||
math/gcc/umoddi3.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
|
|
||||||
+MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
|
|
||||||
MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX \
|
|
||||||
-DRT_WITH_VBOX -DVBOX_WITH_HARDENING \
|
|
||||||
-Wno-declaration-after-statement
|
|
||||||
@@ -59,6 +59,6 @@ ifdef VBOX_USE_INSERT_PAGE
|
|
||||||
endif
|
|
||||||
|
|
||||||
# build defs
|
|
||||||
-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
+MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
|
|
||||||
include $(obj)/Makefile.include.footer
|
|
||||||
diff --git a/vboxnetflt/Makefile b/vboxnetflt/Makefile
|
|
||||||
index e262c61..4af8dac 100644
|
|
||||||
--- a/vboxnetflt/Makefile
|
|
||||||
+++ b/vboxnetflt/Makefile
|
|
||||||
@@ -38,7 +38,7 @@ MOD_OBJS += math/gcc/divdi3.o \
|
|
||||||
math/gcc/umoddi3.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
|
|
||||||
+MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
|
|
||||||
MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \
|
|
||||||
-DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING \
|
|
||||||
-Wno-declaration-after-statement
|
|
||||||
@@ -63,6 +63,6 @@ ifdef VBOX_USE_INSERT_PAGE
|
|
||||||
endif
|
|
||||||
|
|
||||||
# build defs
|
|
||||||
-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
+MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
|
|
||||||
include $(obj)/Makefile.include.footer
|
|
||||||
diff --git a/vboxpci/Makefile b/vboxpci/Makefile
|
|
||||||
index e262c61..4af8dac 100644
|
|
||||||
--- a/vboxpci/Makefile
|
|
||||||
+++ b/vboxpci/Makefile
|
|
||||||
@@ -38,7 +38,7 @@ MOD_OBJS += math/gcc/divdi3.o \
|
|
||||||
math/gcc/umoddi3.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
|
|
||||||
+MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
|
|
||||||
MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX \
|
|
||||||
-DRT_WITH_VBOX -DVBOX_WITH_HARDENING
|
|
||||||
ifeq ($(BUILD_TARGET_ARCH),amd64)
|
|
||||||
@@ -60,6 +60,6 @@ ifdef VBOX_USE_INSERT_PAGE
|
|
||||||
endif
|
|
||||||
|
|
||||||
# build defs
|
|
||||||
-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
+MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
|
|
||||||
|
|
||||||
include $(obj)/Makefile.include.footer
|
|
@ -1,48 +0,0 @@
|
|||||||
diff --git a/vboxdrv/Makefile.include.header b/vboxdrv/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxdrv/Makefile.include.header
|
|
||||||
+++ b/vboxdrv/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
diff --git a/vboxnetadp/Makefile.include.header b/vboxnetadp/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxnetadp/Makefile.include.header
|
|
||||||
+++ b/vboxnetadp/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
diff --git a/vboxnetflt/Makefile.include.header b/vboxnetflt/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxnetflt/Makefile.include.header
|
|
||||||
+++ b/vboxnetflt/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
||||||
diff --git a/vboxpci/Makefile.include.header b/vboxpci/Makefile.include.header
|
|
||||||
index 8df1eb4d25..5a3e5604e7 100644
|
|
||||||
--- a/vboxpci/Makefile.include.header
|
|
||||||
+++ b/vboxpci/Makefile.include.header
|
|
||||||
@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
|
|
||||||
endif # neq($(KERNELRELEASE),)
|
|
||||||
|
|
||||||
# Kernel build folder
|
|
||||||
-KERN_DIR := /lib/modules/$(KERN_VER)/build
|
|
||||||
ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
|
|
||||||
$(error Error: unable to find the headers of the Linux kernel to build against. \
|
|
||||||
Specify KERN_VER=<version> and run Make again)
|
|
Loading…
Reference in New Issue
Block a user