diff --git a/nixos/tests/virtualbox.nix b/nixos/tests/virtualbox.nix index 5fce3ba54812..06b66ce4a922 100644 --- a/nixos/tests/virtualbox.nix +++ b/nixos/tests/virtualbox.nix @@ -446,7 +446,7 @@ in mapAttrs (mkVBoxTest {} vboxVMs) { create_vm_simple() machine.succeed(ru("VirtualBox >&2 &")) - machine.wait_until_succeeds(ru("xprop -name 'Oracle VM VirtualBox Manager'")) + machine.wait_until_succeeds(ru("xprop -name 'Oracle VirtualBox Manager'")) machine.sleep(5) machine.screenshot("gui_manager_started") send_vm_startup() diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index 8c2a9f7e6f2c..c5dc4f09fd2c 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -10,7 +10,6 @@ pam, libxslt, libxml2, - wrapQtAppsHook, libX11, xorgproto, libXext, @@ -28,11 +27,7 @@ libXinerama, libopus, libtpms, - qtbase, - qtx11extras, - qttools, - qtsvg, - qtwayland, + qt6, pkg-config, which, docbook_xsl, @@ -78,8 +73,8 @@ let buildType = "release"; # Use maintainers/scripts/update.nix to update the version and all related hashes or # change the hashes in extpack.nix and guest-additions/default.nix as well manually. - virtualboxVersion = "7.0.22"; - virtualboxSha256 = "cf3ddf633ca410f1b087b0722413e83247cda4f14d33323dc122a4a42ff61981"; + virtualboxVersion = "7.1.4"; + virtualboxSha256 = "872e7a42b41f8558abbf887f1bdc7aac932bb88b2764d07cbce270cab57e3b5e"; kvmPatchVersion = "20240828"; kvmPatchHash = "sha256-g0esJbB1IGyLGZMLFJIY8ZYdHWuiM5IZtLMHZvCY6bs="; @@ -97,6 +92,14 @@ let getDev getLib ; + inherit (qt6) + qtbase + qttools + qtsvg + qtwayland + qtscxml + wrapQtAppsHook + ; in stdenv.mkDerivation (finalAttrs: { pname = "virtualbox"; @@ -164,7 +167,8 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals headless [ libGL ] ++ optionals (!headless) [ qtbase - qtx11extras + qttools + qtscxml libXinerama SDL2 libGLU @@ -188,7 +192,7 @@ stdenv.mkDerivation (finalAttrs: { -e 's@CXX_FLAGS="\(.*\)"@CXX_FLAGS="-std=c++11 \1"@' \ ${ optionalString (!headless) '' - -e 's@TOOLQT5BIN=.*@TOOLQT5BIN="${getDev qtbase}/bin"@' \ + -e 's@TOOLQT6BIN=.*@TOOLQT6BIN="${getDev qttools}/bin"@' \ '' } -i configure ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2 @@ -215,8 +219,8 @@ stdenv.mkDerivation (finalAttrs: { # No update patch disables check for update function # https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/272212 (fetchpatch { - url = "https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/raw/debian/7.0.14-dfsg-1/debian/patches/16-no-update.patch"; - hash = "sha256-UJHpuB6QB/BbxJorlqZXUF12lgq8gbLMRHRMsbyqRpY="; + url = "https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/raw/42a1ca1291fde365bfba140cb21a8a074aaccce2/debian/patches/16-no-update.patch"; + hash = "sha256-qM2e4DkkpmA18Z76OUsnY1MhcGb1dT2PG68JUy6fZEE="; }) ] ++ [ ./extra_symbols.patch ] @@ -229,7 +233,7 @@ stdenv.mkDerivation (finalAttrs: { # the user's icon theme can be loaded. ++ optional (!headless && enableHardening) (substituteAll { src = ./qt-env-vars.patch; - qtPluginPath = "${qtbase.bin}/${qtbase.qtPluginPrefix}:${qtsvg.bin}/${qtbase.qtPluginPrefix}:${qtwayland.bin}/${qtbase.qtPluginPrefix}"; + qtPluginPath = "${qtbase}/bin/${qtbase.qtPluginPrefix}:${qtsvg}/bin/${qtbase.qtPluginPrefix}:${qtwayland}/bin/${qtbase.qtPluginPrefix}"; }) # While the KVM patch should not break any other behavior if --with-kvm is not specified, # we don't take any chances and only apply it if people actually want to use KVM support. @@ -282,16 +286,17 @@ stdenv.mkDerivation (finalAttrs: { ''} ${optionalString (!headless) '' VBOX_WITH_VBOXSDL := 1 - PATH_QT5_X11_EXTRAS_LIB := ${getLib qtx11extras}/lib - PATH_QT5_X11_EXTRAS_INC := ${getDev qtx11extras}/include - PATH_QT5_TOOLS_LIB := ${getLib qttools}/lib - PATH_QT5_TOOLS_INC := ${getDev qttools}/include + PATH_QT6_TOOLS_LIB := ${getLib qttools}/lib + PATH_QT6_TOOLS_INC := ${getLib qttools}/include + PATH_QT6_SCXML_LIB := ${getLib qtscxml}/lib + PATH_QT6_SCXML_INC := ${getLib qtscxml}/include + VBOX_PATH_QT := ${getLib qttools}/ ''} ${optionalString enableWebService '' # fix gsoap missing zlib include and produce errors with --as-needed VBOX_GSOAP_CXX_LIBS := gsoapssl++ z ''} - TOOL_QT5_LRC := ${getDev qttools}/bin/lrelease + TOOL_QT6_LRC := ${getLib qttools}/bin/lrelease LOCAL_CONFIG ./configure \ @@ -344,7 +349,7 @@ stdenv.mkDerivation (finalAttrs: { "$libexec/VBoxExtPackHelperApp" install \ --base-dir "$share/ExtensionPacks" \ --cert-dir "$share/ExtPackCertificates" \ - --name "Oracle VM VirtualBox Extension Pack" \ + --name "Oracle VirtualBox Extension Pack" \ --tarball "${extensionPack}" \ --sha-256 "${extensionPack.outputHash}" EOF diff --git a/pkgs/applications/virtualization/virtualbox/extpack.nix b/pkgs/applications/virtualization/virtualbox/extpack.nix index dfb0bd98142b..134ce6424ce5 100644 --- a/pkgs/applications/virtualization/virtualbox/extpack.nix +++ b/pkgs/applications/virtualization/virtualbox/extpack.nix @@ -7,14 +7,14 @@ let inherit (virtualbox) version; in fetchurl rec { - name = "Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack"; + name = "Oracle_VirtualBox_Extension_Pack-${version}.vbox-extpack"; url = "https://download.virtualbox.org/virtualbox/${version}/${name}"; sha256 = # Manually sha256sum the extensionPack file, must be hex! # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`. # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS let - value = "6b0c16074dde1ea273b15e091336034368217ba569e09359a63c4d32af558886"; + value = "9dd60ef3c52c2a318fbbb6faace5862a299b61f678a579988869865dcf7390b6"; in assert (builtins.stringLength value) == 64; value; diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix index 0aed33ced10b..70e68879264d 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix @@ -9,7 +9,7 @@ let in fetchurl { url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso"; - sha256 = "486f90cbfe9ed4bf2b12d726ebf54a839758a237e967aa65fc2c92d90a963021"; + sha256 = "80c91d35742f68217cf47b13e5b50d53f54c22c485bacce41ad7fdc321649e61"; meta = { description = "Guest additions ISO for VirtualBox"; longDescription = '' diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix index e94206070d16..7219f0f8c58b 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/builder.nix @@ -28,11 +28,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "VirtualBox-GuestAdditions-builder-${kernel.version}"; - version = "7.0.22"; + version = "7.1.4"; src = fetchurl { url = "https://download.virtualbox.org/virtualbox/${finalAttrs.version}/VirtualBox-${finalAttrs.version}.tar.bz2"; - sha256 = "cf3ddf633ca410f1b087b0722413e83247cda4f14d33323dc122a4a42ff61981"; + sha256 = "872e7a42b41f8558abbf887f1bdc7aac932bb88b2764d07cbce270cab57e3b5e"; }; env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration"; @@ -72,11 +72,6 @@ stdenv.mkDerivation (finalAttrs: { rm -r src/libs/zlib*/ ''; - patches = [ - ## https://www.virtualbox.org/changeset/100258/vbox - ./no-legacy-xorg.patch - ]; - postPatch = '' set -x sed -e 's@MKISOFS --version@MKISOFS -version@' \ diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch b/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch deleted file mode 100644 index 911cf0f0d5f0..000000000000 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/no-legacy-xorg.patch +++ /dev/null @@ -1,45 +0,0 @@ -# https://www.virtualbox.org/changeset/100258/vbox -diff --git a/src/VBox/Additions/linux/Makefile.kmk b/src/VBox/Additions/linux/Makefile.kmk -index 0921b3fe619..de9e98b4989 100644 ---- a/src/VBox/Additions/linux/Makefile.kmk -+++ b/src/VBox/Additions/linux/Makefile.kmk -@@ -136,23 +136,29 @@ VBOX_LNX_ADD_STRIP_SBIN += \ - $(if $(VBOX_WITH_LIGHTDM_GREETER),vbox-greeter) - - VBOX_LNX_ADD_STRIP_MOD = \ -- vboxmouse_drv_70.so \ -- vboxmouse_drv_71.so \ -- vboxmouse_drv_13.so \ -- vboxmouse_drv_14.so \ -- vboxmouse_drv_15.so \ -- vboxmouse_drv_16.so \ -- $(addsuffix .so,$(filter-out %_32,$(filter vboxvideo_drv_%,$(DLLS)))) \ - $(if $(VBOX_WITH_PAM),pam_vbox.so,) \ - mount.vboxsf - -+ifndef VBOX_NO_LEGACY_XORG_X11 -+ VBOX_LNX_ADD_STRIP_MOD += \ -+ vboxmouse_drv_70.so \ -+ vboxmouse_drv_71.so \ -+ vboxmouse_drv_13.so \ -+ vboxmouse_drv_14.so \ -+ vboxmouse_drv_15.so \ -+ vboxmouse_drv_16.so \ -+ $(addsuffix .so,$(filter-out %_32,$(filter vboxvideo_drv_%,$(DLLS)))) -+endif -+ - VBOX_LNX_ADD_MOD = \ - 98vboxadd-xclient \ - x11config.sh - --VBOX_LNX_ADD_STRIP_OBJ = \ -- vboxmouse_drv.o \ -- vboxvideo_drv.o -+ifndef VBOX_NO_LEGACY_XORG_X11 -+ VBOX_LNX_ADD_STRIP_OBJ = \ -+ vboxmouse_drv.o \ -+ vboxvideo_drv.o -+endif - - VBOX_LNX_ADD_INIT = \ - vboxadd \ diff --git a/pkgs/applications/virtualization/virtualbox/qt-dependency-paths.patch b/pkgs/applications/virtualization/virtualbox/qt-dependency-paths.patch index ae5493a327d6..01dd5f9f674a 100644 --- a/pkgs/applications/virtualization/virtualbox/qt-dependency-paths.patch +++ b/pkgs/applications/virtualization/virtualbox/qt-dependency-paths.patch @@ -1,16 +1,26 @@ -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 -@@ -1054,9 +1054,9 @@ else - $(eval $(target)_LIBS += $(PATH_SDK_QT5_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) ) - endif +diff --git a/kBuild/units/qt6.kmk b/kBuild/units/qt6.kmk +index 28d61005..d65205cf 100644 +--- a/kBuild/units/qt6.kmk ++++ b/kBuild/units/qt6.kmk +@@ -1131,9 +1131,14 @@ else + ifeq ($(bld_trg),win) + $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT6_LIB)/$(qt_prefix)Qt6$(module)$(qt_infix)$(SUFF_LIB)) ) 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), $(if $(filter Help,$(module)),$(PATH_QT5_TOOLS_LIB),$(if $(filter X11Extras,$(module)),$(PATH_QT5_X11_EXTRAS_LIB),$(PATH_SDK_QT5_LIB)))/lib$(qt_prefix)Qt5$(module)$(qt_infix)$(SUFF_DLL)) ) +- $(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT6_LIB)/lib$(qt_prefix)Qt6$(module)$(qt_infix)$(SUFF_DLL)) ) ++ $(eval $(target)_LIBS += $(foreach module,$(qt_modules), \ ++ $(if $(filter Help,$(module)),$(PATH_QT6_TOOLS_LIB), \ ++ $(if $(filter StateMachine,$(module)),$(PATH_QT6_SCXML_LIB), \ ++ $(PATH_SDK_QT6_LIB)))/lib$(qt_prefix)Qt6$(module)$(qt_infix)$(SUFF_DLL)) \ ++ ) 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) $(PATH_QT5_X11_EXTRAS_INC)/QtX11Extras $(PATH_QT5_TOOLS_INC)) +- $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT6_INC)/Qt,$(qt_modules)) $(PATH_SDK_QT6_INC) ) ++ $(eval $(target)_INCS += $(addprefix $(PATH_SDK_QT6_INC)/Qt,$(qt_modules)) \ ++ $(PATH_SDK_QT6_INC) $(PATH_QT6_TOOLS_INC) $(PATH_QT6_SCXML_INC)/QtStateMachine ) endif $(eval $(target)_DEFS += $(foreach module,$(toupper $(qt_modules)), QT_$(module)_LIB) ) - + +@@ -1238,4 +1243,3 @@ unit-qt6-show-vars: + @$(ECHO) ' TOOL_QT6_RCC = "$(TOOL_QT6_RCC)"' + @$(ECHO) ' TOOL_QT6_LRC = "$(TOOL_QT6_LRC)"' + @$(ECHO) ' TOOL_QT6_LUPDATE = "$(TOOL_QT6_LUPDATE)"' +- diff --git a/pkgs/applications/virtualization/virtualbox/update.sh b/pkgs/applications/virtualization/virtualbox/update.sh index f1b1d71a355c..5c811bea4882 100755 --- a/pkgs/applications/virtualization/virtualbox/update.sh +++ b/pkgs/applications/virtualization/virtualbox/update.sh @@ -10,7 +10,7 @@ oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; $attr.version latestVersion="$(curl -sS https://download.virtualbox.org/virtualbox/LATEST.TXT)" function fileShaSum() { - echo "$1" | grep -w $2 | cut -f1 -d' ' + echo "$1" | grep -w "$2" | cut -f1 -d' ' } function oldHash() { nix-instantiate --eval --strict -A "$1.drvAttrs.outputHash" | tr -d '"' @@ -20,10 +20,10 @@ function nixFile() { } if [ ! "$oldVersion" = "$latestVersion" ]; then - shaSums=$(curl -sS https://download.virtualbox.org/virtualbox/$latestVersion/SHA256SUMS) + shaSums=$(curl -sS "https://download.virtualbox.org/virtualbox/$latestVersion/SHA256SUMS") virtualBoxShaSum=$(fileShaSum "$shaSums" "VirtualBox-$latestVersion.tar.bz2") - extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VM_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack") + extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack") guestAdditionsIsoShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso") virtualboxNixFile=$(nixFile ${attr}) @@ -36,15 +36,15 @@ if [ ! "$oldVersion" = "$latestVersion" ]; then sed -e "s/virtualboxVersion =.*;/virtualboxVersion = \"$latestVersion\";/g" \ -e "s/virtualboxSha256 =.*;/virtualboxSha256 = \"$virtualBoxShaSum\";/g" \ - -i $virtualboxNixFile + -i "$virtualboxNixFile" sed -i -e 's|value = "'$extpackOldShaSum'"|value = "'$extpackShaSum'"|' $extpackNixFile sed -e "s/sha256 =.*;/sha256 = \"$guestAdditionsIsoShaSum\";/g" \ - -i $guestAdditionsIsoNixFile + -i "$guestAdditionsIsoNixFile" sed -e "s/version =.*;/version = \"$latestVersion\";/g" \ -e "s/sha256 =.*;/sha256 = \"$virtualBoxShaSum\";/g" \ - -i $virtualboxGuestAdditionsNixFile + -i "$virtualboxGuestAdditionsNixFile" - git add $virtualboxNixFile $extpackNixFile $guestAdditionsIsoNixFile $virtualboxGuestAdditionsNixFile + git add "$virtualboxNixFile" "$extpackNixFile" "$guestAdditionsIsoNixFile" "$virtualboxGuestAdditionsNixFile" git commit -m "$attr: ${oldVersion} -> ${latestVersion}" else echo "$attr is already up-to-date"