aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Druzenko <vvd@FreeBSD.org>2024-07-09 21:30:58 +0000
committerVladimir Druzenko <vvd@FreeBSD.org>2024-07-20 09:38:04 +0000
commitd03209bbcdd1c0abcd01a737a49c0785ce714d2d (patch)
tree82489beea29b836359de84ffaef53ed460e7327e
parenta87b77d09215b5e38fe5ddcbe473f1656d7cf82b (diff)
downloadports-d03209bbcdd1c0abcd01a737a49c0785ce714d2d.tar.gz
ports-d03209bbcdd1c0abcd01a737a49c0785ce714d2d.zip
emulators/virtualbox-ose{,-nox11}-legacy: add vboxinit start/stop script for VMs which is controlled from phpvirtualbox
Set the "Startup Mode" to "Automatic" for the virtual machine in phpvirtualbox to automatically start the virtual machine during OS boot. This script also stops virtual machines during reboot even if vboxinit_enable="YES" is not present in /etc/rc.conf. phpvirtualbox uses the "Web Service" (WEBSERVICE) to configure and manage virtual machines, so we install the script only when the WEBSERVICE option is enabled. PR: 280062 (cherry picked from commit b9b090f62a08fe648332bd20af02deab794d0e03)
-rw-r--r--emulators/virtualbox-ose-legacy/Makefile4
-rw-r--r--emulators/virtualbox-ose-legacy/files/vboxinit.in91
-rw-r--r--emulators/virtualbox-ose-nox11-legacy/Makefile2
3 files changed, 94 insertions, 3 deletions
diff --git a/emulators/virtualbox-ose-legacy/Makefile b/emulators/virtualbox-ose-legacy/Makefile
index 6fbc761566a2..4ce61c2bb073 100644
--- a/emulators/virtualbox-ose-legacy/Makefile
+++ b/emulators/virtualbox-ose-legacy/Makefile
@@ -1,6 +1,6 @@
PORTNAME= virtualbox-ose
PORTVERSION= 5.2.44
-PORTREVISION?= 19
+PORTREVISION?= 20
CATEGORIES= emulators
MASTER_SITES= https://download.oracle.com/virtualbox/${PORTVERSION}/:src \
LOCAL/bofh/emulators/virtualbox-ose-legacy:docs
@@ -159,7 +159,7 @@ PLIST_SUB+= QT="@comment "
.endif
.if ${PORT_OPTIONS:MWEBSERVICE}
-USE_RC_SUBR+= vboxwebsrv
+USE_RC_SUBR+= vboxinit vboxwebsrv
VBOX_LINKS+= vboxwebsrv
VBOX_UTILS+= vboxwebsrv webtest
.endif
diff --git a/emulators/virtualbox-ose-legacy/files/vboxinit.in b/emulators/virtualbox-ose-legacy/files/vboxinit.in
new file mode 100644
index 000000000000..13ec9614827d
--- /dev/null
+++ b/emulators/virtualbox-ose-legacy/files/vboxinit.in
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# PROVIDE: vboxinit
+# REQUIRE: LOGIN vboxnet vboxwebsrv sshd
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf[.local] to enable vboxinit
+#
+# vboxinit_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable vboxinit.
+# stop and faststop are always enabled.
+# vboxinit_user (str): Default user account to run with.
+# (default: %%VBOXUSER%%)
+# vboxinit_home (str): Default home directory to run with.
+# (default: home of user ${vboxinit_user}
+# vboxinit_stop (str): Default stop cmd for VBoxManage controlvm.
+# (default: savestate)
+# vboxinit_start_delay (int): Default startup delay in seconds.
+# (default: 0)
+# vboxinit_stop_delay (int): Default shutdown delay in seconds.
+# (default: 0)
+#
+# Set the "Startup Mode" to "Automatic" for the virtual machine in
+# phpvirtualbox to automatically start the virtual machine during OS boot.
+#
+
+. /etc/rc.subr
+
+name="vboxinit"
+rcvar="${name}_enable"
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+restart_cmd="${name}_restart"
+
+vboxinit_start()
+{
+ # Get a list of all machines with autorun enabled in phpvirtualbox
+ ${su_command} "${command} list vms | /usr/bin/tr -d '{}\"'" | while read VMNAME UUID; do
+ STARTUP=$(${su_command} "${command} getextradata ${UUID} 'pvbx/startupMode'" | /usr/bin/cut -d' ' -f2)
+ if [ "${STARTUP}" == "auto" ]; then
+ echo "${name}: starting machine ${VMNAME} ..."
+ ${su_command} "${command} startvm ${UUID} --type headless"
+ sleep "${vboxinit_start_delay}"
+ fi
+ done
+}
+
+vboxinit_stop()
+{
+ # Get all running machines
+ ${su_command} "${command} list runningvms | /usr/bin/tr -d '{}\"'" | while read VMNAME UUID; do
+ echo "${name}: stopping machine ${VMNAME} with action '${vboxinit_stop}' ..."
+ ${su_command} "${command} controlvm ${UUID} ${vboxinit_stop}"
+ sleep "${vboxinit_stop_delay}"
+ done
+}
+
+vboxinit_status()
+{
+ # List all running machines
+ ${su_command} "${command} list runningvms"
+}
+
+vboxinit_restart()
+{
+ vboxinit_stop
+ vboxinit_start
+}
+
+load_rc_config $name
+
+: ${vboxinit_enable="NO"}
+: ${vboxinit_user="%%VBOXUSER%%"}
+: ${vboxinit_home=$(/usr/sbin/pw usershow -7 -n "${vboxinit_user}" | /usr/bin/cut -d: -f6)}
+: ${vboxinit_stop="savestate"}
+: ${vboxinit_start_delay="0"}
+: ${vboxinit_stop_delay="0"}
+HOME=${vboxinit_home}
+USER=${vboxinit_user}
+export HOME USER
+
+command="%%VBOXDIR%%/VBoxManage"
+su_command="/usr/bin/su -m ${vboxinit_user} -c"
+
+if [ "x$1" = "xstop" ] || [ "x$1" = "xfaststop" ]; then
+ vboxinit_enable="YES"
+fi
+
+run_rc_command "$1"
diff --git a/emulators/virtualbox-ose-nox11-legacy/Makefile b/emulators/virtualbox-ose-nox11-legacy/Makefile
index 33102a46f019..0406eecfc7aa 100644
--- a/emulators/virtualbox-ose-nox11-legacy/Makefile
+++ b/emulators/virtualbox-ose-nox11-legacy/Makefile
@@ -1,4 +1,4 @@
-PORTREVISION= 17
+PORTREVISION= 18
PKGNAMESUFFIX= -nox11-legacy
OPTIONS_EXCLUDE= ALSA DBUS DEBUG GUESTADDITIONS DOCS NLS PULSEAUDIO