From df5f8d77daa802d030aa2277c5d7b987d7fd515a Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 30 Oct 2024 12:56:48 +0100 Subject: [PATCH] makepanda: Build fixes for Python 3.13t on Windows --- makepanda/makepandacore.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index ff67806eb8..3e44d65734 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -2189,6 +2189,15 @@ def SdkLocatePython(prefer_thirdparty_python=False): SDK["PYTHON"] = sdkdir SDK["PYTHONEXEC"] = SDK["PYTHON"].replace('\\', '/') + "/python" + + gil_disabled = locations.get_config_var("Py_GIL_DISABLED") + if gil_disabled and int(gil_disabled): + SDK["PYTHONEXEC"] += "3.13t" + abiflags = "t" + DefSymbol("PYTHON", "Py_GIL_DISABLED", "1") + else: + abiflags = "" + if (GetOptimize() <= 2): SDK["PYTHONEXEC"] += "_d.exe" else: @@ -2199,11 +2208,11 @@ def SdkLocatePython(prefer_thirdparty_python=False): # Determine which version it is by checking which dll is in the directory. if (GetOptimize() <= 2): - py_dlls = glob.glob(SDK["PYTHON"] + "/python[0-9][0-9]_d.dll") + \ - glob.glob(SDK["PYTHON"] + "/python[0-9][0-9][0-9]_d.dll") + py_dlls = glob.glob(SDK["PYTHON"] + "/python[0-9][0-9]" + abiflags + "_d.dll") + \ + glob.glob(SDK["PYTHON"] + "/python[0-9][0-9][0-9]" + abiflags + "_d.dll") else: - py_dlls = glob.glob(SDK["PYTHON"] + "/python[0-9][0-9].dll") + \ - glob.glob(SDK["PYTHON"] + "/python[0-9][0-9][0-9].dll") + py_dlls = glob.glob(SDK["PYTHON"] + "/python[0-9][0-9]" + abiflags + ".dll") + \ + glob.glob(SDK["PYTHON"] + "/python[0-9][0-9][0-9]" + abiflags + ".dll") if len(py_dlls) == 0: exit("Could not find the Python dll in %s." % (SDK["PYTHON"])) @@ -2214,7 +2223,7 @@ def SdkLocatePython(prefer_thirdparty_python=False): py_dllver = py_dll.strip(".DHLNOPTY_dhlnopty") ver = py_dllver[0] + '.' + py_dllver[1:] - SDK["PYTHONVERSION"] = "python" + ver + SDK["PYTHONVERSION"] = "python" + ver + abiflags os.environ["PYTHONHOME"] = SDK["PYTHON"] running_ver = '%d.%d' % sys.version_info[:2]