37 Commits

Author SHA256 Message Date
63efca5304 virtualbox 7.1.14 2025-10-29 00:20:30 +01:00
2b335fdffb Make build recipe sh-compatible
pushd is a bash-ism, out with it.
2025-10-26 19:52:13 +01:00
f8704b4118 Drop old distro logic 2025-10-26 19:52:08 +01:00
070bdf0829 virtualbox 7.1.12 2025-07-25 11:16:45 +02:00
Jiri Slaby
c76e78822d fix 6.16 2025-06-11 09:18:48 +02:00
652f6fa07d virtualbox 7.1.10 2025-06-04 23:40:18 +02:00
Martin Jambor
7e94d2ce18 - Adjust gentoo-C23.patch to fix building the kmp flavor which was
broken by the previous patch by keeping the bool typedef when
  building a kmp. [boo#1242085]
2025-06-03 18:37:28 +02:00
Martin Jambor
55b005b5e1 Fix building with GCC 15 [boo#1242085] 2025-05-27 17:24:09 +02:00
1884bc52cd virtualbox 7.1.8 2025-04-16 16:10:12 +02:00
Jiri Slaby
2fd8480f9b build against kernel 6.15 2025-04-10 08:24:39 +02:00
Jiri Slaby
d15b82c929 add tpxz to LFS files too 2025-04-09 09:30:02 +02:00
99680a1c79 Add logic to do a Python-less build 2025-03-31 13:09:47 +02:00
324117a110 Delete kernel-6-13.patch 2025-03-31 12:44:49 +02:00
1738776d98 virtualbox 7.1.6a 2025-03-28 11:07:32 +01:00
6f94c78476 virtualbox 7.1.6 2025-03-28 10:47:34 +01:00
fad76b07e8 Set +x bit on .sh 2025-03-28 10:45:59 +01:00
Jiri Slaby
4b46adddab Fix for kernel 6.14 2025-03-28 07:47:54 +01:00
c69449fd8a Use specific python version, not python3 2025-02-24 11:53:00 +01:00
26a839baae Update findings for newer-pythons.patch 2025-02-24 11:52:47 +01:00
Jiri Slaby
163ca1c484 Fix for kernel 6.13 (bsc#1235146). 2025-01-21 12:25:44 +01:00
c10cfbdb7c Delete ExecCondition from vboxclient.service
Remove bogus ExecCondition= from vboxclient.service, because
VBoxDRMClient is unconditionally launched by udev hardware rule
anyway if it is not running already. vboxadd-service also starts
DRMClient if the udev rule were not to be present.

References: https://bugzilla.opensuse.org/1234870
2025-01-04 02:43:17 +01:00
84cfb17607 Internally document trigges for vboxclient.service 2025-01-04 02:40:12 +01:00
98fd308b06 Resolve wrong placement of ExecCondition
/usr/lib/systemd/system/vboxclient.service: Unknown key 'ExecCondition' in section [Unit]

References: https://bugzilla.opensuse.org/1234870
2025-01-03 01:37:32 +01:00
46dc19ce6d kvm.enable_virt_at_load=0 modprobe.d file 2024-12-29 23:37:21 +01:00
43167a25af Crunch installation recipe 2024-12-29 23:25:13 +01:00
222866de11 Use POSIX option format for tar calls 2024-12-29 16:49:05 +01:00
c2cd5e2e10 Indent large macro block at start-of-file 2024-12-29 16:48:43 +01:00
86fdbe5dc4 Crunch extraneous comments 2024-12-29 16:48:14 +01:00
2c787c3ad3 Crunch duplicated scriptlets commands 2024-12-29 16:47:35 +01:00
3abb14653c Rectify a bug reference 2024-11-19 21:59:17 +01:00
4c36cc83be Add host-source.patch [boo#1231346] 2024-11-14 17:04:32 +01:00
b439cb0a11 kmp preamble cleanup
Take inspiration from vhba-kmp and add an Enhances line.
Provides: %name-kmp is implicitly added by distro already.
2024-11-14 01:34:41 +01:00
b5ec841bec Use distro-default INSTALL_MOD_DIR 2024-11-14 01:33:58 +01:00
c70a6a7740 virtualbox 7.1.4 2024-10-17 01:53:26 +02:00
e20690747e Edit cxx17.patch for compatibility with the Extension Pack 2024-10-02 15:25:46 +02:00
e025fac446 Set BuildRequire glslang >= 11.5 2024-09-29 14:00:49 +02:00
6315d773bb virtualbox 7.1 2024-09-22 23:21:48 +02:00
20 changed files with 1207 additions and 225 deletions

3
.gitattributes vendored
View File

@@ -15,11 +15,10 @@
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.tpxz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
## Specific LFS patterns
VirtualBox-7.2.4-patched.tpxz filter=lfs diff=lfs merge=lfs -text

BIN
VirtualBox-7.1.14-patched.tpxz LFS Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +0,0 @@
mtime: 1761144152
commit: 1c99f0ba17c8791a10198dbfb03912ae42f5ee31fa2ac3b4f8fc9541af4e9043
url: https://src.opensuse.org/jengelh/virtualbox
revision: master

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f17b0bd95cf189319568dc5d6cd7db8451f610b09f3d5657cf47b73787db893f
size 35696

View File

@@ -1,59 +0,0 @@
References: https://bugzilla.suse.com/1249448
From: Gianfranco Costamagna <locutusofborg@debian.org>
From: Jan Engelhardt <ej@inai.de>
Date: 2025-09-09 12:22:00 +0200
Subject: [PATCH] Fix build with new curl version
References: https://github.com/curl/curl/pull/18054
References: https://bugs.debian.org/1114436
References: https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/commit/dbf9a6ef75380ebd2705df0198c6ac8073d0b4cb#f28811e0ca565091f1d341d90b8ba208319492f5
References: https://bugzilla.suse.com/1249448
curl 8.16 changed CURLPROXY_* definitions from enum{int} to long.
C++ has more rules than C, preventing some implicit conversions
involving enums. Debian patch changed to instead use an explicit
conversion. [-jengelh]
http-curl.cpp: In function int rtHttpUpdateAutomaticProxyDisable(PRTHTTPINTERNAL):
http-curl.cpp:702:27: error: invalid conversion from long int to curl_proxytype [-fpermissive]
702 | pThis->enmProxyType = CURLPROXY_HTTP;
diff --git a/src/VBox/Runtime/generic/http-curl.cpp b/src/VBox/Runtime/generic/http-curl.cpp
index 4cf51049d..a76bf14f8 100644
--- a/src/VBox/Runtime/generic/http-curl.cpp
+++ b/src/VBox/Runtime/generic/http-curl.cpp
@@ -188,7 +188,7 @@ typedef struct RTHTTPINTERNAL
/** Proxy port number (UINT32_MAX if not specified). */
uint32_t uProxyPort;
/** The proxy type (CURLPROXY_HTTP, CURLPROXY_SOCKS5, ++). */
- curl_proxytype enmProxyType;
+ long enmProxyType;
/** Proxy username (RTStrFree). */
char *pszProxyUsername;
/** Proxy password (RTStrFree). */
@@ -591,7 +591,7 @@ RTR3DECL(int) RTHttpUseSystemProxySettings(RTHTTP hHttp)
* @param pszUsername The proxy username, or NULL if none.
* @param pszPassword The proxy password, or NULL if none.
*/
-static int rtHttpUpdateProxyConfig(PRTHTTPINTERNAL pThis, curl_proxytype enmProxyType, const char *pszHost,
+static int rtHttpUpdateProxyConfig(PRTHTTPINTERNAL pThis, long enmProxyType, const char *pszHost,
uint32_t uPort, const char *pszUsername, const char *pszPassword)
{
CURLcode rcCurl;
@@ -871,7 +871,7 @@ static int rtHttpConfigureProxyFromUrl(PRTHTTPINTERNAL pThis, const char *pszPro
char *pszPassword = RTUriParsedAuthorityPassword(pszProxyUrl, &Parsed);
uint32_t uProxyPort = RTUriParsedAuthorityPort(pszProxyUrl, &Parsed);
bool fUnknownProxyType = false;
- curl_proxytype enmProxyType;
+ long enmProxyType;
if (RTUriIsSchemeMatch(pszProxyUrl, "http"))
{
enmProxyType = CURLPROXY_HTTP;
@@ -1352,7 +1352,7 @@ static int rtHttpDarwinTryConfigProxy(PRTHTTPINTERNAL pThis, CFDictionaryRef hDi
* Determine the proxy type (not entirely sure about type == proxy type and
* not scheme/protocol)...
*/
- curl_proxytype enmProxyType = CURLPROXY_HTTP;
+ long enmProxyType = (long)CURLPROXY_HTTP;
uint32_t uDefaultProxyPort = 8080;
if ( CFEqual(hStrProxyType, kCFProxyTypeHTTP)
|| CFEqual(hStrProxyType, kCFProxyTypeHTTPS))

View File

@@ -1,13 +1,8 @@
---
configure | 17 ++++++-----------
src/VBox/Frontends/VBoxSDL/Makefile.kmk | 8 ++++----
2 files changed, 10 insertions(+), 15 deletions(-)
Index: VirtualBox-7.2.0/configure
Index: VirtualBox-7.0.20/configure
===================================================================
--- VirtualBox-7.2.0.orig/configure
+++ VirtualBox-7.2.0/configure
@@ -1150,21 +1150,19 @@ check_sdl()
--- VirtualBox-7.0.20.orig/configure
+++ VirtualBox-7.0.20/configure
@@ -1186,21 +1186,19 @@ check_sdl()
fail
fi
else
@@ -32,7 +27,7 @@ Index: VirtualBox-7.2.0/configure
#undef main
extern "C" int main(int argc, char** argv)
{
@@ -1180,7 +1178,7 @@ extern "C" int main(int argc, char** arg
@@ -1216,7 +1214,7 @@ extern "C" int main(int argc, char** arg
}
EOF
[ -n "$INCSDL" ] && I_INCSDL=`prefix_I "$INCSDL"`
@@ -41,7 +36,7 @@ Index: VirtualBox-7.2.0/configure
if test_execute; then
cnf_append "LIB_SDK_LIBSDL_SDL" "`strip_l "$LIBSDL"`"
cnf_append "SDK_LIBSDL_LIBPATH" "`strip_L "$LIBSDL"`"
@@ -2960,11 +2958,8 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then
@@ -3010,11 +3008,8 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then
[ $WITH_LIBLZMA -eq 1 ] && check_liblzma
[ "$OS" != "darwin" ] && check_png
[ $OSE -eq 0 -a "$OS" = "linux" ] && check_pam
@@ -55,20 +50,20 @@ Index: VirtualBox-7.2.0/configure
[ $WITH_SDL_TTF -eq 1 -a $OSE -eq 0 ] && check_sdl_ttf
[ $WITH_X11 -eq 1 ] && check_x
# TODO check for xcomposite-dev (X11/extensions/Xcomposite.h, additions only)
Index: VirtualBox-7.2.0/src/VBox/Frontends/VBoxSDL/Makefile.kmk
Index: VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/Makefile.kmk
===================================================================
--- VirtualBox-7.2.0.orig/src/VBox/Frontends/VBoxSDL/Makefile.kmk
+++ VirtualBox-7.2.0/src/VBox/Frontends/VBoxSDL/Makefile.kmk
--- VirtualBox-7.0.20.orig/src/VBox/Frontends/VBoxSDL/Makefile.kmk
+++ VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/Makefile.kmk
@@ -51,7 +51,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
PROGRAMS += VBoxSDL
endif
VBoxSDL_TEMPLATE := $(if $(VBOX_WITH_HARDENING),VBoxMainClientDll,VBoxMainClientSignedExe)
VBoxSDL_TEMPLATE := $(if $(VBOX_WITH_HARDENING),VBoxMainClientDll,VBoxMainClientExe)
- VBoxSDL_SDKS = LIBSDL2
+ VBoxSDL_SDKS = LIBSDL
VBoxSDL_SOURCES = \
VBoxSDL.cpp \
Framebuffer.cpp \
@@ -78,7 +78,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
@@ -81,7 +81,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
endif
ifn1of ($(KBUILD_TARGET), solaris) # Probably wrong with SDL2
VBoxSDL_LIBS = \
@@ -77,7 +72,7 @@ Index: VirtualBox-7.2.0/src/VBox/Frontends/VBoxSDL/Makefile.kmk
endif
if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
VBoxSDL_LIBS += \
@@ -116,7 +116,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
@@ -121,7 +121,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
if 0
PROGRAMS += tstSDL
tstSDL_TEMPLATE = VBoxR3TstExe
@@ -86,7 +81,7 @@ Index: VirtualBox-7.2.0/src/VBox/Frontends/VBoxSDL/Makefile.kmk
tstSDL_INST = $(INST_TESTCASE)
tstSDL_SOURCES = \
VBoxSDLTest.cpp
@@ -131,7 +131,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
@@ -138,7 +138,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
$(LIB_RUNTIME)
ifn1of ($(KBUILD_TARGET), solaris)
tstSDL_LIBS += \

7
fix_usb_rules.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
# script to disable USB passthru in /etc/udev/rules.d/60-vboxdrv.rules
# if already disabled, clear the comment character
sed -i 's/#SUBSYSTEM==\"usb/SUBSYSTEM==\"usb/' /usr/lib/udev/rules.d/60-vboxdrv.rules
# now comment the usb lines
sed -i 's/SUBSYSTEM==\"usb/#SUBSYSTEM==\"usb/' /usr/lib/udev/rules.d/60-vboxdrv.rules

64
update-extpack.sh Executable file
View File

@@ -0,0 +1,64 @@
#!/bin/bash
# Script to update extpack
# The idea for this method and the original code came from Larry Len Rainey.
#
# This implementation by Larry Finger
# Define some symbols and determine the current version of VB
VBOXMANAGE=/usr/bin/VBoxManage
AWK=/usr/bin/awk
GREP=/usr/bin/grep
WGET=/usr/bin/wget
VBOX_VERSION=`$VBOXMANAGE --version | $AWK -F_ {'print $1'}`
# Define a symbol for the name of the extpack matching the VB version
VBOX_EXT=`echo Oracle_VM_VirtualBox_Extension_Pack-${VBOX_VERSION}.vbox-extpack`
# Full path to extpack license file
LICENSE_PATH="/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/ExtPack-license.rtf"
# Determine the installed version of extpack, if any.
EXTPACK_CURRENT=`$VBOXMANAGE list extpacks | $GREP -A1 "Oracle VM VirtualBox Extension Pack" | $GREP Version | $AWK -F\ {'print $2'}`
# The extpacks are licensed under a Personal Use and Evaluation License
# At some point, the user must agree to the conditions of that license.
# If no extpack is installed on this system, then there is no agreement,
# thus this script cannot install the extpack.
#
# This situation applies to new installations that could conform to the license,
# but more importantly, it handles commercial setups that have not purchased
# the necessary license.
# Check if extpack is currently installed. If not exit
if [ -z $EXTPACK_CURRENT ]; then
exit 0
fi
#
# An extpack has been installed on this system. Now we need to check if
# it was issued under the current version of the license.
#Note to maintainers: The "version 11" in the next command must be changed
# manually when Oracle revises the license.
LICENSE_CHECK=`$GREP "version 11" $LICENSE_PATH | $AWK -F\ {'print $2'}`
if [ -z $LICENSE_CHECK ]; then
# New license version does not match the current installation.
# The user will need to agree to the new version, thus we do nothing here.
exit 0
fi
if [ $VBOX_VERSION == $EXTPACK_CURRENT ]; then
# The extpack currently installed matches - we are done
exit 0
fi
# A new version of extpack is needed - switch to directory that can be written, and download it
pushd ~ > /dev/null 2>&1
$WGET https://download.virtualbox.org/virtualbox/$VBOX_VERSION/$VBOX_EXT > /dev/null 2>&1
# Now install it
echo Y | $VBOXMANAGE extpack install --replace $VBOX_EXT > /dev/null 2>&1
# Clean up by deleting downloaded file and restoring the original working directory
rm -f $VBOX_EXT
popd ~ > /dev/null 2>&1

View File

@@ -1,25 +1,19 @@
---
src/apps/Makefile.kmk | 2
src/apps/VBoxPermissionMessage/Makefile.kmk | 32 +++++++++++++++
src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp | 12 +++++
3 files changed, 46 insertions(+)
Index: VirtualBox-7.2.0/src/apps/Makefile.kmk
Index: VirtualBox-7.0.20/src/apps/Makefile.kmk
===================================================================
--- VirtualBox-7.2.0.orig/src/apps/Makefile.kmk
+++ VirtualBox-7.2.0/src/apps/Makefile.kmk
@@ -33,5 +33,7 @@ ifneq ($(KBUILD_TARGET),win)
include $(PATH_SUB_CURRENT)/svn2git-vbox/Makefile.kmk
endif
--- VirtualBox-7.0.20.orig/src/apps/Makefile.kmk
+++ VirtualBox-7.0.20/src/apps/Makefile.kmk
@@ -28,5 +28,7 @@
SUB_DEPTH = ../..
include $(KBUILD_PATH)/subheader.kmk
+include $(PATH_SUB_CURRENT)/VBoxPermissionMessage/Makefile.kmk
+
include $(FILE_KBUILD_SUB_FOOTER)
Index: VirtualBox-7.2.0/src/apps/VBoxPermissionMessage/Makefile.kmk
Index: VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/Makefile.kmk
===================================================================
--- /dev/null
+++ VirtualBox-7.2.0/src/apps/VBoxPermissionMessage/Makefile.kmk
+++ VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/Makefile.kmk
@@ -0,0 +1,32 @@
+# $Id: Makefile.kmk 28800 2010-04-27 08:22:32Z vboxsync $
+## @file
@@ -53,10 +47,10 @@ Index: VirtualBox-7.2.0/src/apps/VBoxPermissionMessage/Makefile.kmk
+
+include $(KBUILD_PATH)/subfooter.kmk
+
Index: VirtualBox-7.2.0/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
Index: VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
===================================================================
--- /dev/null
+++ VirtualBox-7.2.0/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
+++ VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
@@ -0,0 +1,12 @@
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QMessageBox>

174
vboxautostart-service.sh Executable file
View File

@@ -0,0 +1,174 @@
#!/bin/sh
# $Id: vboxautostart-service.sh 143795 2021-04-15 11:42:37Z vgalitsy $
## @file
# VirtualBox autostart service init script.
#
#
# Copyright (C) 2012-2020 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.
#
# chkconfig: 345 35 65
# description: VirtualBox autostart service
#
### BEGIN INIT INFO
# Provides: vboxautostart-service
# Required-Start: vboxdrv
# Required-Stop: vboxdrv
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: VirtualBox autostart service
### END INIT INFO
PATH=$PATH:/bin:/sbin:/usr/sbin
SCRIPTNAME=vboxautostart-service.sh
[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
if [ -n "$INSTALL_DIR" ]; then
binary="$INSTALL_DIR/VBoxAutostart"
else
binary="/usr/lib/virtualbox/VBoxAutostart"
fi
# silently exit if the package was uninstalled but not purged,
# applies to Debian packages only (but shouldn't hurt elsewhere)
[ ! -f /etc/debian_release -o -x $binary ] || exit 0
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
# Preamble for Gentoo
if [ "`which $0`" = "/sbin/rc" ]; then
shift
fi
begin_msg()
{
test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
logger -t "${SCRIPTNAME}" "${1}."
}
succ_msg()
{
logger -t "${SCRIPTNAME}" "${1}."
}
fail_msg()
{
echo "${SCRIPTNAME}: failed: ${1}." >&2
logger -t "${SCRIPTNAME}" "failed: ${1}."
}
start_daemon() {
usr="$1"
shift
su - $usr -c "$*"
}
if which start-stop-daemon >/dev/null 2>&1; then
start_daemon() {
usr="$1"
shift
bin="$1"
shift
start-stop-daemon --chuid $usr --start --exec $bin -- $@
}
fi
vboxdrvrunning() {
lsmod | grep -q "vboxdrv[^_-]"
}
valid_db_entry() {
entry="$1"
[ -z "$entry" ] && return 1
user="$2"
[ -z "$user" ] && return 1
user_name=$(id -n -u "$user" 2>/dev/null)
[ -z "$user_name" ] && return 1
user_id=$(id -u "$user" 2>/dev/null)
# Verify that @user identifies a user *by name* (i.e. not a numeric id).
# Careful, all numeric user names are legal.
if [ "$user_id" = "$user" ] && [ "$user_name" != "$user" ]; then
return 1
fi
# Verify whether file name is the same as file owner name.
[ -z "$(find "$entry" -user "$user" -type f 2>/dev/null)" ] && return 1
return 0
}
start() {
[ -z "$VBOXAUTOSTART_DB" ] && exit 0
[ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
begin_msg "Starting VirtualBox VMs configured for autostart" console;
vboxdrvrunning || {
fail_msg "VirtualBox kernel module not loaded!"
exit 0
}
PARAMS="--background --start --config $VBOXAUTOSTART_CONFIG"
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
for entry in "$VBOXAUTOSTART_DB"/*.start
do
user=$(basename "$entry" .start)
[ "$user" = "*" ] && break
valid_db_entry "$entry" "$user" || continue
start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
done
return $RETVAL
}
stop() {
[ -z "$VBOXAUTOSTART_DB" ] && exit 0
[ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
for entry in "$VBOXAUTOSTART_DB"/*.stop
do
user=$(basename "$entry" .stop)
[ "$user" = "*" ] && break
valid_db_entry "$entry" "$user" || continue
start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
done
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit $RETVAL

60
vboxconfig.sh Executable file
View File

@@ -0,0 +1,60 @@
#!/bin/bash
#
# Script to build VirtualBox host kernel modules
# Copyright C 2017 by Larry Finger
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/virtualbox/src"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxdrv module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxdrv)
if [ -n "$loaded" ] ; then
echo "Kernel modules are loaded, unload them via"
echo "systemctl stop vboxdrv.service if you wish to rebuild them."
echo "Quitting .."
exit 1
fi
#
# Check if virtualbox-host-source is installed, quit if not
if ! rpm -qf "$SOURCE/Makefile" &>/dev/null ; then
echo "Sources for building host modules are not present,"
echo "Use 'sudo zypper install virtualbox-host-source kernel-devel kernel-default-devel' to install them. Quitting .."
exit 1
fi
#
# Check if virtualbox-host-source version matches virtualbox version
if [ "$(rpm -q virtualbox virtualbox-host-source --queryformat='%{version}-%{release}\n' 2>/dev/null | sort -u | wc -l)" -ne "1" ] ; then
echo "virtualbox-host-source package version doesn't match the version of virtualbox package."
echo "This situation is probably not fatal, thus we will try to continue .."
fi
# Prerequisites are available, start build
pushd $SOURCE > /dev/null 2>&1
echo "Building kernel modules..."
make clean &>/dev/null
make > $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
echo ""
echo "Build of VirtualBox host kernel modules failed."
echo "Look at $LOGFILE to find reasons."
popd > /dev/null 2>&1
exit 1
else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
echo ""
echo "Installation of VirtualBox host kernel modules failed."
echo "Look at $LOGFILE to find reasons."
popd > /dev/null 2>&1
exit 1
fi
depmod -a
modprobe -av vboxnetflt vboxnetadp
popd > /dev/null 2>&1
echo "Kernel modules are installed and loaded."
exit 0

375
vboxdrv.sh Executable file
View File

@@ -0,0 +1,375 @@
#! /bin/sh
# Oracle VM VirtualBox
# Linux kernel module init script
#
# 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.
#
# chkconfig: 345 20 80
# description: VirtualBox Linux kernel module
#
### BEGIN INIT INFO
# Provides: vboxdrv
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Short-Description: VirtualBox Linux module
# Description: VirtualBox Linux kernel module
### END INIT INFO
PATH=/usr/sbin:/usr/bin:$PATH
DEVICE=/dev/vboxdrv
LOG="/var/log/vbox-install.log"
MODPROBE=/usr/sbin/modprobe
SCRIPTNAME=vboxdrv.sh
INSTALL_DIR=/usr/lib/virtualbox
# The below is GNU-specific. See VBox.sh for the longer Solaris/OS X version.
TARGET=`readlink -e -- "${0}"` || exit 1
SCRIPT_DIR="${TARGET%/[!/]*}"
if $MODPROBE -c | grep -q '^allow_unsupported_modules *0'; then
MODPROBE="$MODPROBE --allow-unsupported-modules"
fi
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
export BUILD_TYPE
export USERNAME
export USER=$USERNAME
VIRTUALBOX="${INSTALL_DIR}/VirtualBox"
VBOXMANAGE="${INSTALL_DIR}/VBoxManage"
BUILDINTMP="${MODULE_SRC}/build_in_tmp"
if test -u "${VBOXMANAGE}"; then
GROUP=root
DEVICE_MODE=0600
else
GROUP=vboxusers
DEVICE_MODE=0660
fi
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
begin_msg()
{
test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
logger -t "${SCRIPTNAME}" "${1}."
}
succ_msg()
{
logger -t "${SCRIPTNAME}" "${1}."
}
fail_msg()
{
echo "${SCRIPTNAME}: failed: ${1}." >&2
logger -t "${SCRIPTNAME}" "failed: ${1}."
}
failure()
{
fail_msg "$1"
exit 1
}
running()
{
lsmod | grep -q "$1[^_-]"
}
## Output the vboxdrv part of our udev rule. This is redirected to the right file.
udev_write_vboxdrv() {
VBOXDRV_GRP="$1"
VBOXDRV_MODE="$2"
echo "KERNEL==\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
echo "KERNEL==\"vboxdrvu\", NAME=\"vboxdrvu\", OWNER=\"root\", GROUP=\"$VBOXDRV_GRP\", MODE=\"0660\""
echo "KERNEL==\"vboxnetctl\", NAME=\"vboxnetctl\", OWNER=\"root\", GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
}
## Output the USB part of our udev rule. This is redirected to the right file.
udev_write_usb() {
INSTALLATION_DIR="$1"
USB_GROUP="$2"
echo "SUBSYSTEM==\"usb_device\", ACTION==\"add\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor \$attr{bDeviceClass}${USB_GROUP}\""
echo "SUBSYSTEM==\"usb\", ACTION==\"add\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor \$attr{bDeviceClass}${USB_GROUP}\""
echo "SUBSYSTEM==\"usb_device\", ACTION==\"remove\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
echo "SUBSYSTEM==\"usb\", ACTION==\"remove\", ENV{DEVTYPE}==\"usb_device\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
}
## Generate our udev rule file. This takes a change in udev rule syntax in
## version 55 into account. It only creates rules for USB for udev versions
## recent enough to support USB device nodes.
generate_udev_rule() {
VBOXDRV_GRP="$1" # The group owning the vboxdrv device
VBOXDRV_MODE="$2" # The access mode for the vboxdrv device
INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
USB_GROUP="$4" # The group that has permission to access USB devices
NO_INSTALL="$5" # Set this to "1" to remove but not re-install rules
# Extra space!
case "$USB_GROUP" in ?*) USB_GROUP=" $USB_GROUP" ;; esac
case "$NO_INSTALL" in "1") return ;; esac
udev_write_vboxdrv "$VBOXDRV_GRP" "$VBOXDRV_MODE"
udev_write_usb "$INSTALLATION_DIR" "$USB_GROUP"
}
## Install udev rule (disable with INSTALL_NO_UDEV=1 in
## /etc/default/virtualbox).
install_udev() {
VBOXDRV_GRP="$1" # The group owning the vboxdrv device
VBOXDRV_MODE="$2" # The access mode for the vboxdrv device
INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
USB_GROUP="$4" # The group that has permission to access USB devices
NO_INSTALL="$5" # Set this to "1" to remove but not re-install rules
if test -d /etc/udev/rules.d; then
generate_udev_rule "$VBOXDRV_GRP" "$VBOXDRV_MODE" "$INSTALLATION_DIR" \
"$USB_GROUP" "$NO_INSTALL"
fi
# Remove old udev description file
rm -f /etc/udev/rules.d/10-vboxdrv.rules 2> /dev/null
}
## Create a usb device node for a given sysfs path to a USB device.
install_create_usb_node_for_sysfs() {
path="$1" # sysfs path for the device
usb_createnode="$2" # Path to the USB device node creation script
usb_group="$3" # The group to give ownership of the node to
if test -r "${path}/dev"; then
dev="`cat "${path}/dev" 2> /dev/null`"
major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
class="`cat ${path}/bDeviceClass 2> /dev/null`"
sh "${usb_createnode}" "$major" "$minor" "$class" \
"${usb_group}" 2>/dev/null
fi
}
udev_rule_file=/etc/udev/rules.d/60-vboxdrv.rules
sysfs_usb_devices="/sys/bus/usb/devices/*"
## Install udev rules and create device nodes for usb access
setup_usb() {
VBOXDRV_GRP="$1" # The group that should own /dev/vboxdrv
VBOXDRV_MODE="$2" # The mode to be used for /dev/vboxdrv
INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
USB_GROUP="$4" # The group that should own the /dev/vboxusb device
# nodes unless INSTALL_NO_GROUP=1 in
# /etc/default/virtualbox. Optional.
usb_createnode="$INSTALLATION_DIR/VBoxCreateUSBNode.sh"
# install udev rule (disable with INSTALL_NO_UDEV=1 in
# /etc/default/virtualbox)
if [ "$INSTALL_NO_GROUP" != "1" ]; then
usb_group=$USB_GROUP
vboxdrv_group=$VBOXDRV_GRP
else
usb_group=root
vboxdrv_group=root
fi
install_udev "${vboxdrv_group}" "$VBOXDRV_MODE" \
"$INSTALLATION_DIR" "${usb_group}" \
"$INSTALL_NO_UDEV" > ${udev_rule_file}
# Build our device tree
for i in ${sysfs_usb_devices}; do # This line intentionally without quotes.
install_create_usb_node_for_sysfs "$i" "${usb_createnode}" \
"${usb_group}"
done
}
cleanup_usb()
{
# Remove udev description file
rm -f /etc/udev/rules.d/60-vboxdrv.rules
rm -f /etc/udev/rules.d/10-vboxdrv.rules
# Remove our USB device tree
rm -rf /dev/vboxusb
}
start_drv()
{
begin_msg "Starting VirtualBox services" console
if [ -d /proc/xen ]; then
failure "Running VirtualBox in a Xen environment is not supported"
fi
if ! running vboxdrv; then
if ! rm -f $DEVICE; then
failure "Cannot remove $DEVICE"
fi
if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
/usr/sbin/vboxconfig
if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why"
fi
fi
sleep .2
fi
# ensure the character special exists
if [ ! -c $DEVICE ]; then
MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/devices`
if [ ! -z "$MAJOR" ]; then
MINOR=0
else
MINOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/extra`
if [ ! -z "$MINOR" ]; then
MAJOR=10
fi
fi
if [ -z "$MAJOR" ]; then
rmmod vboxdrv 2>/dev/null
failure "Cannot locate the VirtualBox device"
fi
if ! mknod -m 0660 $DEVICE c $MAJOR $MINOR 2>/dev/null; then
rmmod vboxdrv 2>/dev/null
failure "Cannot create device $DEVICE with major $MAJOR and minor $MINOR"
fi
fi
# ensure permissions
if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out why"
fi
if ! $MODPROBE vboxnetadp > /dev/null 2>&1; then
failure "modprobe vboxnetadp failed. Please use 'dmesg' to find out why"
fi
# Create the /dev/vboxusb directory if the host supports that method
# of USB access. The USB code checks for the existance of that path.
if grep -q usb_device /proc/devices; then
mkdir -p -m 0750 /dev/vboxusb 2>/dev/null
chown root:vboxusers /dev/vboxusb 2>/dev/null
fi
succ_msg "VirtualBox services started"
}
stop_drv()
{
begin_msg "Stopping VirtualBox services" console
if running vboxnetadp; then
if ! rmmod vboxnetadp 2>/dev/null; then
failure "Cannot unload module vboxnetadp"
fi
fi
if running vboxdrv; then
if running vboxnetflt; then
if ! rmmod vboxnetflt 2>/dev/null; then
failure "Cannot unload module vboxnetflt"
fi
fi
if ! rmmod vboxdrv 2>/dev/null; then
failure "Cannot unload module vboxdrv"
fi
if ! rm -f $DEVICE; then
failure "Cannot unlink $DEVICE"
fi
fi
succ_msg "VirtualBox services stopped"
}
cleanup_vb()
{
for i in /lib/modules/*; do
# We could just do "rm -f", but we only want to try deleting folders if
# we are sure they were ours, i.e. they had our modules in beforehand.
if test -e "${i}/extra/vboxdrv.ko" \
|| test -e "${i}/extra/vboxnetadp.ko" \
|| test -e "${i}/extra/vboxnetflt.ko"; then
rm -f "${i}/extra/vboxdrv.ko" "${i}/extra/vboxnetadp.ko" \
"${i}/extra/vboxnetflt.ko"
# Remove the kernel version folder if it was empty except for us.
test "`echo ${i}/extra/* ${i}/extra/.?* ${i}/* ${i}/.?*`" \
= "${i}/extra/* ${i}/extra/.. ${i}/extra ${i}/.." &&
rmdir "${i}/extra" "${i}" # We used to leave empty folders.
version=`expr "${i}" : "/lib/modules/\(.*\)"`
depmod -a "${version}"
fi
done
}
# setup_script
setup_vb()
{
# Try to build the host kernel modules in case prepackaging has failed
/usr/sbin/vboxconfig
}
dmnstatus()
{
if running vboxdrv; then
str="vboxdrv"
if running vboxnetflt; then
str="$str, vboxnetflt"
if running vboxnetadp; then
str="$str, vboxnetadp"
fi
fi
echo "VirtualBox kernel modules ($str) are loaded."
for i in $SHUTDOWN_USERS; do
# don't create the ipcd directory with wrong permissions!
if [ -d /tmp/.vbox-$i-ipc ]; then
export VBOX_IPC_SOCKETID="$i"
VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
if [ -n "$VMS" ]; then
echo "The following VMs are currently running:"
for v in $VMS; do
echo " $v"
done
fi
fi
done
else
echo "VirtualBox kernel module is not loaded."
fi
}
case "$1" in
start)
start_drv
;;
stop)
stop_drv
;;
restart)
"$0" stop && "$0" start
;;
setup)
# Create udev rule and USB device nodes.
## todo Wouldn't it make more sense to install the rule to /lib/udev? This
## is not a user-created configuration file after all.
## todo Do we need a udev rule to create /dev/vboxdrv[u] at all? We have
## working fall-back code here anyway, and the "right" code is more complex
## than the fall-back. Unnecessary duplication?
stop_drv && cleanup_vb
setup_usb "$GROUP" "$DEVICE_MODE" "$INSTALL_DIR"
setup_vb && start_drv
;;
cleanup)
stop_drv && cleanup_vb
cleanup_usb
;;
force-reload)
"$0" stop
"$0" start
;;
status)
dmnstatus
;;
*)
echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status}"
exit 1
esac
exit 0

62
vboxguestconfig.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/bash
#
# Script to build VirtualBox guest kernel modules
# Copyright C 2017 by Larry Finger
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxguest module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxguest)
if [ -n "$loaded" ] ; then
echo "Kernel modules available. but we will continue..."
fi
#
# Check if virtualbox-guest-source is installed, quit if not
if ! rpm -qf "$SOURCE/additions/guest_src.tar.bz2" &>/dev/null ; then
echo "Sources for building guest modules are not present,"
echo "Use 'sudo zypper install virtualbox-guest-source' to install them. Quitting .."
exit 1
fi
# unpack source
pushd $SOURCE > /dev/null 2>&1
tar jxf additions/guest_src.tar.bz2 > /dev/null 2>&1
popd > /dev/null 2>&1
#
# Check if virtualbox-guest-source version matches virtualbox version
if [ "$(rpm -q virtualbox virtualbox-guest-source --queryformat='%{version}-%{release}\n' 2>/dev/null | sort -u | wc -l)" -ne "1" ] ; then
echo "virtualbox-guest-source package version doesn't match the version of virtualbox package."
echo "This situation is probably not fatal, thus we will try to continue .."
fi
# Prerequisites are available, start build
pushd $SOURCE/additions/src > /dev/null 2>&1
echo "Building kernel modules..."
make > $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
echo ""
echo "Build of VirtualBox guest kernel modules failed."
echo "Look at $LOGFILE to find reasons."
popd > /dev/null 2>&1
exit 1
else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
echo ""
echo "Installation of VirtualBox guest kernel modules failed."
echo "Look at $LOGFILE to find reasons."
popd > /dev/null 2>&1
exit 1
fi
depmod -a
modprobe -av vboxguest vboxvideo
cd ../..
rm -rf additions
popd > /dev/null 2>&1
echo "Kernel modules are installed and loaded."
exit 0

229
vboxweb-service.sh Executable file
View File

@@ -0,0 +1,229 @@
#!/bin/sh
# $Id: vboxweb-service.sh 127855 2019-01-01 01:45:53Z bird $
## @file
# VirtualBox web service API daemon init script.
#
#
# Copyright (C) 2006-2019 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.
#
# chkconfig: 345 35 65
# description: VirtualBox web service API
#
### BEGIN INIT INFO
# Provides: vboxweb-service
# Required-Start: vboxdrv
# Required-Stop: vboxdrv
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: VirtualBox web service API
### END INIT INFO
PATH=$PATH:/bin:/sbin:/usr/sbin
SCRIPTNAME=vboxweb-service.sh
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
if [ -n "$INSTALL_DIR" ]; then
binary="$INSTALL_DIR/vboxwebsrv"
vboxmanage="$INSTALL_DIR/VBoxManage"
else
binary="/usr/lib/virtualbox/vboxwebsrv"
vboxmanage="/usr/lib/virtualbox/VBoxManage"
fi
# silently exit if the package was uninstalled but not purged,
# applies to Debian packages only (but shouldn't hurt elsewhere)
[ ! -f /etc/debian_release -o -x $binary ] || exit 0
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
PIDFILE="/var/run/${SCRIPTNAME}"
# Preamble for Gentoo
if [ "`which $0`" = "/sbin/rc" ]; then
shift
fi
begin_msg()
{
test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
logger -t "${SCRIPTNAME}" "${1}."
}
succ_msg()
{
logger -t "${SCRIPTNAME}" "${1}."
}
fail_msg()
{
echo "${SCRIPTNAME}: failed: ${1}." >&2
logger -t "${SCRIPTNAME}" "failed: ${1}."
}
start_daemon() {
usr="$1"
shift
su - $usr -c "$*"
}
killproc() {
killall $1
rm -f $PIDFILE
}
if which start-stop-daemon >/dev/null 2>&1; then
start_daemon() {
usr="$1"
shift
bin="$1"
shift
start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
}
killproc() {
start-stop-daemon --stop --exec $@
}
fi
vboxdrvrunning() {
lsmod | grep vboxdrv
}
check_single_user() {
if [ -n "$2" ]; then
fail_msg "VBOXWEB_USER must not contain multiple users!"
exit 1
fi
}
start() {
if ! test -f $PIDFILE; then
[ -z "$VBOXWEB_USER" ] && exit 0
begin_msg "Starting VirtualBox web service" console;
check_single_user $VBOXWEB_USER
temp=$(lsmod | grep vboxdrv)
echo $temp
if [ -z "$temp" ]; then
fail_msg "VirtualBox kernel module not loaded!"
exit 1
fi
PARAMS="--background"
[ -n "$VBOXWEB_HOST" ] && PARAMS="$PARAMS -H $VBOXWEB_HOST"
[ -n "$VBOXWEB_PORT" ] && PARAMS="$PARAMS -p $VBOXWEB_PORT"
[ -n "$VBOXWEB_SSL_KEYFILE" ] && PARAMS="$PARAMS -s -K $VBOXWEB_SSL_KEYFILE"
[ -n "$VBOXWEB_SSL_PASSWORDFILE" ] && PARAMS="$PARAMS -a $VBOXWEB_SSL_PASSWORDFILE"
[ -n "$VBOXWEB_SSL_CACERT" ] && PARAMS="$PARAMS -c $VBOXWEB_SSL_CACERT"
[ -n "$VBOXWEB_SSL_CAPATH" ] && PARAMS="$PARAMS -C $VBOXWEB_SSL_CAPATH"
[ -n "$VBOXWEB_SSL_DHFILE" ] && PARAMS="$PARAMS -D $VBOXWEB_SSL_DHFILE"
[ -n "$VBOXWEB_SSL_RANDFILE" ] && PARAMS="$PARAMS -r $VBOXWEB_SSL_RANDFILE"
[ -n "$VBOXWEB_TIMEOUT" ] && PARAMS="$PARAMS -t $VBOXWEB_TIMEOUT"
[ -n "$VBOXWEB_CHECK_INTERVAL" ] && PARAMS="$PARAMS -i $VBOXWEB_CHECK_INTERVAL"
[ -n "$VBOXWEB_THREADS" ] && PARAMS="$PARAMS -T $VBOXWEB_THREADS"
[ -n "$VBOXWEB_KEEPALIVE" ] && PARAMS="$PARAMS -k $VBOXWEB_KEEPALIVE"
[ -n "$VBOXWEB_AUTHENTICATION" ] && PARAMS="$PARAMS -A $VBOXWEB_AUTHENTICATION"
[ -n "$VBOXWEB_LOGFILE" ] && PARAMS="$PARAMS -F $VBOXWEB_LOGFILE"
[ -n "$VBOXWEB_ROTATE" ] && PARAMS="$PARAMS -R $VBOXWEB_ROTATE"
[ -n "$VBOXWEB_LOGSIZE" ] && PARAMS="$PARAMS -S $VBOXWEB_LOGSIZE"
[ -n "$VBOXWEB_LOGINTERVAL" ] && PARAMS="$PARAMS -I $VBOXWEB_LOGINTERVAL"
# set authentication method + password hash
if [ -n "$VBOXWEB_AUTH_LIBRARY" ]; then
su - "$VBOXWEB_USER" -c "$vboxmanage setproperty websrvauthlibrary \"$VBOXWEB_AUTH_LIBRARY\""
if [ $? -ne 0 ]; then
fail_msg "Error $? setting webservice authentication library to $VBOXWEB_AUTH_LIBRARY"
fi
fi
if [ -n "$VBOXWEB_AUTH_PWHASH" ]; then
su - "$VBOXWEB_USER" -c "$vboxmanage setextradata global \"VBoxAuthSimple/users/$VBOXWEB_USER\" \"$VBOXWEB_AUTH_PWHASH\""
if [ $? -ne 0 ]; then
fail_msg "Error $? setting webservice password hash"
fi
fi
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
start_daemon $VBOXWEB_USER $binary $PARAMS > /dev/null 2>&1
# ugly: wait until the final process has forked
sleep .1
PID=`pidof $binary 2>/dev/null`
if [ -n "$PID" ]; then
echo "$PID" > $PIDFILE
RETVAL=0
firewall-cmd --permanent --new-service=vboxweb
firewall-cmd --permanent --service=vboxweb --set-description="service to remotely manage VirtualBox"
firewall-cmd --permanent --add-port=18083/tcp --zone=internal --service=vboxweb
firewall-cmd --permanent --set-short="vboxweb" --service=vboxweb
succ_msg "VirtualBox web service started"
else
RETVAL=1
fail_msg "VirtualBox web service failed to start"
fi
fi
return $RETVAL
}
stop() {
if test -f $PIDFILE; then
begin_msg "Stopping VirtualBox web service" console;
killproc $binary
RETVAL=$?
# Be careful: wait 1 second, making sure that everything is cleaned up.
sleep 1
if ! pidof $binary > /dev/null 2>&1; then
rm -f $PIDFILE
succ_msg "VirtualBox web service stopped"
else
fail_msg "VirtualBox web service failed to stop"
fi
fi
return $RETVAL
}
restart() {
stop && start
}
status() {
echo -n "Checking for VBox Web Service"
if [ -f $PIDFILE ]; then
echo " ...running"
else
echo " ...not running"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
force-reload)
restart
;;
status)
status
;;
setup)
;;
cleanup)
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL

62
virtualbox-patch-source.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/bash -ex
if [ -z "$1" ]; then
echo "You need to pass the filename VirtualBox-x.y.z.tar.bz2 as first argument."
exit 1
fi
REMOVE_DIRS=(
src/VBox/Additions/WINNT
src/VBox/Additions/os2
src/VBox/Runtime/r3/darwin
src/VBox/Runtime/r0drv/darwin
src/VBox/Runtime/darwin
kBuild/bin
kBuild/msgstyles
kBuild/tools
kBuild/sdks
tools/darwin.x86
tools/darwin.amd64
tools/freebsd.x86
tools/os2.x86
tools/solaris.x86
tools/solaris.amd64
tools/win.amd64
tools/win.x86
tools/linux.x86
tools/linux.amd64
)
set -o errexit
CMDNAME=${0##*/}
SOURCEDIR=${0%$CMDNAME}
BASENAME=${1%.tar.bz2}
trap "rm -rf \"$BASENAME-patched.tar\" \"$BASENAME-patched.tar.bz2\"" ERR
for (( N=0 ; N<${#REMOVE_DIRS[@]} ; N++ )) ; do
#REMOVE_DIRS[N]="$BASENAME/${REMOVE_DIRS[N]}"
# use a wildcard because VirtualBox-1.6.0-OSE != VirtualBox-1.6.0_OSE
REMOVE_DIRS[N]="*/${REMOVE_DIRS[N]}"
done
cd "$SOURCEDIR" >/dev/null
if ! test -f "$BASENAME.tar.bz2" ; then
exit 0
fi
if test -f "$BASENAME-patched.tar.bz2" ; then
if test "$BASENAME.tar.bz2" -ot "$BASENAME-patched.tar.bz2" ; then
if test $CMDNAME -ot "$BASENAME-patched.tar.bz2" ; then
exit 0
fi
fi
fi
cp -a "$BASENAME.tar.bz2" "$BASENAME-patched.tar.bz2"
bunzip2 "$BASENAME-patched.tar.bz2"
tar --wildcards --delete -f "$BASENAME-patched.tar" "${REMOVE_DIRS[@]}"
pixz -9 "$BASENAME-patched.tar"

View File

@@ -2,3 +2,5 @@ addFilter("incoherent-init-script-name vboxdrv")
addFilter("incoherent-init-script-name vboxadd")
addFilter("xorg-x11-driver-virtualbox-ose.* shlib-policy-missing-suffix")
addFilter("executable-stack")
# lots of silly false positives on 15.x
addFilter("systemd-service-without-service_del_postun")

70
virtualbox-wrapper.sh Executable file
View File

@@ -0,0 +1,70 @@
#!/bin/bash
export QT_NO_KDE_INTEGRATION=1
# make certain that the user/group combination is valid
/usr/bin/id -nG | grep -v -e "root" -e "vboxusers" >/dev/null && /usr/lib/virtualbox/VBoxPermissionMessage && exit
#
# Handle the issue regarding USB passthru
# The following conditions apply:
# 1. If ~/.config/VirtualBox/enable exists, the user accepts the security risk.
# 2. If ~/.config/VirtualBox/disable exists, the user does not accept the risk. That file will contain the inode of /usr/lib/udev/rules.d/60-vboxdrv.rules.
# When that changes, the VBoxUSB_DevRules will again be displayed as that means that VB has been reloaded.
#
devrules()
{
/usr/lib/virtualbox/VBoxUSB_DevRules
if [ $? -eq 0 ] ; then
# User accepts the risk
touch ~/.config/VirtualBox/enable
rm -f ~/.config/VirtualBox/disable
else
# User declines the risk - save the inode
echo "" > ~/.config/VirtualBox/disable
rm -f ~/.config/VirtualBox/enable
fi
}
# Start of main routine
#
# Ensure that ~/.config/VirtualBox exists
mkdir -p ~/.config/VirtualBox
# Get the inode for /usr/lib/udev/rules.d/60-vboxdrv.rules
INODE=$(stat /usr/lib/udev/rules.d/60-vboxdrv.rules | grep Inode | cut -d' ' -f3)
if [ ! -f ~/.config/VirtualBox/enable ] && [ ! -f ~/.config/VirtualBox/disable ] ; then
# Neither file exists - find what the user wants
devrules
fi
# Get the original Inode if it exists
if [ -f ~/.config/VirtualBox/disable ] ; then
read LINE < ~/.config/VirtualBox/disable
else
LINE=" "
fi
# If user originally declined, make certain that /usr/lib/udev/rules.d/60-vboxdrv.rules has not been changed
if [ -f ~/.config/VirtualBox/disable ] && [ "$LINE" != "$INODE" ] && [ "$LINE" != "" ] ; then
# disable is selected and the Inode has changed - ask again
devrules
fi
if [ -f ~/.config/VirtualBox/disable ] ; then
echo $INODE > ~/.config/VirtualBox/disable
if [ "$LINE" != "$INODE" ] ; then
if [ -f /usr/bin/kdesu ] ; then
kdesu /usr/sbin/vbox-fix-usb-rules.sh
fi
if [ -f /usr/bin/gnomesu ] ; then
gnomesu /usr/sbin/vbox-fix-usb-rules.sh
fi
fi
fi
# Check if extpack needs to be updated
/usr/bin/update-extpack.sh
# Check that /usr/lib/virtualbox/VirtualBoxVM has SUID permissions
PERM=$(ls -l /usr/lib/virtualbox/VirtualBoxVM | grep rwsr)
if [ -z "$PERM" ]
then
logger -s "Wrong permissions for VirtualBoxVM - use 'sudo chmod 4711 /usr/lib/virtualbox/VirtualBoxVM' to fix"
/usr/lib/virtualbox/VBoxSUIDMessage
exit 1
fi
# Now run the VB GUI
LD_LIBRARY_PATH="/usr/lib/virtualbox${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" exec /usr/lib/virtualbox/VirtualBoxQt "$@"

View File

@@ -1,51 +1,16 @@
-------------------------------------------------------------------
Wed Oct 22 10:52:35 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
Sun Oct 26 18:53:08 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 7.2.4
* GUI: Fixed VBox Manager crash when some VM has a lot of
snapshots.
* GUI: Fixed VBox Manager crash while attempting to show error
notifications too early.
* GUI: Fixed VBox Manager freeze on Linux hosts at startup or
while attempting to add a VM.
* Network: Added a new experimental type of e1000 adapter.
(82583V). It requires the ICH9 chipset, since MSIs are not
supported by PIIX3.
* USB Webcam: The virtual USB webcam is now part of the open
source base package.
* GUI: Fixed VirtualBox VM Manager crash when host was resuming
from sleep.
* Support for Linux 6.18
-------------------------------------------------------------------
Tue Sep 30 09:31:18 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Drop logic for building and installing on pre-Leap 15.
-------------------------------------------------------------------
Thu Sep 11 15:03:37 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Add curl-8.16.patch [boo#1249448]
-------------------------------------------------------------------
Tue Aug 26 10:21:54 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
- Disable python bindings for Leap 16.0 (bsc#1248418)
python3.13 is not supported by the current virtualbox version so
we can't build the bindings.
-------------------------------------------------------------------
Fri Aug 15 14:46:51 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 7.2.0
* GUI: Moved global and VM tools from hamburger menus to global
tools taskbar (vertically on the left) and the VM tools tabs
(horizontally above the right hand panel) to make them easier
to reach.
* ARM host: Virtualization of Windows 11/ARM VMs.
* Linux host: Video decoding acceleration when 3D is enabled.
* Storage: The NVMe storage controller emulation is now part of
the open source base package.
- Update to release 7.1.14
* Audio: Fixed a crash on Windows hosts when a host device has
been changed and failed to reset
* Main: Fixed issue when some snapshots could not be deleted
* Main: Fixed issue when it was not possible to run more than 61
VMs in parallel
* Linux Guest and Host: Introduced initial support for kernels
6.17 and 6.18
* Windows Guest Additions: Fixed issue when Guest Additions could
not be installed on Windows XP guest
-------------------------------------------------------------------
Thu Jul 24 13:07:21 UTC 2025 - Jan Engelhardt <jengelh@inai.de>

View File

@@ -15,6 +15,7 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if "@BUILD_FLAVOR@" == "kmp"
# macros for virtualbox-kmp
%define main_package 0
@@ -54,22 +55,15 @@
%endif
# If you want to disable building Python parts, just set this to %%nil
%if 0%{?suse_version} == 1600
# Leap 16.0 has python3.13, currently not supported
%global mypython %nil
%else
# Using python3.11 for Factory, current version doesn't support python3.13
%global mypython python311
%endif
%global mypython python311
%if "%mypython" != ""
%global __mypython %{expand:%%__%{mypython}}
%global mypython_sitelib %{expand:%%%{mypython}_sitelib}
%global __mypython %{expand:%%__%{mypython}}
%global mypython_sitelib %{expand:%%%{mypython}_sitelib}
%endif
Name: virtualbox%{?dash}%{?name_suffix}
Version: 7.2.4
%define rversion 7.2.4
Version: 7.1.14
%define rversion 7.1.14
Release: 0
Summary: %{package_summary}
License: GPL-3.0-or-later
@@ -133,7 +127,6 @@ Patch10: fix_for_leap15.5.patch
Patch11: cxx17.patch
Patch12: host-source.patch
Patch20: gentoo-C23.patch
Patch21: curl-8.16.patch
#
# Common BuildRequires for both virtualbox and virtualbox-kmp
BuildRequires: %{kernel_module_package_buildreqs}
@@ -150,7 +143,7 @@ BuildRequires: gcc-c++
BuildRequires: gcc12
BuildRequires: gcc12-c++
%endif
BuildRequires: kbuild >= 0.1.9998+svn3686
BuildRequires: kbuild >= 0.1.9998+svn3613
BuildRequires: libcap-devel
BuildRequires: libcurl-devel
BuildRequires: libopenssl-devel
@@ -189,7 +182,7 @@ BuildRequires: sysuser-tools
BuildRequires: update-desktop-files
BuildRequires: which
BuildRequires: xorg-x11-server
BuildRequires: pkgconfig(Qt6Core) >= 6.8
BuildRequires: pkgconfig(Qt6Core) >= 6.3
BuildRequires: pkgconfig(Qt6DBus)
BuildRequires: pkgconfig(Qt6Gui)
BuildRequires: pkgconfig(Qt6Help)
@@ -264,7 +257,6 @@ BuildRequires: xorg-x11-libXmu-devel-32bit
BuildRequires: xorg-x11-libXt-devel-32bit
%endif
%endif
%if %{kmp_package}
BuildRequires: alsa-devel
BuildRequires: libiptc-devel
@@ -274,7 +266,6 @@ Requires: ca-certificates
Requires: openSUSE-signkey-cert
%kernel_module_package -p %{SOURCE7} -n virtualbox -x kdump um xen pae xenpae pv
%endif
%if %{main_package}
%description
VirtualBox is a hosted hypervisor for x86 computers. It supports the
@@ -457,17 +448,17 @@ rm -rf src/libs/{libpng-*,libxml2-*,libxslt-*,zlib-*,boost-*}
# --disable-kmods don't build Linux kernel modules - but use SUSE specific way see few lines under
# NOT an autoconf configure script
./configure \
--enable-vnc \
--enable-vde \
--disable-kmods \
--with-linux="%{_prefix}" \
--disable-java \
--disable-docs \
--enable-webservice \
--enable-vnc \
--enable-vde \
--disable-kmods \
--with-linux="%{_prefix}" \
--disable-java \
--disable-docs \
--enable-webservice \
%if "%mypython" == ""
--disable-python \
--disable-python \
%endif
--with-makeself=%{_bindir}/true
--with-makeself=%{_bindir}/true
# configure actually warns we should source env.sh (which seems like it could influence the build...)
source ./env.sh
@@ -476,14 +467,14 @@ source ./env.sh
# VBOX_PATH_PACKAGE_DOCS set propper path for link to pdf in .desktop file
# VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= just disable some functionality in gui
echo "build basic parts"
%{_bindir}/kmk %{?_smp_mflags} \
VBOX_GCC_WERR= \
VBOX_USE_SYSTEM_XORG_HEADERS=1 \
VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= \
TOOL_YASM_AS=yasm \
VBOX_BUILD_PUBLISHER=_SUSE \
TOOL_GCC3_CFLAGS="%{optflags}" TOOL_GCC3_CXXFLAGS="%{optflags}" \
VBOX_GCC_OPT="%{optflags}"
%{_bindir}/kmk %{?_smp_mflags} \
VBOX_GCC_WERR= \
VBOX_USE_SYSTEM_XORG_HEADERS=1 \
VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= \
TOOL_YASM_AS=yasm \
VBOX_BUILD_PUBLISHER=_SUSE \
TOOL_GCC3_CFLAGS="%{optflags}" TOOL_GCC3_CXXFLAGS="%{optflags}" \
VBOX_GCC_OPT="%{optflags}"
echo "build VNC extension pack"
# tar must use GNU, not POSIX, format here
@@ -605,38 +596,38 @@ cd -
# install desktop file
install -m 644 out/linux.*/release/bin/virtualbox.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
%suse_update_desktop_file %{buildroot}%{_datadir}/applications/%{name}.desktop 'System Emulator'
%suse_update_desktop_file %{buildroot}%{_datadir}/applications/%{name}.desktop 'System Emulator'
%if 0%{?sle_version} != 120300
# install appstream file
mkdir -p %{buildroot}%{_datadir}/metainfo
install -m 644 %{SOURCE2} %{buildroot}%{_datadir}/metainfo/%{name}.appdata.xml
install -m 644 %{SOURCE2} %{buildroot}%{_datadir}/metainfo/%{name}.appdata.xml
%endif
# create a menu entry
install -m 644 out/linux.*/release/bin/VBox.png %{buildroot}%{_datadir}/pixmaps/virtualbox.png
# install config with session shutdown defs
install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/default/virtualbox
install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/default/virtualbox
#install wrapper script
install -m 644 %{SOURCE9} %{buildroot}%{_bindir}/VirtualBox
install -m 644 %{SOURCE8} %{buildroot}%{_bindir}/update-extpack.sh
install -m 644 %{SOURCE9} %{buildroot}%{_bindir}/VirtualBox
install -m 644 %{SOURCE8} %{buildroot}%{_bindir}/update-extpack.sh
# Service files to load kernel modules on boot
install -m 0644 %{SOURCE14} %{buildroot}%{_unitdir}/vboxdrv.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxdrv
install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/vboxadd-service.service
install -m 0755 %{SOURCE16} %{buildroot}%{_sbindir}/vboxconfig
install -m 0755 %{SOURCE17} %{buildroot}%{_sbindir}/vboxguestconfig
install -m 0755 %{SOURCE18} %{buildroot}%{_sbindir}/vbox-fix-usb-rules.sh
install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh
install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxweb-service.service
install -m 0755 %{SOURCE22} %{buildroot}%{_vbox_instdir}/vboxweb-service.sh
install -m 0644 %{SOURCE23} %{buildroot}%{_unitdir}/vboxautostart-service.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxautostart
install -m 0755 %{SOURCE24} %{buildroot}%{_vbox_instdir}/vboxautostart-service.sh
install -m 0644 %{SOURCE14} %{buildroot}%{_unitdir}/vboxdrv.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxdrv
install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/vboxadd-service.service
install -m 0755 %{SOURCE16} %{buildroot}%{_sbindir}/vboxconfig
install -m 0755 %{SOURCE17} %{buildroot}%{_sbindir}/vboxguestconfig
install -m 0755 %{SOURCE18} %{buildroot}%{_sbindir}/vbox-fix-usb-rules.sh
install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh
install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxweb-service.service
install -m 0755 %{SOURCE22} %{buildroot}%{_vbox_instdir}/vboxweb-service.sh
install -m 0644 %{SOURCE23} %{buildroot}%{_unitdir}/vboxautostart-service.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxautostart
install -m 0755 %{SOURCE24} %{buildroot}%{_vbox_instdir}/vboxautostart-service.sh
# Init scripts to start virtualbox during boot
ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
ln -sf %{_unitdir}/vboxautostart-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxautostart-service.service
ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
ln -sf %{_unitdir}/vboxautostart-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxautostart-service.service
# config file for vboxdrv and vboxweb
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
@@ -683,11 +674,11 @@ cd -
ln -sf %{_unitdir}/vboxweb-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxweb-service.service
echo "entering virtualbox-guest-desktop-icons install section"
install -d -m 755 %{buildroot}%{_datadir}/pixmaps/virtualbox
install -d -m 755 %{buildroot}%{_datadir}/pixmaps/virtualbox
cd src/VBox/Frontends/VirtualBox/images
for icon in os_*.png; do
install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtualbox/"$icon";
install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtualbox/"$icon";
done
cd -
@@ -715,7 +706,7 @@ install -Dm0644 vbox-guest-tools.conf %{buildroot}%{_sysusersdir}/vbox-guest-too
%service_add_post vboxdrv.service vboxautostart-service.service
# add new autostart stuff to the existing default config, if missing
grep -q VBOXAUTOSTART %{_sysconfdir}/default/virtualbox || {
cat >> %{_sysconfdir}/default/virtualbox << EOF
cat >> %{_sysconfdir}/default/virtualbox << EOF
#
# -------------------------------------------------------------------------------------------------
# Autostart
@@ -727,8 +718,8 @@ EOF
}
for entry in %{_sysconfdir}/vbox/*.start
do
user=$(basename "$entry" .start)
[ "$user" = "*" ] && break
user=$(basename "$entry" .start)
[ "$user" = "*" ] && break
mv %{_sysconfdir}/vbox/user.start %{_sysconfdir}/vbox/autostart.d/.
done
@@ -811,7 +802,6 @@ export DISABLE_RESTART_ON_UPDATE=yes
%{_vbox_instdir}/VBoxRT.so
%{_vbox_instdir}/VBoxSharedFolders.so
%{_vbox_instdir}/VBoxVMM.so
%{_vbox_instdir}/VBoxVMMArm.so
%{_vbox_instdir}/VBoxXPCOMC.so
%{_vbox_instdir}/VBoxXPCOM.so
%{_vbox_instdir}/VBox*.r0
@@ -984,18 +974,18 @@ rm -rf src/libs/{libpng-*,libxml2-*,libxslt-*,zlib-*,boost-*}
# guest modules : vboxguest,vboxsf,vboxvideo
echo "build kernel modules"
for vbox_module in kmp_host/vbox{drv,netflt,netadp} \
kmp_additions/vbox{guest,sf,video}; do
#get the module name from path
module_name=$(basename "$vbox_module")
kmp_additions/vbox{guest,sf,video}; do
#get the module name from path
module_name=$(basename "$vbox_module")
# go through the all flavors (desktop,default ...)
for flavor in %{flavors_to_build}; do
# go through the all flavors (desktop,default ...)
for flavor in %{flavors_to_build}; do
# delete old build dir for sure
rm -rf modules_build_dir/${module_name}_${flavor}
if [ "$module_name" = "vboxdrv" -o \
"$module_name" = "vboxguest" ] ; then
SYMBOLS=""
SYMBOLS=""
fi
# create build directory for specific flavor
mkdir -p modules_build_dir/$flavor
@@ -1006,21 +996,21 @@ for vbox_module in kmp_host/vbox{drv,netflt,netadp} \
# copy vboxdrv (for host) module symbols which are used by vboxnetflt and vboxnetadp km's:
if [ "$module_name" = "vboxnetflt" -o \
"$module_name" = "vboxnetadp" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers"
cp $PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers"
fi
# copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's:
# copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's:
if [ "$module_name" = "vboxsf" -o \
"$module_name" = "vboxvideo" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxguest/Module.symvers"
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxguest/Module.symvers"
fi
# build the module for the specific flavor
%make_build -j4 -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor %{?linux_make_arch} modules \
M=$PWD/modules_build_dir/$flavor/$module_name KBUILD_EXTRA_SYMBOLS="$SYMBOLS" V=1
done
done
done
%install
@@ -1030,7 +1020,7 @@ for module_name in vbox{drv,netflt,netadp,guest,sf,video}
do
#and through all flavors
for flavor in %{flavors_to_build}; do
make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD/modules_build_dir/$flavor/$module_name
make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD/modules_build_dir/$flavor/$module_name
done
done
# kmp_package