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 |