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

Side by Side Diff: build_tools/install_gtest/install_gtest.py

Issue 6635045: Updates to make install_third_party build gtest and gmock on windows. Base URL: http://nativeclient-sdk.googlecode.com/svn/trunk/src/
Patch Set: Created 9 years, 9 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/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2010 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that be 3 # Use of this source code is governed by a BSD-style license that be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Install GTest and GMock that can be linked to a NaCl module. By default 6 """Install GTest and GMock that can be linked to a NaCl module. By default
7 this script builds both the 32- and 64-bit versions of the libraries, and 7 this script builds both the 32- and 64-bit versions of the libraries, and
8 installs them in <toolchain>/nacl/usr/lib and <toolchain>/nacl64/usr/lib. The 8 installs them in <toolchain>/nacl/usr/lib and <toolchain>/nacl64/usr/lib. The
9 header files are also installed in <toolchain>/<ncal_spec>/usr/include. 9 header files are also installed in <toolchain>/<ncal_spec>/usr/include.
10 """ 10 """
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 print "Error retrieving %s" % url 66 print "Error retrieving %s" % url
67 raise 67 raise
68 68
69 os.chdir(options.old_cwd) 69 os.chdir(options.old_cwd)
70 70
71 71
72 # Apply the patch files to the extracted GTest and GMock pacakges. 72 # Apply the patch files to the extracted GTest and GMock pacakges.
73 def PatchAll(options): 73 def PatchAll(options):
74 def Patch(abs_path, patch_file): 74 def Patch(abs_path, patch_file):
75 print "Patching %s with: %s" % (abs_path, patch_file) 75 print "Patching %s with: %s" % (abs_path, patch_file)
76 p = subprocess.Popen('chmod -R a+w . && patch -p0 < %s' % (patch_file), 76 command = ''
77 if (sys.platform == 'win32'):
78 command = 'patch -p0 < %s' % (patch_file)
79 else:
80 command = 'chmod -R a+w . && patch -p0 < %s' % (patch_file)
81 p = subprocess.Popen(command,
77 cwd=abs_path, 82 cwd=abs_path,
78 env=options.shell_env, 83 env=options.shell_env,
79 shell=True) 84 shell=True)
80 assert p.wait() == 0 85 assert p.wait() == 0
81 86
82 Patch(options.working_dir, os.path.join(options.script_dir, GTEST_PATCH_FILE)) 87 patch_path = os.path.join(options.script_dir, GTEST_PATCH_FILE)
83 Patch(options.working_dir, os.path.join(options.script_dir, GMOCK_PATCH_FILE)) 88 print 'about to patch with working_dir %s, patch: %s' % (options.working_dir,
89 patch_path)
90 Patch(options.working_dir, patch_path)
91 Patch(options.working_dir, patch_path)
84 92
85 93
86 # Build GTest and GMock, then install them into the toolchain. Note that 94 # Build GTest and GMock, then install them into the toolchain. Note that
87 # GTest has to be built and installed into the toolchain before GMock can be 95 # GTest has to be built and installed into the toolchain before GMock can be
88 # built, because GMock relies on headers from GTest. This method sets up all 96 # built, because GMock relies on headers from GTest. This method sets up all
89 # the necessary shell environment variables for the makefiles, such as CC and 97 # the necessary shell environment variables for the makefiles, such as CC and
90 # CXX. 98 # CXX.
91 def BuildAndInstallAll(options): 99 def BuildAndInstallAll(options):
92 def BuildInPath(abs_path, shell_env): 100 def BuildInPath(abs_path, shell_env):
93 # Run make clean and make in |abs_path|. Assumes there is a makefile in 101 # Run make clean and make in |abs_path|. Assumes there is a makefile in
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 shell=True, 187 shell=True,
180 stdin=tar_cf.stdout) 188 stdin=tar_cf.stdout)
181 tar_copy_err = tar_xf.communicate()[1] 189 tar_copy_err = tar_xf.communicate()[1]
182 InstallLib('libgmock.a', gmock_path, nacl_usr_lib, build_env) 190 InstallLib('libgmock.a', gmock_path, nacl_usr_lib, build_env)
183 191
184 192
185 # Main driver method that creates a working directory, then downloads and 193 # Main driver method that creates a working directory, then downloads and
186 # extracts GTest and GMock, patches and builds them both, then installs them 194 # extracts GTest and GMock, patches and builds them both, then installs them
187 # into the toolchain specified in |options.toolchain|. 195 # into the toolchain specified in |options.toolchain|.
188 def InstallTestingLibs(options): 196 def InstallTestingLibs(options):
197 print 'Making working directory.'
189 MakeWorkingDir(options) 198 MakeWorkingDir(options)
190 try: 199 try:
200 print 'Downloading and Extracting gtest.'
191 DownloadAndExtractAll(options) 201 DownloadAndExtractAll(options)
202 print 'Patching gtest.'
192 PatchAll(options) 203 PatchAll(options)
193 except: 204 except:
205 # TODO(mlinck) improve this error
206 print 'An Error occurred'
194 return 1 207 return 1
195 208
209 print 'Building and installing gtest.'
196 BuildAndInstallAll(options) 210 BuildAndInstallAll(options)
197 # Clean up. 211 # Clean up.
212 print 'Cleaning up gtest install files.'
198 shutil.rmtree(options.working_dir, ignore_errors=True) 213 shutil.rmtree(options.working_dir, ignore_errors=True)
199 return 0 214 return 0
200 215
201 216
202 # Parse the command-line args and set up the options object. There are two 217 # Parse the command-line args and set up the options object. There are two
203 # command-line switches: 218 # command-line switches:
204 # --toolchain=<path to the platform-specific toolchain> 219 # --toolchain=<path to the platform-specific toolchain>
205 # e.g.: --toolchain=../toolchain/mac-x86 220 # e.g.: --toolchain=../toolchain/mac-x86
206 # default is |TOOLCHAIN_AUTODETECT| which means try to determine 221 # default is |TOOLCHAIN_AUTODETECT| which means try to determine
207 # the toolchain dir from |sys.platform|. 222 # the toolchain dir from |sys.platform|.
(...skipping 24 matching lines...) Expand all
232 options.shell_env = shell_env 247 options.shell_env = shell_env
233 options.script_dir = os.path.abspath(os.path.dirname(__file__)) 248 options.script_dir = os.path.abspath(os.path.dirname(__file__))
234 options.toolchain = build_utils.NormalizeToolchain(options.toolchain) 249 options.toolchain = build_utils.NormalizeToolchain(options.toolchain)
235 print "Installing testing libs into toolchain %s" % options.toolchain 250 print "Installing testing libs into toolchain %s" % options.toolchain
236 251
237 return InstallTestingLibs(options) 252 return InstallTestingLibs(options)
238 253
239 254
240 if __name__ == '__main__': 255 if __name__ == '__main__':
241 main(sys.argv[1:]) 256 main(sys.argv[1:])
OLDNEW
« no previous file with comments | « build_tools/generate_windows_installer.py ('k') | build_tools/install_gtest/nacl-gmock-1.5.0.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698