diff --git a/UserManual.pdf b/UserManual.pdf index 961a097..0986cc3 100644 --- a/UserManual.pdf +++ b/UserManual.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcf37730537c761fbe96fb063015d8126055a635bc531cb2ecdfb56aa0f1913c -size 4454881 +oid sha256:1fec3d098423c7f73a7c96389ee005f311c61efb45962b4a29320e93c30ac13e +size 4456573 diff --git a/VirtualBox-5.2.18-patched.tar.bz2 b/VirtualBox-5.2.18-patched.tar.bz2 deleted file mode 100644 index ba8e4be..0000000 --- a/VirtualBox-5.2.18-patched.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:240cec92e7198d2f55f68943f8440567c5f416ad88d16008d26f796b0263a623 -size 83375805 diff --git a/VirtualBox-5.2.20-patched.tar.bz2 b/VirtualBox-5.2.20-patched.tar.bz2 new file mode 100644 index 0000000..01f0242 --- /dev/null +++ b/VirtualBox-5.2.20-patched.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0b05bf26f812e1b56d1d790a6774eda9ead7bc6f4f99df7f530888aacb1be2b +size 83363280 diff --git a/fix_32_bit_builds.patch b/fix_32_bit_builds.patch index 51faec0..9cb575e 100644 --- a/fix_32_bit_builds.patch +++ b/fix_32_bit_builds.patch @@ -1,28 +1,20 @@ -Index: VirtualBox-5.2.12/src/VBox/Additions/linux/sharedfolders/utils.c +Index: VirtualBox-5.2.20/src/VBox/Additions/linux/sharedfolders/utils.c =================================================================== ---- VirtualBox-5.2.12.orig/src/VBox/Additions/linux/sharedfolders/utils.c -+++ VirtualBox-5.2.12/src/VBox/Additions/linux/sharedfolders/utils.c -@@ -50,7 +50,11 @@ static void sf_timespec_from_ftime(RTTIM +--- VirtualBox-5.2.20.orig/src/VBox/Additions/linux/sharedfolders/utils.c ++++ VirtualBox-5.2.20/src/VBox/Additions/linux/sharedfolders/utils.c +@@ -49,11 +49,11 @@ static void sf_timespec_from_ftime(RTTIM + int64_t t = 1000000000 * *time; RTTimeSpecSetNano(ts, t); } - #else /* >= 2.6.0 */ +-#else /* >= 2.6.0 */ +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) +-static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts) +-#else ++#else /* >= 2.6.0 */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0) -+static void sf_ftime_from_timespec(struct timespec64 *tv, RTTIMESPEC *ts) + static void sf_ftime_from_timespec(struct timespec64 *tv, RTTIMESPEC *ts) +#else - static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts) -+#endif ++static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts) + #endif { int64_t t = RTTimeSpecGetNano(ts); - int64_t nsec; -@@ -60,7 +64,11 @@ static void sf_ftime_from_timespec(struc - tv->tv_nsec = nsec; - } - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0) -+static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec64 *tv) -+#else - static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec *tv) -+#endif - { - int64_t t = (int64_t)tv->tv_nsec + (int64_t)tv->tv_sec * 1000000000; - RTTimeSpecSetNano(ts, t); diff --git a/fixes_for_4.19.patch b/fixes_for_4.19.patch index bc175dd..40d8bef 100644 --- a/fixes_for_4.19.patch +++ b/fixes_for_4.19.patch @@ -1,28 +1,14 @@ -Index: VirtualBox-5.2.18/src/VBox/Additions/linux/drm/vbox_mode.c +Index: VirtualBox-5.2.20/src/VBox/Additions/linux/drm/vbox_mode.c =================================================================== ---- VirtualBox-5.2.18.orig/src/VBox/Additions/linux/drm/vbox_mode.c -+++ VirtualBox-5.2.18/src/VBox/Additions/linux/drm/vbox_mode.c -@@ -536,7 +536,11 @@ static void vbox_set_edid(struct drm_con - for (i = 0; i < EDID_SIZE - 1; ++i) - sum += edid[i]; - edid[EDID_SIZE - 1] = (0x100 - (sum & 0xFF)) & 0xFF; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) -+ drm_connector_update_edid_property(connector, (struct edid *)edid); -+#else +--- VirtualBox-5.2.20.orig/src/VBox/Additions/linux/drm/vbox_mode.c ++++ VirtualBox-5.2.20/src/VBox/Additions/linux/drm/vbox_mode.c +@@ -495,8 +495,8 @@ static void vbox_set_edid(struct drm_con + drm_connector_update_edid_property(connector, (struct edid *)edid); + #else drm_mode_connector_update_edid_property(connector, (struct edid *)edid); -+#endif - } +-} + #endif ++} static int vbox_get_modes(struct drm_connector *connector) -@@ -703,7 +707,11 @@ static int vbox_connector_init(struct dr - drm_connector_register(connector); - #endif - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) -+ drm_connector_attach_encoder(connector, encoder); -+#else - drm_mode_connector_attach_encoder(connector, encoder); -+#endif - - return 0; - } + { diff --git a/fixes_for_4.20.patch b/fixes_for_4.20.patch new file mode 100644 index 0000000..94fdfff --- /dev/null +++ b/fixes_for_4.20.patch @@ -0,0 +1,175 @@ +Index: VirtualBox-5.2.20/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c +=================================================================== +--- VirtualBox-5.2.20.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c ++++ VirtualBox-5.2.20/src/VBox/HostDrivers/VBoxNetAdp/linux/VBoxNetAdp-linux.c +@@ -84,8 +84,11 @@ static long VBoxNetAdpLinuxIOCtlUnlocked + #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) */ + + static void vboxNetAdpEthGetDrvinfo(struct net_device *dev, struct ethtool_drvinfo *info); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++static int vboxNetAdpEthGetSettings(struct net_device *pNetDev, struct ethtool_link_ksettings *link_ksettings); ++#else + static int vboxNetAdpEthGetSettings(struct net_device *dev, struct ethtool_cmd *cmd); +- ++#endif + + /********************************************************************************************************************************* + * Global Variables * +@@ -129,7 +132,11 @@ static struct miscdevice g_CtlDev = + static const struct ethtool_ops gEthToolOpsVBoxNetAdp = + { + .get_drvinfo = vboxNetAdpEthGetDrvinfo, ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++ .get_link_ksettings = vboxNetAdpEthGetSettings, ++#else + .get_settings = vboxNetAdpEthGetSettings, ++#endif + .get_link = ethtool_op_get_link, + }; + +@@ -200,10 +207,64 @@ static void vboxNetAdpEthGetDrvinfo(stru + "N/A"); + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++static bool ++convert_link_ksettings_to_legacy_settings( ++ struct ethtool_cmd *legacy_settings, ++ const struct ethtool_link_ksettings *link_ksettings) ++{ ++ bool retval = true; ++ ++ memset(legacy_settings, 0, sizeof(*legacy_settings)); ++ /* this also clears the deprecated fields in legacy structure: ++ * __u8 transceiver; ++ * __u32 maxtxpkt; ++ * __u32 maxrxpkt; ++ */ ++ ++ retval &= ethtool_convert_link_mode_to_legacy_u32( ++ &legacy_settings->supported, ++ link_ksettings->link_modes.supported); ++ retval &= ethtool_convert_link_mode_to_legacy_u32( ++ &legacy_settings->advertising, ++ link_ksettings->link_modes.advertising); ++ retval &= ethtool_convert_link_mode_to_legacy_u32( ++ &legacy_settings->lp_advertising, ++ link_ksettings->link_modes.lp_advertising); ++ ethtool_cmd_speed_set(legacy_settings, link_ksettings->base.speed); ++ legacy_settings->duplex ++ = link_ksettings->base.duplex; ++ legacy_settings->port ++ = link_ksettings->base.port; ++ legacy_settings->phy_address ++ = link_ksettings->base.phy_address; ++ legacy_settings->autoneg ++ = link_ksettings->base.autoneg; ++ legacy_settings->mdio_support ++ = link_ksettings->base.mdio_support; ++ legacy_settings->eth_tp_mdix ++ = link_ksettings->base.eth_tp_mdix; ++ legacy_settings->eth_tp_mdix_ctrl ++ = link_ksettings->base.eth_tp_mdix_ctrl; ++ legacy_settings->transceiver ++ = link_ksettings->base.transceiver; ++ return retval; ++} ++#endif + + /* ethtool_ops::get_settings */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++static int vboxNetAdpEthGetSettings(struct net_device *pNetDev, struct ethtool_link_ksettings *link_ksettings) ++#else + static int vboxNetAdpEthGetSettings(struct net_device *pNetDev, struct ethtool_cmd *cmd) ++#endif + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++ struct ethtool_cmd *cmd = kzalloc(sizeof(struct ethtool_cmd), GFP_KERNEL); ++ if (!cmd) ++ return 1; ++ convert_link_ksettings_to_legacy_settings(cmd, link_ksettings); ++#endif + cmd->supported = 0; + cmd->advertising = 0; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +@@ -218,6 +279,9 @@ static int vboxNetAdpEthGetSettings(stru + cmd->autoneg = AUTONEG_DISABLE; + cmd->maxtxpkt = 0; + cmd->maxrxpkt = 0; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++ kfree(cmd); ++#endif + return 0; + } + +Index: VirtualBox-5.2.20/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c +=================================================================== +--- VirtualBox-5.2.20.orig/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c ++++ VirtualBox-5.2.20/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c +@@ -171,11 +171,19 @@ RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPE + { + IPRT_LINUX_SAVE_EFL_AC(); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++ struct timespec64 Ts; ++ ktime_get_real_ts64(&Ts); ++#else + struct timespec Ts; + ktime_get_real_ts(&Ts); ++#endif + IPRT_LINUX_RESTORE_EFL_AC(); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) ++ return RTTimeSpecSetTimespec64(pTime, &Ts); ++#else + return RTTimeSpecSetTimespec(pTime, &Ts); +- ++#endif + #else /* < 2.6.16 */ + struct timeval Tv; + do_gettimeofday(&Tv); +Index: VirtualBox-5.2.20/include/iprt/time.h +=================================================================== +--- VirtualBox-5.2.20.orig/include/iprt/time.h ++++ VirtualBox-5.2.20/include/iprt/time.h +@@ -54,7 +54,6 @@ typedef struct RTTIMESPEC + int64_t i64NanosecondsRelativeToUnixEpoch; + } RTTIMESPEC; + +- + /** @name RTTIMESPEC methods + * @{ */ + +@@ -388,6 +387,7 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim + { + return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); + } ++ + #endif /* various ways of detecting struct timeval */ + + +@@ -427,6 +427,25 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim + { + return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); + } ++ ++#ifndef _LINUX_TIME64_H ++/* With kernel 4.20+, the second argument of time routines change from ++ * struct timespec to struct timespec64. This file is built twice, once ++ * in user mode, and once in kernel mode. In user mode, the struct is ++ * undefined, thus the following definition is provided. The guard macro ++ * from the kernels include/linux/time64.h is _LINUX_TIME64_H, thus ++ * the definition of that macro determines whether the struct is defined. ++ */ ++struct timespec64 { ++ long long tv_sec; /* seconds */ ++ long tv_nsec; /* nanoseconds */ ++}; ++#endif ++ ++DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) ++{ ++ return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), 1000 * pTimeval->tv_nsec); ++} + #endif /* various ways of detecting struct timespec */ + + diff --git a/switch_to_python3.6.patch b/switch_to_python3.6.patch index d439592..ea092df 100644 --- a/switch_to_python3.6.patch +++ b/switch_to_python3.6.patch @@ -1,7 +1,7 @@ -Index: VirtualBox-5.2.16/configure +Index: VirtualBox-5.2.20/configure =================================================================== ---- VirtualBox-5.2.16.orig/configure -+++ VirtualBox-5.2.16/configure +--- VirtualBox-5.2.20.orig/configure ++++ VirtualBox-5.2.20/configure @@ -1959,17 +1959,17 @@ extern "C" int main(void) { Py_Initialize(); @@ -19,14 +19,14 @@ Index: VirtualBox-5.2.16/configure 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" -+ SUPPYTHONLIBS="python3.6m python3.6 python3.6m" ++ SUPPYTHONLIBS="python3.6m python3.6 python3.7m python3.7" 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 -Index: VirtualBox-5.2.16/src/VBox/Installer/linux/routines.sh +Index: VirtualBox-5.2.20/src/VBox/Installer/linux/routines.sh =================================================================== ---- VirtualBox-5.2.16.orig/src/VBox/Installer/linux/routines.sh -+++ VirtualBox-5.2.16/src/VBox/Installer/linux/routines.sh +--- VirtualBox-5.2.20.orig/src/VBox/Installer/linux/routines.sh ++++ VirtualBox-5.2.20/src/VBox/Installer/linux/routines.sh @@ -375,8 +375,8 @@ terminate_proc() { maybe_run_python_bindings_installer() { VBOX_INSTALL_PATH="${1}" @@ -38,10 +38,10 @@ Index: VirtualBox-5.2.16/src/VBox/Installer/linux/routines.sh if sys.version_info >= (2, 6): print \"test\"' 2> /dev/null`" != "test" ]; then echo 1>&2 "Python 2.6 or later not available, skipping bindings installation." -Index: VirtualBox-5.2.16/src/bldprogs/scm.cpp +Index: VirtualBox-5.2.20/src/bldprogs/scm.cpp =================================================================== ---- VirtualBox-5.2.16.orig/src/bldprogs/scm.cpp -+++ VirtualBox-5.2.16/src/bldprogs/scm.cpp +--- VirtualBox-5.2.20.orig/src/bldprogs/scm.cpp ++++ VirtualBox-5.2.20/src/bldprogs/scm.cpp @@ -2031,7 +2031,7 @@ static int scmProcessFileInner(PSCMRWSTA pszTreatAs = "shell"; else if ( (cchFirst >= 15 && strncmp(pchFirst, "/usr/bin/python", 15) == 0) @@ -51,10 +51,10 @@ Index: VirtualBox-5.2.16/src/bldprogs/scm.cpp else if ( (cchFirst >= 13 && strncmp(pchFirst, "/usr/bin/perl", 13) == 0) || (cchFirst >= 17 && strncmp(pchFirst, "/usr/bin/env perl", 17) == 0) ) pszTreatAs = "perl"; -Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/configure +Index: VirtualBox-5.2.20/src/libs/libxml2-2.9.4/configure =================================================================== ---- VirtualBox-5.2.16.orig/src/libs/libxml2-2.9.4/configure -+++ VirtualBox-5.2.16/src/libs/libxml2-2.9.4/configure +--- VirtualBox-5.2.20.orig/src/libs/libxml2-2.9.4/configure ++++ VirtualBox-5.2.20/src/libs/libxml2-2.9.4/configure @@ -15153,10 +15153,10 @@ PYTHON_SITE_PACKAGES= PYTHON_TESTS= pythondir= @@ -79,10 +79,10 @@ Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/configure { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : -Index: VirtualBox-5.2.16/src/VBox/ValidationKit/testboxscript/setup.sh +Index: VirtualBox-5.2.20/src/VBox/ValidationKit/testboxscript/setup.sh =================================================================== ---- VirtualBox-5.2.16.orig/src/VBox/ValidationKit/testboxscript/setup.sh -+++ VirtualBox-5.2.16/src/VBox/ValidationKit/testboxscript/setup.sh +--- VirtualBox-5.2.20.orig/src/VBox/ValidationKit/testboxscript/setup.sh ++++ VirtualBox-5.2.20/src/VBox/ValidationKit/testboxscript/setup.sh @@ -644,7 +644,7 @@ import sys;\ x = sys.version_info[0] == 2 and (sys.version_info[1] >= 6 or (sys.version_info[1] == 5 and sys.version_info[2] >= 1));\ sys.exit(not x);\ @@ -92,10 +92,10 @@ Index: VirtualBox-5.2.16/src/VBox/ValidationKit/testboxscript/setup.sh do python=`which ${python} 2> /dev/null` if [ -n "${python}" -a -x "${python}" ]; then -Index: VirtualBox-5.2.16/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec +Index: VirtualBox-5.2.20/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec =================================================================== ---- VirtualBox-5.2.16.orig/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec -+++ VirtualBox-5.2.16/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec +--- VirtualBox-5.2.20.orig/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec ++++ VirtualBox-5.2.20/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec @@ -20,7 +20,7 @@ %define %PYTHON% 1 %define VBOXDOCDIR %{_defaultdocdir}/%NAME% @@ -114,10 +114,10 @@ Index: VirtualBox-5.2.16/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec %endif rm -rf sdk/installer mv nls $RPM_BUILD_ROOT/usr/share/virtualbox -Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml.spec.in +Index: VirtualBox-5.2.20/src/libs/libxml2-2.9.4/libxml.spec.in =================================================================== ---- VirtualBox-5.2.16.orig/src/libs/libxml2-2.9.4/libxml.spec.in -+++ VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml.spec.in +--- VirtualBox-5.2.20.orig/src/libs/libxml2-2.9.4/libxml.spec.in ++++ VirtualBox-5.2.20/src/libs/libxml2-2.9.4/libxml.spec.in @@ -101,11 +101,11 @@ rm -fr %{buildroot} make install DESTDIR=%{buildroot} @@ -133,10 +133,10 @@ Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml.spec.in rm -f $RPM_BUILD_ROOT%{_libdir}/*.la -Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml2.spec +Index: VirtualBox-5.2.20/src/libs/libxml2-2.9.4/libxml2.spec =================================================================== ---- VirtualBox-5.2.16.orig/src/libs/libxml2-2.9.4/libxml2.spec -+++ VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml2.spec +--- VirtualBox-5.2.20.orig/src/libs/libxml2-2.9.4/libxml2.spec ++++ VirtualBox-5.2.20/src/libs/libxml2-2.9.4/libxml2.spec @@ -103,7 +103,7 @@ make install DESTDIR=%{buildroot} %if 0%{?with_python3} @@ -146,3 +146,36 @@ Index: VirtualBox-5.2.16/src/libs/libxml2-2.9.4/libxml2.spec make install DESTDIR=%{buildroot} %endif # with_python3 +Index: VirtualBox-5.2.20/src/libs/xpcom18a4/python/src/ErrorUtils.cpp +=================================================================== +--- VirtualBox-5.2.20.orig/src/libs/xpcom18a4/python/src/ErrorUtils.cpp ++++ VirtualBox-5.2.20/src/libs/xpcom18a4/python/src/ErrorUtils.cpp +@@ -439,8 +439,10 @@ char *PyTraceback_AsString(PyObject *exc + { // a temp scope so I can use temp locals. + #if PY_MAJOR_VERSION <= 2 + char *tempResult = PyString_AsString(obResult); +-#else ++#elif PY_MINOR_VERSION <= 6 + char *tempResult = PyUnicode_AsUTF8(obResult); ++#else ++ const char *tempResult = PyUnicode_AsUTF8(obResult); + #endif + result = (char *)PyMem_Malloc(strlen(tempResult)+1); + if (result==NULL) +Index: VirtualBox-5.2.20/src/libs/xpcom18a4/python/src/PyGBase.cpp +=================================================================== +--- VirtualBox-5.2.20.orig/src/libs/xpcom18a4/python/src/PyGBase.cpp ++++ VirtualBox-5.2.20/src/libs/xpcom18a4/python/src/PyGBase.cpp +@@ -183,7 +183,11 @@ PyG_Base::~PyG_Base() + // Get the correct interface pointer for this object given the IID. + void *PyG_Base::ThisAsIID( const nsIID &iid ) + { +- if (this==NULL) return NULL; ++#if PY_MINOR_VERSION <= 6 ++ if (!this) return NULL; ++#else ++ if (!this) return NULL; ++#endif + if (iid.Equals(NS_GET_IID(nsISupports))) + return (nsISupports *)(nsIInternalPython *)this; + if (iid.Equals(NS_GET_IID(nsISupportsWeakReference))) diff --git a/vbox-vboxadd-init-script.diff b/vbox-vboxadd-init-script.diff index 86aed93..4df3835 100644 --- a/vbox-vboxadd-init-script.diff +++ b/vbox-vboxadd-init-script.diff @@ -1,7 +1,7 @@ -Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh +Index: VirtualBox-5.2.20/src/VBox/Additions/linux/installer/vboxadd.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/Additions/linux/installer/vboxadd.sh -+++ VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh +--- VirtualBox-5.2.20.orig/src/VBox/Additions/linux/installer/vboxadd.sh ++++ VirtualBox-5.2.20/src/VBox/Additions/linux/installer/vboxadd.sh @@ -26,11 +26,14 @@ # Provides: vboxadd # Required-Start: @@ -18,7 +18,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh ### END INIT INFO ## @todo This file duplicates a lot of script with vboxdrv.sh. When making -@@ -138,18 +141,9 @@ module_build_log() +@@ -139,18 +142,9 @@ module_build_log() dev=/dev/vboxguest userdev=/dev/vboxuser @@ -37,7 +37,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh running_vboxguest() { lsmod | grep -q "vboxguest[^_-]" -@@ -192,12 +186,6 @@ do_vboxguest_non_udev() +@@ -193,12 +187,6 @@ do_vboxguest_non_udev() fail "Cannot create device $dev with major $maj and minor $min" } fi @@ -50,7 +50,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh if [ ! -c $userdev ]; then maj=10 -@@ -208,12 +196,6 @@ do_vboxguest_non_udev() +@@ -209,12 +197,6 @@ do_vboxguest_non_udev() rmmod vboxguest 2>/dev/null fail "Cannot create device $userdev with major $maj and minor $min" } @@ -63,7 +63,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh fi fi } -@@ -223,9 +205,8 @@ start() +@@ -224,9 +206,8 @@ start() begin "Starting." # If we got this far assume that the slow set-up has been done. QUICKSETUP=yes @@ -75,7 +75,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh no_udev=1 running_vboxguest || { rm -f $dev || { -@@ -238,7 +219,7 @@ start() +@@ -239,7 +220,7 @@ start() $MODPROBE vboxguest >/dev/null 2>&1 || { setup @@ -84,7 +84,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh fail "modprobe vboxguest failed" } case "$no_udev" in 1) -@@ -269,7 +250,8 @@ start() +@@ -270,7 +251,8 @@ start() rm -Rf /var/lib/VBoxGuestAdditions/lib if /usr/bin/VBoxClient --check3d 2>/dev/null; then mkdir -p /var/lib/VBoxGuestAdditions/lib @@ -94,7 +94,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh # SELinux for the OpenGL libraries, so that gdm can load them during the # acceleration support check. This prevents an "Oh no, something has gone # wrong!" error when starting EL7 guests. -@@ -280,6 +262,15 @@ start() +@@ -281,6 +263,15 @@ start() chcon -h -t lib_t "/var/lib/VBoxGuestAdditions/lib/libGL.so.1" fi echo "/var/lib/VBoxGuestAdditions/lib" > /etc/ld.so.conf.d/00vboxvideo.conf @@ -110,7 +110,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh fi ldconfig -@@ -414,9 +405,9 @@ create_udev_rule() +@@ -455,9 +446,9 @@ create_udev_rule() echo "KERNEL=${udev_fix}\"vboxuser\", NAME=\"vboxuser\", OWNER=\"vboxadd\", MODE=\"0666\"" >> /etc/udev/rules.d/60-vboxadd.rules fi } @@ -123,7 +123,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh # And a post-installation script for rebuilding modules when a new kernel # is installed. mkdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d -@@ -446,45 +437,21 @@ shared_folder_setup() +@@ -487,20 +478,13 @@ shared_folder_setup() ## @todo It would be nicer if the kernel module just parsed parameters # itself instead of needing a separate binary to do that. ln -sf "${INSTALL_DIR}/other/mount.vboxsf" /sbin @@ -142,24 +142,35 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh # setup_script setup() { -- export BUILD_TYPE -- export USERNAME -- -- MODULE_SRC="$INSTALL_DIR/src/vboxguest-$INSTALL_VER" -- BUILDINTMP="$MODULE_SRC/build_in_tmp" -- chcon -t bin_t "$BUILDINTMP" > /dev/null 2>&1 -- -- test -z "${INSTALL_NO_MODULE_BUILDS}" && setup_modules -- create_vbox_user -- create_udev_rule -- test -z "${INSTALL_NO_MODULE_BUILDS}" && create_module_rebuild_script -- test -n "${QUICKSETUP}" && return 0 -- shared_folder_setup -- if running_vboxguest || running_vboxadd; then -- info "Running kernel modules will not be replaced until the system is restarted" ++<<<<<<< found + export BUILD_TYPE + export USERNAME + +@@ -517,16 +501,33 @@ setup() + shared_folder_setup + if running_vboxguest || running_vboxadd; then + info "Running kernel modules will not be replaced until the system is restarted" - fi - return 0 ++||||||| expected ++ export BUILD_TYPE ++ export USERNAME ++ ++ MODULE_SRC="$INSTALL_DIR/src/vboxguest-$INSTALL_VER" ++ BUILDINTMP="$MODULE_SRC/build_in_tmp" ++ chcon -t bin_t "$BUILDINTMP" > /dev/null 2>&1 ++ ++ test -z "${INSTALL_NO_MODULE_BUILDS}" && setup_modules ++ create_vbox_user ++ create_udev_rule ++ test -z "${INSTALL_NO_MODULE_BUILDS}" && create_module_rebuild_script ++ test -n "${QUICKSETUP}" && return 0 ++ shared_folder_setup ++ if running_vboxguest || running_vboxadd; then ++ info "Running kernel modules will not be replaced until the system is restarted" ++======= + begin "Recompiling VirtualBox kernel module, NOT. It has been packaged." ++>>>>>>> replacement + succ_msg } @@ -174,7 +185,7 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh depmod # Remove old module sources -@@ -494,13 +461,14 @@ cleanup() +@@ -536,13 +537,14 @@ cleanup() fi # Clean-up X11-related bits @@ -193,10 +204,10 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd.sh fi rm /etc/udev/rules.d/60-vboxadd.rules 2>/dev/null } -Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd-service.sh +Index: VirtualBox-5.2.20/src/VBox/Additions/linux/installer/vboxadd-service.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/Additions/linux/installer/vboxadd-service.sh -+++ VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd-service.sh +--- VirtualBox-5.2.20.orig/src/VBox/Additions/linux/installer/vboxadd-service.sh ++++ VirtualBox-5.2.20/src/VBox/Additions/linux/installer/vboxadd-service.sh @@ -26,7 +26,7 @@ # Provides: vboxadd-service # Required-Start: vboxadd @@ -206,10 +217,10 @@ Index: VirtualBox-5.2.14/src/VBox/Additions/linux/installer/vboxadd-service.sh # Default-Stop: 0 1 6 # X-Conflicts-With: systemd-timesyncd.service # Description: VirtualBox Additions Service -Index: VirtualBox-5.2.14/src/VBox/Installer/linux/vboxautostart-service.sh +Index: VirtualBox-5.2.20/src/VBox/Installer/linux/vboxautostart-service.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/Installer/linux/vboxautostart-service.sh -+++ VirtualBox-5.2.14/src/VBox/Installer/linux/vboxautostart-service.sh +--- VirtualBox-5.2.20.orig/src/VBox/Installer/linux/vboxautostart-service.sh ++++ VirtualBox-5.2.20/src/VBox/Installer/linux/vboxautostart-service.sh @@ -23,7 +23,7 @@ # Provides: vboxautostart-service # Required-Start: vboxdrv @@ -219,10 +230,10 @@ Index: VirtualBox-5.2.14/src/VBox/Installer/linux/vboxautostart-service.sh # Default-Stop: 0 1 6 # Description: VirtualBox autostart service ### END INIT INFO -Index: VirtualBox-5.2.14/src/VBox/Installer/linux/vboxballoonctrl-service.sh +Index: VirtualBox-5.2.20/src/VBox/Installer/linux/vboxballoonctrl-service.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/Installer/linux/vboxballoonctrl-service.sh -+++ VirtualBox-5.2.14/src/VBox/Installer/linux/vboxballoonctrl-service.sh +--- VirtualBox-5.2.20.orig/src/VBox/Installer/linux/vboxballoonctrl-service.sh ++++ VirtualBox-5.2.20/src/VBox/Installer/linux/vboxballoonctrl-service.sh @@ -23,7 +23,7 @@ # Provides: vboxballoonctrl-service # Required-Start: vboxdrv @@ -232,10 +243,10 @@ Index: VirtualBox-5.2.14/src/VBox/Installer/linux/vboxballoonctrl-service.sh # Default-Stop: 0 1 6 # Description: VirtualBox watchdog daemon ### END INIT INFO -Index: VirtualBox-5.2.14/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh +Index: VirtualBox-5.2.20/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh -+++ VirtualBox-5.2.14/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh +--- VirtualBox-5.2.20.orig/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh ++++ VirtualBox-5.2.20/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh @@ -31,7 +31,7 @@ # Provides: testboxscript-service # Required-Start: $network @@ -245,10 +256,10 @@ Index: VirtualBox-5.2.14/src/VBox/ValidationKit/testboxscript/linux/testboxscrip # Default-Stop: 0 1 6 # Description: TestBoxScript service ### END INIT INFO -Index: VirtualBox-5.2.14/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh +Index: VirtualBox-5.2.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh -+++ VirtualBox-5.2.14/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh +--- VirtualBox-5.2.20.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh ++++ VirtualBox-5.2.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh @@ -31,7 +31,7 @@ # Provides: vboxtxs # Required-Start: $network @@ -258,10 +269,10 @@ Index: VirtualBox-5.2.14/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs # Default-Stop: 0 1 6 # Description: VirtualBox Test Execution Service ### END INIT INFO -Index: VirtualBox-5.2.14/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh +Index: VirtualBox-5.2.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh =================================================================== ---- VirtualBox-5.2.14.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh -+++ VirtualBox-5.2.14/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh +--- VirtualBox-5.2.20.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh ++++ VirtualBox-5.2.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh @@ -31,7 +31,7 @@ # Provides: vboxtxs # Required-Start: $network diff --git a/vboxconfig.sh b/vboxconfig.sh index 18efcb4..e5addfa 100644 --- a/vboxconfig.sh +++ b/vboxconfig.sh @@ -21,7 +21,7 @@ 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' to install them. Quitting .." + echo "Use 'sudo zypper install virtualbox-host-source kernel-devel kernel-default-devel' to install them. Quitting .." exit 1 fi # diff --git a/vboxdrv.sh b/vboxdrv.sh index f73bfd5..f519390 100644 --- a/vboxdrv.sh +++ b/vboxdrv.sh @@ -344,6 +344,30 @@ stop_vms() fi } +start_vms() +{ +OLD_IFS=$IFS +IFS=$'\n' +# read config file +[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox +#echo "Symbols are $VBOXAUTOSTART_DB and $VBOXAUTOSTART_CONFIG" +# read autostart config file +if [ -r $VBOXAUTOSTART_CONFIG ]; then + VBoxManage list vms +# find all the files of type user.start + var=$(ls $VBOXAUTOSTART_DB | grep start | grep -v auto) +# process each file of that type + for i in $var; do +# Extract the user name - the first word on the line + user=$(echo $i | head -n1 | cut -d "." -f1) +# autostart the VMs for that user + su $user -c "/usr/lib/virtualbox/VBoxAutostart --start --config $VBOXAUTOSTART_CONFIG" + done +fi +IFS=$OLD_IFS + +} + cleanup() { for i in /lib/modules/*; do @@ -407,6 +431,7 @@ dmnstatus() case "$1" in start) start + start_vms ;; stop) stop_vms diff --git a/vboxes.service b/vboxes.service deleted file mode 100644 index 47df4be..0000000 --- a/vboxes.service +++ /dev/null @@ -1,19 +0,0 @@ -# Autostart configured Virtual Box VMs -# configuration: /etc/sysconfig/vbox - -[Unit] -SourcePath=/usr/lib/virtualbox/vboxes.sh -Description=Autostart Headless Virtual Box VMs -Before=multi-user.target graphical.target -After=network-online.target vboxdrv.service -Wants=network-online.target vboxdrv.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/lib/virtualbox/vboxes.sh start -ExecStop=/usr/lib/virtualbox/vboxes.sh stop - -[Install] -WantedBy=multi-user.target - diff --git a/vboxes.sh b/vboxes.sh deleted file mode 100644 index 22878d6..0000000 --- a/vboxes.sh +++ /dev/null @@ -1,227 +0,0 @@ -#!/bin/sh -# -# description: Starts and stops vbox autostart VMs. -# Based on -# http://www.amiryan.org/2009/11/04/virtualbox-init-d-service-autostart-scriptu -# -# By Richard Bos - May 2010 -# -# Converted to standalone script for systemd environments -# -# By Hans-Peter jansen - July 2017 -# - -PRG=$(basename $0) -SERVICE="Virtualbox machines" - -VBOXMGR_BIN=/usr/lib/virtualbox/VBoxManage -if [[ ! -x $VBOXMGR_BIN ]]; then - echo "$VBOXMGR_BIN does not exist" - if [ "$1" = "stop" ]; then - exit 0 - else - exit 6 - fi -fi - -# read config file -[ -r /etc/sysconfig/vbox ] && . /etc/sysconfig/vbox - -start() { - - N=1 - for VBOX in $VBOX_AUTOSTART; do - - if grep -q \; <<< "$VBOX"; then - VBOX_NAME[$N]=$(cut -d\; -f1 <<< "$VBOX") - VBOX_USER[$N]=$(cut -d\; -f2 <<< "$VBOX") - else - VBOX_NAME[$N]="$VBOX" - VBOX_USER[$N]="" - fi - N=$(($N+1)) - done - - VBOXES=${#VBOX_NAME[*]} - - if [ $VBOXES -eq 0 ]; then - # The virtual machines have to be configured in /etc/sysconfig/vbox - echo "Starting $SERVICE: no virtual machines configured" - else - - N=1 - echo "Starting $SERVICE: " - while [[ $N -le $VBOXES ]]; do - if [[ $N -lt $VBOXES ]]; then - echo -n "${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}), " - else - echo "${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]})" - fi - N=$(($N+1)) - done - - N=1 - while [[ $N -le $VBOXES ]]; do - - if [[ -n "${VBOX_USER[$N]}" ]]; then - - if getent passwd ${VBOX_USER[$N]} &>/dev/null; then - - # The tag "Name:" occurs in multiple sections. Require at least 7 blanks - # with an additional flexible amount of spaces. At the moment of writing - # 13 spaces are needed. - VBOX_RUNNING=$(su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN list --long runningvms" | - sed -n 's/^Name:[[:blank:]]\{7\} *//p' | grep -w "${VBOX_NAME[$N]}") - - if [[ -z "$VBOX_RUNNING" ]]; then - - VBOX_PRESENT=$(su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN list --long vms" | - sed -n 's/^Name:[[:blank:]]\{7\} *//p' | grep -w "${VBOX_NAME[$N]}") - - if [[ -n "$VBOX_PRESENT" ]]; then - - # start VM with VBoxManage in headless mode - # unlike VBoxHeadless, VBoxManage waits until VM is running - su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN -q startvm "${VBOX_NAME[$N]}" -type headless" &> /tmp/$PRG.$$ - RETVAL=$? - - if [[ $RETVAL != 0 ]]; then - echo "Starting virtual machine: ${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}) failed: " - cat /tmp/$PRG.$$ - fi - - rm /tmp/$PRG.$$ - - else - echo "Virtual machine: ${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}) does not exist" - fi - - else - echo "Virtual machine: ${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}) is already running" - fi - - else - echo "Virtual machine: ${VBOX_NAME[$N]}, VBOX_USER: ${VBOX_USER[$N]} does not exist" - fi - - else - echo "Virtual machine: ${VBOX_NAME[$N]}: VBOX_USER not configured" - fi - - N=$(($N+1)) - done - fi -} - -stop() { - - for VBOX in $VBOX_AUTOSTART; do - - if grep -q \; <<< "$VBOX"; then - VBOX_USER=$(cut -d\; -f2 <<< "$VBOX") - - # Only add the user to the list, if not present yet - if ! grep -qw "$VBOX_USER" <<< "$VBOX_USERS"; then - VBOX_USERS="$VBOX_USERS $VBOX_USER" - fi - fi - done - - N=1 - for VBOX_USER in $VBOX_USERS; do - - VBOX_RUNNING=$(su $VBOX_USER -c "$VBOXMGR_BIN list --long runningvms" | - sed -n 's/^Name:[[:blank:]]\{7\} *//p') - - for VBOX in $VBOX_RUNNING; do - VBOX_NAME[$N]="$VBOX" - VBOX_USER[$N]="$VBOX_USER" - N=$(($N+1)) - done - done - - VBOXES=${#VBOX_NAME[*]} - - if [[ $VBOXES -eq 0 ]]; then - echo "Shutting down $SERVICE: no virtual machines running." - else - - echo "Shutting down $SERVICE: " - N=1 - while [[ $N -le $VBOXES ]]; do - echo -n "${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}): " - su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN -q controlvm ${VBOX_NAME[$N]} savestate" - N=$(($N+1)) - done - fi -} - -status() { - - for VBOX in $VBOX_AUTOSTART; do - - if grep -q \; <<< "$VBOX"; then - VBOX_USER=$(cut -d\; -f2 <<< "$VBOX") - - # Only add the user to the list, if not present yet - if ! grep -qw "$VBOX_USER" <<< "$VBOX_USERS"; then - VBOX_USERS="$VBOX_USERS $VBOX_USER" - fi - fi - done - - N=1 - for VBOX_USER in $VBOX_USERS; do - # The tag "Name:" occurs in multiple sections. Require at least 7 blanks - # with an additional flexible amount of spaces. At the moment of writing - # 13 spaces are needed. - VBOX_RUNNING=$(su $VBOX_USER -c "$VBOXMGR_BIN list --long runningvms" | - sed -n 's/^Name:[[:blank:]]\{7\} *//p') - - for VBOX in $VBOX_RUNNING; do - VBOX_NAME[$N]="$VBOX" - VBOX_USER[$N]="$VBOX_USER" - N=$(($N+1)) - done - done - - VBOXES=${#VBOX_NAME[*]} - - if [[ $VBOXES -eq 0 ]]; then - echo "$SERVICE: no virtual machines running." - else - N=1 - while [[ $N -le $VBOXES ]]; do - # The long sed line changes the output from: - # running (since 2010-04-25T14:51:57.373000000) - # to: - # running (since 2010-04-25 14:51:57) - # - STATE=$(su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN showvminfo "${VBOX_NAME[$N]}"" | - sed -n 's/State: *//p' | - sed 's/\([0-9][0-9]\)\.[0-9]\{9\}/\1/;s/\([0-9][0-9]\)T\([0-9][0-9]\)/\1 \2/') - printf "%-56s %s\n" "${VBOX_NAME[$N]} (user: ${VBOX_USER[$N]}):" "$STATE" - N=$(($N+1)) - done - fi -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|force-reload) - stop - start - ;; - status) - status - ;; - *) - echo "Usage: $PRG {start|stop|restart|force-reload|status}" >&2 - exit 3 - ;; -esac diff --git a/virtualbox-sysconfig.vbox b/virtualbox-sysconfig.vbox deleted file mode 100644 index 792b664..0000000 --- a/virtualbox-sysconfig.vbox +++ /dev/null @@ -1,23 +0,0 @@ -## Path: System/Virtual Machines/VBox -## Description: Virtual box machines to autostart during boot -## Type: string -## Default: "" -# -# Configuration file for the script /etc/init.d/vboxes -# -# The variable VBOX_AUTOSTART holds the virtual machines to be started during -# boot time. One entry must contain the virtual machine name and the -# virtual machine owner. They are separated with a ";". Multiple entries -# (virtual machines) are separated with a space. -# -# Examples: -# MachineName1;user1 -# -# One virtual machine: -# openSUSE_Factory;vbox -# -# Multiple virtual machines: -# openSUSE_Factory;vbox openSUSE_stable;suse -# -VBOX_AUTOSTART="" - diff --git a/virtualbox.changes b/virtualbox.changes index e03294e..78c9298 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,71 @@ +------------------------------------------------------------------- +Tue Nov 6 08:47:25 UTC 2018 - Dominique Leuenberger + +- Fix / simplify python3-virtualbox packages files section. Do not + rely on --record-rpm for any version of python, since we can't + use it across the band. + +------------------------------------------------------------------- +Mon Nov 5 22:14:57 UTC 2018 - Larry Finger + +- Made changes requested in comments for request 646211. + 1. Sustituted /usr/lib/python3.7/site-packages/ => %python3_sitelib + 2. Reverted change that eliminated use of %{_tmppath}/SITE_FILES for Python 3.6 + 3. As vboxapisetup.py in Python 3.7 no longer accepts the --record-rpm switch, + SITE_FILES does not exist, and the individual files must still be listed. + +------------------------------------------------------------------- +Sat Nov 3 04:04:06 UTC 2018 - Larry Finger + +- Make necessary updates so that VirtualBox will build with Python 3.7 - boo#1113894 + Change kernel module code to build against the API changes in kernel 4.20 - This change + adds file "fixes_for_4.20.patch". + +------------------------------------------------------------------- +Fri Nov 2 09:48:23 UTC 2018 - Dominique Leuenberger + +- Require(pre) virtualbox by the -qt package: otherewise it might + happen that virtualbox-qt is installed before virtualbox, which + then results in files being assigned to group 'root' instead of + 'vboxusers', as the group is only created later. + +------------------------------------------------------------------- +Mon Oct 29 20:11:57 UTC 2018 - Larry Finger + +- Version bump to 5.2.20 (released October 16 2018 by Oracle) + +This is a maintenance release. The following items were fixed and/or added: + +VMM: fixed task switches triggered by INTn instruction (bug #17979) +Storage: fixed connecting to certain iSCSI targets (bug #17507) +Storage: fixed handling of flush requests when configured to be ignored when the host I/O cache is used (bug #17573) +Drag and drop: implemented support for UNC paths (bug #17146) +Drag and drop: fixed resuming operation when restoring from a saved state (bug #17649) +Drag and drop: fixed copying files with long file names (> 248 characters) from guests to Windows hosts (bug #17447) +Drag and drop: fixed handling files with Unicode names on Windows guests (bug #15501) +Drag and drop: fixed copying empty (0-byte) files to / from guests (bugs #14863 + #17443) +Drag and drop: fixed copying over files from hosts to Linux guests (bug #16025) +Networking: restore connectivity for guests bridged to host adapters that were unavailable temporarily (Windows hosts, bug #17090) +Guest Control: fixed hang when using --wait-stdout and/or --wait-stderr (bug #17386). Needs updating Guest Additions +Video recording: fixed starting video recording on VM power up (bug #17307) +Linux Additions: various build fixes for kernel modules on recent distributions, and made sure modules end up in initramfs files +Linux Additions: build fixes for 4.19, thank you Larry Finger +Linux Additions: various small fixes for video driver + +This version also addresses the following vulnerabilities: CVE-2018-0732, CVE-2018-2909, CVE-2018-3287 + CVE-2018-3288, CVE-2018-3289, CVE-2018-3290, CVE-2018-3291, CVE-2018-3292, CVE-2018-3293, + CVE-2018-3294, CVE-2018-3295, CVE-2018-3296, CVE-2018-3297, and CVE-2018-3298. bsc#1112097 + +------------------------------------------------------------------- +Thu Sep 20 19:24:48 UTC 2018 - Larry Finger + +- Fix autostart of VMs, which is no longer handled by the vboxes.service. + A new routine "start_vms" is added to the start section of vboxdrv.sh, + which is called by vboxdrv.service. Files "vboxes.service", "vboxes.sh", + and "virtualbox-sysconfig.vbox" are deleted. + + These changes are to satisfy bsc#1107769. + ------------------------------------------------------------------- Thu Aug 30 16:54:26 UTC 2018 - Larry Finger diff --git a/virtualbox.spec b/virtualbox.spec index c9fd420..02c9ef9 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -40,7 +40,7 @@ python3 -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile %define _udevrulesdir %{_sysconfdir}/udev/rules.d Name: virtualbox # ********* If the VB version exceeds 5.2.x, notify the libvirt maintainer!! -Version: 5.2.18 +Version: 5.2.20 Release: 0 Summary: VirtualBox is an Emulator License: GPL-2.0-or-later @@ -62,16 +62,12 @@ Source8: %{name}-guest-preamble Source9: %{name}-wrapper.sh Source10: %{name}-LocalConfig.kmk Source11: %{name}-60-vboxdrv.rules -Source13: %{name}-sysconfig.vbox Source14: vboxdrv.service Source15: vboxadd-service.service Source16: vboxconfig.sh Source17: vboxguestconfig.sh Source18: fix_usb_rules.sh Source19: vboxdrv.sh -# init script to start virtual boxes during boot, to be configured via /etc/sysconfig/vbox bnc#582398 -Source20: vboxes.sh -Source21: vboxes.service Source98: %{name}-rpmlintrc Source99: %{name}-patch-source.sh #rework init scripts to fit suse needs @@ -132,10 +128,11 @@ Patch124: gcc8-configure.patch Patch125: fixes_for_Qt5.11.patch # Switch to Python 3.6 Patch126: switch_to_python3.6.patch -# Fix 32-bit builds Patch127: fix_32_bit_builds.patch # Fix API changes for kernel 4.19+ Patch128: fixes_for_4.19.patch +# Fix API changes for kernel 4.20+ +Patch129: fixes_for_4.20.patch # BuildRequires: LibVNCServer-devel BuildRequires: SDL-devel @@ -173,6 +170,7 @@ BuildRequires: libqt5-qtbase-devel BuildRequires: libqt5-qtx11extras-devel BuildRequires: libvpx-devel BuildRequires: libxslt-devel +BuildRequires: libzio-devel BuildRequires: module-init-tools BuildRequires: pam-devel BuildRequires: pulseaudio-devel @@ -244,7 +242,7 @@ GNU Public License (GPL). %package qt Summary: Qt GUI part for %{name} Group: System/Emulators/PC -Requires: %{name} = %{version} +Requires(pre): %{name} = %{version} Requires(pre): permissions Provides: %{name}-gui = %{version} #this is needed during update to trigger installing qt subpackage @@ -438,6 +436,7 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL. %patch126 -p1 %patch127 -p1 %patch128 -p1 +%patch129 -p1 #copy user manual cp %{SOURCE1} UserManual.pdf @@ -696,18 +695,10 @@ install -m 0755 %{SOURCE16} %{buildroot}/sbin/vboxconfig install -m 0755 %{SOURCE17} %{buildroot}/sbin/vboxguestconfig install -m 0755 %{SOURCE18} %{buildroot}/sbin/vbox-fix-usb-rules.sh install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh -install -m 0755 %{SOURCE20} %{buildroot}%{_vbox_instdir}/vboxes.sh -install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxes.service -ln -s %{_vbox_instdir}/vboxes.sh %{buildroot}%{_sbindir}/rcvboxes -ln -s %{_vbox_instdir}/vboxdrv.sh %{buildroot}%{_sbindir}/rcvboxdrv # Init script to start virtual boxes 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}/vboxes.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxes.service -# sysconfig file intended for vboxes script -install -d -m 755 %{buildroot}%{_fillupdir} -install -m 640 %{SOURCE13} %{buildroot}%{_fillupdir}/sysconfig.vbox # config file for vboxdrv script and vboxweb install -d -m 755 %{buildroot}%{_sysconfdir}/vbox @@ -718,7 +709,7 @@ install -m 0755 -D src/VBox/Installer/linux/VBoxCreateUSBNode.sh %{buildroot}%{_ echo "entering python-virtualbox install section" ###################################################### pushd out/linux.*/release/bin/sdk/installer -VBOX_INSTALL_PATH=%{_vbox_instdir} python3 vboxapisetup.py install --prefix=%{_prefix} --root=%{buildroot} --record-rpm=%{_tmppath}/SITE_FILES +VBOX_INSTALL_PATH=%{_vbox_instdir} python3 vboxapisetup.py install --prefix=%{_prefix} --root=%{buildroot} popd install -d -m 755 %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom cp -r out/linux.*/release/bin/sdk/bindings/xpcom/python %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom @@ -923,16 +914,11 @@ export DISABLE_RESTART_ON_UPDATE=yes %dir %{_unitdir} %dir %{_unitdir}/multi-user.target.wants /usr/lib/virtualbox/vboxdrv.sh -/usr/lib/virtualbox/vboxes.sh %{_unitdir}/vboxdrv.service -%{_unitdir}/vboxes.service %{_unitdir}/multi-user.target.wants/vboxdrv.service -%{_unitdir}/multi-user.target.wants/vboxes.service %dir %{_sysconfdir}/vbox +##%attr(1775,root,vboxusers) %{_sysconfdir}/vbox %config %{_sysconfdir}/vbox/vbox.cfg -%{_fillupdir}/sysconfig.vbox -%{_sbindir}/rcvboxes -%{_sbindir}/rcvboxdrv /sbin/vboxconfig %{_vbox_instdir}/VBoxCreateUSBNode.sh %verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetNAT @@ -992,13 +978,15 @@ export DISABLE_RESTART_ON_UPDATE=yes %dir /media %endif -%files -n python3-%{name} -f %{_tmppath}/SITE_FILES +%files -n python3-%{name} %defattr(-, root, root) %dir %{_vbox_instdir}/sdk %dir %{_vbox_instdir}/sdk/bindings %dir %{_vbox_instdir}/sdk/bindings/xpcom %{_vbox_instdir}/sdk/bindings/xpcom/python -%attr(0755, root, root) %{_vbox_instdir}/VBoxPython3_6m.so +%{_vbox_instdir}/VBoxPython*.so +%{python3_sitelib}/vboxapi-1.0-*.egg-info +%{python3_sitelib}/vboxapi/ %files devel %defattr(-,root, root)