| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/python | |
| 2 | |
| 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 # This zips the SDK and uploads it to Google Storage when run on a buildbot. | |
| 8 # | |
| 9 # Usage: upload_sdk.py path_to_sdk | |
| 10 | |
| 11 import os | |
| 12 import os.path | |
| 13 import platform | |
| 14 import subprocess | |
| 15 import sys | |
| 16 import utils | |
| 17 | |
| 18 | |
| 19 GSUTIL = utils.GetBuildbotGSUtilPath() | |
| 20 HAS_SHELL = False | |
| 21 if platform.system() == 'Windows': | |
| 22 HAS_SHELL = True | |
| 23 GS_SITE = 'gs://' | |
| 24 GS_DIR = 'dart-dump-render-tree' | |
| 25 GS_SDK_DIR = 'sdk' | |
| 26 SDK_LOCAL_ZIP = "dart-sdk.zip" | |
| 27 SDK_LOCAL_TARGZ = "dart-sdk.tar.gz" | |
| 28 | |
| 29 def ExecuteCommand(cmd): | |
| 30 """Execute a command in a subprocess. | |
| 31 """ | |
| 32 print 'Executing: ' + ' '.join(cmd) | |
| 33 pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, | |
| 34 shell=HAS_SHELL) | |
| 35 output = pipe.communicate() | |
| 36 if pipe.returncode != 0: | |
| 37 print 'Execution failed: ' + str(output) | |
| 38 return (pipe.returncode, output) | |
| 39 | |
| 40 | |
| 41 def UploadArchive(source, target): | |
| 42 """Upload an archive zip file to Google storage. | |
| 43 """ | |
| 44 # Upload file. | |
| 45 cmd = [GSUTIL, 'cp', source, target] | |
| 46 (status, output) = ExecuteCommand(cmd) | |
| 47 if status != 0: | |
| 48 return status | |
| 49 print 'Uploaded: ' + output[0] | |
| 50 | |
| 51 cmd = [GSUTIL, 'setacl', 'public-read', target] | |
| 52 (status, output) = ExecuteCommand(cmd) | |
| 53 return status | |
| 54 | |
| 55 | |
| 56 def Usage(progname): | |
| 57 sys.stderr.write('Usage: %s path_to_sdk\n' % progname) | |
| 58 | |
| 59 | |
| 60 def main(argv): | |
| 61 #allow local editor builds to deploy to a different bucket | |
| 62 if os.environ.has_key('DART_LOCAL_BUILD'): | |
| 63 gsdir = os.environ['DART_LOCAL_BUILD'] | |
| 64 else: | |
| 65 gsdir = GS_DIR | |
| 66 | |
| 67 if not os.path.exists(argv[1]): | |
| 68 sys.stderr.write('Path not found: %s\n' % argv[1]) | |
| 69 Usage(argv[0]) | |
| 70 return 1 | |
| 71 | |
| 72 if not os.path.exists(GSUTIL): | |
| 73 #TODO: Determine where we are running, if we're running on a buildbot we | |
| 74 #should fail with a message. | |
| 75 #If we are not on a buildbot then fail silently. | |
| 76 utils.Touch(os.path.join(argv[1], 'upload.stamp')) | |
| 77 exit(0) | |
| 78 | |
| 79 revision = utils.GetSVNRevision() | |
| 80 if revision is None: | |
| 81 sys.stderr.write('Unable to find SVN revision.\n') | |
| 82 return 1 | |
| 83 | |
| 84 os.chdir(os.path.dirname(argv[1])) | |
| 85 | |
| 86 if (os.path.basename(os.path.dirname(argv[1])) == | |
| 87 utils.GetBuildConf('release', 'ia32')): | |
| 88 sdk_suffix = '' | |
| 89 else: | |
| 90 sdk_suffix = '-debug' | |
| 91 # TODO(dgrove) - deal with architectures that are not ia32. | |
| 92 sdk_file_zip = 'dart-%s-%s%s.zip' % (utils.GuessOS(), revision, sdk_suffix) | |
| 93 sdk_file_targz = 'dart-%s-%s%s.tar.gz' % (utils.GuessOS(), revision, | |
| 94 sdk_suffix) | |
| 95 if (os.path.exists(SDK_LOCAL_ZIP)): | |
| 96 os.remove(SDK_LOCAL_ZIP) | |
| 97 if (os.path.exists(SDK_LOCAL_TARGZ)): | |
| 98 os.remove(SDK_LOCAL_TARGZ) | |
| 99 if platform.system() == 'Windows': | |
| 100 # Windows does not have zip. We use the 7 zip utility in third party. | |
| 101 ExecuteCommand([os.path.join('..', 'third_party', '7zip', '7za'), 'a', | |
| 102 '-tzip', SDK_LOCAL_ZIP, os.path.basename(argv[1])]) | |
| 103 else: | |
| 104 ExecuteCommand(['zip', '-yr', SDK_LOCAL_ZIP, os.path.basename(argv[1])]) | |
| 105 ExecuteCommand(['tar', 'czf', SDK_LOCAL_TARGZ, os.path.basename(argv[1])]) | |
| 106 UploadArchive(SDK_LOCAL_ZIP, | |
| 107 GS_SITE + '/'.join([gsdir, GS_SDK_DIR, sdk_file_zip])) | |
| 108 if (os.path.exists(SDK_LOCAL_TARGZ)): | |
| 109 UploadArchive(SDK_LOCAL_TARGZ, | |
| 110 GS_SITE + '/'.join([gsdir, GS_SDK_DIR, sdk_file_targz])) | |
| 111 latest_name_zip = 'dart-%s-latest%s.zip' % (utils.GuessOS(), sdk_suffix) | |
| 112 latest_name_targz = 'dart-%s-latest%s.tar.gz' % (utils.GuessOS(), sdk_suffix) | |
| 113 UploadArchive(SDK_LOCAL_ZIP, | |
| 114 GS_SITE + '/'.join([gsdir, GS_SDK_DIR, latest_name_zip])) | |
| 115 if (os.path.exists(SDK_LOCAL_TARGZ)): | |
| 116 UploadArchive(SDK_LOCAL_TARGZ, | |
| 117 GS_SITE + '/'.join([gsdir, GS_SDK_DIR, latest_name_targz])) | |
| 118 utils.Touch('upload.stamp') | |
| 119 | |
| 120 | |
| 121 if __name__ == '__main__': | |
| 122 sys.exit(main(sys.argv)) | |
| OLD | NEW |