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.
pull/6634/head
Nirbheek Chauhan 5 years ago committed by Nirbheek Chauhan
parent 8b60fb709c
commit 11253a1c3a
  1. 4
      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,

Loading…
Cancel
Save