File vbox-python-py310.patch of Package virtualbox.openSUSE_Leap_15.3_Update
# https://www.virtualbox.org/changeset/90537/vbox
Index: VirtualBox-6.1.40/src/libs/xpcom18a4/python/Makefile.kmk
===================================================================
--- VirtualBox-6.1.40.orig/src/libs/xpcom18a4/python/Makefile.kmk
+++ VirtualBox-6.1.40/src/libs/xpcom18a4/python/Makefile.kmk
@@ -625,6 +625,52 @@ VBoxPython3_10m_x86_LIBS = $(VBOX_
endif
endif
+ifdef VBOX_PYTHON310_INC
+#
+# Python 3.10 version
+#
+DLLS += VBoxPython3_10
+VBoxPython3_10_EXTENDS = VBoxPythonBase
+VBoxPython3_10_EXTENDS_BY = appending
+VBoxPython3_10_TEMPLATE = XPCOM
+VBoxPython3_10_INCS = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_LIBS = $(VBOX_PYTHON310_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+ ifdef VBOX_PYTHON310_LIB_X86
+DLLS += VBoxPython3_10_x86
+VBoxPython3_10_x86_EXTENDS = VBoxPythonBase_x86
+VBoxPython3_10_x86_EXTENDS_BY = appending
+VBoxPython3_10_x86_TEMPLATE = XPCOM
+VBoxPython3_10_x86_INCS = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_x86_LIBS = $(VBOX_PYTHON310_LIB_X86)
+ endif
+ endif
+endif
+
+ifdef VBOX_PYTHON310M_INC
+#
+# Python 3.10 version with pymalloc
+#
+DLLS += VBoxPython3_10m
+VBoxPython3_10m_EXTENDS = VBoxPythonBase_m
+VBoxPython3_10m_EXTENDS_BY = appending
+VBoxPython3_10m_TEMPLATE = XPCOM
+VBoxPython3_10m_INCS = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_LIBS = $(VBOX_PYTHON310M_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+ ifdef VBOX_PYTHON310M_LIB_X86
+DLLS += VBoxPython3_10m_x86
+VBoxPython3_10m_x86_EXTENDS = VBoxPythonBase_x86_m
+VBoxPython3_10m_x86_EXTENDS_BY = appending
+VBoxPython3_10m_x86_TEMPLATE_ = XPCOM
+VBoxPython3_10m_x86_INCS = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_x86_LIBS = $(VBOX_PYTHON310M_LIB_X86)
+ endif
+ endif
+endif
+
ifdef VBOX_PYTHONDEF_INC
#
# Python without versioning
Index: VirtualBox-6.1.40/src/libs/xpcom18a4/python/src/PyXPCOM.h
===================================================================
--- VirtualBox-6.1.40.orig/src/libs/xpcom18a4/python/src/PyXPCOM.h
+++ VirtualBox-6.1.40/src/libs/xpcom18a4/python/src/PyXPCOM.h
@@ -137,7 +137,7 @@ inline PyObject *PyBool_FromLong(long ok
# define PyInt_Check(o) PyLong_Check(o)
# define PyInt_AsLong(o) PyLong_AsLong(o)
# define PyNumber_Int(o) PyNumber_Long(o)
-# if PY_VERSION_HEX <= 0x03030000 /* 3.3 added PyUnicode_AsUTF8AndSize */
+# if !defined(Py_LIMITED_API) && PY_VERSION_HEX <= 0x03030000 /* 3.3 added PyUnicode_AsUTF8AndSize */
# ifndef PyUnicode_AsUTF8
# define PyUnicode_AsUTF8(o) _PyUnicode_AsString(o)
# endif