| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2013 The Native Client Authors. All rights reserved. | 2 # Copyright (c) 2013 The Native Client 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 import argparse | 6 import argparse |
| 7 import logging | 7 import logging |
| 8 import os | 8 import os |
| 9 import platform | 9 import platform |
| 10 import subprocess | 10 import subprocess |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 NACL_DIR = os.path.dirname(SCRIPT_DIR) | 21 NACL_DIR = os.path.dirname(SCRIPT_DIR) |
| 22 TOOLCHAIN_BUILD_DIR = os.path.join(NACL_DIR, 'toolchain_build') | 22 TOOLCHAIN_BUILD_DIR = os.path.join(NACL_DIR, 'toolchain_build') |
| 23 TOOLCHAIN_BUILD_OUT_DIR = os.path.join(TOOLCHAIN_BUILD_DIR, 'out') | 23 TOOLCHAIN_BUILD_OUT_DIR = os.path.join(TOOLCHAIN_BUILD_DIR, 'out') |
| 24 | 24 |
| 25 TEMP_PACKAGES_FILE = os.path.join(TOOLCHAIN_BUILD_OUT_DIR, 'packages.txt') | 25 TEMP_PACKAGES_FILE = os.path.join(TOOLCHAIN_BUILD_OUT_DIR, 'packages.txt') |
| 26 | 26 |
| 27 BUILD_DIR = os.path.join(NACL_DIR, 'build') | 27 BUILD_DIR = os.path.join(NACL_DIR, 'build') |
| 28 PACKAGE_VERSION_DIR = os.path.join(BUILD_DIR, 'package_version') | 28 PACKAGE_VERSION_DIR = os.path.join(BUILD_DIR, 'package_version') |
| 29 PACKAGE_VERSION_SCRIPT = os.path.join(PACKAGE_VERSION_DIR, 'package_version.py') | 29 PACKAGE_VERSION_SCRIPT = os.path.join(PACKAGE_VERSION_DIR, 'package_version.py') |
| 30 | 30 |
| 31 GOMA_PATH = '/b/build/goma' | 31 GOMA_DEFAULT_PATH = '/b/build/goma' |
| 32 GOMA_PATH = os.environ.get('GOMA_DIR', GOMA_DEFAULT_PATH) |
| 32 GOMA_CTL = os.path.join(GOMA_PATH, 'goma_ctl.py') | 33 GOMA_CTL = os.path.join(GOMA_PATH, 'goma_ctl.py') |
| 33 | 34 |
| 34 # As this is a buildbot script, we want verbose logging. Note however, that | 35 # As this is a buildbot script, we want verbose logging. Note however, that |
| 35 # toolchain_build has its own log settings, controlled by its CLI flags. | 36 # toolchain_build has its own log settings, controlled by its CLI flags. |
| 36 logging.getLogger().setLevel(logging.DEBUG) | 37 logging.getLogger().setLevel(logging.DEBUG) |
| 37 | 38 |
| 38 parser = argparse.ArgumentParser(description='PNaCl toolchain buildbot script') | 39 parser = argparse.ArgumentParser(description='PNaCl toolchain buildbot script') |
| 39 group = parser.add_mutually_exclusive_group() | 40 group = parser.add_mutually_exclusive_group() |
| 40 group.add_argument('--buildbot', action='store_true', | 41 group.add_argument('--buildbot', action='store_true', |
| 41 help='Buildbot mode (build and archive the toolchain)') | 42 help='Buildbot mode (build and archive the toolchain)') |
| (...skipping 29 matching lines...) Expand all Loading... |
| 71 | 72 |
| 72 toolchain_install_dir = os.path.join( | 73 toolchain_install_dir = os.path.join( |
| 73 NACL_DIR, | 74 NACL_DIR, |
| 74 'toolchain', | 75 'toolchain', |
| 75 '%s_%s' % (host_os, pynacl.platform.GetArch()), | 76 '%s_%s' % (host_os, pynacl.platform.GetArch()), |
| 76 'pnacl_newlib') | 77 'pnacl_newlib') |
| 77 | 78 |
| 78 use_goma = (buildbot_lib.RunningOnBuildbot() and not args.no_goma | 79 use_goma = (buildbot_lib.RunningOnBuildbot() and not args.no_goma |
| 79 and os.path.isfile(GOMA_CTL)) | 80 and os.path.isfile(GOMA_CTL)) |
| 80 | 81 |
| 82 # If NOCONTROL_GOMA is set, the script does not start/stop goma compiler_proxy. |
| 83 control_goma = use_goma and not os.environ.get('NOCONTROL_GOMA') |
| 84 |
| 81 | 85 |
| 82 def ToolchainBuildCmd(sync=False, extra_flags=[]): | 86 def ToolchainBuildCmd(sync=False, extra_flags=[]): |
| 83 sync_flag = ['--sync'] if sync else [] | 87 sync_flag = ['--sync'] if sync else [] |
| 84 executable_args = [os.path.join('toolchain_build','toolchain_build_pnacl.py'), | 88 executable_args = [os.path.join('toolchain_build','toolchain_build_pnacl.py'), |
| 85 '--verbose', '--clobber', | 89 '--verbose', '--clobber', |
| 86 '--packages-file', TEMP_PACKAGES_FILE] | 90 '--packages-file', TEMP_PACKAGES_FILE] |
| 87 | 91 |
| 88 if pynacl.platform.IsLinux64(): | 92 if pynacl.platform.IsLinux64(): |
| 89 executable_args.append('--build-sbtc') | 93 executable_args.append('--build-sbtc') |
| 90 | 94 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 138 |
| 135 | 139 |
| 136 if host_os != 'win': | 140 if host_os != 'win': |
| 137 with buildbot_lib.Step('update clang', status): | 141 with buildbot_lib.Step('update clang', status): |
| 138 buildbot_lib.Command( | 142 buildbot_lib.Command( |
| 139 context, | 143 context, |
| 140 [sys.executable, | 144 [sys.executable, |
| 141 os.path.join( | 145 os.path.join( |
| 142 NACL_DIR, '..', 'tools', 'clang', 'scripts', 'update.py')]) | 146 NACL_DIR, '..', 'tools', 'clang', 'scripts', 'update.py')]) |
| 143 | 147 |
| 144 if use_goma: | 148 if control_goma: |
| 145 buildbot_lib.Command(context, cmd=[sys.executable, GOMA_CTL, 'restart']) | 149 buildbot_lib.Command(context, cmd=[sys.executable, GOMA_CTL, 'restart']) |
| 146 | 150 |
| 147 # toolchain_build outputs its own buildbot annotations, so don't use | 151 # toolchain_build outputs its own buildbot annotations, so don't use |
| 148 # buildbot_lib.Step to run it here. | 152 # buildbot_lib.Step to run it here. |
| 149 | 153 |
| 150 # The package_version tools don't have a way to distinguish canonical packages | 154 # The package_version tools don't have a way to distinguish canonical packages |
| 151 # (i.e. those we want to upload) from non-canonical ones; they only know how to | 155 # (i.e. those we want to upload) from non-canonical ones; they only know how to |
| 152 # process all the archives that are present. We can't just leave out the | 156 # process all the archives that are present. We can't just leave out the |
| 153 # the non-canonical packages entirely because they are extracted by the | 157 # the non-canonical packages entirely because they are extracted by the |
| 154 # package_version tool. | 158 # package_version tool. |
| 155 # First build only the packages that will be uploaded, and upload them. | 159 # First build only the packages that will be uploaded, and upload them. |
| 156 RunWithLog(ToolchainBuildCmd(sync=True, extra_flags=['--canonical-only'])) | 160 RunWithLog(ToolchainBuildCmd(sync=True, extra_flags=['--canonical-only'])) |
| 157 | 161 |
| 158 if use_goma: | 162 if control_goma: |
| 159 buildbot_lib.Command(context, cmd=[sys.executable, GOMA_CTL, 'stop']) | 163 buildbot_lib.Command(context, cmd=[sys.executable, GOMA_CTL, 'stop']) |
| 160 | 164 |
| 161 if args.skip_tests: | 165 if args.skip_tests: |
| 162 sys.exit(0) | 166 sys.exit(0) |
| 163 | 167 |
| 164 if args.buildbot or args.trybot: | 168 if args.buildbot or args.trybot: |
| 165 # Don't upload packages from the 32-bit linux bot to avoid racing on | 169 # Don't upload packages from the 32-bit linux bot to avoid racing on |
| 166 # uploading the same packages as the 64-bit linux bot | 170 # uploading the same packages as the 64-bit linux bot |
| 167 if host_os != 'linux' or pynacl.platform.IsArch64Bit(): | 171 if host_os != 'linux' or pynacl.platform.IsArch64Bit(): |
| 168 packages.UploadPackages(TEMP_PACKAGES_FILE, args.trybot, args.sanitize) | 172 packages.UploadPackages(TEMP_PACKAGES_FILE, args.trybot, args.sanitize) |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 | 244 |
| 241 if args.buildbot: | 245 if args.buildbot: |
| 242 trybot_mode = 'false' | 246 trybot_mode = 'false' |
| 243 else: | 247 else: |
| 244 trybot_mode = 'true' | 248 trybot_mode = 'true' |
| 245 | 249 |
| 246 platform_arg = 'mode-buildbot-tc-' + arch + '-linux' | 250 platform_arg = 'mode-buildbot-tc-' + arch + '-linux' |
| 247 | 251 |
| 248 command = ['bash', buildbot_shell, platform_arg, trybot_mode] | 252 command = ['bash', buildbot_shell, platform_arg, trybot_mode] |
| 249 RunWithLog(command) | 253 RunWithLog(command) |
| OLD | NEW |