OLD | NEW |
1 # Copyright 2014 The Native Client Authors. All rights reserved. | 1 # Copyright 2014 The Native Client Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import fcntl | 5 import fcntl |
6 import hashlib | 6 import hashlib |
7 import os | 7 import os |
8 import shutil | 8 import shutil |
9 import subprocess | 9 import subprocess |
10 import sys | 10 import sys |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 else: | 243 else: |
244 raise error.Error('$EMSCRIPTEN not set and %s does not exist.' % | 244 raise error.Error('$EMSCRIPTEN not set and %s does not exist.' % |
245 local_root) | 245 local_root) |
246 | 246 |
247 if not os.path.isdir(emscripten): | 247 if not os.path.isdir(emscripten): |
248 raise error.Error('$EMSCRIPTEN environment variable does not point' | 248 raise error.Error('$EMSCRIPTEN environment variable does not point' |
249 ' to a directory: %s' % emscripten) | 249 ' to a directory: %s' % emscripten) |
250 return emscripten | 250 return emscripten |
251 | 251 |
252 | 252 |
| 253 def SetupEmscripten(): |
| 254 if 'EMSCRIPTEN' in os.environ: |
| 255 return |
| 256 |
| 257 local_root = GetEmscriptenRoot() |
| 258 os.environ['EMSCRIPTEN'] = local_root |
| 259 os.environ['EM_CONFIG'] = os.path.join(os.path.dirname(local_root), |
| 260 '.emscripten') |
| 261 try: |
| 262 FindInPath('node') |
| 263 except error.Error: |
| 264 node_bin = os.path.join(paths.OUT_DIR, 'node', 'bin') |
| 265 if not os.path.isdir(node_bin): |
| 266 raise error.Error('node not found in path and default path not found: %s' |
| 267 % node_bin) |
| 268 |
| 269 os.environ['PATH'] += ':' + node_bin |
| 270 FindInPath('node') |
| 271 |
| 272 |
253 @Memoize | 273 @Memoize |
254 def GetSDKVersion(): | 274 def GetSDKVersion(): |
255 """Returns the version (as a string) of the current SDK.""" | 275 """Returns the version (as a string) of the current SDK.""" |
256 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') | 276 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') |
257 version = subprocess.check_output([getos, '--sdk-version']).strip() | 277 version = subprocess.check_output([getos, '--sdk-version']).strip() |
258 return version | 278 return version |
259 | 279 |
260 | 280 |
261 def CheckSDKVersion(version): | 281 def CheckSDKVersion(version): |
262 """Returns True if the currently configured SDK is 'version' or above.""" | 282 """Returns True if the currently configured SDK is 'version' or above.""" |
263 return int(GetSDKVersion()) >= int(version) | 283 return int(GetSDKVersion()) >= int(version) |
264 | 284 |
265 | 285 |
266 @Memoize | 286 @Memoize |
267 def GetSDKRevision(): | 287 def GetSDKRevision(): |
268 """Returns the revision of the currently configured Native Client SDK.""" | 288 """Returns the revision of the currently configured Native Client SDK.""" |
269 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') | 289 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') |
270 version = subprocess.check_output([getos, '--sdk-revision']).strip() | 290 version = subprocess.check_output([getos, '--sdk-revision']).strip() |
271 return int(version) | 291 return int(version) |
272 | 292 |
273 | 293 |
274 @Memoize | 294 @Memoize |
275 def GetPlatform(): | 295 def GetPlatform(): |
276 """Returns the current platform name according getos.py.""" | 296 """Returns the current platform name according getos.py.""" |
277 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') | 297 getos = os.path.join(GetSDKRoot(), 'tools', 'getos.py') |
278 platform = subprocess.check_output([getos]).strip() | 298 platform = subprocess.check_output([getos]).strip() |
279 return platform | 299 return platform |
280 | 300 |
281 | |
282 @Memoize | 301 @Memoize |
283 def GetToolchainRoot(config): | 302 def GetToolchainRoot(config): |
284 """Returns the toolchain folder for a given NaCl toolchain.""" | 303 """Returns the toolchain folder for a given NaCl toolchain.""" |
285 if config.toolchain == 'emscripten': | 304 if config.toolchain == 'emscripten': |
286 return GetEmscriptenRoot() | 305 return GetEmscriptenRoot() |
287 | 306 |
288 platform = GetPlatform() | 307 platform = GetPlatform() |
289 if config.toolchain in ('pnacl', 'clang-newlib'): | 308 if config.toolchain in ('pnacl', 'clang-newlib'): |
290 tc_dir = os.path.join('%s_pnacl' % platform) | 309 tc_dir = os.path.join('%s_pnacl' % platform) |
291 else: | 310 else: |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 | 480 |
462 class InstallLock(Lock): | 481 class InstallLock(Lock): |
463 """Lock used when installing/uninstalling package""" | 482 """Lock used when installing/uninstalling package""" |
464 | 483 |
465 def __init__(self, config): | 484 def __init__(self, config): |
466 root = GetInstallRoot(config) | 485 root = GetInstallRoot(config) |
467 super(InstallLock, self).__init__(root) | 486 super(InstallLock, self).__init__(root) |
468 | 487 |
469 | 488 |
470 CheckStdoutForColorSupport() | 489 CheckStdoutForColorSupport() |
OLD | NEW |