summaryrefslogtreecommitdiff
blob: c552831cfd6bbe00afbb3ba9cb2d1dd48d0717fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From 5f96e35b873d6230970fd63ba2e706bbd3f4e26f Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz93@gmail.com>
Date: Fri, 8 Sep 2023 16:54:48 -0400
Subject: [PATCH 1/7] 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.

(cherry picked from commit 9f610ad5b72ea91de2d7aeb6f3266d0a7477062e)
---
 mesonbuild/dependencies/python.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py
index 160772888..f04494674 100644
--- a/mesonbuild/dependencies/python.py
+++ b/mesonbuild/dependencies/python.py
@@ -113,7 +113,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)
-- 
2.42.0