summarylogtreecommitdiffstats
path: root/0045-msys-monkeypatch-os-system-via-sh-exe.patch
blob: 783c5082bdd7786e7b5e33cdab66c2d49fa695d2 (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 74ee0fa7cbd23e29f60d03606ee32b34bc0dbc6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?=
 <alexey.pawlow@gmail.com>
Date: Thu, 17 Jun 2021 18:51:57 +0530
Subject: [PATCH 045/N] msys monkeypatch os system via sh exe
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Алексей <alexey.pawlow@gmail.com>
---
 setup.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/setup.py b/setup.py
index 31b08de..207a61c 100644
--- a/setup.py
+++ b/setup.py
@@ -58,6 +58,17 @@ def get_platform():
     return sys.platform
 
 
+# On MSYS, os.system needs to be wrapped with sh.exe
+# as otherwise all the io redirection will fail.
+# Arguably, this could happen inside the real os.system
+# rather than this monkey patch.
+if sys.platform == "win32" and "MSYSTEM" in os.environ:
+    os_system = os.system
+    def msys_system(command):
+        command_in_sh = 'sh.exe -c "%s"' % command.replace("\\", "\\\\")
+        return os_system(command_in_sh)
+    os.system = msys_system
+
 CROSS_COMPILING = ("_PYTHON_HOST_PLATFORM" in os.environ)
 HOST_PLATFORM = get_platform()
 MS_WINDOWS = (HOST_PLATFORM == 'win32')
-- 
2.33.0