download_nacl_toolchains.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env python
  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
  4. # found in the LICENSE file.
  5. """Shim to run nacl toolchain download script only if there is a nacl dir."""
  6. from __future__ import print_function
  7. import os
  8. import shutil
  9. import sys
  10. def Main(args):
  11. script_dir = os.path.dirname(os.path.abspath(__file__))
  12. src_dir = os.path.dirname(script_dir)
  13. nacl_dir = os.path.join(src_dir, 'native_client')
  14. nacl_build_dir = os.path.join(nacl_dir, 'build')
  15. package_version_dir = os.path.join(nacl_build_dir, 'package_version')
  16. package_version = os.path.join(package_version_dir, 'package_version.py')
  17. if not os.path.exists(package_version):
  18. print("Can't find '%s'" % package_version)
  19. print('Presumably you are intentionally building without NativeClient.')
  20. print('Skipping NativeClient toolchain download.')
  21. sys.exit(0)
  22. sys.path.insert(0, package_version_dir)
  23. import package_version
  24. # BUG:
  25. # We remove this --optional-pnacl argument, and instead replace it with
  26. # --no-pnacl for most cases. However, if the bot name is an sdk
  27. # bot then we will go ahead and download it. This prevents increasing the
  28. # gclient sync time for developers, or standard Chrome bots.
  29. if '--optional-pnacl' in args:
  30. args.remove('--optional-pnacl')
  31. use_pnacl = False
  32. buildbot_name = os.environ.get('BUILDBOT_BUILDERNAME', '')
  33. if 'pnacl' in buildbot_name and 'sdk' in buildbot_name:
  34. use_pnacl = True
  35. if use_pnacl:
  36. print('\n*** DOWNLOADING PNACL TOOLCHAIN ***\n')
  37. else:
  38. args = ['--exclude', 'pnacl_newlib'] + args
  39. # Only download the ARM gcc toolchain if we are building for ARM
  40. # TODO(olonho): we need to invent more reliable way to get build
  41. # configuration info, to know if we're building for ARM.
  42. if 'target_arch=arm' not in os.environ.get('GYP_DEFINES', ''):
  43. args = ['--exclude', 'nacl_arm_newlib'] + args
  44. return package_version.main(args)
  45. if __name__ == '__main__':
  46. sys.exit(Main(sys.argv[1:]))