OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 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 """Extracts a Windows VS2013 toolchain from various downloadable pieces.""" | 6 """Extracts a Windows VS2013 toolchain from various downloadable pieces.""" |
7 | 7 |
8 | 8 |
9 import ctypes | 9 import ctypes |
10 import json | 10 import json |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 def ExtractIso(iso_path): | 143 def ExtractIso(iso_path): |
144 """Uses 7zip to extract the contents of the given .iso (or self-extracting | 144 """Uses 7zip to extract the contents of the given .iso (or self-extracting |
145 .exe). | 145 .exe). |
146 """ | 146 """ |
147 target_path = TempDir() | 147 target_path = TempDir() |
148 sys.stdout.write('Extracting %s...\n' % iso_path) | 148 sys.stdout.write('Extracting %s...\n' % iso_path) |
149 sys.stdout.flush() | 149 sys.stdout.flush() |
150 # TODO(scottmg): Do this (and exe) manually with python code. | 150 # TODO(scottmg): Do this (and exe) manually with python code. |
151 # Note that at the beginning of main() we set the working directory to 7z's | 151 # Note that at the beginning of main() we set the working directory to 7z's |
152 # location so that 7z can find its codec dll. | 152 # location so that 7z can find its codec dll. |
153 RunOrDie('7z x "%s" -y "-o%s" >nul' % (iso_path, target_path)) | 153 RunOrDie('7z x "%s" -y "-o%s"' % (iso_path, target_path)) |
154 return target_path | 154 return target_path |
155 | 155 |
156 | 156 |
157 def ExtractMsi(msi_path): | 157 def ExtractMsi(msi_path): |
158 """Uses msiexec to extract the contents of the given .msi file.""" | 158 """Uses msiexec to extract the contents of the given .msi file.""" |
159 sys.stdout.write('Extracting %s...\n' % msi_path) | 159 sys.stdout.write('Extracting %s...\n' % msi_path) |
160 with ScopedSubstTempDir() as temp_dir: | 160 with ScopedSubstTempDir() as temp_dir: |
161 RunOrDie('msiexec /a "%s" /qn TARGETDIR="%s"' % ( | 161 RunOrDie('msiexec /a "%s" /qn TARGETDIR="%s"' % ( |
162 msi_path, temp_dir.ShortenedPath())) | 162 msi_path, temp_dir.ShortenedPath())) |
163 return temp_dir.RealPath() | 163 return temp_dir.RealPath() |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 '%~dp0..\\..\\VC\\atlmfc\\lib\\amd64\n') | 424 '%~dp0..\\..\\VC\\atlmfc\\lib\\amd64\n') |
425 | 425 |
426 | 426 |
427 def DoTreeMirror(target_dir, tree_sha1): | 427 def DoTreeMirror(target_dir, tree_sha1): |
428 """In order to save temporary space on bots that do not have enough space to | 428 """In order to save temporary space on bots that do not have enough space to |
429 download ISOs, unpack them, and copy to the target location, the whole tree | 429 download ISOs, unpack them, and copy to the target location, the whole tree |
430 is uploaded as a zip to internal storage, and then mirrored here.""" | 430 is uploaded as a zip to internal storage, and then mirrored here.""" |
431 local_zip = DownloadUsingGsutil(tree_sha1 + '.zip') | 431 local_zip = DownloadUsingGsutil(tree_sha1 + '.zip') |
432 sys.stdout.write('Extracting %s...\n' % local_zip) | 432 sys.stdout.write('Extracting %s...\n' % local_zip) |
433 sys.stdout.flush() | 433 sys.stdout.flush() |
434 RunOrDie('7z x "%s" -y "-o%s" >nul' % (local_zip, target_dir)) | 434 RunOrDie('7z x "%s" -y "-o%s"' % (local_zip, target_dir)) |
435 | 435 |
436 | 436 |
437 def main(): | 437 def main(): |
438 parser = optparse.OptionParser(description=sys.modules[__name__].__doc__) | 438 parser = optparse.OptionParser(description=sys.modules[__name__].__doc__) |
439 parser.add_option('--targetdir', metavar='DIR', | 439 parser.add_option('--targetdir', metavar='DIR', |
440 help='put toolchain into DIR', | 440 help='put toolchain into DIR', |
441 default=os.path.join(BASEDIR, 'win_toolchain_2013')) | 441 default=os.path.join(BASEDIR, 'win_toolchain_2013')) |
442 parser.add_option('--noclean', action='store_false', dest='clean', | 442 parser.add_option('--noclean', action='store_false', dest='clean', |
443 help='do not remove temp files', | 443 help='do not remove temp files', |
444 default=True) | 444 default=True) |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 } | 485 } |
486 with open(os.path.join(target_dir, '..', 'data.json'), 'w') as f: | 486 with open(os.path.join(target_dir, '..', 'data.json'), 'w') as f: |
487 json.dump(data, f) | 487 json.dump(data, f) |
488 finally: | 488 finally: |
489 if options.clean: | 489 if options.clean: |
490 DeleteAllTempDirs() | 490 DeleteAllTempDirs() |
491 | 491 |
492 | 492 |
493 if __name__ == '__main__': | 493 if __name__ == '__main__': |
494 sys.exit(main()) | 494 sys.exit(main()) |
OLD | NEW |