summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz93@gmail.com>2023-09-08 16:54:48 -0400
committerEli Schwartz <eschwartz93@gmail.com>2023-10-02 18:15:16 -0400
commit9f610ad5b72ea91de2d7aeb6f3266d0a7477062e (patch)
tree395b95014dbf45747e519d8dd8f1d177da03af95
parent710a753c78077220b13a9f7e999dcdb61339efb1 (diff)
downloadmeson-9f610ad5b72ea91de2d7aeb6f3266d0a7477062e.tar.gz
python dependency: ensure that setuptools doesn't inject itself into distutils
We do not use setuptools for anything, and only lightly use distutils. Unpredictable issues can occur due to setuptools monkey-patching, which interferes with our intended use. Tell setuptools to simply never get involved. Note: while it's otherwise possible to check if the probe is run using sys.executable and avoid forking, setuptools unconditionally injects itself at startup in a way that requires subprocess isolation to disable.
-rw-r--r--mesonbuild/dependencies/python.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py
index efb904eca..fe778aff6 100644
--- a/mesonbuild/dependencies/python.py
+++ b/mesonbuild/dependencies/python.py
@@ -115,7 +115,9 @@ class BasicPythonExternalProgram(ExternalProgram):
with importlib.resources.path('mesonbuild.scripts', 'python_info.py') as f:
cmd = self.get_command() + [str(f)]
- p, stdout, stderr = mesonlib.Popen_safe(cmd)
+ env = os.environ.copy()
+ env['SETUPTOOLS_USE_DISTUTILS'] = 'stdlib'
+ p, stdout, stderr = mesonlib.Popen_safe(cmd, env=env)
try:
info = json.loads(stdout)