From 9714eabfc3a23f4de3fc6967fd41a9afc43cb1ef Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Fri, 29 Nov 2024 13:08:06 +0000 Subject: [PATCH] don't link to abi3 dll on windows for free-threaded build (#4733) * don't link to abi3 dll on windows for free-threaded build * newsfragment --- newsfragments/4733.fixed.md | 1 + pyo3-build-config/src/impl_.rs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 newsfragments/4733.fixed.md diff --git a/newsfragments/4733.fixed.md b/newsfragments/4733.fixed.md new file mode 100644 index 00000000000..bcf3dbad823 --- /dev/null +++ b/newsfragments/4733.fixed.md @@ -0,0 +1 @@ +Fix unresolved symbol link failures (due to linking to wrong DLL) when compiling for Python 3.13t with `abi3` features enabled. diff --git a/pyo3-build-config/src/impl_.rs b/pyo3-build-config/src/impl_.rs index 3a0915b4c8e..30684344e39 100644 --- a/pyo3-build-config/src/impl_.rs +++ b/pyo3-build-config/src/impl_.rs @@ -1649,7 +1649,7 @@ fn default_lib_name_windows( // CPython bug: linking against python3_d.dll raises error // https://github.com/python/cpython/issues/101614 Ok(format!("python{}{}_d", version.major, version.minor)) - } else if abi3 && !(implementation.is_pypy() || implementation.is_graalpy()) { + } else if abi3 && !(gil_disabled || implementation.is_pypy() || implementation.is_graalpy()) { if debug { Ok(WINDOWS_ABI3_DEBUG_LIB_NAME.to_owned()) } else { @@ -2544,6 +2544,21 @@ mod tests { .unwrap(), "python313t", ); + assert_eq!( + super::default_lib_name_windows( + PythonVersion { + major: 3, + minor: 13 + }, + CPython, + true, // abi3 true should not affect the free-threaded lib name + false, + false, + true, + ) + .unwrap(), + "python313t", + ); assert_eq!( super::default_lib_name_windows( PythonVersion {