Chromium Code Reviews| 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 """Entry point for both build and try bots. | 6 """Entry point for both build and try bots. |
| 7 | 7 |
| 8 This script is invoked from XXX, usually without arguments | 8 This script is invoked from XXX, usually without arguments |
| 9 to package an SDK. It automatically determines whether | 9 to package an SDK. It automatically determines whether |
| 10 this SDK is for mac, win, linux. | 10 this SDK is for mac, win, linux. |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 65 tcname = 'toolchain_%s_x86.tar.bz2' % getos.GetPlatform() | 65 tcname = 'toolchain_%s_x86.tar.bz2' % getos.GetPlatform() |
| 66 return os.path.join(tcdir, tcname) | 66 return os.path.join(tcdir, tcname) |
| 67 | 67 |
| 68 | 68 |
| 69 def GetNewlibToolchain(): | 69 def GetNewlibToolchain(): |
| 70 tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars') | 70 tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars') |
| 71 tcname = 'naclsdk_%s_x86.tgz' % getos.GetPlatform() | 71 tcname = 'naclsdk_%s_x86.tgz' % getos.GetPlatform() |
| 72 return os.path.join(tcdir, tcname) | 72 return os.path.join(tcdir, tcname) |
| 73 | 73 |
| 74 | 74 |
| 75 def GetBionicToolchain(): | |
| 76 tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars') | |
| 77 tcname = 'naclsdk_%s_arm_bionic.tgz' % getos.GetPlatform() | |
| 78 return os.path.join(tcdir, tcname) | |
| 79 | |
| 80 | |
| 75 def GetPNaClToolchain(): | 81 def GetPNaClToolchain(): |
| 76 tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars') | 82 tcdir = os.path.join(NACL_DIR, 'toolchain', '.tars') |
| 77 tcname = 'naclsdk_pnacl_%s_x86.tgz' % getos.GetPlatform() | 83 tcname = 'naclsdk_pnacl_%s_x86.tgz' % getos.GetPlatform() |
| 78 return os.path.join(tcdir, tcname) | 84 return os.path.join(tcdir, tcname) |
| 79 | 85 |
| 80 | 86 |
| 81 def GetToolchainNaClInclude(tcname, tcpath, arch): | 87 def GetToolchainNaClInclude(tcname, tcpath, arch): |
| 82 if arch == 'x86': | 88 if arch == 'x86': |
| 83 if tcname == 'pnacl': | 89 if tcname == 'pnacl': |
| 84 return os.path.join(tcpath, 'sdk', 'include') | 90 return os.path.join(tcpath, 'sdk', 'include') |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 136 GetToolchainDirName(tcname, xarch)) | 142 GetToolchainDirName(tcname, xarch)) |
| 137 return GetToolchainNaClLib(tcname, tcpath, xarch) | 143 return GetToolchainNaClLib(tcname, tcpath, xarch) |
| 138 | 144 |
| 139 | 145 |
| 140 def GetPNaClNativeLib(tcpath, arch): | 146 def GetPNaClNativeLib(tcpath, arch): |
| 141 if arch not in ['arm', 'x86-32', 'x86-64']: | 147 if arch not in ['arm', 'x86-32', 'x86-64']: |
| 142 buildbot_common.ErrorExit('Unknown architecture %s.' % arch) | 148 buildbot_common.ErrorExit('Unknown architecture %s.' % arch) |
| 143 return os.path.join(tcpath, 'lib-' + arch) | 149 return os.path.join(tcpath, 'lib-' + arch) |
| 144 | 150 |
| 145 | 151 |
| 146 def BuildStepDownloadToolchains(): | 152 def BuildStepDownloadToolchains(toolchains): |
| 147 buildbot_common.BuildStep('Running download_toolchains.py') | 153 buildbot_common.BuildStep('Running download_toolchains.py') |
| 148 download_script = os.path.join('build', 'download_toolchains.py') | 154 download_script = os.path.join('build', 'download_toolchains.py') |
| 149 buildbot_common.Run([sys.executable, download_script, | 155 args = [sys.executable, download_script, '--no-arm-trusted', |
| 150 '--no-arm-trusted', '--arm-untrusted', '--keep'], | 156 '--arm-untrusted', '--keep'] |
| 151 cwd=NACL_DIR) | 157 if 'bionic' in toolchains: |
| 158 args.append('--allow-bionic') | |
| 159 buildbot_common.Run(args, cwd=NACL_DIR) | |
| 152 | 160 |
| 153 | 161 |
| 154 def BuildStepCleanPepperDirs(pepperdir, pepperdir_old): | 162 def BuildStepCleanPepperDirs(pepperdir, pepperdir_old): |
| 155 buildbot_common.BuildStep('Clean Pepper Dirs') | 163 buildbot_common.BuildStep('Clean Pepper Dirs') |
| 156 buildbot_common.RemoveDir(pepperdir_old) | 164 buildbot_common.RemoveDir(pepperdir_old) |
| 157 buildbot_common.RemoveDir(pepperdir) | 165 buildbot_common.RemoveDir(pepperdir) |
| 158 buildbot_common.MakeDir(pepperdir) | 166 buildbot_common.MakeDir(pepperdir) |
| 159 | 167 |
| 160 | 168 |
| 161 def BuildStepMakePepperDirs(pepperdir, subdirs): | 169 def BuildStepMakePepperDirs(pepperdir, subdirs): |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 tarfile = GetNewlibToolchain() | 221 tarfile = GetNewlibToolchain() |
| 214 buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile], | 222 buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile], |
| 215 cwd=NACL_DIR) | 223 cwd=NACL_DIR) |
| 216 | 224 |
| 217 # Then rename/move it to the pepper toolchain directory | 225 # Then rename/move it to the pepper toolchain directory |
| 218 srcdir = os.path.join(tmpdir, 'sdk', 'nacl-sdk') | 226 srcdir = os.path.join(tmpdir, 'sdk', 'nacl-sdk') |
| 219 tcname = platform + '_x86_newlib' | 227 tcname = platform + '_x86_newlib' |
| 220 newlibdir = os.path.join(pepperdir, 'toolchain', tcname) | 228 newlibdir = os.path.join(pepperdir, 'toolchain', tcname) |
| 221 buildbot_common.Move(srcdir, newlibdir) | 229 buildbot_common.Move(srcdir, newlibdir) |
| 222 | 230 |
| 231 if 'bionic' in toolchains: | |
| 232 # Untar the bionic toolchains | |
| 233 tarfile = GetBionicToolchain() | |
| 234 tcname = platform + '_arm_bionic' | |
| 235 buildbot_common.Run([sys.executable, CYGTAR, '-C', tmpdir, '-xf', tarfile], | |
| 236 cwd=NACL_DIR) | |
| 237 srcdir = os.path.join(tmpdir, tcname) | |
| 238 bionicdir = os.path.join(pepperdir, 'toolchain', tcname) | |
| 239 buildbot_common.Move(srcdir, bionicdir) | |
| 240 | |
| 223 if 'arm' in toolchains: | 241 if 'arm' in toolchains: |
| 224 # Copy the existing arm toolchain from native_client tree | 242 # Copy the existing arm toolchain from native_client tree |
| 225 tcname = platform + '_arm_newlib' | 243 tcname = platform + '_arm_newlib' |
| 226 arm_toolchain = os.path.join(NACL_DIR, 'toolchain', tcname) | 244 arm_toolchain = os.path.join(NACL_DIR, 'toolchain', tcname) |
| 227 arm_toolchain_sdk = os.path.join(pepperdir, 'toolchain', | 245 arm_toolchain_sdk = os.path.join(pepperdir, 'toolchain', |
| 228 os.path.basename(arm_toolchain)) | 246 os.path.basename(arm_toolchain)) |
| 229 buildbot_common.CopyDir(arm_toolchain, arm_toolchain_sdk) | 247 buildbot_common.CopyDir(arm_toolchain, arm_toolchain_sdk) |
| 230 | 248 |
| 231 if 'glibc' in toolchains: | 249 if 'glibc' in toolchains: |
| 232 # Untar the glibc toolchains | 250 # Untar the glibc toolchains |
| (...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 877 buildbot_common.BuildStep('Build GoNaCl AppEngine Projects') | 895 buildbot_common.BuildStep('Build GoNaCl AppEngine Projects') |
| 878 cmd = ['make', 'upload', 'REVISION=%s' % chrome_revision] | 896 cmd = ['make', 'upload', 'REVISION=%s' % chrome_revision] |
| 879 env = dict(os.environ) | 897 env = dict(os.environ) |
| 880 env['NACL_SDK_ROOT'] = pepperdir | 898 env['NACL_SDK_ROOT'] = pepperdir |
| 881 env['NACLPORTS_NO_ANNOTATE'] = "1" | 899 env['NACLPORTS_NO_ANNOTATE'] = "1" |
| 882 buildbot_common.Run(cmd, env=env, cwd=GONACL_APPENGINE_SRC_DIR) | 900 buildbot_common.Run(cmd, env=env, cwd=GONACL_APPENGINE_SRC_DIR) |
| 883 | 901 |
| 884 | 902 |
| 885 def main(args): | 903 def main(args): |
| 886 parser = optparse.OptionParser() | 904 parser = optparse.OptionParser() |
| 905 parser.add_option('--bionic', help='Add bionic build.', | |
| 906 action='store_true') | |
|
Sam Clegg
2014/02/18 20:27:21
I think this (and some of the lines below) fits on
| |
| 887 parser.add_option('--tar', help='Force the tar step.', | 907 parser.add_option('--tar', help='Force the tar step.', |
| 888 action='store_true') | 908 action='store_true') |
| 889 parser.add_option('--archive', help='Force the archive step.', | 909 parser.add_option('--archive', help='Force the archive step.', |
| 890 action='store_true') | 910 action='store_true') |
| 891 parser.add_option('--gyp', | 911 parser.add_option('--gyp', |
| 892 help='Use gyp to build examples/libraries/Makefiles.', | 912 help='Use gyp to build examples/libraries/Makefiles.', |
| 893 action='store_true') | 913 action='store_true') |
| 894 parser.add_option('--release', help='PPAPI release version.', | 914 parser.add_option('--release', help='PPAPI release version.', |
| 895 dest='release', default=None) | 915 dest='release', default=None) |
| 896 parser.add_option('--build-ports', | 916 parser.add_option('--build-ports', |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 920 parser.error("Unexpected arguments: %s" % str(args)) | 940 parser.error("Unexpected arguments: %s" % str(args)) |
| 921 | 941 |
| 922 generate_make.use_gyp = options.gyp | 942 generate_make.use_gyp = options.gyp |
| 923 if buildbot_common.IsSDKBuilder(): | 943 if buildbot_common.IsSDKBuilder(): |
| 924 options.archive = True | 944 options.archive = True |
| 925 options.build_ports = True | 945 options.build_ports = True |
| 926 options.build_app_engine = True | 946 options.build_app_engine = True |
| 927 options.tar = True | 947 options.tar = True |
| 928 | 948 |
| 929 toolchains = ['newlib', 'glibc', 'arm', 'pnacl', 'host'] | 949 toolchains = ['newlib', 'glibc', 'arm', 'pnacl', 'host'] |
| 950 if options.bionic: | |
| 951 toolchains.append('bionic') | |
| 952 | |
| 930 print 'Building: ' + ' '.join(toolchains) | 953 print 'Building: ' + ' '.join(toolchains) |
| 931 | 954 |
| 932 if options.archive and not options.tar: | 955 if options.archive and not options.tar: |
| 933 parser.error('Incompatible arguments with archive.') | 956 parser.error('Incompatible arguments with archive.') |
| 934 | 957 |
| 935 chrome_version = int(build_version.ChromeMajorVersion()) | 958 chrome_version = int(build_version.ChromeMajorVersion()) |
| 936 chrome_revision = build_version.ChromeRevision() | 959 chrome_revision = build_version.ChromeRevision() |
| 937 nacl_revision = build_version.NaClRevision() | 960 nacl_revision = build_version.NaClRevision() |
| 938 pepper_ver = str(chrome_version) | 961 pepper_ver = str(chrome_version) |
| 939 pepper_old = str(chrome_version - 1) | 962 pepper_old = str(chrome_version - 1) |
| 940 pepperdir = os.path.join(OUT_DIR, 'pepper_' + pepper_ver) | 963 pepperdir = os.path.join(OUT_DIR, 'pepper_' + pepper_ver) |
| 941 pepperdir_old = os.path.join(OUT_DIR, 'pepper_' + pepper_old) | 964 pepperdir_old = os.path.join(OUT_DIR, 'pepper_' + pepper_old) |
| 942 tarname = 'naclsdk_' + getos.GetPlatform() + '.tar.bz2' | 965 tarname = 'naclsdk_' + getos.GetPlatform() + '.tar.bz2' |
| 943 tarfile = os.path.join(OUT_DIR, tarname) | 966 tarfile = os.path.join(OUT_DIR, tarname) |
| 944 | 967 |
| 945 if options.release: | 968 if options.release: |
| 946 pepper_ver = options.release | 969 pepper_ver = options.release |
| 947 print 'Building PEPPER %s at %s' % (pepper_ver, chrome_revision) | 970 print 'Building PEPPER %s at %s' % (pepper_ver, chrome_revision) |
| 948 | 971 |
| 949 if 'NACL_SDK_ROOT' in os.environ: | 972 if 'NACL_SDK_ROOT' in os.environ: |
| 950 # We don't want the currently configured NACL_SDK_ROOT to have any effect | 973 # We don't want the currently configured NACL_SDK_ROOT to have any effect |
| 951 # of the build. | 974 # of the build. |
| 952 del os.environ['NACL_SDK_ROOT'] | 975 del os.environ['NACL_SDK_ROOT'] |
| 953 | 976 |
| 954 if not options.skip_toolchain: | 977 if not options.skip_toolchain: |
| 955 BuildStepCleanPepperDirs(pepperdir, pepperdir_old) | 978 BuildStepCleanPepperDirs(pepperdir, pepperdir_old) |
| 956 BuildStepMakePepperDirs(pepperdir, ['include', 'toolchain', 'tools']) | 979 BuildStepMakePepperDirs(pepperdir, ['include', 'toolchain', 'tools']) |
| 957 BuildStepDownloadToolchains() | 980 BuildStepDownloadToolchains(toolchains) |
| 958 BuildStepUntarToolchains(pepperdir, toolchains) | 981 BuildStepUntarToolchains(pepperdir, toolchains) |
| 959 | 982 |
| 960 BuildStepBuildToolchains(pepperdir, toolchains) | 983 BuildStepBuildToolchains(pepperdir, toolchains) |
| 961 | 984 |
| 962 BuildStepUpdateHelpers(pepperdir, True) | 985 BuildStepUpdateHelpers(pepperdir, True) |
| 963 BuildStepUpdateUserProjects(pepperdir, toolchains, | 986 BuildStepUpdateUserProjects(pepperdir, toolchains, |
| 964 options.build_experimental, True) | 987 options.build_experimental, True) |
| 965 | 988 |
| 966 BuildStepCopyTextFiles(pepperdir, pepper_ver, chrome_revision, nacl_revision) | 989 BuildStepCopyTextFiles(pepperdir, pepper_ver, chrome_revision, nacl_revision) |
| 967 | 990 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 995 BuildStepArchiveSDKTools() | 1018 BuildStepArchiveSDKTools() |
| 996 | 1019 |
| 997 return 0 | 1020 return 0 |
| 998 | 1021 |
| 999 | 1022 |
| 1000 if __name__ == '__main__': | 1023 if __name__ == '__main__': |
| 1001 try: | 1024 try: |
| 1002 sys.exit(main(sys.argv)) | 1025 sys.exit(main(sys.argv)) |
| 1003 except KeyboardInterrupt: | 1026 except KeyboardInterrupt: |
| 1004 buildbot_common.ErrorExit('build_sdk: interrupted') | 1027 buildbot_common.ErrorExit('build_sdk: interrupted') |
| OLD | NEW |