From: Nico Weber Date: Fri, 8 Mar 2019 13:01:58 +0000 (+0000) Subject: gn build: Unbreak finding a working `gn` on $PATH on Unix after r355645 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0b3de189e51af23b241837148de1ab7d02e561dd;p=llvm gn build: Unbreak finding a working `gn` on $PATH on Unix after r355645 From the Python subprocess docs: If shell is True, it is recommended to pass args as a string rather than as a sequence. [...] If args is a sequence, the first item specifies the command string, and any additional items will be treated as additional arguments to the shell itself. Prior to this change, the `--version` would be passed to the shell, not to a potential gn binary on $PATH, and running `gn` without any arguments makes it exit with an exit code != 0, so the script would think that there wasn't a working gn binary on $PATH. Fix this by following the documentation's recommendation of using a string now that we pass shell=True. I tested this on macOS and Windows, each with the three cases of - no gn on PATH (should run gn downloaded by get.py if present, else suggest running get.py) - broken gn wrapper on PATH (should behave like the previous item) - working gn on PATH (should use gn on PATH) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355694 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/gn/gn.py b/utils/gn/gn.py index 62cbaa91e07..a6408ec065a 100755 --- a/utils/gn/gn.py +++ b/utils/gn/gn.py @@ -38,9 +38,9 @@ def print_no_gn(mention_get): def main(): # Find real gn executable. gn = 'gn' - if subprocess.call([gn, '--version'], stdout=open(os.devnull, 'w'), - stderr=subprocess.STDOUT, - shell=True) != 0: + if subprocess.call('gn --version', stdout=open(os.devnull, 'w'), + stderr=subprocess.STDOUT, + shell=True) != 0: # Not on path. See if get.py downloaded a prebuilt binary and run that # if it's there, or suggest to run get.py if it isn't. platform = get_platform()