OLD | NEW |
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. |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 raise Error("Error running objdump on: %s" % chrome_path) | 165 raise Error("Error running objdump on: %s" % chrome_path) |
166 | 166 |
167 arch = match.group(2) | 167 arch = match.group(2) |
168 if 'arm' in arch: | 168 if 'arm' in arch: |
169 return 'arm' | 169 return 'arm' |
170 if '64' in arch: | 170 if '64' in arch: |
171 return 'x86_64' | 171 return 'x86_64' |
172 return 'x86_32' | 172 return 'x86_32' |
173 | 173 |
174 | 174 |
175 def GetLoaderPath(platform): | |
176 sdk_path = GetSDKPath() | |
177 arch = GetNaClArch(platform) | |
178 sel_ldr = os.path.join(sdk_path, 'tools', 'sel_ldr_' + arch) | |
179 if not os.path.exists(sel_ldr): | |
180 raise Error("sel_ldr not found: %s" % sel_ldr) | |
181 return sel_ldr | |
182 | |
183 | |
184 def GetHelperPath(platform): | |
185 sdk_path = GetSDKPath() | |
186 if platform != 'linux': | |
187 return '' | |
188 arch = GetNaClArch(platform) | |
189 helper = os.path.join(sdk_path, 'tools', 'nacl_helper_bootstrap_' + arch) | |
190 if not os.path.exists(helper): | |
191 raise Error("helper not found: %s" % helper) | |
192 return helper | |
193 | |
194 | |
195 def GetIrtBinPath(platform): | |
196 sdk_path = GetSDKPath() | |
197 arch = GetNaClArch(platform) | |
198 irt = os.path.join(sdk_path, 'tools', 'irt_core_%s.nexe' % arch) | |
199 if not os.path.exists(irt): | |
200 raise Error("irt not found: %s" % irt) | |
201 return irt | |
202 | |
203 | |
204 def ParseVersion(version): | 175 def ParseVersion(version): |
205 if '.' in version: | 176 if '.' in version: |
206 version = version.split('.') | 177 version = version.split('.') |
207 else: | 178 else: |
208 version = (version, '0') | 179 version = (version, '0') |
209 | 180 |
210 try: | 181 try: |
211 return tuple(int(x) for x in version) | 182 return tuple(int(x) for x in version) |
212 except ValueError: | 183 except ValueError: |
213 raise Error('error parsing SDK version: %s' % version) | 184 raise Error('error parsing SDK version: %s' % version) |
214 | 185 |
215 | 186 |
216 def main(args): | 187 def main(args): |
217 parser = optparse.OptionParser() | 188 parser = optparse.OptionParser() |
218 parser.add_option('--arch', action='store_true', | 189 parser.add_option('--arch', action='store_true', |
219 help='Print architecture of current machine (x86_32, x86_64 or arm).') | 190 help='Print architecture of current machine (x86_32, x86_64 or arm).') |
220 parser.add_option('--chrome', action='store_true', | 191 parser.add_option('--chrome', action='store_true', |
221 help='Print the path chrome (by first looking in $CHROME_PATH and ' | 192 help='Print the path chrome (by first looking in $CHROME_PATH and ' |
222 'then $PATH).') | 193 'then $PATH).') |
223 parser.add_option('--nacl-arch', action='store_true', | 194 parser.add_option('--nacl-arch', action='store_true', |
224 help='Print architecture used by NaCl on the current machine.') | 195 help='Print architecture used by NaCl on the current machine.') |
225 parser.add_option('--helper', action='store_true', | |
226 help='Print chrome helper path.') | |
227 parser.add_option('--irtbin', action='store_true', | |
228 help='Print irt binary path.') | |
229 parser.add_option('--loader', action='store_true', | |
230 help='Print NEXE loader path.') | |
231 parser.add_option('--sdk-version', action='store_true', | 196 parser.add_option('--sdk-version', action='store_true', |
232 help='Print major version of the NaCl SDK.') | 197 help='Print major version of the NaCl SDK.') |
233 parser.add_option('--sdk-revision', action='store_true', | 198 parser.add_option('--sdk-revision', action='store_true', |
234 help='Print revision number of the NaCl SDK.') | 199 help='Print revision number of the NaCl SDK.') |
235 parser.add_option('--check-version', | 200 parser.add_option('--check-version', |
236 help='Check that the SDK version is at least as great as the ' | 201 help='Check that the SDK version is at least as great as the ' |
237 'version passed in.') | 202 'version passed in.') |
238 | 203 |
239 options, _ = parser.parse_args(args) | 204 options, _ = parser.parse_args(args) |
240 | 205 |
241 platform = GetPlatform() | 206 platform = GetPlatform() |
242 | 207 |
243 if len(args) > 1: | 208 if len(args) > 1: |
244 parser.error('Only one option can be specified at a time.') | 209 parser.error('Only one option can be specified at a time.') |
245 | 210 |
246 if not args: | 211 if not args: |
247 print platform | 212 print platform |
248 return 0 | 213 return 0 |
249 | 214 |
250 if options.arch: | 215 if options.arch: |
251 out = GetSystemArch(platform) | 216 out = GetSystemArch(platform) |
252 elif options.nacl_arch: | 217 elif options.nacl_arch: |
253 out = GetNaClArch(platform) | 218 out = GetNaClArch(platform) |
254 elif options.chrome: | 219 elif options.chrome: |
255 out = GetChromePath(platform) | 220 out = GetChromePath(platform) |
256 elif options.helper: | |
257 out = GetHelperPath(platform) | |
258 elif options.irtbin: | |
259 out = GetIrtBinPath(platform) | |
260 elif options.loader: | |
261 out = GetLoaderPath(platform) | |
262 elif options.sdk_version: | 221 elif options.sdk_version: |
263 out = GetSDKVersion()[0] | 222 out = GetSDKVersion()[0] |
264 elif options.sdk_revision: | 223 elif options.sdk_revision: |
265 out = GetSDKVersion()[1] | 224 out = GetSDKVersion()[1] |
266 elif options.check_version: | 225 elif options.check_version: |
267 required_version = ParseVersion(options.check_version) | 226 required_version = ParseVersion(options.check_version) |
268 version = GetSDKVersion() | 227 version = GetSDKVersion() |
269 if version < required_version: | 228 if version < required_version: |
270 raise Error("SDK version too old (current: %s.%s, required: %s.%s)" | 229 raise Error("SDK version too old (current: %s.%s, required: %s.%s)" |
271 % (version[0], version[1], | 230 % (version[0], version[1], |
272 required_version[0], required_version[1])) | 231 required_version[0], required_version[1])) |
273 out = None | 232 out = None |
274 | 233 |
275 if out: | 234 if out: |
276 print out | 235 print out |
277 return 0 | 236 return 0 |
278 | 237 |
279 | 238 |
280 if __name__ == '__main__': | 239 if __name__ == '__main__': |
281 try: | 240 try: |
282 sys.exit(main(sys.argv[1:])) | 241 sys.exit(main(sys.argv[1:])) |
283 except Error as e: | 242 except Error as e: |
284 sys.stderr.write(str(e) + '\n') | 243 sys.stderr.write(str(e) + '\n') |
285 sys.exit(1) | 244 sys.exit(1) |
OLD | NEW |