From 13a6f4268742c16273ca8db92780a3fb504a4639 Mon Sep 17 00:00:00 2001 From: K900 Date: Sat, 13 Jan 2024 10:49:50 +0300 Subject: [PATCH] virtualbox: fix build with libxml 2.12 + gcc 13 --- .../virtualization/virtualbox/default.nix | 2 + .../virtualization/virtualbox/gcc-13.patch | 35 ++++++++++++++ .../virtualbox/libxml-2.12.patch | 47 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 pkgs/applications/virtualization/virtualbox/gcc-13.patch create mode 100644 pkgs/applications/virtualization/virtualbox/libxml-2.12.patch diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index ebdf09fd8379..62109eac2700 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -101,6 +101,8 @@ in stdenv.mkDerivation { ./qt-dependency-paths.patch # https://github.com/NixOS/nixpkgs/issues/123851 ./fix-audio-driver-loading.patch + ./libxml-2.12.patch + ./gcc-13.patch ]; postPatch = '' diff --git a/pkgs/applications/virtualization/virtualbox/gcc-13.patch b/pkgs/applications/virtualization/virtualbox/gcc-13.patch new file mode 100644 index 000000000000..c06780299f95 --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/gcc-13.patch @@ -0,0 +1,35 @@ +diff --git a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp +index 8a9d15c0..260ebc5c 100644 +--- a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp ++++ b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp +@@ -46,6 +46,9 @@ + #if defined(VBOX_VBGLR3_XFREE86) + extern "C" { + # define XFree86LOADER ++# ifdef RT_GNUC_PREREQ(13,0) /* cmath gets dragged in and the c++/13/cmath header is allergic to -ffreestanding. */ ++# define _GLIBCXX_INCLUDE_NEXT_C_HEADERS ++# endif + # include + # undef size_t + } +diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp +index 2c5e9314..64890169 100644 +--- a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp ++++ b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp +@@ -1,3 +1,5 @@ ++#include ++ + #include "util_matrix.h" + + namespace dxvk { +diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h +index 77cdf294..9dcb4bf9 100644 +--- a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h ++++ b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h +@@ -1,5 +1,6 @@ + #pragma once + ++#include + #include + + #include "util_bit.h" diff --git a/pkgs/applications/virtualization/virtualbox/libxml-2.12.patch b/pkgs/applications/virtualization/virtualbox/libxml-2.12.patch new file mode 100644 index 000000000000..4631f304735c --- /dev/null +++ b/pkgs/applications/virtualization/virtualbox/libxml-2.12.patch @@ -0,0 +1,47 @@ +diff --git a/include/iprt/cpp/xml.h b/include/iprt/cpp/xml.h +index 40975e86..7639c281 100644 +--- a/include/iprt/cpp/xml.h ++++ b/include/iprt/cpp/xml.h +@@ -113,9 +113,9 @@ public: + class RT_DECL_CLASS XmlError : public RuntimeError + { + public: +- XmlError(xmlErrorPtr aErr); ++ XmlError(const xmlError *aErr); + +- static char* Format(xmlErrorPtr aErr); ++ static char* Format(const xmlError *aErr); + }; + + // Logical errors +diff --git a/src/VBox/Runtime/r3/xml.cpp b/src/VBox/Runtime/r3/xml.cpp +index a6661760..b301a6c6 100644 +--- a/src/VBox/Runtime/r3/xml.cpp ++++ b/src/VBox/Runtime/r3/xml.cpp +@@ -131,7 +131,7 @@ LogicError::LogicError(RT_SRC_POS_DECL) + RTStrFree(msg); + } + +-XmlError::XmlError(xmlErrorPtr aErr) ++XmlError::XmlError(const xmlError *aErr) + { + if (!aErr) + throw EInvalidArg(RT_SRC_POS); +@@ -145,7 +145,7 @@ XmlError::XmlError(xmlErrorPtr aErr) + * Composes a single message for the given error. The caller must free the + * returned string using RTStrFree() when no more necessary. + */ +-/* static */ char *XmlError::Format(xmlErrorPtr aErr) ++/* static */ char *XmlError::Format(const xmlError *aErr) + { + const char *msg = aErr->message ? aErr->message : ""; + size_t msgLen = strlen(msg); +@@ -1856,7 +1856,7 @@ static void xmlParserBaseGenericError(void *pCtx, const char *pszMsg, ...) RT_NO + va_end(args); + } + +-static void xmlParserBaseStructuredError(void *pCtx, xmlErrorPtr error) RT_NOTHROW_DEF ++static void xmlParserBaseStructuredError(void *pCtx, const xmlError *error) RT_NOTHROW_DEF + { + NOREF(pCtx); + /* we expect that there is always a trailing NL */