You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
4.1 KiB

https://github.com/archlinux/svntogit-community/blob/b103146beee8b7c70d04685033a8536aed2e5aea/trunk/002-python310.patch
https://github.com/archlinux/svntogit-community/blob/b103146beee8b7c70d04685033a8536aed2e5aea/trunk/003-pyunicode.patch
https://www.virtualbox.org/changeset/90537/vbox
https://www.virtualbox.org/changeset/86623/vbox
--- a/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
+++ b/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
@@ -84,7 +84,11 @@
# define MANGLE_MODULE_INIT(a_Name) RT_CONCAT(a_Name, MODULE_NAME_SUFFIX)
# endif
# ifdef VBOX_PYXPCOM_VERSIONED
-# if PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+# if PY_VERSION_HEX >= 0x030a0000 && PY_VERSION_HEX < 0x030b0000
+# define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_10")
+# define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_10)
+
+# elif PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
# define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_9")
# define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_9)
--- a/src/libs/xpcom18a4/python/Makefile.kmk
+++ b/src/libs/xpcom18a4/python/Makefile.kmk
@@ -4,7 +4,7 @@
#
#
-# Copyright (C) 2009-2017 Oracle Corporation
+# Copyright (C) 2009-2021 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
@@ -20,7 +20,7 @@
#
# List of supported Python versions, defining a number of
-# VBOX_PYTHON[26|27|31|32|32M|33|33M|34|34M|35|35M|36|36M|37|37M|38|38M|39|39M|DEF]_[INC|LIB] variables
+# VBOX_PYTHON[26|27|31|32|32M|33|33M|34|34M|35|35M|36|36M|37|37M|38|38M|39|39M|310|310M|DEF]_[INC|LIB] variables
# which get picked up below.
#
ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script.
@@ -646,6 +646,52 @@
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
@@ -730,4 +776,3 @@
include $(FILE_KBUILD_SUB_FOOTER)
-
--- a/src/libs/xpcom18a4/python/src/PyXPCOM.h
+++ b/src/libs/xpcom18a4/python/src/PyXPCOM.h
@@ -137,12 +137,14 @@
# define PyInt_Check(o) PyLong_Check(o)
# define PyInt_AsLong(o) PyLong_AsLong(o)
# define PyNumber_Int(o) PyNumber_Long(o)
-# ifndef PyUnicode_AsUTF8
-# define PyUnicode_AsUTF8(o) _PyUnicode_AsString(o)
+# 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
+# ifndef PyUnicode_AsUTF8AndSize
+# define PyUnicode_AsUTF8AndSize(o,s) _PyUnicode_AsStringAndSize(o,s)
+# endif
# endif
-# ifndef PyUnicode_AsUTF8AndSize
-# define PyUnicode_AsUTF8AndSize(o,s) _PyUnicode_AsStringAndSize(o,s)
-# endif
typedef struct PyMethodChain
{
PyMethodDef *methods;