From c8ee4d0928db7828a6975b3bd762134a59a1f7a0 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Thu, 7 Dec 2017 00:25:16 +0100 Subject: [PATCH 1/2] virtualbox: patch HostServices/SharedClipboard/x11-stub.cpp to use RT_NOREF Signed-off-by: Florian Klink --- ...redClipboard-x11-stub.cpp-use-RT_NOR.patch | 153 ++++++++++++++++++ .../virtualization/virtualbox/default.nix | 9 +- 2 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/virtualization/virtualbox/HostServices-SharedClipboard-x11-stub.cpp-use-RT_NOR.patch diff --git a/pkgs/applications/virtualization/virtualbox/HostServices-SharedClipboard-x11-stub.cpp-use-RT_NOR.patch b/pkgs/applications/virtualization/virtualbox/HostServices-SharedClipboard-x11-stub.cpp-use-RT_NOR.patch new file mode 100644 index 00000000000..7abe62a59cb --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/HostServices-SharedClipboard-x11-stub.cpp-use-RT_NOR.patch @@ -0,0 +1,153 @@ +From 9ac54c606b581847a170ac2fe525419aff2e5341 Mon Sep 17 00:00:00 2001 +From: Florian Klink +Date: Wed, 6 Dec 2017 23:58:20 +0100 +Subject: [PATCH] HostServices/SharedClipboard/x11-stub.cpp: use RT_NOREF + rather than NOREF + +Currently, build process fails when configuring with --build-headless like this: + +``` +kBuild: Compiling VBoxSharedClipboard - /tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/service.cpp +kBuild: Compiling VBoxSharedClipboard - /tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:58:29: error: macro "NOREF" passed 2 arguments, but takes just 1 + NOREF(pClient, fHeadless); + ^ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:94:30: error: macro "NOREF" passed 2 arguments, but takes just 1 + NOREF(pClient, u32Formats); + ^ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:110:37: error: macro "NOREF" passed 4 arguments, but takes just 1 + NOREF(pClient, u32Format, pv, cb); + ^ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:128:37: error: macro "NOREF" passed 4 arguments, but takes just 1 + NOREF(pClient, pv, cb, u32Format); + ^ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp: In function 'int vboxClipboardConnect(VBOXCLIPBOARDCLIENTDATA*, bool)': +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:58:5: error: 'NOREF' was not declared in this scope + NOREF(pClient, fHeadless); + ^~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:55:52: warning: unused parameter 'pClient' [-Wunused-parameter] + int vboxClipboardConnect (VBOXCLIPBOARDCLIENTDATA *pClient, + ^~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:56:32: warning: unused parameter 'fHeadless' [-Wunused-parameter] + bool fHeadless) + ^~~~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp: In function 'void vboxClipboardFormatAnnounce(VBOXCLIPBOARDCLIENTDATA*, uint32_t)': +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:94:5: error: 'NOREF' was not declared in this scope + NOREF(pClient, u32Formats); + ^~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:91:60: warning: unused parameter 'pClient' [-Wunused-parameter] + void vboxClipboardFormatAnnounce (VBOXCLIPBOARDCLIENTDATA *pClient, + ^~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:92:44: warning: unused parameter 'u32Formats' [-Wunused-parameter] + uint32_t u32Formats) + ^~~~~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp: In function 'int vboxClipboardReadData(VBOXCLIPBOARDCLIENTDATA*, uint32_t, void*, uint32_t, uint32_t*)': +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:110:5: error: 'NOREF' was not declared in this scope + NOREF(pClient, u32Format, pv, cb); + ^~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:107:53: warning: unused parameter 'pClient' [-Wunused-parameter] + int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Format, + ^~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:107:71: warning: unused parameter 'u32Format' [-Wunused-parameter] + int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Format, + ^~~~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:108:34: warning: unused parameter 'pv' [-Wunused-parameter] + void *pv, uint32_t cb, uint32_t *pcbActual) + ^~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:108:47: warning: unused parameter 'cb' [-Wunused-parameter] + void *pv, uint32_t cb, uint32_t *pcbActual) + ^~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp: In function 'void vboxClipboardWriteData(VBOXCLIPBOARDCLIENTDATA*, void*, uint32_t, uint32_t)': +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:128:5: error: 'NOREF' was not declared in this scope + NOREF(pClient, pv, cb, u32Format); + ^~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:125:55: warning: unused parameter 'pClient' [-Wunused-parameter] + void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient, void *pv, + ^~~~~~~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:125:70: warning: unused parameter 'pv' [-Wunused-parameter] + void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient, void *pv, + ^~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:126:39: warning: unused parameter 'cb' [-Wunused-parameter] + uint32_t cb, uint32_t u32Format) + ^~ +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp:126:52: warning: unused parameter 'u32Format' [-Wunused-parameter] + uint32_t cb, uint32_t u32Format) + ^~~~~~~~~ +kmk: *** [/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release/obj/VBoxSharedClipboard/x11-stub.o] Error 1 +The failing command: +@g++ -c -O2 -g -pipe -pedantic -Wshadow -Wall -Wextra -Wno-missing-field-initializers -Wno-unused -Wno-trigraphs -fdiagnostics-show-option -Wno-unused-parameter -Wlogical-op -Wno-variadic-macros +-Wno-long-long -Wunused-variable -Wunused-function -Wunused-label -Wunused-parameter -Wno-overloaded-virtual -Wno-variadic-macros -O2 -mtune=generic -fno-omit-frame-pointer -fno-strict-aliasing +-fvisibility=hidden -DVBOX_HAVE_VISIBILITY_HIDDEN -DRT_USE_VISIBILITY_DEFAULT -fvisibility-inlines-hidden -fPIC -m64 +-I/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release/obj/VBoxSharedClipboard/dtrace -I/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/include +-I/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release -DVBOX -DVBOX_OSE -DVBOX_WITH_64_BITS_GUESTS -DVBOX_WITH_REM -DVBOX_WITH_RAW_MODE -DRT_OS_LINUX -D_FILE_OFFSET_BITS=64 +-DRT_ARCH_AMD64 -D__AMD64__ -DVBOX_WITH_DEBUGGER -DVBOX_WITH_HARDENING -DRTPATH_APP_PRIVATE=\"/nix/store/fqjnpbzq25ffpkpk6hsl3x19ydin2pp1-virtualbox-5.2.2/share/virtualbox\" +-DRTPATH_APP_PRIVATE_ARCH=\"/nix/store/fqjnpbzq25ffpkpk6hsl3x19ydin2pp1-virtualbox-5.2.2/libexec/virtualbox\" +-DRTPATH_APP_PRIVATE_ARCH_TOP=\"/nix/store/fqjnpbzq25ffpkpk6hsl3x19ydin2pp1-virtualbox-5.2.2/share/virtualbox\" +-DRTPATH_SHARED_LIBS=\"/nix/store/fqjnpbzq25ffpkpk6hsl3x19ydin2pp1-virtualbox-5.2.2/libexec/virtualbox\" -DRTPATH_APP_DOCS=\"/nix/store/fqjnpbzq25ffpkpk6hsl3x19ydin2pp1-virtualbox-5.2.2/doc\" +-DIN_RING3 -DHC_ARCH_BITS=64 -DGC_ARCH_BITS=64 -DVBOX_WITH_DTRACE -DVBOX_WITH_DTRACE_R3 -DPIC -DVBOX_WITH_HGCM +-Wp,-MD,/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release/obj/VBoxSharedClipboard/x11-stub.o.dep +-Wp,-MT,/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release/obj/VBoxSharedClipboard/x11-stub.o -Wp,-MP -o +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/out/linux.amd64/release/obj/VBoxSharedClipboard/x11-stub.o +/tmp/nix-build-virtualbox-5.2.2.drv-0/VirtualBox-5.2.2/src/VBox/HostServices/SharedClipboard/x11-stub.cpp +``` + +This seems to be caused by the usage of NOREF in +src/VBox/HostServices/SharedClipboard/x11-stub.cpp, so use RT_NOREFN +instead. + +Signed-off-by: Florian Klink +--- + src/VBox/HostServices/SharedClipboard/x11-stub.cpp | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/VBox/HostServices/SharedClipboard/x11-stub.cpp b/src/VBox/HostServices/SharedClipboard/x11-stub.cpp +index d890215..57ba883 100644 +--- a/src/VBox/HostServices/SharedClipboard/x11-stub.cpp ++++ b/src/VBox/HostServices/SharedClipboard/x11-stub.cpp +@@ -55,7 +55,7 @@ void vboxClipboardDestroy (void) + int vboxClipboardConnect (VBOXCLIPBOARDCLIENTDATA *pClient, + bool fHeadless) + { +- NOREF(pClient, fHeadless); ++ RT_NOREF2(pClient, fHeadless); + LogFlowFunc(("called, returning VINF_SUCCESS.\n")); + return VINF_SUCCESS; + } +@@ -77,7 +77,7 @@ int vboxClipboardSync (VBOXCLIPBOARDCLIENTDATA * /* pClient */) + */ + void vboxClipboardDisconnect (VBOXCLIPBOARDCLIENTDATA *pClient) + { +- NOREF(pClient); ++ RT_NOREF1(pClient); + LogFlowFunc(("called, returning.\n")); + } + +@@ -91,7 +91,7 @@ void vboxClipboardDisconnect (VBOXCLIPBOARDCLIENTDATA *pClient) + void vboxClipboardFormatAnnounce (VBOXCLIPBOARDCLIENTDATA *pClient, + uint32_t u32Formats) + { +- NOREF(pClient, u32Formats); ++ RT_NOREF2(pClient, u32Formats); + LogFlowFunc(("called, returning.\n")); + } + +@@ -107,7 +107,7 @@ void vboxClipboardFormatAnnounce (VBOXCLIPBOARDCLIENTDATA *pClient, + int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Format, + void *pv, uint32_t cb, uint32_t *pcbActual) + { +- NOREF(pClient, u32Format, pv, cb); ++ RT_NOREF4(pClient, u32Format, pv, cb); + LogFlowFunc(("called, returning VINF_SUCCESS.\n")); + /* No data available. */ + *pcbActual = 0; +@@ -125,6 +125,6 @@ int vboxClipboardReadData (VBOXCLIPBOARDCLIENTDATA *pClient, uint32_t u32Format, + void vboxClipboardWriteData (VBOXCLIPBOARDCLIENTDATA *pClient, void *pv, + uint32_t cb, uint32_t u32Format) + { +- NOREF(pClient, pv, cb, u32Format); ++ RT_NOREF4(pClient, pv, cb, u32Format); + LogFlowFunc(("called, returning.\n")); + } +-- +2.15.0 + diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index c7fba94c0b1..605b899e363 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -88,8 +88,13 @@ in stdenv.mkDerivation { set +x ''; - patches = optional enableHardening ./hardened.patch - ++ [ ./qtx11extras.patch ]; + patches = + optional enableHardening ./hardened.patch + # https://www.virtualbox.org/pipermail/vbox-dev/2017-December/014888.html + ++ optional headless [ ./HostServices-SharedClipboard-x11-stub.cpp-use-RT_NOR.patch ] + ++ [ ./qtx11extras.patch ]; + + postPatch = '' sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \ From 7441e007b4ba20b62dae2f5b3363af75117d3a9f Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Thu, 7 Dec 2017 00:33:59 +0100 Subject: [PATCH 2/2] virtualbox: add docbook_xsl, docbook_xml_dtd_43 These threw warnings when building man pages. Also move some buildInputs to nativeBuildInputs. --- pkgs/applications/virtualization/virtualbox/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 605b899e363..f99338fb406 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -1,8 +1,9 @@ { stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext , libXcursor, libXmu, qt5, libIDL, SDL, libcap, zlib, libpng, glib, lvm2 , libXrandr, libXinerama -, which, alsaLib, curl, libvpx, gawk, nettools, dbus -, xorriso, makeself, perl, pkgconfig +, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43 +, alsaLib, curl, libvpx, gawk, nettools, dbus +, xorriso, makeself, perl , javaBindings ? false, jdk ? null , pythonBindings ? false, python2 ? null , enableExtensionPack ? false, requireFile ? null, patchelf ? null, fakeroot ? null @@ -51,10 +52,12 @@ in stdenv.mkDerivation { outputs = [ "out" "modsrc" ]; + nativeBuildInputs = [ pkgconfig which docbook_xsl docbook_xml_dtd_43 ]; + buildInputs = [ iasl dev86 libxslt libxml2 xproto libX11 libXext libXcursor libIDL libcap glib lvm2 alsaLib curl libvpx pam xorriso makeself perl - pkgconfig which libXmu libpng patchelfUnstable python ] + libXmu libpng patchelfUnstable python ] ++ optional javaBindings jdk ++ optional pythonBindings python # Python is needed even when not building bindings ++ optional pulseSupport libpulseaudio