aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2020-02-06 11:26:36 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2020-02-16 00:26:08 +0530
commit11253a1c3aa3bb8208cae0f04792b26db9b99601 (patch)
tree9f48d85cbf1394a059f7569310dc45e4fefc4422 /mesonbuild/mesonlib.py
parent8b60fb709c4aa6b9b00edd17614ca8ebef1c063d (diff)
downloadmeson-11253a1c3aa3bb8208cae0f04792b26db9b99601.zip
meson-11253a1c3aa3bb8208cae0f04792b26db9b99601.tar.gz
meson-11253a1c3aa3bb8208cae0f04792b26db9b99601.tar.bz2
mesonlib: Set stdin to DEVNULL for all programs run by us
Otherwise there's a high likelihood that some program run by us will mess up the console settings and break ANSI colors. F.ex., running `uname` in the Visual Studio 2019 x86 developer prompt using `run_command()` does this.
Diffstat (limited to 'mesonbuild/mesonlib.py')
-rw-r--r--mesonbuild/mesonlib.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index 891e7a1..1f3989d 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -1080,6 +1080,10 @@ def Popen_safe(args: T.List[str], write: T.Optional[str] = None,
**kwargs: T.Any) -> T.Tuple[subprocess.Popen, str, str]:
import locale
encoding = locale.getpreferredencoding()
+ # Redirect stdin to DEVNULL otherwise the command run by us here might mess
+ # up the console and ANSI colors will stop working on Windows.
+ if 'stdin' not in kwargs:
+ kwargs['stdin'] = subprocess.DEVNULL
if sys.version_info < (3, 6) or not sys.stdout.encoding or encoding.upper() != 'UTF-8':
return Popen_safe_legacy(args, write=write, stdout=stdout, stderr=stderr, **kwargs)
p = subprocess.Popen(args, universal_newlines=True, close_fds=False,