Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Side by Side Diff: native_client_sdk/src/build_tools/build_sdk.py

Issue 170973003: Add option BIONIC toolchain to NaCl SDK output (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698