Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: native_client_sdk/src/tools/getos.py

Issue 86053005: [NaCl SDK] Fix "make debug" and "make run" on Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add default paths, basenames Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « native_client_sdk/src/tools/common.mk ('k') | native_client_sdk/src/tools/run.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Determine OS and various other system properties. 6 """Determine OS and various other system properties.
7 7
8 Determine the name of the platform used and other system properties such as 8 Determine the name of the platform used and other system properties such as
9 the location of Chrome. This is used, for example, to determine the correct 9 the location of Chrome. This is used, for example, to determine the correct
10 Toolchain to invoke. 10 Toolchain to invoke.
11 """ 11 """
12 12
13 import optparse 13 import optparse
14 import os 14 import os
15 import re 15 import re
16 import subprocess 16 import subprocess
17 import sys 17 import sys
18 18
19 import oshelpers 19 import oshelpers
20 20
21 21
22 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 22 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
23 CHROME_EXE_BASENAME = 'google-chrome' 23 CHROME_EXE_BASENAME = {
24 'win': 'chrome.exe',
25 'mac': 'Google Chrome',
26 'linux': 'google-chrome',
27 }
28 CHROME_DEFAULT_PATH = {
29 'win': r'c:\Program Files (x86)\Google\Chrome\Application\chrome.exe',
30 'mac': '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
31 'linux': '/usr/bin/google-chrome',
32 }
Sam Clegg 2013/12/02 22:46:50 Isn't this information duplicated here. Also, I'm
binji 2013/12/03 00:33:59 Done.
24 33
25 34
26 if sys.version_info < (2, 6, 0): 35 if sys.version_info < (2, 6, 0):
27 sys.stderr.write("python 2.6 or later is required run this script\n") 36 sys.stderr.write("python 2.6 or later is required run this script\n")
28 sys.exit(1) 37 sys.exit(1)
29 38
30 39
31 class Error(Exception): 40 class Error(Exception):
32 pass 41 pass
33 42
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 pobj = subprocess.Popen(['uname', '-m'], stdout= subprocess.PIPE) 104 pobj = subprocess.Popen(['uname', '-m'], stdout= subprocess.PIPE)
96 arch = pobj.communicate()[0] 105 arch = pobj.communicate()[0]
97 arch = arch.split()[0] 106 arch = arch.split()[0]
98 if arch.startswith('arm'): 107 if arch.startswith('arm'):
99 arch = 'arm' 108 arch = 'arm'
100 except Exception: 109 except Exception:
101 arch = None 110 arch = None
102 return arch 111 return arch
103 112
104 113
105 def GetChromePath(): 114 def GetChromePath(platform):
115 # If CHROME_PATH is defined and exists, use that.
106 chrome_path = os.environ.get('CHROME_PATH') 116 chrome_path = os.environ.get('CHROME_PATH')
107 if chrome_path: 117 if chrome_path:
108 if not os.path.exists(chrome_path): 118 if not os.path.exists(chrome_path):
109 raise Error('Invalid CHROME_PATH: %s' % chrome_path) 119 raise Error('Invalid CHROME_PATH: %s' % chrome_path)
110 else: 120 return os.path.realpath(chrome_path)
111 chrome_path = oshelpers.FindExeInPath(CHROME_EXE_BASENAME)
112 if not chrome_path:
113 raise Error('CHROME_PATH is undefined, and %s not found in PATH.' %
114 CHROME_EXE_BASENAME)
115 121
116 return os.path.realpath(chrome_path) 122 # Otherwise look in the PATH environment variable.
123 basename = CHROME_EXE_BASENAME[platform]
124 chrome_path = oshelpers.FindExeInPath(basename)
125 if chrome_path:
126 return os.path.realpath(chrome_path)
127
128 # Finally, try the default paths to Chrome.
129 chrome_path = CHROME_DEFAULT_PATH[platform]
130 if os.path.exists(chrome_path):
131 return os.path.realpath(chrome_path)
132
133 raise Error('CHROME_PATH is undefined, and %s not found in PATH, nor %s.' % (
134 basename, chrome_path))
117 135
118 136
119 def GetNaClArch(platform): 137 def GetNaClArch(platform):
120 if platform == 'win': 138 if platform == 'win':
121 # On windows the nacl arch always matches to system arch 139 # On windows the nacl arch always matches to system arch
122 return GetSystemArch(platform) 140 return GetSystemArch(platform)
123 elif platform == 'mac': 141 elif platform == 'mac':
124 # On Mac the nacl arch is currently always 32-bit. 142 # On Mac the nacl arch is currently always 32-bit.
125 return 'x86_32' 143 return 'x86_32'
126 144
127 # On linux the nacl arch matches to chrome arch, so we inspect the chrome 145 # On linux the nacl arch matches to chrome arch, so we inspect the chrome
128 # binary using objdump 146 # binary using objdump
129 chrome_path = GetChromePath() 147 chrome_path = GetChromePath(platform)
130 148
131 # If CHROME_PATH is set to point to google-chrome or google-chrome 149 # If CHROME_PATH is set to point to google-chrome or google-chrome
132 # was found in the PATH and we are running on UNIX then google-chrome 150 # was found in the PATH and we are running on UNIX then google-chrome
133 # is a bash script that points to 'chrome' in the same folder. 151 # is a bash script that points to 'chrome' in the same folder.
134 if os.path.basename(chrome_path) == 'google-chrome': 152 if os.path.basename(chrome_path) == 'google-chrome':
135 chrome_path = os.path.join(os.path.dirname(chrome_path), 'chrome') 153 chrome_path = os.path.join(os.path.dirname(chrome_path), 'chrome')
136 154
137 try: 155 try:
138 pobj = subprocess.Popen(['objdump', '-f', chrome_path], 156 pobj = subprocess.Popen(['objdump', '-f', chrome_path],
139 stdout=subprocess.PIPE, 157 stdout=subprocess.PIPE,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 250
233 if not args: 251 if not args:
234 print platform 252 print platform
235 return 0 253 return 0
236 254
237 if options.arch: 255 if options.arch:
238 out = GetSystemArch(platform) 256 out = GetSystemArch(platform)
239 elif options.nacl_arch: 257 elif options.nacl_arch:
240 out = GetNaClArch(platform) 258 out = GetNaClArch(platform)
241 elif options.chrome: 259 elif options.chrome:
242 out = GetChromePath() 260 out = GetChromePath(platform)
243 elif options.helper: 261 elif options.helper:
244 out = GetHelperPath(platform) 262 out = GetHelperPath(platform)
245 elif options.irtbin: 263 elif options.irtbin:
246 out = GetIrtBinPath(platform) 264 out = GetIrtBinPath(platform)
247 elif options.loader: 265 elif options.loader:
248 out = GetLoaderPath(platform) 266 out = GetLoaderPath(platform)
249 elif options.sdk_version: 267 elif options.sdk_version:
250 out = GetSDKVersion()[0] 268 out = GetSDKVersion()[0]
251 elif options.sdk_revision: 269 elif options.sdk_revision:
252 out = GetSDKVersion()[1] 270 out = GetSDKVersion()[1]
(...skipping 10 matching lines...) Expand all
263 print out 281 print out
264 return 0 282 return 0
265 283
266 284
267 if __name__ == '__main__': 285 if __name__ == '__main__':
268 try: 286 try:
269 sys.exit(main(sys.argv[1:])) 287 sys.exit(main(sys.argv[1:]))
270 except Error as e: 288 except Error as e:
271 sys.stderr.write(str(e) + '\n') 289 sys.stderr.write(str(e) + '\n')
272 sys.exit(1) 290 sys.exit(1)
OLDNEW
« no previous file with comments | « native_client_sdk/src/tools/common.mk ('k') | native_client_sdk/src/tools/run.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698