From 01e5f2d3647658e428462063010fc366bfd57dcc Mon Sep 17 00:00:00 2001 From: Stephen Brennan Date: Tue, 25 Jun 2024 10:27:30 -0700 Subject: [PATCH] Use a separate build directory for free-threading Signed-off-by: Stephen Brennan --- distutils/command/build.py | 5 +++++ distutils/tests/test_build.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/distutils/command/build.py b/distutils/command/build.py index d18ed503..766a2ab1 100644 --- a/distutils/command/build.py +++ b/distutils/command/build.py @@ -4,6 +4,7 @@ import os import sys +import sysconfig from ..core import Command from ..errors import DistutilsOptionError @@ -81,6 +82,10 @@ def finalize_options(self): # noqa: C901 plat_specifier = f".{self.plat_name}-{sys.implementation.cache_tag}" + # Python 3.13+ with --disable-gil shouldn't share build directories + if sysconfig.get_config_var('Py_GIL_DISABLED'): + plat_specifier += 't' + # Make it so Python 2.x and Python 2.x with --with-pydebug don't # share the same build directories. Doing so confuses the build # process for C modules diff --git a/distutils/tests/test_build.py b/distutils/tests/test_build.py index 25483ad7..8fb1bc1b 100644 --- a/distutils/tests/test_build.py +++ b/distutils/tests/test_build.py @@ -4,6 +4,7 @@ import sys from distutils.command.build import build from distutils.tests import support +from sysconfig import get_config_var from sysconfig import get_platform @@ -24,6 +25,8 @@ def test_finalize_options(self): # examples: # build/lib.macosx-10.3-i386-cpython39 plat_spec = f'.{cmd.plat_name}-{sys.implementation.cache_tag}' + if get_config_var('Py_GIL_DISABLED'): + plat_spec += 't' if hasattr(sys, 'gettotalrefcount'): assert cmd.build_platlib.endswith('-pydebug') plat_spec += '-pydebug'