diff --git a/virtualbox/.SRCINFO b/virtualbox/.SRCINFO new file mode 100644 index 00000000..d97d961c --- /dev/null +++ b/virtualbox/.SRCINFO @@ -0,0 +1,177 @@ +pkgbase = virtualbox + pkgver = 7.1.4 + pkgrel = 3 + url = https://virtualbox.org/ + arch = x86_64 + license = GPL + license = custom:CDDL + makedepends = alsa-lib + makedepends = cdrkit + makedepends = curl + makedepends = device-mapper + makedepends = git + makedepends = glu + makedepends = gsoap + makedepends = glslang + makedepends = iasl + makedepends = jdk8-openjdk + makedepends = libidl2 + makedepends = liblzf + makedepends = libpulse + makedepends = libtpms + makedepends = libvncserver + makedepends = libvpx + makedepends = libxcomposite + makedepends = libxcursor + makedepends = libxinerama + makedepends = libxml2 + makedepends = libxmu + makedepends = libxrandr + makedepends = libxslt + makedepends = libxtst + makedepends = linux-headers + makedepends = mesa + makedepends = python + makedepends = python-setuptools + makedepends = qt6-base + makedepends = qt6-scxml + makedepends = qt6-tools + makedepends = sdl + makedepends = sdl_ttf + makedepends = vde2 + makedepends = xorgproto + makedepends = xorg-server-devel + makedepends = yasm + source = https://download.virtualbox.org/virtualbox/7.1.4/VirtualBox-7.1.4.tar.bz2 + source = virtualbox-host-dkms.conf + source = virtualbox.modprobe + source = virtualbox.sysusers + source = virtualbox-guest-utils.sysusers + source = 60-vboxdrv.rules + source = 60-vboxguest.rules + source = LocalConfig.kmk + source = vboxservice.service + source = vboxservice-nox.service + source = vboxdrmclient.path + source = vboxdrmclient.service + source = vboxweb.service + source = vboxreload + source = 001-disable-update.patch + source = 004-drop-Wno-format.patch + source = 008-no-vboxvideo.patch + source = 009-properly-handle-i3wm.patch + source = 012-vbglR3GuestCtrlDetectPeekGetCancelSupport.patch + source = 013-support-building-from-dkms.patch + source = 018-upate-xclient-script.patch + source = 020-python-3-12.patch + source = 021-python-3-13.patch + sha256sums = 872e7a42b41f8558abbf887f1bdc7aac932bb88b2764d07cbce270cab57e3b5e + sha256sums = 76d98ea062fcad9e5e3fa981d046a6eb12a3e718a296544a68b66f4b65cb56db + sha256sums = 07fe5c8b313cd7f01505eb9721357269a288ccd0c04e6467afb954038d6f46df + sha256sums = 2101ebb58233bbfadf3aa74381f22f7e7e508559d2b46387114bc2d8e308554c + sha256sums = da4c49f6ca94e047e196cdbcba2c321199f4760056ea66e0fbc659353e128c9e + sha256sums = f876e9f55243eded423fda4fc2ffe3b174dca90380a6315f7c9b3cd1c9d07206 + sha256sums = 033c597e0f5285d2ddb0490868e5b6f945f45c7b1b1152a02a9e6fea438b2c95 + sha256sums = 476202f87a4a461af6b73a7709e91f868a65ff7306494227e0d7b264fa3f919e + sha256sums = c41a801fe344a4471a7b61a4764d1d857c403e4fb96e2ba6bc89c77a35f2be7a + sha256sums = 01dbb921bd57a852919cc78be5b73580a564f28ebab2fe8d6c9b8301265cbfce + sha256sums = 83d8f24bff25bb925083cf39b3195236c6136105e62417712cc3f25b92e14b47 + sha256sums = 2beab8de525220fa418c9873f9e0d657ddbad4ff9e4a46d7053e6cd9bc4ce95e + sha256sums = e6e875ef186578b53106d7f6af48e426cdaf1b4e86834f01696b8ef1c685787f + sha256sums = 4001b5927348fe669a541e80526d4f9ea91b883805f102f7d571edbb482a9b9d + sha256sums = 483a043ddfe32c4c5001a8de0a94a0ea884f34d3dbd817b492b9c97fba3ab5e0 + sha256sums = ffd30d1d5c41909518571da02c797102d459ba6dec22fe335b4778db264275e1 + sha256sums = d0ca7e240b7bc19b4630998d943d095c733cbdb27b343269f2f602a8f1088974 + sha256sums = d76b52d955215a72c296aa36d173897bcaa357528bf5a73347c52ccec8654ced + sha256sums = 8c64b3617e597390dd25cf85c9afac0ebbe369d620349d7f5c8056d834acb6c6 + sha256sums = 00f68b86d32a1fada900c2da8dad2ab4215106cd58004f049bded99727cda2ff + sha256sums = 73ed7ef243c975227660b9bbe7c576018f2c0216b3a3b5efcc4cc56c44c90914 + sha256sums = ddb2092a5a000aa6ef854796f39dcdf86e72c06d53b24bac3835350571182df6 + sha256sums = 70245fc3abafbd3b191d87e2910f0f004050672f2d0d056db029a062e80e73bc + +pkgname = virtualbox + pkgdesc = Powerful x86 virtualization for enterprise as well as home use + depends = curl + depends = gcc-libs + depends = glibc + depends = liblzf + depends = libpng + depends = libtpms + depends = libvpx + depends = libx11 + depends = libxcursor + depends = libxext + depends = libxinerama + depends = libxml2 + depends = libxmu + depends = libxt + depends = openssl + depends = procps-ng + depends = python + depends = qt6-base + depends = qt6-scxml + depends = qt6-tools + depends = sdl + depends = shared-mime-info + depends = zlib + depends = VIRTUALBOX-HOST-MODULES + optdepends = vde2: Virtual Distributed Ethernet support + optdepends = virtualbox-guest-iso: Guest Additions CD image + optdepends = virtualbox-ext-vnc: VNC server support + optdepends = virtualbox-sdk: Developer kit + conflicts = virtualbox-ose + replaces = virtualbox-ose + backup = etc/vbox/vbox.cfg + +pkgname = virtualbox-sdk + pkgdesc = VirtualBox Software Developer Kit (SDK) + depends = python + +pkgname = virtualbox-host-dkms + pkgdesc = VirtualBox Host kernel modules sources + depends = dkms + depends = gcc + depends = make + provides = VIRTUALBOX-HOST-MODULES + conflicts = virtualbox-source + conflicts = virtualbox-host-source + replaces = virtualbox-source + replaces = virtualbox-host-source + +pkgname = virtualbox-guest-utils + pkgdesc = VirtualBox Guest userspace utilities + depends = glibc + depends = pam + depends = libx11 + depends = libxcomposite + depends = libxdamage + depends = libxext + depends = libxfixes + depends = libxmu + depends = libxt + depends = xorg-xrandr + depends = xf86-video-vmware + depends = VIRTUALBOX-GUEST-MODULES + conflicts = virtualbox-archlinux-additions + conflicts = virtualbox-guest-additions + conflicts = virtualbox-guest-utils-nox + conflicts = virtualbox-guest-dkms + replaces = virtualbox-archlinux-additions + replaces = virtualbox-guest-additions + replaces = virtualbox-guest-dkms + +pkgname = virtualbox-guest-utils-nox + pkgdesc = VirtualBox Guest userspace utilities without X support + depends = glibc + depends = pam + depends = VIRTUALBOX-GUEST-MODULES + conflicts = virtualbox-guest-utils + conflicts = virtualbox-guest-dkms + replaces = virtualbox-guest-dkms + +pkgname = virtualbox-ext-vnc + pkgdesc = VirtualBox VNC extension pack + install = virtualbox-ext-vnc.install + depends = virtualbox + depends = libvncserver + optdepends = tigervnc: vnc client diff --git a/virtualbox/001-disable-update.patch b/virtualbox/001-disable-update.patch new file mode 100644 index 00000000..a04f368a --- /dev/null +++ b/virtualbox/001-disable-update.patch @@ -0,0 +1,13 @@ +diff --git a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp +index 7a902e83..e19804ed 100644 +--- a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp ++++ b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp +@@ -2420,7 +2420,7 @@ QString UIExtraDataManager::preventBetaBuildWarningForVersion() + bool UIExtraDataManager::applicationUpdateEnabled() + { + /* 'True' unless 'restriction' feature allowed: */ +- return !isFeatureAllowed(GUI_PreventApplicationUpdate); ++ return false; + } + + QString UIExtraDataManager::applicationUpdateData() diff --git a/virtualbox/004-drop-Wno-format.patch b/virtualbox/004-drop-Wno-format.patch new file mode 100644 index 00000000..6dc181ec --- /dev/null +++ b/virtualbox/004-drop-Wno-format.patch @@ -0,0 +1,86 @@ +From c2dc4a940e485a26e1b729e94c5aa710834d1542 Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Tue, 18 Apr 2023 22:59:50 +0200 +Subject: [PATCH 1/1] drop -Wno-format + +--- + src/VBox/Devices/EFI/Firmware/Config.kmk | 2 +- + src/VBox/Devices/Makefile.kmk | 2 +- + src/VBox/Devices/PC/ipxe/Makefile.kmk | 2 +- + src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk | 2 +- + src/VBox/Main/webservice/Makefile.kmk | 3 +-- + 5 files changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/VBox/Devices/EFI/Firmware/Config.kmk b/src/VBox/Devices/EFI/Firmware/Config.kmk +index 5e7dcf91..04f4c854 100644 +--- a/src/VBox/Devices/EFI/Firmware/Config.kmk ++++ b/src/VBox/Devices/EFI/Firmware/Config.kmk +@@ -165,7 +165,7 @@ TEMPLATE_VBoxEfiBldProg_LIBS = \ + ifn1of ($(KBUILD_HOST), win) # This stuff isn't up to our standard at all! :/ + TEMPLATE_VBoxEfiBldProg_CFLAGS = $(filter-out -pedantic,$(TEMPLATE_VBoxBldProg_CFLAGS)) \ + -Wno-sign-compare -Wno-missing-prototypes -Wno-strict-prototypes \ +- -Wno-implicit-function-declaration -Wno-missing-declarations -Wno-shadow -Wno-format \ ++ -Wno-implicit-function-declaration -Wno-missing-declarations -Wno-shadow \ + -Wno-empty-body -Wno-unused-parameter -Wno-unused-variable -Wno-unused-label + TEMPLATE_VBoxEfiBldProg_CXXFLAGS = $(filter-out -pedantic,$(TEMPLATE_VBoxBldProg_CXXFLAGS)) \ + -Wno-all -Wno-shadow -Wno-empty-body -Wno-unused-parameter -Wno-unused-variable \ +diff --git a/src/VBox/Devices/Makefile.kmk b/src/VBox/Devices/Makefile.kmk +index 613ff466..9123b767 100644 +--- a/src/VBox/Devices/Makefile.kmk ++++ b/src/VBox/Devices/Makefile.kmk +@@ -859,7 +859,7 @@ if !defined(VBOX_ONLY_EXTPACKS) && "$(intersects $(KBUILD_TARGET_ARCH),$(VBOX_SU + ifeq ($(KBUILD_TARGET),win) + $(file)_CFLAGS = -wd4018 + else +- $(file)_CFLAGS += -Wno-sign-compare -Wno-format -Wno-bad-function-cast ++ $(file)_CFLAGS += -Wno-sign-compare -Wno-bad-function-cast + endif + endef + +diff --git a/src/VBox/Devices/PC/ipxe/Makefile.kmk b/src/VBox/Devices/PC/ipxe/Makefile.kmk +index 6c95001a..9708145c 100644 +--- a/src/VBox/Devices/PC/ipxe/Makefile.kmk ++++ b/src/VBox/Devices/PC/ipxe/Makefile.kmk +@@ -396,7 +396,7 @@ endif + # + BLDPROGS += ipxezbin + ipxezbin_TEMPLATE = VBoxBldProg +- ipxezbin_CFLAGS = -Wno-format -Wno-unused-function -Wno-pointer-arith ++ ipxezbin_CFLAGS = -Wno-unused-function -Wno-pointer-arith + ipxezbin_SOURCES = src/util/zbin.c + ifdef VBOX_WITH_LIBLZMA + ipxezbin_INCS = $(SDK_VBoxLibLzma_INCS) # Can't use the proper SDK here as link order matters and liblzma depends on our runtime. +diff --git a/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk b/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk +index 394834e5..2f90d86f 100644 +--- a/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk ++++ b/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk +@@ -118,7 +118,7 @@ if defined(VBOX_WITH_EXTPACK_VBOXDTRACE) && defined(VBOX_WITH_EXTPACK) + VBoxDTraceCmd_DEFS.win = YY_USE_PROTOS=1 YYENABLE_NLS=0 YYLTYPE_IS_TRIVIAL=0 + VBoxDTraceCmd_SDKS = VBoxZlib + ifn1of ($(KBUILD_TARGET), win) +- VBoxDTraceCmd_CFLAGS = -Wno-format $(VBOX_GCC_Wno-overlength-strings) -Wno-sign-compare -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-shadow ++ VBoxDTraceCmd_CFLAGS = $(VBOX_GCC_Wno-overlength-strings) -Wno-sign-compare -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-shadow + endif + VBoxDTraceCmd_INCS = \ + include \ +diff --git a/src/VBox/Main/webservice/Makefile.kmk b/src/VBox/Main/webservice/Makefile.kmk +index 84880dcd..f301f9cc 100644 +--- a/src/VBox/Main/webservice/Makefile.kmk ++++ b/src/VBox/Main/webservice/Makefile.kmk +@@ -264,7 +264,7 @@ ifdef VBOX_GSOAP_INSTALLED + ifn1of ($(KBUILD_TARGET), win) + vboxsoap_CXXFLAGS += -Wno-shadow -Wno-parentheses $(VBOX_GCC_Wno-literal-suffix) \ + $(VBOX_GCC_Wno-stringop-overflow) $(VBOX_GCC_Wno-stringop-truncation) \ +- $(VBOX_GCC_Wno-vla) -Wno-format -Wno-deprecated-declarations $(VBOX_GCC_fno-printf-return-value) ++ $(VBOX_GCC_Wno-vla) -Wno-deprecated-declarations $(VBOX_GCC_fno-printf-return-value) + ifn1of ($(KBUILD_TYPE), debug) # Save time+memory by using -O0 instead of -O2. + vboxsoap_CXXFLAGS += -O0 ## @todo this could be interesting for g++ (not clang++): -fcprop-registers + endif +@@ -335,7 +335,6 @@ ifdef VBOX_GSOAP_INSTALLED + $(VBOXWEB_OUT_DIR)/gsoap_copy_all_ts + ifn1of ($(KBUILD_TARGET), win) + $(VBOX_GSOAP_CXX_SOURCES)_CXXFLAGS = \ +- -Wno-format \ + $(VBOX_GCC_Wno-int-in-bool-context) \ + $(VBOX_GCC_Wno-logical-op) + # currently necessary when compiling against OpenSSL 1.0 due to a missing diff --git a/virtualbox/008-no-vboxvideo.patch b/virtualbox/008-no-vboxvideo.patch new file mode 100644 index 00000000..85c659e5 --- /dev/null +++ b/virtualbox/008-no-vboxvideo.patch @@ -0,0 +1,13 @@ +diff --git a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk +index 6f98670d..0a7b7e01 100644 +--- a/src/VBox/Additions/x11/vboxvideo/Makefile.kmk ++++ b/src/VBox/Additions/x11/vboxvideo/Makefile.kmk +@@ -406,7 +406,7 @@ vboxvideo_drv_118_LIBS += $(vboxvideo_drv_70_LIBS) + + ifdef VBOX_USE_SYSTEM_XORG_HEADERS + # Build using local X.Org headers. We assume X.Org Server 1.7 or later. +- DLLS := $(filter-out vboxvideo_drv_%,$(DLLS)) vboxvideo_drv_system ++ DLLS := $(filter-out vboxvideo_drv_%,$(DLLS)) + SYSMODS := $(filter-out vboxvideo_drv%,$(SYSMODS)) + vboxvideo_drv_system_TEMPLATE = VBoxGuestR3XOrgMod + vboxvideo_drv_system_CFLAGS := \ diff --git a/virtualbox/009-properly-handle-i3wm.patch b/virtualbox/009-properly-handle-i3wm.patch new file mode 100644 index 00000000..50999e3d --- /dev/null +++ b/virtualbox/009-properly-handle-i3wm.patch @@ -0,0 +1,75 @@ +From 04cf1e3a266fcc4e65d01b8b492d2c5fbe1bf13d Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Wed, 11 Sep 2024 21:10:09 +0200 +Subject: [PATCH 1/1] properly handle i3wm + +--- + .../VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp | 3 ++- + .../Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.cpp | 3 +++ + src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.h | 3 ++- + src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp | 3 +++ + 4 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp +index e9b78fde..17a1dfc0 100644 +--- a/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp ++++ b/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp +@@ -380,7 +380,8 @@ QRect UIDesktopWidgetWatchdog::availableGeometry(QScreen *pScreen) const + /* Get cached available-geometry: */ + const QRect availableGeometry = m_availableGeometryData.value(screenToIndex(pScreen)); + /* Return cached available-geometry if it's valid or screen-geometry otherwise: */ +- return availableGeometry.isValid() ? availableGeometry : screenGeometry(pScreen); ++ return availableGeometry.isValid() && NativeWindowSubsystem::X11WindowManagerType() != X11WMType_i3 ? ++ availableGeometry : screenGeometry(pScreen); + # endif /* !VBOX_GUI_WITH_CUSTOMIZATIONS1 */ + #else /* !VBOX_WS_NIX */ + /* Just return screen available-geometry: */ +diff --git a/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.cpp b/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.cpp +index ab520e51..f168050d 100644 +--- a/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.cpp ++++ b/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.cpp +@@ -139,6 +139,9 @@ X11WMType NativeWindowSubsystem::X11WindowManagerType() + else + if (QString((const char*)pcData).contains("Xfwm4", Qt::CaseInsensitive)) + wmType = X11WMType_Xfwm4; ++ else ++ if (QString((const char*)pcData).contains("i3", Qt::CaseInsensitive)) ++ wmType = X11WMType_i3; + if (pcData) + XFree(pcData); + } +diff --git a/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.h b/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.h +index e1dfc07f..b1a789e7 100644 +--- a/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.h ++++ b/src/VBox/Frontends/VirtualBox/src/platform/nix/VBoxUtils-nix.h +@@ -51,6 +51,7 @@ enum X11WMType + X11WMType_Metacity, + X11WMType_Mutter, + X11WMType_Xfwm4, ++ X11WMType_i3, + }; + + /** X11: Screen-saver inhibit methods. */ +@@ -104,7 +105,7 @@ namespace NativeWindowSubsystem + /** Wrapper for window manager type functions. */ + X11WMType windowManagerType(bool fIsXServerAvailable); + /** X11: Determines and returns current Window Manager type. */ +- X11WMType X11WindowManagerType(); ++ SHARED_LIBRARY_STUFF X11WMType X11WindowManagerType(); + /** Wayland: Determines and returns current Window Manager type. */ + X11WMType WaylandWindowManagerType(); + +diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp +index 272729a4..6346fb63 100644 +--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp ++++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp +@@ -1076,6 +1076,9 @@ void UIMiniToolBar::prepare() + /* Enable translucency through Qt API if supported: */ + if (uiCommon().isCompositingManagerRunning()) + setAttribute(Qt::WA_TranslucentBackground); ++ ++ if (NativeWindowSubsystem::X11WindowManagerType() == X11WMType_i3) ++ setWindowFlags(Qt::FramelessWindowHint); + #endif /* VBOX_WS_NIX */ + + /* Make sure we have no focus: */ diff --git a/virtualbox/012-vbglR3GuestCtrlDetectPeekGetCancelSupport.patch b/virtualbox/012-vbglR3GuestCtrlDetectPeekGetCancelSupport.patch new file mode 100644 index 00000000..5d805d5f --- /dev/null +++ b/virtualbox/012-vbglR3GuestCtrlDetectPeekGetCancelSupport.patch @@ -0,0 +1,14 @@ +diff --git a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp +index fc29936c..cbf9c478 100644 +--- a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp ++++ b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp +@@ -178,6 +178,9 @@ static int vbglR3GuestCtrlMsgWaitFor(uint32_t idClient, uint32_t *pidMsg, uint32 + */ + DECL_NO_INLINE(static, bool) vbglR3GuestCtrlDetectPeekGetCancelSupport(uint32_t idClient) + { ++ ++ return false; ++ + /* + * Seems we get VINF_SUCCESS back from the host if we try unsupported + * guest control messages, so we need to supply some random message diff --git a/virtualbox/013-support-building-from-dkms.patch b/virtualbox/013-support-building-from-dkms.patch new file mode 100644 index 00000000..e2d0ebd6 --- /dev/null +++ b/virtualbox/013-support-building-from-dkms.patch @@ -0,0 +1,54 @@ +From eb9ded87d9d1a6755f2bb7258641c9c80c54c347 Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Mon, 17 Oct 2022 16:30:32 +0200 +Subject: [PATCH] support building from dkms + +--- + src/VBox/HostDrivers/linux/Makefile | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile +index badeb4f4..314281f3 100644 +--- a/src/VBox/HostDrivers/linux/Makefile ++++ b/src/VBox/HostDrivers/linux/Makefile +@@ -33,25 +33,25 @@ + # SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 + # + +-ifneq ($(KERNELRELEASE),) ++ifneq ($(KBUILD_EXTMOD),) + +-# Building from kBuild (make -C M=`pwd`), +-# or inside a kernel source tree. ++# Building from kBuild (make -C M=`pwd`). ++# KBUILD_EXTMOD is set to $(M) in this case. + + obj-m = vboxdrv/ +- ifneq ($(wildcard $(CURDIR)/vboxnetflt/Makefile),) ++ ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxnetflt/Makefile),) + obj-m += vboxnetflt/ + endif +- ifneq ($(wildcard $(CURDIR)/vboxnetadp/Makefile),) ++ ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxnetadp/Makefile),) + obj-m += vboxnetadp/ + endif +- ifneq ($(wildcard $(CURDIR)/vboxpci/Makefile),) ++ ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxpci/Makefile),) + obj-m += vboxpci/ + endif + +-else # ! KERNELRELEASE ++else # ! KBUILD_EXTMOD + +-# convenience Makefile without KERNELRELEASE ++# convenience Makefile without KBUILD_EXTMOD + + ifndef SUDO + ifneq ($(shell id -u),0) +@@ -244,5 +244,5 @@ load: unload + fi; \ + done + +-endif # ! KERNELRELEASE ++endif # ! KBUILD_EXTMOD + diff --git a/virtualbox/018-upate-xclient-script.patch b/virtualbox/018-upate-xclient-script.patch new file mode 100644 index 00000000..0f044b7a --- /dev/null +++ b/virtualbox/018-upate-xclient-script.patch @@ -0,0 +1,40 @@ +From 866928ba1ad8d62f62bb3abab463740da8a4d07a Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Wed, 11 Sep 2024 21:14:24 +0200 +Subject: [PATCH 1/1] upate xclient script + +--- + .../Additions/x11/Installer/98vboxadd-xclient | 15 +++------------ + 1 file changed, 3 insertions(+), 12 deletions(-) + +diff --git a/src/VBox/Additions/x11/Installer/98vboxadd-xclient b/src/VBox/Additions/x11/Installer/98vboxadd-xclient +index 7a45de98..bcfe024e 100755 +--- a/src/VBox/Additions/x11/Installer/98vboxadd-xclient ++++ b/src/VBox/Additions/x11/Installer/98vboxadd-xclient +@@ -31,17 +31,9 @@ for i in $HOME/.vboxclient-*.pid; do + test -w $i || rm -f $i + done + +-if ! test -c /dev/vboxguest 2>/dev/null; then +- # Do not start if the kernel module is not present. +- # Execute notify-send in the back-ground to avoid racing with sddm, +- # as notify-send may wait for sddm to start while it waits for us to exit. +- notify-send "VBoxClient: the VirtualBox kernel service is not running. Exiting." & +-elif test -z "${SSH_CONNECTION}"; then +- # This script can also be triggered by a connection over SSH, which is not +- # what we had in mind, so we do not start VBoxClient in that case. We do +- # not use "exit" here as this script is "source"d, not executed. +- +- # Check wheather X11 or Wayland version of VBoxClient should be started. ++# Do not start if the kernel module is not present; or if this script is ++# triggered by a connection over SSH. ++if [ -c /dev/vboxguest -a -z "${SSH_CONNECTION}" ]; then + vbox_wl_check=$(/usr/bin/vboxwl --check 2> /dev/null) + if test "$vbox_wl_check" = "WL"; then + /usr/bin/VBoxClient --wayland +@@ -52,5 +44,4 @@ elif test -z "${SSH_CONNECTION}"; then + fi + + /usr/bin/VBoxClient --checkhostversion +- /usr/bin/VBoxClient --vmsvga-session # In case VMSVGA emulation is enabled + fi diff --git a/virtualbox/020-python-3-12.patch b/virtualbox/020-python-3-12.patch new file mode 100644 index 00000000..79b6cac5 --- /dev/null +++ b/virtualbox/020-python-3-12.patch @@ -0,0 +1,13 @@ +diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UPT.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UPT.py +index 693e01e0..35a7c952 100755 +--- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UPT.py ++++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UPT.py +@@ -15,7 +15,7 @@ UPT + # + import locale + import sys +-from imp import reload ++from impportlib import reload + encoding = locale.getdefaultlocale()[1] + if encoding: + reload(sys) diff --git a/virtualbox/021-python-3-13.patch b/virtualbox/021-python-3-13.patch new file mode 100644 index 00000000..36195969 --- /dev/null +++ b/virtualbox/021-python-3-13.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 65791d55..d850efc8 100755 +--- a/configure ++++ b/configure +@@ -2187,7 +2187,7 @@ extern "C" int main(void) + } + EOF + found= +- SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.9 python3.10 python3.11 python3.12" ++ SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.9 python3.10 python3.11 python3.12 python3.13" + for p in $PYTHONDIR; do + for d in $SUPPYTHONLIBS; do + for b in lib/x86_64-linux-gnu lib/i386-linux-gnu lib64 lib/64 lib; do diff --git a/virtualbox/60-vboxdrv.rules b/virtualbox/60-vboxdrv.rules new file mode 100644 index 00000000..919fde4a --- /dev/null +++ b/virtualbox/60-vboxdrv.rules @@ -0,0 +1,8 @@ +KERNEL=="vboxdrv", OWNER="root", GROUP="root", MODE="0600" +KERNEL=="vboxdrvu", OWNER="root", GROUP="root", MODE="0666" +KERNEL=="vboxnetctl", OWNER="root", GROUP="root", MODE="0600" + +SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers" +SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" +SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" diff --git a/virtualbox/60-vboxguest.rules b/virtualbox/60-vboxguest.rules new file mode 100644 index 00000000..6285f724 --- /dev/null +++ b/virtualbox/60-vboxguest.rules @@ -0,0 +1,2 @@ +ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600" +ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666" diff --git a/virtualbox/LocalConfig.kmk b/virtualbox/LocalConfig.kmk new file mode 100644 index 00000000..864147fa --- /dev/null +++ b/virtualbox/LocalConfig.kmk @@ -0,0 +1,41 @@ +# do not build test cases +VBOX_WITH_TESTCASES := +VBOX_WITH_TESTSUITE := +VBOX_WITH_VALIDATIONKIT := + +# no legacy X.org - use system xorg and gl headers +VBOX_USE_SYSTEM_XORG_HEADERS = 1 +VBOX_NO_LEGACY_XORG_X11 = 1 + +# archlinux path +VBOX_WITH_ORIGIN := +VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox +VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox +VBOX_PATH_APP_DOCS := /usr/share/doc/virtualbox +VBOX_PATH_PACKAGE_DOCS := $(VBOX_PATH_APP_DOCS) +VBOX_BLD_PYTHON = python +VBOX_JAVA_HOME = /usr/lib/jvm/java-8-openjdk + +# do not fail on warning +VBOX_GCC_WERR = +VBOX_GCC_WARN = + +# fix gsoap missing zlib include and produce errors with --as-needed +VBOX_GSOAP_CXX_LIBS := gsoapssl++ z + +# no update request. update are handled via pacman +VBOX_WITH_UPDATE_REQUEST := 0 + +# build shared library +VBOX_GUI_WITH_SHARED_LIBRARY = 1 + +# disable experimental cloud infrastructure integration +VBOX_WITH_CLOUD_NET := + +# enable features +VBOX_WITH_UNATTENDED = 1 +VBOX_WITH_VBOX_IMG = 1 +VBOX_WITH_VBOXIMGMOUNT = 1 +VBOX_WITH_VBOXSDL = 1 diff --git a/virtualbox/PKGBUILD b/virtualbox/PKGBUILD new file mode 100644 index 00000000..7325925a --- /dev/null +++ b/virtualbox/PKGBUILD @@ -0,0 +1,363 @@ +# Maintainer: Christian Hesse +# Contributor: Sébastien "Seblu" Luttringer +# Contributor: Ionut Biru + +pkgbase=virtualbox +pkgname=('virtualbox' + 'virtualbox-sdk' + 'virtualbox-host-dkms' + 'virtualbox-guest-utils' + 'virtualbox-guest-utils-nox' + 'virtualbox-ext-vnc') +pkgver=7.1.4 +_tarver=${pkgver} +pkgrel=3 +arch=('x86_64') +url='https://virtualbox.org/' +license=('GPL' 'custom:CDDL') +makedepends=('alsa-lib' + 'cdrkit' + 'curl' + 'device-mapper' + 'git' + 'glu' + 'gsoap' + 'glslang' + 'iasl' + 'jdk8-openjdk' + 'libidl2' + 'liblzf' + 'libpulse' + 'libtpms' + 'libvncserver' + 'libvpx' + 'libxcomposite' + 'libxcursor' + 'libxinerama' + 'libxml2' + 'libxmu' + 'libxrandr' + 'libxslt' + 'libxtst' + 'linux-headers' + 'mesa' + 'python' + 'python-setuptools' + 'qt6-base' + 'qt6-scxml' + 'qt6-tools' + 'sdl' + 'sdl_ttf' + 'vde2' + 'xorgproto' + 'xorg-server-devel' + 'yasm') +source=("https://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${_tarver}.tar.bz2" + 'virtualbox-host-dkms.conf' + 'virtualbox.modprobe' + 'virtualbox.sysusers' + 'virtualbox-guest-utils.sysusers' + '60-vboxdrv.rules' + '60-vboxguest.rules' + 'LocalConfig.kmk' + 'vboxservice.service' + 'vboxservice-nox.service' + 'vboxdrmclient.path' + 'vboxdrmclient.service' + 'vboxweb.service' + 'vboxreload' + '001-disable-update.patch' + '004-drop-Wno-format.patch' + '008-no-vboxvideo.patch' + '009-properly-handle-i3wm.patch' + '012-vbglR3GuestCtrlDetectPeekGetCancelSupport.patch' + '013-support-building-from-dkms.patch' + '018-upate-xclient-script.patch' + '020-python-3-12.patch' + '021-python-3-13.patch') +sha256sums=('872e7a42b41f8558abbf887f1bdc7aac932bb88b2764d07cbce270cab57e3b5e' + '76d98ea062fcad9e5e3fa981d046a6eb12a3e718a296544a68b66f4b65cb56db' + '07fe5c8b313cd7f01505eb9721357269a288ccd0c04e6467afb954038d6f46df' + '2101ebb58233bbfadf3aa74381f22f7e7e508559d2b46387114bc2d8e308554c' + 'da4c49f6ca94e047e196cdbcba2c321199f4760056ea66e0fbc659353e128c9e' + 'f876e9f55243eded423fda4fc2ffe3b174dca90380a6315f7c9b3cd1c9d07206' + '033c597e0f5285d2ddb0490868e5b6f945f45c7b1b1152a02a9e6fea438b2c95' + '476202f87a4a461af6b73a7709e91f868a65ff7306494227e0d7b264fa3f919e' + 'c41a801fe344a4471a7b61a4764d1d857c403e4fb96e2ba6bc89c77a35f2be7a' + '01dbb921bd57a852919cc78be5b73580a564f28ebab2fe8d6c9b8301265cbfce' + '83d8f24bff25bb925083cf39b3195236c6136105e62417712cc3f25b92e14b47' + '2beab8de525220fa418c9873f9e0d657ddbad4ff9e4a46d7053e6cd9bc4ce95e' + 'e6e875ef186578b53106d7f6af48e426cdaf1b4e86834f01696b8ef1c685787f' + '4001b5927348fe669a541e80526d4f9ea91b883805f102f7d571edbb482a9b9d' + '483a043ddfe32c4c5001a8de0a94a0ea884f34d3dbd817b492b9c97fba3ab5e0' + 'ffd30d1d5c41909518571da02c797102d459ba6dec22fe335b4778db264275e1' + 'd0ca7e240b7bc19b4630998d943d095c733cbdb27b343269f2f602a8f1088974' + 'd76b52d955215a72c296aa36d173897bcaa357528bf5a73347c52ccec8654ced' + '8c64b3617e597390dd25cf85c9afac0ebbe369d620349d7f5c8056d834acb6c6' + '00f68b86d32a1fada900c2da8dad2ab4215106cd58004f049bded99727cda2ff' + '73ed7ef243c975227660b9bbe7c576018f2c0216b3a3b5efcc4cc56c44c90914' + 'ddb2092a5a000aa6ef854796f39dcdf86e72c06d53b24bac3835350571182df6' + '70245fc3abafbd3b191d87e2910f0f004050672f2d0d056db029a062e80e73bc') + +prepare() { + cd "VirtualBox-${pkgver}" + + # apply patch from the source array (should be a pacman feature) + local filename + for filename in "${source[@]}"; do + if [[ "${filename}" =~ \.patch$ ]]; then + echo "Applying patch ${filename##*/}" + patch -p1 -N -i "${srcdir}/${filename##*/}" + fi + done + + echo 'Applying local config' + cp "${srcdir}/LocalConfig.kmk" . + + echo 'Use our CFLAGS' + echo "VBOX_GCC_OPT=$CXXFLAGS" >> LocalConfig.kmk +} + +build() { + cd "VirtualBox-${pkgver}" + + echo 'Build virtualbox' + ./configure \ + --disable-docs \ + --disable-kmods \ + --disable-vmmraw \ + --enable-vde \ + --enable-vnc \ + --enable-webservice \ + --with-makeself=/usr/bin/echo + # fake makeself binary to compile without nofatal + # makeself is used by linux installer. we don't need it. + source ./env.sh + kmk + + echo 'Build VNC extension pack' + kmk -C src/VBox/ExtPacks/VNC packing +} + +package_virtualbox() { + pkgdesc='Powerful x86 virtualization for enterprise as well as home use' + depends=('curl' 'gcc-libs' 'glibc' 'liblzf' 'libpng' 'libtpms' 'libvpx' 'libx11' 'libxcursor' + 'libxext' 'libxinerama' 'libxml2' 'libxmu' 'libxt' 'openssl' 'procps-ng' 'python' + 'qt6-base' 'qt6-scxml' 'qt6-tools' 'sdl' 'shared-mime-info' 'zlib' + 'VIRTUALBOX-HOST-MODULES') + optdepends=('vde2: Virtual Distributed Ethernet support' + 'virtualbox-guest-iso: Guest Additions CD image' + 'virtualbox-ext-vnc: VNC server support' + 'virtualbox-sdk: Developer kit') + backup=('etc/vbox/vbox.cfg') + replaces=('virtualbox-ose') + conflicts=('virtualbox-ose') + + source "VirtualBox-${pkgver}/env.sh" + cd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/bin" + + # libraries (and non-PATH executables) + install -d -m0755 "${pkgdir}/usr/lib/virtualbox" + install -m0755 *.so -t "${pkgdir}/usr/lib/virtualbox" + install -m0644 *.r0 VBoxEFI*.fd -t "${pkgdir}/usr/lib/virtualbox" + ## setuid root binaries + install -m4755 VirtualBoxVM VBoxSDL VBoxHeadless VBoxNetAdpCtl VBoxNetDHCP VBoxNetNAT -t "${pkgdir}/usr/lib/virtualbox" + ## other binaries + install -m0755 VirtualBox VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxBalloonCtrl vbox-img vboximg-mount vboxwebsrv webtest -t "${pkgdir}/usr/lib/virtualbox" + + # binaries (in /usr/bin) + install -d -m0755 "${pkgdir}/usr/bin" + install -m0755 VBox.sh "${pkgdir}/usr/bin/VBox" + for i in VirtualBox VirtualBoxVM VBoxManage VBoxSDL VBoxHeadless VBoxBugReport VBoxBalloonCtrl VBoxAutostart vboxwebsrv; do + ln -sf VBox "${pkgdir}/usr/bin/${i}" + ln -sf VBox "${pkgdir}/usr/bin/${i,,}" + done + for i in vbox-img vboximg-mount; do + ln -s ../lib/virtualbox/"${i}" "${pkgdir}/usr/bin/${i}" + done + + # components + install -d -m0755 "${pkgdir}/usr/lib/virtualbox/components" + install -m0755 components/* -t "${pkgdir}/usr/lib/virtualbox/components" + + # extensions packs + ## as virtualbox install itself stuff in this directory, move it to /var and + ## trick it with a symlink + ## FIXME: trick is disabled for now + #install -d -m0755 "${pkgdir}/var/lib/virtualbox/extensions" + #install -d -m0755 "${pkgdir}/usr/share/virtualbox/extensions" + #ln -s ../../../var/lib/virtualbox/extensions "${pkgdir}/usr/lib/virtualbox/ExtensionPacks" + install -d -m0755 "${pkgdir}/usr/lib/virtualbox/ExtensionPacks" + + # languages + install -d -m0755 "${pkgdir}/usr/share/virtualbox/nls" + install -m0755 nls/*.qm -t "${pkgdir}/usr/share/virtualbox/nls" + + # useless scripts + install -m0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "${pkgdir}/usr/share/virtualbox" + + # icons + install -D -m0644 VBox.png "${pkgdir}/usr/share/pixmaps/VBox.png" + + pushd icons >/dev/null + for i in *; do + install -d "${pkgdir}/usr/share/icons/hicolor/${i}/mimetypes" + cp "${i}/"* "${pkgdir}/usr/share/icons/hicolor/${i}/mimetypes" + done + popd >/dev/null + + # desktop + install -D -m0644 virtualbox.desktop "${pkgdir}/usr/share/applications/virtualbox.desktop" + install -D -m0644 virtualbox.xml "${pkgdir}/usr/share/mime/packages/virtualbox.xml" + + # install configuration + install -d -m0755 "${pkgdir}/etc/vbox" + echo 'INSTALL_DIR=/usr/lib/virtualbox' > "${pkgdir}/etc/vbox/vbox.cfg" + + # files for unattended installs + # Is there any better way to do this? + mv 'UnattendedTemplates' "${pkgdir}/usr/share/virtualbox/" + + # back to srcdir + cd "${srcdir}" + + #licence + install -D -m0644 VirtualBox-${pkgver}/COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 VirtualBox-${pkgver}/COPYING.CDDL "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" + + # install systemd stuff + install -D -m0644 60-vboxdrv.rules "${pkgdir}/usr/lib/udev/rules.d/60-vboxdrv.rules" + install -D -m0644 vboxweb.service "${pkgdir}/usr/lib/systemd/system/vboxweb.service" + install -D -m0644 virtualbox.sysusers "${pkgdir}/usr/lib/sysusers.d/virtualbox.conf" + + # install module reloading shortcut (with a symlink with default helper) + install -D -m0755 vboxreload "${pkgdir}/usr/bin" + ln -s vboxreload "${pkgdir}/usr/bin/rcvboxdrv" + + # do not enable KVM virtualization on module load + install -D -m0644 virtualbox.modprobe "${pkgdir}/usr/lib/modprobe.d/virtualbox.conf" +} + +package_virtualbox-sdk() { + pkgdesc='VirtualBox Software Developer Kit (SDK)' + depends=('python') + + install -d -m0755 "${pkgdir}/usr/lib/virtualbox" + + source "VirtualBox-${pkgver}/env.sh" + cd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/bin" + + install -D -m0755 vboxshell.py "${pkgdir}/usr/lib/virtualbox/vboxshell.py" + # python sdk + pushd sdk/installer/python + VBOX_INSTALL_PATH="/usr/lib/virtualbox" python vboxapisetup.py install --root "${pkgdir}" + popd + cp -r sdk "${pkgdir}/usr/lib/virtualbox" + rm -r "${pkgdir}/usr/lib/virtualbox/sdk/installer" + # licence + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING.CDDL" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" +} + +package_virtualbox-host-dkms() { + pkgdesc='VirtualBox Host kernel modules sources' + depends=('dkms' 'gcc' 'make') + replaces=('virtualbox-source' + 'virtualbox-host-source') + conflicts=('virtualbox-source' 'virtualbox-host-source') + provides=('VIRTUALBOX-HOST-MODULES') + + install -d -m0755 "${pkgdir}/usr/src" + source "VirtualBox-${pkgver}/env.sh" + cd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/bin" + cp -r src "${pkgdir}/usr/src/vboxhost-${pkgver}_OSE" + # licence + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING.CDDL" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" + # module loading + local _p="${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + install -D -m0644 /dev/null "${_p}" + printf "vboxdrv\nvboxnetadp\nvboxnetflt\n" > "${_p}" + # starting vbox 5.1, dkms.conf file was dropped + local _p="${pkgdir}/usr/src/vboxhost-${pkgver}_OSE/dkms.conf" + install -D -m0644 "${srcdir}/${pkgname}.conf" "${_p}" + sed -i "s,@VERSION@,${pkgver}," "${_p}" +} + +package_virtualbox-guest-utils() { + pkgdesc='VirtualBox Guest userspace utilities' + depends=('glibc' 'pam' 'libx11' 'libxcomposite' 'libxdamage' 'libxext' + 'libxfixes' 'libxmu' 'libxt' 'xorg-xrandr' 'xf86-video-vmware' + 'VIRTUALBOX-GUEST-MODULES') + replaces=('virtualbox-archlinux-additions' + 'virtualbox-guest-additions' + 'virtualbox-guest-dkms') + conflicts=('virtualbox-archlinux-additions' + 'virtualbox-guest-additions' + 'virtualbox-guest-utils-nox' + 'virtualbox-guest-dkms') + + source "VirtualBox-${pkgver}/env.sh" + pushd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/bin/additions" + install -d "${pkgdir}/usr/bin" + install -m0755 VBoxAudioTest VBoxClient VBoxControl VBoxDRMClient VBoxService vboxwl "${pkgdir}/usr/bin" + install -m0755 -D "${srcdir}"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \ + "${pkgdir}"/usr/bin/VBoxClient-all + install -m0644 -D "${srcdir}"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/vboxclient.desktop \ + "${pkgdir}"/etc/xdg/autostart/vboxclient.desktop + install -m0755 -D pam_vbox.so "${pkgdir}/usr/lib/security/pam_vbox.so" + popd + # systemd stuff + install -D -m0644 60-vboxguest.rules "${pkgdir}/usr/lib/udev/rules.d/60-vboxguest.rules" + install -D -m0644 vboxdrmclient.path "${pkgdir}/usr/lib/systemd/system/vboxdrmclient.path" + install -D -m0644 vboxdrmclient.service "${pkgdir}/usr/lib/systemd/system/vboxdrmclient.service" + install -D -m0644 vboxservice.service "${pkgdir}/usr/lib/systemd/system/vboxservice.service" + install -D -m0644 virtualbox-guest-utils.sysusers "${pkgdir}/usr/lib/sysusers.d/virtualbox-guest-utils.conf" + # licence + install -D -m0644 VirtualBox-${pkgver}/COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 VirtualBox-${pkgver}/COPYING.CDDL "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" +} + +package_virtualbox-guest-utils-nox() { + pkgdesc='VirtualBox Guest userspace utilities without X support' + depends=('glibc' 'pam' 'VIRTUALBOX-GUEST-MODULES') + replaces=('virtualbox-guest-dkms') + conflicts=('virtualbox-guest-utils' + 'virtualbox-guest-dkms') + + source "VirtualBox-${pkgver}/env.sh" + pushd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/bin/additions" + install -d "${pkgdir}/usr/bin" + install -m0755 VBoxControl VBoxService "${pkgdir}/usr/bin" + install -m0755 -D pam_vbox.so "${pkgdir}/usr/lib/security/pam_vbox.so" + popd + # systemd stuff + install -D -m0644 60-vboxguest.rules "${pkgdir}/usr/lib/udev/rules.d/60-vboxguest.rules" + install -D -m0644 vboxservice-nox.service "${pkgdir}/usr/lib/systemd/system/vboxservice.service" + install -D -m0644 virtualbox-guest-utils.sysusers "${pkgdir}/usr/lib/sysusers.d/virtualbox-guest-utils.conf" + # licence + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING.CDDL" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" +} + +package_virtualbox-ext-vnc() { + pkgdesc='VirtualBox VNC extension pack' + depends=('virtualbox' 'libvncserver') + optdepends=('tigervnc: vnc client') + install=virtualbox-ext-vnc.install + + source "VirtualBox-${pkgver}/env.sh" + cd "VirtualBox-${pkgver}/out/linux.${BUILD_PLATFORM_ARCH}/release/packages" + install -D -m0644 VNC-*.vbox-extpack "${pkgdir}/usr/share/virtualbox/extensions/VNC-${pkgver}.vbox-extpack" + # licence + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m0644 "${srcdir}/VirtualBox-${pkgver}/COPYING.CDDL" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.CDDL" +} diff --git a/virtualbox/build.sh b/virtualbox/build.sh new file mode 100755 index 00000000..11c0aac7 --- /dev/null +++ b/virtualbox/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +multilib-build "$@" && extra-i686-build "$@" diff --git a/virtualbox/vboxdrmclient.path b/virtualbox/vboxdrmclient.path new file mode 100644 index 00000000..e1cf64de --- /dev/null +++ b/virtualbox/vboxdrmclient.path @@ -0,0 +1,6 @@ +[Unit] +Description=VirtualBox Guest VMSVGA resize client +ConditionVirtualization=oracle + +[Path] +PathExistsGlob=/dev/dri/renderD* diff --git a/virtualbox/vboxdrmclient.service b/virtualbox/vboxdrmclient.service new file mode 100644 index 00000000..be43d66b --- /dev/null +++ b/virtualbox/vboxdrmclient.service @@ -0,0 +1,7 @@ +[Unit] +Description=VirtualBox Guest VMSVGA resize client +ConditionVirtualization=oracle +ConditionPathExistsGlob=/dev/dri/renderD* + +[Service] +ExecStart=/usr/bin/VBoxDRMClient diff --git a/virtualbox/vboxreload b/virtualbox/vboxreload new file mode 100755 index 00000000..d21aa627 --- /dev/null +++ b/virtualbox/vboxreload @@ -0,0 +1,37 @@ +#!/bin/bash + +# vboxreload: shortcut to reload virtualbox host modules +# +# Copyright © 2016 Sébastien Luttringer +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +(( UID > 0 )) && { echo 'You must be root' >&2; exit 1; } + +modules=(vboxnetadp vboxnetflt vboxdrv) + +echo -n 'Unloading modules: ' +for _m in "${modules[@]}"; do + lsmod|grep -q "$_m" && rmmod "$_m" && echo -n "$_m " +done +echo + +echo -n 'Loading modules: ' +for _m in "${modules[@]}"; do + modprobe "$_m" && echo -n "$_m " +done +echo + +# vim:set ts=2 sw=2 ai et: diff --git a/virtualbox/vboxservice-nox.service b/virtualbox/vboxservice-nox.service new file mode 100644 index 00000000..7204fda1 --- /dev/null +++ b/virtualbox/vboxservice-nox.service @@ -0,0 +1,11 @@ +[Unit] +Description=VirtualBox Guest Service +ConditionVirtualization=oracle + +[Service] +ExecStartPre=-/usr/bin/modprobe vboxguest +ExecStartPre=-/usr/bin/modprobe vboxsf +ExecStart=/usr/bin/VBoxService -f + +[Install] +WantedBy=multi-user.target diff --git a/virtualbox/vboxservice.service b/virtualbox/vboxservice.service new file mode 100644 index 00000000..50749fea --- /dev/null +++ b/virtualbox/vboxservice.service @@ -0,0 +1,13 @@ +[Unit] +Description=VirtualBox Guest Service +ConditionVirtualization=oracle +Wants=vboxdrmclient.path + +[Service] +ExecStartPre=-/usr/bin/modprobe vboxguest +ExecStartPre=-/usr/bin/modprobe vboxvideo +ExecStartPre=-/usr/bin/modprobe vboxsf +ExecStart=/usr/bin/VBoxService -f + +[Install] +WantedBy=multi-user.target diff --git a/virtualbox/vboxweb.service b/virtualbox/vboxweb.service new file mode 100644 index 00000000..30338159 --- /dev/null +++ b/virtualbox/vboxweb.service @@ -0,0 +1,11 @@ +[Unit] +Description=VirtualBox Web Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/vboxweb.pid +ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb.pid --background + +[Install] +WantedBy=multi-user.target diff --git a/virtualbox/virtualbox-ext-vnc.install b/virtualbox/virtualbox-ext-vnc.install new file mode 100644 index 00000000..d0f188a7 --- /dev/null +++ b/virtualbox/virtualbox-ext-vnc.install @@ -0,0 +1,27 @@ +#!/bin/bash + +# arg 1: the new package version +post_install() { + EXTPACK="/usr/share/virtualbox/extensions/VNC-${1%%-*}.vbox-extpack" + ACCEPT="$(bsdtar --to-stdout -xf "${EXTPACK}" ./ExtPack-license.txt | sha256sum | head --bytes=64)" + VBoxManage extpack install "${EXTPACK}" --accept-license="${ACCEPT}" >/dev/null +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + pre_remove "$2" +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install "$1" +} + +# arg 1: the old package version +pre_remove() { + VBoxManage extpack uninstall 'VNC' >/dev/null +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/virtualbox/virtualbox-guest-utils.sysusers b/virtualbox/virtualbox-guest-utils.sysusers new file mode 100644 index 00000000..12453ad8 --- /dev/null +++ b/virtualbox/virtualbox-guest-utils.sysusers @@ -0,0 +1 @@ +g vboxsf 109 - diff --git a/virtualbox/virtualbox-host-dkms.conf b/virtualbox/virtualbox-host-dkms.conf new file mode 100644 index 00000000..403bb39d --- /dev/null +++ b/virtualbox/virtualbox-host-dkms.conf @@ -0,0 +1,31 @@ +## @file +# Linux DKMS config script for the VirtualBox guest kernel modules +# + +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +PACKAGE_NAME="vboxhost" +PACKAGE_VERSION=@VERSION@_OSE +AUTOINSTALL=yes + +BUILT_MODULE_NAME[0]="vboxdrv" +BUILT_MODULE_LOCATION[0]="vboxdrv" +DEST_MODULE_LOCATION[0]="/kernel/misc" + +BUILT_MODULE_NAME[1]="vboxnetflt" +BUILT_MODULE_LOCATION[1]="vboxnetflt" +DEST_MODULE_LOCATION[1]="/kernel/misc" + +BUILT_MODULE_NAME[2]="vboxnetadp" +BUILT_MODULE_LOCATION[2]="vboxnetadp" +DEST_MODULE_LOCATION[2]="/kernel/misc" diff --git a/virtualbox/virtualbox.modprobe b/virtualbox/virtualbox.modprobe new file mode 100644 index 00000000..ad35d24c --- /dev/null +++ b/virtualbox/virtualbox.modprobe @@ -0,0 +1,4 @@ +# Starting with Linux 6.12 the kernel virtual machine (KVM) enables +# virtualization on module load, preventing virtualbox from functioning. +# Disable this behavior... +options kvm enable_virt_at_load=0 diff --git a/virtualbox/virtualbox.sysusers b/virtualbox/virtualbox.sysusers new file mode 100644 index 00000000..4d4caeb2 --- /dev/null +++ b/virtualbox/virtualbox.sysusers @@ -0,0 +1 @@ +g vboxusers 108 -