1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-26 15:41:40 +00:00

virtualbox: 5.1.26 -> 5.2.0

This commit is contained in:
Tim Steinbach 2017-11-15 10:03:44 -05:00
parent 8562538f1f
commit dd53d0f1a0
No known key found for this signature in database
GPG key ID: 472BFCCA96BD0EDA
9 changed files with 246 additions and 56 deletions

View file

@ -19,10 +19,10 @@ let
python = python2;
buildType = "release";
# Manually sha256sum the extensionPack file, must be hex!
extpack = "14f152228495a715f526eb74134d43c960919cc534d2bc67cfe34a63e6cf7721";
extpackRev = "117224";
main = "1af8h3d3sdpcxcp5g75qfq10z81l7m8gk0sz8zqix8c1wqsm0wdm";
version = "5.1.26";
extpack = "005ba9211862643e2516d549e98b80942918047f1f6c55fcfe08c490dd1947bc";
extpackRev = "118431";
main = "0m6y98pvkngprw5iaswvkbbfxmzvfl8yvgi984p1866zwap77z16";
version = "5.2.0";
# See https://github.com/NixOS/nixpkgs/issues/672 for details
extensionPack = requireFile rec {
@ -94,14 +94,6 @@ in stdenv.mkDerivation {
postPatch = ''
sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
src/VBox/HostDrivers/adpctl/VBoxNetAdpCtl.cpp
patch -p0 < ${
fetchurl { # for glibc-2.26
name = "conflicting-types-for-greg_t.patch";
url = "http://www.linuxquestions.org/questions/"
+ "attachment.php?attachmentid=25801&d=1504099531";
sha256 = "1bcyf9qrqxizyjp1s662k6n1cfyfjbl7256r4n20kbr65yxcydps";
}
}
'';
# first line: ugly hack, and it isn't yet clear why it's a problem

View file

@ -19,14 +19,20 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
sha256 = "0vxhavlh55fdlm4zhvi21fyxzdydbn56y499bq5aghvsdsmwiy3d";
sha256 = "1r6dybr3pfclffk7gppf7n8gwj3ziw7pmfvbwwkdw00q9ah7h5l4";
};
KERN_DIR = "${kernel.dev}/lib/modules/*/build";
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
patches = [
./fix_kerndir.patch
./fix_kernincl.patch
];
hardeningDisable = [ "pic" ];
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
buildInputs = [ patchelf cdrkit makeWrapper dbus ];
@ -55,22 +61,23 @@ stdenv.mkDerivation {
else throw ("Architecture: "+stdenv.system+" not supported for VirtualBox guest additions")
}
cd ../
patchPhase
cd install/src
# Build kernel modules
cd src
export INSTALL_MOD_PATH=$out
for i in *
do
cd $i
find . -type f | xargs sed 's/depmod -a/true/' -i
make
cd ..
done
find . -type f | xargs sed 's/depmod -a/true/' -i
cd ..
cd vboxguest-${version}
make
cd ../..
# Change the interpreter for various binaries
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} lib/VBoxGuestAdditions/mount.vboxsf
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} other/mount.vboxsf
do
${if stdenv.system == "i686-linux" then ''
patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $i
@ -90,14 +97,14 @@ stdenv.mkDerivation {
# FIXME: Virtualbox 4.3.22 moved VBoxClient-all (required by Guest Additions
# NixOS module) to 98vboxadd-xclient. For now, just work around it:
mv lib/VBoxGuestAdditions/98vboxadd-xclient bin/VBoxClient-all
mv other/98vboxadd-xclient bin/VBoxClient-all
# Remove references to /usr from various scripts and files
sed -i -e "s|/usr/bin|$out/bin|" share/VBoxGuestAdditions/vboxclient.desktop
sed -i -e "s|/usr/bin|$out/bin|" other/vboxclient.desktop
sed -i -e "s|/usr/bin|$out/bin|" bin/VBoxClient-all
# Install binaries
install -D -m 755 lib/VBoxGuestAdditions/mount.vboxsf $out/bin/mount.vboxsf
install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
install -D -m 755 sbin/VBoxService $out/bin/VBoxService
mkdir -p $out/bin
@ -116,11 +123,11 @@ stdenv.mkDerivation {
# Install desktop file
mkdir -p $out/share/autostart
cp -v share/VBoxGuestAdditions/vboxclient.desktop $out/share/autostart
cp -v other/vboxclient.desktop $out/share/autostart
# Install Xorg drivers
mkdir -p $out/lib/xorg/modules/{drivers,input}
install -m 644 lib/VBoxGuestAdditions/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
cd src

View file

@ -0,0 +1,38 @@
diff --git a/install/src/vboxguest-5.2.0/vboxsf/Makefile.include.header b/install/src/vboxguest-5.2.0/vboxsf/Makefile.include.header
index 8df1eb4d25..5a3e5604e7 100644
--- a/install/src/vboxguest-5.2.0/vboxsf/Makefile.include.header
+++ b/install/src/vboxguest-5.2.0/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/install/src/vboxguest-5.2.0/vboxguest/Makefile.include.header b/install/src/vboxguest-5.2.0/vboxguest/Makefile.include.header
index 8df1eb4d25..5a3e5604e7 100644
--- a/install/src/vboxguest-5.2.0/vboxguest/Makefile.include.header
+++ b/install/src/vboxguest-5.2.0/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/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header b/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header
index 8df1eb4d25..5a3e5604e7 100644
--- a/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header
+++ b/install/src/vboxguest-5.2.0/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)

View file

@ -0,0 +1,12 @@
diff --git a/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header b/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header
index 8df1eb4d25..5a3e5604e7 100644
--- a/install/src/vboxguest-5.2.0/vboxvideo/Makefile.include.header
+++ b/install/src/vboxguest-5.2.0/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)

View file

@ -63,13 +63,13 @@ diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp b/src/VBox/Hos
index ce0f288..6193108 100644
--- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
+++ b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
@@ -1489,9 +1489,9 @@ static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bo
@@ -1502,9 +1502,9 @@ static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bo
bool fBad = !fRelaxed || pFsObjState->Stat.st_gid != 2 /*bin*/ || suplibHardenedStrCmp(pszPath, "/usr/lib/iconv");
#else
# else
NOREF(fRelaxed);
- bool fBad = true;
+ bool fBad = !(fDir && pFsObjState->Stat.st_mode & S_ISVTX && !suplibHardenedStrCmp(pszPath, "/nix/store"));
#endif
# endif
- if (fBad)
+ if (fBad && suplibHardenedStrCmp(pszPath, "/nix/store"))
return supR3HardenedSetError3(VERR_SUPLIB_WRITE_NON_SYS_GROUP, pErrInfo,

View file

@ -2,7 +2,7 @@ diff --git a/kBuild/units/qt5.kmk b/kBuild/units/qt5.kmk
index 71b96a3..73391f0 100644
--- a/kBuild/units/qt5.kmk
+++ b/kBuild/units/qt5.kmk
@@ -994,9 +994,10 @@ else
@@ -1019,9 +1019,10 @@ else
$(eval $(target)_LIBS += $(PATH_SDK_QT5_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) )
endif
else
@ -16,16 +16,16 @@ index 71b96a3..73391f0 100644
$(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 38db6b0..7dd446b 100644
index 3295bfefe7..796370623c 100644
--- a/src/VBox/Frontends/VirtualBox/Makefile.kmk
+++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk
@@ -912,9 +912,6 @@ VirtualBox_QT_MODULES = Core Gui
ifdef VBOX_WITH_QTGUI_V5
# Qt5 requires additional modules:
VirtualBox_QT_MODULES += 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
endif # VBOX_WITH_QTGUI_V5
@@ -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)

View file

@ -7,6 +7,14 @@ stdenv.mkDerivation {
"fortify" "pic" "stackprotector"
];
patches = [
./fix_kerndir.patch
./fix_kbuild.patch
];
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
INCLUDE_BASE = "${virtualbox.modsrc}";
makeFlags = [
"-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"

View file

@ -0,0 +1,85 @@
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

View file

@ -0,0 +1,48 @@
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)