commit 570d5b78fcd1bafc1d4efb4e72ed29b40beb6fb1
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Mon Jul 10 18:16:04 2023 +0100
Fix build with python-3.12
...python3.11.patch => VirtualBox-python3.12.patch | 75 ++++++++++++++++++++--
VirtualBox.spec | 2 +-
2 files changed, 69 insertions(+), 8 deletions(-)
---
diff --git a/VirtualBox-python3.11.patch b/VirtualBox-python3.12.patch
similarity index 59%
rename from VirtualBox-python3.11.patch
rename to VirtualBox-python3.12.patch
index 5a75f5a..eeafed6 100644
--- a/VirtualBox-python3.11.patch
+++ b/VirtualBox-python3.12.patch
@@ -5,10 +5,21 @@
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 python3.7 python3.7m python3.8
python3.8m python3.9 python3.9m python3.10 python3.10m"
-+ SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4
python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8
python3.8m python3.9 python3.9m python3.10 python3.10m python3.11 python3.11m"
++ SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4
python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8
python3.8m python3.9 python3.9m python3.10 python3.10m python3.11 python3.11m python3.12
python3.12m"
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
+--- ./src/libs/xpcom18a4/python/gen_python_deps.py.python3.11 2023-04-17
16:58:21.000000000 +0100
++++ ./src/libs/xpcom18a4/python/gen_python_deps.py 2023-07-10 17:59:12.392551776 +0100
+@@ -26,7 +26,7 @@ from __future__ import print_function
+ import os,sys
+ from distutils.version import StrictVersion
+
+-versions = ["2.6", "2.7", "3.1", "3.2",
"3.2m", "3.3", "3.3m", "3.4", "3.4m",
"3.5", "3.5m", "3.6", "3.6m", "3.7",
"3.7m", "3.8", "3.8m", "3.9", "3.9m",
"3.10", "3.10m", "3.11", "3.11m" ]
++versions = ["2.6", "2.7", "3.1", "3.2",
"3.2m", "3.3", "3.3m", "3.4", "3.4m",
"3.5", "3.5m", "3.6", "3.6m", "3.7",
"3.7m", "3.8", "3.8m", "3.9", "3.9m",
"3.10", "3.10m", "3.11", "3.11m",
"3.12", "3.12m" ]
+ prefixes = ["/usr", "/usr/local", "/opt",
"/opt/local"]
+ known = {}
+
--- ./src/libs/xpcom18a4/python/Makefile.kmk.python3.11 2023-04-17 16:58:21.000000000
+0100
+++ ./src/libs/xpcom18a4/python/Makefile.kmk 2023-04-18 20:34:47.463630061 +0100
@@ -30,7 +30,7 @@ include $(KBUILD_PATH)/subheader.kmk
@@ -16,11 +27,11 @@
#
# 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|310|310M|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|311|311M|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|311|311M|312|312M|DEF]_[INC|LIB]
variables
# which get picked up below.
#
ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script.
-@@ -665,6 +665,52 @@ ifndef VBOX_ONLY_SDK
+@@ -665,6 +665,98 @@ ifndef VBOX_ONLY_SDK
endif
endif
@@ -70,26 +81,76 @@
+ endif
+ endif
+
++ ifdef VBOX_PYTHON312_INC
++ #
++ # Python 3.12 version
++ #
++ DLLS += VBoxPython3_12
++ VBoxPython3_12_EXTENDS = VBoxPythonBase
++ VBoxPython3_12_EXTENDS_BY = appending
++ VBoxPython3_12_TEMPLATE = XPCOM
++ VBoxPython3_12_INCS = $(VBOX_PYTHON312_INC)
++ VBoxPython3_12_LIBS = $(VBOX_PYTHON312_LIB)
++
++ ifdef VBOX_WITH_32_ON_64_MAIN_API
++ ifdef VBOX_PYTHON312_LIB_X86
++ DLLS += VBoxPython3_12_x86
++ VBoxPython3_12_x86_EXTENDS = VBoxPythonBase_x86
++ VBoxPython3_12_x86_EXTENDS_BY = appending
++ VBoxPython3_12_x86_TEMPLATE = XPCOM
++ VBoxPython3_12_x86_INCS = $(VBOX_PYTHON312_INC)
++ VBoxPython3_12_x86_LIBS = $(VBOX_PYTHON312_LIB_X86)
++ endif
++ endif
++ endif
++
++ ifdef VBOX_PYTHON312M_INC
++ #
++ # Python 3.12 version with pymalloc
++ #
++ DLLS += VBoxPython3_12m
++ VBoxPython3_12m_EXTENDS = VBoxPythonBase_m
++ VBoxPython3_12m_EXTENDS_BY = appending
++ VBoxPython3_12m_TEMPLATE = XPCOM
++ VBoxPython3_12m_INCS = $(VBOX_PYTHON312M_INC)
++ VBoxPython3_12m_LIBS = $(VBOX_PYTHON312M_LIB)
++
++ ifdef VBOX_WITH_32_ON_64_MAIN_API
++ ifdef VBOX_PYTHON312M_LIB_X86
++ DLLS += VBoxPython3_12m_x86
++ VBoxPython3_12m_x86_EXTENDS = VBoxPythonBase_x86_m
++ VBoxPython3_12m_x86_EXTENDS_BY = appending
++ VBoxPython3_12m_x86_TEMPLATE_ = XPCOM
++ VBoxPython3_12m_x86_INCS = $(VBOX_PYTHON312M_INC)
++ VBoxPython3_12m_x86_LIBS = $(VBOX_PYTHON312M_LIB_X86)
++ endif
++ endif
++ endif
++
ifdef VBOX_PYTHONDEF_INC
#
# Python without versioning
-@@ -707,7 +753,7 @@ ifndef VBOX_ONLY_SDK
+@@ -707,7 +799,7 @@ ifndef VBOX_ONLY_SDK
# TODO: ASSUMING that we don't need a different headers for pymalloc
# ('m' builds < 3.8) and CRT malloc.
#
- VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 38 39 310 34 33 \
-+ VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 38 39 310 311 34 33
\
++ VBOX_PYTHON_LIMITED_API_VER := $(firstword $(foreach ver, 35 36 38 39 310 311 312 34
33 \
,$(if-expr defined(VBOX_PYTHON$(ver)_INC),$(ver),)$(if-expr
defined(VBOX_PYTHON$(ver)M_INC),$(ver)M,)))
ifneq ($(VBOX_PYTHON_LIMITED_API_VER),)
DLLS += VBoxPython3
--- ./src/libs/xpcom18a4/python/src/module/_xpcom.cpp.orig 2022-10-30 04:19:33.834495672
+0000
+++ ./src/libs/xpcom18a4/python/src/module/_xpcom.cpp 2022-10-30 04:24:11.895463023
+0000
-@@ -84,7 +84,11 @@ extern PYXPCOM_EXPORT void PyXPCOM_Inter
+@@ -84,7 +84,15 @@ extern PYXPCOM_EXPORT void PyXPCOM_Inter
# define MANGLE_MODULE_INIT(a_Name) RT_CONCAT(a_Name, MODULE_NAME_SUFFIX)
# endif
# if defined(VBOX_PYXPCOM_VERSIONED) && !defined(VBOX_PYXPCOM_MAJOR_VERSIONED)
-# if PY_VERSION_HEX >= 0x030a0000 && PY_VERSION_HEX < 0x030b0000
-+# if PY_VERSION_HEX >= 0x030b0000 && PY_VERSION_HEX < 0x030c0000
++# if PY_VERSION_HEX >= 0x030c0000 && PY_VERSION_HEX < 0x030d0000
++# define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_12")
++# define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_12)
++
++# elif PY_VERSION_HEX >= 0x030b0000 && PY_VERSION_HEX < 0x030c0000
+# define MODULE_NAME MANGLE_MODULE_NAME("VBoxPython3_11")
+# define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_11)
+
diff --git a/VirtualBox.spec b/VirtualBox.spec
index 6bd9368..3eda632 100644
--- a/VirtualBox.spec
+++ b/VirtualBox.spec
@@ -99,7 +99,7 @@ Patch60: VirtualBox-7.0.2-xclient-cleanups.patch
#Patch70: vbox-python-selection.patch
Patch80: VirtualBox-6.1.4-gcc10.patch
-Patch90: VirtualBox-python3.11.patch
+Patch90: VirtualBox-python3.12.patch
BuildRequires: gcc-c++
BuildRequires: kBuild >= 0.1.9998.r3093